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);
 }
Beispiel #4
0
 /**
  * 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">&#9658;</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;
 }