appHelper = $appHelper; $this->mode = $mode; $theme = Strings::sanitizeFilePathItem($this->parameters['theme']); if (is_file("view/theme/$theme/config.php")) { $this->appHelper->setCurrentTheme($theme); } } protected function post(array $request = []) { self::checkAdminAccess(); $theme = Strings::sanitizeFilePathItem($this->parameters['theme']); if (is_file("view/theme/$theme/config.php")) { require_once "view/theme/$theme/config.php"; if (function_exists('theme_admin_post')) { self::checkFormSecurityTokenRedirectOnError('/admin/themes/' . $theme . '/embed?mode=minimal', 'admin_theme_settings'); theme_admin_post(); } } if ($this->mode->isAjax()) { return; } $this->baseUrl->redirect('admin/themes/' . $theme . '/embed?mode=minimal'); } protected function content(array $request = []): string { parent::content(); $theme = Strings::sanitizeFilePathItem($this->parameters['theme']); if (!is_dir("view/theme/$theme")) { DI::sysmsg()->addNotice($this->t('Unknown theme.')); return ''; } $admin_form = ''; if (is_file("view/theme/$theme/config.php")) { require_once "view/theme/$theme/config.php"; if (function_exists('theme_admin')) { $admin_form = theme_admin($this->appHelper); } } // Overrides normal theme style include to strip user param to show embedded theme settings Renderer::$theme['stylesheet'] = 'view/theme/' . $theme . '/style.pcss'; $t = Renderer::getMarkupTemplate('admin/addons/embed.tpl'); return Renderer::replaceMacros($t, [ '$action' => 'admin/themes/' . $theme . '/embed?mode=minimal', '$form' => $admin_form, '$form_security_token' => self::getFormSecurityToken("admin_theme_settings"), ]); } }