From 4d89705fe6fbb37274c4f222ecb01894022c831b Mon Sep 17 00:00:00 2001 From: Chen Shenghan Date: Sun, 29 Apr 2018 21:33:05 +1200 Subject: [PATCH] NEW default value for Country Dropdown --- .../EditableCountryDropdownField.php | 13 +++++++++++-- .../EditableCountryDropdownFieldTest.php | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/code/Model/EditableFormField/EditableCountryDropdownField.php b/code/Model/EditableFormField/EditableCountryDropdownField.php index dd38a74..af60f38 100644 --- a/code/Model/EditableFormField/EditableCountryDropdownField.php +++ b/code/Model/EditableFormField/EditableCountryDropdownField.php @@ -22,13 +22,17 @@ class EditableCountryDropdownField extends EditableFormField private static $table_name = 'EditableCountryDropdownField'; /** - * @return FieldList + * @return \SilverStripe\Forms\FieldList */ public function getCMSFields() { $fields = parent::getCMSFields(); - $fields->removeByName('Default'); + $fields->replaceField( + 'Default', + DropdownField::create('Default', _t(__CLASS__ . '.DEFAULT', 'Default value')) + ->setSource(i18n::getData()->getCountries()) + ); return $fields; } @@ -40,6 +44,11 @@ class EditableCountryDropdownField extends EditableFormField ->setFieldHolderTemplate(EditableFormField::class . '_holder') ->setTemplate(EditableDropdown::class); + // Set default + if ($this->Default) { + $field->setValue($this->Default); + } + $this->doUpdateFormField($field); return $field; diff --git a/tests/Model/EditableFormField/EditableCountryDropdownFieldTest.php b/tests/Model/EditableFormField/EditableCountryDropdownFieldTest.php index cfff955..4668253 100644 --- a/tests/Model/EditableFormField/EditableCountryDropdownFieldTest.php +++ b/tests/Model/EditableFormField/EditableCountryDropdownFieldTest.php @@ -3,6 +3,7 @@ namespace SilverStripe\UserForms\Tests\Model\EditableFormField; use SilverStripe\Dev\SapphireTest; +use SilverStripe\Forms\DropdownField; use SilverStripe\UserForms\Model\EditableFormField\EditableCountryDropdownField; class EditableCountryDropdownFieldTest extends SapphireTest @@ -21,4 +22,22 @@ class EditableCountryDropdownFieldTest extends SapphireTest $field->Name = 'EditableFormField_123456'; $this->assertEmpty($field->getFormField()->Title()); } + + public function testCMSFieldsContainsDefaultValue() + { + /** @var EditableCountryDropdownField $field */ + $field = EditableCountryDropdownField::create(); + $cmsFields = $field->getCMSFields(); + $defaultField = $cmsFields->dataFieldByName('Default'); + $this->assertNotNull($defaultField); + $this->assertInstanceOf(DropdownField::class, $defaultField); + } + + public function testDefaultValue() + { + /** @var EditableCountryDropdownField $field */ + $field = EditableCountryDropdownField::create(); + $field->Default = 'nz'; + $this->assertEquals($field->getFormField()->Value(), 'nz'); + } }