From b6c20dbf8c990f617db569328beb792e402fe9e0 Mon Sep 17 00:00:00 2001 From: Tony Air Date: Fri, 26 Feb 2021 11:14:20 +0700 Subject: [PATCH] FIX: minor fixtures --- app/src/Extensions/ElementImageWidget.php | 75 +++++++++++-------- app/src/Widgets/BannerWidget.php | 23 +++++- .../Elements/Image/Elements/ElementImage.ss | 2 +- 3 files changed, 65 insertions(+), 35 deletions(-) diff --git a/app/src/Extensions/ElementImageWidget.php b/app/src/Extensions/ElementImageWidget.php index e0eb1a5..abb0e05 100644 --- a/app/src/Extensions/ElementImageWidget.php +++ b/app/src/Extensions/ElementImageWidget.php @@ -27,16 +27,16 @@ class ElementImageWidget extends DataExtension ]; private static $available_widths = [ - '300' => 'Small (300px)', + '300' => 'Small (300px)', '400' => 'Medium (400px)', '600' => 'Big (600px)', ]; private static $db = [ 'Resize' => 'Boolean(1)', - 'ManualWidth' => 'Boolean(0)', + 'ManualWidth' => 'Boolean(0)', 'ImageHeight' => 'Float', - 'ImageWidth' => 'Float', + 'ImageWidth' => 'Float', 'Content' => 'HTMLText', ]; @@ -48,44 +48,42 @@ class ElementImageWidget extends DataExtension { parent::updateCMSFields($fields); - $fields->insertBefore( - 'Image', - LinkField::create('ImageLinkID', 'Link') - ); + $fields->removeByName(['ImageLinkID', 'Resize']); + + $fields->push(LinkField::create('ImageLinkID', 'Link')); $this->owner->ImageHeight = $this->getHeight(); $heights = Config::inst()->get(__CLASS__, 'available_heights'); $widths = Config::inst()->get(__CLASS__, 'available_widths'); - $fields->replaceField('Resize', CheckboxField::create( + $fields->push(CheckboxField::create( 'Resize', 'Would you like to scale image?' )); if (count($heights)) { - $fields->removeByName(['ManualWidth','ImageWidth',]); - $fields->replaceField( - 'ImageHeight', - CompositeField::create( - DropdownField::create( - 'ImageHeight', - 'Image Height', - $heights, - $this->getHeight() - ) - ->setEmptyString('(auto)') - ->displayIf('Resize')->isChecked()->end(), - CheckboxField::create('ManualWidth', 'Set Width Manually') - ->displayIf('Resize')->isChecked()->end(), - DropdownField::create( - 'ImageWidth', - 'Image Width', - $widths - ) - ->setEmptyString('(auto)') - ->displayIf('ManualWidth')->isChecked()->end() - ) + $fields->removeByName(['ManualWidth','ImageWidth', 'ImageHeight']); + $fields->push( + CompositeField::create( + DropdownField::create( + 'ImageHeight', + 'Image Height', + $heights, + $this->getHeight() + ) + ->setEmptyString('(auto)') + ->displayIf('Resize')->isChecked()->end(), + CheckboxField::create('ManualWidth', 'Set Width Manually') + ->displayIf('Resize')->isChecked()->end(), + DropdownField::create( + 'ImageWidth', + 'Image Width', + $widths + ) + ->setEmptyString('(auto)') + ->displayIf('ManualWidth')->isChecked()->end() + ) ); } else { $fields->dataFieldByName('ImageHeight') @@ -117,10 +115,10 @@ class ElementImageWidget extends DataExtension public function getWidth() { - $obj = $this->owner; + $obj = $this->owner; return $obj->getField('ManualWidth') && $obj->getField('ImageWidth') - ? $obj->getField('ImageWidth') - : $obj->getColumnWidthRecursive(); + ? $obj->getField('ImageWidth') + : $obj->getColumnWidthRecursive(); } public function getHeight() @@ -140,4 +138,15 @@ class ElementImageWidget extends DataExtension return 0; } + + public function onBeforeWrite() + { + $title = $this->owner->getField('Title'); + $img = $this->owner->Image(); + if (!$title && $img) { + $this->owner->setField('Title', $img->getTitle()); + } + + parent::onBeforeWrite(); + } } diff --git a/app/src/Widgets/BannerWidget.php b/app/src/Widgets/BannerWidget.php index 17001fc..ffae573 100644 --- a/app/src/Widgets/BannerWidget.php +++ b/app/src/Widgets/BannerWidget.php @@ -44,6 +44,27 @@ class BannerWidget extends Widget public function getSibling() { - return false; + return false; + } + + private $_random; + public function Random() + { + if (!$this->_random) { + $this->_random = self::get()->filter('Enabled', true)->sort('RAND()')->first(); + } + + return $this->_random; + } + + public function onBeforeWrite() + { + $title = $this->getField('Title'); + $img = $this->Image(); + if (!$title && $img) { + $this->setField('Title', $img->getTitle()); + } + + parent::onBeforeWrite(); } } diff --git a/app/templates/Dynamic/Elements/Image/Elements/ElementImage.ss b/app/templates/Dynamic/Elements/Image/Elements/ElementImage.ss index 581854f..819fa8d 100644 --- a/app/templates/Dynamic/Elements/Image/Elements/ElementImage.ss +++ b/app/templates/Dynamic/Elements/Image/Elements/ElementImage.ss @@ -2,7 +2,7 @@
$Title.ATT
<% end_if %>