Переход на CodeIgniter 1.6.2 откладывается
Похоже, перемудрили разработчики. В новой версии что-то неладное творится с подключением библиотек. ![]()
После перехода вдруг перестал работать Xmlrpc. Я долго бился, пока не выяснил, что в новой версии подключается лишь часть библиотек, хотя в autoload'е все стоит как положено. Собственно там всего две библиотеки: база данных и сессия. И вот в моем классе Xmlrpc_server база данных напрочь отсутствует. Как будто бы её просто нет.
Я пробовал вручную её прописывать (может проблема в автозагрузке), но библиотека не подключается, то есть на каком-то уровне CodeIgniter считает, что она уже загружена, хотя реально это не так. Впрочем может это еще какая-то ошибка, но мне её так и не удалось победить. Пробовал самые разные варианты, никаких результатов.
И главное - теперь совершенно непонятно в какую сторону копать. ![]()
Вышел CodeIgniter 1.6.2
Вышел CodeIgniter 1.6.2. Изменений довольно много, прежде всего хочется отметить два:
- во всех php-файлов убран закрывающий ?>
- в конфигурации добавлен файл constants.php
Версию пока тестирую локально, после этого обновлю уже на сервере.
Визуальный редактор
Похоже, что я несколько погорячился, решив, что визуальный редактор можно оставить на потом и отладить его работу. Исходил из того, что в случае каких-то проблем, всегда можно подправить его код. Но я ошибся.
Первоначально я взял редактор FreeRTE. Всё в нем замечательно: и оформление, и настройки, но в процессе работы возникло несколько проблем. Главная из них в том, что спецсимволы, которые с лихвой присутствуют в PHP и которые я публикую, не совсем корректно обрабатываются этим редактором. Даже когда я перехожу на закладку «Код», все равно некотоыре символы неверно кодируются.
Основная проблема, как оказалось, кроется в кавычках, которыми экранируются спецсимволы. Получилась солянка: на стороне сервера я делаю правильное html-кодирование, на стороне браузера уже работает JS, со своими особенностями. Поэтому «серверные тексты» нужно отдавать редактору уже в его формате.
Ситуация значительно усложнилась из-за того, что редактор не имеет textarea-элемента. Поэтому тексты нужно передавать как одну из JS-переменных.
В общем намучавшись с кодированием туда-сюда, я решил сменить визуальный редактор.
CodeIgniter и PHP как FastCGI
Вот здесь я уже писал, об особенностях работы PHP в режиме FastCGI. Недавно обнаружил еще один глюк, который поначалу принял на счет этой «связки». Как оказалось проблема крылась именно в CodeIgniter.
Суть проблемы. У меня на сайте пагинация страниц. Поскольку главная страница имеет тип «home», то ссылки на страницы формируются в виде «сайт/home/next/2». И вот эта штука напрочь отказывалась работать - постоянно выходило сообщение, что страница не найдена (404).
Обнаружилось, что неверно работает $this->uri->segment_array() - он упорно исключал из первого сегмента URI «home». Перепробовав всевозможные варианты, полез в URI.php и выяснилась интересная деталь.
В режиме, когда $config['uri_protocol'] = "REQUEST_URI" происходит парсинг $_SERVER['REQUEST_URI'], что вполне логично. Но вот в конце этого парсинга (функция _parse_request_uri) получает реальный путь на сервере и сравнивает с полученным REQUEST_URI и берет только ту часть, которая несовпадает. Так вот, на сервере путь начинается с «home» и первый сегмент тоже начинается с «home». Вот функция и удаляет её. ![]()
Я не стал сильно разбираться в смысле этих манипуляций, просто закоментировал строки:
- # $parsed_uri = implode("/", array_slice($parsed_uri, $i));
- $parsed_uri = implode("/", $parsed_uri);
После этого все заработало.
Сделал все плагины виджетными
Впрочем только те, которые действительно могут быть виджетными. ![]()
Создание виджетов оказалось совсем простым делом, не сравнится с WordPress, где это сложней.
Еще оказалось, что плагин Twitter'а отлично подходит как грабилка RSS. Для примера подключил трансляцию со своего сайта.
И главное. Немного доработал функцию рубрик, чтобы можно было указать список исключающих и включающих рубрик. Это нужно, чтобы сделать группы рубрик. Сейчас это «MaxSite CMS» и «Блог».
Сменить ли визуальный редактор?..
Для своей системы использую FreeRTE. В принципе работает он неплохо за исключением одной мелочи. Для передачи параметров используется JS, включая и передачу самого текста. То есть сам текст передается в js-скрипте. Получается довольно серьезная «петрушка» с кавычками и служебными символами, например &. Сюда же приплюсовываются и отображение тэгов.
Я вроде бы смог настроить нормальное преобразование, как опять выяснилось, что скажем обычный html-комментарий преобразуется в символьное представление (html-спецсимволы). Причем это происходит в режиме «Код»...
Я конечно еще буду разбираться, но вдруг, если у кого есть опыт или наработки визуального (с переключением на просмотр кода) редактора, буде очень признателен за ссылку. Варианты с TinyMCE и им подобные не предлагать. Главные требования, чтобы редактор был простым и небольшим по объему: где-то до 100-200Кб.
Добавил управление файлами
Эта функция была изначально запланирована, но только сейчас дошли руки. Или ощутил потребность. ![]()
Работает довольно просто. На отдельной странице выводится список всех файлов в каталоге «Uploads». Каждый файл можно выделить и удалить. Для картинок выводятся миниатюры. Рядом три поля с адресом, a-ссылкой и img-ссылкой. Это чтобы просто скопировать готовый код в редактор.

ps Забыл сразу дописать. Есть и поле для загрузки файлов. Там же.
Виджеты в MaxSite CMS
Сегодня меня посетила муза
и я смог придумать, как реализовать виджеты. Задача на самом деле сложная. Если сравнивать с WordPress, то сразу же приходит на ум АЯКС, JS и насколько сложно и запутано там все получается.
