Удаление интерфейса вкладки fieldset для типа контента Dexterity - PullRequest
3 голосов
/ 24 ноября 2011

Мне нужно добавить условие, чтобы избежать загрузки некоторого кода 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 ]

3 голосов
/ 03 декабря 2011

На самом деле, вы можете решить эту проблему другим способом.

Вместо того, чтобы избегать загрузки файла Javascript - что может иметь неприятные последствия, когда дело доходит до кэширования и т. Д. - вы можете избежатьот действия в вашей форме.

* form_tabbing.js * будет искать элемент формы с enableFormTabbing class:

<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.

Надеюсь, что поможет

1 голос
/ 24 ноября 2011

Это должен быть python: context.portal_type! = 'Colle.nitf.content'

0 голосов
/ 25 ноября 2011

Я пытался, и вы также можете сделать это:

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

0 голосов
/ 24 ноября 2011

Попробуйте portal_type, а не meta_type с типами Dexterity. Все предметы Ловкости имеют мета-тип «Ловкость FTI». Это также означает, что фильтрация методов OFS по meta_type не будет работать, и вместо этого вам придется использовать списочные выражения.

...