public function testCustomItemRequestClass() { $this->logInWithPermission('ADMIN'); $component = new GridFieldDetailForm(); $this->assertEquals('GridFieldDetailForm_ItemRequest', $component->getItemRequestClass()); $component->setItemRequestClass('GridFieldDetailFormTest_ItemRequest'); $this->assertEquals('GridFieldDetailFormTest_ItemRequest', $component->getItemRequestClass()); }
function testCustomItemRequestClass() { $component = new GridFieldDetailForm(); $this->assertEquals('GridFieldDetailForm_ItemRequest', $component->getItemRequestClass()); $component->setItemRequestClass('GridFieldDetailFormTest_ItemRequest'); $this->assertEquals('GridFieldDetailFormTest_ItemRequest', $component->getItemRequestClass()); }
private function addDetailForm() { if ($this->config->getComponentByType('GridFieldDetailForm')) { return; } $form = new GridFieldDetailForm(); $form->setItemRequestClass('PickerFieldEditHandler'); return $this->config->addComponent($form); }
/** * Constructor * * @param Int $itemsPerPage How many items on each page to display */ public function __construct($itemsPerPage = null) { $this->addComponent(new GridFieldButtonRow('before')); $this->addComponent(new GridFieldAddNewButton('buttons-before-left')); $this->addComponent(new GridFieldToolbarHeader()); $this->addComponent($sort = new GridFieldSortableHeader()); $this->addComponent($filter = new GridFieldFilterHeader()); $this->addComponent(new GridFieldDataColumns()); $this->addComponent(new GridFieldEditButton()); $this->addComponent(new GridFieldDeleteAction()); $this->addComponent($pagination = new GridFieldPaginator($itemsPerPage)); $detailForm = new GridFieldDetailForm(); $detailForm->setItemRequestClass('GridFieldDetailForm_HasManyItemRequest'); $this->addComponent($detailForm); $sort->setThrowExceptionOnBadDataType(false); $filter->setThrowExceptionOnBadDataType(false); $pagination->setThrowExceptionOnBadDataType(false); }
public function getEditForm($id = null, $fields = null) { $form = parent::getEditForm($id, $fields); $params = $this->request->requestVar('q'); if ($this->modelClass == 'Product') { $gridField = $form->Fields()->fieldByName('Product'); $field_config = $gridField->getConfig(); // Re add creation button and update grid field $add_button = new GridFieldAddNewButton('toolbar-header-left'); $add_button->setButtonName('Add Product'); // Bulk manager $manager = new GridFieldBulkManager(); $manager->removeBulkAction("unLink"); $manager->removeBulkAction("delete"); $manager->addBulkAction('enable', 'Enable', 'CommerceProductBulkAction'); $manager->addBulkAction('disable', 'Disable', 'CommerceProductBulkAction'); $manager->addBulkAction('delete', 'Delete', 'GridFieldBulkActionDeleteHandler', array('isAjax' => true, 'icon' => 'decline', 'isDestructive' => true)); $field_config->addComponents($manager, GridFieldOrderableRows::create('Sort')); // Update list of items for subsite (if used) if (class_exists('Subsite')) { $list = $gridField->getList()->filter(array('SubsiteID' => Subsite::currentSubsiteID())); $gridField->setList($list); } } // Alterations for Hiarachy on product cataloge if ($this->modelClass == 'ProductCategory') { $fields = $form->Fields(); $gridField = $fields->fieldByName('ProductCategory'); // Set custom record editor $record_editor = new GridFieldDetailForm(); $record_editor->setItemRequestClass('ProductCategory_ItemRequest'); // Create add button and update grid field $add_button = new GridFieldAddNewButton('toolbar-header-left'); $add_button->setButtonName('Add Category'); // Bulk manager $manager = new GridFieldBulkManager(); $manager->removeBulkAction("unLink"); // Tidy up category config $field_config = $gridField->getConfig(); $field_config->removeComponentsByType('GridFieldExportButton')->removeComponentsByType('GridFieldPrintButton')->removeComponentsByType('GridFieldDetailForm')->removeComponentsByType('GridFieldAddNewButton')->addComponents($record_editor, $add_button, $manager, GridFieldOrderableRows::create('Sort')); // Setup hierarchy view $parentID = $this->request->requestVar('ParentID'); if ($parentID) { $field_config->addComponent(GridFieldLevelup::create($parentID)->setLinkSpec('?ParentID=%d')->setAttributes(array('data-pjax' => 'ListViewForm,Breadcrumbs'))); } // Find data colums, so we can add link to view children $columns = $gridField->getConfig()->getComponentByType('GridFieldDataColumns'); // Don't allow navigating into children nodes on filtered lists $fields = array('Title' => 'Title', 'URLSegment' => 'URLSegement'); if (!$params) { $fields = array_merge(array('listChildrenLink' => ''), $fields); } $columns->setDisplayFields($fields); $columns->setFieldCasting(array('Title' => 'HTMLText', 'URLSegment' => 'Text')); $controller = $this; $columns->setFieldFormatting(array('listChildrenLink' => function ($value, &$item) use($controller) { return sprintf('<a class="list-children-link" data-pjax-target="ListViewForm" href="%s?ParentID=%d">►</a>', $controller->Link(), $item->ID); })); // Update list of items for subsite (if used) if (class_exists('Subsite')) { $list = $gridField->getList()->filter(array('SubsiteID' => Subsite::currentSubsiteID())); $gridField->setList($list); } } $this->extend("updateEditForm", $form); return $form; }