public function getCMSFields() { Requirements::add_i18n_javascript(BLOCKS_DIR . '/javascript/lang'); // this line is a temporary patch until I can work out why this dependency isn't being // loaded in some cases... if (!$this->blockManager) { $this->blockManager = singleton('BlockManager'); } $fields = parent::getCMSFields(); // ClassNmae - block type/class field $classes = $this->blockManager->getBlockClasses(); $fields->addFieldToTab('Root.Main', DropdownField::create('ClassName', 'Block Type', $classes)->addExtraClass('block-type'), 'Title'); // BlockArea - display areas field if on page edit controller if (Controller::curr()->class == 'CMSPageEditController') { $currentPage = Controller::curr()->currentPage(); $fields->addFieldToTab('Root.Main', DropdownField::create('ManyMany[BlockArea]', 'BlockArea', $this->blockManager->getAreasForPageType($currentPage->ClassName))->setHasEmptyDefault(true)->setRightTitle($currentPage->areasPreviewButton()), 'ClassName'); } $fields->removeFieldFromTab('Root', 'BlockSets'); $fields->removeFieldFromTab('Root', 'Pages'); // legacy fields, will be removed in later release $fields->removeByName('Weight'); $fields->removeByName('Area'); $fields->removeByName('Published'); if ($this->blockManager->getUseExtraCSSClasses()) { $fields->addFieldToTab('Root.Main', $fields->dataFieldByName('ExtraCSSClasses'), 'Title'); } else { $fields->removeByName('ExtraCSSClasses'); } // Viewer groups $fields->removeFieldFromTab('Root', 'ViewerGroups'); $groupsMap = Group::get()->map('ID', 'Breadcrumbs')->toArray(); asort($groupsMap); $viewersOptionsField = new OptionsetField("CanViewType", _t('SiteTree.ACCESSHEADER', "Who can view this page?")); $viewerGroupsField = ListboxField::create("ViewerGroups", _t('SiteTree.VIEWERGROUPS', "Viewer Groups"))->setMultiple(true)->setSource($groupsMap)->setAttribute('data-placeholder', _t('SiteTree.GroupPlaceholder', 'Click to select group')); $viewersOptionsSource = array(); $viewersOptionsSource["Anyone"] = _t('SiteTree.ACCESSANYONE', "Anyone"); $viewersOptionsSource["LoggedInUsers"] = _t('SiteTree.ACCESSLOGGEDIN', "Logged-in users"); $viewersOptionsSource["OnlyTheseUsers"] = _t('SiteTree.ACCESSONLYTHESE', "Only these people (choose from list)"); $viewersOptionsField->setSource($viewersOptionsSource)->setValue("Anyone"); $fields->addFieldsToTab('Root.ViewerGroups', array($viewersOptionsField, $viewerGroupsField)); // Disabled for now, until we can list ALL pages this block is applied to (inc via sets) // As otherwise it could be misleading // Show a GridField (list only) with pages which this block is used on // $fields->removeFieldFromTab('Root.Pages', 'Pages'); // $fields->addFieldsToTab('Root.Pages', // new GridField( // 'Pages', // 'Used on pages', // $this->Pages(), // $gconf = GridFieldConfig_Base::create())); // enhance gridfield with edit links to pages if GFEditSiteTreeItemButtons is available // a GFRecordEditor (default) combined with BetterButtons already gives the possibility to // edit versioned records (Pages), but STbutton loads them in their own interface instead // of GFdetailform // if(class_exists('GridFieldEditSiteTreeItemButton')){ // $gconf->addComponent(new GridFieldEditSiteTreeItemButton()); // } return $fields; }