首页 > 解决方案 > 如何使用 ckeditor 4 类型(链接、图像、flash)打开不同的对话框

问题描述

将 elFinder 集成到我的 CMS 时,我遇到了一些麻烦。我在他们的指南中将它与 CKEditor 4 一起用作与 JQuery UI 的集成方法。图像上传和图像管理器都很好,但我不知道如何为不同的文件类型和文件夹打开不同的对话框,比如我如何配置 elFinder 来打开一个新的对话框文件管理器来存储 flash 文件和文件夹(不同于images 文件夹),当我在编辑器中单击“Flash”按钮,然后单击“浏览服务器”时。与单击“链接”按钮和“浏览服务器”时相同,对话框应显示存储 doc 和 pdf 文件的不同文件夹。我也在我加载到我的页面中的 main.ckedialog.js 中尝试了这样的事情:

if ($('#content').length > 0) {
    var editor = CKEDITOR.replace('content', {
        language: 'en',
        filebrowserBrowseUrl: '#',
        //extraPlugins: 'uploadimage,image2',
        extraPlugins: 'uploadimage',
        filebrowserImageBrowseUrl: 'admin/includes/elFinder/php/connector.minimal.php',
        filebrowserImageBrowseLinkUrl: 'admin/includes/elFinder/php/connector.minimal.php',
        filebrowserImageUploadUrl: 'admin/includes/elFinder/php/connector.minimal.php',
        filebrowserFlashUploadUrl: 'admin/includes/elFinder/php/connector.doc.php',
        filebrowserFlashBrowseUrl: 'admin/includes/elFinder/php/connector.doc.php',

        ImageBrowseUrl: 'admin/includes/elFinder/php/connector.minimal.php',
        ImageBrowseLinkUrl: 'admin/includes/elFinder/php/connector.minimal.php',
        ImageUploadUrl: 'admin/includes/elFinder/php/connector.minimal.php',
        FlashUploadUrl: 'admin/includes/elFinder/php/connector.doc.php',
        FlashBrowseUrl: 'admin/includes/elFinder/php/connector.doc.php',
    });
    CKEDITOR.config.height = 500;
    CKEDITOR.config.defaultLanguage = 'en';
    editor.addCommand("mySimpleCommand", { // create named command
        exec: function (edt) {
            alert(edt.getData());
        }
    });
}

这是我想用来打开文件管理器的 elFinder 对话框的按钮

这是我使用的按钮

希望有人可以提供帮助。谢谢。

标签: javascriptphpckeditor4.xelfinder

解决方案


在谷歌上找不到任何东西后,我找到了一种方法来使用一些肮脏的技巧来解决我的问题。所以我认为这仍然是一些正确的官方方式。这是任何人需要的解决方案:

  1. 使用 main.ckedialog.js 中的第二个对话框(在我的情况下是 connector.doc.php)为 php 连接器定义第二个变量,如下所示

    var elfNode, elfNode1, elfNode2, elfInsrance, dialogName, elfUrl = 'admin/includes/elFinder/php/connector.minimal.php', // 你的连接器的 URL elfUrl1 = 'admin/includes/elFinder/php/connector.doc.php ',

  2. 检查 main.ckedialog.js 中“CKEDITOR.on('dialogDefinition', function (event) {” 处的按钮找到行“if (elfNode) {”并将其剪切成 if else (dialogName) 像这样

if (dialogName === 'image') { if (elfNode) { if (elfDirHashMap[dialogName] && elfDirHashMap[dialogName] != elfInsrance.cwd().hash { ... elfNode.dialog('open'); } } else if (dialogName == 'link') { if (elfNode1) { ... elfNode1.dialog('open'); } }

  1. 在 main.ckedialog.js 中找到“CKEDITOR.on('instanceReady', function(e) {”行,复制其函数中的所有代码并将其粘贴在您复制的内容之后,然后在您复制的块中重命名“elfNode”和粘贴到“elfNode1”,将“url:elfUrl”更改为“url:elfUrl1”,并将“onlyMimes”更改为您需要的配置

(对不起,我仍然不知道如何在stackoverflow编辑器中为我的代码使用pre标签,有时它工作,有时它不工作)

现在它起作用了。仍在寻找更好的方法来做到这一点。谢谢


推荐阅读