Source of file CleanTeasersExtension.php
Size: 3,614 Bytes - Last Modified: 2022-02-21T10:01:58+00:00
/var/www/docs.ssmods.com/process/src/code/models_extensions/CleanTeasersExtension.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | <?php /** * Provides your SiteTree class with has_many teasers feature. * It will utilize CleanTeaser 's. * * Add this extension to a SiteTree instance * by adding this to your _config.php: * * Object::add_extension('Page', 'CleanTeasersExtension'); * * @package cleanutilities * @subpackage models_extensions * * @author arillo */ class CleanTeasersExtension extends DataExtension { private static $has_many = array( 'CleanTeasers' => 'CleanTeaser' ); public function updateCMSFields(FieldList $fields) { $sortable = singleton('CleanTeaser')->hasExtension('SortableDataExtension'); $config = GridFieldConfig_RelationEditor::create(); $config->addComponent($gridFieldForm = new GridFieldDetailForm()); $dataFields = array(); if (singleton('CleanTeaser')->hasExtension('CMSPublishableDataExtension')) { $dataFields['PublishIndicator'] = 'Published'; } $dataFields = array_merge($dataFields, array( 'Thumbnail' => 'Thumbnail', 'Title' => 'Title', 'CleanDescription' => 'Description' )); $config->getComponentByType('GridFieldDataColumns')->setDisplayFields($dataFields); $gridFieldForm->setTemplate('CMSGridFieldPopupForms'); if ($sortable) { $config->addComponent(new GridFieldSortableRows('SortOrder')); } if (ClassInfo::exists('GridFieldBulkUpload')) { $iu = new GridFieldBulkUpload('ImageID'); if (singleton('CleanTeaser')->hasExtension('ControlledFolderDataExtension')) { $iu->setUfConfig( 'folderName', singleton('CleanTeaser')->getUploadFolder() ); } else { $iu->setUfConfig( 'folderName', CleanTeaser::$upload_folder ); } $config->addComponent($iu); } if ($sortable) { $data = $this->owner->CleanTeasers("ClassName = 'CleanTeaser'")->sort('SortOrder'); } else { $data = $this->owner->CleanTeasers("ClassName = 'CleanTeaser'"); } // $config->removeComponentsByType('GridFieldAddNewButton'); // if (ClassInfo::exists('GridFieldBulkUpload')) { // $config->addComponent(new GridFieldAddNewMultiClass()); // } $fields->addFieldToTab( "Root.Teasers", GridField::create('CleanTeasers', 'CleanTeaser', $data, $config) ); } /** * Getter for the attached teasers. * You can specifiy a range of those links. * * @param int $limit * @param int $offset * @param string $sortField * @param string $sortDir */ public function Teasers($limit = 0, $offset = 0, $sortField = 'SortOrder', $sortDir = 'ASC') { return $this->owner->CleanTeasers("ClassName = 'CleanTeaser'") ->limit($limit, $offset) ->sort($sortField, $sortDir); } /** * Tests if the count of teasers is higher than $num. * * @param int $num * @return bool */ public function MoreTeasersThan($num = 0) { if (singleton('CleanTeaser')->hasExtension('CMSPublishableDataExtension')) { return ($this->owner->CleanTeasers("ClassName = 'CleanTeaser'")->filter(array("Published" => true))->Count() > $num); } else { return ($this->owner->CleanTeasers("ClassName = 'CleanTeaser'")->Count() > $num); } } } |