IMPROVEMENT: customize slide image size

This commit is contained in:
Tony Air 2020-02-13 03:41:09 +07:00
parent d52c250076
commit 918cf66907
3 changed files with 52 additions and 13 deletions

View File

@ -24,10 +24,13 @@ class SliderElement extends ElementSlideshow
private static $plural_name = 'Sliders'; private static $plural_name = 'Sliders';
private static $description = 'Displays slideshow'; private static $description = 'Displays slide show';
private static $table_name = 'SliderElement'; private static $table_name = 'SliderElement';
private static $slide_width = 2140;
private static $slide_height = 700;
private static $db = [ private static $db = [
'Interval' => 'Int', 'Interval' => 'Int',
]; ];
@ -47,6 +50,16 @@ class SliderElement extends ElementSlideshow
return self::$singular_name; return self::$singular_name;
} }
public function getSlideWidth()
{
return self::config()->get('slide_width');
}
public function getSlideHeight()
{
return self::config()->get('slide_height');
}
public function getCMSFields() public function getCMSFields()
{ {
$fields = parent::getCMSFields(); $fields = parent::getCMSFields();
@ -92,14 +105,14 @@ class SliderElement extends ElementSlideshow
*/ */
public function getSlideShow() public function getSlideShow()
{ {
if($this->items) { if ($this->items) {
return $this->items; return $this->items;
} }
$date = date('Y-m-d H:i:s'); $date = date('Y-m-d H:i:s');
$this->items = $this->Slides()->filter([ $this->items = $this->Slides()->filter([
'Hide' => '0', 'Hide' => '0',
])->filterByCallback(function($item, $list) use ($date) { ])->filterByCallback(static function ($item, $list) use ($date) {
$on = $item->getField('DateOn'); $on = $item->getField('DateOn');
$off = $item->getField('DateOff'); $off = $item->getField('DateOff');
@ -113,7 +126,7 @@ class SliderElement extends ElementSlideshow
{ {
parent::onBeforeWrite(); parent::onBeforeWrite();
if(!$this->getField('Interval')){ if (!$this->getField('Interval')) {
$this->setField('Interval', 5000); $this->setField('Interval', 5000);
} }
} }

View File

@ -4,16 +4,14 @@
* User: tony * User: tony
* Date: 6/30/18 * Date: 6/30/18
* Time: 11:37 PM * Time: 11:37 PM
* Ref: Dynamic\FlexSlider\Model\SlideImage
*/ */
namespace Site\Extensions; namespace Site\Extensions;
use Sheadawson\Linkable\Forms\LinkField;
use Sheadawson\Linkable\Models\Link;
use SilverStripe\Forms\CheckboxField; use SilverStripe\Forms\CheckboxField;
use SilverStripe\Forms\DatetimeField; use SilverStripe\Forms\DatetimeField;
use SilverStripe\Forms\FieldList; use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\ToggleCompositeField; use SilverStripe\Forms\ToggleCompositeField;
use SilverStripe\ORM\DataExtension; use SilverStripe\ORM\DataExtension;
@ -25,6 +23,29 @@ class SlideImageExtension extends DataExtension
'DateOff' => 'Datetime', 'DateOff' => 'Datetime',
]; ];
private $_cache = [];
public function getElement()
{
if(!isset($this->_cache['element'])) {
$this->_cache['element'] = $this->owner->SlideshowElement();
}
return $this->_cache['element'];
}
public function getSlideWidth()
{
$element = $this->getElement();
return $element->getSlideWidth();
}
public function getSlideHeight()
{
$element = $this->getElement();
return $element->getSlideHeight();
}
public function updateCMSFields(FieldList $fields) public function updateCMSFields(FieldList $fields)
{ {
parent::updateCMSFields($fields); parent::updateCMSFields($fields);
@ -36,9 +57,14 @@ class SlideImageExtension extends DataExtension
'DateOff', 'DateOff',
]); ]);
$fields->dataFieldByName('Image')
->setTitle('Image ('.$this->getSlideWidth().' x '.$this->getSlideHeight().' px)');
$fields->addFieldToTab('Root.Main', ToggleCompositeField::create( $fields->addFieldToTab('Root.Main', ToggleCompositeField::create(
'ConfigHD', 'ConfigHD',
'Slide Settings', [ 'Slide Settings',
[
CheckboxField::create('Hide', 'Hide this slide? (That will hide the slide regardless of start/end fields)'), 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('DateOn', 'When would you like to start showing the slide?'),
DatetimeField::create('DateOff', 'When would you like to stop showing the slide?'), DatetimeField::create('DateOff', 'When would you like to stop showing the slide?'),

View File

@ -8,7 +8,7 @@
<span class="img"> <span class="img">
<img class="d-block w-100" <img class="d-block w-100"
src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
data-lazy-src="<% if $ImageURL %>$ImageURL<% else %>$Image.Fill(1400,650).URL<% end_if %>" data-lazy-src="<% if $ImageURL %>$ImageURL<% else %>$Image.Fill($SlideWidth,$SlideHeight).URL<% end_if %>"
alt="<% if $Headline %>$Headline.XML<% end_if %>" alt="<% if $Headline %>$Headline.XML<% end_if %>"
/> />
</span> </span>