/**
* @brief Themes admin page.
*
* @return string
*/
function get()
{
$allowed_themes_str = get_config('system', 'allowed_themes');
$allowed_themes_raw = explode(',', $allowed_themes_str);
$allowed_themes = array();
if (count($allowed_themes_raw)) {
foreach ($allowed_themes_raw as $x) {
if (strlen(trim($x))) {
$allowed_themes[] = trim($x);
}
}
}
$themes = array();
$files = glob('view/theme/*');
if ($files) {
foreach ($files as $file) {
$f = basename($file);
$is_experimental = intval(file_exists($file . '/.experimental'));
$is_supported = 1 - intval(file_exists($file . '/.unsupported'));
// Is not used yet
$is_allowed = intval(in_array($f, $allowed_themes));
$themes[] = array('name' => $f, 'experimental' => $is_experimental, 'supported' => $is_supported, 'allowed' => $is_allowed);
}
}
if (!count($themes)) {
notice(t('No themes found.'));
return '';
}
/*
* Single theme
*/
if (\App::$argc == 3) {
$theme = \App::$argv[2];
if (!is_dir("view/theme/{$theme}")) {
notice(t("Item not found."));
return '';
}
if (x($_GET, "a") && $_GET['a'] == "t") {
check_form_security_token_redirectOnErr('/admin/themes', 'admin_themes', 't');
// Toggle theme status
$this->toggle_theme($themes, $theme, $result);
$s = $this->rebuild_theme_table($themes);
if ($result) {
info(sprintf('Theme %s enabled.', $theme));
} else {
info(sprintf('Theme %s disabled.', $theme));
}
set_config('system', 'allowed_themes', $s);
goaway(z_root() . '/admin/themes');
}
// display theme details
require_once 'library/markdown.php';
if ($this->theme_status($themes, $theme)) {
$status = "on";
$action = t("Disable");
} else {
$status = "off";
$action = t("Enable");
}
$readme = Null;
if (is_file("view/theme/{$theme}/README.md")) {
$readme = file_get_contents("view/theme/{$theme}/README.md");
$readme = Markdown($readme);
} else {
if (is_file("view/theme/{$theme}/README")) {
$readme = "<pre>" . file_get_contents("view/theme/{$theme}/README") . "</pre>";
}
}
$admin_form = '';
if (is_file("view/theme/{$theme}/php/config.php")) {
require_once "view/theme/{$theme}/php/config.php";
if (function_exists("theme_admin")) {
$admin_form = theme_admin($a);
}
}
$screenshot = array(get_theme_screenshot($theme), t('Screenshot'));
if (!stristr($screenshot[0], $theme)) {
$screenshot = null;
}
$t = get_markup_template('admin_plugins_details.tpl');
return replace_macros($t, array('$title' => t('Administration'), '$page' => t('Themes'), '$toggle' => t('Toggle'), '$settings' => t('Settings'), '$baseurl' => z_root(), '$plugin' => $theme, '$status' => $status, '$action' => $action, '$info' => get_theme_info($theme), '$function' => 'themes', '$admin_form' => $admin_form, '$str_author' => t('Author: '), '$str_maintainer' => t('Maintainer: '), '$screenshot' => $screenshot, '$readme' => $readme, '$form_security_token' => get_form_security_token('admin_themes')));
}
/*
* List themes
*/
$xthemes = array();
if ($themes) {
foreach ($themes as $th) {
$xthemes[] = array($th['name'], $th['allowed'] ? "on" : "off", get_theme_info($th['name']));
}
}
$t = get_markup_template('admin_plugins.tpl');
return replace_macros($t, array('$title' => t('Administration'), '$page' => t('Themes'), '$submit' => t('Submit'), '$baseurl' => z_root(), '$function' => 'themes', '$plugins' => $xthemes, '$experimental' => t('[Experimental]'), '$unsupported' => t('[Unsupported]'), '$form_security_token' => get_form_security_token('admin_themes')));
}
请发表评论