Тип поля календаря Joomla 2.5 в пользовательских формах выбора даты и времени

У меня два поля в файле admin / componsents / com_xxxxx / models / forms / xxxxx.xml.

эти каналы вводятся в форму ввода для администраторов на задней панели Joomla 2.5

<field name="f_start" type="calendar" class="inputbox" required="true" format="%Y-%m-%d %H:%M:%S" default="0000-00-00 09:30:00" label="COM_xxxxx_F_START" description="COM_xxxxx_F_START_DESC" filter="safehtml" /> <field name="f_end" type="calendar" class="inputbox" required="true" format="%Y-%m-%d %H:%M:%S" default="0000-00-00 19:30:30" label="COM_xxxxx_F_END" description="COM_xxxxx_F_END_DESC" filter="safehtml" /> 

Это, по сути, даты начала и окончания публикации статьи. однако при выборе значка datepicker / calendar и выборе даты поле обновляется до выбранной даты, но сохраняет время начала по умолчанию 09:30:00. это, похоже, работает в течение времени между 01:30:00 и 11:30 в любое время после полудня, когда будет выбрана дата.

может ли кто-нибудь объяснить, почему? или как сохранить значения по умолчанию в селекторе даты?

если дата окончания может также по умолчанию не превышать 28 дней с даты начала?

заранее спасибо.

При нажатии на значок календаря виджет календаря пытается позиционировать себя в дату, содержащуюся в соответствующем текстовом поле. Поскольку 0000-00-00 является недопустимой датой, функция Date.parseDate в media/system/js/calendar-uncompressed.js пытается угадать дату со всех компонентов строки формата. 0000-00-00 09:30:00 признано 30 сентября, потому что 09 < 12 , поэтому он выглядит как месяц, и, таким образом, он возвращается Sep 30, 9:30 . С другой стороны, 0000-00-00 19:30:00 не признается как действительная дата, и функция возвращается today . Отсюда разница во временной части.

Если вы посмотрите, например, на файлы формы XML для com_content, вы увидите, что они не используют значения по умолчанию для полей календаря.

Тем не менее вы могли создать настраиваемый тип поля, полученный из JFormFieldCalendar, который даст вам полную гибкость. Например:

формы / whatever.xml

 <field name="f_start" type="PubDateCalendar" format="%Y-%m-%d %H:%M:%S" default="start" ... /> <field name="f_end" type="PubDateCalendar" format="%Y-%m-%d %H:%M:%S" default="end" ... /> 

Поля / pubdatecalendar.php

 <?php defined('_JEXEC') or die; jimport('joomla.form.helper'); JFormHelper::loadFieldClass('calendar'); class JFormFieldPubDateCalendar extends JFormFieldCalendar { public $type = 'PubDateCalendar'; protected function getInput() { $format = $this->element['format'] ? (string) $this->element['format'] : '%Y-%m-%d'; if ($this->element['default'] == 'start') { $this->value = strftime($format); } else if ($this->element['default'] == 'end') { $this->value = strftime($format, time() + 28 * 24 * 60 * 60); } return parent::getInput(); } } ?> 

или того, что лучше подходит вашему конкретному приложению.

Возможно, это будет полезно для кого-то вроде меня, который искал ответ на этот вопрос, но в текущей версии Joomla 3.3.6:

 <field name="birth_day" type="calendar" label="COM_PERSONS_PERSON_FIELD_BIRTHDAY_LABEL" description="COM_PERSONS_PERSON_FIELD_BIRTHDAY_DESC" class="inputbox" size="20" format="%Y-%m-%d" filter="user_utc" />