]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #6340 from MrPetovan/bug/1495-fix-admin-theme-settings
authorTobias Diekershoff <tobias.diekershoff@gmx.net>
Sun, 30 Dec 2018 09:35:44 +0000 (10:35 +0100)
committerGitHub <noreply@github.com>
Sun, 30 Dec 2018 09:35:44 +0000 (10:35 +0100)
Fix site theme settings modal form

mod/admin.php
src/App.php
view/templates/admin/addon_details.tpl
view/templates/admin/site.tpl
view/theme/frio/README.md
view/theme/frio/css/style.css
view/theme/frio/templates/admin/site.tpl

index b906ad7d0557613856214e78d2fc8ed9302e823f..c0ad281d3b5e3a1ee9998751734d35e2103a7d7b 100644 (file)
@@ -89,12 +89,10 @@ function admin_post(App $a)
 
                                $theme = $a->argv[2];
                                if (is_file("view/theme/$theme/config.php")) {
-                                       $orig_theme = Renderer::$theme;
-                                       $orig_page = $a->page;
-                                       $orig_session_theme = $_SESSION['theme'];
+                                       $a->setCurrentTheme($theme);
+
                                        require_once "view/theme/$theme/theme.php";
                                        require_once "view/theme/$theme/config.php";
-                                       $_SESSION['theme'] = $theme;
 
                                        $init = $theme . '_init';
                                        if (function_exists($init)) {
@@ -103,17 +101,13 @@ function admin_post(App $a)
                                        if (function_exists('theme_admin_post')) {
                                                theme_admin_post($a);
                                        }
-
-                                       $_SESSION['theme'] = $orig_session_theme;
-                                       Renderer::$theme = $orig_theme;
-                                       $a->page = $orig_page;
                                }
 
                                info(L10n::t('Theme settings updated.'));
                                if ($a->isAjax()) {
                                        return;
                                }
-                               $return_path = 'admin/themes/' . $theme;
+                               $return_path = 'admin/themes/' . $theme . (!empty($_GET['mode']) ? '?mode=' . $_GET['mode'] : '');
                                break;
                        case 'tos':
                                admin_page_tos_post($a);
@@ -2312,12 +2306,10 @@ function admin_page_themes(App $a)
 
                $admin_form = '';
                if (is_file("view/theme/$theme/config.php")) {
-                       $orig_theme = Renderer::$theme;
-                       $orig_page = $a->page;
-                       $orig_session_theme = $_SESSION['theme'];
+                       $a->setCurrentTheme($theme);
+
                        require_once "view/theme/$theme/theme.php";
                        require_once "view/theme/$theme/config.php";
-                       $_SESSION['theme'] = $theme;
 
                        $init = $theme . "_init";
                        if (function_exists($init)) {
@@ -2327,10 +2319,6 @@ function admin_page_themes(App $a)
                        if (function_exists('theme_admin')) {
                                $admin_form = theme_admin($a);
                        }
-
-                       $_SESSION['theme'] = $orig_session_theme;
-                       Renderer::$theme = $orig_theme;
-                       $a->page = $orig_page;
                }
 
                $screenshot = [Theme::getScreenshot($theme), L10n::t('Screenshot')];
@@ -2345,7 +2333,7 @@ function admin_page_themes(App $a)
                        '$toggle' => L10n::t('Toggle'),
                        '$settings' => L10n::t('Settings'),
                        '$baseurl' => System::baseUrl(true),
-                       '$addon' => $theme,
+                       '$addon' => $theme . (!empty($_GET['mode']) ? '?mode=' . $_GET['mode'] : ''),
                        '$status' => $status,
                        '$action' => $action,
                        '$info' => Theme::getInfo($theme),
index 57d61d04bb32eca58dacf912a886b54ea1870645..1045c413dca53f8e0256ce96fb3c9f056e162ef1 100644 (file)
@@ -1360,14 +1360,18 @@ class App
                        return '';
                }
 
-               //// @TODO Compute the current theme only once (this behavior has
-               /// already been implemented, but it didn't work well -
-               /// https://github.com/friendica/friendica/issues/5092)
-               $this->computeCurrentTheme();
+               if (!$this->currentTheme) {
+                       $this->computeCurrentTheme();
+               }
 
                return $this->currentTheme;
        }
 
