diff options
author | Bharat Mediratta <bharat@menalto.com> | 2008-11-05 05:20:20 +0000 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2008-11-05 05:20:20 +0000 |
commit | b82332192a7420cce045612014ad6f54b02974c3 (patch) | |
tree | 7fae26a41040c0f7af6caddbfacb8c8db6250502 | |
parent | f7560a7e8b15abdd549e4c59bbb39c6416844d9e (diff) |
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!
-rw-r--r-- | core/config/config.php | 2 | ||||
-rw-r--r-- | core/controllers/album.php | 2 | ||||
-rw-r--r-- | core/libraries/Block.php | 32 | ||||
-rw-r--r-- | core/libraries/Theme.php | 16 | ||||
-rw-r--r-- | core/tests/Theme_Test.php | 11 | ||||
-rw-r--r-- | core/views/block.html.php | 9 | ||||
-rw-r--r-- | modules/carousel/helpers/carousel.php | 31 | ||||
-rw-r--r-- | modules/carousel/images/carousel.png (renamed from themes/default/images/carousel.png) | bin | 15631 -> 15631 bytes | |||
-rw-r--r-- | themes/default/views/sidebar.html.php | 13 |
9 files changed, 102 insertions, 14 deletions
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 @@ +<?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 Block_Core { + public $id = null; + public $title = null; + public $content = null; + + public function __toString() { + $v = new View("block.html"); + $v->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 @@ +<? defined("SYSPATH") or die("No direct script access."); ?> +<div id="<?= $id ?>" class="gBlock"> + <div class="gBlockHeader"> + <h2><?= $title ?></h2> + </div> + <div class="gBlockContent"> + <?= $content ?> + </div> +</div> diff --git a/modules/carousel/helpers/carousel.php b/modules/carousel/helpers/carousel.php new file mode 100644 index 00000000..de34e1ae --- /dev/null +++ b/modules/carousel/helpers/carousel.php @@ -0,0 +1,31 @@ +<?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 Carousel_Core { + public static function block($theme) { + $block = new Block(); + $block->id = "gCarousel"; + $block->title = "Album: <a href=#>{$theme->item()->title}</a>"; + $block->content = '<img src="' . + url::base() . "modules/carousel/images/carousel.png" . + '" width="214"'; + return $block; + } +}
\ No newline at end of file diff --git a/themes/default/images/carousel.png b/modules/carousel/images/carousel.png Binary files differindex e516b1d3..e516b1d3 100644 --- a/themes/default/images/carousel.png +++ b/modules/carousel/images/carousel.png diff --git a/themes/default/views/sidebar.html.php b/themes/default/views/sidebar.html.php index bee5b1a7..ab49a7bb 100644 --- a/themes/default/views/sidebar.html.php +++ b/themes/default/views/sidebar.html.php @@ -1,15 +1,8 @@ <? defined("SYSPATH") or die("No direct script access."); ?> <div id="gSidebar" class="yui-b"> - - <div id="gCarousel" class="gBlock"> - <div class="gBlockHeader"> - <h2>Album: <a href="browse.html">Christmas 2007</a></h2> - <a href="#" class="minimize" title="<?= _("Minimize Carousel Block") ?>">[-]</a> - </div> - - <img src="<?= $theme->url("images/carousel.png") ?>" width="214" class="gBlockContent" /> - </div> - + <? foreach ($theme->blocks() as $block): ?> + <?= $block ?> + <? endforeach ?> <div id="gTags" class="gBlock"> <div class="gBlockHeader"> |