From be671a77203137dbd3ff837cbcd1b18c7ad50aff Mon Sep 17 00:00:00 2001 From: Jason Irish Date: Mon, 17 Feb 2025 16:24:14 -0600 Subject: [PATCH 1/5] REFACTOR Augment Slide models VIdeo Slide: * add EmbedObject via EmbedField * choose between native and embed Image Slide: * Mobile image upload field Slide: * ShowCaption method --- src/Model/ImageSlide.php | 21 ++++++++++++++++++++- src/Model/Slide.php | 10 ++++++++++ src/Model/VideoSlide.php | 33 ++++++++++++++++++++++++++++++++- 3 files changed, 62 insertions(+), 2 deletions(-) diff --git a/src/Model/ImageSlide.php b/src/Model/ImageSlide.php index ab8c956..2a48bbd 100644 --- a/src/Model/ImageSlide.php +++ b/src/Model/ImageSlide.php @@ -4,8 +4,9 @@ use SilverStripe\Assets\Image; use SilverStripe\Forms\FieldList; -use SilverStripe\LinkField\Form\LinkField; use SilverStripe\LinkField\Models\Link; +use SilverStripe\LinkField\Form\LinkField; +use SilverStripe\AssetAdmin\Forms\UploadField; /** * Class \Dynamic\Carousel\Model\ImageSlide @@ -40,6 +41,7 @@ class ImageSlide extends Slide */ private static $has_one = [ 'Image' => Image::class, + 'ImageMobile' => Image::class, 'ElementLink' => Link::class, ]; @@ -49,6 +51,7 @@ class ImageSlide extends Slide */ private static $owns = [ 'Image', + 'ImageMobile', 'ElementLink', ]; @@ -82,6 +85,7 @@ public function getCMSFields(): FieldList $link = LinkField::create('ElementLink') ->setTitle($this->fieldLabel('ElementLink')) ); + $link->setDescription('Optional. Leave blank to hide.'); $fields->addFieldsToTab( 'Root.Main', @@ -93,6 +97,21 @@ public function getCMSFields(): FieldList ], 'Content' ); + + // Image for small screens + $fields->insertAfter( + 'Image', + UploadField::create('ImageMobile', 'Image (for small screens)') + ->setFolderName('Uploads/Carousel/Slides') + ->setDescription('Optional.') + ); + + if ( + $this->getOwner()->hasField('ParentID') && + $this->getOwner()->Parent() instanceof \SilverStripe\CMS\Model\SiteTree + ) { + $fields->dataFieldByName('Image')->setDescription('Recommended size: 1920x823'); + } }); return parent::getCMSFields(); diff --git a/src/Model/Slide.php b/src/Model/Slide.php index 18b315a..548deec 100644 --- a/src/Model/Slide.php +++ b/src/Model/Slide.php @@ -133,6 +133,16 @@ public function getCMSFields(): FieldList return parent::getCMSFields(); } + /** + * ShowCaption + */ + public function ShowCaption(): bool + { + $owner = $this->getOwner(); + + return (($owner->Title && $owner->ShowTitle) || $owner->SubTitle || $owner->Content); + } + /** * Basic permissions, defaults to parent perms where possible. * diff --git a/src/Model/VideoSlide.php b/src/Model/VideoSlide.php index c443d2f..c7a7fbe 100644 --- a/src/Model/VideoSlide.php +++ b/src/Model/VideoSlide.php @@ -4,6 +4,10 @@ use SilverStripe\Assets\File; use SilverStripe\Forms\FieldList; +use nathancox\EmbedField\Forms\EmbedField; +use nathancox\EmbedField\Model\EmbedObject; +use UncleCheese\DisplayLogic\Forms\Wrapper; +use SilverStripe\AssetAdmin\Forms\UploadField; /** * Class \Dynamic\Carousel\Model\VideoSlide @@ -41,6 +45,7 @@ class VideoSlide extends Slide */ private static $has_one = [ 'Video' => File::class, + 'EmbedVideo' => EmbedObject::class, ]; /** @@ -56,7 +61,33 @@ class VideoSlide extends Slide public function getCMSFields(): FieldList { $this->beforeUpdateCMSFields(function (FieldList $fields) { - //$fields-> + // Remvove fields + $fields->removeByName([ + 'EmbedVideoID', + 'Video', + ]); + + // Native video + $uploadVideo = UploadField::create('Video', 'Upload video') + ->setFolderName('Uploads/Carousel/Videos'); + + $fields->insertAfter( + 'VideoType', + $uploadVideo + ); + + // Embed video + // @phpstan-ignore class.notFound + $embedVideo = Wrapper::create(EmbedField::create('EmbedVideoID', 'Embed video')); + + $fields->insertAfter( + 'VideoType', + $embedVideo + ); + + // + $uploadVideo->displayIf("VideoType")->isEqualTo("Native"); + $embedVideo->displayIf("VideoType")->isEqualTo("Embed"); }); return parent::getCMSFields(); From 1e115a0cc4e2fc32f0e16060630da21060d6d205 Mon Sep 17 00:00:00 2001 From: Jason Irish Date: Mon, 17 Feb 2025 16:36:59 -0600 Subject: [PATCH 2/5] VIdeo field order --- src/Model/VideoSlide.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Model/VideoSlide.php b/src/Model/VideoSlide.php index c7a7fbe..a331ae5 100644 --- a/src/Model/VideoSlide.php +++ b/src/Model/VideoSlide.php @@ -67,9 +67,14 @@ public function getCMSFields(): FieldList 'Video', ]); + $fields->insertBefore( + 'Content', + $fields->dataFieldByName('VideoType') + ); + // Native video $uploadVideo = UploadField::create('Video', 'Upload video') - ->setFolderName('Uploads/Carousel/Videos'); + ->setFolderName('Uploads/Carousel/Videos'); $fields->insertAfter( 'VideoType', From d4237c0534806369afa2a5c78e26bb0c2d9e31b3 Mon Sep 17 00:00:00 2001 From: Jason Irish Date: Mon, 17 Feb 2025 16:42:00 -0600 Subject: [PATCH 3/5] require nanthancox/embedfield --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index fb37934..bab64e0 100644 --- a/composer.json +++ b/composer.json @@ -9,7 +9,8 @@ ], "require": { "jonom/focuspoint": "^5", - "silverstripe/linkfield":"^4.0", + "nathancox/embedfield": "^3.0", + "silverstripe/linkfield": "^4.0", "silverstripe/recipe-cms": "^5.0", "symbiote/silverstripe-gridfieldextensions": "^4" }, From 77a2867dd554865490fbce377a94f82246b566dc Mon Sep 17 00:00:00 2001 From: Jason Irish Date: Mon, 17 Feb 2025 16:46:30 -0600 Subject: [PATCH 4/5] display logic --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index bab64e0..36ccc0d 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,8 @@ "nathancox/embedfield": "^3.0", "silverstripe/linkfield": "^4.0", "silverstripe/recipe-cms": "^5.0", - "symbiote/silverstripe-gridfieldextensions": "^4" + "symbiote/silverstripe-gridfieldextensions": "^4", + "unclecheese/display-logic": "^3.0" }, "require-dev": { "dnadesign/silverstripe-elemental": "^5", From a938802f4fcc663c7ee54b67aca0fbb278d1463b Mon Sep 17 00:00:00 2001 From: Jason Irish Date: Mon, 17 Feb 2025 17:59:34 -0600 Subject: [PATCH 5/5] workflow --- .github/workflows/ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 19f7e63..bf02210 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,5 +9,3 @@ jobs: ci: name: CI uses: silverstripe/gha-ci/.github/workflows/ci.yml@v1 - with: - phpcoverage: true