summaryrefslogtreecommitdiff
path: root/modules/organize/controllers/organize.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/organize/controllers/organize.php')
-rw-r--r--modules/organize/controllers/organize.php157
1 files changed, 100 insertions, 57 deletions
diff --git a/modules/organize/controllers/organize.php b/modules/organize/controllers/organize.php
index 62a23444..a46b3a02 100644
--- a/modules/organize/controllers/organize.php
+++ b/modules/organize/controllers/organize.php
@@ -84,6 +84,35 @@ class Organize_Controller extends Controller {
return $v->__toString();
}
+ function startTask($operation, $id) {
+ access::verify_csrf();
+ $items = $this->input->post("item");
+
+ $item = ORM::factory("item", $id);
+
+ $definition = $this->_getOperationDefinition($item, $operation);
+
+ $task_def = Task_Definition::factory()
+ ->callback("organize_task::run")
+ ->description($definition["description"])
+ ->name($definition["name"]);
+ $task = task::create($task_def, array("items" => $items, "position" => 0, "target" => $id,
+ "type" => $definition["type"],
+ "batch" => ceil(count($items) * .1)));
+ // @todo If there is only one item then call task_run($task->id); Maybe even change js so
+ // we can call finish as well.
+ batch::start();
+ print json_encode(array("result" => "started",
+ "runningMsg" => $definition["runningMsg"],
+ "pauseMsg" => "<div class=\"gWarning\">{$definition['pauseMsg']}</div>",
+ "resumeMsg" => "<div class=\"gWarning\">{$definition['resumeMsg']}</div>",
+ "task" => array("id" => $task->id,
+ "percent_complete" => $task->percent_complete,
+ "type" => $task->get("type"),
+ "status" => $task->status,
+ "state" => $task->state,
+ "done" => $task->done)));
+ }
function runTask($task_id) {
access::verify_csrf();
@@ -91,12 +120,13 @@ class Organize_Controller extends Controller {
$task = task::run($task_id);
print json_encode(array("result" => $task->done ? $task->state : "in_progress",
- "task" => array(
- "id" => $task->id,
- "percent_complete" => $task->percent_complete,
- "status" => $task->status,
- "state" => $task->state,
- "done" => $task->done)));
+ "task" => array("id" => $task->id,
+ "percent_complete" => $task->percent_complete,
+ "type" => $task->get("type"),
+ "reload" => $task->get("refresh"),
+ "status" => $task->status,
+ "state" => $task->state,
+ "done" => $task->done)));
}
function finishTask($task_id) {
@@ -107,9 +137,11 @@ class Organize_Controller extends Controller {
if ($task->done) {
$item = ORM::factory("item", (int)$task->get("target"));
$type = $task->get("type");
- if ($type == "moveTo") {
+ switch ($type) {
+ case "move":
$task->status = t("Move to '%album' completed", array("album" => $item->title));
- } else if ($type == "rearrange") {
+ break;
+ case "rearrange":
try {
$item->sort_column = "weight";
$item->save();
@@ -118,6 +150,11 @@ class Organize_Controller extends Controller {
$task->state = "error";
$task->status = $e->getMessage();
}
+ break;
+ case "rotateCcw":
+ case "rotateCw":
+ $task->status = t("Rotation completed");
+ break;
}
$task->save();
}
@@ -141,10 +178,16 @@ class Organize_Controller extends Controller {
$task->done = 1;
$task->state = "cancelled";
$type = $task->get("type");
- if ($type == "moveTo") {
+ switch ($type) {
+ case "move":
$task->status = t("Move to album was cancelled prior to completion");
- } else if ($type == "rearrange") {
- $task->status = t("Rearrange album was cancelled prior to completion");
+ break;
+ case "rearrange":
+ $task->status = t("Rearrange album was cancelled prior to completion");
+ case "rotateCcw":
+ case "rotateCw":
+ $task->status = t("Rotation was cancelled prior to completion");
+ break;
}
$task->save();
}
@@ -159,51 +202,51 @@ class Organize_Controller extends Controller {
"done" => $task->done)));
}
- function moveStart($id) {
- access::verify_csrf();
- $items = $this->input->post("item");
-
- $item = ORM::factory("item", $id);
-
- $task_def = Task_Definition::factory()
- ->callback("organize_task::move")
- ->description(t("Move albums and photos to '%name'", array("name" => $item->title)))
- ->name(t("Move to '%name'", array("name" => $item->title)));
- $task = task::create($task_def, array("items" => $items, "position" => 0, "target" => $id,
- "type" => "moveTo",
- "batch" => ceil(count($items) * .1)));
-
- batch::start();
- print json_encode(array("result" => "started",
- "task" => array(
- "id" => $task->id,
- "percent_complete" => $task->percent_complete,
- "status" => $task->status,
- "state" => $task->state,
- "done" => $task->done)));
- }
-
- function rearrangeStart($id) {
- access::verify_csrf();
- $items = $this->input->post("item");
-
- $item = ORM::factory("item", $id);
-
- $task_def = Task_Definition::factory()
- ->callback("organize_task::rearrange")
- ->description(t("Rearrange the order of albums and photos"))
- ->name(t("Rearrange: %name", array("name" => $item->title)));
- $task = task::create($task_def, array("items" => $items, "position" => 0, "target" => $id,
- "type" => "rearrange",
- "batch" => ceil(count($items) * .1)));
-
- batch::start();
- print json_encode(array("result" => "started",
- "task" => array(
- "id" => $task->id,
- "percent_complete" => $task->percent_complete,
- "status" => $task->status,
- "state" => $task->state,
- "done" => $task->done)));
+ private function _getOperationDefinition($item, $operation) {
+ switch ($operation) {
+ case "move":
+ return array("description" =>
+ t("Move albums and photos to '%name'", array("name" => $item->title)),
+ "name" => t("Move to '%name'", array("name" => $item->title)),
+ "type" => "move",
+ "runningMsg" => t("Move in progress"),
+ "pauseMsg" => t("The move operation was paused"),
+ "resumeMsg" => t("The move operation was resumed"));
+ break;
+ case "rearrange":
+ return array("description" => t("Rearrange the order of albums and photos"),
+ "name" => t("Rearrange: %name", array("name" => $item->title)),
+ "type" => "rearrange",
+ "runningMsg" => t("Rearrange in progress"),
+ "pauseMsg" => t("The rearrange operation was paused"),
+ "resumeMsg" => t("The rearrange operation was resumed"));
+ break;
+ case "rotateCcw":
+ return array("description" => t("Rotate the selected photos counter clockwise"),
+ "name" => t("Rotate images in %name", array("name" => $item->title)),
+ "type" => "rotateCcw",
+ "runningMsg" => t("Rotate Counter Clockwise in progress"),
+ "pauseMsg" => t("The rotate operation was paused"),
+ "resumeMsg" => t("The rotate operation was resumed"));
+ break;
+ case "rotateCw":
+ return array("description" => t("Rotate the selected photos clockwise"),
+ "name" => t("Rotate images in %name", array("name" => $item->title)),
+ "type" => "rotateCw",
+ "runningMsg" => t("Rotate Clockwise in progress"),
+ "pauseMsg" => t("The rotate operation was paused"),
+ "resumeMsg" => t("The rotate operation was resumed"));
+ break;
+ case "delete":
+ return array("description" => t("Delete selected photos and albums"),
+ "name" => t("`Delete images in %name", array("name" => $item->title)),
+ "type" => "delete",
+ "runningMsg" => t("Delete images in progress"),
+ "pauseMsg" => t("The delete operation was paused"),
+ "resumeMsg" => t("The delete operation was resumed"));
+ break;
+ default:
+ throw new Exception("Operation '$operation' is not implmented");
+ }
}
} \ No newline at end of file