diff --git a/src/BannerImage.php b/src/BannerImage.php index 536b2a4..870b13a 100644 --- a/src/BannerImage.php +++ b/src/BannerImage.php @@ -4,7 +4,9 @@ use SilverStripe\ORM\DataObject; use SilverStripe\Security\Permission; -use Image; +use SilverStripe\Assets\Image; +use SilverStripe\CMS\Model\SiteTree; +use SilverStripe\Forms\TreeDropdownField; use Page; class BannerImage extends DataObject @@ -15,19 +17,19 @@ class BannerImage extends DataObject private static $db = array( 'Title' => 'Varchar(255)', 'SubTitle' => 'Varchar(255)', - // 'Link' => 'LinkField', // TODO: support linking banners in ss4 'Sort' => 'Int' ); private static $has_one = array( 'Image' => Image::class, - 'Parent' => Page::class + 'Parent' => Page::class, + 'Link' => SiteTree::class, ); private static $summary_fields = array( 'Image.CMSThumbnail' => 'Image', 'CMSTitle' => 'Title', - // 'Link' => 'Link' + 'Link.Title' => 'Link' ); private static $default_sort = "\"Sort\" ASC, \"ID\" ASC"; @@ -40,6 +42,16 @@ public function getCMSFields() $fields->insertBefore($image, 'Title'); $fields->removeByName('ParentID'); $fields->removeByName('Sort'); + + $fields->replaceField( + 'LinkID', + TreeDropdownField::create( + 'LinkID', + 'Link', + SiteTree::class + ) + ); + return $fields; } diff --git a/src/BannersExtension.php b/src/BannersExtension.php index 2ceb9b2..2f3396d 100644 --- a/src/BannersExtension.php +++ b/src/BannersExtension.php @@ -2,7 +2,7 @@ namespace Burnbright\SilverstripeBanner; -use BannerImage; +use Burnbright\SilverstripeBanner\BannerImage; use SilverStripe\Forms\FieldList; use SilverStripe\ORM\DataExtension; use SilverStripe\Forms\GridField\GridField; @@ -12,7 +12,7 @@ class BannersExtension extends DataExtension { - public static $has_many = array( + private static $has_many = array( 'Banners' => BannerImage::class );