mirror of
https://github.com/Pathduck/gallery3.git
synced 2026-05-21 03:49:21 -04:00
Create the concept of "page types" which let us specify the kind of page that we're rendering in high level terms. Currently there are three page types: album, photo and tag. The tag page type uses slightly different variables. It has a $tag but no $item. Adjust all sidebar_block() functions to avoid printing stuff that's dependent on the item if there is no item. Simplify the tag code to stop trying to fake an item. Update the theme slightly to use $item and $tag where appropriate (notably, for making the <title> element).
102 lines
3.1 KiB
PHP
102 lines
3.1 KiB
PHP
<?php defined("SYSPATH") or die("No direct script access.");
|
|
/**
|
|
* Gallery - a web based photo album viewer and editor
|
|
* Copyright (C) 2000-2008 Bharat Mediratta
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or (at
|
|
* your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
class Theme_Core {
|
|
private $theme_name = null;
|
|
private $template = null;
|
|
|
|
public function __construct($theme_name, $template) {
|
|
$this->theme_name = $theme_name;
|
|
$this->template = $template;
|
|
}
|
|
|
|
public function url($path) {
|
|
return url::file("themes/{$this->theme_name}/$path");
|
|
}
|
|
|
|
public function item() {
|
|
return $this->template->item;
|
|
}
|
|
|
|
public function display($page_name, $view_class="View") {
|
|
return new $view_class($page_name);
|
|
}
|
|
|
|
public function pager() {
|
|
$this->pagination = new Pagination();
|
|
$this->pagination->initialize(
|
|
array('query_string' => 'page',
|
|
'total_items' => $this->template->children_count,
|
|
'items_per_page' => $this->template->page_size,
|
|
'style' => 'classic'));
|
|
return $this->pagination->render();
|
|
}
|
|
|
|
/**
|
|
* Handle all theme functions that insert module content.
|
|
*/
|
|
public function __call($function, $args) {
|
|
switch ($function) {
|
|
case "head":
|
|
case "page_top":
|
|
case "page_bottom":
|
|
case "header_top":
|
|
case "header_bottom":
|
|
case "sidebar_top":
|
|
case "sidebar_blocks":
|
|
case "sidebar_bottom":
|
|
case "album_top":
|
|
case "album_blocks":
|
|
case "album_bottom":
|
|
case "tag_top":
|
|
case "tag_bottom":
|
|
case "thumbnail_top":
|
|
case "thumbnail_bottom":
|
|
case "thumbnail_info":
|
|
case "photo_top":
|
|
case "photo_blocks":
|
|
case "photo_bottom":
|
|
// @todo: restrict access to this option
|
|
$debug = Session::instance()->get("debug", false);
|
|
|
|
$blocks = array();
|
|
foreach (module::get_list() as $module) {
|
|
$helper_class = "{$module->name}_block";
|
|
if (method_exists($helper_class, $function)) {
|
|
$blocks[] = call_user_func_array(
|
|
array($helper_class, $function),
|
|
array_merge(array($this), $args));
|
|
}
|
|
}
|
|
if ($debug) {
|
|
if ($function != "head") {
|
|
array_unshift(
|
|
$blocks, "<div class=\"gAnnotatedThemeBlock gAnnotatedThemeBlock_$function gClearFix\">" .
|
|
"<div class=\"title\">$function</div>");
|
|
$blocks[] = "</div>";
|
|
}
|
|
}
|
|
return implode("\n", $blocks);
|
|
|
|
default:
|
|
throw new Exception("@todo UNKNOWN_THEME_FUNCTION: $function");
|
|
}
|
|
}
|
|
}
|