diff options
author | Bharat Mediratta <bharat@menalto.com> | 2008-12-19 09:47:13 +0000 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2008-12-19 09:47:13 +0000 |
commit | 855a5928ce74f72352c454c3d613eea60d39682c (patch) | |
tree | 11ed47e82529b4318f0ce8a3f720e5e5c1d29e17 /core | |
parent | 2438dba3961265e92cbc804ca07e893ba50e03d1 (diff) |
Create a new pattern for Site Admin controllers:
1) They must all start with "admin_". This pattern is not directly
routable.
2) Their urls must be /admin/xxx.
3) The Admin_Controller will take the xxx and look for Admin_Xxx_Controller
and will delegate to that admin controller, after doing security checks.
Moved the users and dashboard views into individual modules for now.
Diffstat (limited to 'core')
-rw-r--r-- | core/config/routes.php | 5 | ||||
-rw-r--r-- | core/controllers/admin.php | 37 | ||||
-rw-r--r-- | core/controllers/admin_dashboard.php | 25 | ||||
-rw-r--r-- | core/helpers/core_menu.php | 2 | ||||
-rw-r--r-- | core/views/admin_dashboard.html.php | 57 |
5 files changed, 101 insertions, 25 deletions
diff --git a/core/config/routes.php b/core/config/routes.php index 9a802a27..cf1a9e0d 100644 --- a/core/config/routes.php +++ b/core/config/routes.php @@ -21,10 +21,11 @@ // The abstract REST_Controller is not directly routable. $config["^rest\b.*"] = null; +// Admin controllers are not available, except via /admin +$config["^admin_.*"] = null; + // Redirect /form/add and /form/edit to REST_Controller. $config["^form/(edit|add)/(\w+)/(.*)$"] = "$2/form_$1/$3"; -$config["^admin/(\w+)/(.*)$"] = "$1_admin/$2"; - // For now our default page is the scaffolding. $config["_default"] = "welcome"; diff --git a/core/controllers/admin.php b/core/controllers/admin.php index 9147059b..30e65886 100644 --- a/core/controllers/admin.php +++ b/core/controllers/admin.php @@ -25,32 +25,25 @@ class Admin_Controller extends Controller { parent::__construct(); } - public function index() { - $theme_name = module::get_var("core", "active_admin_theme", "admin_default"); - $template = new Admin_View("admin.html", $theme_name); - $template->content = new View("dashboard.html"); - print $template; - } - - public function __call($page_name, $args) { - $theme_name = module::get_var("core", "active_admin_theme", "admin_default"); - // For now, we have only two legal pages. - // @todo get these pages from the modules - switch($page_name) { - case "users": - $view = new Admin_View("users.html", $theme_name); - $view->users = ORM::factory("user")->find_all(); - break; + public function __call($controller_name, $args) { + if ($controller_name == "index") { + $controller_name = "dashboard"; + } - case "dashboard": - $view = new Admin_View("dashboard.html", $theme_name); - break; + $controller = "Admin_{$controller_name}_Controller"; + $controller = new $controller; - default: - Kohana::show_404(); + if ($args) { + $method = array_unshift($args); + } else { + $method = "index"; } - print $view; + $theme_name = module::get_var("core", "active_admin_theme", "admin_default"); + $template = new Admin_View("admin.html", $theme_name); + $template->content = + call_user_func_array(array(new $controller, $method), $args); + print $template; } } diff --git a/core/controllers/admin_dashboard.php b/core/controllers/admin_dashboard.php new file mode 100644 index 00000000..7d752495 --- /dev/null +++ b/core/controllers/admin_dashboard.php @@ -0,0 +1,25 @@ +<?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 Admin_Dashboard_Controller extends Controller { + public function index() { + return new View("admin_dashboard.html"); + } +} + diff --git a/core/helpers/core_menu.php b/core/helpers/core_menu.php index 674c73e2..284bb10d 100644 --- a/core/helpers/core_menu.php +++ b/core/helpers/core_menu.php @@ -70,7 +70,7 @@ class core_menu_Core { ->append(Menu::factory("link") ->id("dashboard") ->label(_("Dashboard")) - ->url(url::site("admin/dashboard"))) + ->url(url::site("admin"))) ->append(Menu::factory("link") ->id("general_settings") ->label(_("General Settings")) diff --git a/core/views/admin_dashboard.html.php b/core/views/admin_dashboard.html.php new file mode 100644 index 00000000..1cfd8e23 --- /dev/null +++ b/core/views/admin_dashboard.html.php @@ -0,0 +1,57 @@ +<? defined("SYSPATH") or die("No direct script access."); ?> +<div class="gBlock"> + <h2>Welcome to Gallery 3!</h2> + <div class="gBlockContent"> + <p>This is your administration dashboard and it provides a quick overview of status messages, + recent updates, and frequently used options. Add or remove blocks and rearrange them + to tailor to your needs. The admin menu provides quick access to all of Gallery 3's options + and settings. Here are a few of the most used options to get you started.</p> + <ul> + <li><a href="#">General Settings</a> - General configuation options for your Gallery.</li> + <li><a href="#">Modules</a> - Manage available and installed modules.</li> + <li><a href="#">Presentation</a> - Choose a theme, set image sizes.</li> + </ul> + </div> +</div> + +<div class="gBlock"> + <h2>Status Messages</h2> + <ul class="gBlockContent gMessages"> + <li class="gWarning"><a href="#" title="">Gallery 3.1 is available, you're running Gallery 3.0. Update now!</a></li> + <li class="gError"><a href="#" title="">Unable to write to /home/username/gallery3/var</a></li> + <li class="gSuccess"><a href="#" title="">Permissions issues fixed</a></li> + <li class="gInfo"><a href="#" title="">Just a plain information message</a></li> + <li class="gHelp"><a href="#" title="">Contextual help or tip<br/>And here's a second line</a></li> + </ul> +</div> + +<div id="gPhotoStream" class="gBlock"> + <h2>Photo Stream</h2> + <div class="gBlockContent"> + <p>Recent photos added to your Gallery</p> + <img src="<?= $theme->url("images/photostream.png") ?>" alt="" /> + <p class="gWarning">Slider type of display. Show titles underneath or on hover. Draw a keyline around albums, or differentiate some how. Each will be linked to item view</p> + </div> +</div> + +<div id="gLogEntries" class="gBlock"> + <h2>Recent Comments</h2> + <ul class="gBlockContent"> + <li><a href="">hacker</a> 2008-12-10 23:02:23 Something happened</li> + <li><a href="">username</a> 2008-12-10 23:02:23 Someone logged in</li> + <li><a href="">username</a> 2008-12-10 23:02:23 New module installed</li> + <li><a href="">username</a> 2008-12-10 23:02:23 Someone logged in</li> + <li><a href="">username</a> 2008-12-10 23:02:23 RSS feed updated</li> + </ul> +</div> + +<div id="gLogEntries" class="gBlock"> + <h2>Log Entries</h2> + <ul class="gBlockContent"> + <li>2008-12-10 23:02:23 Something happened</li> + <li>2008-12-10 23:02:23 Someone logged in</li> + <li>2008-12-10 23:02:23 New module installed</li> + <li>2008-12-10 23:02:23 Someone logged in</li> + <li>2008-12-10 23:02:23 RSS feed updated</li> + </ul> +</div> |