OSDN Git Service

cleanup
[quickedit/quick_edit.git] / app / views / hooks / _quick_edit_base_bottom.html.erb
1 <div id="quick_edit">
2   <div id="quick_edit_input_dialogs"></div>
3   <div id="cursor" style="border: 1px dotted gray; position: absolute; display: none; opacity: 0.5; z-index:99;">&nbsp;</div>
4 </div>
5 <script>
6 //<![CDATA[
7 function quick_edit_log(message){
8   if(typeof console !== "undefined" && typeof console.log !=="undefined")
9     console.log("quick_edit: "+message);
10 }
11
12
13 var offsetY = /[?&]offsetY=(\d+).*/g.exec(location.href);
14 if (offsetY) {
15   window.scrollTo(0, offsetY[1]);
16 }
17
18 quick_edit_drag_and_drop_init();
19
20 function quick_edit_drag_and_drop_init() {
21   if ($("body").hasClass("controller-issues action-index")) {
22     $("tr.issue").draggable({
23       cursor: "move",
24       start: function (event, ui) {
25         drag_element = $(this);
26         if (!drag_element.hasClass("context-menu-selection")) {
27           drag_element.addClass("context-menu-selection");
28         }
29     
30         $("#cursor").css( {
31           "top": drag_element.css("top"),
32           "left": $("#content").css("padding-left"),
33           "width": drag_element.css("width"),
34           "height": drag_element.css("height"),
35           "background-color": drag_element.css("background-color"),
36           "display": "block"});
37       },
38       stop: function (event, ui) { $("#cursor").css({"display": "none"}); },
39       drag: function (event, ui) { $("#cursor").css({"top": event.pageY}); }
40     });
41   
42     $("tr.issue").droppable({
43       drop: function (event, ui) {
44         var update_ids = quick_edit_get_selections();
45         var new_parent_id = quick_edit_get_issue_id_from_element(this);
46         if (!new_parent_id) return;
47
48         $.ajax({
49           url: '<%= quick_edit_issues_edit_path() %>?' + update_ids.join("&") + '&target_specifier=issue[parent_issue_id]&default_value='+new_parent_id,
50           dataType: "script",
51           success : function (html) { $("#quick_edit_dialogs").html(html); }
52         });
53       }
54     });
55   }
56 }
57
58 function quick_edit_drag_and_drop_enable(){
59   $("tr.issue.ui-draggable").each( function () {
60     var issue = $(this);
61     issue.draggable("enable");
62   });
63   $("tr.issue.ui-droppable").each( function () {
64     var issue = $(this);
65     issue.droppable("enable");
66   });
67
68   quick_edit_log("issue d&d enabled.");
69 }
70
71 function quick_edit_drag_and_drop_disable(){
72   $("tr.issue.ui-draggable").each( function () {
73     var issue = $(this);
74     issue.draggable("disable");
75   });
76   $("tr.issue.ui-droppable").each( function () {
77     var issue = $(this);
78     issue.droppable("disable");
79   });
80   
81   quick_edit_log("issue d&d disabled.");
82 }
83
84 function quick_edit_get_selections() {
85     var ids = [];
86     $(".context-menu-selection").each(function (index,element) {
87       var id = quick_edit_get_issue_id_from_element(element);
88       ids.push("ids[]="+id);
89     });
90     return ids;
91 }
92
93 function quick_edit_get_issue_id_from_element(element) {
94   var id = $(element).attr("id");
95   var m = /issue-(.*)/.exec(id);
96   return m[1];
97 }
98
99 function quick_edit_input_dialog_switch_page() {
100   var dialog = $("#quick_edit_input_dialog");
101
102   var switchers = dialog.find(".page-switcher");
103   switchers.toggle();
104
105   var pages = dialog.find(".page");
106   pages.toggle();
107
108   if (dialog.find("#replace_switcher:hidden").length == 1) {
109     dialog.dialog("option", "buttons",
110       [ { text: "Preview", click: quick_edit_input_dialog_preview_replace},
111         { text: "Submit", click: quick_edit_input_dialog_replace_submit},
112         { text: "Cancel", click: quick_edit_input_dialog_cancel}]);
113
114   } else {
115     dialog.dialog("option", "buttons",
116       [ { text: "Submit", click: quick_edit_input_dialog_edit_submit},
117         { text: "Cancel", click: quick_edit_input_dialog_cancel}]);
118   }
119 }
120
121 function quick_edit_input_dialog_preview_replace() {
122   var replace_page = $("#quick_edit_input_dialog #replace-page");
123
124   var target_specifier = replace_page.find("#target_specifier").val();
125   var find = replace_page.find("#find").val();
126   var replace = replace_page.find("#replace").val();
127   var ids = [];
128   replace_page.find("#ids").each( function () { ids.push($(this).val()); });
129   var url="<%= quick_edit_issues_replace_preview_path() %>";
130
131   if(find == "") {
132     alert('<%=l(:text_is_required)%>');
133     return;
134   }
135
136   $.ajax({
137      url: url,
138      data: {ids: ids, target_specifier: target_specifier, find: find, replace: replace},
139      dataType: 'script'});
140 }
141
142 function quick_edit_input_dialog_replace_submit() {
143   var replace_page = $("#quick_edit_input_dialog #replace-page");
144
145   var find = replace_page.find("#find").val();
146   if(find == "") {
147     alert('<%=l(:text_is_required)%>');
148     return;
149   }
150
151   replace_page.find("form").submit();
152 }
153
154 function quick_edit_input_dialog_open(){
155   quick_edit_drag_and_drop_disable();
156 }
157
158 function quick_edit_input_dialog_close(){
159   quick_edit_drag_and_drop_enable();
160   $("#quick_edit_input_dialog").remove();
161 }
162
163 function quick_edit_input_dialog_cancel(){
164   $("#quick_edit_input_dialog").dialog("close");
165 }
166
167 function quick_edit_clear(){
168 }
169
170 function quick_edit_input_dialog_edit_submit(){
171   var edit_page = $("#quick_edit_input_dialog #edit-page");
172
173   var target_specifier = edit_page.find("#target_specifier").val();
174   var new_value_element = edit_page.find("#new_value");
175   var clr_value_element = edit_page.find("#clear");
176
177   if (edit_page.find("#clear:checked").length > 0){
178     new_value_element.attr("name", "_quick_edit_tmp");
179     clr_value_element.attr("name", target_specifier);
180
181   } else {
182     new_value_element.attr("name", target_specifier);
183     clr_value_element.attr("name", "_quick_edit_tmp");
184
185     var new_value = edit_page.find("#new_value").val();
186     if(new_value === null) return;
187
188     var pattern = new RegExp(edit_page.find("#validation_pattern").val());
189
190     if(new_value == "") {
191       alert('<%=l(:text_is_required)%>');
192       return;
193
194     } else {
195
196       if(pattern && !pattern.test(new_value)){
197          alert('<%=l(:text_invalid_format)%>');
198          return;
199       }
200     }
201   }
202
203   var issue_ids = [];
204   edit_page.find("#ids").each(function (index,element) {
205     issue_ids.push($(this).val());
206   });
207   if(issue_ids.length>1){
208      if(!confirm('<%=l(:text_multiple_update_confirm)%>')) return;
209   }
210
211   var offsetY = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;
212   var back_url = edit_page.find("#back_url").val();
213   if (back_url.indexOf("?") == -1) {
214     back_url = back_url + "?offsetY=" + offsetY;
215   } else {
216     back_url = back_url + "&offsetY=" + offsetY;
217   }
218   edit_page.find("#back_url").val(back_url);
219
220   edit_page.find("form").submit();
221 }
222
223 function quick_edit_show_new_relation_dialog(first_issue_id, second_issue_id, back_url){
224   $("#quick_edit_new_relation_dialog > form > #issue_id").val(first_issue_id);
225   $("#quick_edit_new_relation_dialog > form > #relation_issue_to_id").val(second_issue_id);
226   $("#quick_edit_new_relation_dialog > form > #back_url").val(back_url);
227   $("#quick_edit_new_relation_dialog").dialog({
228      modal: true,
229      closeOnEscape: false,
230      width: 450,
231      height: 150,
232      open: quick_edit_new_relation_dialog_open,
233      close: quick_edit_new_relation_dialog_close
234   });
235
236   quick_edit_log("new_relation dialog open.");
237 }
238
239 function quick_edit_new_relation_dialog_cancel(){
240    $('#quick_edit_new_relation_dialog').dialog("close");
241 }
242
243 function quick_edit_new_relation_dialog_open(){
244   quick_edit_drag_and_drop_disable();
245 }
246
247 function quick_edit_new_relation_dialog_close(){
248   quick_edit_drag_and_drop_enable();
249 }
250
251 //]]>
252 </script>
253