Дмитрий Шейко
*авторизированный доступ


Конструктор для создания контент-зависимых приложений в стиле Веб 2.0 [12/01/08]


Речь пойдет о недавно открытом Open Source проекте SAPID CMF. Само по себе название SAPID кому-то может показаться чем-то смутно знакомым. Да, жила-была такая простенькая CMS SAPID, которая позволяла администрировать сайты inline, требовала лишь 1МБ дискового пространства и умудрялась обходиться без СУБД. Однако мало кто помнит, что создавалась эта система с целью продемонстрировать возможности парадигмы XML Sapiens. CMS SAPID благополучно и помпезно встретила свою первую годовщину, а затем 2 года никаких существенных ее новых релизов, как это ни прискорбно, не наблюдалось. Впрочем, последний год на сайте сообщества SAPID (www.sapid-club.com) время от времени проскакивала информация о работах над новой ветвью проекта SAPID CMF. Вуаля! Вот она - ветка, доступна для загрузки (http://sapidcmf.sourceforge.net) и для «шапочного» знакомства (http://cmfdemo.xmlsapiens.org).


SAPID CMF – это, что-то вроде набора «два в одном», где SAPID – система управления контентом с базовым административным интерфейсом и CMF – конструктор для превращения это интерфейса в собственную кастомизированную систему.


Любая CMS – это с одной стороны движок для веб-приложений, с другой – интерфейс для администрирования этих приложений. Логично было бы предположить, что приложения области доставки (те, что доступны пользователям сайта) и приложения административной панели CMS функционируют на базе одного движка, подчиняются единой логике, используют единый принцип шаблонов. Таким образом, CMS, позволяющая создание внешних веб-приложений, с той же легкостью должна обеспечить создание внутренних административных интерфейсов. Сердце SAPID – процессор XML Sapiens. XML Sapiens - декларативный язык, для описания шаблонов структур данных, оформления и функциональности. С помощью языка можно создавать компоненты для всех трех уровней (данные, оформление, функциональность) и использовать их многократно (reusing), подобно кубикам конструктора, для получения самых различных решений. Процессор XML Sapiens компилирует эти компоненты в готовый пользовательский интерфейс приложения.



Для веб-приложений, в отличие от настольных программ, нет заданного набора элементов управления GTK. Это и достоинство и недостаток. При создании каждого нового приложения или группы приложений разработчики вынуждены создавать новый GTK. Дабы облегчить жизнь разработчикам, GTK административной панели SAPID CMF выполнена на манер Windows. В каждом ее приложении имеются рабочая область, меню, модальные окна, окна сообщений, диалогов, процессов. Доступны компоненты – tree view и list view. Таким образом, мы имеем эдакий «джентльменский набор» для быстрого создания приложений административной панели в едином стиле.



Готовность к развитию

Вы скажете: «Отлично! Я добавлю в административную панель собственные приложения. Через месяц появится новый релиз фреймворка. Я выполню обновление и потеряю всю свою работу». На самом деле SAPID CMF организован так, что при обновлении заменяются лишь базовые компоненты, а дополнительные компоненты, добавленные разработчиком останутся нетронутыми. Возникает вопрос: «Как модифицировать базовые компоненты и защитить код модификации от перезаписи при обновлении?». В SAPID CMF используется событийная модель в стиле аспект-ориентированного программирования. В системе определены различные события. Вы можете добавить собственные обработчики различных событий, модифицирующие среду должным образом. Код модификации будет помещен в папку plugins, которая пропускается при обновлении фреймворка. В терминах АОП для внесения модификаций в базовые компоненты (библиотеки API, контроллеры и т.д.) вы определяете некоторый аспект модификации.

$ModalWindowCustomization = new Aspect();

Задаете для него область прослушивания, скажем все классы и все методы

$pc = $ModalWindowCustomization->pointcut("call *::*");

и назначаете определенному событию код модификации

$pc->_event("ModalWindowSchemasDefined", "customizateModalWindow($obj);");

Как уже говорилось сверхзадача SAPID CMF обеспечить эффективное многократное использование заготовок структур данных, оформления и функциональности при создании веб-приложений. Фреймворк содержит корневую папку VIEWS. В ней имеются папка DEFAULT для шаблонов темы оформления административной панели по умолчанию и папка DELIVERY для шаблонов приложений, созданных на базе фреймворка. Если вы добавите дополнительные темы оформления, здесь появятся соответствующие им папки. Любая из них содержит шаблоны функциональности (папка DDC), наборы полей (папка FIELDSETs), шаблоны запросов содержания (папка QCs) и шаблоны оформления (папка TEMPLATES).

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

При создании веб-приложения в сверстанном скетче логической страницы определяются динамические области. К примеру, мы вырезаем блоки меню, блоки списков и т.д. и переносим их код оформления в соответствующие DDC. DDC помимо кода оформления задает также и логику динамического блока. Здесь могут быть использованы условия, перечисления данных у запрошенных приложений CMS, включения, выражения XML Sapiens, а также неограниченная вложенность данных структур. Для описания данной логики используется XML. XML Sapiens позволяет использовать один и то же DDC для формирования различных динамических блоков. При вызове DDC могут быть переданы параметры, которые могут быть рассмотрены в условиях DDC.

structure

Если в коде динамического блока или в коде шаблона логической страницы предполагается форма ввода данных, мы обращаемся к QC. QC определяет каким образом будут отображены или запрошены сообщенные ему данные. Скажем, если мы используем вызов типа , в состоянии администрирования логической страницы мы увидим запрос с редактором WYSIWYG (соответствует типу article) и с заголовком "Введите содержание". В состоянии доставки содержания (просмотра) страницы, нам будет показано содержание контейнера contentblock, введенное по данному запросу при администрировании.



Если набор полей формы запроса данных варьируется динамически (зависит от состояния среды), мы можем использовать вызов набора полей. Например,

Данная конструкция вернет набор полей запроса содержания, соответствующий состоянию admin в файле fieldset1.xml.

Какова теория на практике?



Вполне возможно дочитав до этого места, вы подумали: «Все эти нагромождения выглядят как-то страшновато. Интересно, а может ли хоть что-то на этом фреймворке реально заработать?». В дистрибутивном пакете вместе с фреймворком поставляется готовый демонстрационный сайт. Помимо типовых вещей сайт содержит пример формы авторизации/регистрации с использованием AJAX. Форма также включает возможность авторизации по OpenID. На сайте представлен пример рекламного места для баннеров, смешанных типов (GIF/Flash/DHTML/RichMedia). Имеется также пример использования технологии IntelliTXT. Термины, внесенные в тезаурус системы автоматически преобразовывается в текстах страниц сайта в ссылки tooltip (ссылки с двойным подчеркиванием). При наведении курсора мыши на ссылку всплывает окно с подсказкой. Система ведет статистику показов связанных со ссылками окон, так что этот механизм вполне можно использовать для контекстной рекламы.

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


Создать закладку Google slashdot YahooMyWeb Digg Technorati Delicious Забобрить эту статью! Добавьте на news2.ru




Дмитрий Шейко

ФИО: Дмитрий Шейко
Должность: программист
Ник: Korvin

Личные данные  Письмо автору

Yandex RSS
Получать обновления блога по Email




Мои публикации по теме

Как заставить AJAX читать между строк

Интерактивный грид своими руками
АОП на практике, или Как адаптировать проект и не затронуть систему

Аспектно-ориентированное программирование и PHP

Языки описания пользовательских интерфейсов

Заметки веб-программиста: инсталляция Apache+PHP4+MySQL под Windows (pdf)

Делаем визуальный редактор в HTML своими руками (pdf)

 

Miscellaneous

Add-on для PHPBB, показывает последние записи в форуме при наведении мышью через AJAX

Add-on для PHPBB, реализует простую архитектуру участия в стиле Web 2.0 на базе форума

 

 

 

PHPClasses

 

PHP Programming Innovation award winner
October 2005
Winner

 

 

Персональный сайт:

http://www.cmsdevelopment.com

 

 

Мои прочие блоги:

http://livejournal.com/~dsheiko/ 

Самиздат

http://zhurnal.lib.ru/s/shejko_d_p/ 


Избранное

Лучшая бесплатная CMS для персональных сайтов http://sapid.sf.net/, платформа веб-интеграции http://www.sitesapiens.ru

CMS - аналитика: 

 

http://www.cmswiki.com
http://www.cmswatch.com
http://www.cmswire.com/
http://www.gilbane.com/
http://www.cmsmatrix.org
http://www.cms-lists.org/
http://www.cms-forum.org/

http://www.oscom.org

http://www.contentmanager.eu.com/matrix.htm

http://business-site.ru

http://cmslist.ru

http://www.cmsinfo.ws/

http://cmsobzor.ru/ 

Standarts

http://www.w3c.org

http://www.oasis-open.org

http://www.iso.ch/iso/en/ISOOnline.frontpage

http://www.ietf.org/

http://xmlstds.xemantics.com -

Все XML-стандарты одним CHM 


Information Architecture

http://iainstitute.org/library/

http://argus-acia.com

http://www.iawiki.net/IAwiki

http://louisrosenfeld.com/

http://www.eleganthack.com/blog/

http://www.iaslash.org/ia/

http://www-106.ibm.com ..


PHP

http://phpclub.ru

http://php.com.ua

http://www.php.net

http://software-engineer.org

http://www.phpguru.org/


Apache

http://apache.org

http://apache.lexa.ru

http://asmodeus.com.ua/library/ web/modules/mod_rewrite.htm

 

Java-script

http://msdn.microsoft.com

 

UML

http://www.uml.ru

http://www.interface.ru/public/990804/uml4b.htm

 


количество читателей онлайн и всего
BLOGUS.RU
Рейтинг блогов

Вверх
Вернуться

Поиск
© Red Graphic Systems