Source of file ElementFileList.php
Size: 3,245 Bytes - Last Modified: 2021-12-24T05:19:58+00:00
/var/www/docs.ssmods.com/process/src/src/Model/ElementFileList.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | <?php namespace Jellygnite\Elements\Model; use Colymba\BulkUpload\BulkUploader; use DNADesign\Elemental\Models\BaseElement; use Jellygnite\Elements\Controllers\CustomElementController; use Jellygnite\Elements\Model\FileListObject; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\GridField\GridFieldAddExistingAutocompleter; use SilverStripe\Forms\GridField\GridFieldDeleteAction; use SilverStripe\ORM\FieldType\DBField; use Symbiote\GridFieldExtensions\GridFieldOrderableRows; class ElementFileList extends BaseElement { /** * @var string */ private static $icon = 'font-icon-block-file-list'; /** * @var string */ private static $table_name = 'ElementFileList'; /** * @var array */ private static $has_many = [ 'Files' => FileListObject::class, ]; /** * @var array */ private static $owns = [ 'Files', ]; /** * @var bool */ private static $inline_editable = false; // allows us to store templates in this module folder private static $controller_class = CustomElementController::class; /** * @param bool $includerelations * @return array */ public function fieldLabels($includerelations = true) { $labels = parent::fieldLabels($includerelations); $labels['Files'] = _t(__CLASS__.'.FilesLabel', 'Files'); return $labels; } /** * @return FieldList */ public function getCMSFields() { $this->beforeUpdateCMSFields(function (FieldList $fields) { if ($this->ID) { $field = $fields->dataFieldByName('Files'); $fields->removeByName('Files'); $config = $field->getConfig(); $config ->addComponents([ new GridFieldOrderableRows('SortOrder') ]) ->removeComponentsByType([ GridFieldAddExistingAutocompleter::class, GridFieldDeleteAction::class ]); if (class_exists(BulkUploader::class)) { $config->addComponents([ new BulkUploader() ]); $config->getComponentByType(BulkUploader::class) ->setUfSetup('setFolderName', 'uploads/filelist/'); } $fields->addFieldToTab('Root.Main', $field); } }); return parent::getCMSFields(); } /** * @return DBHTMLText */ public function getSummary() { if ($this->Files()->count() == 1) { $label = ' file'; } else { $label = ' files'; } return DBField::create_field('HTMLText', $this->Files()->count() . $label)->Summary(20); } /** * @return array */ protected function provideBlockSchema() { $blockSchema = parent::provideBlockSchema(); $blockSchema['content'] = $this->getSummary(); return $blockSchema; } /** * @return string */ public function getType() { return _t(__CLASS__.'.BlockType', 'File List'); } } |