Добавление кнопки проверки опечаток от Яндекса speller.yandex.net/ в редактор.
1. Создание кнопки
Заходим в Админку => Внешний вид => Настройки редактора.
Добавляем свою кнопку "Исправить опечатки", добавляем иконку, тип кнопки "Блочный", в HTML пишем 1 тег без ковычек: "<br>", его мы позже заменим.
Мышкой переносим новую кнопку в удобное место в редакторе.
2. Редактирование кода кнопки
Ищем в /applications/core/interface/ckeditor/ckeditor/plugins/ папку с начинающуюся с "custom-", у меня это "custom-9158a465165b5dbad4c783fd6d17199b".
Открываем фаил plugin.js и видим там
(function() {
CKEDITOR.plugins.add( 'custom-9158a465165b5dbad4c783fd6d17199b', {
icons: 'custom-9158a465165b5dbad4c783fd6d17199b',
init: function( editor ) {
editor.addCommand( 'custom-9158a465165b5dbad4c783fd6d17199b', ips.utils.defaultEditorPlugins.inline( 'custom-9158a465165b5dbad4c783fd6d17199b', "<br>" ) );
editor.ui.addButton && editor.ui.addButton( 'custom-9158a465165b5dbad4c783fd6d17199b', {
label: ips.getString('editorbutton_custom-9158a465165b5dbad4c783fd6d17199b'),
command: 'custom-9158a465165b5dbad4c783fd6d17199b',
toolbar: ''
});
}
});
})();
Заменяем 5 строчку:
editor.addCommand( 'custom-9158a465165b5dbad4c783fd6d17199b', ips.utils.defaultEditorPlugins.inline( 'custom-9158a465165b5dbad4c783fd6d17199b', "<br>" ) );
на новую:
editor.addCommand( 'custom-9158a465165b5dbad4c783fd6d17199b',{
exec : function( editor )
{
function declOfNum(number, titles) {
cases = [2, 0, 1, 1, 1, 2];
return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];
}
text = editor.getData();
if(text != '') {
$.ajax({
type: "GET",
url: "http://speller.yandex.net/services/spellservice.json/checkText",
dataType: "jsonp",
data: "text="+encodeURIComponent(text)+"&lang=ru",
success: function(resp){
if(resp.length > 0) {
for (var i = resp.length - 1; i >= 0; i--) {
if(resp[i].s!='') {
text = text.replace(resp[i].word,resp[i].s);
}
};
editor.setData(text);
alert('Исправленно ' + resp.length +' '+declOfNum(resp.length,['слово','слова','слов']));
} else {
alert('Ошибок не найдено');
}
}});
}
},
canUndo : false
});