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;
}