Redmineのチケット編集画面で「開始日」と「期日」の日付入力が行えない現象に遭遇したため、その対処方法のメモです。
対処方法としては暫定的な方法になりますが、同じ状況の方の参考になればと思います。
※追記:どうやら OSX(10.9.5)+Firefox(69.0 64bit)
の場合のみ発生するようで、OSバージョンが古いことが原因である可能性が高いです。
発生している現象
Redmineのチケット編集画面において、「開始日」と「期日」はポップアップ型のカレンダーで日付が選択できるはずであるが、カレンダーが表示されない。また、入力欄が操作できないため、日付の入力・変更が行えない。
動作環境のバージョン
以下の環境で現象が再現することを確認済み。
- CentOS-7
- Ruby2.6.5p114
- MariaDB 5.5.64
- Redmine-4.0.4(2019/10/06時点での最新版)
対処方法(暫定対処)
チケット編集画面のViewを修正することで対応。日付入力欄は <input type="date" ...
の形のHTMLタグが生成される実装になっているが、これを <input type="text" ...
となるように修正した。
$ svn diff
Index: app/views/issues/_attributes.html.erb
===================================================================
--- app/views/issues/_attributes.html.erb (revision 18597)
+++ app/views/issues/_attributes.html.erb (working copy)
@@ -52,14 +52,14 @@
<% if @issue.safe_attribute? 'start_date' %>
<p id="start_date_area">
- <%= f.date_field(:start_date, :size => 10, :required => @issue.required_attribute?('start_date')) %>
+ <%= f.date_field(:start_date, :size => 10, :required => @issue.required_attribute?('start_date')).to_str.sub(/type=.*?date"/, '').html_safe %>
<%= calendar_for('issue_start_date') %>
</p>
<% end %>
<% if @issue.safe_attribute? 'due_date' %>
<p id="due_date_area">
- <%= f.date_field(:due_date, :size => 10, :required => @issue.required_attribute?('due_date')) %>
+ <%= f.date_field(:due_date, :size => 10, :required => @issue.required_attribute?('due_date')).to_str.sub(/type=.*?date"/, '').html_safe %>
<%= calendar_for('issue_due_date') %>
</p>
<% end %>
上記の暫定対応を加えた後にRedmineを再起動することで、「開始日」と「期日」の入力欄がテキストフィールドとして表示されるようになるため、YYYY-MM-DDの形式で日付の入力・編集ができるようになります。
まとめ
Redmineのチケット編集画面で開始日と期日の変更ができない現象への対処方法を紹介しました。
Redmineのissuesには該当するものは見つけられなかったので、もしかしたら何か設定の不備に起因する現象なのかもしれません。