$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)) {
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);
$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)) {
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')];
'$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),
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
*
}
}
- // 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) {
}
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.
*
{{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}}
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');
#### 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>
/*
* standard page elements
*/
+
+section.minimal {
+ top: 0px;
+ left: 0px;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+}
+
#back-to-top {
display: none;
cursor: pointer;
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');