Source of file EditableCountryDropdownField.php
Size: 3,025 Bytes - Last Modified: 2021-12-23T10:35:40+00:00
/var/www/docs.ssmods.com/process/src/code/Model/EditableFormField/EditableCountryDropdownField.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | <?php namespace SilverStripe\UserForms\Model\EditableFormField; use SilverStripe\Core\Manifest\ModuleLoader; use SilverStripe\Forms\CheckboxField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\TextField; use SilverStripe\i18n\i18n; use SilverStripe\UserForms\Model\EditableCustomRule; use SilverStripe\UserForms\Model\EditableFormField; /** * A dropdown field which allows the user to select a country * * @package userforms * @property bool $UseEmptyString * @property string $EmptyString */ class EditableCountryDropdownField extends EditableFormField { private static $singular_name = 'Country Dropdown'; private static $plural_name = 'Country Dropdowns'; private static $db = array( 'UseEmptyString' => 'Boolean', 'EmptyString' => 'Varchar(255)', ); private static $table_name = 'EditableCountryDropdownField'; /** * @return \SilverStripe\Forms\FieldList */ public function getCMSFields() { $fields = parent::getCMSFields(); $fields->removeByName('Default'); $fields->addFieldToTab( 'Root.Main', DropdownField::create('Default', _t(__CLASS__ . '.DEFAULT', 'Default value')) ->setSource(i18n::getData()->getCountries()) ->setHasEmptyDefault(true) ->setEmptyString('---') ); $fields->addFieldToTab( 'Root.Main', CheckboxField::create('UseEmptyString', _t(__CLASS__ . '.USE_EMPTY_STRING', 'Set default empty string')) ); $fields->addFieldToTab( 'Root.Main', TextField::create('EmptyString', _t(__CLASS__ . '.EMPTY_STRING', 'Empty String')) ); return $fields; } public function getFormField() { $field = DropdownField::create($this->Name, $this->Title ?: false) ->setSource(i18n::getData()->getCountries()) ->setFieldHolderTemplate(EditableFormField::class . '_holder') ->setTemplate(EditableDropdown::class); // Empty string if ($this->UseEmptyString) { $field->setEmptyString($this->EmptyString ?: ''); } // Set default if ($this->Default) { $field->setValue($this->Default); } $this->doUpdateFormField($field); return $field; } public function getValueFromData($data) { if (!empty($data[$this->Name])) { $source = $this->getFormField()->getSource(); return $source[$data[$this->Name]]; } } public function getIcon() { $resource = ModuleLoader::getModule('silverstripe/userforms')->getResource('images/editabledropdown.png'); if (!$resource->exists()) { return ''; } return $resource->getURL(); } public function getSelectorField(EditableCustomRule $rule, $forOnLoad = false) { return "$(\"select[name='{$this->Name}']\")"; } } |