【问题标题】:Change the input method in plone event forms?更改克隆事件表单中的输入法?
【发布时间】:2011-04-13 15:41:40
【问题描述】:

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

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

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

我似乎无法在任何地方找到控制这个表单的东西......经过数小时的谷歌搜索!

【问题讨论】:

    标签: plone archetypes


    【解决方案1】:

    开始和结束字段是标准 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 属性将被忽略。

    事件模式的猴子补丁样式更改:

    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
    

    【讨论】:

    • 这正是我们所需要的。我编辑了 site_properties 文件并得到了所需的结果。非常感谢!
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-05-10
      • 2011-05-15
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2017-01-03
      • 2014-08-19
      相关资源
      最近更新 更多