1 <?php
2 3 4 5 6 7 8
9
10 class EditableTextField extends EditableFormField {
11
12 static $singular_name = 'Text Field';
13
14 static $plural_name = 'Text Fields';
15
16 static $patterns = array('letters', 'digits');
17
18 static function get_patterns() {
19 $patterns = array('' => _t('EditableFormField.NOTSELECTED'));
20 foreach(self::$patterns as $pattern) {
21 $patterns[$pattern] = _t("EditableTextField.PatternTitle_{$pattern}");
22 }
23 return $patterns;
24 }
25
26 static function get_pattern($pattern_title) {
27 return _t("EditableTextField.PatternValue_{$pattern_title}");
28 }
29
30 function getFieldConfiguration() {
31 $fields = parent::getFieldConfiguration();
32
33 $min = ($this->getSetting('MinLength')) ? $this->getSetting('MinLength') : '';
34 $max = ($this->getSetting('MaxLength')) ? $this->getSetting('MaxLength') : '';
35
36 $rows = ($this->getSetting('Rows')) ? $this->getSetting('Rows') : '1';
37 $pattern = ($this->getSetting('Pattern')) ? $this->getSetting('Pattern') : '';
38
39 $extraFields = new FieldSet(
40 new FieldGroup(_t('EditableTextField.TEXTLENGTH', 'Text length'),
41 new TextField($this->getSettingName('MinLength'), "", $min),
42 new TextField($this->getSettingName('MaxLength'), " - ", $max)
43 ),
44 new TextField($this->getSettingName('Rows'), _t('EditableTextField.NUMBERROWS', 'Number of rows'), $rows),
45 new TextField($this->getSettingName('Pattern'), _t('EditableTextField.PATTERN', 'Pattern'), $pattern)
46 );
47 if ($autocompletes = EditableFormField::get_possible_autocompletes(true)) {
48 $autocomplete = ($this->getSetting('Autocomplete')) ? $this->getSetting('Autocomplete') : '';
49 $extraFields->push(new DropdownField($this->getSettingName('Autocomplete'), _t('EditableTextField.AUTOCOMPLETE', 'Autocomplete'), $autocompletes, $autocomplete));
50 }
51
52 $fields->merge($extraFields);
53
54 return $fields;
55 }
56
57 58 59
60 function getFormField() {
61 if($this->getSetting('Rows') && $this->getSetting('Rows') > 1) {
62 $field = new TextareaField($this->Name, $this->Title, $this->getSetting('Rows'));
63 }
64 else {
65 $field = new TextField($this->Name, $this->Title, null, $this->getSetting('MaxLength'));
66 }
67 if ($this->getSetting('Pattern')) {
68 $field->setHTML5Attribute('pattern', self::get_pattern($this->getSetting('Pattern')));
69 }
70 if ($this->getSetting('Autocomplete')) {
71 $field->setHTML5Attribute('autocomplete', $this->getSetting('Autocomplete'));
72 }
73 return $field;
74 }
75
76 77 78 79 80 81 82 83
84 public function getValidation() {
85 $options = parent::getValidation();
86
87 if($this->getSetting('MinLength'))
88 $options['minlength'] = $this->getSetting('MinLength');
89
90 if($this->getSetting('MaxLength'))
91 $options['maxlength'] = $this->getSetting('MaxLength');
92
93 return $options;
94 }
95 }
[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the
Silverstripe Forums to ask development related questions.
-