summaryrefslogtreecommitdiff
path: root/modules/organize/js
diff options
context:
space:
mode:
Diffstat (limited to 'modules/organize/js')
-rw-r--r--modules/organize/js/organize.js138
1 files changed, 82 insertions, 56 deletions
diff --git a/modules/organize/js/organize.js b/modules/organize/js/organize.js
index 07c07286..2d7c99fc 100644
--- a/modules/organize/js/organize.js
+++ b/modules/organize/js/organize.js
@@ -1,32 +1,37 @@
(function($) {
$.organize = {
micro_thumb_draggable: {
+ handle: ".ui-state-selected",
distance: 10,
cursorAt: { left: -10, top: -10},
appendTo: "#gMicroThumbPanel",
helper: function(event, ui) {
- var selected = $(".ui-draggable.ui-state-selected img"),
- set = $('<div class="gDragHelper"></div>').css({zIndex: 2000, width: 80, height: Math.ceil(selected.length / 5) * 16 }),
- offset = $(this).offset(),
- click = { left: event.pageX - offset.left, top: event.pageY - offset.top };
-
- selected.each(function(i) {
- var row = parseInt(i / 5);
- var j = i - (row * 5);
-
- var o = $(this).offset();
-
- var copy = $(this).clone()
- .css({
- width: $(this).width(), height: $(this).height(), display: "block",
- margin: 0, position: 'absolute', outline: '5px solid #fff',
- left: o.left - event.pageX, top: o.top - event.pageY
- })
- .appendTo(set)
- .animate({width: 10, height: 10, outlineWidth: 1, margin: 1, left: (20 * j), top: (row * 20)}, 500);
- });
- return set;
+ var selected = $(".ui-draggable.ui-state-selected img");
+ if (selected.length) {
+ var set = $('<div class="gDragHelper"></div>').css({zIndex: 2000, width: 80, height: Math.ceil(selected.length / 5) * 16 }),
+ offset = $(this).offset(),
+ click = { left: event.pageX - offset.left, top: event.pageY - offset.top };
+
+ selected.each(function(i) {
+ var row = parseInt(i / 5);
+ var j = i - (row * 5);
+
+ var o = $(this).offset();
+
+ var copy = $(this).clone()
+ .css({
+ width: $(this).width(), height: $(this).height(), display: "block",
+ margin: 0, position: 'absolute', outline: '5px solid #fff',
+ left: o.left - event.pageX, top: o.top - event.pageY
+ })
+ .appendTo(set)
+ .animate({width: 10, height: 10, outlineWidth: 1, margin: 1, left: (20 * j), top: (row * 20)}, 500);
+ });
+ return set;
+ }
+ return null;
},
+
start: function(event, ui) {
$("#gMicroThumbPanel .ui-state-selected").hide();
},
@@ -52,9 +57,8 @@
greedy: true,
drop: function(event, ui) {
$.organize.do_drop({
- parent_id: $(".gBranchSelected").attr("ref"),
- target_id: $(".currentDropTarget").attr("ref"),
- position: $(".currentDropTarget").css("borderLeftStyle") == "solid" ? "before" : "after",
+ url: rearrange_url.replace("__TARGET_ID__", $(".currentDropTarget").attr("ref"))
+ .replace("__BEFORE__", $(".currentDropTarget").css("borderLeftStyle") == "solid"),
source: $(ui.helper).children("img")
});
}
@@ -66,40 +70,61 @@
greedy: true,
drop: function(event, ui) {
$.organize.do_drop({
- parent_id: $(event.target).attr("ref"),
- target_id: -1,
- position: "after",
+ url: move_url.replace("__TARGET_ID__", $(event.target).attr("ref")),
source: $(ui.helper).children("img")
});
}
},
- do_drop:function(drop_parms) {
- var source_ids = "";
- $(drop_parms.source).each(function(i) {
- source_ids += (source_ids.length ? "&" : "") + "source_id[" + i + "]=" + $(this).attr("ref");
+ do_drop:function(options) {
+ var source_ids = [];
+ $(options.source).each(function(i) {
+ source_ids.push($(this).attr("ref"));
});
- var url = drop_url.replace("__PARENT_ID__", drop_parms.parent_id)
- .replace("__POSITION__", drop_parms.position)
- .replace("__TARGET_ID__", drop_parms.target_id);
-
- console.group("do_drop");
- console.log("Generated url: " + url);
- console.log("Post data(ids to move): " + source_ids);
- console.groupEnd();
- // @todo do a ajax call to send the rearrange request to the server
- // organize/move/parent_id/before|after/-1|target_id
- // post parameters
- // source=[id1, id2, ...]
- // before or after not supplied then append to end
- // return: json {
- // result: success | msg,
- // tree: null | new tree,
- // content: new thumbgrid
- // }
- // do forget to reset all the stuff in init when updating the content
+
+ if (source_ids.length) {
+ $("#gOrganize .gProgressBar").progressbar().progressbar("value", 0);
+ $("#gOrganizeProgress").slideDown("fast", function() {
+ $.ajax({
+ url: options.url,
+ type: "POST",
+ async: false,
+ data: { "source_ids[]": source_ids },
+ dataType: "json",
+ success: function(data, textStatus) {
+ $("#gStatus").html(data.status);
+ $("#gOrganize .gProgressBar").progressbar("value", data.percent_complete);
+ setTimeout(function() { $.organize._run_task(data.url); }, 0);
+ }
+ });
+ });
+ }
},
+ _run_task: function(url) {
+ $.ajax({
+ url: url,
+ async: false,
+ dataType: "json",
+ success: function(data, textStatus) {
+ $("#gStatus").html(data.status);
+ $("#gOrganize .gProgressBar").progressbar("value", data.percent_complete);
+ if (data.done) {
+ $("#gProgress").slideUp();
+ // Don't forget to refresh the content pane and tree
+ if (data.tree) {
+ $("#gOrganizeAlbumTree").html(data.tree);
+ }
+ if (data.content) {
+ $("#gMicroThumbGrid").html(data.content);
+ }
+ $.organize.set_handlers();
+ } else {
+ setTimeout(function() { $.organize._run_task(url); }, 0);
+ }
+ }
+ });
+ },
mouse_move_handler: function(event) {
if ($(".gDragHelper").length) {
$(".gMicroThumbGridCell").css("borderStyle", "hidden");
@@ -121,8 +146,8 @@
$("#gDialog").dialog("option", "zIndex", 70);
$("#gDialog").bind("dialogopen", function(event, ui) {
$("#gOrganize").height($("#gDialog").innerHeight() - 20);
- $("#gMicroThumbPanel").height($("#gDialog").innerHeight() - 90);
- $("#gOrganizeAlbumTree").height($("#gDialog").innerHeight() - 59);
+ $("#gMicroThumbPanel").height($("#gDialog").innerHeight() - 120);
+ $("#gOrganizeAlbumTree").height($("#gDialog").innerHeight() - 89);
});
$("#gDialog").bind("dialogclose", function(event, ui) {
@@ -133,18 +158,18 @@
$("#gDialog").dialog("close");
});
- $("#gMicroThumbPanel").selectable({filter: ".gMicroThumbGridCell"});
- $("#gMicroThumbPanel").droppable($.organize.content_droppable);
-
$.organize.set_handlers();
},
set_handlers: function() {
+ $("#gMicroThumbPanel").selectable({filter: ".gMicroThumbGridCell"});
+ $("#gMicroThumbPanel").droppable($.organize.content_droppable);
+
$(".gMicroThumbGridCell").draggable($.organize.micro_thumb_draggable);
$(".gMicroThumbGridCell").mousemove($.organize.mouse_move_handler);
$(".gOrganizeBranch").droppable($.organize.branch_droppable);
- $(".gBranchText span").click($.organize.collapse_or_expand_tree);
$(".gBranchText").click($.organize.show_album);
+ $(".gOrganizeBranch .ui-icon").click($.organize.collapse_or_expand_tree);
},
/**
@@ -164,6 +189,7 @@
if ($(event.currentTarget).hasClass("gBranchSelected")) {
return;
}
+ $("#gMicroThumbPanel").selectable("destroy");
var id = $(event.currentTarget).attr("ref");
$(".gBranchSelected").removeClass("gBranchSelected");
$("#gOrganizeBranch-" + id).addClass("gBranchSelected");