Skip to content

sf-cola/select_to_search

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Select to Search

English

Redmine の select ボックスにインクリメンタルサーチを追加するプラグインです。

select_to_select2 の後継プラグインです。旧実装では Select2 3.4.5 を使っていましたが、現在の実装では通常の select ボックスに Choices.js を使い、Redmine が option 要素を直接移動・並び替えするリストボックスには専用の検索 input を追加します。

主な機能

  • 通常の Redmine select ボックスを検索可能な UI に置き換えます。
  • チケット一覧のフィルタ追加、フィルタ値、グループ化条件に対応します。
  • チケット作成・編集画面の担当者、ステータス、トラッカー、優先度、カテゴリ、対象バージョン、カスタムフィールドなどに対応します。
  • チケット一覧の「表示オプション > 項目」にある列選択 UI に検索 input を追加します。
  • multiple + size のリストボックスはネイティブ select を維持し、検索 input を追加します。
  • Redmine の Ajax や動的フィルタ追加に対応するため、未初期化の select だけを追加初期化します。

スクリーンショット

カスタムフィールドの select

検索可能なカスタムフィールド select

チケット一覧の列選択

検索可能なチケット一覧の列選択

実装

  • 通常 select: Choices.js 11.2.3
  • Redmine 管理リスト: ネイティブ select + 専用検索 input
  • 動的 DOM 対応: MutationObserver
  • Ajax 互換フォールバック: jQuery.ajaxComplete

Redmine 対応状況

このプラグインは、Redmine 本体と Ruby がセキュリティ保守されている環境を優先してサポートします。Redmine 本体または Ruby が EOL の環境では動作する可能性はありますが、サポート対象外または参考検証扱いです。

Redmine Redmine 本体の扱い Ruby の扱い プラグインの扱い
6.1.x フルサポート Ruby 3.3 以上は保守中 正式サポート
6.0.x バグ修正・セキュリティ修正 Ruby 3.3 は保守中 正式サポート
5.1.x レガシーセキュリティ修正 対応 Ruby は EOL レガシー互換
5.0.x EOL 対応 Ruby は EOL サポート対象外
4.x 以前 EOL 対応 Ruby は EOL サポート対象外

Redmine 公式のサポート状況は Redmine の Download ページ、Ruby の保守状況は Ruby Maintenance Branches を参照してください。

以下のバージョンで、プラグイン読み込み、チケット一覧の列選択、フィルタ追加、チケット作成画面の list カスタムフィールドを確認しています。

Redmine Rails Ruby 確認状況
6.1.3.stable 7.2.3.1 3.4.9 正式サポート対象として確認済み
6.0.9.stable 7.2.3 3.3.11 正式サポート対象として確認済み
5.1.13.stable 6.1.7.10 3.2.11 レガシー互換として確認済み
4.2.11.stable 5.2.8.1 2.7.8 参考検証済み。EOL 環境のためサポート対象外
3.4.13.stable 4.2.11.1 2.4.10 参考検証済み。EOL 環境のためサポート対象外

新規導入では Redmine 6.1.x または 6.0.x を推奨します。Redmine 5.1.x は Redmine 本体のレガシーセキュリティ修正対象ですが、対応 Ruby が EOL のため、できるだけ Redmine 6.x への更新を検討してください。

検証時点では、Docker Hub の redmine:6.06.0.9redmine:5.15.1.12redmine:4.24.2.10 でした。5.1.134.2.11 は Redmine の Git タグから検証用イメージを作成して確認しました。4.2.11 は現在の gem 解決で Redmine 本体側の blankslate が必要だったため、検証用イメージ内で追加しています。

ネイティブリスト検索

以下のような Redmine の特殊 UI は Choices.js で置換しません。

  • #available_c
  • #selected_c
  • .query-columns select
  • #filters-table .values select.value のうち .toggle-multiselect を持つもの
  • select[ondblclick*="moveOptions"]
  • multiple かつ size 付きの select

これらは Redmine 本体の JavaScript が option を直接移動・並び替えしたり、multiple / size 属性を切り替えたりするため、select 自体はネイティブのまま維持し、検索 input のみ追加します。

対象外にする方法

特定の select を対象外にしたい場合は、対象の select に以下を付与します。

<select data-select-to-search="false">

インストール

  1. Redmine の plugins ディレクトリにこのリポジトリを複製します。

    git clone https://github.com/sf-cola/select_to_search.git plugins/select_to_search
  2. select_to_select2 プラグインをインストールしている場合は削除します。

  3. Redmine を再起動します。

このプラグインにはデータベースマイグレーションはありません。

select_to_select2 からの移行

select_to_select2select_to_search は同時にインストールしないでください。どちらも Redmine の同じ select 要素を対象にするため、同時に読み込むと UI 初期化が重複したり壊れたりする可能性があります。

既存環境では plugins/select_to_select2 を削除し、このリポジトリを plugins/select_to_search としてインストールしてから Redmine を再起動してください。

開発メモ

プラグイン ID は select_to_search です。

初回公開バージョンは 1.0.0 です。

About

Add incremental search to Redmine select boxes without breaking Redmine-managed list UIs.

Topics

Resources

License

GPL-3.0, MIT licenses found

Licenses found

GPL-3.0
LICENSE
MIT
LICENCE_choices

Stars

Watchers

Forks

Packages

 
 
 

Contributors