2015-03-29 2 views
1

У меня есть плитка с полем RelationChoice, но в поле только есть элементы статической html-формы (переключатель «ничего», текстовый ввод и «поиск» '), и он не реагирует динамически. Сравнивая его с идентичным фрагментом на другом сайте, который работает, я заметил, что специфичный для поля js-код из plone.formwidget.contenttree и plone.formwidget.autocomplete не встроен в источник фрагмента. Я установил точки останова в https://github.com/plone/plone.formwidget.autocomplete/blob/master/plone/formwidget/autocomplete/widget.py#L142 и в https://github.com/plone/plone.formwidget.contenttree/blob/master/plone/formwidget/contenttree/widget.py#L253, и они попадают, когда загружается плитка, и возвращается правильный js. Но я не знаю, почему он не отправляется клиенту.Автозаполнение и просмотр поля RelationChoice не работают в плитке

Любые идеи?

Все остальное на плитке работает отлично, и стандартные JQuery ресурсы загружаются:

++resource++plone.formwidget.autocomplete/jquery.autocomplete.min.js 
++resource++plone.formwidget.autocomplete/formwidget-autocomplete.js 
++resource++plone.formwidget.contenttree/contenttree.js 

Вот ZCML для моей плитки:

<plone:tile 
     name="peps.tiles.calltoaction" 
     title="PEPS call to action tile" 
     description="A tile containing a full-size link, enclosing plain text" 
     add_permission="cmf.ModifyPortalContent" 
     schema=".tile.ICallToActionData" 
     class=".tile.CallToActionTile" 
     template="templates/calltoaction.pt" 
     permission="zope2.View" 
     for="*" 
     /> 

А вот схема плитки и класс :

class ICallToActionData(IRichTextTileData): 

    target = RelationChoice(
      title=_(u"Link target"), 
      description=_(u'Choose the item to which this button will link'), 
      source=UUIDSourceBinder(), 
      required=False, 
     ) 

    link_text = Text(
      title=_(u"Link button text"), 
      description=_(u"The text for the link button at the bottom"), 
     ) 



class CallToActionTile(RichTextTile): 

    def target_url(self): 
     url = None 
     if self.data['target']: 
      obj = uuidUtils.uuidToObject(self.data['target']) 
      if obj is not None: 
       if obj.portal_type == "Link": 
        site_url = getToolByName(obj, 'portal_url')() 
        if not obj.getRemoteUrl().startswith(site_url): 
         url = obj.getRemoteUrl() 
       else: 
        url = obj.absolute_url() 
     return url 

    def link_text(self): 
     return self.text_value('link_text') 

  • Plone 4.2.5
  • plone.app.tiles 1.0.1
  • plone.formwidget.contenttree 1.0.6
  • plone.formwidget.autocomplete 1.2.4

ответ

0

Причиной проблема были эти правила диазо:

<drop css:content="body script" /> 
    <after css:theme-children="html body" css:content="html body script" method="raw" /> 

Если тема диазо активна, это всегда хорошая идея, чтобы отключить его при отладке проблем.

Смежные вопросы