Интеграция проверки грамматики в SummerNote с после крайнего срока - PullRequest
6 голосов
/ 09 марта 2019

Что я хочу?


Я пытаюсь интегрировать проверку грамматики в Плагин Summernote , используя По истечении срока .

Что я уже сделал?


Согласно этому руководству Я загрузил сервер ATD и успешно запустил сервер.Также успешно проверьте грамматику из текстовой области с моей HTML-страницы.

Теперь я начал интегрировать его с Summernote.Моя ссылка была плагином для CKEditor, который уже интегрирован с ATD, который доступен Здесь .Я также ссылаюсь на страницу Добавление грамматики и проверки правописания в любой редактор WYSIWYG

Я скачал плагин CKEditor для ATD и изменил его для работы с summernote.Наконец, мне удалось добавить новый плагин в summernote и там, добавив пользовательскую кнопку панели инструментов в summernote.Код плагина Summernote ниже

$.extend($.summernote.plugins, {
    /**
     * @param {Object} context - context object has status of editor.
     */
    'spellcheck': function (context) {
        var self = this;
        // ui has renders to build ui elements.
        //  - you can create a button with `ui.button`
        var ui = $.summernote.ui;
        context.memo('button.spellcheck', function () {
            // create button
            var button = ui.button({
                contents: '<img src="../../atd-ckeditor-master/images/atdbuttontr.gif" alt="">',
                tooltip: 'Check spelling and grammar',
                click: function () {
                    // invoke insertText method with 'hello' on editor module.
                    var $editor = context.layoutInfo.note;
                    var layoutInfo = context.layoutInfo;
                    var proofread_action = setupSummerNoteInstance($editor, this.path, layoutInfo);
                }
            });
            // create jQuery object from button instance.
            var $hello = button.render();
            return $hello;
        });
    }
});

Когда пользователь нажимает пользовательскую кнопку, данные из редактора отправляются на сервер проверки грамматики, и результат возвращается.Я передаю дату летнего примечания в atd_core путем преобразования данных, подобных этим

var divSummer = document.createElement('div');
 divSummer.innerHTML = editor.summernote('code').trim();
 atd_core.markMyWords(divSummer.childNodes, results.errors);

До этого момента все работает.

Проблемная область


Проблема заключается в отображении возвращенного результата с сервера проверки грамматики со стилями и контекстным меню предложения в редакторе Summernote.Я пытаюсь отобразить привязки специфических данных плагина CKEditor к summernote для следующих функций ( здесь - весь файл plugin.js CKEditor, на который я ссылаюсь ).

var load_AtD_core = function (success) {
    atd_core = new AtDCore();
    /* initialize all functions that AtD/Core will require */
    atd_core.map = function (array, callback) {
        for (var x = 0; x < array.length; x++) {
            callback(array[x]);
        }
    };
    atd_core.hasClass = function (node, className) {
        return node != null && node.nodeType != 3 && CKEDITOR.dom.element.get(node).hasClass(className);
    };
    atd_core.contents = function (node) {
        if (node.$)
            return node.$.childNodes;
        return node.childNodes;
    };
    atd_core.replaceWith = function (old_node, new_node) {
        return new_node.replace(CKEDITOR.dom.element.get(old_node));
    };
    atd_core.create = function (node_html) {
        return CKEDITOR.dom.element.createFromHtml('<span class="mceItemHidden">' + node_html + '</span>');
    };
    atd_core.removeParent = function (node) {
        return CKEDITOR.dom.element.get(node).remove(true);
    };
    atd_core.remove = function (node) {
        return CKEDITOR.dom.element.get(node).remove(false);
    };
    atd_core.getAttrib = function (node, key) {
        return CKEDITOR.dom.element.get(node).getAttribute(key);
    };
    atd_core.findSpans = function (parent) {
        var results = [];
        var elements = editor.document.getElementsByTag('span');
        for (var x = 0; x < elements.count(); x++)
            results.push(elements.getItem(x).$);
        return results;
    };
    /* set options */
    atd_core.showTypes('Bias Language,Cliches,Complex Expression,Diacritical Marks,Double Negatives,Hidden Verbs,Jargon Language,Passive voice,Phrases to Avoid,Redundant Expression');
}

здесь ониманипулируют CKEDITOR.dom, но мне не удается получить элементы dom из summernote.

  1. Как я могу отобразить CKEditor dom, переданный вышеуказанным функциям, соответствует summernote?
  2. Как я могу создать контекстное меню sugession в summernote? (Есть ли пользовательское контекстное меню в summernote?)

Кто-нибудь уже интегрировал ATD с summernote.Все предложения / альтернативные решения приветствуются.

...