Как передать пользовательские значения в CKFinder3 при создании экземпляра CKEditor4? - PullRequest
0 голосов
/ 05 апреля 2019

У меня возникают проблемы с использованием pass для передачи переменных в мой коннектор CKFinder3 (ASP) при использовании CKEditor4.

Я создаю свой экземпляр редактора с:

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

, нопеременная, похоже, не переходит в CKFinder.

Если я добавлю этот код в конфигурацию CKFinder напрямую, она все же будет работать:

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

Это здорово, но значенияЯ хочу, чтобы передача была динамичной, поэтому мне нужно передать их, когда я вызову .setupCKEditor() на странице.Я также пытался использовать connectorInfo: 'testVar=nooice', но это тоже не работает.

Кто-нибудь сталкивался с этим?Я нашел отличный ответ и пример на этот вопрос, Как передать параметры строки запроса в ckeditor для кнопки изображения (ckfinder)? , но описанное решение в основном то, что я делаю, и не влияет наme.

Я смог получить эту работу в тесте CKEditor5, используя:

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

Но я не могу понять это в CKEditor4.

1 Ответ

1 голос
/ 08 апреля 2019

Вы передаете их так:

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

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

В приведенном выше примере вы передаете test и token параметры.

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: id, type, resourceType, langCode, CKEditor и CKEditorFuncNum.Если вы хотите использовать больше параметров, вам нужно передать их вручную в качестве параметров конфигурации CKFinder, и вы должны сделать это в файле ckfinder/ckfinder.html (вам нужно изменить его), например,

<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>

ПРИМЕЧАНИЯ:

  • Если вы хотите, чтобы дополнительные параметры отправлялись при загрузке файлов с помощью вкладки загрузки диалога изображений CKEditor, вам также необходимо добавить их в настройки конфигурации filebrowserXYZUploadUrl (вы можетеиспользуйте другие параметры, как показано в примере выше).
  • Обратите внимание, что эти параметры не совсем динамические.Вы определяете их один раз для каждой загрузки редактора и не можете изменить их впоследствии, если не уничтожите / не создадите экземпляр редактора или не перезагрузите страницу с редактором.
...