summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/comment/helpers/comment_block.php2
-rw-r--r--modules/gallery/controllers/admin_dashboard.php4
-rw-r--r--modules/gallery/controllers/admin_sidebar.php28
-rw-r--r--modules/gallery/helpers/block_manager.php24
-rw-r--r--modules/gallery/helpers/gallery_block.php5
-rw-r--r--modules/gallery/libraries/Theme_View.php12
-rw-r--r--modules/gallery/module.info2
-rw-r--r--modules/gallery/views/admin_sidebar.html.php9
-rw-r--r--modules/image_block/helpers/image_block_block.php (renamed from modules/image_block/helpers/image_block_theme.php)51
-rw-r--r--modules/info/helpers/info_block.php (renamed from modules/rss/helpers/rss_theme.php)35
-rw-r--r--modules/info/helpers/info_theme.php10
-rw-r--r--modules/rss/helpers/rss_block.php49
-rw-r--r--modules/tag/helpers/tag_block.php45
-rw-r--r--modules/tag/helpers/tag_theme.php19
-rw-r--r--modules/user/helpers/user_block.php46
-rw-r--r--modules/user/helpers/user_theme.php17
16 files changed, 261 insertions, 97 deletions
diff --git a/modules/comment/helpers/comment_block.php b/modules/comment/helpers/comment_block.php
index 08182905..b989be6b 100644
--- a/modules/comment/helpers/comment_block.php
+++ b/modules/comment/helpers/comment_block.php
@@ -18,7 +18,7 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class comment_block_Core {
- static function get_list() {
+ static function get_admin_list() {
return array("recent_comments" => t("Recent Comments"));
}
diff --git a/modules/gallery/controllers/admin_dashboard.php b/modules/gallery/controllers/admin_dashboard.php
index 3cb97b14..6bf3b966 100644
--- a/modules/gallery/controllers/admin_dashboard.php
+++ b/modules/gallery/controllers/admin_dashboard.php
@@ -34,7 +34,7 @@ class Admin_Dashboard_Controller extends Admin_Controller {
$form = gallery_block::get_add_block_form();
if ($form->validate()) {
list ($module_name, $id) = explode(":", $form->add_block->id->value);
- $available = block_manager::get_available();
+ $available = block_manager::get_available_admin_blocks();
if ($form->add_block->center->value) {
block_manager::add("dashboard_center", $module_name, $id);
@@ -66,7 +66,7 @@ class Admin_Dashboard_Controller extends Admin_Controller {
}
if (!empty($deleted)) {
- $available = block_manager::get_available();
+ $available = block_manager::get_available_admin_blocks();
$title = $available[join(":", $deleted)];
message::success(t("Removed <b>%title</b> block", array("title" => $title)));
}
diff --git a/modules/gallery/controllers/admin_sidebar.php b/modules/gallery/controllers/admin_sidebar.php
new file mode 100644
index 00000000..7e71426a
--- /dev/null
+++ b/modules/gallery/controllers/admin_sidebar.php
@@ -0,0 +1,28 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2009 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 Admin_Sidebar_Controller extends Admin_Controller {
+ public function index() {
+ $view = new Admin_View("admin.html");
+ $view->content = new View("admin_sidebar.html");
+ print $view;
+ }
+
+}
+
diff --git a/modules/gallery/helpers/block_manager.php b/modules/gallery/helpers/block_manager.php
index 20b641d4..b99a6571 100644
--- a/modules/gallery/helpers/block_manager.php
+++ b/modules/gallery/helpers/block_manager.php
@@ -38,13 +38,21 @@ class block_manager_Core {
self::set_active($location, $blocks);
}
- static function get_available() {
+ static function get_available_admin_blocks() {
+ return self::_get_blocks("get_admin_list");
+ }
+
+ static function get_available_site_blocks() {
+ return self::_get_blocks("get_site_list");
+ }
+
+ private static function _get_blocks($function) {
$blocks = array();
foreach (module::active() as $module) {
$class_name = "{$module->name}_block";
- if (method_exists($class_name, "get_list")) {
- foreach (call_user_func(array($class_name, "get_list")) as $id => $title) {
+ if (method_exists($class_name, $function)) {
+ foreach (call_user_func(array($class_name, $function)) as $id => $title) {
$blocks["{$module->name}:$id"] = $title;
}
}
@@ -52,14 +60,16 @@ class block_manager_Core {
return $blocks;
}
- static function get_html($location) {
+ static function get_html($location, $theme) {
$active = self::get_active($location);
$result = "";
foreach ($active as $id => $desc) {
if (method_exists("$desc[0]_block", "get")) {
- $block = call_user_func(array("$desc[0]_block", "get"), $desc[1]);
- $block->id = $id;
- $result .= $block;
+ $block = call_user_func(array("$desc[0]_block", "get"), $desc[1], $theme);
+ if (!empty($block)) {
+ $block->id = $id;
+ $result .= $block;
+ }
}
}
return $result;
diff --git a/modules/gallery/helpers/gallery_block.php b/modules/gallery/helpers/gallery_block.php
index b7816954..f2cb8ded 100644
--- a/modules/gallery/helpers/gallery_block.php
+++ b/modules/gallery/helpers/gallery_block.php
@@ -18,7 +18,7 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class gallery_block_Core {
- static function get_list() {
+ static function get_admin_list() {
return array(
"welcome" => t("Welcome to Gallery 3!"),
"photo_stream" => t("Photo Stream"),
@@ -94,7 +94,8 @@ class gallery_block_Core {
$form = new Forge("admin/dashboard/add_block", "", "post",
array("id" => "gAddDashboardBlockForm"));
$group = $form->group("add_block")->label(t("Add Block"));
- $group->dropdown("id")->label(t("Available Blocks"))->options(block_manager::get_available());
+ $group->dropdown("id")->label(t("Available Blocks"))
+ ->options(block_manager::get_available_admin_blocks());
$group->submit("center")->value(t("Add to center"));
$group->submit("sidebar")->value(t("Add to sidebar"));
return $form;
diff --git a/modules/gallery/libraries/Theme_View.php b/modules/gallery/libraries/Theme_View.php
index 728e8bf9..ab25a4b6 100644
--- a/modules/gallery/libraries/Theme_View.php
+++ b/modules/gallery/libraries/Theme_View.php
@@ -154,6 +154,17 @@ class Theme_View_Core extends Gallery_View {
}
/**
+ * Print out the sidebar.
+ */
+ public function sidebar_blocks() {
+ $sidebar = block_manager::get_html("site.sidebar", $this);
+ if (empty($sidebar) && user::active()->admin) {
+ $sidebar = new View("no_sidebar.html");
+ }
+ return $sidebar;
+ }
+
+ /**
* Handle all theme functions that insert module content.
*/
public function __call($function, $args) {
@@ -176,7 +187,6 @@ class Theme_View_Core extends Gallery_View {
case "photo_top":
case "resize_bottom":
case "resize_top":
- case "sidebar_blocks":
case "sidebar_bottom":
case "sidebar_top":
case "thumb_bottom":
diff --git a/modules/gallery/module.info b/modules/gallery/module.info
index bffcb1c6..f509ff08 100644
--- a/modules/gallery/module.info
+++ b/modules/gallery/module.info
@@ -1,3 +1,3 @@
name = "Gallery 3"
description = "Gallery core application"
-version = 14
+version = 15
diff --git a/modules/gallery/views/admin_sidebar.html.php b/modules/gallery/views/admin_sidebar.html.php
new file mode 100644
index 00000000..32386f5d
--- /dev/null
+++ b/modules/gallery/views/admin_sidebar.html.php
@@ -0,0 +1,9 @@
+<?php defined("SYSPATH") or die("No direct script access.") ?>
+
+<h1> <?= t("Arrange Sidebar") ?> </h1>
+<p>
+ <?= t("Select and drag blocks from the available column to the active column to add to the sidebar; remove by dragging the other way.") ?>
+</p>
+
+<div id="gSiteBlocks">
+</div> \ No newline at end of file
diff --git a/modules/image_block/helpers/image_block_theme.php b/modules/image_block/helpers/image_block_block.php
index 78138b23..d0402eb6 100644
--- a/modules/image_block/helpers/image_block_theme.php
+++ b/modules/image_block/helpers/image_block_block.php
@@ -17,34 +17,47 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
-class image_block_theme_Core {
- static function sidebar_blocks($theme) {
- $block = new Block();
- $block->css_id = "gImageBlock";
- $block->title = t("Random Image");
- $block->content = new View("image_block_block.html");
+class image_block_block_Core {
+ static function get_site_list() {
+ return array("random_image" => t("Random Image"));
+ }
- $random = ((float)mt_rand()) / (float)mt_getrandmax();
+ static function get($block_id, $theme) {
+ $block = "";
+ switch ($block_id) {
+ case "random_image":
+ $block = new Block();
+ $block->css_id = "gImageBlock";
+ $block->title = t("Random Image");
+ $block->content = new View("image_block_block.html");
- $items = ORM::factory("item")
- ->viewable()
- ->where("type !=", "album")
- ->where("rand_key < ", $random)
- ->orderby(array("rand_key" => "DESC"))
- ->find_all(1);
+ $random = ((float)mt_rand()) / (float)mt_getrandmax();
- if ($items->count() == 0) {
- // Try once more. If this fails, just ditch the block altogether
$items = ORM::factory("item")
->viewable()
->where("type !=", "album")
- ->where("rand_key >= ", $random)
+ ->where("rand_key < ", $random)
->orderby(array("rand_key" => "DESC"))
->find_all(1);
- }
- $block->content->item = $items->current();
+ if ($items->count() == 0) {
+ // Try once more. If this fails, just ditch the block altogether
+ $items = ORM::factory("item")
+ ->viewable()
+ ->where("type !=", "album")
+ ->where("rand_key >= ", $random)
+ ->orderby(array("rand_key" => "DESC"))
+ ->find_all(1);
+ }
+
+ if ($items->count() > 0) {
+ $block->content->item = $items->current();
+ } else {
+ $block = "";
+ }
+ break;
+ }
- return $items->count() == 0 ? "" : $block;
+ return $block;
}
}
diff --git a/modules/rss/helpers/rss_theme.php b/modules/info/helpers/info_block.php
index 3d1b9a29..3a853609 100644
--- a/modules/rss/helpers/rss_theme.php
+++ b/modules/info/helpers/info_block.php
@@ -17,24 +17,23 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
-class rss_theme_Core {
- static function sidebar_blocks($theme) {
- $block = new Block();
- $block->css_id = "gRss";
- $block->title = t("Available RSS Feeds");
- $block->content = new View("rss_block.html");
- $block->content->feeds = array();
- foreach (module::active() as $module) {
- $class_name = "{$module->name}_rss";
- if (method_exists($class_name, "available_feeds")) {
- $block->content->feeds = array_merge(
- $block->content->feeds,
- call_user_func(array($class_name, "available_feeds"), $theme->item(), $theme->tag()));
- }
- }
+class info_block_Core {
+ static function get_site_list() {
+ return array("metadata" => t("Metadata"));
+ }
- if ($block->content->feeds) {
- return $block;
+ static function get($block_id, $theme) {
+ $block = "";
+ switch ($block_id) {
+ case "metadata":
+ if ($theme->item()) {
+ $block = new Block();
+ $block->css_id = "gMetadata";
+ $block->title = $theme->item()->is_album() ? t("Album Info") : t("Photo Info");
+ $block->content = new View("info_block.html");
+ }
+ break;
}
+ return $block;
}
-}
+} \ No newline at end of file
diff --git a/modules/info/helpers/info_theme.php b/modules/info/helpers/info_theme.php
index 4bf894ad..8b8602a1 100644
--- a/modules/info/helpers/info_theme.php
+++ b/modules/info/helpers/info_theme.php
@@ -18,16 +18,6 @@
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
class info_theme_Core {
- static function sidebar_blocks($theme) {
- if ($theme->item()) {
- $block = new Block();
- $block->css_id = "gMetadata";
- $block->title = $theme->item()->is_album() ? t("Album Info") : t("Photo Info");
- $block->content = new View("info_block.html");
- return $block;
- }
- }
-
static function thumb_info($theme, $item) {
$results = "";
if ($item->view_count) {
diff --git a/modules/rss/helpers/rss_block.php b/modules/rss/helpers/rss_block.php
new file mode 100644
index 00000000..43043f5f
--- /dev/null
+++ b/modules/rss/helpers/rss_block.php
@@ -0,0 +1,49 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2009 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 rss_block_Core {
+ static function get_site_list() {
+ return array("rss_feeds" => t("Available RSS Feeds"));
+ }
+
+ static function get($block_id, $theme) {
+ $block = "";
+ switch ($block_id) {
+ case "rss_feeds":
+ $feeds = array();
+ foreach (module::active() as $module) {
+ $class_name = "{$module->name}_rss";
+ if (method_exists($class_name, "available_feeds")) {
+ $feeds = array_merge($feeds,
+ call_user_func(array($class_name, "available_feeds"), $theme->item(), $theme->tag()));
+ }
+ }
+ if (!empty($feeds)) {
+ $block = new Block();
+ $block->css_id = "gRss";
+ $block->title = t("Available RSS Feeds");
+ $block->content = new View("rss_block.html");
+ $block->content->feeds = $feeds;
+ }
+ break;
+ }
+
+ return $block;
+ }
+}
diff --git a/modules/tag/helpers/tag_block.php b/modules/tag/helpers/tag_block.php
new file mode 100644
index 00000000..bbcc5fd1
--- /dev/null
+++ b/modules/tag/helpers/tag_block.php
@@ -0,0 +1,45 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2009 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 tag_block_Core {
+ static function get_site_list() {
+ return array("tag" => t("Popular Tags"));
+ }
+
+ static function get($block_id, $theme) {
+ $block = "";
+ switch ($block_id) {
+ case "tag":
+ $block = new Block();
+ $block->css_id = "gTag";
+ $block->title = t("Popular Tags");
+ $block->content = new View("tag_block.html");
+ $block->content->cloud = tag::cloud(30);
+
+ if ($theme->item() && $theme->page_type() != "tag" && access::can("edit", $theme->item())) {
+ $controller = new Tags_Controller();
+ $block->content->form = tag::get_add_form($theme->item());
+ } else {
+ $block->content->form = "";
+ }
+ break;
+ }
+ return $block;
+ }
+} \ No newline at end of file
diff --git a/modules/tag/helpers/tag_theme.php b/modules/tag/helpers/tag_theme.php
index 1bce9bd8..4f22d2ac 100644
--- a/modules/tag/helpers/tag_theme.php
+++ b/modules/tag/helpers/tag_theme.php
@@ -28,25 +28,6 @@ class tag_theme_Core {
$theme->script("tag.js");
}
- static function sidebar_blocks($theme) {
- // @todo this needs to be data driven
-
- $block = new Block();
- $block->css_id = "gTag";
- $block->title = t("Popular Tags");
- $block->content = new View("tag_block.html");
- $block->content->cloud = tag::cloud(30);
-
- if ($theme->item() && $theme->page_type() != "tag" && access::can("edit", $theme->item())) {
- $controller = new Tags_Controller();
- $block->content->form = tag::get_add_form($theme->item());
- } else {
- $block->content->form = "";
- }
-
- return $block;
- }
-
static function sort_by_name($tag1, $tag2) {
return strcasecmp($tag1->name, $tag2->name);
}
diff --git a/modules/user/helpers/user_block.php b/modules/user/helpers/user_block.php
new file mode 100644
index 00000000..e7671f06
--- /dev/null
+++ b/modules/user/helpers/user_block.php
@@ -0,0 +1,46 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2009 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 user_block_Core {
+ static function get_site_list() {
+ return array("language" => t("Language Preference"));
+ }
+
+ static function get($block_id, $theme) {
+ $block = "";
+ switch ($block_id) {
+ case "language":
+ $locales = locales::installed();
+ foreach ($locales as $locale => $display_name) {
+ $locales[$locale] = SafeString::of_safe_html($display_name);
+ }
+ if (count($locales) > 1) {
+ $block = new Block();
+ $block->css_id = "gUserLanguageBlock";
+ $block->title = t("Language Preference");
+ $block->content = new View("user_languages_block.html");
+ $block->content->installed_locales =
+ array_merge(array("" => t("« none »")), $locales);
+ $block->content->selected = (string) user::cookie_locale();
+ }
+ break;
+ }
+ return $block;
+ }
+} \ No newline at end of file
diff --git a/modules/user/helpers/user_theme.php b/modules/user/helpers/user_theme.php
index 098d87fd..69d63eaf 100644
--- a/modules/user/helpers/user_theme.php
+++ b/modules/user/helpers/user_theme.php
@@ -33,21 +33,4 @@ class user_theme_Core {
return $view->render();
}
}
-
- static function sidebar_blocks($theme) {
- $locales = locales::installed();
- foreach ($locales as $locale => $display_name) {
- $locales[$locale] = SafeString::of_safe_html($display_name);
- }
- if (count($locales) > 1) {
- $block = new Block();
- $block->css_id = "gUserLanguageBlock";
- $block->title = t("Language Preference");
- $block->content = new View("user_languages_block.html");
- $block->content->installed_locales =
- array_merge(array("" => t("« none »")), $locales);
- $block->content->selected = (string) user::cookie_locale();
- return $block;
- }
- }
}