summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/gallery/controllers/albums.php6
-rw-r--r--modules/search/controllers/search.php24
-rw-r--r--modules/tag/controllers/tag.php1
3 files changed, 20 insertions, 11 deletions
diff --git a/modules/gallery/controllers/albums.php b/modules/gallery/controllers/albums.php
index e14fe347..d545b415 100644
--- a/modules/gallery/controllers/albums.php
+++ b/modules/gallery/controllers/albums.php
@@ -93,10 +93,16 @@ class Albums_Controller extends Items_Controller {
"previous_item" => $previous_item,
"next_item" => $next_item,
"sibling_count" => $item->parent()->viewable()->children_count($where),
+ "siblings_callback" => array("Albums_Controller::get_siblings", array($item)),
"parents" => $item->parents()->as_array(),
"breadcrumbs" => Breadcrumb::array_from_item_parents($item));
}
+ static function get_siblings($item) {
+ // @todo consider creating Item_Model::siblings() if we use this more broadly.
+ return $item->parent()->viewable()->children();
+ }
+
public function create($parent_id) {
access::verify_csrf();
$album = ORM::factory("item", $parent_id);
diff --git a/modules/search/controllers/search.php b/modules/search/controllers/search.php
index f7f1d981..673a281f 100644
--- a/modules/search/controllers/search.php
+++ b/modules/search/controllers/search.php
@@ -54,8 +54,6 @@ class Search_Controller extends Controller {
list ($count, $result) =
search::search_within_album($q_with_more_terms, $album, $page_size, $offset);
- $title = t("Search: %q", array("q" => $q_with_more_terms));
-
$max_pages = max(ceil($count / $page_size), 1);
$template = new Theme_View("page.html", "collection", "search");
@@ -77,28 +75,27 @@ class Search_Controller extends Controller {
print $template;
- item::set_display_context_callback(
- "Search_Controller::get_display_context", $album->id, $title, $q_with_more_terms, $q);
+ item::set_display_context_callback("Search_Controller::get_display_context", $album, $q);
}
- static function get_display_context($item, $album_id, $title, $query_terms, $q) {
- $album = ORM::factory("item", $album_id);
- $position = search::get_position_within_album($item, $query_terms, $album);
+ static function get_display_context($item, $album, $q) {
+ $q_with_more_terms = search::add_query_terms($q);
+ $position = search::get_position_within_album($item, $q_with_more_terms, $album);
if ($position > 1) {
list ($count, $result_data) =
- search::search_within_album($query_terms, $album, 3, $position - 2);
+ search::search_within_album($q_with_more_terms, $album, 3, $position - 2);
list ($previous_item, $ignore, $next_item) = $result_data;
} else {
$previous_item = null;
list ($count, $result_data) =
- search::search_within_album($query_terms, $album, 1, $position);
+ search::search_within_album($q_with_more_terms, $album, 1, $position);
list ($next_item) = $result_data;
}
$search_url = url::abs_site("search" .
"?q=" . urlencode($q) .
- "&album=" . urlencode($album_id) .
+ "&album=" . urlencode($album->id) .
"&show={$item->id}");
$root = item::root();
@@ -106,9 +103,14 @@ class Search_Controller extends Controller {
"previous_item" => $previous_item,
"next_item" => $next_item,
"sibling_count" => $count,
+ "siblings_callback" => array("Search_Controller::get_siblings", array($q, $album)),
"breadcrumbs" => array(
- Breadcrumb::instance($root->title, "/", $root->id)->set_first(),
+ Breadcrumb::instance($root->title, $root->url())->set_first(),
Breadcrumb::instance(t("Search: %q", array("q" => $q)), $search_url),
Breadcrumb::instance($item->title, $item->url())->set_last()));
}
+
+ static function get_siblings($q, $album) {
+ return search::search_within_album(search::add_query_terms($q), $album, 1000, 1)[1];
+ }
}
diff --git a/modules/tag/controllers/tag.php b/modules/tag/controllers/tag.php
index 6199c49b..bada9bac 100644
--- a/modules/tag/controllers/tag.php
+++ b/modules/tag/controllers/tag.php
@@ -86,6 +86,7 @@ class Tag_Controller extends Controller {
"previous_item" => $previous_item,
"next_item" => $next_item,
"sibling_count" => $tag->items_count($where),
+ "siblings_callback" => array(array($tag, "items"), array()),
"breadcrumbs" => array(
Breadcrumb::instance($root->title, $root->url())->set_first(),
Breadcrumb::instance(t("Tag: %tag_name", array("tag_name" => $tag->name)),