/** * Scaffolds the relation WidgetArea into the context CMSFields and configurates * the GridField. * * @param DataObject $context Context to get Widget admin for * * @return void * * @author Sebastian Diel <*****@*****.**> * @since 05.03.2014 */ public static function scaffold_widget_area_fields_for($context) { $fields = $context->WidgetArea()->scaffoldFormFields(array('includeRelations' => $context->isInDB(), 'tabbed' => false, 'ajaxSafe' => true)); if ($context->isInDB()) { $widgetsField = $fields->dataFieldByName('Widgets'); $widgetsFieldConfig = $widgetsField->getConfig(); $widgetsFieldConfig->removeComponentsByType('GridFieldAddExistingAutocompleter'); if (class_exists('GridFieldSortableRows')) { $widgetsFieldConfig->addComponent(new GridFieldSortableRows('Sort')); } $widgetsFieldConfig->getComponentByType('GridFieldDataColumns')->setDisplayFields(array('Title' => $context->fieldLabel('Title'), 'ClassName' => _t('WidgetSetWidget.TYPE'))); // this is configured with a remove relation button by default which results in unaccessible widgets $widgetsFieldConfig->removeComponentsByType('GridFieldDeleteAction'); // so we add a new one without a relation button $widgetsFieldConfig->addComponent(new GridFieldDeleteAction()); } return $fields; }