summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/organize/controllers/organize.php32
-rw-r--r--modules/organize/css/organize.css15
-rw-r--r--modules/organize/js/organize.js104
-rw-r--r--modules/organize/views/organize.html.php19
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>