Ubuntu 19.10のRedmineでのいくつかのバグフィックスをした

これまでもアップしたのも含め、Ubuntu 19.10のRedmineでは以下の不具合がありました。
致命的だったモーダルダイアログの件以外はちゃんとバグレポート上げれてないけど...。

* jQuery UIのバージョン違いのため、ダイアログが表示されない (`zIndex()` というメンバ関数が廃止されている)。
* 上を直してもjQuery UIのスクリプトとCSSのバージョン違いのため、Closeボタンの上に「Close」というテキストが表示されてしまう。
* ガントチャートでイナズマ線・関係線が表示されない (`size()` というメンバ関数が廃止されている)。
* チケットのインポートができない (ディレクトリのパーミッションの不整合＋複数のインスタンス対応の配慮不足)。

他にも以下の便利機能を足してみました。

* インポート時の日付形式で「yyyy/mm/dd」形式を使えるようにする。
* ガントチャートの表示開始を前月にする。
* [チケット新規作成時の担当者を自分にする](http://redmine.jp/faq/issue/set_current_user_to_assigned_to_field/)

## jQueryのバージョン違いについて

いくつかのメンバ関数が廃止されているようです。
モーダルダイアログやガントチャートのイナズマ線・関係線が表示されないのはこのためでした。
今回修正したのは以下のものです。

| 旧             | 新             |
| :------------: | :------------: |
| zIndex()       | css('zIndex',_ZINDEX_)|
| size()         | length         |

元々RubyもJavaScriptもちゃんと修めないまま修正にかかったので、もっとも手強かったのが「モーダルダイアログのクローズボタンに "Close" というテキストが表示されてしまう」というものでした。
Ubuntu (Debian) のディストリビューションではなぜか、jQeuryはシステムのlibjs-jqueryパッケージを使っているのに、jQuery UIはlibjs-jquery-uiパッケージ以外にもCSSでは一部ローカルコピーを使っていたりと、謎です。でも、jQuery UIを完全にUbuntuディストリビューションのものにするのもしんどかったので、とりあえずで、redmineパッケージにコピーしてあるJQuery UI関連のファイルを1.11.0からUbuntu 19.10のパッケージバージョンである1.12.1に置き換えました。
これで、Closeの文字も表示されなくなりました。

## 変更したファイル

今回は、テキストファイルだけではなくバイナリファイルなんかも差し替えているので、単純な差分に収まりきらなかったためGitHubに上げておきました。

* https://github.com/katsuya1128/redmine (公開停止)

必要な方はあくまでも自己責任で、develブランチをcloneした上で、debパッケージを作ってインストールしてください。パッケージをビルドするには以下のコマンド (いくつかのパッケージのインストールが必要ですが)。

パッケージの作成に必要な前準備はここ：[debパッケージ作成方法をステップバイステップでまとめました](https://eng-entrance.com/linux-package-deb-create)

パッケージの作成は以下のコマンド。

```shell
debuild -b
```

テキトーなインストールスクリプト。

```bash:install.sh
#!/bin/bash
version="4.0.4-1+ubuntu1.katsuya2.2"
dpkg -i redmine_"$version"_all.deb \
     redmine-mysql_"$version"_all.deb 
```

MySQLでなくPostgreSQLの方は適当に書き換えてください。

これで、当面Redmineに感じていた課題感はクリアかな。

## でもね

ライブラリを一本化したいというDebianの理想は十分に理解するものの、他にもバージョン違いに由来する不具合が残っていそうなので、素直にRedmineのディストリビューションで期待するjQueryをRedmineローカルで用意する方が良いような気がする...。

## 2020年1月2日追記

とりあえずsymlinkを使って、CSSやらimagesやらi18nを含めてディストリビューションのjQuery/jQuery UIを使うようにしてみました。
i18nの扱いは正しいかどうかテストしきれていませんが…。

## 2020年1月4日追記

i18nは、datepickerのlocaleを設定するためのファイルが入ったディレクトリで、javascriptsの直下にないとうまく動きませんでした。
動作検証の過程で分かったのですがChromeやFirefoxはdatepickerを必要としないようです。
ただ、Internet Explorer 11ではdatepickerをちゃんと動かさないとカレンダーによる日付入力ができない or 英語のままでした。

## 2020年1月14日追記

i18n以下のdatepickerについては、`app/helpers/application_helper.rb` から生成されているので、これを修正することによって、`/usr/shar/javascript/jqeuery-ui/ui` → `javascripts/jquery-ui` へリンクを作成して、`javascripts/jquery-ui/i18n` 以下を参照するようにしました。

## 2020年5月19日追記

Ubuntu 20.04LTSがリリースされてRedmineも4.0.6になったので、パッケージもdevelブランチでアップデートしました。以下の3つは入れていません。

* インポート時の日付形式で「yyyy/mm/dd」形式を使えるようにする。
* ガントチャートの表示開始を前月にする。
* [チケット新規作成時の担当者を自分にする](http://redmine.jp/faq/issue/set_current_user_to_assigned_to_field/)

超拙い英語でUbuntuにバグレポートを上げておきましたが、ちゃんと通じるかどうかは…。

## 2020年5月23日追記

申し訳ないことに書き忘れていましたが、Ubuntu (Debian) での上書きインストールでは、元がディレクトリで新がシンボリックリンクの場合には上書きが失敗します。以下のフォルダはインストール前に手動で削除しておく必要があるかもしれません。(redmine関連パッケージをremoveすれば良いのかも知れませんが、確認できていません。)

* /usr/share/redmine/public/javascripts/jquery-ui
* /usr/share/redmine/public/stylesheets/jquery

あと、zIndexの問題は、メンテナーさんからアップストリームに報告していただきました。

## 2020年11月9日追記

Ubuntu 20.10が出てRedmineも4.0.7にアップしていました。
jQuery UI周りは相変わらずですね。
この辺りの修正を入れてGitHubのリポジトリを更新しました。

## 2021年6月9日追記

GitHubで「Keepalive Connections Causing Denial Of Service in puma」という指摘がありましたので、公開を停止しました。
Ubuntu 21.04ではパッケージなくなってしまいましたし。