目的と手段
redmine_view_customizeプラグインを用いるとRedmineの機能を拡張できるものの、
従来はプロジェクト/ユーザー別のカスタマイズに別のデータベースが必要な場合はJavaScriptでの対応は難しく、プラグインで実装する必要があった。
この記事ではredmine_view_customizeプラグインからプロジェクトカスタムフィールド/ユーザーカスタムフィールドを利用して、プロジェクト管理者/ユーザー自身がある程度のカスタマイズを行えるようにする。
必要環境
redmine_view_customizeプラグインからプロジェクトカスタムフィールド/ユーザーカスタムフィールドを利用できるのは比較的新しいバージョンが必要になる。
-
プロジェクト別カスタマイズ
- redmine-view-customize v2.3.0 以上
- ViewCustomize.context.project.customfields
-
ユーザー別カスタマイズ
- redmine-view-customize v1.2.0 以上
- ViewCustomize.context.user.customfields
プロジェクト別のカスタマイズ実装
プロジェクトのカスタムフィールドを追加する
各プロジェクトのプロジェクト設定からカスタムフィールドを入力する
redmine_view_customizeプラグインからカスタムフィールド値を参照し処理を変える
redmine_view_customizeプラグイン v2.3.0 がインストールされていると ViewCustomize.context.project.customFields
で各プロジェクトのカスタムフィールドにアクセスできる。
このカスタムフィールドの値によって処理を分岐させることで、プロジェクト管理者がカスタム内容を変化させることができる。
let cf = ViewCustomize.context.project.customFields.find(cf => cf.name == "カスタムフィールド「A」の初期値");
if(typeof cf != 'undefined'){
// cf.value で値にアクセスする
}
ユーザー別のカスタマイズ実装
ユーザーのカスタムフィールドを追加する
各ユーザーの個人設定からカスタムフィールドを入力する
redmine_view_customizeプラグインからカスタムフィールド値を参照し処理を変える
redmine_view_customizeプラグイン v1.2.0 がインストールされていると ViewCustomize.context.user.customFields
で各ユーザーのカスタムフィールドにアクセスできる。
このカスタムフィールドの値によって処理を分岐させることで、ユーザーがカスタム内容を変化させることができる。
let cf = ViewCustomize.context.user.customFields.find(cf => cf.name == "個人壁紙を有効");
if(typeof cf != 'undefined'){
// cf.value で値にアクセスする
}
メリット&デメリット
-
メリット
- ユーザー/プロジェクト管理者自身がカスタマイズ内容を変えられる
- システム管理者以外にカスタマイズの一部の裁量を渡すことができる
- データがカスタムフィールドなので実態としてわかりやすい
-
デメリット
- 複雑な機能だとカスタムフィールドが膨大になり収集がつかなくなる
- カスタムフィールドは手入力であるためフィールド間のデータ制約が困難