summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/gallery/controllers/albums.php2
-rw-r--r--modules/gallery/libraries/Theme_View.php48
2 files changed, 42 insertions, 8 deletions
diff --git a/modules/gallery/controllers/albums.php b/modules/gallery/controllers/albums.php
index a430b14d..4e37649c 100644
--- a/modules/gallery/controllers/albums.php
+++ b/modules/gallery/controllers/albums.php
@@ -65,6 +65,8 @@ class Albums_Controller extends Items_Controller {
}
$template = new Theme_View("page.html", "album");
+ $template->set_global("page", $page);
+ $template->set_global("max_pages", $max_pages);
$template->set_global("page_size", $page_size);
$template->set_global("item", $album);
$template->set_global("children", $album->viewable()->children($page_size, $offset));
diff --git a/modules/gallery/libraries/Theme_View.php b/modules/gallery/libraries/Theme_View.php
index 7e6a0b2e..5e8bc728 100644
--- a/modules/gallery/libraries/Theme_View.php
+++ b/modules/gallery/libraries/Theme_View.php
@@ -135,16 +135,48 @@ class Theme_View_Core extends Gallery_View {
return $menu->render();
}
+ /**
+ * Set up the data and render a pager.
+ *
+ * See themes/wind/views/pager.html for documentation on the variables generated here.
+ */
public function pager() {
- if ($this->children_count) {
- $this->pagination = new Pagination();
- $this->pagination->initialize(
- array("query_string" => "page",
- "total_items" => $this->children_count,
- "items_per_page" => $this->page_size,
- "style" => "classic"));
- return $this->pagination->render();
+ $v = new View("pager.html");
+ $v->page_type = $this->page_type;
+ $v->first_page_url = null;
+ $v->previous_page_url = null;
+ $v->next_page_url = null;
+ $v->last_page_url = null;
+
+ if ($this->page_type == "album") {
+ $v->page = $this->page;
+ $v->max_pages = $this->max_pages;
+ $v->total = $this->children_count;
+ if ($this->page != 1) {
+ $v->first_page_url = $this->item->url();
+ $v->previous_page_url = $this->item->url("page=" . ($this->page - 1));
+ }
+
+ if ($this->page != $this->max_pages) {
+ $v->next_page_url = $this->item->url("page=" . ($this->page + 1));
+ $v->last_page_url = $this->item->url("page={$this->max_pages}");
+ }
+
+ $v->first_visible_position = ($this->page - 1) * $this->page_size + 1;
+ $v->last_visible_position = $this->page * $this->page_size;
+ } else {
+ $v->position = $this->position;
+ $v->total = $this->sibling_count;
+ if ($v->previous_page = $this->previous_item) {
+ $v->previous_page_url = $this->previous_item->url();
+ }
+
+ if ($v->next_page = $this->next_item) {
+ $v->next_page_url = $this->next_item->url();
+ }
}
+
+ return $v;
}
/**