Allow theme setting in module
- Restore theme name caching
This commit is contained in:
parent
435cfd7de5
commit
979230da27
1 changed files with 25 additions and 22 deletions
47
src/App.php
47
src/App.php
|
@ -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.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue