diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/organize/controllers/organize.php | 32 | ||||
-rw-r--r-- | modules/organize/css/organize.css | 15 | ||||
-rw-r--r-- | modules/organize/js/organize.js | 104 | ||||
-rw-r--r-- | modules/organize/views/organize.html.php | 19 |
4 files changed, 116 insertions, 54 deletions
diff --git a/modules/organize/controllers/organize.php b/modules/organize/controllers/organize.php index 48d2cd2c..89315323 100644 --- a/modules/organize/controllers/organize.php +++ b/modules/organize/controllers/organize.php @@ -105,11 +105,12 @@ class Organize_Controller extends Controller { $task = ORM::factory("task", $task_id); if ($task->done) { - if ($task->context["type"] == "moveTo") { + $item = ORM::factory("item", (int)$task->get("target")); + $type = $task->get("type"); + if ($type == "moveTo") { $task->status = t("Move to '%album' completed", array("album" => $item->title)); - } else if ($task->context["type"] == "rearrange") { + } else if ($type == "rearrange") { try { - $item = ORM::factory("item", $task->context["target"]); $item->sort_column = "weight"; $item->save(); $task->status = t("Rearrange for '%album' completed", array("album" => $item->title)); @@ -119,10 +120,16 @@ class Organize_Controller extends Controller { } } $task->save(); - } + } batch::stop(); - print json_encode(array("result" => "success")); + print json_encode(array("result" => "success", + "task" => array( + "id" => $task->id, + "percent_complete" => $task->percent_complete, + "status" => $task->status, + "state" => $task->state, + "done" => $task->done))); } function cancelTask($task_id) { @@ -133,16 +140,23 @@ class Organize_Controller extends Controller { if (!$task->done) { $task->done = 1; $task->state = "cancelled"; - if ($task->context["type"] == "moveTo") { + $type = $task->get("type"); + if ($type == "moveTo") { $task->status = t("Move to album was cancelled prior to completion"); - } else if ($task->context["type"] == "rearrange") { + } else if ($type == "rearrange") { $task->status = t("Rearrange album was cancelled prior to completion"); } $task->save(); - } + } batch::stop(); - print json_encode(array("result" => "success")); + print json_encode(array("result" => "success", + "task" => array( + "id" => $task->id, + "percent_complete" => $task->percent_complete, + "status" => $task->status, + "state" => $task->state, + "done" => $task->done))); } function moveStart($id) { diff --git a/modules/organize/css/organize.css b/modules/organize/css/organize.css index c29f334f..0a66d0ad 100644 --- a/modules/organize/css/organize.css +++ b/modules/organize/css/organize.css @@ -1,5 +1,20 @@ /* @todo move to theme css */ /******************************************************************* + * Dialog wide stylings + */ +#gOrganizeStatus { + height: 6em; + border: 1px solid #999; + margin-top: .5em; + margin-bottom: .5em; + overflow-y: auto; +} + +#gOrganizeProgressDialog { + text-align: left; +} + +/******************************************************************* * Album Tree styling */ #gOrganizeTreeContainer { diff --git a/modules/organize/js/organize.js b/modules/organize/js/organize.js index ac3984d5..1eac785b 100644 --- a/modules/organize/js/organize.js +++ b/modules/organize/js/organize.js @@ -112,7 +112,7 @@ var treeDroppable = { var moveItems = ""; var targetItemId = $(this).attr("ref"); if ($(this).hasClass("gBranchSelected")) { - // @todo Error message for moving onto self + $("#gOrganizeStatus").append(INVALID_DROP_TARGET); ui.draggable.trigger("stop", event); return false; } @@ -122,7 +122,7 @@ var treeDroppable = { okToMove &= targetItemId != $(this).attr("ref"); }); if (!okToMove) { - // @todo Error message for moving onto self + $("#gOrganizeStatus").append(INVALID_DROP_TARGET); ui.draggable.trigger("stop", event); return false; } @@ -223,9 +223,10 @@ var getMicroThumbsCallback = function(json, textStatus) { // as they are basically the same. var startMoveCallback = function (data, textStatus) { if (!paused) { - $("#gDialog #ft").css("visibility", "visible"); - $(".gProgressBar").progressbar("value", 0); + createProgressDialog(OPERATION_RUNNING); task = data.task; + task.pauseMsg = MOVE_PAUSED; + task.resumeMSg = MOVE_RESUMED; } $(".gMicroThumbContainer").draggable("disable"); var done = false; @@ -246,9 +247,12 @@ var startMoveCallback = function (data, textStatus) { }); } if (!paused) { - $("#gDialog #ft").css("visibility", "hidden"); + $("#gOrganizeProgressDialog").dialog("destroy").remove(); $.ajax({async: false, success: function(data, textStatus) { + task = null; + transitItems = []; + $("#gOrganizeStatus").append("<div class='gSuccess'>" + data.task.status + "</div>"); }, dataType: "json", type: "POST", @@ -260,9 +264,10 @@ var startMoveCallback = function (data, textStatus) { var startRearrangeCallback = function (data, textStatus) { if (!paused) { - $("#gDialog #ft").css("visibility", "visible"); - $(".gProgressBar").progressbar("value", 0); + createProgressDialog(OPERATION_RUNNING); task = data.task; + task.pauseMsg = REARRANGE_PAUSED; + task.resumeMsg = REARRANGE_RESUMED; } $(".gMicroThumbContainer").draggable("disable"); var done = false; @@ -283,9 +288,11 @@ var startRearrangeCallback = function (data, textStatus) { }); } if (!paused) { - $("#gDialog #ft").css("visibility", "hidden"); + $("#gOrganizeProgressDialog").dialog("destroy").remove(); $.ajax({async: false, success: function(data, textStatus) { + task = null; + $("#gOrganizeStatus").append("<div class='gSuccess'>" + data.task.status + "</div>"); }, dataType: "json", type: "POST", @@ -342,37 +349,6 @@ function organize_dialog_init() { $("#gMicroThumbPanel").droppable(thumbDroppable); $("#gMicroThumbGrid").selectable(selectable); - - $(".gProgressBar").progressbar(); - $("#gOrganizeTaskPause").click(function(event) { - paused = true; - $("#gOrganizeTaskPause").hide(); - $("#gOrganizeTaskResume").show(); - $("#gOrganizeTaskCancel").show(); - }); - $("#gOrganizeTaskResume").click(function(event) { - $("#gOrganizeTaskPause").show(); - $("#gOrganizeTaskResume").hide(); - $("#gOrganizeTaskCancel").hide(); - startRearrangeCallback(); - }); - $("#gOrganizeTaskCancel").click(function(event) { - $("#gDialog #ft").css("visibility", "hidden"); - $("#gOrganizeTaskPause").show(); - $("#gOrganizeTaskResume").hide(); - $("#gOrganizeTaskCancel").hide(); - // @todo reset the state (i.e pause, do ajax call pause to delete task) - $.ajax({async: false, - success: function(data, textStatus) { - task = null; - paused = false; - transitItems = []; - }, - dataType: "json", - type: "POST", - url: get_url("organize/cancelTask", {task_id: task.id}) - }); - }); } function retrieveMicroThumbs() { @@ -424,6 +400,56 @@ function get_url(uri, parms) { return url; } +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(); + $("#gOrganizeStatus").append(task.pauseMsg); + }); + $("#gOrganizeTaskResume").click(function(event) { + $("#gOrganizeTaskPause").show(); + $("#gOrganizeTaskResume").hide(); + $("#gOrganizeTaskCancel").hide(); + $("#gOrganizeStatus").append(task.resumeMsg); + startRearrangeCallback(); + }); + $("#gOrganizeTaskCancel").click(function(event) { + $("#gOrganizeTaskPause").show(); + $("#gOrganizeTaskResume").hide(); + $("#gOrganizeTaskCancel").hide(); + + $.ajax({async: false, + success: function(data, textStatus) { + task = null; + paused = false; + transitItems = []; + $("#gOrganizeStatus").append("<div class='gWarning'>" + data.task.status + "</div>"); + $("#gOrganizeProgressDialog").dialog("destroy").remove(); + }, + dataType: "json", + type: "POST", + url: get_url("organize/cancelTask", {task_id: task.id}) + }); + }); +} + // ************************************************************************** // Functions that should probably be in a gallery namespace function getViewportSize() { diff --git a/modules/organize/views/organize.html.php b/modules/organize/views/organize.html.php index 95bab1ea..493ad81a 100644 --- a/modules/organize/views/organize.html.php +++ b/modules/organize/views/organize.html.php @@ -2,7 +2,18 @@ <!-- ?= html::script("modules/organize/js/organize.js") ? --> <script> var FATAL_ERROR = "<?= t("Fatal Error") ?>"; + var PAUSE_BUTTON = "<?= t("Pause") ?>"; + var RESUME_BUTTON = "<?= t("Resume") ?>"; + var CANCEL_BUTTON = "<?= t("Cancel") ?>"; + var OPERATION_RUNNING = "<?= t("Operation in Progress") ?>"; + var INVALID_DROP_TARGET = "<div class=\"gError\"><?= t("Drop cancelled as it would result in a recursive move") ?></div>"; + var MOVE_PAUSED = "<div class=\"gWarning\"><?= t("The move operation was paused") ?></div>"; + var MOVE_RESUMED = "<div class=\"gWarning\"><?= t("The move operation was resumed") ?></div>"; + var REARRANGE_PAUSED = "<div class=\"gWarning\"><?= t("The rearrange operation was paused") ?></div>"; + var REARRANGE_RESUMED = "<div class=\"gWarning\"><?= t("The rearrange operation was resumed") ?></div>"; + var item_id = <?= $item->id ?>; + var csrf = "<?= $csrf ?>"; var rearrangeUrl = "<?= url::site("__URI__/__ITEM_ID____TASK_ID__?csrf=$csrf") ?>"; $("#doc3").ready(function() { @@ -33,11 +44,7 @@ <?= $album_tree ?> </div> </div> - <div id="ft" style="visibility: hidden"> - <a id="gOrganizeTaskPause" href="#" class="submit"><?= t("Pause") ?></a> - <a id="gOrganizeTaskResume" href="#" style="display: none" class="submit"><?= t("Resume") ?></a> - <a id="gOrganizeTaskCancel" href="#" style="display: none" class="submit"><?= t("Cancel") ?></a> - <div class="gProgressBar"> - </div> + <div id="ft"> + <div id="gOrganizeStatus"></div> </div> </div> |