diff --git a/mod/admin.php b/mod/admin.php
index af4c874c2..a717943d6 100644
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -2017,44 +2017,6 @@ function admin_page_themes(App $a)
'$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', '/view/themes
'),
- '$experimental' => L10n::t('[Experimental]'),
- '$unsupported' => L10n::t('[Unsupported]'),
- '$form_security_token' => BaseModule::getFormSecurityToken("admin_themes"),
- ]);
}
/**
diff --git a/src/App/Router.php b/src/App/Router.php
index ca362f484..e1accefd9 100644
--- a/src/App/Router.php
+++ b/src/App/Router.php
@@ -122,6 +122,8 @@ class Router
$collector->addRoute(['GET'] , '[/]' , Module\Admin\Summary::class);
$collector->addRoute(['GET'] , '/federation' , Module\Admin\Federation::class);
+ $collector->addRoute(['GET', 'POST'], '/themes' , Module\Admin\Themes\Index::class);
+
$collector->addRoute(['GET', 'POST'], '/tos' , Module\Admin\Tos::class);
});
}
diff --git a/src/Module/Admin/Themes/Index.php b/src/Module/Admin/Themes/Index.php
new file mode 100644
index 000000000..2b89c4e20
--- /dev/null
+++ b/src/Module/Admin/Themes/Index.php
@@ -0,0 +1,109 @@
+internalRedirect('admin/themes');
+ }
+
+ $themes = [];
+ $files = glob('view/theme/*');
+ if (is_array($files)) {
+ foreach ($files as $file) {
+ $theme = basename($file);
+
+ // Is there a style file?
+ $theme_files = glob('view/theme/' . $theme . '/style.*');
+
+ // If not then quit
+ if (count($theme_files) == 0) {
+ continue;
+ }
+
+ $is_experimental = intval(file_exists($file . '/experimental'));
+ $is_supported = 1 - (intval(file_exists($file . '/unsupported')));
+ $is_allowed = intval(in_array($theme, $allowed_themes));
+
+ if ($is_allowed || $is_supported || Config::get('system', 'show_unsupported_themes')) {
+ $themes[] = ['name' => $theme, 'experimental' => $is_experimental, 'supported' => $is_supported, 'allowed' => $is_allowed];
+ }
+ }
+ }
+
+ $addons = [];
+ foreach ($themes as $theme) {
+ $addons[] = [$theme['name'], (($theme['allowed']) ? 'on' : 'off'), Theme::getInfo($theme['name'])];
+ }
+
+ $t = Renderer::getMarkupTemplate('admin/addons/index.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', '/view/themes
'),
+ '$experimental' => L10n::t('[Experimental]'),
+ '$unsupported' => L10n::t('[Unsupported]'),
+ '$form_security_token' => parent::getFormSecurityToken('admin_themes'),
+ ]);
+ }
+}
\ No newline at end of file
diff --git a/src/Module/BaseAdminModule.php b/src/Module/BaseAdminModule.php
index 90f781037..330b9dd74 100644
--- a/src/Module/BaseAdminModule.php
+++ b/src/Module/BaseAdminModule.php
@@ -53,6 +53,7 @@ abstract class BaseAdminModule extends BaseModule
'federation' => ['admin/federation' , L10n::t('Federation Statistics') , 'federation']
]],
'configuration' => [L10n::t('Configuration'), [
+ 'themes' => ['admin/themes' , L10n::t('Themes') , 'themes'],
'tos' => ['admin/tos' , L10n::t('Terms of Service') , 'tos'],
]],
];
diff --git a/view/templates/admin/addons/index.tpl b/view/templates/admin/addons/index.tpl
new file mode 100644
index 000000000..4a2b057bf
--- /dev/null
+++ b/view/templates/admin/addons/index.tpl
@@ -0,0 +1,24 @@
+
+