
Некоторое время слежу за проектом CI Bonfire, о котором хотел бы рассказать.
Проект представляет собой некий базис (kickstarter) для web-приложения, разрабатываемого c помощью фреймворка CodeIgniter.
На данном этапе проект основывается на ветке CodeIgniter 2.0.1
Bonfire является промежуточным продуктом между фрэймворком и CMS. Используя Bonfire в качестве основы своего web-приложения вы получаете широкий базовый функционал, включающий в себя, например, управление пользователями, и удобную админку.
Проект помимо самого фрэймворка включает в себя следующие библиотеки:
- HMVC — для организации вообще всего
- Assets — для управления подключаемыми ресурсами, такими как css, js, изображения
- Ocular Template Library — для удобного управления шаблонами страниц (с поддержкой тем)
Установка
У проекта имеется установщик, доступный по uri /install, который позволит вам задать параметры подключения к базе данных с их последующей проверкой, задать имя сайта и создать пользователя-администратора — да-да, проект «из коробки» позволяет управлять пользователями и, более того, имеет встроенную систему контроля доступа, основанную на ролях (RBAC):

После установки используя данные созданного пользователя-администратора вы можете войти в админку новоиспеченного приложения
Идеология — контексты и модули
В основе Bonfire лежит идеология модулей и контекстов.
Функциональность приложения расширяется модулями, модуль предоставляет пользователю интерфейс в рамках контекста.

Изначально Bonfire предоставляет разработчику несколько предопределенных контекстов, в рамках которых функционируют встроенные в Bonfire модули. Вот их перечень:
- content — контекст для управления наполнением сайта (добавление\удаление новостей для модуля «Новости»)
- stats — отчеты (результаты голосования для модуля «Опросы»)
- appearance — внешний вид (стили отображения выводимых новостей и.т.д)
- settings — различные настройки приложения, такие как, например, кэш и состояние сайта
- developer — инструменты для разработчика
- public — фронтенд сайта, то что видит конечный пользователь