summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/controllers/album.php20
-rw-r--r--core/helpers/core_installer.php2
-rw-r--r--core/libraries/Theme.php (renamed from core/helpers/theme.php)21
-rw-r--r--core/models/item.php18
-rw-r--r--core/tests/Theme_Test.php20
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