From 4de412e72270587cbd656ebafe08892344055a4d Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Wed, 30 Sep 2009 14:25:33 -0700 Subject: Enable the administration screen for the sidebar. Fix for ticket #110. --- modules/gallery/controllers/admin_sidebar.php | 39 ++++++++++++++++++ modules/gallery/helpers/gallery_event.php | 6 ++- modules/gallery/views/admin_sidebar.html.php | 47 +++++++++++++++++++--- .../gallery/views/admin_sidebar_blocks.html.php | 5 +++ themes/admin_wind/css/screen.css | 28 +++++++++++++ 5 files changed, 119 insertions(+), 6 deletions(-) create mode 100644 modules/gallery/views/admin_sidebar_blocks.html.php diff --git a/modules/gallery/controllers/admin_sidebar.php b/modules/gallery/controllers/admin_sidebar.php index 7e71426a..f029d259 100644 --- a/modules/gallery/controllers/admin_sidebar.php +++ b/modules/gallery/controllers/admin_sidebar.php @@ -21,8 +21,47 @@ class Admin_Sidebar_Controller extends Admin_Controller { public function index() { $view = new Admin_View("admin.html"); $view->content = new View("admin_sidebar.html"); + $view->content->csrf = access::csrf_token(); + $view->content->available = new View("admin_sidebar_blocks.html"); + $view->content->active = new View("admin_sidebar_blocks.html"); + list($view->content->available->blocks, $view->content->active->blocks) = $this->_get_blocks(); print $view; } + public function update() { + access::verify_csrf(); + + $available_blocks = block_manager::get_available_site_blocks(); + + $active_blocks = array(); + foreach ($this->input->get("block", array()) as $block_id) { + $active_blocks[] = explode(":", (string) $block_id); + } + block_manager::set_active("site.sidebar", $active_blocks); + + $result = array("result" => "success"); + list($available, $active) = $this->_get_blocks(); + $v = new View("admin_sidebar_blocks.html"); + $v->blocks = $available; + $result["available"] = $v->render(); + $v = new View("admin_sidebar_blocks.html"); + $v->blocks = $active; + $result["active"] = $v->render(); + + print json_encode($result); + } + + private function _get_blocks() { + $active_blocks = array(); + $available_blocks = block_manager::get_available_site_blocks(); + foreach (block_manager::get_active("site.sidebar") as $block) { + $id = "{$block[0]}:{$block[1]}"; + if (!empty($available_blocks[$id])) { + $active_blocks[$id] = $available_blocks[$id]; + unset($available_blocks[$id]); + } + } + return array($available_blocks, $active_blocks); + } } diff --git a/modules/gallery/helpers/gallery_event.php b/modules/gallery/helpers/gallery_event.php index 9305580f..69458e74 100644 --- a/modules/gallery/helpers/gallery_event.php +++ b/modules/gallery/helpers/gallery_event.php @@ -171,7 +171,11 @@ class gallery_event_Core { ->append(Menu::factory("link") ->id("theme_options") ->label(t("Theme Options")) - ->url(url::site("admin/theme_options")))) + ->url(url::site("admin/theme_options"))) + ->append(Menu::factory("link") + ->id("sidebar") + ->label(t("Manage Sidebar")) + ->url(url::site("admin/sidebar")))) ->append(Menu::factory("submenu") ->id("statistics_menu") ->label(t("Statistics"))) diff --git a/modules/gallery/views/admin_sidebar.html.php b/modules/gallery/views/admin_sidebar.html.php index 32386f5d..62b59ac1 100644 --- a/modules/gallery/views/admin_sidebar.html.php +++ b/modules/gallery/views/admin_sidebar.html.php @@ -1,9 +1,46 @@ - -

+ +

- -
-
\ No newline at end of file +
"> +
+

+
+
    + +
+
+
+
+

+
+
    + +
+
+
+
diff --git a/modules/gallery/views/admin_sidebar_blocks.html.php b/modules/gallery/views/admin_sidebar_blocks.html.php new file mode 100644 index 00000000..a1a71743 --- /dev/null +++ b/modules/gallery/views/admin_sidebar_blocks.html.php @@ -0,0 +1,5 @@ + + + $text): ?> +
  • + diff --git a/themes/admin_wind/css/screen.css b/themes/admin_wind/css/screen.css index 737c5939..c733b482 100644 --- a/themes/admin_wind/css/screen.css +++ b/themes/admin_wind/css/screen.css @@ -656,6 +656,34 @@ li.gDefaultGroup h4, li.gDefaultGroup .gUser { background: #ffc; } +/* admin/sidebar ~~~~~~~~~~~~~~~~~~~~~~~~~ */ +.gAdminBlocksList { + float: left; + height: 300px; + margin-left: 20px; + width: 30%; +} + +.gAdminBlocksList div:last-child { + border: .1em solid; + height: 100%; + overflow-y: auto; +} + +.gAdminBlocksList ul { + margin: .1em .1em; + padding: .1em; +} + +.gAdminBlocksList ul li { + background-color: #e8e8e8; + font-size: 1em; + font-weight: bold; + margin: .5em; + padding: .3em .8em; +} + + /** ******************************************************************* * 5) Navigation and menus *********************************************************************/ -- cgit v1.2.3