我有一个Plone网站,页面上有两个富文本图块,在Using tiles to provide more flexible Plone layouts之后创建。
问题在于,在编辑图块时,TinyMCE将无法加载。
在网络标签上的Firebug中,我看到了大量的404,看起来像这样:
http://example.com/en/front-page/@@edit-tile//plugins/pagebreak/editor_plugin.js
相比之下,我知道正确的URL应如下所示:
http://example.com/portal_javascripts/MyTheme/plugins/xhtmlxtras/editor_plugin.js
当我在开发模式下设置我的portal_javascripts时,它可以工作,但是当我关闭开发模式时,那就是我看到这个问题的时候。
显然这是由于某种javascript冲突,但我不知道在哪里寻找它。
我真的需要解决这个问题,所以非常感谢任何帮助!
其他信息:
当portal_javascripts关闭了开发模式时,此行中的条件永远不会成立:https://github.com/plone/Products.TinyMCE/blob/1.2.x/Products/TinyMCE/skins/tinymce/tiny_mce_src.js#L47
那是因为tiny_mce.js文件与其他文件合并,名称是随机的,因此按名称查找将始终失败。因此,baseURL
对象的tinymce
属性不会在init
中设置。
相反,baseURL
最终会在此处设置:
https://github.com/plone/Products.TinyMCE/blob/1.2.x/Products/TinyMCE/skins/tinymce/tiny_mce_src.js#L8397
这是http://example.com/my-page/@@edit-tile/
使用网址baseURL
的地方。
我通过关闭portal_javascripts中的合并和缓存来验证这一点,但是关闭了开发模式。然后它可以工作,因为它按名称找到tiny_mce.js
。
另外,我发现当它失败时,所有TinyMCE的插件都被添加为iframe头部中的显式<script>
元素(带有@@edit-tile
URL,无法加载)。相比之下,当它工作时,所有插件都加载到这里:
https://github.com/plone/Products.TinyMCE/blob/1.2.x/Products/TinyMCE/skins/tinymce/tiny_mce_src.js#L8458
IOW,它们不会作为<script>
元素明确添加到iframe中。
(如果我不清楚,当我提到iframe时,我说的是瓷砖的编辑叠加层,而不是TinyMCE的。在iframe中有一个iframe ....)