diff options
Diffstat (limited to 'modules/organize/controllers/organize.php')
-rw-r--r-- | modules/organize/controllers/organize.php | 118 |
1 files changed, 81 insertions, 37 deletions
diff --git a/modules/organize/controllers/organize.php b/modules/organize/controllers/organize.php index bb74f23a..129fb8bb 100644 --- a/modules/organize/controllers/organize.php +++ b/modules/organize/controllers/organize.php @@ -84,30 +84,8 @@ class Organize_Controller extends Controller { return $v->__toString(); } - 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, "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, - "done" => $task->done))); - } - function rearrangeRun($id, $task_id) { - Kohana::log("debug", "rearrangeRun($id, $task_id)"); + function runTask($task_id) { access::verify_csrf(); $task = task::run($task_id); @@ -117,38 +95,104 @@ class Organize_Controller extends Controller { "id" => $task->id, "percent_complete" => $task->percent_complete, "status" => $task->status, + "state" => $task->state, "done" => $task->done))); } - function rearrangeFinish($id, $task_id) { - Kohana::log("debug", "rearrangeFinish($id, $task_id)"); + function finishTask($task_id) { access::verify_csrf(); $task = ORM::factory("task", $task_id); if ($task->done) { - try { - $item = ORM::factory("item", $id); - $item->sort_column = "weight"; - $item->save(); - $task->status = t("Rearrange for '%album' completed", array("album" => $item->title)); - } catch (Exception $e) { - $task->state = "error"; - $task->status = $e->getMessage(); + switch ($task->context["type"]) { + case "moveTo": + $task->status = t("Move to '%album' completed", array("album" => $item->title)); + break; + case "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)); + } catch (Exception $e) { + $task->state = "error"; + $task->status = $e->getMessage(); + } + break; } + $task->save(); } - + batch::stop(); print json_encode(array("result" => "success")); } - - function rearrangePause($id, $task_id) { + + function cancelTask($task_id) { access::verify_csrf(); $task = ORM::factory("task", $task_id); - message::warning(t("Rearrange album was cancelled prior to completion")); + if ($task->done) { + switch ($task->context["type"]) { + case "moveTo": + message::warning(t("Move to album was cancelled prior to completion")); + break; + case "rearrange": + message::warning(t("Rearrange album was cancelled prior to completion")); + break; + } + } + batch::stop(); print json_encode(array("result" => "success")); } + + 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))); + } }
\ No newline at end of file |