2015-09-28 41 views
3

我在Plone 4.3.6网站上有一些“经典”图块,其中包含使用plone.formwidget.contenttree小部件的richtext字段和两个RelationChoice字段。 我已经安装了plone.app.widgets 1.8.0(以及p.a.contenttypes),并且我无法获得新的TinyMCE和新的relateditems模式小部件以正常工作。如果我直接加载平铺视图URL(在@@edit-tile/....的URL处),这些小部件实际上显示并正常工作。但是在iframe/overlay中,他们没有。如何让图案小部件在iframe覆盖图中工作

prep-overlay看起来是这样的:

jQuery('.tile-editable').each(function() { 
     jQuery(this).find('a.tile-edit-link, a.tile-delete-link'). 
      prepOverlay({ 
      subtype: 'iframe', 
      config: { 
       onLoad: function (e) { 
       jQuery('body').addClass('noscroll'); 
       return true; 
       }, 
       onClose: function() { 
       jQuery('body').removeClass('noscroll'); 
       location.reload(); 
       } 
      } 
     }); 
    }); 

iframe的负载++resource++plone.app.widgets.js在头和字段给出pat-relateditemspat-tinymce类如预期。但relateditems模式内的init方法永远不会被调用。我想iframe DOM不会被模式解析,但我不知道在哪里寻找原因。 FWIW,有在控制台中的错误:

Uncaught Error: Mismatched anonymous define() module: function(){return eb} 
http://requirejs.org/docs/errors.html#mismatch 
在plone.app.widgets.js

:166,但我不知道这是一个从未来的,或者如果它很重要。

是否有任何技巧让模型小部件在ifram叠加层中工作?

回答

2

重新初始化所有的模式,你可以这样做:

var registry = require("pat-registry"); 
registry.scan(SELECTOR); // document or iframe or wherever you want to rescan all patterns. 

恕我直言,你能做到这一点的方法的onLoad。

+0

感谢您的支持!我仍然不确定这些模式是否被重新初始化。对于registry.scan中的SELECTOR,我使用了registry.scan($('.overlay-iframe')。contents()。find('body')[0]);我尝试了[0]和没有。 – fulv

+0

它看起来在iframe被创建之后,但在加载任何内容之前被调用。它只有一个空的头部和身体。 – fulv

+1

好吧,我已将您的建议代码移至iframe内容的头部,并且可以在我的选择器中使用“文档”。现在我终于可以获得相关的项目模式。 tinymce也几乎可以工作,它只是抛出一个奇怪的错误,但似乎加载,无论如何。 – fulv