Что я хочу?
Я пытаюсь интегрировать проверку грамматики в Плагин 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.
- Как я могу отобразить CKEditor dom, переданный вышеуказанным функциям, соответствует summernote?
- Как я могу создать контекстное меню sugession в summernote? (Есть ли пользовательское контекстное меню в summernote?)
Кто-нибудь уже интегрировал ATD с summernote.Все предложения / альтернативные решения приветствуются.