plugin('translate'); $escape = $this->plugin('escapeHtml'); // Prepare the datetime queries. $datetimes = isset($query['datetime']) ? (is_array($query['datetime']) ? $query['datetime'] : [['value' => $query['datetime']]]) : []; $datetimes = array_filter($datetimes, function ($v) { return isset($v['value']) ? trim($v['value']) !== '' : (isset($v['type']) && in_array($v['type'], ['ex', 'nex'])); }); // Allows to display one empty field. if (empty($datetimes)) $datetimes = [[]]; $querySelectOption = function ($value, array $search, $key, $text) { $selected = null; if (isset($search[$key]) && $value === $search[$key]) { $selected = ' selected'; } return sprintf('', $value, $selected, $text); }; // TODO Use a widget or a validator (but allow partial date/time: year only, date only, etc.). $queryInputText = function (array $search, $engine) use ($translate, $escape) { $value = $search['value'] ?? null; return sprintf('', $escape("datetime[$engine][value]"), $escape($value), $escape($translate('Date / time'))); // @translate } ?>
setName($stem . '[field]') ->setValueOptions([ 'created' => 'Created', // @translate 'modified' => 'Modified', // @translate ]) ->setAttributes([ 'class' => 'query-datetime chosen-select', 'value' => $datetime['field'] ?? null, 'aria-label' => $translate('Creation or modification date / time'), ]); echo $this->formSelect($select); ?>