Home News

Размышления на тему TinyMCE, либо CKEditor

04.09.2018

Вообще до чёртиков надоело писать что-либо о WordPress и заниматься его техническими деталями. И я-бы давно уже наверное нашёл тему поинтереснее, но как всегда - всё получилось через одно место.

Да-да, вы правильно подумали - через то самое, на букву «ж»...

После очередного обновления движка WordPress до версии 4.2 на многих блогах, в том числе и на моём, отказался работать мой плагин визуального редактора комментариев .

Пришлось срочно заняться поисками решения этой проблемы...

Удивительно, но на некоторых сайтах плагин продолжает себе спокойно работать невзирая на всякие обновления...

А на некоторых, где до обновления нормально работал, стал выдавать ошибку незаполненного поля.

Причина логическая

Суть работы любого визуального редактора сводится к следующему: существует обычная текстовая область для ввода комментария - textarea с неким идентификатором. Эту текстовую область редактор делает невидимой и подменяет своим полем с тем-же идентификатором, а при записи комментария, обновляет данные встроенного по умолчанию поля значением из своего. После этого осуществляется процесс записи комментария - валидация заполнения полей, собственно запись и т.д.

И вот после обновления WordPress до версии 4.2 встроенное поле textarea перестало обновляться значением поля визуального редактора и, соответственно, на уровне валидации система выдаёт ошибку, что, мол, поле не заполнено.

Первым делом я начал смотреть что-же поменялось в работе движка. Нашёл вот такое:

Разделение связанных элементов

Связанные элементы из разных таксономий при обновлении одного из них будут разделены. См. справочник разработчика плагинов.

Вот оно, подумал я - это и есть причина того, что встроенное поле комментария перестало обновляться, ведь теперь одинаковые идентификаторы разделяются...

Да, ссылка на справочник разработчика плагинов присутствует, но там только про таксомании в данном контексте. Я написал на русский форум поддержки, но там меня заверили, что причина не в этом, так-как разделяются действительно только таксомании (категории и метки). И хотя, я конечно буркнул там, что это так только заявлено в релизе, а как на самом деле ещё неизвестно, но тем не менее понял, что помощи оттуда не дождусь.

Попытки решения

И я начал самостоятельно пытаться обойти этот глюк... Использовал разные способы, пытаясь как-то всё-же присвоить нужное значение, а по сути текст введённого комментария, в это злополучное textarea... Задействовал разные хуки и фильтры, сочинял скрипты, но всё бесполезно.

Даже устанавливал себе на локальный блог другие визуальные редакторы комментариев, чтобы посмотреть их код - как они обходят этот баг обновления... Но те плагины, которые работали, использовали совершенно другую реализацию, которая меня никак не устраивала и почерпнуть оттуда я ничего так и не смог.

А больше всего меня угнетало то, что я подвожу многих людей, установивших мой плагин...

Сам удивился, глянув на эту цифру...

Плагин установило больше 100 человек!

Некоторые, кстати, написали мне о проблеме...

Вот он, момент ответственности, блин...

Если-бы не это, то я бы возможно вообще-бы отказался от поисков решения проблемы.

Но это оказалось легче сказать, чем сделать. И, собственно, решения этой конкретной проблемы я так и не нашёл. Хотя слабая надежда всё-ещё есть.

Причина техническая

Вот уж воистину никогда не знаешь, где найдёшь, где потеряешь...

Плагин работал используя CDN-версию редактора TinyMCE. С этим редактором я уже освоился более-менее, даже научился писать свои плагины для него - например, три плагина смайликов - это отдельные мои плагины нарисованные специально для TinyMCE.

Даже не знаю, что послужило толчком попробовать другой редактор в аналогичном CDN-исполнении. И я нашёл CKEditor...

Нет, я знал о нём и раньше и даже испытывал, но это было давно.

Через свой-же плагин, поменяв в нём всего пару строк, я подключил CDN-версию редактора CKEditor и о чудо - никаких ошибок при комментировании! Значит дело всё-же не в WordPress, а в редакторе TinyMCE?

CKEditor сейчас у меня в комментариях, все желающие могут попробовать, заценить...

Размышления на тему

И вот, над чем я сейчас размышляю...

Хотя подключение редактора CKEditor через CDN не сложнее, чем TinyMCE, но там совсем всё другое внутри - коды, команды, форматы подключения внешних плагинов, принцип написания своих для редактора, настройки, конфигурация и многое другое. Сейчас как раз ковыряюсь в этом и пытаюсь разобраться. Документация именно для варианта CDN очень скудная и, надо признать, что для TinyMCE она более понятная.

Тем не менее, я уже вижу, что возможности CKEditor довольно обширны и, на мой взгляд, превосходят возможности TinyMCE.

Но у меня есть несколько вопросов...

Обновлять этот плагин, изменив в нём редактор или создать другой? Проблема с TinyMCE рано или поздно всё-равно разрешится... Если делать другой плагин, то многие люди, пользующиеся существующим, просто не узнают о его существовании и могут остаться без визуального редактора комментариев. Для написания полноценного плагина с использованием CKEditor потребуется много времени, надо разобраться с кодами, как чего там подключать, отключать, использовать и т.д. Сейчас он работает вот в таком варианте безо всяких настроек, как говорится As Is... Единственное, что я сделал - это порулил кнопками, какие отображать, а какие нет. Стоит-ли выкладывать обновление, с такой реализацией, а потом наворачивать настройки, либо уже сделать, а потом обновлять? Стоит-ли делать вариант двойного использования - по выбору, либо TinyMCE, либо CKEditor в настройках? Не запутает-ли это людей? А как отнесутся ко всему этому те, у кого существующий плагин нормально работает и их устраивает...

Вот такие размышления... Что посоветуете? Хотя вполне возможно, что размышляю я наедине сам на сам, как говорится. ????

Удачи Вам и до встречи на моём блоге!

 

rss