'Boolean(0)', 'DateOn' => 'Datetime', 'DateOff' => 'Datetime', ]; private $_cache = [ 'element' => [], ]; public function getElement() { if(!isset($this->_cache['element'][$this->owner->ID])) { $this->_cache['element'][$this->owner->ID] = $this->owner->SlideshowElement(); } return $this->_cache['element'][$this->owner->ID]; } public function ImageURL() { $el = $this->getElement(); $img = $this->owner->Image(); if(!$img) { return null; } if($el->getField('ImageOriginalSize')){ return $img->Link(); } return $img->FocusFill($this->getSlideWidth(), $this->getSlideHeight())->Link(); } public function getSlideWidth() { $element = $this->getElement(); if(!$element->ID) { return SliderElement::config()->get('slide_width'); } return $element->getSlideWidth(); } public function getSlideHeight() { $element = $this->getElement(); if(!$element->ID) { return SliderElement::config()->get('slide_height'); } return $element->getSlideHeight(); } public function updateCMSFields(FieldList $fields) { parent::updateCMSFields($fields); $fields->removeByName([ 'PageLinkID', 'Hide', 'DateOn', 'DateOff', ]); $width = $this->getSlideWidth(); $height = $this->getSlideHeight(); $imgFieldTitle = 'Image'; if($width && $height) { $title .= '('.$this->getSlideWidth().' x '.$this->getSlideHeight().' px)'; }else{ $title .= '(original image size will be used)'; } $fields->dataFieldByName('Image') ->setTitle('Image ('.$this->getSlideWidth().' x '.$this->getSlideHeight().' px)'); $fields->addFieldToTab('Root.Main', ToggleCompositeField::create( 'ConfigHD', 'Slide Settings', [ CheckboxField::create('Hide', 'Hide this slide? (That will hide the slide regardless of start/end fields)'), DatetimeField::create('DateOn', 'When would you like to start showing the slide?'), DatetimeField::create('DateOff', 'When would you like to stop showing the slide?'), ] )); } public function validate(ValidationResult $validationResult) { if (!$this->owner->Name) { $this->owner->Name = rand(); } } }