diff --git a/src/Models/EmailLink.php b/src/Models/EmailLink.php index de01aaa1..3e9aadea 100644 --- a/src/Models/EmailLink.php +++ b/src/Models/EmailLink.php @@ -25,11 +25,11 @@ public function generateLinkDescription(array $data): string public function getCMSFields(): FieldList { - $fields = parent::getCMSFields(); + $this->beforeUpdateCMSFields(static function (FieldList $fields) { + $fields->replaceField('Email', EmailField::create('Email')); + }); - $fields->replaceField('Email', EmailField::create('Email')); - - return $fields; + return parent::getCMSFields(); } public function getURL() diff --git a/src/Models/Link.php b/src/Models/Link.php index 84a7dc17..cc58cea4 100644 --- a/src/Models/Link.php +++ b/src/Models/Link.php @@ -80,23 +80,24 @@ public function scaffoldLinkFields(array $data): FieldList */ public function getCMSFields(): FieldList { - $fields = parent::getCMSFields(); - $linkTypes = $this->getLinkTypes(); - - if (static::class === self::class) { - // Add a link type selection field for generic links - $fields->addFieldsToTab( - 'Root.Main', - [ - $linkTypeField = DropdownField::create('LinkType', 'Link Type', $linkTypes), - ], - 'Title' - ); - - $linkTypeField->setEmptyString('-- select type --'); - } + $this->beforeUpdateCMSFields(function (FieldList $fields) { + $linkTypes = $this->getLinkTypes(); + + if (static::class === self::class) { + // Add a link type selection field for generic links + $fields->addFieldsToTab( + 'Root.Main', + [ + $linkTypeField = DropdownField::create('LinkType', 'Link Type', $linkTypes), + ], + 'Title' + ); + + $linkTypeField->setEmptyString('-- select type --'); + } + }); - return $fields; + return parent::getCMSFields(); } /** diff --git a/src/Models/SiteTreeLink.php b/src/Models/SiteTreeLink.php index acbcbe40..a6c374b4 100644 --- a/src/Models/SiteTreeLink.php +++ b/src/Models/SiteTreeLink.php @@ -40,25 +40,31 @@ public function generateLinkDescription(array $data): string public function getCMSFields(): FieldList { - $fields = parent::getCMSFields(); - - $fields->insertAfter( - 'Title', - TreeDropdownField::create( + $this->beforeUpdateCMSFields(static function (FieldList $fields) { + // Remove scaffolded fields to we don't have field name conflicts which would prevent field customisation + $fields->removeByName([ + 'PageID', + 'Anchor', + ]); + + $fields->insertAfter( + 'Title', + TreeDropdownField::create( + 'PageID', + 'Page', + SiteTree::class, + 'ID', + 'TreeTitle' + ) + ); + + $fields->insertAfter( 'PageID', - 'Page', - SiteTree::class, - 'ID', - 'TreeTitle' - ) - ); - - $fields->insertAfter( - 'PageID', - AnchorSelectorField::create('Anchor') - ); - - return $fields; + AnchorSelectorField::create('Anchor') + ); + }); + + return parent::getCMSFields(); } public function getURL(): ?string