diff options
author | Bharat Mediratta <bharat@menalto.com> | 2011-08-27 11:18:07 -0700 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2011-08-27 11:18:07 -0700 |
commit | ce43f29e2ceaac3d638061f81dc6037b5e0018d3 (patch) | |
tree | a578ffdd232d53b590b6dae68ff2bb35d6a813aa /modules/tag/controllers | |
parent | c92d34a86b0515363f790056293cea2b0a738782 (diff) |
Refactor the display context code a bit:
1) Move the display context code into the controller themselves so that it's
more logically a continuation callback from the original controller
rendering code.
2) Simplify the display context set/get code and put it in the item helper,
it's just a couple of lines of code now.
3) Add more descriptive breadcrumb strings
Diffstat (limited to 'modules/tag/controllers')
-rw-r--r-- | modules/tag/controllers/tag.php | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/modules/tag/controllers/tag.php b/modules/tag/controllers/tag.php index 1628f0ac..559e2a5a 100644 --- a/modules/tag/controllers/tag.php +++ b/modules/tag/controllers/tag.php @@ -50,10 +50,6 @@ class Tag_Controller extends Controller { } $root = item::root(); - Display_Context::factory("tag") - ->set(array("tag" => $tag)) - ->save(); - $template = new Theme_View("page.html", "collection", "tag"); $template->set_global( array("page" => $page, @@ -63,11 +59,37 @@ class Tag_Controller extends Controller { "children" => $tag->items($page_size, $offset), "breadcrumbs" => array( Breadcrumb::instance($root->title, $root->url())->set_first(), - Breadcrumb::instance($tag->name, $tag->url())->set_last()), + Breadcrumb::instance(t("Tag: %tag_name", array("tag_name" => $tag->name)), + $tag->url())->set_last()), "children_count" => $children_count)); $template->content = new View("dynamic.html"); $template->content->title = t("Tag: %tag_name", array("tag_name" => $tag->name)); - print $template; + + item::set_display_context_callback("Tag_Controller::get_display_context", $tag->id); + } + + static function get_display_context($item, $tag_id) { + $tag = ORM::factory("tag", $tag_id); + $where = array(array("type", "!=", "album")); + + $position = tag::get_position($tag, $item, $where); + if ($position > 1) { + list ($previous_item, $ignore, $next_item) = $tag->items(3, $position - 2, $where); + } else { + $previous_item = null; + list ($next_item) = $tag->items(1, $position, $where); + } + + $root = item::root(); + return array("position" => $position, + "previous_item" => $previous_item, + "next_item" => $next_item, + "sibling_count" => $tag->items_count($where), + "breadcrumbs" => array( + Breadcrumb::instance($root->title, $root->url())->set_first(), + Breadcrumb::instance(t("Tag: %tag_name", array("tag_name" => $tag->name)), + $tag->url("show={$item->id}")), + Breadcrumb::instance($item->title, $item->url())->set_last())); } } |