Привет, я пытаюсь внести некоторые изменения в нашу реализацию CKEDITOR 3.6.2
, удалив все опции, кроме 2, в раскрывающемся списке типов ссылок, отображаемом на вкладке целей диалога.
Я пытался добиться этого с помощью API, но я получаю сообщение об ошибке в минимизированном основном файле ckeditor.js в методе dialog () в этой строке X = S.lang.dir; где S - редактор.
Свойство .lang экземпляра редактора не определено при выполнении CKEDITOR.dialog (редактор, ссылка), при просмотре отладки объекта «редактор» я нигде не вижу объекта lang, поэтому я не уверен почему этого не хватает? Я не работал над нашей первоначальной реализацией, но, насколько я знаю, мы добавили только 2 плагина и не изменили ядро ckeditor.
Вот мой код:
for (var i in CKEDITOR.instances) {
var editor = CKEDITOR.instances[i];
var dialogObj = CKEDITOR.dialog(editor, 'link');
var linkDialogTargetField = dialogObj.getContentElement('target', 'linkTargetType');
// API didn't seem to have a more efficient approach than clearing all and re-adding the one we want
linkDialogTargetField.clear();
linkDialogTargetField.add('notSet', '<not set>');
linkDialogTargetField.add('_blank', 'New Window (_blank)');
}
Мне удалось внести изменения без правильного использования API, выполнив следующие действия:
CKEDITOR.on('dialogDefinition', function (ev) {
// Take the dialog name and its definition from the event
// data.
var dialogName = ev.data.name;
var dialogDefinition = ev.data.definition;
// Check if the definition is from the dialog we're
// interested on (the "Link" dialog).
if (dialogName == 'link') {
// Get a reference to the "Link target" tab.
var targetTab = dialogDefinition.getContents('target');
var targetField = targetTab.get('linkTargetType');
// removing everything except the 1st (none set) & 3rd (new window) options from the dropdown
targetField['items'].splice(1, 2);
targetField['items'].splice(2, 3); // the array is reduced by splice, so we have to splice from [2] onwards not from [4]
}
});
но мне не нравится этот подход, у кого-нибудь есть идеи? или другие способы достижения того же результата с помощью API?