From b82332192a7420cce045612014ad6f54b02974c3 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Wed, 5 Nov 2008 05:20:20 +0000 Subject: The carousel block is now off into its own module. The sidebar.html.php file loops over $theme->blocks() which in turn calls carousel::block() which uses the Block object to create a standard block UI. Hooray! --- core/config/config.php | 2 ++ core/controllers/album.php | 2 ++ core/libraries/Block.php | 32 ++++++++++++++++++++++++++++++++ core/libraries/Theme.php | 16 ++++++++++++++-- core/tests/Theme_Test.php | 11 +++++++++-- core/views/block.html.php | 9 +++++++++ 6 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 core/libraries/Block.php create mode 100644 core/views/block.html.php (limited to 'core') diff --git a/core/config/config.php b/core/config/config.php index de872455..06c5c8f0 100644 --- a/core/config/config.php +++ b/core/config/config.php @@ -122,5 +122,7 @@ $config['modules'] = array MODPATH . 'unit_test', MODPATH . 'forge', + MODPATH . 'carousel', + THEMEPATH . 'default', ); diff --git a/core/controllers/album.php b/core/controllers/album.php index a00a5138..9c78dfca 100644 --- a/core/controllers/album.php +++ b/core/controllers/album.php @@ -28,6 +28,8 @@ class Album_Controller extends Template_Controller { $this->template->set_global('item', $item); $this->template->set_global('children', $item->children()); + + /** @todo: this needs to be data-driven */ $this->template->set_global('theme', new Theme("default", $this->template)); } } diff --git a/core/libraries/Block.php b/core/libraries/Block.php new file mode 100644 index 00000000..25a0689b --- /dev/null +++ b/core/libraries/Block.php @@ -0,0 +1,32 @@ +id = $this->id; + $v->title = $this->title; + $v->content = $this->content; + return $v->__toString(); + } +} diff --git a/core/libraries/Theme.php b/core/libraries/Theme.php index 924e978c..04032b20 100644 --- a/core/libraries/Theme.php +++ b/core/libraries/Theme.php @@ -17,18 +17,30 @@ * 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 { +class Theme_Core { private $theme_name = null; + private $template = null; - public function __construct($theme_name) { + public function __construct($theme_name, $template) { $this->theme_name = $theme_name; + $this->template = $template; } public function url($path) { return url::base() . "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 blocks() { + /** @todo: this needs to be made data-driven */ + $blocks = array('carousel' => carousel::block($this)); + return $blocks; + } } diff --git a/core/tests/Theme_Test.php b/core/tests/Theme_Test.php index f73a98eb..8852a6a1 100644 --- a/core/tests/Theme_Test.php +++ b/core/tests/Theme_Test.php @@ -20,15 +20,22 @@ class Theme_Test extends Unit_Test_Case { public function url_test() { - $theme = new Theme("fake_theme"); + $theme = new Theme("fake_theme", new View()); $this->assert_equal("http://./themes/fake_theme/file", $theme->url("file")); } public function display_test() { - $theme = new Theme("fake_theme"); + $theme = new Theme("fake_theme", new View()); $view = $theme->display("test_page", "Theme_Test_Mock_View"); $this->assert_equal("test_page", $view->page_name); } + + public function item_test() { + $v = new View(); + $v->item = "fake_item"; + $theme = new Theme("fake_theme", $v); + $this->assert_equal("fake_item", $theme->item()); + } } class Theme_Test_Mock_View { diff --git a/core/views/block.html.php b/core/views/block.html.php new file mode 100644 index 00000000..bd6bc44b --- /dev/null +++ b/core/views/block.html.php @@ -0,0 +1,9 @@ + +
+
+

+
+
+ +
+
-- cgit v1.2.3