Allow theme setting in module
- Restore theme name caching
This commit is contained in:
parent
435cfd7de5
commit
979230da27
47
src/App.php
47
src/App.php
|
@ -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'];
|
||||
}
|
||||
|
||||
if (function_exists(str_replace('-', '_', $this->getCurrentTheme()) . '_content_loaded')) {
|
||||
$func = str_replace('-', '_', $this->getCurrentTheme()) . '_content_loaded';
|
||||
$func($this);
|
||||
$content .= $arr['content'];
|
||||
}
|
||||
}
|
||||
|
||||
// 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.
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue