diff options
author | Andy Staudacher <andy.st@gmail.com> | 2009-08-29 14:17:48 -0700 |
---|---|---|
committer | Andy Staudacher <andy.st@gmail.com> | 2009-08-29 14:17:48 -0700 |
commit | a5dfc81a8f7bef0305b62254252de6df23684199 (patch) | |
tree | 4851cb68abede6920208871449dedd2e939c1a16 /modules/organize/js/organize.js | |
parent | d5660d2d3ea6e8172272f1eb27e8071a1a42d87b (diff) | |
parent | a9fcec755a835e284465bafcc9aba9ec9c2f0f62 (diff) |
Merge commit 'upstream/master'
Conflicts:
modules/akismet/views/admin_akismet.html.php
modules/comment/helpers/comment_rss.php
modules/gallery/helpers/gallery_rss.php
modules/gallery/libraries/I18n.php
modules/gallery/views/permissions_browse.html.php
modules/gallery/views/simple_uploader.html.php
modules/info/views/info_block.html.php
modules/organize/controllers/organize.php
modules/organize/views/organize.html.php
modules/organize/views/organize_album.html.php
themes/default/views/album.html.php
themes/default/views/movie.html.php
themes/default/views/photo.html.php
Diffstat (limited to 'modules/organize/js/organize.js')
-rw-r--r-- | modules/organize/js/organize.js | 789 |
1 files changed, 189 insertions, 600 deletions
diff --git a/modules/organize/js/organize.js b/modules/organize/js/organize.js index f10cbcc9..04e14a2f 100644 --- a/modules/organize/js/organize.js +++ b/modules/organize/js/organize.js @@ -1,621 +1,210 @@ -/* - * @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) { + var before_or_after = $(".currentDropTarget").css("borderLeftStyle") == "solid" ? "before" : "after"; + $.organize.do_drop({ + url: rearrange_url + .replace("__TARGET_ID__", $(".currentDropTarget").attr("ref")) + .replace("__ALBUM_ID__", $(".currentDropTarget").attr("ref")) + .replace("__BEFORE__", before_or_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(); - } -}; - -// 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; - } - } -}; - -// 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"); - } - }, - 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")); - $.ajax({ - data: $(form).serialize(), - 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>"); - } - }, - 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; - } - 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}) - }); - 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(); + }, + + 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("__ALBUM_ID__", $(event.target).attr("ref")), + source: $(ui.helper).children("img") }); } - }, - 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); - //showLoading("#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--); + do_drop: function(options) { + $("#gMicroThumbPanel").selectable("destroy"); + var source_ids = []; + $(options.source).each(function(i) { + source_ids.push($(this).attr("ref")); + }); - if (i < 9) { - beginTop -= 5; - beginLeft += 5; - } - }); -} + if (source_ids.length) { + $.post(options.url, + { "source_ids[]": source_ids }, + function(data) { $.organize._refresh(data); }, + "json"); + } + }, -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"); + _refresh: function(data) { + if (data.tree) { + $("#gOrganizeAlbumTree").html(data.tree); } - }); - } else { - $("#gOrganizeEditForm").tabs("destroy"); - $("#gOrganizeEditForm").empty(); - } -} + if (data.grid) { + $("#gMicroThumbGrid").html(data.grid); + $("#gOrganizeSortColumn").attr("value", data.sort_column); + $("#gOrganizeSortOrder").attr("value", data.sort_order); + } + $.organize.set_handlers(); + }, + + 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"); + } + }, + + /** + * 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); + }); -function serializeItemIds(selector) { - var postData = ""; - $(selector).each(function(i) { - postData += "&item[]=" + $(this).attr("ref"); - }); + $("#gDialog").bind("dialogclose", function(event, ui) { + window.location.reload(); + }); - return postData; -} + $("#gDialog #gOrganizeClose").click(function(event) { + $("#gDialog").dialog("close"); + }); -function submitCurrentForm(event) { - console.log("submitCurrentForm"); - return false; -} + $("#gOrganizeSortColumn,#gOrganizeSortOrder").change(function(event) { + $.organize.resort($("#gOrganizeSortColumn").attr("value"), $("#gOrganizeSortOrder").attr("value")); + }); -function resetCurrentForm(event) { - console.log("resetCurrentForm"); - return false; -} + $.organize.set_handlers(); + }, -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 - }); + set_handlers: function() { + $("#gMicroThumbPanel").selectable({filter: ".gMicroThumbGridCell"}); + $("#gMicroThumbPanel").droppable($.organize.content_droppable); - $(".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(); + $(".gMicroThumbGridCell").draggable($.organize.micro_thumb_draggable); + $(".gMicroThumbGridCell").mousemove($.organize.mouse_move_handler); + $(".gOrganizeAlbum").droppable($.organize.branch_droppable); + $(".gAlbumText").click($.organize.show_album); + }, - $.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; + /** + * When the text of a selection is clicked, then show that albums contents + */ + show_album: function(event) { + event.preventDefault(); + if ($(event.currentTarget).hasClass("selected")) { + return; } + var parent = $(event.currentTarget).parents(".gOrganizeBranch"); + if ($(parent).hasClass("gViewOnly")) { + return; + } + $("#gMicroThumbPanel").selectable("destroy"); + var id = $(event.currentTarget).attr("ref"); + $("#gOrganizeAlbumTree .selected").removeClass("selected"); + $(".gAlbumText[ref=" + id + "]").addClass("selected"); + var url = $("#gMicroThumbPanel").attr("ref").replace("__ITEM_ID__", id).replace("__OFFSET__", 0); + $.get(url, {}, + function(data) { + $("#gMicroThumbGrid").html(data.grid); + $("#gOrganizeSortColumn").attr("value", data.sort_column); + $("#gOrganizeSortOrder").attr("value", data.sort_order); + $.organize.set_handlers(); + }, + "json"); + }, + + /** + * Change the sort order. + */ + resort: function(column, dir) { + var url = sort_order_url + .replace("__ALBUM_ID__", $("#gOrganizeAlbumTree .selected").attr("ref")) + .replace("__COL__", column) + .replace("__DIR__", dir); + $.get(url, {}, + function(data) { + $("#gMicroThumbGrid").html(data.grid); + $("#gOrganizeSortColumn").attr("value", data.sort_column); + $("#gOrganizeSortOrder").attr("value", data.sort_order); + $.organize.set_handlers(); + }, + "json"); + } }; -} - -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); |