[PLIP-Advisories] [Plone development workspace] #10886: plone.app.event - new eventtype for plone
Change notifications for Plone PLIPs on Trac.
plone-plip-advisories at lists.plone.org
Wed Apr 11 12:24:24 UTC 2012
#10886: plone.app.event - new eventtype for plone
-----------------------------+------------------------------------
Reporter: thet | Owner: thet
Type: PLIP | Status: confirmed
Priority: major | Milestone: 4.3
Component: Infrastructure | Version: 4.1
Resolution: | Keywords: event, recurring, date
-----------------------------+------------------------------------
Description changed by thet:
Old description:
> '''Proposer:''' Johannes Raggam[[BR]]
> '''Seconder:''' None as yet[[BR]]
> [[BR]]
> == Motivation ==
> The current event type is in need of a major overhaul. The intention of
> this PLIP is to provide a new event engine by a major refactoring and
> reimplementation:
>
> * [a] Encapsulation and independence: All event related code should
> reside in a seperate package (splitted into other packages, where
> appropriate). Plone should be least dependend on plone.app.event. Best
> would be that one can deinstall this feature completly.
> * [b] Archetypes and Dexterity awareness: plone.app.event should
> provide the ATEvent content type (factored out from ATContentTypes) and
> also Dexterity behaviors, which can be used in Dexterity types.
> * [c] Standards compliancy: the iCalendar / RFC5545 standard is
> wonderful flexible, so plone.app.event should provide support for it by
> allowing ical exports. This is also available for the current
> ATContentType based implementation, but plone.app.event aims to improve
> it. Sometime it might also support iCalendar import and Plone could also
> act as a caldav server.
> * [d] Recurring events support based on the RFC5545 standard.
> * [e] A modern dateinput widget.
> * [f] Features like whole-day-events.
> * [g] Timezone support.
>
> == Proposal & Implementation ==
>
> Encapsulation and independence: plone.app.event provides the Archetypes
> based type and the Dexterity behaviors via two other subpackages in that
> package: at and dx. Based on installed features (Products.ATContentTypes
> or plone.dexterity, respectively), eather of those subpackages are
> included via the zcml:condition statement. The calendar and event
> portlets were moved from plone.app.portlets into plone.app.event, where
> they belong semantically - thus improving encapsulation and independence.
> The calendar portlet was completly refactored. The functionality of the
> CalendarTool (portal_calendar) was reimplenented. Important settings from
> the calendar-controlpanel are now available in the event configlet. Since
> the calendar portlet was the only consumer of the CalendarTool, the
> CalendarTool, the calendar controlpanel and the dependency to
> Products.CMFCalendar can be dropped. The new plone.formwidget.datetime
> implements archetypes and z3cform based widgets, so the old datetime
> widget can be dropped. Python-dateutil provides recurrence calculations
> based on the RFC5545 standard - plone.formwidget.recurrence provides a
> awidget for recurrence and Products.DateRecurringIndex an appropriate
> index as a drop-in replacement for Zope's DateIndex. The iCalendar
> package was improved and is now used for plone.app.event to provide
> icalendar serialization. The timezone support is based on the pytz
> package. Plone has to define a portal timezone now and every event can
> define another timezone, if wished. User timezones are planned. Whole day
> events get their starttime set to 0:00 and endtime set to 23:59:59 -
> thats should be feasable in most cases (excluding any scientific
> events...).
>
> == Deliverables ==
>
> * plone.app.event: ATEvent, DX behavior, Configlets, iCal export,
> timezone support, util functions.
> * plone.event: Recurrence calculations, util functions, base timezone
> support. Might be dropped, if we decide to provide everything in
> plone.app.event.
> * Products.DateRecurringIndex: Drop in replacement for DateIndex with
> recurrence support. Every occurence of an event gets an index entry, so
> events for a specific date range can easily be searched.
> * plone.formwidget.datetime: Datetime widgets for Archetypes and
> z3cform based on JQuery utils Dateinput.
> * plone.formwidget.recurrence: Recurrence widget, which generates an
> RFC5545 compatible recurrence definition string.
> * icalendar: iCalendar serialization/deserialization library.
>
> Plone.app.event adapted branches of core packages:
> * Products.CMFPlone
> * Products.ATContentTypes
> * plone.app.portlets
> * Products.PloneTestCase (not needed, if Plone drop's its dependency
> on it)
>
> == Risks ==
>
> * Third party packages which rely on ATCT internals may break
> (although ATCT should still provide BBB imports from plone.app.event).
> * Third party packages which rely on portal_calendar may break.
>
> == Progress ==
> See: https://github.com/collective/plone.app.event/blob/master/TODO.rst
>
> == Code ==
>
> Use: https://github.com/collective/plone.app.event
>
> For the other packages, look into:
> https://github.com/collective/plone.app.event/blob/master/sources-ro.cfg
>
> For the PLIP buildout, use:
> https://github.com/plone/buildout.coredev/blob/4.2/plips/plip10886-event-
> improvements.cfg
>
> == Notes ==
>
> This PLIP is an update of http://dev.plone.org/plone/ticket/9302
>
> Sprints, where plone.app.event was developed:
> * Snowsprint 2007, Vorarlberg, Austria (Dateable, a predecessor of
> plone.app.event).
> * Cathedral 2010 sprint, Cologne, Germany (start of the package
> plone.app.event based on vs.event and ATEvent).
> * DZUG Tagung 2010, Dresden, Germany.
> * Plone Conference 2010 Bristol, United Kingdom.
> * Artsprint 2011 Vienna, Austria.
> * Buschenschanksprint 2011, Berghausen, Austria.
> * BarSprint 2011, Ljubljana, Slovenia.
New description:
'''Proposer:''' Johannes Raggam[[BR]]
'''Seconder:''' None as yet[[BR]]
[[BR]]
== Motivation ==
The current event type is in need of a major overhaul. The intention of
this PLIP is to provide a new event engine by a major refactoring and
reimplementation:
* [a] Encapsulation and independence: All event related code should
reside in a seperate package (splitted into other packages, where
appropriate). Plone should be least dependend on plone.app.event. Best
would be that one can deinstall this feature completly.
* [b] Archetypes and Dexterity awareness: plone.app.event should
provide the ATEvent content type (factored out from ATContentTypes) and
also Dexterity behaviors, which can be used in Dexterity types.
* [c] Standards compliancy: the iCalendar / RFC5545 standard is
wonderful flexible, so plone.app.event should provide support for it by
allowing ical exports. This is also available for the current
ATContentType based implementation, but plone.app.event aims to improve
it. Sometime it might also support iCalendar import and Plone could also
act as a caldav server.
* [d] Recurring events support based on the RFC5545 standard.
* [e] A modern dateinput widget.
* [f] Features like whole-day-events.
* [g] Timezone support.
== Proposal & Implementation ==
Encapsulation and independence: plone.app.event provides the Archetypes
based type and the Dexterity behaviors via two other subpackages in that
package: at and dx. Based on installed features (Products.ATContentTypes
or plone.dexterity, respectively), eather of those subpackages are
included via the zcml:condition statement. The calendar and event portlets
were moved from plone.app.portlets into plone.app.event, where they belong
semantically - thus improving encapsulation and independence. The calendar
portlet was completly refactored. The functionality of the CalendarTool
(portal_calendar) was reimplenented. Important settings from the calendar-
controlpanel are now available in the event configlet. Since the calendar
portlet was the only consumer of the CalendarTool, the CalendarTool, the
calendar controlpanel and the dependency to Products.CMFCalendar can be
dropped. The new plone.formwidget.datetime implements archetypes and
z3cform based widgets, so the old datetime widget can be dropped. Python-
dateutil provides recurrence calculations based on the RFC5545 standard -
plone.formwidget.recurrence provides a awidget for recurrence and
Products.DateRecurringIndex an appropriate index as a drop-in replacement
for Zope's DateIndex. The iCalendar package was improved and is now used
for plone.app.event to provide icalendar serialization. The timezone
support is based on the pytz package. Plone has to define a portal
timezone now and every event can define another timezone, if wished. User
timezones are planned. Whole day events get their starttime set to 0:00
and endtime set to 23:59:59 - thats should be feasable in most cases
(excluding any scientific events...).
== Deliverables ==
* plone.app.event: ATEvent, DX behavior, Configlets, iCal export,
timezone support, util functions.
* plone.event: Recurrence calculations, util functions, base timezone
support. Might be dropped, if we decide to provide everything in
plone.app.event.
* Products.DateRecurringIndex: Drop in replacement for DateIndex with
recurrence support. Every occurence of an event gets an index entry, so
events for a specific date range can easily be searched.
* plone.formwidget.datetime: Datetime widgets for Archetypes and
z3cform based on JQuery utils Dateinput.
* plone.formwidget.recurrence: Recurrence widget, which generates an
RFC5545 compatible recurrence definition string.
* icalendar: iCalendar serialization/deserialization library.
Plone.app.event adapted branches of core packages:
* Products.CMFPlone
* Products.ATContentTypes
* plone.app.portlets
* Products.PloneTestCase (not needed, if Plone drop's its dependency
on it)
== Risks ==
* Third party packages which rely on ATCT internals may break
(although ATCT should still provide BBB imports from plone.app.event).
* Third party packages which rely on portal_calendar may break.
== Documentation ==
*
https://github.com/collective/plone.app.event/blob/master/docs/overview.rst
* https://github.com/collective/plone.app.event/blob/master/README.rst
* https://github.com/collective/plone.app.event/blob/master/TODO.rst
== Code ==
Use: https://github.com/collective/plone.app.event
For the other packages, look into:
https://github.com/collective/plone.app.event/blob/master/sources.cfg
For the PLIP buildout, use:
https://github.com/plone/buildout.coredev/blob/4.2/plips/plip10886-event-
improvements.cfg
== Notes ==
This PLIP is an update of http://dev.plone.org/plone/ticket/9302
Sprints, where plone.app.event was developed:
* Snowsprint 2007, Vorarlberg, Austria (Dateable, a predecessor of
plone.app.event).
* Cathedral 2010 sprint, Cologne, Germany (start of the package
plone.app.event based on vs.event and ATEvent).
* DZUG Tagung 2010, Dresden, Germany.
* Plone Conference 2010 Bristol, United Kingdom.
* Artsprint 2011 Vienna, Austria.
* Buschenschanksprint 2011, Berghausen, Austria.
* BarSprint 2011, Ljubljana, Slovenia.
* Artsprint 2012 Vienna, Austria.
--
--
Ticket URL: <http://dev.plone.org/ticket/10886#comment:45>
Plone development workspace <https://dev.plone.org/>
Plone Enterprise Content Management System
More information about the PLIP-Advisories
mailing list