From 483d8df91b443a20a614eb5864cabb2a66ac72d2 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sat, 29 Aug 2009 16:33:22 -0700 Subject: Change the organize tree to expand/collapse. It doesn't properly open up to the album that you're viewing, and if you move a photo to a different album it'll reload the entire album tree. --- modules/organize/controllers/organize.php | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'modules/organize/controllers/organize.php') diff --git a/modules/organize/controllers/organize.php b/modules/organize/controllers/organize.php index 2b966657..3cbcfb28 100644 --- a/modules/organize/controllers/organize.php +++ b/modules/organize/controllers/organize.php @@ -25,7 +25,7 @@ class Organize_Controller extends Controller { $v = new View("organize_dialog.html"); $v->album = $album; - $v->album_tree = self::_tree($album); + $v->album_tree = self::_tree(ORM::factory("item", 1)); $v->micro_thumb_grid = self::_get_micro_thumb_grid($album, 0); print $v; } @@ -50,7 +50,7 @@ class Organize_Controller extends Controller { } print json_encode( - array("tree" => self::_tree($album)->__toString(), + array("tree" => self::_tree(ORM::factory("item", 1))->__toString(), "grid" => self::_get_micro_thumb_grid($album, 0)->__toString())); } @@ -132,17 +132,15 @@ class Organize_Controller extends Controller { return $v; } + public function tree($album_id) { + $album = ORM::factory("item", $album_id); + access::required("view", $album); + print self::_tree($album); + } + private static function _tree($album) { $v = new View("organize_tree.html"); - $v->parents = $album->parents(); $v->album = $album; - - if ($album->id == 1) { - $v->peers = array($album); - } else { - $v->peers = $album->parent()->children(null, 0, array("type" => "album")); - } - return $v; } } -- cgit v1.2.3 From d1ade6620e814ecf536dfde17c95593a311d1c2c Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 30 Aug 2009 14:35:27 -0700 Subject: Precalculate the organize tree based on the selected album and render it right away while still allowing incremental tree loading. --- modules/organize/controllers/organize.php | 17 ++++++++++++----- modules/organize/views/organize_tree.html.php | 9 ++++++++- 2 files changed, 20 insertions(+), 6 deletions(-) (limited to 'modules/organize/controllers/organize.php') diff --git a/modules/organize/controllers/organize.php b/modules/organize/controllers/organize.php index 3cbcfb28..24e5bf97 100644 --- a/modules/organize/controllers/organize.php +++ b/modules/organize/controllers/organize.php @@ -25,7 +25,7 @@ class Organize_Controller extends Controller { $v = new View("organize_dialog.html"); $v->album = $album; - $v->album_tree = self::_tree(ORM::factory("item", 1)); + $v->album_tree = self::_expanded_tree(ORM::factory("item", 1), $album); $v->micro_thumb_grid = self::_get_micro_thumb_grid($album, 0); print $v; } @@ -50,7 +50,7 @@ class Organize_Controller extends Controller { } print json_encode( - array("tree" => self::_tree(ORM::factory("item", 1))->__toString(), + array("tree" => self::_expanded_tree(ORM::factory("item", 1), $album)->__toString(), "grid" => self::_get_micro_thumb_grid($album, 0)->__toString())); } @@ -135,12 +135,19 @@ class Organize_Controller extends Controller { public function tree($album_id) { $album = ORM::factory("item", $album_id); access::required("view", $album); - print self::_tree($album); + + print self::_expanded_tree($album, $album); } - private static function _tree($album) { + /** + * Create an HTML representation of the tree from the root down to the selected album. We only + * include albums along the descendant hierarchy that includes the selected album, and the + * immediate child albums. + */ + private static function _expanded_tree($root, $selected_album) { $v = new View("organize_tree.html"); - $v->album = $album; + $v->album = $root; + $v->selected = $selected_album; return $v; } } diff --git a/modules/organize/views/organize_tree.html.php b/modules/organize/views/organize_tree.html.php index 4677234c..a99d2337 100644 --- a/modules/organize/views/organize_tree.html.php +++ b/modules/organize/views/organize_tree.html.php @@ -3,11 +3,17 @@ ref="id ?>"> - + + " + ref="id ?>"> title) ?>
    children(null, 0, array("type" => "album")) as $child): ?> + is_descendant($selected)): ?> + $selected, "album" => $child)); ?> +
  • " ref="id ?>"> @@ -16,6 +22,7 @@ title) ?>
  • +
-- cgit v1.2.3 From c615918829fae1496a09886ef929869fce9b9f6a Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 30 Aug 2009 14:40:55 -0700 Subject: Manage the selection so we don't automatically select an album whenever we expand a tree. --- modules/organize/controllers/organize.php | 4 ++-- modules/organize/views/organize_tree.html.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'modules/organize/controllers/organize.php') diff --git a/modules/organize/controllers/organize.php b/modules/organize/controllers/organize.php index 24e5bf97..22f106e9 100644 --- a/modules/organize/controllers/organize.php +++ b/modules/organize/controllers/organize.php @@ -136,7 +136,7 @@ class Organize_Controller extends Controller { $album = ORM::factory("item", $album_id); access::required("view", $album); - print self::_expanded_tree($album, $album); + print self::_expanded_tree($album); } /** @@ -144,7 +144,7 @@ class Organize_Controller extends Controller { * include albums along the descendant hierarchy that includes the selected album, and the * immediate child albums. */ - private static function _expanded_tree($root, $selected_album) { + private static function _expanded_tree($root, $selected_album=null) { $v = new View("organize_tree.html"); $v->album = $root; $v->selected = $selected_album; diff --git a/modules/organize/views/organize_tree.html.php b/modules/organize/views/organize_tree.html.php index a99d2337..59f683ef 100644 --- a/modules/organize/views/organize_tree.html.php +++ b/modules/organize/views/organize_tree.html.php @@ -4,14 +4,14 @@ + id == $selected->id ? "selected" : "" ?> " ref="id ?>"> title) ?>
    children(null, 0, array("type" => "album")) as $child): ?> - is_descendant($selected)): ?> + is_descendant($selected)): ?> $selected, "album" => $child)); ?>
  • " -- cgit v1.2.3 From db03c5d799dbe34301b7034018a254ab0f0f32f3 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Sun, 30 Aug 2009 15:09:13 -0700 Subject: Don't try to move an item into its own descendant hierarchy. Just leave it out of the move for now. --- modules/organize/controllers/organize.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'modules/organize/controllers/organize.php') diff --git a/modules/organize/controllers/organize.php b/modules/organize/controllers/organize.php index 22f106e9..27299e85 100644 --- a/modules/organize/controllers/organize.php +++ b/modules/organize/controllers/organize.php @@ -46,7 +46,10 @@ class Organize_Controller extends Controller { $album = ORM::factory("item", $album_id); foreach ($this->input->post("source_ids") as $source_id) { - item::move(ORM::factory("item", $source_id), $album); + $source = ORM::factory("item", $source_id); + if (!$album->is_descendant($source)) { + item::move($source, $album); + } } print json_encode( -- cgit v1.2.3