Event content type for plone
Plone.app.event is the calendaring implementation for Plone. It provides Event Content Types (Archetypes based as well as Dexterity Behaviors), Timezone support, RFC5545 icalendar export, Recurrence support and a lot more.
The ATContentType and dexterity features are automatically enabled depending on installed packages.
Please set your timezone in the @@event-settings controlpanel. Otherwise there some weired behavior can occur, like you’re apparently unable to set the time for dexterity types not to what you want. For timezone handling, we use pytz.
Installation for Plone 4.2 and 4.3
The current z3c.unconfigure depends on zope.configuration >= 3.8 but Plone 4.2.4 uses zope.configuration 3.7.4. To successfully install plone.app.event with it’s ploneintegration extra, you have to make a version fix in your buildout. Wether fix z3c.unconfigure to 1.0.1 (recommended and included in this buildout) or fix zope.configuration for example to 4.0.2 (not backwards-compatible).
Just run the buildout.cfg, which is included with plone.app.event. There is also a dev.cfg buildout file, which includes the sources of Plone core package branches with integration changes for plone.app.event.
Or include the plone.app.event egg:
eggs += plone.app.event [ploneintegration,archetypes,dexterity]
Last, instal Plone with the “plone.app.event Plone4 integration” profile or depend in Generic Setup in metadata.xml like so:
You can also install optionally or additionally the dexterity profile.
Upgrading from the old ATEvent type is not tested, so don’t rely on this.
Add some events, play with recurrence, whole day events and timezones, try out the calendar and event portlets…
A limitation on recurrence is, that unlimited occurrences are not supported at the moment. The number of possible recurrences of an event is limited to 1000 at the moment, so indexing - and other operations - doesn’t take too long (see: plone.event.recurrence).
This packages and the other listed in sources.cfg are part of the PLIP 10886. See: http://dev.plone.org/plone/ticket/10886
- Report issues: https://github.com/plone/plone.app.event
- Write code and tests.
Please note, allowing pull requests require the signation of the contributor agreement.
- Restore Python 2.6 compatibility by avoiding total_seconds method from timedelta instances in icalendar export. [thet]
- Remove occurrences.html view because it’s replaced by event_listing view. [thet]
- Changed Dexterity event-type title from “Event (DX)” to “Event” for consistent naming between Archetypes and Dexterity content types. [thet]
- Updated and synced translations (.pot and German translations). [thet]
- Use content-core fill/define metal definitions in all templates which use main_template’s master macro. [thet]
- Calendar Portlet: Better portlet and tooltip styling. Drop usage of todayevent and todaynoevent classes. Fix Linking to calendar_listing. [thet]
- Event listing: Optimized layout and styles, mode switch, calendar-navigation, timespan header. [thet]
- Implement week and month mode for start_end_from_mode function. [thet]
- Add icalendar timezone support and properly export whole day events. Fixes #22, Fixes #71. [thet]
- Don’t set icon_expr for the Dexterity content type and use css instead. [thet]
- Restore compatibility to Plone 4.3 by including the ploneintegration module also for Plone 4.3 but not 4.4. [thet]
- Version fix for z3c.unconfigure==1.0.1. This fix can be removed, once Plone depends on zope.configuration>=3.8. [thet]
- Add icon_export_ical.png from Products.ATContentTypes to plone.app.event. [thet]
- Configure first_day parameter for DateTime and Recurrence Widget (AT and DX). [thet]
- Configure the default_view of plone.app.event’s ATEvent to be @@event_view. This prevents of referencing the old event_view from the plone_content skin layer to be used in some cases. [thet]
- Style the calendar portlet tooltips only for the calendar portlet. [thet]
- Set the CalendarLinkbase urlpath to respect the search_base in calendar and event portlets. [thet]
- Depend on plone.app.portlets >= 2.4.0, since portlet_calendar needs the render_portlet view for it’s ajaxification. This may break Plone 4.2 integrations, until you make a buildout version fix. [thet]
- Remove dependency on Grok for the Dexterity behaviors. [thet]
- Just use classes instead of id’s for the calendar portlet’s page switcher. [thet]
- Reimplement the calendar page switcher from the calendar portlet with jQuery and remove the implicit dependency on KSS. [thet]
- Use event_listing instead of the search view in CalendarLinkbase for calendar and event portlets. [thet]
- Add new API functions:
- date_speller to format a date in a readable manner,
- start_end_from_mode to return start and end date accordin to a mode string (today, past, future, etc.),
- dt_start_of_day and dt_end_of_day to set a date to the start of the day (00:00:00) and to the end of the day (23:59:59) for use in searches.
- Add new event_listing view to show previous, upcoming, todays and other events in a listing. [thet]
- Fix EventAccessor for ATEvent to correctly return the description. [thet]
- In portlet_calendar, grey-out previous and next month dates by making them transparent. [thet]
- Fix ical export of RDATE and EXDATE recurrence definitions. Fixes #63. [thet]
- Align ATEvent more to Archetypes standards and avoid AnnotationStorage and ATFieldProperty. We needed to remove the ATFieldProperty for the timezone field for a custom setter. By doing so, the other two ATFieldProperties were changed too. This way, the ATEvent API gets more consistent. For a convenient access to ATEvent as well as dextterity based event types, use the IEventAccessor from plone.event.interfaces. Upgrade step from pre 1.0b2 based ATEvent types is provided. [thet]
- Treat start/end datetime input always as localized values. Changing the timezone now doesn’t convert the start/end values to the new zone (AT, DX). [thet]
- Fix moving start/end dates when saving an unchanged DX event (issue #62). [thet]
- Portlet assignment fix. Now both - calendar and event portlet - are installed. [thet]
- Add the calendar portlet by default when installing plone.app.event. [thet]
- Backport changes from “merge plip-10888-kss branch” in plone.app.portlets. KSS attributes still left in place for backwards compatibility. [thet]
- Buildout infrastructure update. [thet]
- Icalendar export of attendees almost according to the RFC5545 standard. At the moment, we do not distinguish between CN and CAL-ADDRESS in Plone, so we just put the attendee value to the CN and CAL-ADDRESS parameter. Fixes #24. [thet]
- Support microseconds for DateTime conversions. For recurrence rules, timezones are not supported due to a python-datetime limitation. [thet]
- Don’t allow ambiguous timezones like ‘CET’, which also have implementation errors in DateTime. Force them to another zone. Timezones should be set explicitly anyways. [thet]
- Let EventOccurrenceAccessor return its own URL instead of its parent. Once again fixes #58. [thet]
- Fix calendar portlet header, which day names were shifted by one day since a incompatibility between the calendar module (0 is Monday) and the strftime function (0 is Sunday). [thet]
- Create an formated_date content provider, which takes an occurrence or event object when called and formats the start/end date and times for display. This content provider can be overridden for other contexts. E.g. the events portlet uses just shows the start date and not the end date. [thet]
- Let IRecurrenceSupport adapter’s occurrences method return as first occurrence the event object itself instead of an Occurrence object. Fixes #58. [thet]
- Include plone.event’s new configure.zcml. [thet]
- For the ATEvent type, use a more specific IATEvent interface with IEvent and P.ATCT’s IATEvent as bases. So we can provide adapters, overriding more general IEvent adapting adapters. [thet]
- Don’t show start occurrence in “More occurrences” section in event_view. [thet]
- Create adapter ICalendarLinkbase which returns links to calendar views and can be overridden through a more specific implementation by addon products. For example, the portlet_calendar and portlet_events links to the @@search view can be changed to URLs to a real calendar view, if one is installed. [thet]
- For portlet_calendar and portlet_events configuration, make the workflow state selection optional. If nothing is selected, all states are searched. [thet]
- Add search_base (select path to search for events) and state (select review state for events to search) to portlet_calendar settings and search_base to portlet_events. [thet]
- Limit the amount of occurrences in the event view if the event yields more than 7 occurrences. Show only 6 occurrences and the last occurrence. [romanofski]
- More minor fixes.
- Don’t force DateTime conversion in query parameters of get_portal_events. The catalog index uses Python’s datetime anyways.
- Only set end date in _prepare_range to next day, if it’s a date and not datetime.
- Register the Archetypes postprocessing event subscribers also for IObjectCreatedEvent.
- Fix #51, logical error with range_end parameter in get_portal_events. [thet]
- Fix test startup by not depending on getSite().translate, which is a filesystem script. [thet]
- Backport changes from davilima: Add safety check for False all_events_links. [davilima6]
- Make get_occurrences_by_date work for events which do not have IRecurrenceSupport (e.g. Dexterity events without the recurrence behavior). [thet]
- Don’t run event handlers for ATEvent, if it doesn’t provide IEvent. [thet]
- Fix utf-8 encoding problem with icalendar export. [rnix]
- Unregister ics_view for ATFolder and ATBTreeFolder as well in ploneintegration. [rnix]
- Workaround for buggy strftime with timezone handling in DateTime. See: https://github.com/plone/plone.app.event/pull/47 [seanupton]
- Rebind portlet_calendar tooltips after ajax calendar reloads. [thet]
- Allow the refreshCalendar kss view also on Occurrence objects. [thet]
- Let portlet_events link to @@search for future and previous events for sites without the standard events folder. [thet]
- Moved docs/HISTORY.rst to CHANGES.txt. [seanupton]
- Calendar portlet search links now use @@search (from plone.app.search) instead of (since Plone 4.2) deprecated ./search (search.pt). Requires recent plone.app.search changes. [seanupton]
- Integrate the plone.app.event-ploneintegration functionality for Plone versions without plone.app.event core integration (all current version) into this package for simplification. [thet]
- IEventSummary behavior added for body text on Dexterity event type, as well as a SearchableText indexer adapter for the Dexterity event type. [seanupton]
- Filter calendar portlet search URLs for each day to a whitelist of event portal_type values. Prevents non-event add-on types with start/end fields from showing up in calendar, as defense against unintended consequences (add-ons could explicitly override this template if they define additional Event types). [seanupton]
- API refactoring: * Move all generic interfaces to plone.event, * Extend IEventAccessor adapters to also be able to set attributes. [thet]
- Copy plonetheme.sunburst styles for the calendar portlet to event.css. This way, the calendar portlet is nicely styled, even without sunburst theme applied. [thet]
- For Dexterity behaviors, use IEventRecurrence adapter to store attributes directly on the context. This fixes that recurrence occurrences start and end dates were not indexed, because the DateRecurringIndex had not access to the recurrence attribute. [thet]
- IRecurrence adapter returns now acquisition-wrapped occurrence objects. [romanofski]
- Event portlet is now showing occurrences, sorted by start date. [romanofski]
- Moved whole_day field in directly after the end date to get a more logical group. [thet]
- Added dedicated timezone validator with fallback zone.
- Added traverser for occurrences. The event view is used to show individual occurrences. [romanofski]
- Broken paging in the calendar portlet has been fixed (#11). [romanofski]
- Make the start DateTime timezone aware and fix an issue where the start date was after the end date. Fixes: #8. [romanofski]
- Add portlet GenericSetup registration for calendar and event portlet. [thet]
- API CHANGE: Use zope.annotation for behaviors, remove unnecessary factories, create IRecurrence adapter for access to occurrences. [thet]
- Initial alpha release. [thet]