Index: core/admin_templates/incs/form_blocks.tpl =================================================================== --- core/admin_templates/incs/form_blocks.tpl +++ core/admin_templates/incs/form_blocks.tpl @@ -440,7 +440,7 @@ title="Date selector" /> <span class="small">(<inp2:{$prefix}_Format field="{$field}_date" input_format="1" human="true"/>)</span> - <input type="hidden" id="full_date_<inp2:{$prefix}_InputName field='{$field}'/>" value="<inp2:{$prefix}_Field field='{$field}' format=''/>" /> + <input type="hidden" id="full_date_<inp2:{$prefix}_InputName field='{$field}'/>" value="<inp2:{$prefix}_Field field='{$field}' format='picker'/>" /> <script type="text/javascript"> Calendar.setup({ inputField : "full_date_<inp2:{$prefix}_InputName field='{$field}'/>", Index: core/kernel/utility/formatters/date_formatter.php =================================================================== --- core/kernel/utility/formatters/date_formatter.php +++ core/kernel/utility/formatters/date_formatter.php @@ -232,46 +232,58 @@ /** * Formats value of a given field * - * @param string $value - * @param string $field_name - * @param kDBItem|kDBList $object - * @param string $format + * @param string $value Value. + * @param string $field_name Field name. + * @param kDBBase $object Object. + * @param string $format Format. + * * @return string */ - function Format($value, $field_name, &$object, $format=null) + public function Format($value, $field_name, &$object, $format = null) { - if ( is_null($value) ) return ''; + $options = $object->GetFieldOptions($field_name); + + if ( is_null($value) ) { + if ( $format != 'picker' || !isset($options['picker_default']) ) { + return ''; + } + + $value = strtotime($options['picker_default']); + $format = null; + } + if ( !is_numeric($value) ) { return $value; // for leaving badly formatted date on the form } + settype($value, 'int'); + if ( !is_int($value) ) { return $value; } - $options = $object->GetFieldOptions($field_name); if ( isset($format) ) { $options['format'] = $format; } - if (preg_match('/_regional_(.*)/', $options['format'], $regs)) { + if ( preg_match('/_regional_(.*)/', $options['format'], $regs) ) { // when such type of format is given directly to kDBBase::GetField $options['format'] = $this->language->GetDBField($regs[1]); } - if ($options['format'] == '_input_') { + if ( $options['format'] == '_input_' ) { // use input format instead of output format $options['format'] = $options['input_format']; } - if (!$options['use_timezone']) { + if ( !$options['use_timezone'] ) { return gmdate($options['format'], $value); } $format = defined($options['format']) ? constant($options['format']) : $options['format']; $dt_separator = getArrayValue($options, 'date_time_separator'); - if ($dt_separator) { + if ( $dt_separator ) { $format = trim($format, $dt_separator); } @@ -506,4 +518,4 @@ { return $this->Format( time(), $field, $object, $options['input_format']); } -} \ No newline at end of file +}