Redmine でチケットのウォッチャーに特定のメンバーを簡単に追加したい


対象

  • Redmine : 3.3.1
  • クライアント : Linux, Firefox 50.0.2

やりたいこと

チケットのウォッチャーに特定のメンバーを追加することが多い。とする。
その状況の良し悪しはおいておく。

チケットを作成するたびにメンバーを選択して追加する操作をせず、簡単に済ませたい。

解決策

URL パラメーター

新規に作成するチケットが対象。だいたいがこれで良い気がする。

"新しいチケット作成時にウォッチャーのデフォルト値を設定したい - Google グループ"
https://groups.google.com/forum/#!topic/redmine-users-ja/qtllw2sUbNw

new?issue[watcher_user_ids][]=1&issue[watcher_user_ids][]=2&&issue[watcher_user_ids][]=3

のように指定してはどうでしょうか。

一括編集

作成済みのチケットが対象。

"Redmine 3.3新機能紹介: 複数チケットに対して一括してウォッチャーを追加 | Redmine.JP Blog"
http://blog.redmine.jp/articles/3_3/add-watchers/

REST API

作成済みのチケットが対象。

説明に

user_id (required): id of the user to add as a watcher

と書かれていて一回にウォッチャー一人しか追加できない (人数分 POST が必要) と思っていたが、以下のようにコントローラの処理を見て複数人を追加できると分かった。

  def create
    user_ids = []
    if params[:watcher].is_a?(Hash)
      user_ids << (params[:watcher][:user_ids] || params[:watcher][:user_id])
    else
      user_ids << params[:user_id]
    end
    users = User.active.visible.where(:id => user_ids.flatten.compact.uniq)
    # 以下省略

ブックマークレット

「新しいチケット」のページを開いている状態で使う。新規に作成するチケットが対象。

javascript:(function() {
    var userIds = [ "6", "7" ];

    var href = $(".search_for_watchers > a").attr("href");
    var url = href ? href.replace(/\/new\?/, "/append?") : href;

    if (url !== href) {
        $.post(url, { "watcher": { "user_ids": userIds } });
    }
})();

次。作成済みのチケットのページを開いている状態で使う。作成済みのチケットが対象。

javascript:(function() {
    var userIds = [ "6", "7" ];
    var key = "";

    $.ajax(
        location.href + "/watchers.json",
        {
            "method": "POST",
            "headers": {
                "Content-Type": "application/json",
                "X-Redmine-API-Key": key
            },
            "data": JSON.stringify({ "watcher": { "user_id": userIds } })
        }
    );
})();

もう一つ。作成済みのチケットのページを開いている状態で使う。作成済みのチケットが対象。

javascript:(function() {
    var userIds = [ "6", "7" ];

    $.post(location.href + "/watchers", { "watcher": { "user_ids": userIds } });
})();