Jump to content

Кнопка проверки орфографии через Yandex в редакторе IPS4

Добавление кнопки проверки опечаток от Яндекса 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
	});

 

User Feedback

Recommended Comments

instrumentariy

Актив
Цитата

пишем 1 тег без ковычек: "<br>", его мы позже заменим.

На что нужно заменить ? А то всё сделал по инструкции - но не работает.

lesovod

Пользователи
Заменяем 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
	});

У меня работает... внимательно читайте.
Ну и еще везде номбер поменяйте внутри кода... на номер папки!

slimer

Пользователи

Вот так работает правильно (заменить соотв кусок):

			   success: function(resp){
			   		if(resp.length > 1) {
				   		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);
					resp.length-=1;
				    	alert('Исправлено ' + resp.length +' '+declOfNum(resp.length,['слово','слова','слов']));
					} else {
						alert('Ошибок не найдено');
					}
			   }});

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Добавить комментарий...