Source of file MultiEditedElementsExtension.php
Size: 4,882 Bytes - Last Modified: 2021-12-23T10:07:53+00:00
/var/www/docs.ssmods.com/process/src/src/Extension/MultiEditedElementsExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 | <?php namespace Symbiote\Elemental\Extension; use SilverStripe\ElementalBlocks\Block\FileBlock; use SilverStripe\Forms\FieldList; use DNADesign\Elemental\Models\BaseElement; use SilverStripe\Security\Permission; use SilverStripe\Forms\TextareaField; use SilverStripe\Forms\CheckboxField; use DNADesign\ElementalList\Model\ElementList; use Symbiote\MultiRecordField\Field\MultiRecordUploadField; use SilverStripe\AssetAdmin\Forms\UploadField; use Symbiote\MultiRecordField\Field\MultiRecordField; use SilverStripe\Core\ClassInfo; use SilverStripe\Core\Extension; /** * @author marcus */ class MultiEditedElementsExtension extends Extension { public function updateCMSFields(FieldList $fields) { if (!BaseElement::config()->enable_title_in_template) { $fields->removeByName('HideTitle'); } if (!Permission::check('ADMIN')) { $fields->removeByName('Type'); $fields->removeByName('MoveToListID'); } if ($this->owner instanceof FileBlock) { // don't need this $fields->removeByName('LinkDescription'); // replace the caption with a text field instead of html // if they're not a power user, only add caption if there's content already defined; ie we don't want // an empty field showing later $fields->replaceField('Caption', TextareaField::create('Caption', 'Image related text')); } $fields->removeByName('HideLink'); if ($fields->dataFieldByName('LinkText')) { $fields->insertAfter('LinkText', CheckboxField::create('HideLink', 'Hide Link?')); } } public function updateMultiEditFields(FieldList $fields) { $fields->removeByName('VirtualClones'); // @TODO disable for the moment if (!Permission::check('ADMIN')) { $fields->removeByName('RenderWithTemplate'); $fields->removeByName('ExtraClass'); // let's look for a list gridfield $editorFields = $this->owner->config()->element_editor_fields; if ($this->owner instanceof ElementList) { // remove the gridfield $fields->removeByName('Elements'); } $dataFields = $fields->dataFields(); if ($editorFields) { $editorFields = array_unique($editorFields); $keepFields = array(); foreach ($editorFields as $keepIt) { $f = $fields->dataFieldByName($keepIt); if ($f) { $keepFields[$keepIt] = $f; } if ($keepIt == 'Title') { $f->setRightTitle(''); } } // foreach ($dataFields as $f) { // $keepFields[$f->getName()] = $f; // } while ($fields->count()) { $fields->shift(); } // re-add the ones we want in the order we need them foreach ($editorFields as $keepIt) { if (isset($keepFields[$keepIt])) { $fields->push($keepFields[$keepIt]); } } } } // check all our fields for file uploads and replace them if (class_exists(MultiRecordUploadField::class)) { $df = $fields->dataFields(); foreach ($df as $f) { if ($f instanceof UploadField) { $uploadField = MultiRecordUploadField::create($f->getName(), $f->Title(), $f->getItems()); $uploadField->setAllowedExtensions($f->getAllowedExtensions()) ->setTemplateFileButtons($f->getTemplateFileButtons()) ->setFolderName($f->getFolderName()) ->setCanPreviewFolder($f->canPreviewFolder()) ->setDisplayFolderName($f->getDisplayFolderName()); // $fields->replaceField($f->getName(), $uploadField); } } } if ($this->owner instanceof ElementList && class_exists(MultiRecordField::class)) { // replace with editor field $editor = MultiRecordField::create('ElementListEditor' . $this->owner->ID, 'Items', $this->owner->Elements()); // adding elements inline doesn't quite work well enough just yet. // $editor->setCanAddInline(false); $classes = ClassInfo::subclassesFor(BaseElement::class); $editor->setModelClasses($classes); $fields->push($editor); } } } |