pageTitle = 'cms::lang.theme.settings_menu'; BackendMenu::setContext('October.System', 'system', 'settings'); SettingsManager::setContext('October.Cms', 'theme'); } public function update($dirName = null) { $dirName = $this->getDirName($dirName); try { $model = $this->getThemeData($dirName); $this->asExtension('FormController')->update($model->id); $this->vars['hasCustomData'] = $this->hasThemeData($dirName); } catch (Exception $ex) { $this->handleError($ex); } } public function update_onSave($dirName = null) { $model = $this->getThemeData($this->getDirName($dirName)); $this->asExtension('FormController')->update_onSave($model->id); } public function update_onResetDefault($dirName = null) { $model = $this->getThemeData($this->getDirName($dirName)); $model->delete(); return Backend::redirect('cms/themeoptions/update/'.$dirName); } /** * Add form fields defined in theme.yaml */ public function formExtendFields($form) { $model = $form->model; $theme = $this->findThemeObject($model->theme); $config = $theme->getConfigArray('form'); if ($fields = array_get($config, 'fields')) { $form->addFields($fields); } if ($fields = array_get($config, 'tabs.fields')) { $form->addTabFields($fields); } if ($fields = array_get($config, 'secondaryTabs.fields')) { $form->addSecondaryTabFields($fields); } } // // Helpers // /** * Default to the active theme if user doesn't have access to manage all themes */ protected function getDirName($dirName = null) { /* * Only the active theme can be managed without this permission */ if ($dirName && !$this->user->hasAccess('cms.manage_themes')) { $dirName = null; } if ($dirName === null) { $dirName = CmsTheme::getActiveThemeCode(); } return $dirName; } protected function hasThemeData($dirName) { return $this->findThemeObject($dirName)->hasCustomData(); } protected function getThemeData($dirName) { $theme = $this->findThemeObject($dirName); $model = ThemeData::forTheme($theme); return $model; } protected function findThemeObject($name = null) { if ($name === null) { $name = post('theme'); } if (!$name || (!$theme = CmsTheme::load($name))) { throw new ApplicationException(trans('cms::lang.theme.not_found_name', ['name' => $name])); } return $theme; } }