From aca242e31c8d98ee3b8acc397bf605ceb964e1bf Mon Sep 17 00:00:00 2001 From: Damian Mooyman Date: Thu, 16 Aug 2012 14:22:56 +1200 Subject: [PATCH] UPDATED: Refactored Translation module specific code out of the SiteConfig --- code/model/SiteConfig.php | 115 +++++++++++++------------------------- code/model/SiteTree.php | 13 ++--- 2 files changed, 44 insertions(+), 84 deletions(-) diff --git a/code/model/SiteConfig.php b/code/model/SiteConfig.php index 89ea9a85..266d7a68 100644 --- a/code/model/SiteConfig.php +++ b/code/model/SiteConfig.php @@ -1,15 +1,8 @@ Title = _t('SiteConfig.SITENAMEDEFAULT', "Your Site Name"); + $this->Tagline = _t('SiteConfig.TAGLINEDEFAULT', "your tagline here"); + + // Allow these defaults to be overridden + parent::populateDefaults(); + } + /** * Get the fields that are sent to the CMS. In * your extensions: updateCMSFields($fields) @@ -48,25 +50,25 @@ class SiteConfig extends DataObject implements PermissionProvider { asort($groupsMap); $fields = new FieldList( - new TabSet("Root", - $tabMain = new Tab('Main', - $titleField = new TextField("Title", _t('SiteConfig.SITETITLE', "Site title")), - $taglineField = new TextField("Tagline", _t('SiteConfig.SITETAGLINE', "Site Tagline/Slogan")), - $themeDropdownField = new DropdownField("Theme", _t('SiteConfig.THEME', 'Theme'), $this->getAvailableThemes()) - ), - $tabAccess = new Tab('Access', - $viewersOptionsField = new OptionsetField("CanViewType", _t('SiteConfig.VIEWHEADER', "Who can view pages on this site?")), - $viewerGroupsField = ListboxField::create("ViewerGroups", _t('SiteTree.VIEWERGROUPS', "Viewer Groups")) - ->setMultiple(true)->setSource($groupsMap), - $editorsOptionsField = new OptionsetField("CanEditType", _t('SiteConfig.EDITHEADER', "Who can edit pages on this site?")), - $editorGroupsField = ListboxField::create("EditorGroups", _t('SiteTree.EDITORGROUPS', "Editor Groups")) - ->setMultiple(true)->setSource($groupsMap), - $topLevelCreatorsOptionsField = new OptionsetField("CanCreateTopLevelType", _t('SiteConfig.TOPLEVELCREATE', "Who can create pages in the root of the site?")), - $topLevelCreatorsGroupsField = ListboxField::create("CreateTopLevelGroups", _t('SiteTree.TOPLEVELCREATORGROUPS', "Top level creators")) - ->setMultiple(true)->setSource($groupsMap) - ) - ), - new HiddenField('ID') + new TabSet("Root", + $tabMain = new Tab('Main', + $titleField = new TextField("Title", _t('SiteConfig.SITETITLE', "Site title")), + $taglineField = new TextField("Tagline", _t('SiteConfig.SITETAGLINE', "Site Tagline/Slogan")), + $themeDropdownField = new DropdownField("Theme", _t('SiteConfig.THEME', 'Theme'), $this->getAvailableThemes()) + ), + $tabAccess = new Tab('Access', + $viewersOptionsField = new OptionsetField("CanViewType", _t('SiteConfig.VIEWHEADER', "Who can view pages on this site?")), + $viewerGroupsField = ListboxField::create("ViewerGroups", _t('SiteTree.VIEWERGROUPS', "Viewer Groups")) + ->setMultiple(true)->setSource($groupsMap), + $editorsOptionsField = new OptionsetField("CanEditType", _t('SiteConfig.EDITHEADER', "Who can edit pages on this site?")), + $editorGroupsField = ListboxField::create("EditorGroups", _t('SiteTree.EDITORGROUPS', "Editor Groups")) + ->setMultiple(true)->setSource($groupsMap), + $topLevelCreatorsOptionsField = new OptionsetField("CanCreateTopLevelType", _t('SiteConfig.TOPLEVELCREATE', "Who can create pages in the root of the site?")), + $topLevelCreatorsGroupsField = ListboxField::create("CreateTopLevelGroups", _t('SiteTree.TOPLEVELCREATORGROUPS', "Top level creators")) + ->setMultiple(true)->setSource($groupsMap) + ) + ), + new HiddenField('ID') ); $themeDropdownField->setEmptyString(_t('SiteConfig.DEFAULTTHEME', '(Use default theme)')); @@ -84,13 +86,6 @@ class SiteConfig extends DataObject implements PermissionProvider { $topLevelCreatorsOptionsField->setSource($editorsOptionsSource); - // Translatable doesn't handle updateCMSFields on DataObjects, - // so add it here to save the current Locale, - // because onBeforeWrite does not work. - if(class_exists('Translatable') && Object::has_extension('SiteConfig',"Translatable")){ - $fields->push(new HiddenField("Locale")); - } - if (!Permission::check('EDIT_SITECONFIG')) { $fields->makeFieldReadonly($viewersOptionsField); $fields->makeFieldReadonly($viewerGroupsField); @@ -161,22 +156,15 @@ class SiteConfig extends DataObject implements PermissionProvider { * Get the current sites SiteConfig, and creates a new one * through {@link make_site_config()} if none is found. * - * @param string $locale * @return SiteConfig */ - static function current_site_config($locale = null) { - if(class_exists('Translatable') && Object::has_extension('SiteConfig',"Translatable")){ - $locale = isset($locale) ? $locale : Translatable::get_current_locale(); - $siteConfig = Translatable::get_one_by_locale('SiteConfig', $locale); - } else { - $siteConfig = DataObject::get_one('SiteConfig'); - } - - if (!$siteConfig) $siteConfig = self::make_site_config($locale); - - return $siteConfig; + static function current_site_config() { + if ($siteConfig = DataObject::get_one('SiteConfig')) + return $siteConfig; + + return self::make_site_config(); } - + /** * Setup a default SiteConfig record if none exists */ @@ -191,39 +179,14 @@ class SiteConfig extends DataObject implements PermissionProvider { /** * Create SiteConfig with defaults from language file. - * if Translatable is enabled on SiteConfig, see if one already exist - * and use those values for the translated defaults. * * @param string $locale * @return SiteConfig */ - static function make_site_config($locale = null) { - if(class_exists('Translatable') && !$locale) $locale = Translatable::get_current_locale(); - - $siteConfig = new SiteConfig(); - $siteConfig->Title = _t('SiteConfig.SITENAMEDEFAULT',"Your Site Name"); - $siteConfig->Tagline = _t('SiteConfig.TAGLINEDEFAULT',"your tagline here"); + static function make_site_config() { + return SiteConfig::create(); + } - if(class_exists('Translatable') && $siteConfig->hasExtension('Translatable')){ - Translatable::disable_locale_filter(); - $defaultConfig = SiteConfig::get()->first(); - Translatable::enable_locale_filter(); - - if($defaultConfig){ - return $defaultConfig->createTranslation($locale); - } - - // TODO Copy view/edit group settings - - // set the correct Locale - $siteConfig->Locale = $locale; - } - - $siteConfig->write(); - - return $siteConfig; - } - /** * Can a user view pages on this site? This method is only * called if a page is set to Inherit, but there is nothing diff --git a/code/model/SiteTree.php b/code/model/SiteTree.php index d10a1079..28545762 100644 --- a/code/model/SiteTree.php +++ b/code/model/SiteTree.php @@ -991,17 +991,14 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid * Stub method to get the site config, provided so it's easy to override */ function getSiteConfig() { - $altConfig = false; + if($this->hasMethod('alternateSiteConfig')) { $altConfig = $this->alternateSiteConfig(); + if($altConfig) + return $altConfig; } - if($altConfig) { - return $altConfig; - } elseif(class_exists('Translatable') && $this->hasExtension('Translatable')) { - return SiteConfig::current_site_config($this->Locale); - } else { - return SiteConfig::current_site_config(); - } + + return SiteConfig::current_site_config(); } /**