]> git.mxchange.org Git - friendica.git/commitdiff
Move admin/themes to src/Module
authorHypolite Petovan <hypolite@mrpetovan.com>
Mon, 15 Apr 2019 05:11:46 +0000 (01:11 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Thu, 2 May 2019 13:52:43 +0000 (09:52 -0400)
- Add Module\Admin\Themes\Index class
- Add route for admin/themes
- Add themes admin aside menu entry
- Add admin/addons/index.tpl template
- Remove theme list from mod/admin

mod/admin.php
src/App/Router.php
src/Module/Admin/Themes/Index.php [new file with mode: 0644]
src/Module/BaseAdminModule.php
view/templates/admin/addons/index.tpl [new file with mode: 0644]

index af4c874c2c766be4567a9c68c4508a3db17fd91e..a717943d6baf26b3f1ecd9cb3c0d9670a8e1a0d4 100644 (file)
@@ -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', '<code>/view/themes</code>'),
-               '$experimental'        => L10n::t('[Experimental]'),
-               '$unsupported'         => L10n::t('[Unsupported]'),
-               '$form_security_token' => BaseModule::getFormSecurityToken("admin_themes"),
-       ]);
 }
 
 /**
index ca362f484282ee630b063bece9043a8815777cab..e1accefd9fe27f653eaf324b5fa16129494c1e2b 100644 (file)
@@ -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 (file)
index 0000000..2b89c4e
--- /dev/null
@@ -0,0 +1,109 @@
+<?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
index 90f78103782ae0d1ad98a7556a399a5c6e9a8a0b..330b9dd749ed388c68d7a6e72e993a7bc2fe733d 100644 (file)
@@ -53,6 +53,7 @@ abstract class BaseAdminModule extends BaseModule
                                'federation'   => ['admin/federation'  , L10n::t('Federation Statistics')   , 'federation']\r
                        ]],\r
                        'configuration' => [L10n::t('Configuration'), [\r
+                               'themes'       => ['admin/themes'      , L10n::t('Themes')                  , 'themes'],\r
                                'tos'          => ['admin/tos'         , L10n::t('Terms of Service')        , 'tos'],\r
                        ]],\r
                ];\r
diff --git a/view/templates/admin/addons/index.tpl b/view/templates/admin/addons/index.tpl
new file mode 100644 (file)
index 0000000..4a2b057
--- /dev/null
@@ -0,0 +1,24 @@
+
+<div id="adminpage">
+       <h1>{{$title}} - {{$page}}</h1>
+{{if $pcount eq 0}}
+       <div class="error-message">
+       {{$noplugshint}}
+       </div>
+{{else}}
+       <a class="btn" href="{{$baseurl}}/admin/{{$function}}?action=reload&amp;t={{$form_security_token}}">{{$reload}}</a>
+       <ul id="addonslist">
+       {{foreach $addons as $p}}
+               <li class="addon {{$p.1}}">
+                       <span class="offset-anchor" id="{{$p.0}}"></span>
+                       <a class="toggleaddon" href="{{$baseurl}}/admin/{{$function}}?action=toggle&amp;addon={{$p.0}}&amp;t={{$form_security_token}}#{{$p.0}}" title="{{if $p.1==on}}Disable{{else}}Enable{{/if}}">
+                               <span class="icon {{$p.1}}"></span>
+                       </a>
+                       <a href="{{$baseurl}}/admin/{{$function}}/{{$p.0}}"><span class="name">{{$p.2.name}}</span></a> - <span class="version">{{$p.2.version}}</span>
+                       {{if $p.2.experimental}} {{$experimental}} {{/if}}{{if $p.2.unsupported}} {{$unsupported}} {{/if}}
+                       <div class="desc">{{$p.2.description nofilter}}</div>
+               </li>
+       {{/foreach}}
+       </ul>
+{{/if}}
+</div>