Программисты, пишущие плагины на редактор ckeditor наверняка заметили, что начиная с версии 4, редактор идет с плагином codemirror для редактирования исходного текста. Когда-то давно, сам хотел подружить его с ним. Так и не дошли руки, теперь же он предустановлен. Но частью API ckeditor не является. Поэтому возникает проблема, если приходится работать в режиме исходного текста:  как работать с плагином codemirror в ckeditor из другого плагина.

Раньше, работа с исходным текстом в редакторе была довольно тривиальна. это был обычный нативный textarea. Теперь все немного сложнее, или проще, это смотря с какой стороны смотреть.

Проще, потому что у codemirror есть свое API для работы с текстом, и не надо каждый раз изобретать велосипед.

С проблемой доступа к API плагина я столкнулся при разработке одного своего плагина статистики. И вот, как я ее решил 

if ( editor.mode == 'wysiwyg' ){
	// работаем с обычным API ckeditor
}else{
	if(!window["codemirror_"+editor.id])
		// работаем с обычным texterea
	else{
		var codemirror = window["codemirror_"+editor.id];
		// работаем с API codemirror
	}
}

все просто, но в доках такой информации нет. Пришлось изрядно по трассеровать код, чтобы дойти до этого. Вам значительно проще.

Теперь можно использовать   API великолепного редактора кода codemirror. К примеру выведем выделенный в данный момент исходный код

var codemirror = window["codemirror_"+editor.id];
alert(codemirror.getSelection())

 В отличие от аналогичного метода у ckeditor ( я уже писал, как там все не просто), данный метод вернет кусок исходного кода. 

Полный список доступных методов можно прочесть в официальной документации

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

Оставлять комментарии могут только зарегистрированные пользователи

Комментарии  

Slaed Cms
# Slaed Cms 05.04.2017 22:45
В SLAED CMS он встроен по умолчанию.
Подробнее: https://slaed.net/index.php?name=news&op=view&id=636