summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/controllers/albums.php1
-rw-r--r--core/controllers/photos.php1
-rw-r--r--core/libraries/Theme.php4
-rw-r--r--modules/carousel/helpers/carousel_block.php16
-rw-r--r--modules/gmaps/helpers/gmaps_block.php12
-rw-r--r--modules/info/helpers/info_block.php12
-rw-r--r--modules/media_rss/helpers/media_rss_block.php6
-rw-r--r--modules/tag/controllers/tags.php35
-rw-r--r--modules/tag/models/tag.php61
-rw-r--r--themes/default/views/header.html.php2
-rw-r--r--themes/default/views/page.html.php12
-rw-r--r--themes/default/views/tag.html.php31
12 files changed, 104 insertions, 89 deletions
diff --git a/core/controllers/albums.php b/core/controllers/albums.php
index f9e0be2c..4c117ac4 100644
--- a/core/controllers/albums.php
+++ b/core/controllers/albums.php
@@ -32,6 +32,7 @@ class Albums_Controller extends Items_Controller {
$page = $this->input->get("page", "1");
$theme = new Theme($theme_name, $template);
+ $template->set_global("page_type", "album");
$template->set_global('page_size', $page_size);
$template->set_global('item', $item);
$template->set_global('children', $item->children($page_size, ($page-1) * $page_size));
diff --git a/core/controllers/photos.php b/core/controllers/photos.php
index 1d995de8..2020aad3 100644
--- a/core/controllers/photos.php
+++ b/core/controllers/photos.php
@@ -28,6 +28,7 @@ class Photos_Controller extends Items_Controller {
// @todo: this needs to be data-driven
$theme = new Theme("default", $template);
+ $template->set_global("page_type", "photo");
$template->set_global('item', $item);
$template->set_global('children', $item->children());
$template->set_global('parents', $item->parents());
diff --git a/core/libraries/Theme.php b/core/libraries/Theme.php
index 315261a5..6ae08a4b 100644
--- a/core/libraries/Theme.php
+++ b/core/libraries/Theme.php
@@ -42,7 +42,7 @@ class Theme_Core {
$this->pagination = new Pagination();
$this->pagination->initialize(
array('query_string' => 'page',
- 'total_items' => $this->template->item->children_count(),
+ 'total_items' => $this->template->children_count,
'items_per_page' => $this->template->page_size,
'style' => 'classic'));
return $this->pagination->render();
@@ -64,6 +64,8 @@ class Theme_Core {
case "album_top":
case "album_blocks":
case "album_bottom":
+ case "tag_top":
+ case "tag_bottom":
case "thumbnail_top":
case "thumbnail_bottom":
case "thumbnail_info":
diff --git a/modules/carousel/helpers/carousel_block.php b/modules/carousel/helpers/carousel_block.php
index de131625..1732fa39 100644
--- a/modules/carousel/helpers/carousel_block.php
+++ b/modules/carousel/helpers/carousel_block.php
@@ -20,12 +20,14 @@
class carousel_block_Core {
public static function sidebar_blocks($theme) {
- $block = new Block();
- $block->id = "gCarousel";
- $block->title = "Album: <a href=\"#\">{$theme->item()->title_edit}</a>";
- $block->content = '<img src="' .
- url::base() . "modules/carousel/images/carousel.png" .
- '" width="214"/>';
- return $block->__toString();
+ if ($theme->item()) {
+ $block = new Block();
+ $block->id = "gCarousel";
+ $block->title = "Album: <a href=\"#\">{$theme->item()->title_edit}</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/modules/gmaps/helpers/gmaps_block.php b/modules/gmaps/helpers/gmaps_block.php
index 0d3155d1..dc58a4cd 100644
--- a/modules/gmaps/helpers/gmaps_block.php
+++ b/modules/gmaps/helpers/gmaps_block.php
@@ -20,10 +20,12 @@
class gmaps_block_Core {
public static function sidebar_blocks($theme) {
- $block = new Block();
- $block->id = "gMaps";
- $block->title = _("Location");
- $block->content = new View("gmaps_block.html");
- return $block;
+ if ($theme->item()) {
+ $block = new Block();
+ $block->id = "gMaps";
+ $block->title = _("Location");
+ $block->content = new View("gmaps_block.html");
+ return $block;
+ }
}
} \ No newline at end of file
diff --git a/modules/info/helpers/info_block.php b/modules/info/helpers/info_block.php
index 40e5bb97..61115b2a 100644
--- a/modules/info/helpers/info_block.php
+++ b/modules/info/helpers/info_block.php
@@ -20,11 +20,13 @@
class info_block_Core {
public static function sidebar_blocks($theme) {
- $block = new Block();
- $block->id = "gMetadata";
- $block->title = _("Item Info");
- $block->content = new View("info_block.html");
- return $block;
+ if ($theme->item()) {
+ $block = new Block();
+ $block->id = "gMetadata";
+ $block->title = _("Item Info");
+ $block->content = new View("info_block.html");
+ return $block;
+ }
}
public static function thumbnail_info($theme, $item) {
diff --git a/modules/media_rss/helpers/media_rss_block.php b/modules/media_rss/helpers/media_rss_block.php
index b1db0bb2..2e9cd866 100644
--- a/modules/media_rss/helpers/media_rss_block.php
+++ b/modules/media_rss/helpers/media_rss_block.php
@@ -19,8 +19,10 @@
*/
class media_rss_block_Core {
public static function head($theme) {
- $url = url::site("media_rss/feed/{$theme->item()->id}");
+ if ($theme->item()) {
+ $url = url::site("media_rss/feed/{$theme->item()->id}");
- return "<link rel=\"alternate\" type=\"" . rest::RSS . "\" href=\"$url\" />";
+ return "<link rel=\"alternate\" type=\"" . rest::RSS . "\" href=\"$url\" />";
+ }
}
}
diff --git a/modules/tag/controllers/tags.php b/modules/tag/controllers/tags.php
index 6011179a..db5f93bd 100644
--- a/modules/tag/controllers/tags.php
+++ b/modules/tag/controllers/tags.php
@@ -20,31 +20,40 @@
class Tags_Controller extends REST_Controller {
protected $resource_type = "tag";
- /**
- * @see Rest_Controller::_index()
- */
+ public function _show($tag) {
+ // @todo: these need to be pulled from the database
+ $theme_name = "default";
+ $page_size = 9;
+
+ $template = new View("page.html");
+
+ $page = $this->input->get("page", "1");
+ $theme = new Theme($theme_name, $template);
+
+ $template->set_global("page_type", "tag");
+ $template->set_global('page_size', $page_size);
+ $template->set_global('tag', $tag);
+ $template->set_global('children', $tag->items($page_size, ($page-1) * $page_size));
+ $template->set_global('children_count', $tag->count);
+ $template->set_global('theme', $theme);
+ $template->set_global('user', Session::instance()->get('user', null));
+ $template->content = new View("tag.html");
+
+ print $template;
+ }
+
public function _index() {
throw new Exception("@todo Tag_Controller::_index NOT IMPLEMENTED");
}
- /**
- * @see Rest_Controller::_form_add($parameters)
- */
public function _form_add($parameters) {
throw new Exception("@todo Tag_Controller::_form NOT IMPLEMENTED");
}
- /**
- * @see Rest_Controller::_form_edit($resource)
- */
public function _form_edit($tag) {
throw new Exception("@todo Tag_Controller::_form NOT IMPLEMENTED");
}
- public function _show($tag) {
- Albums_Controller::_show($tag);
- }
-
public function _create($tag) {
throw new Exception("@todo Tag_Controller::_create NOT IMPLEMENTED");
}
diff --git a/modules/tag/models/tag.php b/modules/tag/models/tag.php
index c0e94f29..59dd8d54 100644
--- a/modules/tag/models/tag.php
+++ b/modules/tag/models/tag.php
@@ -20,64 +20,19 @@
class Tag_Model extends ORM {
protected $has_and_belongs_to_many = array("items");
- protected $_children = array();
-
var $rules = array(
"name" => "required|length[4,32]");
/**
- * Emulate the album method charactistics so that the tag looks like an album to the framework.
- */
- public function __call($function, $args) {
- if ($function == "children") {
- return $this->_get_tag_children($args[0], $args[1]);
- } else if ($function == "children_count") {
- return $this->count;
- } else if ($function == "parents") {
- // Need to return as an ORM_Iterator as opposed to just the model.
- return ORM::factory("item")
- ->where("id", 1)
- ->find_all();
- } else {
- return parent::__call($function, $args);
- }
- }
-
- /**
- * Emulate the album property charactistics so that the tag looks like an album to the framework.
- */
- public function __get($property) {
- if ($property == "title" || $property == "title_edit" || $property == "name_edit") {
- return $this->name;
- } else if ($property == "description_edit") {
- return "There are {$this->count} items tagged.";
- } else if ($property == "owner") {
- return null;
- } else {
- return parent::__get($property);
- }
- }
-
- /**
- * Get the item children. This code was borrowed from the ORM::__get($column) method and modified
- * to allow for the specification of the limit and offset.
- * @param int $limit
- * @param int $offset
+ * Return all items associated with this tag.
+ * @param integer $limit number of rows to limit result to
+ * @param integer $offset offset in result to start returning rows from
* @return ORM_Iterator
*/
- private function _get_tag_children($limit, $offset) {
- // Load the child model
- $model = ORM::factory(inflector::singular("items"));
-
- // Load JOIN info
- $join_table = $model->join_table($this->table_name);
- $join_col1 = $model->foreign_key(NULL, $join_table);
- $join_col2 = $model->foreign_key(TRUE);
-
- // one<>alias:many relationship
- return $model
- ->join($join_table, $join_col1, $join_col2)
- ->where($this->foreign_key(NULL, $join_table), $this->object[$this->primary_key])
+ public function items($limit=null, $offset=0) {
+ return ORM::factory("item")
+ ->join("items_tags", "items.id", "items_tags.item_id")
+ ->where("items_tags.tag_id", $this->id)
->find_all($limit, $offset);
- }
+ }
} \ No newline at end of file
diff --git a/themes/default/views/header.html.php b/themes/default/views/header.html.php
index 1ca2a952..c34486be 100644
--- a/themes/default/views/header.html.php
+++ b/themes/default/views/header.html.php
@@ -14,9 +14,11 @@
<?= $theme->header_bottom() ?>
+<? if ($page_type != "tag"): ?>
<ul id="gBreadcrumbs" class="gClearFix">
<? foreach ($parents as $parent): ?>
<li><a href="<?= url::site("albums/{$parent->id}") ?>"><?= $parent->title_edit ?></a></li>
<? endforeach ?>
<li class="active"><?= $item->title_edit ?></li>
</ul>
+<? endif ?>
diff --git a/themes/default/views/page.html.php b/themes/default/views/page.html.php
index de0eff93..702595a6 100644
--- a/themes/default/views/page.html.php
+++ b/themes/default/views/page.html.php
@@ -4,7 +4,13 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
- <title><?= _("Browse Photos") ?> :: <?= $item->title ?></title>
+ <title>
+ <? if ($page_type == "tag"): ?>
+ <?= _("Browse Tags") ?> :: <?= $tag->name ?>
+ <? else: ?>
+ <?= _("Browse Photos") ?> :: <?= $item->title ?>
+ <? endif ?>
+ </title>
<link rel="stylesheet" type="text/css" href="<?= url::file("lib/yui/reset-fonts-grids.css") ?>"
media="screen,print,projection" />
<link rel="stylesheet" type="text/css" href="<?= $theme->url("css/screen.css") ?>"
@@ -24,8 +30,8 @@
</head>
<body>
- <?= $theme->page_top() ?>
- <div id="doc4" class="yui-t5 gView">
+ <?= $theme->page_top() ?>
+ <div id="doc4" class="yui-t5 gView">
<div id="hd">
<div id="gHeader">
<?= $theme->display("header.html") ?>
diff --git a/themes/default/views/tag.html.php b/themes/default/views/tag.html.php
new file mode 100644
index 00000000..a4254e06
--- /dev/null
+++ b/themes/default/views/tag.html.php
@@ -0,0 +1,31 @@
+<? defined("SYSPATH") or die("No direct script access."); ?>
+<div id="gAlbumHeader">
+ <h1><?= $tag->name ?></h1>
+ <?= $theme->tag_top() ?>
+</div>
+
+<ul id="gAlbumGrid">
+ <? foreach ($children as $i => $child): ?>
+ <? $album_class = ""; ?>
+ <? if ($child->is_album()): ?>
+ <? $album_class = "gAlbum "; ?>
+ <? endif ?>
+ <li class="gItem <?= $album_class ?>">
+ <?= $theme->thumbnail_top($child) ?>
+ <a href="<?= url::site("{$child->type}s/{$child->id}") ?>">
+ <img id="gPhotoID-<?= $child->id ?>" class="gThumbnail"
+ alt="photo" src="<?= $child->thumbnail_url() ?>"
+ width="<?= $child->thumbnail_width ?>"
+ height="<?= $child->thumbnail_height ?>" />
+ </a>
+ <h2><?= $child->title_edit ?></h2>
+ <?= $theme->thumbnail_bottom($child) ?>
+ <ul class="gMetadata">
+ <?= $theme->thumbnail_info($child) ?>
+ </ul>
+ </li>
+ <? endforeach ?>
+</ul>
+<?= $theme->tag_bottom() ?>
+
+<?= $theme->pager() ?>