Source of file GridFieldDetailFormItemRequestExtension.php
Size: 2,794 Bytes - Last Modified: 2022-02-21T10:00:54+00:00
/var/www/docs.ssmods.com/process/src/src/Extensions/GridFieldDetailFormItemRequestExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | <?php namespace Symbiote\GridFieldExtensions\Extensions; use SilverStripe\Control\Controller; use SilverStripe\Core\Convert; use SilverStripe\Core\Extension; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\GridField\GridFieldDetailForm_ItemRequest as CoreGridFieldDetailForm_ItemRequest; use SilverStripe\Forms\LiteralField; use SilverStripe\View\ArrayData; use SilverStripe\View\HTML; use Symbiote\GridFieldExtensions\GridFieldAddNewMultiClass; use Symbiote\GridFieldExtensions\GridFieldExtensions; /** * @property CoreGridFieldDetailForm_ItemRequest $owner */ class GridFieldDetailFormItemRequestExtension extends Extension { /** * @param FieldList $actions */ public function updateFormActions(FieldList &$actions) { $grid = $this->owner->getGridField(); $gridFieldConfig = $grid->getConfig(); $addMultiClassComponent = $gridFieldConfig->getComponentByType(GridFieldAddNewMultiClass::class); if ($addMultiClassComponent) { $newRecordField = static::get_new_record_field_from_actions($actions); if ($newRecordField) { $newRecordField->getContainerFieldList()->removeByName('new-record'); $newRecordField->getContainerFieldList()->push( LiteralField::create('new-record', $this->getHTMLFragment($addMultiClassComponent)) ); GridFieldExtensions::include_requirements(); } } } /** * {@inheritDoc} */ private function getHTMLFragment(GridFieldAddNewMultiClass $component) { $grid = $this->owner->getGridField(); $classes = $component->getClasses($grid); if (!count($classes)) { return false; } return HTML::createTag('a', [ 'data-href-template' => Controller::join_links($grid->Link(), 'add-multi-class', '{class}'), 'title' => _t(__CLASS__ . '.NEW', 'Add new record'), 'aria-label' => _t(__CLASS__ . '.NEW', 'Add new record'), 'class' => implode(' ', array( 'btn', 'btn-primary', 'font-icon-plus-thin', 'btn--circular', 'action--new', 'discard-confirmation', 'action--new__multi-class', )), 'data-classes' => Convert::array2json($classes), ]); } /** * @param FieldList $actions * @return LiteralField OR NULL */ private static function get_new_record_field_from_actions(FieldList &$actions) { $rightGroup = $actions->fieldByName('RightGroup'); if (!$rightGroup) { return null; } return $rightGroup->getChildren()->fieldByName('new-record'); } } |