summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Almdal <tnalmdal@shaw.ca>2009-07-10 10:07:33 -0700
committerTim Almdal <tnalmdal@shaw.ca>2009-07-10 10:07:33 -0700
commitacf920fc7ed1a9d1d69bd12bdfa136d4bb5af0d3 (patch)
tree5a945fceb217f3c583f7573fea86cce36c1b4d67
parent4f24a5f5930472fa23265228e5d7a6605b74ade2 (diff)
parent7c993387dadeb721f4c74185fc5ee0e376c4300b (diff)
Merge branch 'master' of git@github.com:gallery/gallery3
-rw-r--r--modules/digibug/helpers/digibug_menu.php13
-rw-r--r--modules/gallery/helpers/gallery_menu.php3
-rw-r--r--modules/notification/views/item_added.html.php2
-rw-r--r--modules/server_add/controllers/server_add.php74
-rw-r--r--modules/server_add/js/server_add.js4
-rw-r--r--modules/server_add/views/server_add_tree.html.php6
-rw-r--r--modules/server_add/views/server_add_tree_dialog.html.php15
7 files changed, 80 insertions, 37 deletions
diff --git a/modules/digibug/helpers/digibug_menu.php b/modules/digibug/helpers/digibug_menu.php
index f1d4fc1d..c95cada2 100644
--- a/modules/digibug/helpers/digibug_menu.php
+++ b/modules/digibug/helpers/digibug_menu.php
@@ -38,12 +38,13 @@ class digibug_menu {
static function thumb($menu, $theme, $item) {
if ($item->type == "photo" && access::can("view_full", $item)) {
- $menu->append(
- Menu::factory("link")
- ->id("digibug")
- ->label(t("Print with Digibug"))
- ->url(url::site("digibug/print_photo/$item->id?csrf=$theme->csrf"))
- ->css_id("gDigibugLink"));
+ $menu->get("options_menu")
+ ->append(
+ Menu::factory("link")
+ ->id("digibug")
+ ->label(t("Print with Digibug"))
+ ->url(url::site("digibug/print_photo/$item->id?csrf=$theme->csrf"))
+ ->css_id("gDigibugLink"));
}
}
}
diff --git a/modules/gallery/helpers/gallery_menu.php b/modules/gallery/helpers/gallery_menu.php
index 1f1e1ce2..bffb7696 100644
--- a/modules/gallery/helpers/gallery_menu.php
+++ b/modules/gallery/helpers/gallery_menu.php
@@ -95,6 +95,9 @@ class gallery_menu_Core {
}
static function thumb($menu, $theme, $item) {
+ $menu->append(Menu::factory("submenu")
+ ->id("options_menu")
+ ->label(t("Options")));
}
static function photo($menu, $theme) {
diff --git a/modules/notification/views/item_added.html.php b/modules/notification/views/item_added.html.php
index 87ea90fa..86724927 100644
--- a/modules/notification/views/item_added.html.php
+++ b/modules/notification/views/item_added.html.php
@@ -8,7 +8,7 @@
<table>
<tr>
<td><?= t("Title:") ?></td>
- <td><?= p::purifys($item->title) ?></td>
+ <td><?= p::purify($item->title) ?></td>
</tr>
<tr>
<td><?= t("Url:") ?></td>
diff --git a/modules/server_add/controllers/server_add.php b/modules/server_add/controllers/server_add.php
index 288e6342..08e01858 100644
--- a/modules/server_add/controllers/server_add.php
+++ b/modules/server_add/controllers/server_add.php
@@ -21,7 +21,7 @@ class Server_Add_Controller extends Admin_Controller {
public function browse($id) {
$paths = unserialize(module::get_var("server_add", "authorized_paths"));
foreach (array_keys($paths) as $path) {
- $files[$path] = basename($path);
+ $files[] = $path;
}
$item = ORM::factory("item", $id);
@@ -54,7 +54,7 @@ class Server_Add_Controller extends Admin_Controller {
}
}
- $tree->files[$file] = basename($file);
+ $tree->files[] = $file;
}
print $tree;
}
@@ -86,6 +86,7 @@ class Server_Add_Controller extends Admin_Controller {
print json_encode(
array("result" => "started",
+ "status" => $task->status,
"url" => url::site("server_add/run/$task->id?csrf=" . access::csrf_token())));
}
@@ -99,6 +100,7 @@ class Server_Add_Controller extends Admin_Controller {
$task = task::run($task_id);
print json_encode(array("done" => $task->done,
+ "status" => $task->status,
"percent_complete" => $task->percent_complete));
}
@@ -118,6 +120,7 @@ class Server_Add_Controller extends Admin_Controller {
$task->set("mode", "build-file-list");
$task->set("queue", array_keys($selections));
$task->percent_complete = 0;
+ $task->status = t("Starting up");
batch::start();
break;
@@ -126,17 +129,28 @@ class Server_Add_Controller extends Admin_Controller {
// Don't use an iterator here because we can't get enough control over it when we're dealing
// with a deep hierarchy and we don't want to go over our time quota.
$queue = $task->get("queue");
- Kohana::log("alert",print_r($queue,1));
while ($queue && microtime(true) - $start < 0.5) {
$file = array_shift($queue);
- $entry = ORM::factory("server_add_file");
- $entry->task_id = $task->id;
- $entry->file = $file;
- $entry->save();
-
if (is_dir($file)) {
- $queue = array_merge(
- $queue, empty($selections[$file]) ? glob("$file/*") : $selections[$file]);
+ $entry = ORM::factory("server_add_file");
+ $entry->task_id = $task->id;
+ $entry->file = $file;
+ $entry->save();
+
+ $children = empty($selections[$file]) ? glob("$file/*") : $selections[$file];
+ } else {
+ $children = array($file);
+ }
+
+ foreach ($children as $child) {
+ $entry = ORM::factory("server_add_file");
+ $entry->task_id = $task->id;
+ $entry->file = $child;
+ $entry->save();
+
+ if (is_dir($child)) {
+ $queue[] = $child;
+ }
}
}
// We have no idea how long this can take because we have no idea how deep the tree
@@ -144,6 +158,10 @@ class Server_Add_Controller extends Admin_Controller {
// over 10% in percent_complete.
$task->set("queue", $queue);
$task->percent_complete = min($task->percent_complete + 0.1, 10);
+ $task->status = t2("Found one file", "Found %count files",
+ Database::instance()
+ ->where("task_id", $task->id)
+ ->count_records("server_add_files"));
if (!$queue) {
$task->set("mode", "add-files");
@@ -182,19 +200,32 @@ class Server_Add_Controller extends Admin_Controller {
$name = basename($relative_path);
$title = item::convert_filename_to_title($name);
if (is_dir($entry->file)) {
- if (isset($albums[$relative_path]) && $parent_id = $albums[$relative_path]) {
+ $parent_path = dirname($relative_path);
+ if (isset($albums[$parent_path]) && $parent_id = $albums[$parent_path]) {
$parent = ORM::factory("item", $parent_id);
} else {
- $album = album::create($item, $name, $title, null, user::active()->id);
- $albums[$relative_path] = $album->id;
- $task->set("albums", $albums);
- }
- } else {
- if (strpos($relative_path, "/") !== false) {
- $parent = ORM::factory("item", $albums[dirname($relative_path)]);
- } else {
$parent = $item;
}
+ $album = album::create($parent, $name, $title, null, user::active()->id);
+ $albums[$relative_path] = $album->id;
+ $task->set("albums", $albums);
+ } else {
+ // Find the nearest selected parent. We check to see if any of the candidate parents
+ // were selected in the UI and if so, we use that. Otherwise, we fall back to making
+ // the parent the current item.
+ $parent_path = $relative_path;
+ $parent = null;
+ do {
+ if (strpos($parent_path, "/") !== false) {
+ if (array_key_exists($parent_path, $albums)) {
+ $parent = ORM::factory("item", $albums[$parent_path]);
+ } else {
+ $parent_path = dirname($parent_path);
+ }
+ } else {
+ $parent = $item;
+ }
+ } while (!$parent);
$extension = strtolower(pathinfo($name, PATHINFO_EXTENSION));
if (in_array($extension, array("gif", "png", "jpg", "jpeg"))) {
@@ -202,6 +233,7 @@ class Server_Add_Controller extends Admin_Controller {
} else if (in_array($extension, array("flv", "mp4"))) {
movie::create($parent, $entry->file, $name, $title, null, user::active()->id);
} else {
+ $task->log("Skipping unknown file type: $relative_path");
// Unsupported type
// @todo: $task->log this
}
@@ -211,8 +243,10 @@ class Server_Add_Controller extends Admin_Controller {
$entry->delete();
}
$task->set("completed_files", $completed_files);
+ $task->status = t("Adding photos and albums (%completed of %total)",
+ array("completed" => $completed_files,
+ "total" => $total_files));
$task->percent_complete = 10 + 100 * ($completed_files / $total_files);
- Kohana::log("alert",print_r($task->as_array(),1));
break;
case "done":
diff --git a/modules/server_add/js/server_add.js b/modules/server_add/js/server_add.js
index cba8c9ce..1a78d733 100644
--- a/modules/server_add/js/server_add.js
+++ b/modules/server_add/js/server_add.js
@@ -66,6 +66,7 @@ function start_add() {
data: { "paths[]": paths },
dataType: "json",
success: function(data, textStatus) {
+ $("#gStatus").html(data.status);
$("#gServerAdd .gProgressBar").progressbar("value", data.percent_complete);
setTimeout(function() { run_add(data.url); }, 0);
}
@@ -79,9 +80,10 @@ function run_add(url) {
async: false,
dataType: "json",
success: function(data, textStatus) {
+ $("#gStatus").html(data.status);
$("#gServerAdd .gProgressBar").progressbar("value", data.percent_complete);
if (data.done) {
- $("#gServerAdd .gProgressBar").slideUp();
+ $("#gProgress").slideUp();
} else {
setTimeout(function() { run_add(url); }, 0);
}
diff --git a/modules/server_add/views/server_add_tree.html.php b/modules/server_add/views/server_add_tree.html.php
index f8205a8b..74bc40e0 100644
--- a/modules/server_add/views/server_add_tree.html.php
+++ b/modules/server_add/views/server_add_tree.html.php
@@ -1,13 +1,13 @@
<?php defined("SYSPATH") or die("No direct script access.") ?>
-<? foreach ($files as $file => $name): ?>
+<? foreach ($files as $file): ?>
<? $id = substr(md5($file), 10) ?>
<li id="file_<?= $id ?>" class="<?= is_file($file) ? "gFile" : "gDirectory gCollapsed ui-icon-left" ?>">
<? if (is_dir($file)): ?>
<span onclick="open_close_branch('<?=$file?>', '<?=$id?>')" class="ui-icon ui-icon-plus"></span>
<? endif ?>
<label>
- <?= form::checkbox("path[]", p::clean($file), false, "onclick=click_node(this)") ?>
- <?= p::clean($name) ?>
+ <?= form::checkbox("path[]", $file, false, "onclick=click_node(this)") ?>
+ <?= p::clean(basename($file)) ?>
</label>
<? if (is_dir($file)): ?>
<ul id="tree_<?= $id ?>" style="display: none"></ul>
diff --git a/modules/server_add/views/server_add_tree_dialog.html.php b/modules/server_add/views/server_add_tree_dialog.html.php
index 8b13001f..bbad4e69 100644
--- a/modules/server_add/views/server_add_tree_dialog.html.php
+++ b/modules/server_add/views/server_add_tree_dialog.html.php
@@ -5,17 +5,17 @@
</script>
<div id="gServerAdd">
- <h1 style="display: none;"><?= t("Add Photos to '%title'", array("title" => p::clean($item->title))) ?></h1>
+ <h1 style="display: none;"><?= t("Add Photos to '%title'", array("title" => p::purify($item->title))) ?></h1>
<p id="gDescription"><?= t("Photos will be added to album:") ?></p>
<ul class="gBreadcrumbs">
<? foreach ($item->parents() as $parent): ?>
<li>
- <?= p::clean($parent->title) ?>
+ <?= p::purify($parent->title) ?>
</li>
<? endforeach ?>
<li class="active">
- <?= p::clean($item->title) ?>
+ <?= p::purify($item->title) ?>
</li>
</ul>
@@ -25,7 +25,10 @@
<?= $tree ?>
</ul>
- <div class="gProgressBar" style="display: none"></div>
+ <div id="gProgress" style="display: none">
+ <div class="gProgressBar"></div>
+ <div id="gStatus"></div>
+ </div>
<span>
<input id="gServerAddAddButton" class="submit ui-state-disabled" disabled="disabled"
@@ -38,8 +41,8 @@
event.preventDefault();
$("#gServerAdd .gProgressBar").
progressbar().
- progressbar("value", 0).
- slideDown("fast", function() { start_add() });
+ progressbar("value", 0);
+ $("#gProgress").slideDown("fast", function() { start_add() });
});
});
</script>