対象
- 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 } });
})();