不推荐使用tinymce.WPWindowManager。如何在TinyMCE 4和WordPress 3.9中使用默认的editor.windowManager?

时间:2014-05-08 02:38:51

标签: wordpress wordpress-plugin tinymce tinymce-4 wordpress-3.9

我有一个TinyMCE插件,可以使用以下代码打开popin:

editor.windowManager.open({
    id : 'popin-div-id',
    width : 500,
    height : "auto",
    wpDialog : true,
    title : 'Edit Options'
});

自从我更新到WordPress 3.9(嵌入TinyMCE 4)后,我在控制台中收到以下错误:

tinymce.WPWindowManager is deprecated. Use the default editor.windowManager to open dialogs with inline HTML. 

如果我删除" wpDialog : true"部分来自上面的代码,我的popin不再出现(没有错误)。

在TinyMCE 4中使用默认的windowManager需要更改什么?我检查了他们的网站,我找不到关于从div打开popin的文档,但只能从外部HTML页面看到:

1 个答案:

答案 0 :(得分:5)

我遇到了同样的问题。对于WordPress文档,TinyMCE文档没有帮助。我不得不深入研究TinyMCE代码,以弄清楚如何让我的简单自定义弹出窗口再次运行。

<强>答案

使用html键在传递给windowManager.open的对象中定义html。下面,我使用jQuery通过挂钩到WordPress after_wp_tiny_mce操作来选择我在页面上放置的一些html。

tinymce.activeEditor.windowManager.open({
    title: ed.getLang('mm_tiny_mce.element_attributes'),
    width : 300,
    height : 300,
    html :
        '<div id="mm-attrs-pop" class="mm-tinymce-popup" tabindex="-1">' +
            jQuery('#mm-attrs-pop-tpl').html() +
        '</div>',
    buttons: [
        {
            text: 'Cancel',
            onclick: 'close'
        },
        {
            text: 'Set Attributes',
            onclick: function(){
                //some code here that modifies the selected node in TinyMCE
                tinymce.activeEditor.windowManager.close();
            }
        }
    ]
});

相关的TinyMCE代码位于classes/ui/Window.js,特别是renderHTML属性。 https://github.com/tinymce/tinymce/blob/master/js/tinymce/classes/ui/Window.js

希望有所帮助。干杯,克里斯