From 5dd5c2eb5e90cec2142f2fdd48c999fecc6f0480 Mon Sep 17 00:00:00 2001 From: Awilum Date: Tue, 5 Nov 2019 12:01:50 +0300 Subject: [PATCH] refactor(core): refactor Forms API --- flextype/core/Forms.php | 112 ++++++++++++++++++++++++++-------------- 1 file changed, 73 insertions(+), 39 deletions(-) diff --git a/flextype/core/Forms.php b/flextype/core/Forms.php index dd11d6ed..973d3eaa 100644 --- a/flextype/core/Forms.php +++ b/flextype/core/Forms.php @@ -141,7 +141,7 @@ class Forms switch ($property['type']) { // Simple text-input, for multi-line fields. case 'textarea': - $form_element = $this->textareaField($element_name, $form_value, $property); + $form_element = $this->textareaField($element, $element_name, $form_value, $property); break; // The hidden field is like the text field, except it's hidden from the content editor. case 'hidden': @@ -149,48 +149,37 @@ class Forms break; // A WYSIWYG HTML field. case 'html': - $form_element = $this->htmlField($element_name, $form_value, $property); + $form_element = $this->htmlField($element, $element_name, $form_value, $property); break; // Selectbox field case 'select': - $form_element = $this->selectField($element_name, $property['options'], $form_value, $property); + $form_element = $this->selectField($element, $element_name, $property['options'], $form_value, $property); break; // Template select field for selecting entry template case 'template_select': - $form_element = $this->templateSelectField($element_name, $form_value, $property); + $form_element = $this->templateSelectField($element, $element_name, $form_value, $property); break; // Visibility select field for selecting entry visibility state case 'visibility_select': - $form_element = $this->visibilitySelectField($element_name, ['draft' => __('admin_entries_draft'), 'visible' => __('admin_entries_visible'), 'hidden' => __('admin_entries_hidden')], (! empty($form_value) ? $form_value : 'visible'), $property); + $form_element = $this->visibilitySelectField($element, $element_name, ['draft' => __('admin_entries_draft'), 'visible' => __('admin_entries_visible'), 'hidden' => __('admin_entries_hidden')], (! empty($form_value) ? $form_value : 'visible'), $property); break; case 'tags': - $form_element = $this->tagsField($element_name, $form_value); + $form_element = $this->tagsField($element, $element_name, $form_value, $property); break; case 'datetimepicker': - $form_element = $this->dateField($element_name, $form_value); + $form_element = $this->dateField($element, $element_name, $form_value, $property); break; case 'media_select': - $form_element = $this->mediaSelectField($element_name, $this->flextype->EntriesController->getMediaList($request->getQueryParams()['id'], false), $form_value, $property); + $form_element = $this->mediaSelectField($element, $element_name, $this->flextype->EntriesController->getMediaList($request->getQueryParams()['id'], false), $form_value, $property); break; // Simple text-input, for single-line fields. default: - $form_element = $this->textField($element_name, $form_value, $property); + $form_element = $this->textField($element, $element_name, $form_value, $property); break; } - if ($property['title']) { - $form_label = Form::label($element, __($property['title'])); - } else { - $form_label = ''; - } + $form .= $form_element; - if ($property['type'] == 'hidden') { - $form .= $form_element; - } else { - $form .= '
'; - $form .= $form_label . $form_element; - $form .= '
'; - } } $form .= ''; $form .= ''; @@ -243,9 +232,14 @@ class Forms * * @access protected */ - protected function mediaSelectField(string $name, array $options, string $value, array $property) : string + protected function mediaSelectField(string $element, string $name, array $options, string $value, array $property) : string { - return Form::select($name, $options, $value, $property['attributes']); + $field = '
'; + $field .= ($property['title'] ? Form::label($element, __($property['title'])) : ''); + $field .= Form::select($name, $options, $value, $property['attributes']); + $field .= '
'; + + return $field; } /** @@ -259,7 +253,7 @@ class Forms * * @access protected */ - protected function templateSelectField(string $name, string $value, array $property) : string + protected function templateSelectField(string $element, string $name, string $value, array $property) : string { $_templates_list = $this->flextype['themes']->getTemplates($this->flextype['registry']->get('settings.theme')); @@ -273,7 +267,12 @@ class Forms } } - return Form::select($name, $options, $value, $property['attributes']); + $field = '
'; + $field .= ($property['title'] ? Form::label($element, __($property['title'])) : ''); + $field .= Form::select($name, $options, $value, $property['attributes']); + $field .= '
'; + + return $field; } /** @@ -288,9 +287,14 @@ class Forms * * @access protected */ - protected function selectField(string $name, array $options, string $value, array $property) : string + protected function selectField(string $element, string $name, array $options, string $value, array $property) : string { - return Form::select($name, $options, $value, $property['attributes']); + $field = '
'; + $field .= ($property['title'] ? Form::label($element, __($property['title'])) : ''); + $field .= Form::select($name, $options, $value, $property['attributes']); + $field .= '
'; + + return $field; } /** @@ -304,11 +308,16 @@ class Forms * * @access protected */ - protected function htmlField(string $name, string $value, array $property) : string + protected function htmlField(string $element, string $name, string $value, array $property) : string { $property['attributes']['class'] .= ' js-html-editor'; - return Form::textarea($name, $value, $property['attributes']); + $field = '
'; + $field .= ($property['title'] ? Form::label($element, __($property['title'])) : ''); + $field .= Form::textarea($name, $value, $property['attributes']); + $field .= '
'; + + return $field; } /** @@ -338,9 +347,14 @@ class Forms * * @access protected */ - protected function textareaField(string $name, string $value, array $property) : string + protected function textareaField(string $element, string $name, string $value, array $property) : string { - return Form::textarea($name, $value, $property['attributes']); + $field = '
'; + $field .= ($property['title'] ? Form::label($element, __($property['title'])) : ''); + $field .= Form::textarea($name, $value, $property['attributes']); + $field .= '
'; + + return $field; } /** @@ -355,9 +369,14 @@ class Forms * * @access protected */ - protected function visibilitySelectField(string $name, array $options, string $value, array $property) : string + protected function visibilitySelectField(string $element, string $name, array $options, string $value, array $property) : string { - return Form::select($name, $options, $value, $property['attributes']); + $field = '
'; + $field .= ($property['title'] ? Form::label($element, __($property['title'])) : ''); + $field .= Form::select($name, $options, $value, $property['attributes']); + $field .= '
'; + + return $field; } /** @@ -371,9 +390,14 @@ class Forms * * @access protected */ - protected function textField(string $name, string $value, array $property) : string + protected function textField(string $element, string $name, string $value, array $property) : string { - return Form::input($name, $value, $property['attributes']); + $field = '
'; + $field .= ($property['title'] ? Form::label($element, __($property['title'])) : ''); + $field .= Form::input($name, $value, $property['attributes']); + $field .= '
'; + + return $field; } /** @@ -386,9 +410,14 @@ class Forms * * @access protected */ - protected function tagsField(string $name, string $value) : string + protected function tagsField(string $element, string $name, string $value, array $property) : string { - return ''; + $field = '
'; + $field .= ($property['title'] ? Form::label($element, __($property['title'])) : ''); + $field .= ''; + $field .= '
'; + + return $field; } /** @@ -402,9 +431,11 @@ class Forms * * @access protected */ - protected function dateField(string $name, string $value) : string + protected function dateField(string $element, string $name, string $value, array $property) : string { - return ' + $field = '
'; + $field .= ($property['title'] ? Form::label($element, __($property['title'])) : ''); + $field .= '
@@ -412,6 +443,9 @@ class Forms
'; + $field .= '
'; + + return $field; } /**