diff --git a/app/templates/element/filter.php b/app/templates/element/filter.php index e9b17fc84..a3f5098cb 100644 --- a/app/templates/element/filter.php +++ b/app/templates/element/filter.php @@ -161,17 +161,38 @@ } if($options['type'] == 'date') { - // date picker - $formParams = [ - 'label' => !empty($columns[$key]['label']) ? $columns[$key]['label'] : $options['label'], - 'type' => 'text', // date inputs must be text for accessibility reasons for now. - 'value' => (!empty($query[$key]) ? $query[$key] : ''), - 'required' => false, - 'pattern' => '\d{4}-\d{2}-\d{2}', - 'placeholder' => 'YYYY-MM-DD', - 'title' => __d('field','datepicker.enterDate'), - 'class' => 'form-control datepicker' + // Date fields use a date picker (e.g. DOB) + // (Note that timestamps are handled specially. See below.) + $opts = []; + $opts['type'] = 'text'; // date inputs must be text for accessibility reasons for now. + $opts['required'] = false; + $opts['pattern'] = '\d{4}-\d{2}-\d{2}'; + $opts['placeholder'] = 'YYYY-MM-DD'; + $opts['title'] = __d('field','datepicker.enterDate'); + $opts['class'] = 'form-control datepicker'; + $opts['id'] = str_replace("_", "-", $key); + + $date = \Cake\I18n\FrozenTime::parseDate(date("Y-m-d"),'yyyy-MM-dd'); + if(!empty($query[$key])) { + $date = \Cake\I18n\FrozenTime::parseDate($query[$key],'yyyy-MM-dd'); + $opts['value'] = $date->i18nFormat("yyyy-MM-dd"); + } + $pickerDate = $date->i18nFormat("yyyy-MM-dd"); + $pickerFloor = $date->subYears(100)->i18nFormat("yyyy-MM-dd"); + + $date_args = [ + 'fieldName' => $key, + 'pickerDate' => $pickerDate, + 'pickerType' => \App\Lib\Enum\DateTypeEnum::DateOnly, + 'pickerFloor' => $pickerFloor ]; + // Create a text field to hold our date value. + print '