forked from onozaty/redmine-view-customize-scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
add_command_to_issues_context_menu.js
55 lines (42 loc) · 1.63 KB
/
add_command_to_issues_context_menu.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
Path pattern: /issues$
Type: JavaScript
チケット一覧のコンテキストメニューにコマンド(特定のURLに対するリクエスト)を追加します
*/
$(function() {
// 対象のURL(同一ドメイン)
var commandUrl = '/test';
var commandTitle = 'コマンド実行';
// コンテキストメニューを表示したタイミングでフックするために
// jQueryのshow関数を差し替え
jQuery.fn._show = jQuery.fn.show;
jQuery.fn.show = function() {
if (this.attr('id') == 'context-menu') {
// コンテキストメニューを表示したタイミングでコマンドを追加
var menu = $('<a>').text(commandTitle).click(function() {
execute();
return false;
})
this.children('ul').append($('<li>').append(menu));
}
return jQuery.fn._show.apply(this, arguments);
};
// コマンドの実処理
var execute = function() {
// チェックされているチケット番号を取得(複数存在する場合はカンマ区切り)
var issues = $('input[name="ids[]"]:checked').map(function() { return $(this).val();}).get().join(',');
// 対象のURIにチケット番号をパラメータとして送信
$.ajax({
type: 'GET',
url: commandUrl,
data: 'issues=' + issues // チケット番号をパラメータとして
}).done(function(data, textStatus, jqXHR){
// 成功時の処理
alert('成功しました。');
}).fail(function(jqXHR, textStatus, errorThrown){
// 失敗時の処理
alert('失敗しました。 status:' + jqXHR.status);
});
contextMenuHide();
};
});