'$form_security_token' => BaseModule::getFormSecurityToken("admin_themes"),
]);
}
-
- // reload active themes
- if (!empty($_GET['a']) && $_GET['a'] == "r") {
- BaseModule::checkFormSecurityTokenRedirectOnError(System::baseUrl() . '/admin/themes', 'admin_themes', 't');
- foreach ($themes as $th) {
- if ($th['allowed']) {
- Theme::uninstall($th['name']);
- Theme::install($th['name']);
- }
- }
- info("Themes reloaded");
- $a->internalRedirect('admin/themes');
- }
-
- /*
- * List themes
- */
-
- $addons = [];
- foreach ($themes as $th) {
- $addons[] = [$th['name'], (($th['allowed']) ? "on" : "off"), Theme::getInfo($th['name'])];
- }
-
- $t = Renderer::getMarkupTemplate('admin/addons.tpl');
- return Renderer::replaceMacros($t, [
- '$title' => L10n::t('Administration'),
- '$page' => L10n::t('Themes'),
- '$submit' => L10n::t('Save Settings'),
- '$reload' => L10n::t('Reload active themes'),
- '$baseurl' => System::baseUrl(true),
- '$function' => 'themes',
- '$addons' => $addons,
- '$pcount' => count($themes),
- '$noplugshint' => L10n::t('No themes found on the system. They should be placed in %1$s', '<code>/view/themes</code>'),
- '$experimental' => L10n::t('[Experimental]'),
- '$unsupported' => L10n::t('[Unsupported]'),
- '$form_security_token' => BaseModule::getFormSecurityToken("admin_themes"),
- ]);
}
/**
--- /dev/null
+<?php\r
+\r
+namespace Friendica\Module\Admin\Themes;\r
+\r
+use Friendica\Content\Text\Markdown;\r
+use Friendica\Core\Config;\r
+use Friendica\Core\L10n;\r
+use Friendica\Core\Renderer;\r
+use Friendica\Core\System;\r
+use Friendica\Core\Theme;\r
+use Friendica\Module\BaseAdminModule;\r
+use Friendica\Util\Strings;\r
+\r
+class Index extends BaseAdminModule\r
+{\r
+ public static function content()\r
+ {\r
+ parent::content();\r
+\r
+ $a = self::getApp();\r
+\r
+ $allowed_themes = Theme::getAllowedList();\r
+\r
+ // reload active themes\r
+ if (!empty($_GET['action'])) {\r
+ parent::checkFormSecurityTokenRedirectOnError(System::baseUrl() . '/admin/themes', 'admin_themes', 't');\r
+\r
+ switch ($_GET['action']) {\r
+ case 'reload':\r
+ foreach ($allowed_themes as $theme) {\r
+ Theme::uninstall($theme['name']);\r
+ Theme::install($theme['name']);\r
+ }\r
+\r
+ info('Themes reloaded');\r
+ break;\r
+\r
+ case 'toggle' :\r
+ $theme = defaults($_GET, 'addon', '');\r
+ if ($theme) {\r
+ $theme = Strings::sanitizeFilePathItem($theme);\r
+ if (!is_dir("view/theme/$theme")) {\r
+ notice(L10n::t('Item not found.'));\r
+ return '';\r
+ }\r
+\r
+ if (in_array($theme, Theme::getAllowedList())) {\r
+ Theme::uninstall($theme);\r
+ info(L10n::t('Theme %s disabled.', $theme));\r
+ } elseif (Theme::install($theme)) {\r
+ info(L10n::t('Theme %s successfully enabled.', $theme));\r
+ } else {\r
+ info(L10n::t('Theme %s failed to install.', $theme));\r
+ }\r
+ }\r
+\r
+ break;\r
+\r
+ }\r
+\r
+ $a->internalRedirect('admin/themes');\r
+ }\r
+\r
+ $themes = [];\r
+ $files = glob('view/theme/*');\r
+ if (is_array($files)) {\r
+ foreach ($files as $file) {\r
+ $theme = basename($file);\r
+\r
+ // Is there a style file?\r
+ $theme_files = glob('view/theme/' . $theme . '/style.*');\r
+\r
+ // If not then quit\r
+ if (count($theme_files) == 0) {\r
+ continue;\r
+ }\r
+\r
+ $is_experimental = intval(file_exists($file . '/experimental'));\r
+ $is_supported = 1 - (intval(file_exists($file . '/unsupported')));\r
+ $is_allowed = intval(in_array($theme, $allowed_themes));\r
+\r
+ if ($is_allowed || $is_supported || Config::get('system', 'show_unsupported_themes')) {\r
+ $themes[] = ['name' => $theme, 'experimental' => $is_experimental, 'supported' => $is_supported, 'allowed' => $is_allowed];\r
+ }\r
+ }\r
+ }\r
+\r
+ $addons = [];\r
+ foreach ($themes as $theme) {\r
+ $addons[] = [$theme['name'], (($theme['allowed']) ? 'on' : 'off'), Theme::getInfo($theme['name'])];\r
+ }\r
+\r
+ $t = Renderer::getMarkupTemplate('admin/addons/index.tpl');\r
+ return Renderer::replaceMacros($t, [\r
+ '$title' => L10n::t('Administration'),\r
+ '$page' => L10n::t('Themes'),\r
+ '$submit' => L10n::t('Save Settings'),\r
+ '$reload' => L10n::t('Reload active themes'),\r
+ '$baseurl' => System::baseUrl(true),\r
+ '$function' => 'themes',\r
+ '$addons' => $addons,\r
+ '$pcount' => count($themes),\r
+ '$noplugshint' => L10n::t('No themes found on the system. They should be placed in %1$s', '<code>/view/themes</code>'),\r
+ '$experimental' => L10n::t('[Experimental]'),\r
+ '$unsupported' => L10n::t('[Unsupported]'),\r
+ '$form_security_token' => parent::getFormSecurityToken('admin_themes'),\r
+ ]);\r
+ }\r
+}
\ No newline at end of file