+       public function setCurrentTheme($theme)
+       {
+               $this->currentTheme = $theme;
+       }
+
        /**
         * Computes the current theme name based on the node settings, the user settings and the device type
         *
@@ -1706,16 +1710,7 @@ class App
                        }
                }
 
-               // Load current theme info
-               $theme_info_file = 'view/theme/' . $this->getCurrentTheme() . '/theme.php';
-               if (file_exists($theme_info_file)) {
-                       require_once $theme_info_file;
-               }
-
-               // initialise content region
-               if ($this->getMode()->isNormal()) {
-                       Core\Addon::callHooks('page_content_top', $this->page['content']);
-               }
+               $content = '';
 
                // Call module functions
                if ($this->module_loaded) {
@@ -1748,20 +1743,28 @@ class App
                        }
 
                        if (! $this->error) {
-                               $arr = ['content' => $this->page['content']];
+                               $arr = ['content' => $content];
                                Core\Addon::callHooks($this->module . '_mod_content', $arr);
-                               $this->page['content'] = $arr['content'];
+                               $content = $arr['content'];
                                $arr = ['content' => call_user_func([$this->module_class, 'content'])];
                                Core\Addon::callHooks($this->module . '_mod_aftercontent', $arr);
-                               $this->page['content'] .= $arr['content'];
+                               $content .= $arr['content'];
                        }
+               }
 
-                       if (function_exists(str_replace('-', '_', $this->getCurrentTheme()) . '_content_loaded')) {
-                               $func = str_replace('-', '_', $this->getCurrentTheme()) . '_content_loaded';
-                               $func($this);
-                       }
+               // Load current theme info after module has been executed as theme could have been set in module
+               $theme_info_file = 'view/theme/' . $this->getCurrentTheme() . '/theme.php';
+               if (file_exists($theme_info_file)) {
+                       require_once $theme_info_file;
                }
 
+               // initialise content region
+               if ($this->getMode()->isNormal()) {
+                       Core\Addon::callHooks('page_content_top', $this->page['content']);
+               }
+
+               $this->page['content'] .= $content;
+
                /* Create the page head after setting the language
                 * and getting any auth credentials.
                 *
index f4e8e5c23c41b704c191ca223b48007c42a006b2..7479b1385ecb7d0366510932043d17351cd3533a 100644 (file)
@@ -23,7 +23,7 @@
 
        {{if $admin_form}}
        <h3>{{$settings}}</h3>
-       <form method="post" action="{{$baseurl}}/admin/{{$function}}/{{$addon}}/">
+       <form method="post" action="{{$baseurl}}/admin/{{$function}}/{{$addon}}">
                {{$admin_form nofilter}}
        </form>
        {{/if}}
index dd40654b51b550204d250625ce298deeb50f6bfd..a7adfd5a1ab40506a51968f66f06866d97775c84 100644 (file)
@@ -9,7 +9,8 @@
                                        var theme = $("#id_theme :selected").val();
                                        $("#cnftheme").attr('href',"{{$baseurl}}/admin/themes/"+theme);
                                },*/
-                               href: "{{$baseurl}}/admin/themes/" + $("#id_theme :selected").val(),
+                               iframe: true,
+                               href: "{{$baseurl}}/admin/themes/" + $("#id_theme :selected").val() + "?mode=minimal",
                                onComplete: function(){
                                        $("div#fancybox-content form").submit(function(e){
                                                var url = $(this).attr('action');
index c729d12820dc8be46d679502cdd5de284722341f..6a114eecc2ea9192f4c693871f1191e01f684326 100644 (file)
@@ -29,23 +29,23 @@ Don't blame me too much for ugly code and hacks. Fix it ;-)
 
 #### Screenshots
 **Default**
-![Default - Stream](https://github.com/rabuzarus/frio/blob/master/img/screenshots/screenshot.png)
+![Default - Stream](https://git.friendi.ca/friendica/friendica/raw/branch/master/view/theme/frio/img/screenshots/screenshot.png)
 
 **Modals**
-![Modals](https://github.com/rabuzarus/frio/blob/master/img/screenshots/screenshot-jot-modal.png)
+![Modals](https://git.friendi.ca/friendica/friendica/raw/branch/master/view/theme/frio/img/screenshots/screenshot-jot-modal.png)
 
 **Theme - Settings**
-![Theme - Settings](https://github.com/rabuzarus/frio/blob/master/img/screenshots/screenshot-settings.png)
+![Theme - Settings](https://git.friendi.ca/friendica/friendica/raw/branch/master/view/theme/frio/img/screenshots/screenshot-settings.png)
 
 **Red scheme**
-![Red scheme](https://github.com/rabuzarus/frio/blob/master/img/screenshots/screenshot-scheme-red.png)
+![Red scheme](https://git.friendi.ca/friendica/friendica/raw/branch/master/view/theme/frio/img/screenshots/screenshot-scheme-red.png)
 
 **Love Music scheme**
-![Love Music scheme](https://github.com/rabuzarus/frio/blob/master/img/screenshots/screenshot-scheme-love-music.png)
+![Love Music scheme](https://git.friendi.ca/friendica/friendica/raw/branch/master/view/theme/frio/img/screenshots/screenshot-scheme-love-music.png)
 
 **frio on mobile**
 
-![frio on mobile](https://github.com/rabuzarus/frio/blob/master/img/screenshots/screenshot-mobile.png)
+![frio on mobile](https://git.friendi.ca/friendica/friendica/raw/branch/master/view/theme/frio/img/screenshots/screenshot-mobile.png)
 
 #### Credits:
 HumHub - Social Network Kit - <https://github.com/humhub/humhub>
index 9f03b436d02d31ae6e0d44b088c2f5e33ac079ff..e8f004f157caf817eed5bad127ec00ea65820da7 100644 (file)
@@ -130,6 +130,15 @@ blockquote {
 /*
 * standard page elements
 */
+
+section.minimal {
+    top: 0px;
+    left: 0px;
+    position: absolute;
+    width: 100%;
+    height: 100%;
+}
+
 #back-to-top {
     display: none;
     cursor: pointer;
index 7228b9022bd878ea3bdd78d6f9fa119d25fef434..5d4fd2506eb1908d928556706138da4f4860e23a 100644 (file)
@@ -10,7 +10,8 @@
                                        var theme = $("#id_theme :selected").val();
                                        $("#cnftheme").attr('href',"{{$baseurl}}/admin/themes/"+theme);
                                },*/
-                               href: "{{$baseurl}}/admin/themes/" + $("#id_theme :selected").val(),
+                iframe: true,
+                href: "{{$baseurl}}/admin/themes/" + $("#id_theme :selected").val() + "?mode=minimal",
                                onComplete: function(){
                                        $("div#fancybox-content form").submit(function(e){
                                                var url = $(this).attr('action');