【问题标题】:How to open different dialog with ckeditor 4 type (link, image, flash)如何使用 ckeditor 4 类型(链接、图像、flash)打开不同的对话框
【发布时间】:2019-10-29 09:41:06
【问题描述】:

在将 elFinder 集成到我的 CMS 时,我遇到了一些麻烦。我在他们的guide 中将它与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 对话框的按钮

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

【问题讨论】:

    标签: javascript php ckeditor4.x elfinder


    【解决方案1】:

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

    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 (elfDirHashMap[dialogName] && elfDirHashMap[dialogName] != elfInsrance.cwd().hash { ... elfNode.dialog('打开'); } } else if (dialogName == 'link') { 如果(elfNode1){ ... elfNode1.dialog('open'); } }

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

    (抱歉,我仍然不知道如何在 stackoverflow 编辑器中为我的代码使用 pre 标签,有时可以,有时不行)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多