Перейти к содержанию
  • Кнопка проверки орфографии через Yandex в редакторе IPS4


    yekag

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

     


    Обратная связь

    Рекомендуемые комментарии

    Цитата

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

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

    Ссылка на комментарий
    Поделиться на другие сайты

    Заменяем 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
    	});

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

    Ссылка на комментарий
    Поделиться на другие сайты

    Проверьте текст кода)) ИсправлеНо пишется с одной Н!

    И показывает количество исправленных слов на 1 больше.

    Ссылка на комментарий
    Поделиться на другие сайты

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

    			   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('Ошибок не найдено');
    					}
    			   }});

     

    Ссылка на комментарий
    Поделиться на другие сайты



    Присоединяйтесь к обсуждению

    Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
    Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

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

    ×   Вставлено с форматированием.   Вставить как обычный текст

      Разрешено использовать не более 75 эмодзи.

    ×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

    ×   Ваш предыдущий контент был восстановлен.   Очистить редактор

    ×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...