#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
_______________________________________________
PLIP-Advisories mailing list
plip-advisor...@lists.plone.org
https://lists.plone.org/mailman/listinfo/plone-plip-advisories

Reply via email to