diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/controllers/album.php | 20 | ||||
-rw-r--r-- | core/helpers/core_installer.php | 2 | ||||
-rw-r--r-- | core/libraries/Theme.php (renamed from core/helpers/theme.php) | 21 | ||||
-rw-r--r-- | core/models/item.php | 18 | ||||
-rw-r--r-- | core/tests/Theme_Test.php | 20 |
5 files changed, 48 insertions, 33 deletions
diff --git a/core/controllers/album.php b/core/controllers/album.php index a22e5eeb..b1c7d205 100644 --- a/core/controllers/album.php +++ b/core/controllers/album.php @@ -18,28 +18,16 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ class Album_Controller extends Template_Controller { - public $template = "page.html"; + public $template = "album.html"; public function View($id) { $item = ORM::factory("item")->where("id", $id)->find(); if (empty($item->id)) { return Kohana::show_404(); } - $this->template->item = $item; - - $this->template->header = new View("page_header.html"); - $this->template->header->item = $item; - - $this->template->footer = new View("page_footer.html"); - $this->template->footer->item = $item; - - $this->template->content = new View("album.html"); - $this->template->content->item = $item; - $this->template->content->maxRows = 3; - $this->template->content->maxColumns = 3; - - $this->template->sidebar = new View("page_sidebar.html"); - $this->template->sidebar->item = $item; + $this->template->set_global('item', $item); + $this->template->set_global('children', $item->get_children()); + $this->template->set_global('theme', new Theme("default", $this->template)); } } diff --git a/core/helpers/core_installer.php b/core/helpers/core_installer.php index 9dd5224c..ea01a0c0 100644 --- a/core/helpers/core_installer.php +++ b/core/helpers/core_installer.php @@ -43,6 +43,7 @@ class core_installer { `id` int(9) NOT NULL auto_increment, `type` char(32) default NULL, `title` char(255) default NULL, + `description` char(255) default NULL, `path` char(255) default NULL, `left` int(9) default NULL, `right` int(9) default NULL, @@ -64,6 +65,7 @@ class core_installer { $root = ORM::factory("item"); $root->title = "Gallery"; + $root->description = "Welcome to your Gallery3"; $root->make_root(); } } diff --git a/core/helpers/theme.php b/core/libraries/Theme.php index 5aa568c7..924e978c 100644 --- a/core/helpers/theme.php +++ b/core/libraries/Theme.php @@ -18,16 +18,17 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ class theme_Core { - public static $debug_backtrace = "debug_backtrace"; + private $theme_name = null; - public static function url($path) { - // Using debug_backtrace() sucks. But I don't know of another way to get - // the location of the caller without forcing them to pass it in as an argument, which - // makes for a crappy API. - $backtrace = call_user_func(theme::$debug_backtrace); - $calling_file = $backtrace[1]['file']; - $theme_name = substr($calling_file, strlen(THEMEPATH)); - $theme_name = substr($theme_name, 0, strcspn($theme_name, "/")); - return url::base() . "themes/{$theme_name}/$path"; + public function __construct($theme_name) { + $this->theme_name = $theme_name; + } + + public function url($path) { + return url::base() . "themes/{$this->theme_name}/$path"; + } + + public function display($page_name, $view_class="View") { + return new $view_class($page_name); } } diff --git a/core/models/item.php b/core/models/item.php index b8957911..8b08b699 100644 --- a/core/models/item.php +++ b/core/models/item.php @@ -20,4 +20,22 @@ class Item_Model extends MPTT { protected $left_column = "left"; protected $right_column = "right"; + + public function is_album() { + return $this->type == 'album'; + } + + public function is_photo() { + return $this->type == 'photo'; + } + + // MPTT::get_children returns null if there are no children; change that to an empty array for + // consistency. + public function get_children() { + $children = parent::get_children(); + if (empty($children)) { + $children = array(); + } + return $children; + } } diff --git a/core/tests/Theme_Test.php b/core/tests/Theme_Test.php index 5b568b19..f73a98eb 100644 --- a/core/tests/Theme_Test.php +++ b/core/tests/Theme_Test.php @@ -19,16 +19,22 @@ */ class Theme_Test extends Unit_Test_Case { - public function teardown() { - theme::$debug_backtrace = "debug_backtrace"; + public function url_test() { + $theme = new Theme("fake_theme"); + $this->assert_equal("http://./themes/fake_theme/file", $theme->url("file")); } - public function url_test() { - theme::$debug_backtrace = array("Theme_Test", "_fake_debug_backtrace"); - $this->assert_equal("http://./themes/fake_theme/file", theme::url("file")); + public function display_test() { + $theme = new Theme("fake_theme"); + $view = $theme->display("test_page", "Theme_Test_Mock_View"); + $this->assert_equal("test_page", $view->page_name); } +} + +class Theme_Test_Mock_View { + public $page_name = null; - public function _fake_debug_backtrace() { - return array(array(), array('file' => THEMEPATH . "fake_theme/views/some_file.html.php")); + public function __construct($page_name) { + $this->page_name = $page_name; } }
\ No newline at end of file |