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 コードは、タブ インターフェイスの作成を担当しますが、ユース ケースではバイパスしたいと考えています。

ヒントはありますか?

4

4 に答える 4

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 マジックのおかげで、enable_form_tabbing属性を使用すると、フォームのタブ移動を制御できます。

同じことが EditForm にも当てはまります。

それが役立つことを願っています

于 2011-12-03T02:43:56.197 に答える
1

python:context.portal_type!='collective.nitf.content'である必要があります

于 2011-11-24T09:41:24.397 に答える
0

敏捷性タイプのmeta_typeではなく、portal_typeを試してください。すべての敏捷性アイテムは、「敏捷性FTI」のmeta_typeを持っています。これは、meta_typeでフィルタリングするOFSメソッドが機能せず、代わりにリスト内包表記を使用する必要があることも意味します。

于 2011-11-24T17:18:42.000 に答える
0

私は試しましたが、これを行うこともできます:

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

さすがミッコ!:-) http://readthedocs.org/docs/collective-docs/en/latest/components/interfaces.html?#plone-interface-info

于 2011-11-25T13:54:01.270 に答える