OSDN Git Service

to be changed the parent of the issue by drag-and-drop.
authorAkira Saito <akrstjp@users.sourceforge.jp>
Mon, 2 Feb 2015 14:51:15 +0000 (23:51 +0900)
committerAkira Saito <akrstjp@users.sourceforge.jp>
Mon, 2 Feb 2015 14:51:15 +0000 (23:51 +0900)
app/controllers/quick_edit_issues_controller.rb
app/views/hooks/_quick_edit_base_bottom.html.erb

index d9c04b5..226aa17 100644 (file)
@@ -18,6 +18,7 @@ class QuickEditIssuesController < ApplicationController
 
     @dialog_params[:issue_ids] = params[:ids]
     @dialog_params[:back_url] = params[:back_url]
+    @dialog_params[:default_value] = params[:default_value] unless (params[:default_value].nil?)
   end
 
 private
index ae568b7..53d0252 100644 (file)
@@ -1,7 +1,52 @@
 <div id="quick_edit_input_dialogs"></div>
-
+<div id="cursor" style="border: 1px dotted gray; position: absolute; display: none; opacity: 0.5;">&nbsp;</div>
 <script>
 //<![CDATA[
+
+$("tr.issue").draggable({
+  cursor: "move",
+  start: function (event, ui) {
+    var ids = quick_edit_get_selections();
+    if (ids.length == 0) return;
+    
+    drag_element = $(this);
+    $("#cursor").css( {
+      "top": drag_element.css("top"),
+      "left": $("#content").css("padding-left"),
+      "width": drag_element.css("width"),
+      "height": drag_element.css("height"),
+      "background-color": drag_element.css("background-color"),
+      "display": "block"});
+  },
+  stop: function (event, ui) { $("#cursor").css({"display": "none"}); },
+  drag: function (event, ui) { $("#cursor").css({"top": event.pageY}); }
+});
+
+$("tr.issue").droppable({
+  drop: function (event, ui) {
+    var update_ids = quick_edit_get_selections();
+    if (update_ids.length == 0) return;
+
+    var id = $(this).attr("id");
+    var new_parent_id = /issue-(.*)/.exec(id)[1];
+    $.ajax({
+      url: '<%= quick_edit_issues_edit_path() %>?' + update_ids.join("&") + '&target_specifier=issue[parent_issue_id]&default_value='+new_parent_id,
+      dataType: "script",
+      success : function (html) { $("#quick_edit_dialogs").html(html); }
+    });
+  }
+});
+
+function quick_edit_get_selections() {
+    var ids = [];
+    $(".context-menu-selection").each(function (index,element) {
+      var id = $(element).attr("id");
+      var m = /issue-(.*)/.exec(id);
+      ids.push("ids[]="+m[1]);
+    });
+    return ids;
+}
+
 function quick_edit_input_dialog_close(){
   $("#quick_edit_input_dialog").remove();
 }