删除Dexterity内容类型上的fieldset选项卡界面

时间:2011-11-24 05:36:36

标签: javascript plone dexterity genericsetup

添加我的内容类型的对象时,我需要添加一个条件以避免加载某些javascript代码;以下条件仅在编辑对象时有效:

<?xml version="1.0"?>
<object name="portal_javascripts">
 <javascript id="form_tabbing.js"
   expression="python:object.portal_type != 'collective.nitf.content'" />
</object>

此javascript代码负责创建选项卡界面,但我想绕过它用于我的用例。

任何提示?

4 个答案:

答案 0 :(得分:3)

实际上,你可以用不同的方式解决这个问题。

而不是避免加载Javascript文件 - 这在缓存等方面会产生令人讨厌的后果...... - 你可以避免它对你的表单采取行动。

* form_tabbing.js *将查找带有 enableFormTabbing 类的表单元素:

<form class="enableFormTabbing">
  <fieldset id="fieldset-[unique-id]">
    <legend id="fieldsetlegend-[same-id-as-above]">Title</legend>
  </fieldset>
</form>

所以,你需要做的就是避免获得这个 enableFormTabbing 类的形式。

由于您的内容类型是使用Dexterity创建的,我建议您按如下方式覆盖AddForm:

class AddForm(dexterity.AddForm):
    """Default view looks like a News Item.
    """
    grok.name('collective.nitf.content')
    grok.layer(INITFBrowserLayer)

    enable_form_tabbing = False

感谢plone.app.z3cform magic, enable_form_tabbing 属性将允许您控制表单上的标签。

这同样适用于EditForm。

希望有所帮助

答案 1 :(得分:1)

它应该是 python:context.portal_type!='collective.nitf.content'

答案 2 :(得分:0)

尝试使用敏捷类型的portal_type,而不是meta_type。所有敏捷项都具有'敏捷FTI'的meta_type。这也意味着对meta_type进行过滤的OFS方法将无效,您必须使用列表推导。

答案 3 :(得分:0)

我试过了,你也可以这样做:

python:context.restrictedTraverse('@@plone_interface_info').provides('your.dotted.interface.IName')

Kudos Mikko! :-) http://readthedocs.org/docs/collective-docs/en/latest/components/interfaces.html?#plone-interface-info