Использование периодов в Plone: Соединение Людей с Событиями

Обзор Plone4ArtistsCalendar «Getting Dates with Plone: Connecting People with Events (Aaron VanDerlip)», ориентированный на интеграторов. Автор: Mark van Lent

Plone4ArtistsCalendar вначале был большим монолитом, теперь, пройдя рефакторинг, имеет более модульный дизайн:

  • dateable.chronos: пользовательский интерфейс (предоставляет различные виды календаря, вызов обработчиков событий, с возможностью повторного использования за пределами p4a);
  • datable.kalends: интерфейсы;
  • p4a.plonecalendar: расширение фреймворка календаря (регистрация папок и типы тем/топиков, для реализации IPossibleCalendar, хуки для импорта/экспорта iCal-каналов)
  • p4a.ploneevents: расширение типа события (осуществляет dateable.kalends. IRecurringEvent, использует schemaextender для добавления поддержки рекуррентности)
  • p4a.subtypes: позволяет добавлять маркер интерфейсов через Plone UI.

После установки Plone4ArtistsCalendar, папки и темы могут быть отмечены как подтипы календаря. И так как коллекции можно также сделать подтипами календаря, то можно отображать только те события, которые принадлежат к категории X.

События Plone не поддерживают рекуррентности. С помощью Plone4ArtistsCalendar Вы можете получить рекуррентность (повторяемость) события, например, каждый день, а не только дату начала и завершения. Практический пример: Вы можете добавить событие «Конференция по Plone», которое начинается в 9 утра и заканчивается в 5 вечера каждый день с 8 по 10 октября, а не разовое мероприятие, начинающееся 8-ого октября, в 9 утра и заканчивающееся 10-ого октября в 5 вечера.

Plone4ArtistsCalendar может также импортировать iCal-файлы из файловой системы  либо по URL-адресу. Чтобы сделать это, добавьте папку, обозначьте ее «календарной», и Вы можете моментально импортировать iCal. Импортируя один и тот же iCal-файл, события не дублируются, так как сохраняется хеширование события. До тех пор, пока событие не изменилось, оно хранится одно. Изменения в событии может привести к дублированию. Заметим, что события не синхронизируются при импорте из URL; импортирование производится только один раз. (Если только Вы не импортируете его снова вручную.)

При наличии интерфейса ICalendarEnhanced, весьма легко, например, добавить viewlet к отображениям календаря. Нет никакой потребности создавать подтип. Может быть достаточно ZCML и шаблона страницы для выполнения этой работы. (В зависимости от сложности контента viewlet).


Оригинал статьи на vlent.nl

Перевод ООО «Комтет» komtet.ru

Вам также может помочь