2011-11-24 50 views
3

我需要添加一個條件以避免加載某些javascript代碼時添加爲我的內容類型的對象;在敏捷內容類型上刪除字段集標籤界面

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

這段JavaScript代碼是負責創建選項卡界面,但我想繞過它爲我的用例:下列條件僅在編輯對象時起作用。

任何提示?

回答

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類的形式。

隨着您的內容類型與敏捷創建的,我建議你重寫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神奇的enable_form_tabbing屬性將允許您控制Tab鍵上你的形式。

這同樣適用於EditForm。

希望有幫助

+0

太神奇了!非常感謝你! – hvelarde

1

它應該是蟒蛇!context.portal_type = 'collective.nitf.content'

+0

我也測試過,編輯這個問題來反映這一點。 – hvelarde

+0

真的很奇怪,因爲這對我有效。可能是你在你的portal_type上有錯字?嘗試安裝Product.Clouseau,然後進入要禁用js並打開會話的上下文。然後你可以嘗試表達式直到它爲你工作。 – quyetnd

+1

此代碼僅在編輯內容類型時才起作用,但在添加內容時不起作用:由於尚未創建對象,因此未滿足條件。 – hvelarde

0

嘗試portal_type,不與敏捷類型meta_type。所有敏捷物品都具有'敏捷FTI'的meta_type。這也意味着對meta_type進行OFS方法過濾將不起作用,您必須使用列表解析。

+1

portal_type僅在對象已創建時纔有效。 – hvelarde

相關問題