<?php namespace SilverStripe\UserForms\Model\EditableFormField; use SilverStripe\Forms\CheckboxField; use SilverStripe\Forms\DropdownField; use SilverStripe\Forms\TextField; use SilverStripe\UserForms\Model\EditableCustomRule; use SilverStripe\UserForms\Model\EditableFormField; /** * EditableDropdown * * Represents a modifiable dropdown (select) box on a form * * @property bool $UseEmptyString * @property string $EmptyString * * @package userforms */ class EditableDropdown extends EditableMultipleOptionField { private static $singular_name = 'Dropdown Field'; private static $plural_name = 'Dropdowns'; private static $db = array( 'UseEmptyString' => 'Boolean', 'EmptyString' => 'Varchar(255)', ); private static $table_name = 'EditableDropdown'; /** * @return FieldList */ public function getCMSFields() { $fields = parent::getCMSFields(); $fields->addFieldToTab( 'Root.Main', CheckboxField::create('UseEmptyString') ->setTitle('Set default empty string') ); $fields->addFieldToTab( 'Root.Main', TextField::create('EmptyString') ->setTitle('Empty String') ); $fields->removeByName('Default'); return $fields; } /** * @return DropdownField */ public function getFormField() { $field = DropdownField::create($this->Name, $this->EscapedTitle, $this->getOptionsMap()) ->setFieldHolderTemplate(EditableFormField::class . '_holder') ->setTemplate(__CLASS__); if ($this->UseEmptyString) { $field->setEmptyString(($this->EmptyString) ? $this->EmptyString : ''); } // Set default $defaultOption = $this->getDefaultOptions()->first(); if ($defaultOption) { $field->setValue($defaultOption->Value); } $this->doUpdateFormField($field); return $field; } public function getSelectorField(EditableCustomRule $rule, $forOnLoad = false) { return "$(\"select[name='{$this->Name}']\")"; } }