#plone #archetypes
#plone #архетипы
Вопрос:
Я пытаюсь выполнить одно из следующих действий в форме «Создать событие» в Plone 4 при создании событий, которые произошли в прошлом:
i. Установите даты начала / окончания по умолчанию в раскрывающихся списках «Дата начала» и «Дата окончания» на больший диапазон значений (я не могу создавать события до 2001 или после 2016).
или
ii. Разрешить пользователям вводить даты начала / окончания событий в виде текста (а не выбирать из выпадающего списка).
Кажется, я нигде не могу найти то, что управляет этой формой … после нескольких часов поиска в Google!
Ответ №1:
Поля start и end являются стандартными полями Archetypes DateTimeField, использующими виджеты CalendarWidget по умолчанию.
CalendarWidget повторно использует некоторые довольно старые и грубые календарные макросы из Plone, и они считывают диапазон выбираемых лет из свойств сайта. Вы можете изменить их в ZMI, найдите в нем portal_properties
инструмент, а затем site_properties
таблицу свойств. Два свойства, на которые следует обратить внимание, это:
calendar_starting_year
Начальный год для отображения в виджете календаря. По умолчанию используется значение 2001.
calendar_future_years_available
Количество будущих лет после текущего года, которое будет отображаться в виджете календаря. Значение по умолчанию пустое, и затем виджет возвращается к 5 годам.
Также смотрите документацию по свойствам сайта; вы также можете использовать профиль GenericSetup для их настройки.
Эти значения применимы ко всему использованию макросов календаря. Вы также можете установить это только для типа события, установив starting_year
, ending_year
и / или future_years
свойства CalendarWidget для полей StartDate и EndDate. Если вы установите ending_year
, future_years
свойство игнорируется.
Изменение стиля Monkey-patch схемы событий:
from Products.Archetypes.content import event
ATEventSchema['startDate'].widget.starting_year = 1999
ATEventSchema['startDate'].widget.ending_year = 2020
ATEventSchema['endDate'].widget.starting_year = 1999
ATEventSchema['endDate'].widget.ending_year = 2020
Комментарии:
1. Это было именно то, что было необходимо. Я отредактировал файл site_properties и получил требуемый результат. Большое спасибо!
Ответ №2:
Если starting_year и ending_year не определены на уровне определения calendarwidget (внутри определения реализации схемы ATEvent), то некоторые предположения о диапазоне лет сделаны внутри
Products/CMFPlone/skins/plone_scripts/date_components_support.py
Измените связанный код внутри date_components_support.py скрипт.