Allow theme setting in module

- Restore theme name caching
This commit is contained in:
Hypolite Petovan 2018-12-29 00:18:52 -05:00
parent 435cfd7de5
commit 979230da27
1 changed files with 25 additions and 22 deletions

View File

@ -1360,14 +1360,18 @@ class App
return ''; return '';
} }
//// @TODO Compute the current theme only once (this behavior has if (!$this->currentTheme) {
/// already been implemented, but it didn't work well - $this->computeCurrentTheme();
/// https://github.com/friendica/friendica/issues/5092) }
$this->computeCurrentTheme();
return $this->currentTheme; 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 * 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 $content = '';
$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']);
}
// Call module functions // Call module functions
if ($this->module_loaded) { if ($this->module_loaded) {
@ -1748,20 +1743,28 @@ class App
} }
if (! $this->error) { if (! $this->error) {
$arr = ['content' => $this->page['content']]; $arr = ['content' => $content];
Core\Addon::callHooks($this->module . '_mod_content', $arr); 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'])]; $arr = ['content' => call_user_func([$this->module_class, 'content'])];
Core\Addon::callHooks($this->module . '_mod_aftercontent', $arr); 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 /* Create the page head after setting the language
* and getting any auth credentials. * and getting any auth credentials.
* *