From 8705a46b9819a145187418a72926adc2b85edc68 Mon Sep 17 00:00:00 2001 From: Danae Miller-Clendon Date: Mon, 10 Apr 2017 14:27:25 +1200 Subject: [PATCH] Conditionally add Theme dropdown (if there are any themese available) for #261. Replace field instantiatiors in getCMSFields() with ::create() to support injection. Add empty string / lang entry to Theme dropdown --- code/model/Subsite.php | 42 +++++++++++++++++++++++------------------- lang/en.yml | 1 + 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/code/model/Subsite.php b/code/model/Subsite.php index be0f3a9d..0af9504d 100644 --- a/code/model/Subsite.php +++ b/code/model/Subsite.php @@ -583,15 +583,15 @@ public function canEdit($member = false) */ public function getCMSFields() { - if ($this->ID!=0) { - $domainTable = new GridField( + if ($this->ID != 0) { + $domainTable = GridField::create( "Domains", _t('Subsite.DomainsListTitle', "Domains"), $this->Domains(), GridFieldConfig_RecordEditor::create(10) ); } else { - $domainTable = new LiteralField( + $domainTable = LiteralField::create( 'Domains', '

'._t('Subsite.DOMAINSAVEFIRST', 'You can only add domains after saving for the first time').'

' ); @@ -610,45 +610,49 @@ public function getCMSFields() } asort($pageTypeMap); - $fields = new FieldList( - $subsiteTabs = new TabSet('Root', - new Tab( + $fields = FieldList::create( + $subsiteTabs = TabSet::create('Root', + Tab::create( 'Configuration', _t('Subsite.TabTitleConfig', 'Configuration'), - new HeaderField($this->getClassName() . ' configuration', 2), - new TextField('Title', $this->fieldLabel('Title'), $this->Title), + HeaderField::create($this->getClassName() . ' configuration', 2), + TextField::create('Title', $this->fieldLabel('Title'), $this->Title), - new HeaderField( + HeaderField::create( _t('Subsite.DomainsHeadline', "Domains for this subsite") ), $domainTable, $languageSelector, // new TextField('RedirectURL', 'Redirect to URL', $this->RedirectURL), - new CheckboxField('DefaultSite', $this->fieldLabel('DefaultSite'), $this->DefaultSite), - new CheckboxField('IsPublic', $this->fieldLabel('IsPublic'), $this->IsPublic), + CheckboxField::create('DefaultSite', $this->fieldLabel('DefaultSite'), $this->DefaultSite), + CheckboxField::create('IsPublic', $this->fieldLabel('IsPublic'), $this->IsPublic), - new DropdownField('Theme', $this->fieldLabel('Theme'), $this->allowedThemes(), $this->Theme), - - - new LiteralField( + LiteralField::create( 'PageTypeBlacklistToggle', sprintf( '
%s
', _t('Subsite.PageTypeBlacklistField', 'Disallow page types?') ) ), - new CheckboxSetField( + CheckboxSetField::create( 'PageTypeBlacklist', false, $pageTypeMap ) ) ), - new HiddenField('ID', '', $this->ID), - new HiddenField('IsSubsite', '', 1) + HiddenField::create('ID', '', $this->ID), + HiddenField::create('IsSubsite', '', 1) ); - $subsiteTabs->addExtraClass('subsite-model'); + // If there are any themes available, add the dropdown + $themes = $this->allowedThemes(); + if (!empty($themes)) { + $fields->addFieldToTab('Root.Configuration', + DropdownField::create('Theme', $this->fieldLabel('Theme'), $this->allowedThemes(), $this->Theme)->setEmptyString(_t('Subsite.ThemeFieldEmptyString', '')), 'PageTypeBlacklistToggle'); + } + + $subsiteTabs->addExtraClass('subsite-model'); $this->extend('updateCMSFields', $fields); return $fields; diff --git a/lang/en.yml b/lang/en.yml index c57c4fec..e4968296 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -72,6 +72,7 @@ en: PrimaryDomainFieldLabel: 'Primary Domain' RedirectURLFieldLabel: 'Redirect URL' ThemeFieldLabel: Theme + ThemeFieldEmptyString: '' TitleFieldLabel: 'Subsite Name' SubsitesVirtualPage: DESCRIPTION: 'Displays the content of a page on another subsite'