summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/config/config.php2
-rw-r--r--core/controllers/album.php2
-rw-r--r--core/libraries/Block.php32
-rw-r--r--core/libraries/Theme.php16
-rw-r--r--core/tests/Theme_Test.php11
-rw-r--r--core/views/block.html.php9
-rw-r--r--modules/carousel/helpers/carousel.php31
-rw-r--r--modules/carousel/images/carousel.png (renamed from themes/default/images/carousel.png)bin15631 -> 15631 bytes
-rw-r--r--themes/default/views/sidebar.html.php13
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
index e516b1d3..e516b1d3 100644
--- a/themes/default/images/carousel.png
+++ b/modules/carousel/images/carousel.png
Binary files differ
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">