Ответ @ 1I111I1 был очень полезен для меня, но недостатком является то, что он будет вести себя одинаково во всех случаях.Если вам нужна особая конфигурация для каждого экземпляра (например, каждый экземпляр может иметь свой путь по умолчанию для своего корневого каталога), это будет непросто.Кроме того, файловый менеджер будет лучше знать, хотите ли вы изображение или файл, потому что им потребуется другой метод просмотра (например, режим миниатюр для выбора изображения).
Итак, я отредактировал его так, чтобы он запускалсянастраиваемые события для каждого экземпляра на основе режима просмотра (изображение / ссылка).
CKEDITOR.on('dialogDefinition', function (event) {
var dialogName = event.data.name,
dialogDefinition = event.data.definition,
infoTab,
browse;
// Check if the definition is from the dialog window you are interested in (the "Image" dialog window).
if (dialogName == 'image' || dialogName == 'link') {
// Get a reference to the "Image Info" tab.
infoTab = dialogDefinition.getContents('info');
// Get the "Browse" button
browse = infoTab.get('browse');
// Override the "onClick" function
browse.onClick = function () {
var me = this,
dialog = me.getDialog(),
editor = dialog.getParentEditor(),
callBack = editor._.filebrowserFn,
win;
// This may or may not be needed. Got it from ckeditor docs.
editor._.filebrowserSe = me;
// when the button gets clicked fire appropriate event
if (dialogName == 'image') {
dialog.getParentEditor().fire('browseImageRequest', callBack);
} else {
dialog.getParentEditor().fire('browseLinkRequest', callBack);
}
}
}
});
Теперь вы можете зарегистрироваться для соответствующего события в каждом экземпляре индивидуально, а затем использовать предоставленный обратный вызов для возврата выбранного значения:
CKEDITOR.instances['myinstance'].on('browseImageRequest', (event)=> {
// Call back to CKEDITOR with new path to image (i.e. replace path below with new url for image)
window["CKEDITOR"].tools.callFunction(event.data, 'images/noimage.jpg');
});
CKEDITOR.instances['myinstance'].on('browseLinkRequest', (event) => {
// Call back to CKEDITOR with new path to image (i.e. replace path below with new url)
window["CKEDITOR"].tools.callFunction(event.data, 'http://www.google.com');
});
Также обратите внимание, что перед всем этим вы должны активировать кнопку обзора с конфигурацией, которая требуется для режима всплывающих окон, тогда этот обходной путь переопределит действие onClick и вместо открытия всплывающих оконбудет срабатывать соответствующее событие
CKEDITOR.replace( 'editor1', {
filebrowserBrowseUrl: '#',
filebrowserImageBrowseUrl: '#'
});