<?php class CMSSettingsController extends LeftAndMain { static $url_segment = 'settings'; static $url_rule = '/$Action/$ID/$OtherID'; static $menu_priority = -1; static $menu_title = 'Settings'; static $tree_class = 'SiteConfig'; public function getResponseNegotiator() { $neg = parent::getResponseNegotiator(); $controller = $this; $neg->setCallback('CurrentForm', function() use(&$controller) { return $controller->renderWith($controller->getTemplatesWithSuffix('_Content')); }); return $neg; } /** * @return Form */ function getEditForm($id = null, $fields = null) { $siteConfig = SiteConfig::current_site_config(); $fields = $siteConfig->getCMSFields(); $actions = $siteConfig->getCMSActions(); $form = new Form($this, 'EditForm', $fields, $actions); $form->addExtraClass('root-form'); $form->addExtraClass('cms-edit-form cms-panel-padded center'); // don't add data-pjax-fragment=CurrentForm, its added in the content template instead if($form->Fields()->hasTabset()) $form->Fields()->findOrMakeTab('Root')->setTemplate('CMSTabSet'); $form->setHTMLID('Form_EditForm'); $form->loadDataFrom($siteConfig); $form->setTemplate($this->getTemplatesWithSuffix('_EditForm')); // Use <button> to allow full jQuery UI styling $actions = $actions->dataFields(); if($actions) foreach($actions as $action) $action->setUseButtonTag(true); $this->extend('updateEditForm', $form); return $form; } /** * Save the current sites {@link SiteConfig} into the database * * @param array $data * @param Form $form * @return String */ function save_siteconfig($data, $form) { $siteConfig = SiteConfig::current_site_config(); $form->saveInto($siteConfig); $siteConfig->write(); $this->response->addHeader('X-Status', rawurlencode(_t('LeftAndMain.SAVEDUP', 'Saved.'))); return $this->getResponseNegotiator()->respond($this->request); } function LinkPreview() { return false; } function Breadcrumbs($unlinked = false) { $defaultTitle = self::menu_title_for_class(get_class($this)); return new ArrayList(array( new ArrayData(array( 'Title' => _t("{$this->class}.MENUTITLE", $defaultTitle), 'Link' => false )) )); } }