diff --git a/src/Form/Field.php b/src/Form/Field.php index 6736ea7..bb756cb 100644 --- a/src/Form/Field.php +++ b/src/Form/Field.php @@ -1,4 +1,4 @@ -create($this, $input); - } else if (isset($input['options.pair'])) { - $this->options = $this->optionsPair($input['options.pair']); - } else if (isset($input['options'])) { - $this->options = $input['options']; - } - - foreach ($this->options as &$option) { - $option['selected'] = false; - $option['class'] = (isset($option['class'])) ? $option['class'] : false; - } - } - - public function optionsPair($list, $selected = false) { - $result = array(); - foreach ($list as $key => $value) { - $result [] = array('value' => $key, 'name' => $value, 'selected' => $key == $selected); - } - return $result; - } -} - -/** - * Выбор из одного элемента - */ -class TSelectOne extends TSelect -{ - function setValue($value) - { - // Установить selected у options - $this->value = $value; - foreach ($this->options as &$option) { - $option['selected'] = ($option['value'] == $value); - } - } -} - -class TSelectMany extends TSelect +class TSelectMany extends Form_Select { function setValue($value) { @@ -75,7 +24,7 @@ class TSelectMany extends TSelect } } -class TQuestionType extends TSelect +class TQuestionType extends Form_Select { function setValue($value) { @@ -124,18 +73,18 @@ class TUpload extends Form_Field { } -class THidden extends TInput { +class THidden extends Form_Input { public $hidden = true; } -class TComponentBrowserInput extends TInput +class TComponentBrowserInput extends Form_Input { } /** * При рендеринге каждому классу соответствует шаблон (см. themes/maxim/templates/macros.html) */ -class TDateTime extends TInput { +class TDateTime extends Form_Input { } class OptionFactory { @@ -146,7 +95,7 @@ class OptionFactory { $this->registry = $registry; } - function create(TSelect $field, $input) { + function create(Form_Select $field, $input) { if (isset($input['options.resid'])) { $type = $input['options.resid']; @@ -234,8 +183,8 @@ class Form_Form extends View_View { public function __construct() { $this->constructor = array( - 'input' => 'TInput', - 'inputreq' => 'TInput', // input с проверкой на заполненность + 'input' => 'Form_Input', + 'inputreq' => 'Form_Input', // input с проверкой на заполненность 'date' => 'TDate', 'datereq' => 'TDate', @@ -246,8 +195,8 @@ class Form_Form extends View_View { 'text' => 'TTextArea', 'multiselect' => 'TSelectMany', // 'selectmany' => 'TSelectMany', - 'select1' => 'TSelectOne', - 'select' => 'TSelectOne', + 'select1' => 'Form_SelectOne', + 'select' => 'Form_SelectOne', 'questiontype'=> 'TQuestionType', 'secret' => 'TSecret', 'upload' => 'TUpload', @@ -255,7 +204,7 @@ class Form_Form extends View_View { 'checkbox' => 'TCheckbox', 'checkmany' => 'TSelectMany', 'hidden' => 'THidden', - 'radio' => 'TSelectOne', + 'radio' => 'Form_SelectOne', 'filebrowser' => 'TComponentBrowserInput', 'documents' => 'TComponentBrowserInput', ); diff --git a/src/Form/Input.php b/src/Form/Input.php new file mode 100644 index 0000000..855bec2 --- /dev/null +++ b/src/Form/Input.php @@ -0,0 +1,7 @@ +create($this, $input); + } else if (isset($input['options.pair'])) { + $this->options = $this->optionsPair($input['options.pair']); + } else if (isset($input['options'])) { + $this->options = $input['options']; + } + + foreach ($this->options as &$option) { + $option['selected'] = false; + $option['class'] = (isset($option['class'])) ? $option['class'] : false; + } + } + + public function optionsPair($list, $selected = false) { + $result = array(); + foreach ($list as $key => $value) { + $result [] = array('value' => $key, 'name' => $value, 'selected' => $key == $selected); + } + return $result; + } +} diff --git a/src/Form/SelectOne.php b/src/Form/SelectOne.php new file mode 100644 index 0000000..32fdeab --- /dev/null +++ b/src/Form/SelectOne.php @@ -0,0 +1,16 @@ +value = $value; + foreach ($this->options as &$option) { + $option['selected'] = ($option['value'] == $value); + } + } +}