Использование периодов в Plone: Соединение Людей с Событиями
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