Модуль переписан практически полностью. Текущая версия спроектирована таким образом, что основная масса элементов календаря разложена на составляющие. Основной упор сделан на универсальность функций, виджетов. А это значит, что сейчас можно взять практически любой элемент интерфейса календаря и использовать его как самостоятельную сущность в своих приложениях.

Необходимость в разработки столь универсального функционала модуля была вызвана еще и текущей стратегией развития одного из направлений платформы – система управления задачами и проектами.

Практически каждое приложение в этом направление нуждается в визуальном отображении данных в календаре событий. В этом случае модуль «Календарь» выступает как универсальное приложение в отображении этих данных.

Принцип работы модуля «Календарь» следующий:

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

Теперь, когда определены типы календарных событий, можно приступать к отображению самих событий в календаре.

Порядок таков. Виджет запрашивает сервер вернуть ему календарные события, передав ему в параметрах необходимый временной период и список типов этих событий. Сервер, проходя по списку типов, запрашивает модуль, указанный в типе события, на предмет формирования списка календарных событий. Формирует этот список и возвращает клиенту.

Далее виджет отображает список календарный событий в единой форме. Но, когда происходит создание и редактирование календарного события, вызывается редактор, описанный в соответствующем типе этого календарного события.

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

Пример описания типа календарного события можно просмотреть в компоненте calenapi модуля «Календарь».

 В процессе доработки модуля «Календарь» часть функционала будет меняться, но основная концепция на текущий момент является наиболее эффективной и каким либо глобальным изменениям подвержена не будет.

Дистрибутивы с выходом этой версии модуля на сайте не обновлены. Если вы планируется установить эту версию модуля из репозитария до выхода обновленных дистрибутивов, не забудьте обновить ядро и  зависимый модуль widget

Если на сайте установлен модуль менеджера задач, его так же нужно будет обновить из репозитария.

Будут вопросы, пишите в комментариях.

0
03 Октября 2011, 23:40