Экземпляр редактора CKEditor .lang не определен? - PullRequest
0 голосов
/ 23 февраля 2012

Привет, я пытаюсь внести некоторые изменения в нашу реализацию 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?

1 Ответ

0 голосов
/ 23 февраля 2012

Используя второй подход и переписать выпадающие элементы вместо сращивания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...