LoginSignup
1

More than 1 year has passed since last update.

posted at

RedmineのViewCustomizeによるカスタマイズをプロジェクト管理者/ユーザーが触れるようにする

目的と手段

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

プロジェクト別のカスタマイズ実装

プロジェクトのカスタムフィールドを追加する

【システム管理者】
image.png

各プロジェクトのプロジェクト設定からカスタムフィールドを入力する

【各プロジェクト管理者】
image.png

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 で値にアクセスする
}

ユーザー別のカスタマイズ実装

ユーザーのカスタムフィールドを追加する

【システム管理者】
image.png

各ユーザーの個人設定からカスタムフィールドを入力する

【各ユーザー】
image.png

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 で値にアクセスする
}

メリット&デメリット

  • メリット
    • ユーザー/プロジェクト管理者自身がカスタマイズ内容を変えられる
    • システム管理者以外にカスタマイズの一部の裁量を渡すことができる
    • データがカスタムフィールドなので実態としてわかりやすい
  • デメリット
    • 複雑な機能だとカスタムフィールドが膨大になり収集がつかなくなる
    • カスタムフィールドは手入力であるためフィールド間のデータ制約が困難

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1