Ars Longa, Vita Brevis

Усоврешенствованный клон WP-CodeBox

Наверное, многие знают о плагине WP-CodeBox, написанном Eric Wang. Данный плагин provides clean syntax highlighting and AJAX advanced features for embedding source code within pages or posts, то есть всё то, что нужно блоггеру, который часто постит код. Для подсветки синтаксиса используется GeSHi.

Я пользуюсь плагином около трёх месяцев и при этом не смотрю на него сквозь розовые очки: неоднократно я уже писал патчи, исправляющие ту или иную ошибку в коде:

Но не успел я поправить версию 1.2.2, как вышла версия 1.2.2.1, использующая более новую версию GeSHi (что я, кстати, поправлял в своём блоге еще в 1.2.1).

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

  • генерируемый HTML-код стал более осмысленным и компактным;
  • генерируемый HTML-код не содержит таблиц, ибо табличных данных нет;
  • HTML-код использует классы, нежели инлайновые стили: во-первых, это делает исходник более читабельным, а во-вторых, для больших блоков кода очевидно значительное уменьшение размера страницы;
  • PHP-код не изобретает велосипед: функциональность, поддерживаемая GeSHi, в коде плагина не дублируется (смысл ее дублировать?);
  • проведён рефакторинг PHP-кода: ereg() заменен stripos() (а затем вообще удалён), исправлена ошибка в регулярном выражении, из-за чего загрузка файлов могла не работать, исправлены потенциальные XSS-дыры, вместо htmlspecialchars() используется wp_specialchars()
  • JavaScript не конфликтует с Prototype/LightBox/ProtoBox;
  • генерируемый XHTML-код большей частью валиден (на данный момент я еще не весь код просмотрел);
  • в GeSHi добавлена поддержка еще нескольких языков и внесены коррекции в существующие модули;
  • явно было что-то еще, но я уже не помню :-)

В общем, я принял героическое решение, что я сам буду поддерживать полученный код и развивать его (фактически, я создал новый форк от WP-CodeBox). С названием я не определился, пока будет называться просто CodeBox, а там посмотрим. Обратную совместимость я постараюсь сохранить.

Если кто-то будет данный пост читать :-), пишите отзывы и пожелания!

Скачать CodeBox.

Добавить в закладки
<a rel="nofollow" href="http://blog.sjinks.org.ua