如何让模式小部件在iframe叠加层中工作

时间:2015-09-28 11:18:11

标签: plone plone-4.x

我有一些"经典" Plone 4.3.6网站上的图块,其中包含richtext字段和使用RelationChoice窗口小部件的两个plone.formwidget.contenttree字段。 我已经安装了plone.app.widgets 1.8.0(以及p.a.contenttypes),我无法使新的TinyMCE和新的relateditems模式小部件正常工作。如果我直接加载切片视图网址(在@@edit-tile/....网址),小部件实际上会显示并正常工作。但是在iframe / overlay中,他们不会。

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个类。但是init模式中的relateditems方法永远不会被调用。我想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叠加层中工作?

1 个答案:

答案 0 :(得分:2)

要重新初始化您可以执行的所有模式:

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

恕我直言,你可以在onLoad方法上做到这一点。