diff options
author | Felix Rabinovich <virshu@users.sourceforge.net> | 2009-01-09 23:31:46 +0000 |
---|---|---|
committer | Felix Rabinovich <virshu@users.sourceforge.net> | 2009-01-09 23:31:46 +0000 |
commit | b647aa0f74e66548d6d69fc4585b89220ce60043 (patch) | |
tree | 81c78a1d1694462d45db75ab7f56d9c3cbc192de /core/helpers | |
parent | 1e14594d689a1150e922a5f5fe01956be4ccaf21 (diff) |
Theme Administration v. 2. Doesn't distinguish between regular and admin themes yet
Diffstat (limited to 'core/helpers')
-rw-r--r-- | core/helpers/core_installer.php | 18 | ||||
-rw-r--r-- | core/helpers/module.php | 14 | ||||
-rw-r--r-- | core/helpers/theme.php | 55 |
3 files changed, 73 insertions, 14 deletions
diff --git a/core/helpers/core_installer.php b/core/helpers/core_installer.php index 043af641..115aca20 100644 --- a/core/helpers/core_installer.php +++ b/core/helpers/core_installer.php @@ -112,6 +112,14 @@ class core_installer { UNIQUE KEY(`name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); + $db->query("CREATE TABLE `themes` ( + `id` int(9) NOT NULL auto_increment, + `name` varchar(64) default NULL, + `version` int(9) default NULL, + PRIMARY KEY (`id`), + UNIQUE KEY(`name`)) + ENGINE=InnoDB DEFAULT CHARSET=utf8;"); + $db->query("CREATE TABLE `permissions` ( `id` int(9) NOT NULL auto_increment, `name` varchar(64) default NULL, @@ -216,6 +224,15 @@ class core_installer { "missing_graphics_toolkit"); } + // Instantiate default themes (regular and admin) + foreach (array("default", "admin_default") as $theme_name) { + $theme_info = new ArrayObject(parse_ini_file(THEMEPATH . $theme_name . "/theme.info"), + ArrayObject::ARRAY_AS_PROPS); + $theme = ORM::factory("theme"); + $theme->name = $theme_name; + $theme->version = $theme_info->version; + $theme->save(); + } module::set_version("core", 1); } } @@ -229,6 +246,7 @@ class core_installer { $db->query("DROP TABLE IF EXISTS `logs`;"); $db->query("DROP TABLE IF EXISTS `messages`;"); $db->query("DROP TABLE IF EXISTS `modules`;"); + $db->query("DROP TABLE IF EXISTS `themes`;"); $db->query("DROP TABLE IF EXISTS `translations_incoming`;"); $db->query("DROP TABLE IF EXISTS `permissions`;"); $db->query("DROP TABLE IF EXISTS `sessions`;"); diff --git a/core/helpers/module.php b/core/helpers/module.php index 5568ee7a..0c800786 100644 --- a/core/helpers/module.php +++ b/core/helpers/module.php @@ -184,20 +184,6 @@ class module_Core { public static function dummy_error_handler() { } /** - * Load the active theme. This is called at bootstrap time. We will only ever have one theme - * active for any given request. - */ - public static function load_themes() { - $modules = Kohana::config('core.modules'); - if (Router::$controller == "admin") { - array_unshift($modules, THEMEPATH . 'admin_default'); - } else { - array_unshift($modules, THEMEPATH . 'default'); - } - Kohana::config_set('core.modules', $modules); - } - - /** * Run a specific event on all active modules. * @param string $name the event name * @param mixed $data data to pass to each event handler diff --git a/core/helpers/theme.php b/core/helpers/theme.php new file mode 100644 index 00000000..62433898 --- /dev/null +++ b/core/helpers/theme.php @@ -0,0 +1,55 @@ +<?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. + */ + +/** + * This is the API for handling themes. + * + * Note: by design, this class does not do any permission checking. + */ +class theme_Core { + /** + * Load the active theme. This is called at bootstrap time. We will only ever have one theme + * active for any given request. + */ + public static function load_themes() { + $modules = Kohana::config('core.modules'); + if (Router::$controller == "admin") { + array_unshift($modules, THEMEPATH . 'admin_default'); + } else { + array_unshift($modules, THEMEPATH . 'default'); + } + Kohana::config_set('core.modules', $modules); + } + + public static function get_edit_form_admin($theme) { + $form = new Forge("admin/themes/edit/$theme->name", "Theme Parameters", "GET"); +// array("id" => "gThemeDetails")); + $group = $form->group("edit_theme")->label($theme->description); + $group->input("name")->label(t("Name"))->id("gName")->value($theme->name); + $group->submit(t("Modify Theme")); + return $form; + } + + public static function get_edit_form_content($theme_name) { + $file = THEMEPATH . $theme_name . "/theme.info"; + $theme_info = new ArrayObject(parse_ini_file($file), ArrayObject::ARRAY_AS_PROPS); + } +} + |