summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorTim Almdal <tnalmdal@shaw.ca>2009-02-28 20:12:54 +0000
committerTim Almdal <tnalmdal@shaw.ca>2009-02-28 20:12:54 +0000
commitbed1bb48f33c1c20decb6b592b1d713f5c9fb48e (patch)
tree24ede306b64a9cc56634680bb504b1092ccb6145 /modules
parentc04ff8e02f01691dc2e325efc523e43f3aebaf95 (diff)
The scaffolding, simple_uploader and local_import now call two new
events: start_add_batch and end_add_batch. The parameter is a batch id which is generated on the first add request. The protocol is call the add_photo as many times as required and then call finish when done. Also renamed the add method in local_import to add_photo so it is consistent with simple_uploader
Diffstat (limited to 'modules')
-rw-r--r--modules/local_import/controllers/local_import.php18
-rw-r--r--modules/local_import/js/local_import.js14
2 files changed, 27 insertions, 5 deletions
diff --git a/modules/local_import/controllers/local_import.php b/modules/local_import/controllers/local_import.php
index 138b61b1..2b8248a4 100644
--- a/modules/local_import/controllers/local_import.php
+++ b/modules/local_import/controllers/local_import.php
@@ -25,7 +25,7 @@ class Local_Import_Controller extends Controller {
access::can("local_import", $item);
$view = new View("local_import_tree_dialog.html");
- $view->action = url::site("local_import/add/$id");
+ $view->action = url::site("local_import/add_photo/$id");
$view->hidden = array("csrf" => access::csrf_token(), "base_url" => url::base(true));
$view->parents = $item->parents();
$view->album_title = $item->title;
@@ -55,7 +55,7 @@ class Local_Import_Controller extends Controller {
print $tree;
}
- function add($id) {
+ function add_photo($id) {
access::verify_csrf();
$parent = ORM::factory("item", $id);
@@ -65,6 +65,12 @@ class Local_Import_Controller extends Controller {
}
$path = $this->input->post("path");
+ $batch_id = Session::instance()->get("batch_id");
+ if (empty($batch_id)) {
+ $batch_id = mt_rand();
+ module::event("start_add_batch", $batch_id);
+ Session::instance()->set("batch_id", $batch_id);
+ }
$source_path = $path[0];
for ($i = 1; $i < count($path); $i++) { // skip the first path
@@ -90,6 +96,14 @@ class Local_Import_Controller extends Controller {
}
}
+ public function finish() {
+ $batch_id = Session::instance()->get_once("batch_id");
+ if (!empty($batch_id)) {
+ module::event("end_add_batch", $batch_id);
+ }
+ print json_encode(array("result" => "success"));
+ }
+
private function _get_children($path) {
$file_list = array();
$files = scandir($path);
diff --git a/modules/local_import/js/local_import.js b/modules/local_import/js/local_import.js
index 66952d63..0fd37b00 100644
--- a/modules/local_import/js/local_import.js
+++ b/modules/local_import/js/local_import.js
@@ -45,7 +45,7 @@ function load_children(icon, callback) {
var base_url = $("#gLocalImport form :hidden[name='base_url']")[0].value;
var parms = "&csrf=" + csrf;
var parents = $(icon).parents("li");
- for (i=parents.length - 1; i >= 0; i--) {
+ for (var i=parents.length - 1; i >= 0; i--) {
parms += "&path[]=" + $(parents[i]).children("span").attr("ref");
}
$.ajax({async: false,
@@ -69,7 +69,15 @@ function do_import(submit, event) {
$.each(check_list, function () {
process_checkbox(this);
});
- document.location.reload();
+ var base_url = $("#gLocalImport form :hidden[name='base_url']")[0].value;
+ $.ajax({async: false,
+ success: function(data, textStatus) {
+ document.location.reload();
+ },
+ dataType: "json",
+ type: "POST",
+ url: base_url + "local_import/finish"
+ });
return false;
}
@@ -77,7 +85,7 @@ function process_checkbox(checkbox) {
var parents = $(checkbox).parents("li");
var csrf = $("#gLocalImport form :hidden[name='csrf']")[0].value;
var parms = "&csrf=" + csrf;
- for (i=parents.length - 1; i > 0; i--) {
+ for (var i=parents.length - 1; i > 0; i--) {
parms += "&path[]=" + $(parents[i]).children("span").attr("ref");
}
parms += "&path[]=" + $(checkbox).val();