Source of file MiniGalleryPageExtension.php
Size: 5,297 Bytes - Last Modified: 2021-12-24T06:43:53+00:00
/var/www/docs.ssmods.com/process/src/src/Extension/MiniGalleryPageExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | <?php namespace Derralf\Minigallery; use Colymba\BulkUpload\BulkUploader; use Derralf\GridFieldToggleVisibility\GridFieldToggleHiddenAction; use SilverStripe\Core\Config\Config; use SilverStripe\Core\Config\Configurable; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\FieldList; use SilverStripe\Forms\GridField\GridField; use SilverStripe\Forms\GridField\GridFieldConfig_RelationEditor; use SilverStripe\ORM\DataExtension; use Symbiote\GridFieldExtensions\GridFieldOrderableRows; class MiniGalleryPageExtension extends DataExtension { use Configurable; private static $image_upload_foldername = 'minigallery'; private static $db = [ 'MiniGalleryCols' => "Enum('4,3,2,1','4')" ]; private static $has_many = [ 'MiniGalleryImages' => MiniGalleryImage::class ]; private static $owns = [ 'MiniGalleryImages' ]; /** * get upload folder name * - from custom function on owner * - or owner config * - or this config * * @return mixed */ public function getMiniGalleryUploadFolderName() { if(method_exists($this->owner, 'getCustomMiniGalleryUploadFolderName')) { return $this->owner->getCustomMiniGalleryUploadFolderName(); } if($this->owner->config()->get('minigallery_upload_foldername')) { return $this->owner->config()->get('minigallery_upload_foldername'); } return $this->config()->get('image_upload_foldername'); } public function updateCMSFields(FieldList $fields) { if($this->isMiniGalleryllowedPageType()) { // Columns $MiniGalleryCols = new DropdownField('MiniGalleryCols', "Anzahl Spalten", $this->TranslatedMiniGalleryColsEnumValues()); $fields->addFieldToTab('Root.Minigalerie', $MiniGalleryCols); // MiniGalleryImages: GridField $MiniGalleryImagesConfig = GridFieldConfig_RelationEditor::create(50); $MiniGalleryImagesConfig->removeComponentsByType('GridFieldDeleteAction'); $MiniGalleryImagesConfig->addComponent(new GridFieldOrderableRows('Sort')); $MiniGalleryImagesConfig->addComponent(new GridFieldToggleHiddenAction('Hidden')); $MiniGalleryImagesConfig->addComponent(new BulkUploader()); $MiniGalleryImagesConfig->getComponentByType('Colymba\\BulkUpload\\BulkUploader') ->setUfSetup('setFolderName',$this->getMiniGalleryUploadFolderName()) // 'minigallery' ->setUfSetup('setAllowedExtensions', array('jpg', 'jpeg', 'gif', 'png')) ->setAutoPublishDataObject(true); //->setUfSetup('setAllowedMaxFileSize', (2 * 1024 * 1024)); // 2MB //->setUfValidatorSetup('setAllowedMaxFileSize', (2 * 1024 * 1024)); // 2MB //->getValidator()->setAllowedMaxFileSize(2 * 1024 * 1024); // 2MB // ->setUfConfig('sequentialUploads', true); $MiniGalleryImagesField = new GridField( 'MiniGalleryImages', // Field name 'Minigalerie-Bilder', // Field title $this->owner->MiniGalleryImages(), // List of all related Elements $MiniGalleryImagesConfig ); $fields->addFieldToTab('Root.Minigalerie', $MiniGalleryImagesField); } return $fields; } /** * check if current Page is allowed to display Minigallery * @return bool */ public function isMiniGalleryllowedPageType() { $is_allowed = true; $allowed_pagetypes = $this->config()->get('allowed_pagetypes'); $disallowed_pagetypes = $this->config()->get('disallowed_pagetypes'); // if we have a "positive list" if(is_array($allowed_pagetypes)) { if (in_array(get_class($this->owner), $allowed_pagetypes)) { $is_allowed = true; } else { $is_allowed = false; } return $is_allowed; } // if we have a "negative list" if(is_array($disallowed_pagetypes)) { if (in_array(get_class($this->owner), $disallowed_pagetypes)) { $is_allowed = false; } else { $is_allowed = true; } return $is_allowed; } // let's assume we have no negative/positive list: return true return true; } /** * return active/valid images * @return false|mixed */ public function ActiveMiniGalleryImages() { if(!$this->isMiniGalleryllowedPageType()) { return false; } return $this->owner->MiniGalleryImages() ->filter(array('Hidden' => 0)) ->filterByCallback(function($item) { if ($item->Image()->exists()) {return true;} }); } public function TranslatedMiniGalleryColsEnumValues($namespace = 'Derralf\Minigallery\MiniGalleryCols') { $options = $this->owner->dbObject('MiniGalleryCols')->enumValues(); if (!empty($options)) { foreach ($options as $value) { $translatedOptions[$value] = _t("$namespace.$value", $value); } } return $translatedOptions; } } |