diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/gallery/controllers/admin_theme_options.php | 52 | ||||
-rw-r--r-- | modules/gallery/helpers/gallery_event.php | 21 | ||||
-rw-r--r-- | modules/gallery/helpers/theme.php | 33 | ||||
-rw-r--r-- | modules/gallery/views/admin_theme_options.html.php | 2 |
4 files changed, 61 insertions, 47 deletions
diff --git a/modules/gallery/controllers/admin_theme_options.php b/modules/gallery/controllers/admin_theme_options.php index dc421ee1..27a67bdb 100644 --- a/modules/gallery/controllers/admin_theme_options.php +++ b/modules/gallery/controllers/admin_theme_options.php @@ -21,44 +21,48 @@ class Admin_Theme_Options_Controller extends Admin_Controller { public function index() { $view = new Admin_View("admin.html"); $view->content = new View("admin_theme_options.html"); - - $theme_name = theme::$site; - $info = theme::get_info($theme_name); - - // Don't use the Kohana cascading file system because we don't want to mess up the admin theme - $theme_helper = THEMEPATH . "$theme_name/helpers/{$theme_name}.php"; - @require_once($theme_helper); - $view->content->form = call_user_func_array(array(theme::$site, "get_admin_form"), - array("admin/theme_options/save/")); - - $view->content->title = t("%name options", array("name" => $info->name)); - + $view->content->form = theme::get_edit_form_admin(); print $view; } public function save() { access::verify_csrf(); - // Don't use the Kohana cascading file system because we don't want to mess up the admin theme - $theme_name = theme::$site; - $theme_helper = THEMEPATH . "$theme_name/helpers/{$theme_name}.php"; - @require_once($theme_helper); + $form = theme::get_edit_form_admin(); + if ($form->validate()) { + module::set_var("gallery", "page_size", $form->edit_theme->page_size->value); - $info = theme::get_info($theme_name); + $thumb_size = $form->edit_theme->thumb_size->value; + $thumb_dirty = false; + if (module::get_var("gallery", "thumb_size") != $thumb_size) { + graphics::remove_rule("gallery", "thumb", "gallery_graphics::resize"); + graphics::add_rule( + "gallery", "thumb", "gallery_graphics::resize", + array("width" => $thumb_size, "height" => $thumb_size, "master" => Image::AUTO), + 100); + module::set_var("gallery", "thumb_size", $thumb_size); + } - $form = call_user_func_array(array(theme::$site, "get_admin_form"), - array("admin/theme_options/save/")); - if ($form->validate()) { + $resize_size = $form->edit_theme->resize_size->value; + $resize_dirty = false; + if (module::get_var("gallery", "resize_size") != $resize_size) { + graphics::remove_rule("gallery", "resize", "gallery_graphics::resize"); + graphics::add_rule( + "gallery", "resize", "gallery_graphics::resize", + array("width" => $resize_size, "height" => $resize_size, "master" => Image::AUTO), + 100); + module::set_var("gallery", "resize_size", $resize_size); + } - $view->content->form = call_user_func_array(array(theme::$site, "update_options"), - array($form)); + module::set_var("gallery", "header_text", $form->edit_theme->header_text->value); + module::set_var("gallery", "footer_text", $form->edit_theme->footer_text->value); + module::set_var("gallery", "show_credits", $form->edit_theme->show_credits->value); - message::success(t("Updated %name options", array("name" => $info->name))); + message::success(t("Updated theme details")); url::redirect("admin/theme_options"); } else { $view = new Admin_View("admin.html"); $view->content = $form; - $view->content->title = t("%name options", array("name" => $info->name)); print $view; } } diff --git a/modules/gallery/helpers/gallery_event.php b/modules/gallery/helpers/gallery_event.php index 88f4a67b..3139951f 100644 --- a/modules/gallery/helpers/gallery_event.php +++ b/modules/gallery/helpers/gallery_event.php @@ -245,7 +245,11 @@ class gallery_event_Core { ->id("themes") ->label(t("Theme choice")) ->url(url::site("admin/themes"))) - ->append(Menu::factory("link") + ->append(Menu::factory("link") + ->id("theme_options") + ->label(t("Theme options")) + ->url(url::site("admin/theme_options"))) + ->append(Menu::factory("link") ->id("sidebar") ->label(t("Manage sidebar")) ->url(url::site("admin/sidebar")))) @@ -256,21 +260,6 @@ class gallery_event_Core { ->id("maintenance") ->label(t("Maintenance")) ->url(url::site("admin/maintenance"))); - - $theme_name = theme::$site; - $theme_helper = THEMEPATH . "$theme_name/helpers/{$theme_name}.php"; - if (file_exists($theme_helper)) { - require_once($theme_helper); - - if (method_exists($theme_name, "get_admin_form")) { - $info = theme::get_info($theme_name); - $menu->get("appearance_menu") - ->add_after("themes", Menu::factory("link") - ->id("theme_options") - ->label(t("%name options", array("name" => $info->name))) - ->url(url::site("admin/theme_options"))); - } - } return $menu; } diff --git a/modules/gallery/helpers/theme.php b/modules/gallery/helpers/theme.php index 6e8943b3..16ed104e 100644 --- a/modules/gallery/helpers/theme.php +++ b/modules/gallery/helpers/theme.php @@ -24,9 +24,6 @@ * Note: by design, this class does not do any permission checking. */ class theme_Core { - public static $site; - public static $admin; - /** * Load the active theme. This is called at bootstrap time. We will only ever have one theme * active for any given request. @@ -38,16 +35,39 @@ class theme_Core { $path = "/" . $input->get("kohana_uri"); } - self::$site = module::get_var("gallery", "active_site_theme"); - self::$admin = module::get_var("gallery", "active_admin_theme"); if (!(identity::active_user()->admin && $theme_name = $input->get("theme"))) { - $theme_name = $path == "/admin" || !strncmp($path, "/admin/", 7) ? self::$admin : self::$site; + $theme_name = module::get_var( + "gallery", + $path == "/admin" || !strncmp($path, "/admin/", 7) ? + "active_admin_theme" : "active_site_theme"); } $modules = Kohana::config("core.modules"); array_unshift($modules, THEMEPATH . $theme_name); Kohana::config_set("core.modules", $modules); } + static function get_edit_form_admin() { + $form = new Forge("admin/theme_options/save/", "", null, array("id" =>"g-theme-options-form")); + $group = $form->group("edit_theme"); + $group->input("page_size")->label(t("Items per page"))->id("g-page-size") + ->rules("required|valid_digit") + ->value(module::get_var("gallery", "page_size")); + $group->input("thumb_size")->label(t("Thumbnail size (in pixels)"))->id("g-thumb-size") + ->rules("required|valid_digit") + ->value(module::get_var("gallery", "thumb_size")); + $group->input("resize_size")->label(t("Resized image size (in pixels)"))->id("g-resize-size") + ->rules("required|valid_digit") + ->value(module::get_var("gallery", "resize_size")); + $group->textarea("header_text")->label(t("Header text"))->id("g-header-text") + ->value(module::get_var("gallery", "header_text")); + $group->textarea("footer_text")->label(t("Footer text"))->id("g-footer-text") + ->value(module::get_var("gallery", "footer_text")); + $group->checkbox("show_credits")->label(t("Show site credits"))->id("g-footer-text") + ->checked(module::get_var("gallery", "show_credits")); + $group->submit("")->value(t("Save")); + return $form; + } + static function get_info($theme_name) { $theme_name = preg_replace("/[^\w]/", "", $theme_name); $file = THEMEPATH . "$theme_name/theme.info"; @@ -58,3 +78,4 @@ class theme_Core { return $theme_info; } } + diff --git a/modules/gallery/views/admin_theme_options.html.php b/modules/gallery/views/admin_theme_options.html.php index 9f28e055..a4bf1c4e 100644 --- a/modules/gallery/views/admin_theme_options.html.php +++ b/modules/gallery/views/admin_theme_options.html.php @@ -1,6 +1,6 @@ <?php defined("SYSPATH") or die("No direct script access.") ?> <div class="g-block"> - <h1> <?= t($title) ?> </h1> + <h1> <?= t("Theme Options") ?> </h1> <div class="g-block-content"> <?= $form ?> |