2015-09-28 96 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