summaryrefslogtreecommitdiff
path: root/core/controllers
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2008-12-19 09:47:13 +0000
committerBharat Mediratta <bharat@menalto.com>2008-12-19 09:47:13 +0000
commit855a5928ce74f72352c454c3d613eea60d39682c (patch)
tree11ed47e82529b4318f0ce8a3f720e5e5c1d29e17 /core/controllers
parent2438dba3961265e92cbc804ca07e893ba50e03d1 (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/controllers')
-rw-r--r--core/controllers/admin.php37
-rw-r--r--core/controllers/admin_dashboard.php25
2 files changed, 40 insertions, 22 deletions
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");
+ }
+}
+