regular(); } public function regular() { $view = new Admin_View("admin.html"); $view->content = new View("admin_themes.html"); $view->content->menu = $this->_get_menu(); $view->content->title = _("Regular Themes"); $view->content->type = "regular"; $view->content->active = module::get_var("core", "active_theme"); $view->content->themes = $this->_get_themes(); print $view; } public function admin() { $view = new Admin_View("admin.html"); $view->content = new View("admin_themes.html"); $view->content->menu = $this->_get_menu(); $view->content->title = _("Admin Themes"); $view->content->type = "admin"; $view->content->active = module::get_var("core", "active_admin_theme"); $view->content->themes = $this->_get_themes(); print $view; } private function _get_menu() { return Menu::factory("root") ->append(Menu::factory("link") ->id("regular") ->label(t("Regular Theme")) ->url(url::site("admin/themes/regular"))) ->append(Menu::factory("link") ->id("admin") ->label(t("Admin Theme")) ->url(url::site("admin/themes/admin"))); } private function _get_themes() { $themes = array(); foreach (scandir(THEMEPATH) as $theme_name) { if ($theme_name[0] == ".") { continue; } $file = THEMEPATH . "$theme_name/theme.info"; $theme_info = new ArrayObject(parse_ini_file($file), ArrayObject::ARRAY_AS_PROPS); $themes[$theme_name] = $theme_info; } return $themes; } public function preview($type, $theme_name) { $view = new View("admin_themes_preview.html"); $view->info = new ArrayObject( parse_ini_file(THEMEPATH . "$theme_name/theme.info"), ArrayObject::ARRAY_AS_PROPS); $view->theme_name = $theme_name; $view->type = $type; if ($type == "admin") { $view->url = url::site("admin?theme=$theme_name"); } else { $view->url = url::site("albums/1?theme=$theme_name"); } print $view; } public function choose($type, $theme_name) { access::verify_csrf(); $info = new ArrayObject( parse_ini_file(THEMEPATH . "$theme_name/theme.info"), ArrayObject::ARRAY_AS_PROPS); if ($type == "admin" && $info->admin) { module::set_var("core", "active_admin_theme", $theme_name); message::success(t("Successfully changed your site theme to {{theme_name}}", array("theme_name" => $info->name))); } else if ($type == "regular" && $info->regular) { module::set_var("core", "active_theme", $theme_name); message::success(t("Successfully changed your admin theme to {{theme_name}}", array("theme_name" => $info->name))); } url::redirect("admin/themes/$type"); } public function edit_form($theme_name) { $file = THEMEPATH . $theme_name . "/theme.info"; $theme_info = new ArrayObject(parse_ini_file($file), ArrayObject::ARRAY_AS_PROPS); $theme_info['id'] = $theme_name; print theme::get_edit_form_admin($theme_info); } public function edit($theme_name) { $file = THEMEPATH . $theme_name . "/theme.info"; $theme_info = new ArrayObject(parse_ini_file($file), ArrayObject::ARRAY_AS_PROPS); $theme_info['id'] = $theme_name; $form = theme::get_edit_form_admin($theme_info); $valid = $form->validate(); if ($valid) { foreach (array("page_size", "thumb_size", "resize_size") as $param) { $val = theme::get_var($theme_name, $param); $input_val = $form->edit_theme->{$param}->value; if ($val != $input_val) { module::set_var($theme_name, $param, $input_val); } } print json_encode(array("result" => "success", "message" => t("Theme was successfully updated"))); } else { print json_encode(array("result" => "error", "message" => t("Error saving theme values"))); } } public function save() { access::verify_csrf(); $theme = $this->input->post("themes"); if ($theme != module::get_var("core", "active_theme")) { module::set_var("core", "active_theme", $theme); message::success(t("Updated Theme")); log::success("graphics", t("Changed theme to {{theme_name}}", array("theme_name" => $theme))); } url::redirect("admin/themes"); } }