diff --git a/code/model/ErrorPage.php b/code/model/ErrorPage.php index e869fb1c..f27d248d 100755 --- a/code/model/ErrorPage.php +++ b/code/model/ErrorPage.php @@ -131,7 +131,7 @@ class ErrorPage extends Page { $fields = parent::getCMSFields(); $fields->addFieldToTab( - "Root.Content.Main", + "Root.Content", new DropdownField( "ErrorCode", $this->fieldLabel('ErrorCode'), diff --git a/code/model/RedirectorPage.php b/code/model/RedirectorPage.php index e2d67598..a3972790 100755 --- a/code/model/RedirectorPage.php +++ b/code/model/RedirectorPage.php @@ -126,7 +126,7 @@ class RedirectorPage extends Page { $fields->removeByName('MetaDescription'); $fields->removeByName('ExtraMeta'); - $fields->addFieldsToTab('Root.Content.Main', + $fields->addFieldsToTab('Root.Content', array( new HeaderField('RedirectorDescHeader',_t('RedirectorPage.HEADER', "This page will redirect users to another page")), new OptionsetField( diff --git a/code/model/SiteTree.php b/code/model/SiteTree.php index 9d055430..166217df 100755 --- a/code/model/SiteTree.php +++ b/code/model/SiteTree.php @@ -1667,11 +1667,14 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid } /** - * Returns a FieldSet with which to create the CMS editing form. + * Returns a FieldSet with which to create the main editing form. * * You can override this in your child classes to add extra fields - first * get the parent fields using parent::getCMSFields(), then use * addFieldToTab() on the FieldSet. + * + * See {@link getSettingsFields()} for a different set of fields + * concerned with configuration aspects on the record, e.g. access control * * @return FieldSet The fields to be displayed in the CMS. */ @@ -1747,35 +1750,70 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid )); } - // Lay out the fields $fields = new FieldSet( $rootTab = new TabSet("Root", - $tabContent = new TabSet('Content', - $tabMain = new Tab('Main', - new TextField("Title", $this->fieldLabel('Title')), - new TextField("MenuTitle", $this->fieldLabel('MenuTitle')), - new HtmlEditorField("Content", _t('SiteTree.HTMLEDITORTITLE', "Content", PR_MEDIUM, 'HTML editor title')) - ), - $tabMeta = new Tab('Metadata', - new FieldGroup(_t('SiteTree.URL', "URL"), - new LabelField('BaseUrlLabel',Controller::join_links ( - Director::absoluteBaseURL(), - (self::nested_urls() && $this->ParentID ? $this->Parent()->RelativeLink(true) : null) - )), - new TextField("URLSegment","URLSegment"), - new LabelField('TrailingSlashLabel',"/") - ), - new LiteralField('LinkChangeNote', self::nested_urls() && count($this->Children()) ? - '

' . $this->fieldLabel('LinkChangeNote'). '

' : null - ), - new HeaderField('MetaTagsHeader',$this->fieldLabel('MetaTagsHeader')), - new TextField("MetaTitle", $this->fieldLabel('MetaTitle')), - new TextareaField("MetaKeywords", $this->fieldLabel('MetaKeywords'), 1), - new TextareaField("MetaDescription", $this->fieldLabel('MetaDescription')), - new TextareaField("ExtraMeta",$this->fieldLabel('ExtraMeta')) - ) + $tabMain = new Tab('Main', + new TextField("Title", $this->fieldLabel('Title')), + new TextField("MenuTitle", $this->fieldLabel('MenuTitle')), + new HtmlEditorField("Content", _t('SiteTree.HTMLEDITORTITLE', "Content", PR_MEDIUM, 'HTML editor title')) ), - $tabBehaviour = new Tab('Behaviour', + $tabMeta = new Tab('Metadata', + new FieldGroup(_t('SiteTree.URL', "URL"), + new LabelField('BaseUrlLabel',Controller::join_links ( + Director::absoluteBaseURL(), + (self::nested_urls() && $this->ParentID ? $this->Parent()->RelativeLink(true) : null) + )), + new TextField("URLSegment","URLSegment"), + new LabelField('TrailingSlashLabel',"/") + ), + new LiteralField('LinkChangeNote', self::nested_urls() && count($this->Children()) ? + '

' . $this->fieldLabel('LinkChangeNote'). '

' : null + ), + new HeaderField('MetaTagsHeader',$this->fieldLabel('MetaTagsHeader')), + new TextField("MetaTitle", $this->fieldLabel('MetaTitle')), + new TextareaField("MetaKeywords", $this->fieldLabel('MetaKeywords'), 1), + new TextareaField("MetaDescription", $this->fieldLabel('MetaDescription')), + new TextareaField("ExtraMeta",$this->fieldLabel('ExtraMeta')) + ), + $tabDependent = new Tab('Dependent', + $dependentNote, + $dependentTable + ) + ) + ); + + // Conditional dependent pages tab + if($dependentPagesCount) $tabDependent->setTitle(_t('SiteTree.TABDEPENDENT', "Dependent pages") . " ($dependentPagesCount)"); + else $fields->removeFieldFromTab('Root', 'Dependent'); + + $tabMain->setTitle(_t('SiteTree.TABCONTENT', "Content")); + $tabMeta->setTitle(_t('SiteTree.TABMETA', "Metadata")); + + if(file_exists(BASE_PATH . '/install.php')) { + $fields->addFieldToTab("Root.Main", new LiteralField("InstallWarningHeader", + "

" . _t("SiteTree.REMOVE_INSTALL_WARNING", + "Warning: You should remove install.php from this SilverStripe install for security reasons.") + . "

"), "Title"); + } + + + if(self::$runCMSFieldsExtensions) { + $this->extend('updateCMSFields', $fields); + } + + return $fields; + } + + /** + * Returns fields related to configuration aspects on this record, e.g. access control. + * See {@link getCMSFields()} for content-related fields. + * + * @return FieldSet + */ + function getSettingsFields() { + $fields = new FieldSet( + $rootTab = new TabSet("Root", + $tabBehaviour = new Tab('Settings', new DropdownField( "ClassName", $this->fieldLabel('ClassName'), @@ -1803,10 +1841,6 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid _t('SiteTree.HOMEPAGEFORDOMAIN', "Domain(s)", PR_MEDIUM, 'Listing domains that should be used as homepage') ) ), - $tabDependent = new Tab('Dependent', - $dependentNote, - $dependentTable - ), $tabAccess = new Tab('Access', new HeaderField('WhoCanViewHeader',_t('SiteTree.ACCESSHEADER', "Who can view this page?"), 2), $viewersOptionsField = new OptionsetField( @@ -1823,17 +1857,15 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid ) ) ); - - + /* * This filter ensures that the ParentID dropdown selection does not show this node, * or its descendents, as this causes vanishing bugs. */ $parentIDField->setFilterFunction(create_function('$node', "return \$node->ID != {$this->ID};")); - // Conditional dependent pages tab - if($dependentPagesCount) $tabDependent->setTitle(_t('SiteTree.TABDEPENDENT', "Dependent pages") . " ($dependentPagesCount)"); - else $fields->removeFieldFromTab('Root', 'Dependent'); + $tabBehaviour->setTitle(_t('SiteTree.TABBEHAVIOUR', "Behavior")); + $tabAccess->setTitle(_t('SiteTree.TABACCESS', "Access")); // Make page location fields read-only if the user doesn't have the appropriate permission if(!Permission::check("SITETREE_REORGANISE")) { @@ -1874,24 +1906,10 @@ class SiteTree extends DataObject implements PermissionProvider,i18nEntityProvid } } - $tabContent->setTitle(_t('SiteTree.TABCONTENT', "Content")); - $tabMain->setTitle(_t('SiteTree.TABMAIN', "Main")); - $tabMeta->setTitle(_t('SiteTree.TABMETA', "Metadata")); - $tabBehaviour->setTitle(_t('SiteTree.TABBEHAVIOUR', "Behavior")); - $tabAccess->setTitle(_t('SiteTree.TABACCESS', "Access")); - - if(file_exists(BASE_PATH . '/install.php')) { - $fields->addFieldToTab("Root.Content.Main", new LiteralField("InstallWarningHeader", - "

" . _t("SiteTree.REMOVE_INSTALL_WARNING", - "Warning: You should remove install.php from this SilverStripe install for security reasons.") - . "

"), "Title"); - } - - if(self::$runCMSFieldsExtensions) { - $this->extend('updateCMSFields', $fields); + $this->extend('updateSettingsFields', $fields); } - + return $fields; } diff --git a/code/model/VirtualPage.php b/code/model/VirtualPage.php index 1be3bc1b..2121ca39 100755 --- a/code/model/VirtualPage.php +++ b/code/model/VirtualPage.php @@ -150,17 +150,17 @@ class VirtualPage extends Page { } // Add fields to the tab - $fields->addFieldToTab("Root.Content.Main", + $fields->addFieldToTab("Root.Content", new HeaderField('VirtualPageHeader',_t('VirtualPage.HEADER', "This is a virtual page")), "Title" ); - $fields->addFieldToTab("Root.Content.Main", $copyContentFromField, "Title"); + $fields->addFieldToTab("Root.Content", $copyContentFromField, "Title"); // Create links back to the original object in the CMS if($this->CopyContentFrom()->ID) { $linkToContent = "CopyContentFromID\">" . _t('VirtualPage.EDITCONTENT', 'click here to edit the content') . ""; - $fields->addFieldToTab("Root.Content.Main", + $fields->addFieldToTab("Root.Content", $linkToContentLabelField = new LabelField('VirtualPageContentLinkLabel', $linkToContent), "Title" ); diff --git a/tests/model/SiteTreeBacklinksTest.php b/tests/model/SiteTreeBacklinksTest.php index 066afe99..98d44e84 100644 --- a/tests/model/SiteTreeBacklinksTest.php +++ b/tests/model/SiteTreeBacklinksTest.php @@ -252,7 +252,7 @@ class SiteTreeBacklinksTest_DOD extends DataExtension implements TestOnly { } function updateCMSFields(&$fields) { - $fields->addFieldToTab("Root.Content.Main", new HTMLEditorField("ExtraContent")); + $fields->addFieldToTab("Root.Content", new HTMLEditorField("ExtraContent")); } } ?> diff --git a/tests/model/SiteTreePermissionsTest.php b/tests/model/SiteTreePermissionsTest.php index 7f9a5f13..72e2222f 100755 --- a/tests/model/SiteTreePermissionsTest.php +++ b/tests/model/SiteTreePermissionsTest.php @@ -150,7 +150,7 @@ class SiteTreePermissionsTest extends FunctionalTest { $subadminuser = $this->objFromFixture('Member', 'subadmin'); $this->session()->inst_set('loggedInAs', $subadminuser->ID); - $fields = $page->getCMSFields(); + $fields = $page->getSettingsFields(); $this->assertFalse( $fields->dataFieldByName('CanViewType')->isReadonly(), 'Users with SITETREE_GRANT_ACCESS permission can change "view" permissions in cms fields' @@ -162,7 +162,7 @@ class SiteTreePermissionsTest extends FunctionalTest { $editoruser = $this->objFromFixture('Member', 'editor'); $this->session()->inst_set('loggedInAs', $editoruser->ID); - $fields = $page->getCMSFields(); + $fields = $page->getSettingsFields(); $this->assertTrue( $fields->dataFieldByName('CanViewType')->isReadonly(), 'Users without SITETREE_GRANT_ACCESS permission cannot change "view" permissions in cms fields'