如何让模式小部件在 iframe 叠加层中工作
How to get patterns widgets to work in an iframe overlay
我在 Plone 4.3.6 站点上有一些 "classic" 磁贴,其中包含一个 richtext
字段和两个使用 plone.formwidget.contenttree
小部件的 RelationChoice
字段。
我已经安装了 plone.app.widgets 1.8.0
(连同 p.a.contenttypes),但我无法让新的 TinyMCE 和新的 relateditems
模式小部件正常工作。如果我直接加载平铺视图 URL(在 @@edit-tile/....
URL),小部件实际上会显示并正常工作。但在 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 在 header 中加载 ++resource++plone.app.widgets.js
,并且按预期为字段提供 pat-relateditems
和 pat-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 叠加层中工作?
要重新初始化所有模式,您可以执行以下操作:
var registry = require("pat-registry");
registry.scan(SELECTOR); // document or iframe or wherever you want to rescan all patterns.
恕我直言,您可以在 onLoad 方法上执行此操作。
我在 Plone 4.3.6 站点上有一些 "classic" 磁贴,其中包含一个 richtext
字段和两个使用 plone.formwidget.contenttree
小部件的 RelationChoice
字段。
我已经安装了 plone.app.widgets 1.8.0
(连同 p.a.contenttypes),但我无法让新的 TinyMCE 和新的 relateditems
模式小部件正常工作。如果我直接加载平铺视图 URL(在 @@edit-tile/....
URL),小部件实际上会显示并正常工作。但在 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 在 header 中加载 ++resource++plone.app.widgets.js
,并且按预期为字段提供 pat-relateditems
和 pat-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 叠加层中工作?
要重新初始化所有模式,您可以执行以下操作:
var registry = require("pat-registry");
registry.scan(SELECTOR); // document or iframe or wherever you want to rescan all patterns.
恕我直言,您可以在 onLoad 方法上执行此操作。