实例化CKEditor4实例时如何将自定义值传递给CKFinder3?

时间:2019-04-05 19:17:38

标签: ckeditor ckeditor4.x ckfinder

使用CKEditor4时,使用pass将变量传递到CKFinder3(ASP)连接器时遇到麻烦。

我用以下方法创建编辑器实例:

CKFinder.setupCKEditor( myEditor, {
    pass:         'testVar',
    testVar:    'nooice',
    ...
});

但是该变量似乎并没有将其应用于CKFinder。

如果我直接将此代码添加到CKFinder配置中,它确实可以工作:

config.pass = 'testVar';
config.testVar = 'nooice';

那很好,但是我要传递的值将是动态的,因此当我在页面上调用.setupCKEditor()时需要传递它们。我也尝试过使用connectorInfo: 'testVar=nooice',但这也不起作用。

有人遇到吗?我在这个问题上How to pass query string parameters in ckeditor for the picture (ckfinder) button?找到了一个很好的答案和示例,但是所描述的解决方案基本上是我正在做的事情,对我没有影响。

已经能够使用以下命令在CKEditor5测试中使它工作:

ClassicEditor.create( document.querySelector( '#bodyContent' ), {
    ckfinder: {
        uploadUrl: '/ckfinder3/connector?command=QuickUpload&type=Images&responseType=json',
        options: {
            pass: 'testVar',
            testVar: 'nooice'
        }
    },
    ...
} );

但是我无法在CKEditor4中弄清楚。

1 个答案:

答案 0 :(得分:1)

您这样传递它们:

    var editor = CKEDITOR.replace( 'editor1', {
        language : 'en',        
    } );

    CKFinder.setupCKEditor( editor, {           
        test : 'testvalA',
        token : '7901a26e4bc422aef54eb45A',
        pass : 'token,test' 
    });

在上面的示例中,您正在传递testtoken参数。

enter image description here


如果使用手动集成方法,则需要将参数附加到filebrowserXYZBrowseUrl配置设置中,如下所示:

    var editor = CKEDITOR.replace( 'editor1', {     

        filebrowserBrowseUrl: '../ckfinder/ckfinder.html?id=abc&foo=bar&test=custom',
        filebrowserImageBrowseUrl: '/ckfinder/ckfinder.html?type=Images&id=abc&foo=bar&test=custom',
        filebrowserUploadUrl: '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files&id=abc&custom=test',
        filebrowserImageUploadUrl: '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images&id=abc&custom=test',
    } );

现在的问题是CKFinder将仅传递预定义的集合或URL参数:idtyperesourceTypelangCodeCKEditor和{ {1}}。如果您想使用更多参数,则需要手动将其作为CKFinder配置设置进行传递,并且需要在CKEditorFuncNum文件中进行设置(您需要对其进行修改),例如

ckfinder/ckfinder.html

注释:

  • 如果您希望在使用CKEditor图像对话框上载选项卡上载文件时发送其他参数,则还需要将它们添加到<html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"> <title>CKFinder 3 - File Browser</title> </head> <body> <script src="ckfinder.js"></script> <script> function getUrlParams() { var vars = {}; window.location.href.replace( /[?&]+([^=&]+)=([^&]*)/gi, function( match, key, value ) { vars[ key ] = value; } ); return vars; } var params = getUrlParams(), config = { pass : '' }, ckfServicedParams = [ 'id', 'type', 'resourceType', 'langCode', 'CKEditor', 'CKEditorFuncNum' ]; for( var key in params ){ if ( ckfServicedParams.indexOf( key ) < 0 ) { config.pass = config.pass.concat( config.pass ? ','+key : key); config[key] = params[key]; } } CKFinder.start( config ); </script> </body> </html> 配置设置中(您可以使用上面示例中所示的其他参数) 。
  • 请注意,这些参数并非完全动态。每次编辑器加载时都定义一次,除非您销毁/创建编辑器实例或使用编辑器重新加载页面,否则以后就不能更改它们。