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");
  }
}