更改plone事件表单中的输入法?

时间:2011-04-13 15:41:41

标签: plone archetypes

我正在尝试在创建过去发生的事件时,在Plone 4的“创建事件”表单中执行以下操作之一:

我。将“开始日期”和“结束日期”下拉列表中的默认开始/结束日期设置为更大的值范围(我无法在2001年之前或2016年之后创建事件)。

OR

II。允许用户以文本形式输入事件的开始/结束日期(而不是从下拉列表中选择)。

我无法在任何地方找到控制此表格的内容......经过数小时的谷歌搜索!

2 个答案:

答案 0 :(得分:3)

开始和结束字段是标准的Archetypes DateTimeField字段,使用默认的CalendarWidget小部件。

CalendarWidget重用Plone中一些相当古老而又古老的日历宏,这些宏从网站属性中读取可选年份的范围。您可以在ZMI中更改这些内容,找到portal_properties工具,然后找到其中的site_properties属性表。要查找的两个属性是:

<强> calendar_starting_year

  

在日历小部件中显示的起始年份。默认值是2001。

<强> calendar_future_years_available

  

在今年之后的日历小部件中显示的未来年份数。默认为空,然后小部件可以回溯到5年。

另见site properties documentation;您也可以使用GenericSetup profile来设置这些内容。

这些值适用于日历宏的所有用法。您还可以仅为事件类型设置此项,方法是在CalendarWidget上为startDate和endDate字段设置starting_yearending_year和/或future_years属性。如果您设置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 :(得分:0)

如果在calendarwidget的定义级别(在ATEvent模式实现的定义内)没有定义starting_year和ending_year,则在内部进行一些关于年份范围的假设

产品/ CMFPlone /皮/ plone_scripts / date_components_support.py

修改date_components_support.py脚本中的相关代码。