View Customizeで
ユーザー/プロジェクト
のカスタムフィールドを
利用した
個別カスタマイズ手法
もりのあさ (@forenoonM)
JensMartensson
• 目的と手段
• プロジェクト別のカスタマイズ
• ユーザー別のカスタマイズ
• メリット&デメリット
目次
2
JensMartensson
目的と手段
The Goal
3
JensMartensson
4
目的と手段
個別カスタマイズにはデータ保持が必要なためDBカラム/テーブルの追加が必要。
ViewCustomize(JavaScript)では難しい。プラグインを開発する。
提案手法
個別カスタマイズのデータ保持にユーザー/プロジェクトのカスタムフィールドを利用する。
カスタマイズの調整値をカスタムフィールドに入力しておき、
ViewCutomizeからユーザー/プロジェクトのカスタムフィールドを参照し、
カスタマイズ内容を変化させる。
従来の手法
『ユーザー/プロジェクト管理者自身がカスタマイズを調整でき
る』
JensMartensson
必要環境
5
プロジェクト別カスタマイズ
• redmine-view-customize v2.3.0 以上
• (ViewCustomize.context.project.customfields)
ユーザー別カスタマイズ
• redmine-view-customize v1.2.0 以上
• (ViewCustomize.context.user.customfields)
JensMartensson
6
プロジェクト別の
カスタマイズ
For ViewCustomize Plugin
JensMartensson
プロジェクトのカスタムフィールドを追加
7
JensMartensson
プロジェクトのカスタムフィールド値を入力
8
JensMartensson
ViewCustomizeでのカスタムフィールド値の取得
let cf = ViewCustomize.context.project.customFields
.find(cf => cf.name == "カスタムフィールド「A」の初期値");
if(typeof cf != 'undefined'){
cf.value;
}
プロジェクトのカスタムフィールド参照例
9
JensMartensson
10
ユーザー別の
カスタマイズ
For ViewCustomize Plugin
JensMartensson
ユーザーのカスタムフィールドを追加
11
JensMartensson
ユーザーのカスタムフィールド値を入力
12
JensMartensson
ViewCustomizeでのカスタムフィールド値の取得
let cf = ViewCustomize.context.user.customFields
.find(cf => cf.name == "個人壁紙を有効");
if(typeof cf != 'undefined'){
cf.value;
}
ユーザーのカスタムフィールド参照例
13
JensMartensson
14
メリット
&
デメリット
For ViewCustomize Plugin
JensMartensson
メリット
• ユーザー/プロジェクト管理者自身がカスタマイズ内容を変えられる
• システム管理者以外に裁量を委譲できる
• データがカスタムフィールドなので実態としてわかりやすい
デメリット
• 複雑な機能だとカスタムフィールドが膨大になり収集がつかなくなる
• カスタムフィールドは手入力であるためフィールド間のデータ制約が困難
カスタムフィールド利用メリット&デメリット
15
ありがとう
ございました
もりのあさ
@forenoonM

View customizeでユーザー/プロジェクトのカスタムフィールドを利用した個別カスタマイズの方法

Editor's Notes

  • #5 あとで実際に紹介する内容を例とすると、 チケットのカスタムフィールドの初期値を設定するVCスクリプト……の値をプロジェクト別に変える。 Redmineの全画面に透かし壁紙を挿入するVCスクリプト……の壁紙URLと壁紙機能自体の有効無効をユーザー別に変える。
  • #7 まず簡単に概要を説明してから、Redmineで実際にお見せします