Plugins SDK
кроме Extension Environment Liferay предоставляет готовую для работы среду для разработки плаигнов - Liferay Plugins SDK. среда представляет собой ZIP архив, который содержит структуру каталогов и файлов сборки Ant. после распаковки архива можно сразу начинать работу. с другой стороны, в отличие от Extension Environment, ни один из плагинов не является плотно интегрированным с Liferay и может быть разработан как с помощью Liferay Plugins SDK, так и без нее.итак, какие же бывают плагины, с точки зрения Liferay?
Portlets
портлеты. спецификации JSR-168 и JSR-286 описывают портлеты чуть более, чем полностью. и я не стану описывать принципы взаимодействия, разработки, жизненный цикл и прочие особенности реализации в рамках данной статьи. единственное, я попытаюсь кратко описать, как это работает вообще.понятие портлета не отделимо от понятия портала. в общем случае портал есть контейнер для портлетов. каждый портлет является независимым web приложением, которое развертывается внутри портального контейнера и функционирует как обычное независимое приложение с рядом дополнительных возможностей
- у каждого приложения есть доступ к настройкам - PortletPreferences. настройки сохраняются внутри портала и доступны каждому портлету как при работе, так и между развертываниями. портал отвечает за хранение PortletPrefereces
- каждый портлет может находится в трех состояниях VIEW, EDIT и HELP.
состояние VIEW - является состоянием по-умолчанию и именно в нем портлет осуществляет большинство своих функций.
состояние EDIT - обычно используется для изменения настроек портлета. это может быть конфигурация внешних источников, изменение PortletPrefereces и тому подобное
состояние HELP - говрящее само-по-себе. предосталение информации о том, что делает портлет и как с ним работать - каждое окно портлета внутри портала может находиться в трех состояниях NORMAL, MAXIMIZED и MINIMIZED
- Look&Feel портлетов определяется порталом, если не реализовано иное. как правило это означает, что разработчику больше не нужно программировать стили для каждого портлета. достаточно написать их однажды. но это уже Theme в дополнение к стандардному деплоймент дескриптору portlet.xml, обязтельным явдяется также специфический деплоймент дескриптор liferay-portlet.xml, где можно описать поведение портлета по-умочанию, какие-то конфигурационные вещи, принадлежность портлета и тому подобное. группировка портлетов происходи через изменение деплоймент дескриптора liferay-display.xml, который также можно определить для портлета. и еще можно описать портлет или группу портлетов как hook, через деплоймент дескриптор liferay-hook.xml
Theme
тема представляет собой набор шаблонов, для гернерации страниц портала; набор стилей CSS применимых для всех компонентов и набор картинок, которые будут использованы в портале. тема предоставляет возможность создания нескольких цветовых схем одной и той же темы.строго говоря, в Liferay версии старше 3, тема представляет собой не столько шаблоны, CSS и картинки, сколько изменения к станадртным темам. но никто не мешает написать свою тему "с нуля". по-умолчанию для описания шаблонов использутеся Apache Velocity. но в Liferay заявлена поддержка практически любого языка шаблонов.
правила развертывания и использования темы описываются деплоймент дескриптором liferay-look-and-feel.xml
Layouts
портал предлагает достаточно большой выбор шаблонов страниц "из коробки". но можно определять свои. как правило это табличная сетка, где определяются области, в которые потом можно будет помещать портлеты. в принципе никто не мешат сделать эту сетку на div'ахHooks
и еще один плагин, который присутсвует только в Liferay. это небольшие веб приложения, которые позволяют добавить или изменить действующий функционал портала. например заменить страницу логина, или изменить поведение портальных модулей. это очень удобно для написания патчей и кастомизации существующего функционала без изменения исходного кода.каждый hook содержит специальный деплоймент дескриптор liferay-hook.xml. в котором можно подробно указать когда этот функционал должен срабатывать и к чему он относится