summaryrefslogtreecommitdiff
path: root/modules/organize/js
diff options
context:
space:
mode:
authorChad Kieffer <ckieffer@gmail.com>2009-08-28 13:48:54 -0600
committerChad Kieffer <ckieffer@gmail.com>2009-08-28 13:48:54 -0600
commit5a2853bca1ea9a9231e01814df9aa373bf50d19c (patch)
tree431264bfb9de1d8bbdc6a9ba7775a363381f96e8 /modules/organize/js
parentf1e008a14f2dfb51d1204dad3deb19e2e3df16c8 (diff)
parent6dcfdb6432d556f43736d60de8f310f247868bfa (diff)
Merge branch 'master' of git@github.com:gallery/gallery3
Diffstat (limited to 'modules/organize/js')
-rw-r--r--modules/organize/js/organize.js805
-rw-r--r--modules/organize/js/organize_init.js29
2 files changed, 204 insertions, 630 deletions
diff --git a/modules/organize/js/organize.js b/modules/organize/js/organize.js
index 31657d3a..ec6bd924 100644
--- a/modules/organize/js/organize.js
+++ b/modules/organize/js/organize.js
@@ -1,621 +1,224 @@
-/*
- * @todo Trap resize of dialog and resize the child areas (tree, grid and edit form)
- */
-var url;
-var paused = false;
-var task = null;
-var transitItems = [];
-var heightMicroThumbPanel;
-
-// **************************************************************************
-// JQuery UI Widgets
-// Draggable
-var draggable = {
- handle: ".gMicroThumbContainer.ui-selected",
- revert: true,
- zindex: 2000,
- distance: 10,
- helper: function(event, ui) {
- if (!$(event.currentTarget).hasClass("ui-selected")) {
- $(event.currentTarget).addClass("ui-selected");
- setDrawerButtonState();
- }
- $("#gMicroThumbPanel").append("<div id=\"gDragHelper\"><ul></ul></div>");
- var beginTop = event.pageY;
- var beginLeft = event.pageX;
- var zindex = $(".gMicroThumbContainer").draggable("option", "zindex");
- $("#gDragHelper").css('top', event.pageY - 22.5);
- $("#gDragHelper").css('left', event.pageX + 22.5);
- var placeHolder = $(this).clone();
- $(placeHolder).attr("id", "gPlaceHolder");
- $(placeHolder).css("visibility", "hidden");
- $(placeHolder).removeClass("ui-selected");
- $(placeHolder).removeClass("ui-draggable");
- $(this).after(placeHolder);
+(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");
+ if (selected.length) {
+ var set = $('<div class="gDragHelper"></div>')
+ .css({
+ zIndex: 2000,
+ width: 80,
+ height: Math.ceil(selected.length / 5) * 16
+ });
+ var offset = $(this).offset();
+ var 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;
+ },
- $("li.ui-selected").each(function(i) {
- var clone = $(this).clone();
- $(clone).attr("id", "drag_clone_" + $(this).attr("ref"));
- $("#gDragHelper ul").append(clone);
- $(clone).css("position", "absolute");
- $(clone).css("top", beginTop);
- $(clone).css("left", beginLeft);
- $(clone).css("z-index", zindex--);
- $(this).hide();
+ start: function(event, ui) {
+ $("#gMicroThumbPanel .ui-state-selected").hide();
+ },
- var children = $(clone).find(".gMicroThumb .gThumbnail");
- var width = new String(children.css("width")).replace(/[^0-9]/g,"") * .5;
- var height = new String(children.css("height")).replace(/[^0-9]/g,"") * .5;
- var marginTop = new String(children.css("margin-top")).replace(/[^\.0-9]/g,"") * .5;
- children.attr("width", width);
- children.attr("height", height);
- children.css("margin-top", marginTop);
- if (i < 9) {
- beginTop -= 5;
- beginLeft += 5;
+ drag: function(event, ui) {
+ var top = $("#gMicroThumbPanel").offset().top;
+ var height = $("#gMicroThumbPanel").height();
+ if (ui.offset.top > height + top - 20) {
+ $("#gMicroThumbPanel").get(0).scrollTop += 100;
+ } else if (ui.offset.top < top + 20) {
+ $("#gMicroThumbPanel").get(0).scrollTop = Math.max(0, $("#gMicroThumbPanel").get(0).scrollTop - 100);
+ }
}
- });
- return $("#gDragHelper");
- },
- stop: function(event, ui) {
- $("#gDragHelper li").each(function(i) {
- $("#thumb_" + $(this).attr("ref")).show();
- });
- $(".gMicroThumbContainer.ui-selected").css("z-index", null);
- $("#gDragHelper").remove();
- $("#gPlaceHolder").remove();
- }
-};
-
-// Thumbnail Grid Droppable
-var thumbDroppable = {
- tolerance: "pointer",
- over: function(event, ui) {
- $("#gPlaceHolder").show();
- },
- out: function(event, ui) {
- $("#gPlaceHolder").hide();
- },
- drop: function(event, ui) {
- $("#gDragHelper").hide();
- $("#gPlaceHolder").hide();
- var newOrder = "";
- $("#gMicroThumbGrid .gMicroThumbContainer").each(function(i) {
- if ($(this).attr("id") == "gPlaceHolder") {
- $("#gDragHelper li").each(function(i) {
- newOrder += "&item[]=" + $(this).attr("ref");
+ },
+
+ content_droppable: {
+ accept: "*",
+ tolerance: "pointer",
+ greedy: true,
+ drop: function(event, ui) {
+ $.organize.do_drop({
+ url: rearrange_url
+ .replace("__TARGET_ID__", $(".currentDropTarget").attr("ref"))
+ .replace("__BEFORE__", $(".currentDropTarget").css("borderLeftStyle") == "solid" ? "before" : "after"),
+ source: $(ui.helper).children("img")
});
- } else if ($(this).css("display") != "none") {
- newOrder += "&item[]=" + $(this).attr("ref");
- } else {
- // If its not displayed then its one of the ones being moved so ignore.
}
- });
- $("#gDragHelper li").each(function(i) {
- $("#gPlaceHolder").before($("#thumb_" + $(this).attr("ref")).show());
- });
- $.ajax({
- data: newOrder,
- dataType: "json",
- success: operationCallback,
- type: "POST",
- url: get_organize_url("organize/startTask/rearrange", {item_id: item_id})
- });
- }
-};
-
-// Album Tree Droppable
-var treeDroppable = {
- tolerance: "pointer",
- greedy: true,
- hoverClass: "gBranchDroppable",
- drop: function(event, ui) {
- $("#gDragHelper").hide();
- var targetItemId = $(this).attr("ref");
- if ($(this).hasClass("gBranchSelected")) {
- $("#gMessage").empty().append(INVALID_DROP_TARGET);
- ui.draggable.trigger("stop", event);
- return false;
- }
- var postData = serializeItemIds("#gDragHelper li");
- var okToMove = true;
- $("#gDragHelper li").each(function(i) {
- okToMove &= targetItemId != $(this).attr("ref");
- });
- if (!okToMove) {
- $("#gMessage").empty().append(INVALID_DROP_TARGET);
- ui.draggable.trigger("stop", event);
- return false;
- }
- $("#gDragHelper li").each(function(i) {
- $("#thumb_" + $(this).attr("ref")).remove();
- });
- $.ajax({
- data: postData,
- dataType: "json",
- success: operationCallback,
- type: "POST",
- url: get_organize_url("organize/startTask/move", {item_id: targetItemId})
- });
- return true;
- }
-};
-
-// Selectable
-var selectable = {
- filter: ".gMicroThumbContainer",
- selected: function(event, ui) {
- setDrawerButtonState();
- },
- unselected: function(event, ui) {
- setDrawerButtonState();
- },
- stop: function(event, ui) {
- getEditForm();
- }
-};
-
-// **************************************************************************
-// Event Handlers
-// MicroThumbContainer mouseup
-var onMicroThumbContainerMouseup = function(event) {
- // For simplicity always remove the ui-selected class. If it was unselected
- // it will get added back
- $(this).toggleClass("ui-selected");
-
- setDrawerButtonState();
- if ($("#gMicroThumbGrid li.ui-selected").length > 0) {
- getEditForm();
- }
-};
+ },
+
+ branch_droppable: {
+ accept: "*",
+ tolerance: "pointer",
+ greedy: true,
+ drop: function(event, ui) {
+ if ($(event.target).hasClass("gViewOnly")) {
+ $(".ui-state-selected").show();
+ $(".gMicroThumbGridCell").css("borderStyle", "none");
+ } else {
+ $.organize.do_drop({
+ url: move_url.replace("__TARGET_ID__", $(event.target).attr("ref")),
+ source: $(ui.helper).children("img")
+ });
+ }
+ }
+ },
-// MicroThumbContainer mousemove
-var onMicroThumbContainerMousemove = function(event) {
- if ($("#gDragHelper").length > 0 && $(this).attr("id") != "gPlaceHolder") {
- if (event.pageX < $(this).offset().left + $(this).width() / 2) {
- $(this).before($("#gPlaceHolder"));
- } else {
- $(this).after($("#gPlaceHolder"));
- }
- var container = $("#gMicroThumbPanel").get(0);
- var scrollHeight = container.scrollHeight;
- var scrollTop = container.scrollTop;
- var height = $(container).height();
- if (event.pageY > height + scrollTop) {
- container.scrollTop = this.offsetTop;
- } else if (event.pageY < scrollTop) {
- container.scrollTop -= height;
- }
- }
-};
+ do_drop:function(options) {
+ $("#gMicroThumbPanel").selectable("destroy");
+ var source_ids = [];
+ $(options.source).each(function(i) {
+ source_ids.push($(this).attr("ref"));
+ });
-// Handle click events on the buttons on the drawer handle
-function drawerHandleButtonsClick(event) {
- event.preventDefault();
- if (!$(this).attr("disabled")) {
- var operation = $(this).attr("ref");
- switch (operation) {
- case "edit":
- case "close":
- $("#gOrganizeEditDrawerPanel").animate(
- {"height": "toggle", "display": "block"},
- {duration: "fast",
- complete: function() {
- setSelectedThumbs();
- if (operation == "close") {
- $("#gOrganizeEditHandleButtonsLeft a[ref='edit']").css("display", "inline-block");
- $("#gOrganizeEditHandleButtonsLeft a[ref='close']").css("display", "none");
- $("#gOrganizeEditHandleButtonsMiddle a").css("display", "none");
- } else {
- $("#gOrganizeEditHandleButtonsLeft a[ref='edit']").css("display", "none");
- $("#gOrganizeEditHandleButtonsLeft a[ref='close']").css("display", "inline-block");
- $("#gOrganizeEditHandleButtonsMiddle a").css("display", "inline-block");
+ if (source_ids.length) {
+ $("#gOrganize .gProgressBar").progressbar().progressbar("value", 0);
+ $("#gOrganizeProgress").animate(
+ { height: "toggle", display: "toggle" },
+ {
+ duration: "fast",
+ step: function() {
+ },
+ complete: function() {
+ $("#gMicroThumbPanel").height($("#gMicroThumbPanel").height() - $(this).height());
+ $.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);
+ }
+ });
}
- },
- step: function() {
- $("#gMicroThumbPanel").height(heightMicroThumbPanel - $(this).height());
- }
- });
- break;
- case "select-all":
- $("#gMicroThumbGrid li").addClass("ui-selected");
- $("#gMicroThumbSelectAll").hide();
- $("#gMicroThumbUnselectAll").show();
- setDrawerButtonState();
- getEditForm();
- break;
- case "unselect-all":
- $("#gMicroThumbGrid li").removeClass("ui-selected");
- $("#gMicroThumbSelectAll").show();
- $("#gMicroThumbUnselectAll").hide();
- setDrawerButtonState();
- break;
- case "done":
- $("#gDialog").dialog("close");
- break;
- case "submit":
- var currentTab = $("#gOrganizeEditForm").tabs("option", "selected");
- var form = $("#pane-"+currentTab+" form");
- var url = $(form).attr("action")
- .replace("__FUNCTION__", $(form).attr("ref"));
+ });
+ }
+ },
+
+ _run_task: function(url) {
$.ajax({
- data: $(form).serialize(),
+ url: url,
+ async: false,
dataType: "json",
- success: function (data, textStatus) {
- $("#pane-"+currentTab).children("form").replaceWith(data.form);
- if (data.message) {
- $("#gMessage").empty().append("<div class='gSuccess'>" + data.message + "</div>");
+ success: function(data, textStatus) {
+ $("#gStatus").html(data.status);
+ $("#gOrganize .gProgressBar").progressbar("value", data.percent_complete);
+ if (data.done) {
+ var height = $("#gOrganizeProgress").height();
+ $("#gOrganizeProgress").toggle();
+ $("#gMicroThumbPanel").height($("#gDialog").innerHeight() - 90);
+ //$("#gMicroThumbPanel").height($("#gMicroThumbPanel").height() + height);
+ 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);
}
- },
- type: "POST",
- url: url
- });
- break;
- case "reset":
- currentTab = $("#gOrganizeEditForm").tabs("option", "selected");
- form = $("#pane-"+currentTab+" form");
- $.ajax({
- data: serializeItemIds("#gMicroThumbPanel li.ui-selected"),
- dataType: "html",
- success: function (data, textStatus) {
- $("#pane-"+currentTab + " form").replaceWith(data);
- },
- type: "GET",
- url: $(form).attr("action").replace("__FUNCTION__", "reset_" + $(form).attr("ref"))
+ }
});
- break;
- case "delete":
- if (!confirm(CONFIRM_DELETE)) {
- break;
+ },
+
+ mouse_move_handler: function(event) {
+ if ($(".gDragHelper").length) {
+ $(".gMicroThumbGridCell").css("borderStyle", "hidden");
+ $(".currentDropTarget").removeClass("currentDropTarget");
+ var borderStyle = event.pageX < $(this).offset().left + $(this).width() / 2 ?
+ "borderLeftStyle" : "borderRightStyle";
+ $(this).css(borderStyle, "solid");
+ $(this).addClass("currentDropTarget");
}
- default:
- $.ajax({
- data: serializeItemIds("#gMicroThumbPanel li.ui-selected"),
- dataType: "json",
- success: operationCallback,
- type: "POST",
- url: get_organize_url("organize/startTask/" + operation, {item_id: item_id})
+ },
+
+ /**
+ * Dynamically initialize the organize dialog when it is displayed
+ */
+ init: function(data) {
+ var self = this;
+ // Deal with ui.jquery bug: http://dev.jqueryui.com/ticket/4475 (target 1.8?)
+ $(".sf-menu li.sfHover ul").css("z-index", 68);
+ $("#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);
});
- break;
- }
- }
-};
-
-// **************************************************************************
-// AJAX Callbacks
-// MicroThumbContainer click
-var getMicroThumbsCallback = function(json, textStatus) {
- if (json.count > 0) {
- $("#gMicroThumbGrid").append(json.data);
- retrieveMicroThumbs();
- $(".gMicroThumbContainer").mouseup(onMicroThumbContainerMouseup);
- $(".gMicroThumbContainer").mousemove(onMicroThumbContainerMousemove);
- $(".gMicroThumbContainer").draggable(draggable);
- }
-};
-
-var operationCallback = function (data, textStatus) {
- var done = false;
- if (!paused) {
- createProgressDialog(data.runningMsg);
- task = data.task;
- task.pauseMsg = data.pauseMsg;
- task.resumeMsg = data.resumeMsg;
- done = data.task.done;
- }
- $(".gMicroThumbContainer").draggable("disable");
- paused = false;
- while (!done && !paused) {
- $.ajax({async: false,
- success: function(data, textStatus) {
- $(".gProgressBar").progressbar("value", data.task.percent_complete);
- done = data.task.done;
- if (data.task.post_process.reload) {
- $.each(data.task.post_process.reload, function() {
- var selector = "#gMicroThumb-" + this.id + " img";
- $(selector).attr("height", this.height);
- $(selector).attr("width", this.width);
- $(selector).attr("src", this.src);
- $(selector).css("margin-top", this.marginTop);
- });
- }
- if (data.task.post_process.remove) {
- $.each(data.task.post_process.remove, function() {
- $("#thumb_" + this.id).remove();
- });
- }
- },
- error: function(XMLHttpRequest, textStatus, errorThrown) {
- paused = true;
- displayAjaxError(XMLHttpRequest.responseText);
- },
- dataType: "json",
- type: "POST",
- url: get_organize_url("organize/runTask", {task_id: task.id})
- });
- }
- if (!paused) {
- $("#gOrganizeProgressDialog").dialog("destroy").remove();
- $.ajax({async: false,
- success: function(data, textStatus) {
- setDrawerButtonState();
- task = null;
- $("#gMessage").empty().append("<div class='gSuccess'>" + data.task.status + "</div>");
- },
- dataType: "json",
- type: "POST",
- url: get_organize_url("organize/finishTask", {task_id: task.id})
- });
- }
- $(".gMicroThumbContainer").draggable("enable");
-};
-
-// **************************************************************************
-
-/**
- * Dynamically initialize the organize dialog when it is displayed
- */
-function organize_dialog_init() {
- var size = getViewportSize();
- heightMicroThumbPanel = size.height() - 100;
- var width = size.width() - 100;
-
- // Deal with ui.jquery bug: http://dev.jqueryui.com/ticket/4475
- $(".sf-menu li.sfHover ul").css("z-index", 70);
-
- $("#gDialog").dialog("option", "width", width);
- $("#gDialog").dialog("option", "height", heightMicroThumbPanel);
-
- $("#gDialog").dialog("open");
- if ($("#gDialog h1").length) {
- $("#gDialog").dialog('option', 'title', $("#gDialog h1:eq(0)").html());
- } else if ($("#gDialog fieldset legend").length) {
- $("#gDialog").dialog('option', 'title', $("#gDialog fieldset legend:eq(0)").html());
- }
-
- $("#gDialog").bind("organize_close", function(target) {
- document.location.reload();
- });
-
- heightMicroThumbPanel -= 2 * parseFloat($("#gDialog").css("padding-top"));
- heightMicroThumbPanel -= 2 * parseFloat($("#gDialog").css("padding-bottom"));
- heightMicroThumbPanel -= $("#gMicroThumbPanel").position().top;
- heightMicroThumbPanel -= $("#gDialog #ft").height();
- heightMicroThumbPanel -= $("#gOrganizeEditDrawerHandle").height();
- heightMicroThumbPanel = Math.round(heightMicroThumbPanel);
-
- $("#gMicroThumbPanel").height(heightMicroThumbPanel);
- $("#gOrganizeTreeContainer").height(heightMicroThumbPanel);
- $(".gOrganizeBranch .ui-icon").click(organizeToggleChildren);
- $(".gBranchText").droppable(treeDroppable);
- $(".gBranchText").click(organizeOpenFolder);
- retrieveMicroThumbs(item_id);
- //$.gallery_show_loading("#gDialog");
-
- $("#gMicroThumbPanel").droppable(thumbDroppable);
- $("#gMicroThumbPanel").selectable(selectable);
- $("#gOrganizeEditDrawerHandle a").click(drawerHandleButtonsClick);
-}
-
-function retrieveMicroThumbs() {
- var offset = $("#gMicroThumbGrid li").length;
- if (url == null) {
- var grid_width = $("#gMicroThumbPanel").width();
- url = $("#gMicroThumbPanel").attr("ref");
- url = url.replace("__WIDTH__", grid_width);
- url = url.replace("__HEIGHT__", heightMicroThumbPanel);
- }
- var url_data = url.replace("__OFFSET__", offset);
- url_data = url_data.replace("__ITEM_ID__", item_id);
- $.getJSON(url_data, getMicroThumbsCallback);
-}
-
-function organizeToggleChildren(event) {
- var id = $(this).attr("ref");
- var span_children = $("#gOrganizeChildren-" + id);
- if ($(this).hasClass("ui-icon-plus")) {
- $(this).removeClass("ui-icon-plus");
- $(this).addClass("ui-icon-minus");
- $("#gOrganizeChildren-" + id).removeClass("gBranchCollapsed");
- } else {
- $(this).removeClass("ui-icon-minus");
- $(this).addClass("ui-icon-plus");
- $("#gOrganizeChildren-" + id).addClass("gBranchCollapsed");
- }
- event.preventDefault();
-}
-
-function organizeOpenFolder(event) {
- var selected = $(".gBranchSelected");
- if ($(selected).attr("id") != $(this).attr("id")) {
- $(selected).removeClass("gBranchSelected");
- $(this).addClass("gBranchSelected");
- item_id = $(this).attr("ref");
- $("#gMicroThumbGrid").empty();
- retrieveMicroThumbs();
- }
- event.preventDefault();
-}
-
-function get_organize_url(uri, parms) {
- var url = rearrangeUrl;
- url = url.replace("__URI__", uri);
- url = url.replace("__ITEM_ID__", !parms.item_id ? "" : parms.item_id);
- url += (parms.item_id && parms.task_id) ? "/" : "";
- url = url.replace("__TASK_ID__", !parms.task_id ? "" : parms.task_id);
- return url;
-}
-
-/**
- * Set the enabled/disabled state of the buttons. The album cover is only enabled if
- * there is only 1 image selected
- */
-function setDrawerButtonState() {
- $("#gOrganizeFormThumbStack").empty();
- $("#gOrganizeEditForm").empty();
- var selectedCount = $("#gMicroThumbGrid li.ui-selected").length;
- if (selectedCount) {
- $("#gOrganizeEditHandleButtonsLeft a").removeAttr("disabled");
- $("#gOrganizeEditHandleButtonsLeft a").removeClass("ui-state-disabled");
-
- if (selectedCount > 1) {
- $("#gOrganizeEditHandleButtonsLeft a[ref='albumCover']").attr("disabled", true);
- $("#gOrganizeEditHandleButtonsLeft a[ref='albumCover']").addClass("ui-state-disabled");
- }
- setSelectedThumbs();
- } else {
- if ($("#gOrganizeEditDrawerPanel::visible").length) {
- $("#gOrganizeEditHandleButtonsLeft a[ref='close']").trigger("click");
- }
- $("#gOrganizeEditHandleButtonsLeft a").attr("disabled", true);
- $("#gOrganizeEditHandleButtonsLeft a").addClass("ui-state-disabled");
- }
-}
-
-function setSelectedThumbs() {
- if (!$("#gOrganizeEditDrawerPanel::visible").length) {
- return;
- }
- var position = $("#gOrganizeFormThumbStack").position();
- var beginLeft = position.left;
- var beginTop = 50;
- var zindex = 2000;
- $("li.ui-selected").each(function(i) {
- var clone = $(this).clone();
- $(clone).attr("id", "edit_clone_" + $(this).attr("ref"));
- $("#gOrganizeFormThumbStack").append(clone);
- $(clone).removeClass("ui-draggable");
- $(clone).removeClass("ui-selected");
- $(clone).css("margin-top", beginTop);
- $(clone).css("left", beginLeft);
- $(clone).css("z-index", zindex--);
+ $("#gDialog").bind("dialogclose", function(event, ui) {
+ window.location.reload();
+ });
- if (i < 9) {
- beginTop -= 5;
- beginLeft += 5;
- }
- });
-}
+ $("#gDialog #gMicroThumbDone").click(function(event) {
+ $("#gDialog").dialog("close");
+ });
-function getEditForm() {
- if ($("#gMicroThumbGrid li.ui-selected").length > 0) {
- var postData = serializeItemIds("li.ui-selected");
- var url_data = get_organize_url("organize/editForm", {}) + postData;
- $.get(url_data, function(data, textStatus) {
- $("#gOrganizeEditForm").tabs("destroy");
- $("#gOrganizeEditForm").html(data);
- if ($("#gOrganizeEditForm ul li").length) {
- $("#gOrganizeEditForm").tabs();
- $("#gOrganizeEditHandleButtonsMiddle a").removeAttr("disabled");
- $("#gOrganizeEditHandleButtonsMiddle a").removeClass("ui-state-disabled");
- } else {
- $("#gOrganizeEditHandleButtonsMiddle a").attr("disabled", true);
- $("#gOrganizeEditHandleButtonsMiddle a").addClass("ui-state-disabled");
+ $.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").click($.organize.show_album);
+ $(".gOrganizeBranch .ui-icon").click($.organize.collapse_or_expand_tree);
+ },
+
+ /**
+ * Open or close a branch.
+ */
+ collapse_or_expand_tree: function(event) {
+ event.stopPropagation();
+ $(event.currentTarget).toggleClass("ui-icon-minus").toggleClass("ui-icon-plus");
+ $("#gOrganizeChildren-" + $(event.currentTarget).attr("ref")).toggle();
+ },
+
+ /**
+ * When the text of a selection is clicked, then show that albums contents
+ */
+ show_album: function(event) {
+ event.preventDefault();
+ if ($(event.currentTarget).hasClass("gBranchSelected")) {
+ return;
}
- });
- } else {
- $("#gOrganizeEditForm").tabs("destroy");
- $("#gOrganizeEditForm").empty();
- }
-}
-
-function serializeItemIds(selector) {
- var postData = "";
- $(selector).each(function(i) {
- postData += "&item[]=" + $(this).attr("ref");
- });
-
- return postData;
-}
-
-function submitCurrentForm(event) {
- console.log("submitCurrentForm");
- return false;
-}
-
-function resetCurrentForm(event) {
- console.log("resetCurrentForm");
- return false;
-}
-
-function createProgressDialog(title) {
- $("body").append("<div id='gOrganizeProgressDialog'>" +
- "<div class='gProgressBar'></div>" +
- "<button id='gOrganizeTaskPause' class='ui-state-default ui-corner-all'>" + PAUSE_BUTTON + "</button>" +
- "<button id='gOrganizeTaskResume' class='ui-state-default ui-corner-all' style='display: none'>" + RESUME_BUTTON + "</button>" +
- "<button id='gOrganizeTaskCancel' class='ui-state-default ui-corner-all' style='display: none'>" + CANCEL_BUTTON + "</button>" +
- "</div>");
- $("#gOrganizeProgressDialog").dialog({
- autoOpen: true,
- autoResize: false,
- modal: true,
- resizable: false,
- title: title
- });
-
- $(".gProgressBar").progressbar();
- $("#gOrganizeTaskPause").click(function(event) {
- paused = true;
- $("#gOrganizeTaskPause").hide();
- $("#gOrganizeTaskResume").show();
- $("#gOrganizeTaskCancel").show();
- $("#gMessage").empty().append(task.pauseMsg);
- });
- $("#gOrganizeTaskResume").click(function(event) {
- $("#gOrganizeTaskPause").show();
- $("#gOrganizeTaskResume").hide();
- $("#gOrganizeTaskCancel").hide();
- $("#gMessage").empty().append(task.resumeMsg);
- operationCallback();
- //startRearrangeCallback();
- });
- $("#gOrganizeTaskCancel").click(function(event) {
- $("#gOrganizeTaskPause").show();
- $("#gOrganizeTaskResume").hide();
- $("#gOrganizeTaskCancel").hide();
-
- $.ajax({async: false,
- success: function(data, textStatus) {
- task = null;
- paused = false;
- transitItems = [];
- $("#gMessage").empty().append("<div class='gWarning'>" + data.task.status + "</div>");
- $("#gOrganizeProgressDialog").dialog("destroy").remove();
- },
- dataType: "json",
- type: "POST",
- url: get_organize_url("organize/cancelTask", {task_id: task.id})
- });
- });
-}
-
-// **************************************************************************
-// Functions that should probably be in a gallery namespace
-function getViewportSize() {
- return {
- width : function() {
- return window.innerWidth
- || document.documentElement && document.documentElement.clientWidth
- || document.body.clientWidth;
- },
- height : function() {
- return window.innerHeight
- || document.documentElement && document.documentElement.clientHeight
- || document.body.clientHeight;
+ var parent = $(event.currentTarget).parents(".gOrganizeBranch");
+ if ($(parent).hasClass("gViewOnly")) {
+ return;
}
+ $("#gMicroThumbPanel").selectable("destroy");
+ var id = $(event.currentTarget).attr("ref");
+ $(".gBranchSelected").removeClass("gBranchSelected");
+ $("#gOrganizeBranch-" + id).addClass("gBranchSelected");
+ var url = $("#gMicroThumbPanel").attr("ref").replace("__ITEM_ID__", id).replace("__OFFSET__", 0);
+ $.get(url, function(data) {
+ $("#gMicroThumbGrid").html(data);
+ $.organize.set_handlers();
+ });
+ }
};
-}
-
-function displayAjaxError(error) {
- $("body").append("<div id=\"gAjaxError\" title=\"" + FATAL_ERROR + "\">" + error + "</div>");
-
- $("#gAjaxError").dialog({
- autoOpen: true,
- autoResize: false,
- modal: true,
- resizable: true,
- width: 610,
- height: $("#gDialog").height()
- });
-}
+})(jQuery);
diff --git a/modules/organize/js/organize_init.js b/modules/organize/js/organize_init.js
deleted file mode 100644
index 30bc78dd..00000000
--- a/modules/organize/js/organize_init.js
+++ /dev/null
@@ -1,29 +0,0 @@
-$("document").ready(function() {
- $("#gOrganizeLink").click(function(event) {
- event.preventDefault();
- var href = event.target.href;
-
- $("body").append('<div id="gDialog"></div>');
-
- $("#gDialog").dialog({
- autoOpen: false,
- autoResize: false,
- modal: true,
- resizable: false,
- close: function () {
- $("#gDialog").trigger("organize_close");
- $("#gDialog").dialog("destroy").remove();
- },
- zIndex: 75
- });
-
- //$.gallery_show_loading("#gDialog");
-
- $.get(href, function(data) {
- $("#gDialog").html(data);
- });
- return false;
- });
-});
-
-