Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

メリット&デメリット

  • メリット
    • ユーザー/プロジェクト管理者自身がカスタマイズ内容を変えられる
    • システム管理者以外にカスタマイズの一部の裁量を渡すことができる
    • データがカスタムフィールドなので実態としてわかりやすい
  • デメリット
    • 複雑な機能だとカスタムフィールドが膨大になり収集がつかなくなる
    • カスタムフィールドは手入力であるためフィールド間のデータ制約が困難
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away