Как добавить нестандартный тег в CKEditor?

Хочу реализовать обработку тега <cut /> для СKEditor.
Нарисовал плагин:
CKEDITOR.plugins.add( 'pagecut',
{
    init: function( editor )
    {	    
            CKEDITOR.addCss("cut {display:block; height: 2px;width: 100%;background: #DDDD99;}");
	
            editor.addCommand( 'insertPagecut',
            {
                exec: function( editor )
                {                                    
                    var element = CKEDITOR.dom.element.createFromHtml( '<cut />' );
		    element.unselectable();
                    editor.insertElement( element );
                }
            });
            
            editor.ui.addButton( 'Pagecut',
            {
                label: 'Вставить кат',
                command: 'insertPagecut',
                icon: this.path + 'images/icon.png'
            } );
    }
} );

В редакторе все работает, но есть одна загвоздка. При вставке тега происходит его обработка и в результате в html появляется такая вещь:
<p>Это текст одного абзаца, тут ставим кат,<cut></cut>он оказывается в середине абзаца</p>

Как отключить обработку тега и запретить его размещение внутри других тегов?

Нужно чтобы в редакторе вставлялось именно <cut /> . И тег не должен быль внутри других тегов.
  • Вопрос задан
  • 4168 просмотров
Решения вопроса 1
@vasiatka Автор вопроса
Сам разобрался. Решил поделиться. Решением. За требуемое поведение тегов отвечает dtd. В метод добавил строки:
CKEDITOR.dtd['cut']={};
	    CKEDITOR.dtd.$empty['cut']=1;
	    CKEDITOR.dtd.$nonEditable['cut']=1;
	    CKEDITOR.dtd.$object['cut']=1;

Строка 1. не дает наследовать этот элемент;
Строка 2. Самозакрывающийся тег;
Строка 3. Запрет редактирования;
Строка 4. Объект можно выделить только полностью.

В целом я удовлетворился вот таким вариантом плагина https://yadi.sk/d/51oEeVCMfvabV
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@VitaliiDel
Почти сработало. Только когда повторно открываю документ <cut/> меняется на <p>&nbsp;</p>
Ответ написан
artygrand
@artygrand
Прогер, кодер, писатель кода
Не знаю, дойдет ли это сообщение, но все же...
vasiatka, у вас получилось до конца доделать функционал этого модуля, что бы он в самом редакторе не глючил?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы