我试图使ajaxfilemanager v1.1与Tinymce 4.x一起使用。它在Tinymce 3.x上可以正常工作,但是有一些API更改使它无法正常工作。花了一些时间后,我又恢复了工作-请参阅我的答案...

最佳答案

...,因此,如果您有兴趣,也可以使其工作。您只需要创建一个tinymce4初始化脚本(强制性)并复制tinymce配置和CSS(可选)。

第一步-在jscripts /中制作新的JavaScript

转到ajaxfilemanager / jscripts文件夹,将for_tinymce.js复制到for_tinymce4.js,然后对其进行修补(或修改)。

这是完整的补丁程序,因此您可以使用它

--- for_tinymce.js  2010-02-05 15:14:48.000000000 +0100
+++ for_tinymce4.js 2013-10-08 11:44:44.000000000 +0200
@@ -1,5 +1,5 @@
 // Some global instances
-var tinymce = null, tinyMCEPopup, tinyMCE;
+var tinymce = null, tinyMCEPopup;

 tinyMCEPopup = {
    init : function() {
@@ -7,12 +7,11 @@

        // Find API
        tinymce = w.tinymce;
-       tinyMCE = w.tinyMCE;
        t.editor = tinymce.EditorManager.activeEditor;
-       t.params = t.editor.windowManager.params;
+       t.params = t.editor.windowManager.getParams();

-       // Setup local DOM
-       t.dom = t.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document);
+       // Setup local DOM (because of IE)
+       t.dom = new tinymce.dom.DOMUtils(document);
        t.dom.loadCSS(t.editor.settings.popup_css);

        // Setup on init listeners
@@ -25,7 +24,6 @@

        t.isWindow = !t.getWindowArg('mce_inline');
        t.id = t.getWindowArg('mce_window_id');
-       t.editor.windowManager.onOpen.dispatch(t.editor.windowManager, window);
    },

    getWin : function() {


如果补丁对您不起作用,则可以按照我执行的步骤手动进行更改:


在您喜欢的编辑器(vim,nano,joe,gedit等)中打开for_tinymce4.js
第2行删除了tinyMCE声明(没有用),但是保留了tinymce和tinyMCEPopup

var tinymce = null, tinyMCEPopup;

删除第10行,其中为tinyMCE分配了w.tinyMCE;


  tinyMCE = w.tinyMCE;

将第11行的t.params分配替换为

t.params = t.editor.windowManager.getParams();

将第14行的t.dom分配替换为

t.dom = new tinymce.dom.DOMUtils(document);

删除第27行,其中调度了onOpen事件,因为Tinymce4中没有此类事件处理程序


  t.editor.windowManager.onOpen.dispatch(t.editor.windowManager,窗口);



之后,您可以通过将file_browser_callback中ajaxfilemanager URL中查询字符串的编辑器参数从tinymce更改为tinymce4,从Tinymce 4.x中初始化ajaxfilemanager。

我有这个

<script type="text/javascript>
tinymce.init({
    selector: "textarea.editor",
    plugins: [
        "advlist autolink lists link image charmap print preview anchor",
        "searchreplace visualblocks code fullscreen",
        "insertdatetime media table contextmenu paste"
    ],
    toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
    file_browser_callback : ajaxfilemanager
});
function ajaxfilemanager(field_name, url, type, win) {
    var ajaxfilemanagerurl = "/lib/ajaxfilemanager/ajaxfilemanager.php?editor=tinymce4&config=tinymce4&language=cs";
    switch (type) {
        case "image":
            ajaxfilemanagerurl += "&type=img";
            break;
        case "media":
            ajaxfilemanagerurl += "&type=media";
            break;
        case "file":
            ajaxfilemanagerurl += "&type=files";
            break;
        default:
            return false;
    }
    tinymce.activeEditor.windowManager.open(
        {url : ajaxfilemanagerurl,
         title : 'Ajax File Manager',
         width : 782,
         height : 440 },
        {window : win,
         input : field_name}
    );
    return false;
}
</script>


第二步-复制配置和CSS

如果要为tinymce4使用不同的配置和CSS,则必须将inc / config.tinymce.php复制到inc / config.tinymce4.config,然后将theme / default / css / tinymce.css复制到theme / default / css / tinymce4.css(或其他主题文件夹,如果使用的话),并对其进行修改以满足您的需求。

然后,您可以通过将file_browser_callback的ajaxfilemanager URL中的查询字符串的config参数设置为tinymce4来引用这些文件。往上看。

如果不需要其他配置和CSS,请将config参数设置为tinymce。

那是所有人。

关于javascript - Tinymce 4.x的Ajaxfilemanager,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19244558/

10-12 12:35