LoginSignup
2
2

More than 5 years have passed since last update.

Redmine Viewcustomize アイテムをユーザー毎に有効・無効できる様にする

Last updated at Posted at 2018-03-04

やったこと

Redmineの個人設定ページに、有効・無効を選択するリストを設置して、この内容によって、Viewcustomizeの処理を分岐する様にしました。

個人設定.png

背景

Viewcustomizeで色々とユーザーの要望に答えて盛り込むのですが、使い方が人それぞれで、賛否両論というか、一部の人から『やめてくれ』ってクレームが出てきて、毎回凹んでいました。
ユーザー毎に有効・無効を切り換え出来たらと思い、検討しました。

下記は、ViewCustomizePluginのVer1.2.0からViewCustomize.contextが追加されて、ユーザー情報が参照出来る様になったので、取り消しました。
(余計な処理(※1)が入るので、クレームが来たものだけにしています。)

※1:個人設定ページを取得する時間が増えてしまいます。
 (Ajaxの非同期通信なので、体感的には増えた感じはしないかもしれませんが…)

やり方

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

『管理』>『カスタムフィールド』>『新しいカスタムフィールド』>『真偽値』でユーザーのカスタムフィールドを追加します。

・デフォルト値:はい 又は いいえ
・表示:ドロップダウンリスト
・編集可能:☑

ユーザーのカスタムフィールド.png

Viewcustomizeで分岐を追加

ViewCustomize.contextからユーザーのカスタムフィールドを参照して、
選択内容によって、処理を分岐します。(ログを置いたところ)

ViewCustomizePlugin Ver1.2.0以上の場合

$(function()
{
  if (ViewCustomize.context.user.customFields[0].value == "1")
  {
    console.log("はい が選択されている");
  }
  else
  {
    console.log("いいえ が選択されている");
  }
});

ViewCustomizePlugin Ver1.2.0未満の場合

個人設定ページを取得して、そこにあるカスタムフィールドの選択内容によって、処理を分岐します。(ログを置いたところ)

Redmine Ver3.3.3, Ver3.4.3

$(function()
{
  $.get('/my/account')
  .then(
    /* 個人設定ページからカスタムフィールドの選択内容を取得 */
    (html) => {
      return $('select#user_custom_field_values_26 > option[selected="selected"]', $(html)).val();
    }
  )
  .then(
    (selected_value) => {
      /* オプション有効の場合 */
      if (selected_value == "1")
      {
        console.log("はい が選択されている");
      }
      else
      {
        console.log("いいえ が選択されている");
      }
    }
  );
});

又は、こちら。 (Redmine Ver3.3.2)

$(function()
{
  $.get('http://localhost/redmine/my/account',function(data)
  {
    var selected_value = $('select#user_custom_field_values_26 > option[selected="selected"]', $(data)).val();
    if (selected_value == "1")
    {
      console.log("はい が選択されている");
    }
    else
    {
      console.log("いいえ が選択されている");
    }
  },"html");
});
2
2
0

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
  3. You can use dark theme
What you can do with signing up
2
2