From fd96287e1aae34718e68e71fa82b9255c9e57c7a Mon Sep 17 00:00:00 2001 From: Ioannis Igoumenos Date: Sat, 7 May 2022 19:11:42 +0300 Subject: [PATCH] Move datepicker field in its own element --- app/src/View/Helper/FieldHelper.php | 75 ++++------------------------ app/templates/element/datePicker.php | 66 ++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 65 deletions(-) create mode 100644 app/templates/element/datePicker.php diff --git a/app/src/View/Helper/FieldHelper.php b/app/src/View/Helper/FieldHelper.php index bbf752b45..e9cbd093a 100644 --- a/app/src/View/Helper/FieldHelper.php +++ b/app/src/View/Helper/FieldHelper.php @@ -89,7 +89,7 @@ public function control(string $fieldName, if($fieldName == 'valid_from' || $fieldName == 'valid_through') { // Append the timezone to the label $label = __d('field', $fieldName.".tz", [$this->_View->get('vv_tz')]); - + // A datetime field will be rendered as plain text input with adjacent date and time pickers // that will interact with the field value. Allowing direct access to the input field is for // accessibility purposes. @@ -97,77 +97,22 @@ public function control(string $fieldName, $coptions['placeholder'] = 'YYYY-MM-DD HH:MM:SS'; // TODO: test for date-only inputs and send only the date $coptions['id'] = $fieldName; - $entity = $this->_View->get('vv_obj'); + $entity = $this->getView()->get('vv_obj'); $pickerDate = ''; if(!empty($entity->$fieldName)) { // Adjust the time back to the user's timezone - $coptions['value'] = $entity->$fieldName->i18nFormat("yyyy-MM-dd HH:mm:ss", $this->_View->get('vv_tz')); - $pickerDate = $entity->$fieldName->i18nFormat("yyyy-MM-dd", $this->_View->get('vv_tz')); + $coptions['value'] = $entity->$fieldName->i18nFormat("yyyy-MM-dd HH:mm:ss", $this->getView()->get('vv_tz')); + $pickerDate = $entity->$fieldName->i18nFormat("yyyy-MM-dd", $this->getView()->get('vv_tz')); } + $date_args = [ + 'fieldName' => $fieldName, + 'pickerDate' => $pickerDate + ]; // Create a text field to hold our value. - $controlCode = $this->Form->text($fieldName, $coptions); - - // Create a date/time picker. The yyyy-MM-dd format is set above in $pickerDate. - $pickerId = 'datepicker-' . $fieldName; - $pickerTarget = $fieldName; - $pickerTimed = true; // TODO: set false if date-only - $pickerAmPm = false; // TODO: allow change between AM/PM and 24-hour mode - - $controlCode .= ' - -
- - -
'; + $controlCode = $this->Form->text($fieldName, $coptions) + . $this->getView()->element('datePicker', $date_args); $liClass = "fields-datepicker"; } else { diff --git a/app/templates/element/datePicker.php b/app/templates/element/datePicker.php new file mode 100644 index 000000000..9f9a27210 --- /dev/null +++ b/app/templates/element/datePicker.php @@ -0,0 +1,66 @@ + + + +
+ + +