Source of file SCEGridConfig.php
Size: 3,398 Bytes - Last Modified: 2018-12-30T10:57:16+00:00
/var/www/docs.ssmods.com/process/src/code/gridfield/SCEGridConfig.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | <?php class SCEGridConfig extends GridFieldConfig { public function __construct($itemsPerPage = 30, $sortField = false) { parent::__construct(); $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()); if($sortField) { $this->addComponent(new GridFieldOrderableRows($sortField)); } $this->addComponent(new GridFieldDataColumns()); $this->addComponent(new GridFieldEditButton()); $this->addComponent(new GridFieldDeleteAction()); $this->addComponent(new GridFieldPageCount('toolbar-header-right')); $this->addComponent($pagination = new GridFieldPaginator($itemsPerPage)); $this->addComponent(new GridFieldDetailForm()); $filter->setThrowExceptionOnBadDataType(false); $sort->setThrowExceptionOnBadDataType(false); $pagination->setThrowExceptionOnBadDataType(false); $this->extend('updateConfig', $this); } // - -------------------------------------------------------------------------------------- // - Demo Usage // - Note that cou can combine relation and multi but not inline with relation and/or multi // - -------------------------------------------------------------------------------------- // // GridField::create('Relation', 'Title', $this->Relation(), $conf = GridConfig::create()) // // $conf->set([ // 'relation', // 'multi', // 'inline' => [ // 'edit', // 'fields' => [ // 'FirstField' => [ // 'title' => 'Custom Title', // 'field' => 'ReadonlyField' // ], // 'SecondField' => [ // 'title' => 'Custom Title Two', // 'callback' => function($record, $column, $grid) { // return TextField::create($column); // } // ] // ] // ] // ]); public function set(Array $args) { if(in_array('multi', $args)) { $this->removeComponentsByType('GridFieldAddNewButton'); $this->addComponent(new GridFieldAddNewMultiClass('buttons-before-left')); } if(in_array('relation', $args)) { $this->addComponent(new GridFieldAddExistingSearchButton()); $this->addComponent(new GridFieldDeleteAction(true)); } if(in_array('inline', $args) || isset($args['inline'])) { $this->removeComponentsByType('GridFieldAddNewButton'); $this->removeComponentsByType('GridFieldAddNewMultiClass'); $this->removeComponentsByType('GridFieldDataColumns'); $this->removeComponentsByType('GridFieldEditButton'); $this->removeComponentsByType('GridFieldDeleteAction'); $this->addComponent(new GridFieldEditableColumns()); if(isset($args['inline'])) { $inlineSettings = $args['inline']; if(in_array('edit', $inlineSettings)) { $this->addComponent(new GridFieldDetailForm()); $this->addComponent(new GridFieldEditButton()); } if(isset($inlineSettings['fields'])) { $this->getComponentByType('GridFieldEditableColumns') ->setDisplayFields($inlineSettings['fields']); } } $this->addComponent(new GridFieldDeleteAction()); $this->addComponent(new GridFieldAddNewInlineButton('buttons-before-left')); if(in_array('relation', $args)) { $this->addComponent(new GridFieldDeleteAction(true)); } } } } |