EventAggregator

README.txt

353:9286eac9fc72
2013-05-01 Paul Boddie Added usage of resource-level metadata for remote calendars where essential properties may be missing from event records.
     1 Introduction
     2 ------------
     3 
     4 The EventAggregator macro for MoinMoin can be used to display event calendars
     5 or listings which obtain their data from pages belonging to specific
     6 categories (such as CategoryEvents) or from remote event sources. The start
     7 and end dates are read from the page describing each event, and the calendar
     8 is automatically filled out with the details of each event, colouring each
     9 event period in a specially generated colour. Maps showing event locations are
    10 also supported, given the availability of appropriate map images and location
    11 information.
    12 
    13 The EventAggregatorSummary action can be used to provide iCalendar and RSS
    14 summaries of event data based on pages belonging to specific categories, as
    15 described above. The category, start and end parameters are read directly from
    16 the request as URL or form parameters: these restrict the extent of each
    17 generated summary.
    18 
    19 The EventAggregatorNewEvent action can be used to conveniently create new
    20 event pages, displaying a simple form which can be filled out in order to
    21 provide elementary event details such as the event title or summary, the
    22 categories to which the page will be assigned, and the start and end dates of
    23 the event.
    24 
    25 The eventfeed script can be used to import events from RSS feeds, inserting
    26 new pages into a Wiki.
    27 
    28 Important Notices
    29 -----------------
    30 
    31 In release 0.10, the EventAggregatorSupport module has been converted into a
    32 package. Upon upgrading, it may be necessary to locate the source and compiled
    33 module files (EventAggregatorSupport.py and EventAggregatorSupport.pyc) and
    34 remove them. Otherwise, these files may disrupt the functioning of the newly-
    35 installed software.
    36 
    37 In release 0.9, much of the common support code has been moved to the
    38 MoinSupport distribution, thus introducing that distribution as a dependency
    39 which must be installed for EventAggregator to work. See the documentation
    40 regarding dependencies for further details.
    41 
    42 Release 0.8.4 fixes time zone offset calculations for time regimes west of the
    43 prime meridian.
    44 
    45 Release 0.8.3 fixes end dates in events aggregated from remote iCalendar
    46 sources.
    47 
    48 Release 0.7.1 restores MoinMoin 1.9.x compatibility which was accidentally
    49 lost in the 0.7 release.
    50 
    51 Release 0.6.2 fixes various bugs in HTML production done by the actions. It is
    52 strongly recommended to upgrade from earlier versions to this or a later
    53 release.
    54 
    55 In release 0.6.2, support for MoinMoin 1.5.x has been dropped. Since usage of
    56 the Xapian search software is practically a necessary part of deploying this
    57 solution, and yet Xapian only became integrated with MoinMoin from version 1.6
    58 onwards, few deployments should have involved MoinMoin 1.5.x.
    59 
    60 In release 0.6, support for event times has been introduced. Due to the
    61 complicated nature of times, time zones, time regimes, and so on, the
    62 behaviour of the software may change in future versions to support common
    63 use-cases in a more convenient fashion. Please be aware that implicitly chosen
    64 or generated time or time zone information may change for events, particularly
    65 those whose times are ambiguous or ill-defined. It is highly recommended that
    66 the pytz library be installed - see the documentation regarding dependencies
    67 for more information.
    68 
    69 In release 0.5, the "download this calendar" and "subscribe to this calendar"
    70 links have been fixed to return only events within the specified period and to
    71 work with day- and month-relative calendars. Users who have bookmarks in their
    72 Web browser or feed reader should replace these bookmarks by visiting the
    73 bookmarked page and acquiring new versions of these links, once
    74 EventAggregator has been upgraded.
    75 
    76 Installation
    77 ------------
    78 
    79 To install the support library and MoinMoin-related scripts, consider using
    80 the moinsetup tool. See the "Recommended Software" section below for more
    81 information.
    82 
    83 With moinsetup and a suitable configuration file, the installation is done as
    84 follows with $EADIR referring to the EventAggregator distribution directory
    85 containing this README.txt file:
    86 
    87   python moinsetup.py -f moinsetup.cfg -m install_extension_package $EADIR
    88   python moinsetup.py -f moinsetup.cfg -m install_actions $EADIR/actions
    89   python moinsetup.py -f moinsetup.cfg -m install_macros $EADIR/macros
    90   python moinsetup.py -f moinsetup.cfg -m install_parsers $EADIR/parsers
    91   python moinsetup.py -f moinsetup.cfg -m install_theme_resources $EADIR
    92   python moinsetup.py -f moinsetup.cfg -m edit_theme_stylesheet screen.css event-aggregator.css
    93   python moinsetup.py -f moinsetup.cfg -m edit_theme_stylesheet print.css event-aggregator.css
    94   python moinsetup.py -f moinsetup.cfg -m edit_theme_stylesheet print.css event-aggregator-print.css
    95 
    96 The first command above uses the setup.py script provided as follows:
    97 
    98   python setup.py install --prefix=path-to-moin-prefix
    99 
   100 The second, third and fourth commands install the actions, macros and parsers
   101 respectively.
   102 
   103 The fifth command installs the theme resources in the available theme
   104 directories.
   105 
   106 The remaining commands activate the styles provided by EventAggregator by
   107 editing the screen.css and print.css files which are typically provided by
   108 themes. These commands add imports of the following form to the theme
   109 stylesheets:
   110 
   111   @import "event-aggregator.css";
   112 
   113 Additional Installation Tasks
   114 -----------------------------
   115 
   116 See the "Dependencies" section below for details of the software featured in
   117 this section.
   118 
   119 EventAggregator depends on MoinSupport having been installed. This is because
   120 a lot of useful functionality common to a number of MoinMoin extensions now
   121 resides in the MoinSupport distribution.
   122 
   123 The following command can be run with $MSDIR referring to the MoinSupport
   124 distribution directory:
   125 
   126   python moinsetup.py -f moinsetup.cfg -m install_extension_package $MSDIR
   127 
   128 To support iCalendar summary production for calendars as well as the
   129 capability of aggregating iCalendar format event sources, the vContent
   130 software needs to be obtained and installed.
   131 
   132 The following command can be run with $VCDIR referring to the vContent
   133 distribution directory:
   134 
   135   python moinsetup.py -f moinsetup.cfg -m install_extension_package $VCDIR
   136 
   137 In each case, the install_extension_package method merely runs the setup.py
   138 script provided by the software concerned, installing the software under the
   139 configured installation "prefix".
   140 
   141 Useful Pages
   142 ------------
   143 
   144 The pages directory contains a selection of useful pages using a syntax
   145 appropriate for use with MoinMoin 1.6 or later. These pages can be created
   146 through the Wiki and their contents copied in from each of the files. An
   147 easier installation method is to issue the following commands:
   148 
   149   python moinsetup.py -f moinsetup.cfg -m make_page_package $EADIR/pages pages.zip
   150   python moinsetup.py -f moinsetup.cfg -m install_page_package pages.zip
   151 
   152 You may need to switch user in order to have sufficient privileges to copy the
   153 page package into the Wiki. For example:
   154 
   155   sudo -u www-data python moinsetup.py -f moinsetup.cfg -m install_page_package pages.zip
   156 
   157 Resource Pages
   158 --------------
   159 
   160 For the map view, some resource pages are provided with EventAggregator.
   161 Unlike the help pages which are most likely to be left unedited, the resource
   162 pages should be modified and updated with additional map and place details.
   163 Consequently, upgrading these pages is not necessarily desirable when new
   164 releases of EventAggregator are made available, and thus these pages are kept
   165 separate from the help pages.
   166 
   167 To install the resource pages, use the following commands:
   168 
   169   python moinsetup.py -f moinsetup.cfg -m make_page_package $EADIR/resource_pages resource_pages.zip
   170   python moinsetup.py -f moinsetup.cfg -m install_page_package resource_pages.zip
   171 
   172 You may need to switch user in order to have sufficient privileges to copy the
   173 page package into the Wiki. For example:
   174 
   175   sudo -u www-data python moinsetup.py -f moinsetup.cfg -m install_page_package resource_pages.zip
   176 
   177 Using the Macro
   178 ---------------
   179 
   180 It should now be possible to edit pages and use the macro as follows:
   181 
   182   <<EventAggregator(CategoryEvents)>>
   183 
   184 As arguments to the macro, you must indicate a comma-separated list of
   185 categories to be inspected for event data. For example:
   186 
   187   <<EventAggregator(CategoryEvents,CategoryTraining)>>
   188 
   189 By default, this should display a calendar in a collection of tables, one for
   190 each month containing events. To show a collection of month-by-month listings,
   191 use the 'mode' argument as follows:
   192 
   193   <<EventAggregator(CategoryEvents,mode=list)>>
   194 
   195 To use remote event sources instead of categories in the Wiki, specify each
   196 source using explicit source parameters:
   197 
   198   <<EventAggregator(source=GriCal,source=FSFE)>>
   199 
   200 This will aggregate events from the GriCal and FSFE calendars residing on
   201 remote Web sites, provided that these sources have been defined in the event
   202 sources dictionary.
   203 
   204 To use a search pattern, use the search parameter and specify the search
   205 criteria just as you would when using the standard search macros:
   206 
   207   <<EventAggregator(search="title:MonthCalendarEvents/")>>
   208 
   209 This will aggregate events found on subpages of the MonthCalendarEvents page.
   210 
   211 See pages/HelpOnEventAggregator for more detailed information.
   212 
   213 Using the Actions
   214 -----------------
   215 
   216 To obtain an iCalendar summary, the EventAggregatorSummary action can be
   217 selected from the actions menu on any page. Alternatively, a collection of
   218 parameters can be specified in the URL of any Wiki page.
   219 
   220 See pages/HelpOnEventAggregatorSummary for more detailed information.
   221 
   222 To create new events using the EventAggregatorNewEvent action, the appropriate
   223 menu entry can be selected in the actions menu. Alternatively, clicking on a
   224 day number in a calendar view will invoke the action and pre-fill the form
   225 with the start date set to the selected day from the calendar.
   226 
   227 See pages/HelpOnEventAggregatorNewEvent for more detailed information.
   228 
   229 Running the Scripts
   230 -------------------
   231 
   232 Note that remote event sources are likely to be more useful than the scripts
   233 described below. However, these scripts may be useful for certain kinds of
   234 application.
   235 
   236 To import events from an RSS feed, the eventfeed script integrated with the
   237 moin program can be used as follows:
   238 
   239 moin --config-dir=path-to-wiki --wiki-url=example.com/ \
   240     import eventfeed --url=url-of-events-feed
   241 
   242 Thus, to import events from the FSFE events RSS feed, the following command
   243 could be used:
   244 
   245 moin --config-dir=path-to-wiki --wiki-url=example.com/ \
   246     import eventfeed --url=http://www.fsfe.org/events/events.en.rss
   247 
   248 If this command is being used with sudo, make sure to use the -u option so
   249 that the script can operate as the appropriate user. For example:
   250 
   251 sudo -u www-data moin --config-dir=path-to-wiki --wiki-url=example.com/ \
   252     import eventfeed --url=http://www.fsfe.org/events/events.en.rss
   253 
   254 It may also be necessary to set PYTHONPATH directly before the moin program
   255 name and even to explicitly use the path to that program.
   256 
   257 Recommended Software
   258 --------------------
   259 
   260 See the "Dependencies" section below for essential software.
   261 
   262 The moinsetup tool is recommended for installation since it aims to support
   263 all versions of MoinMoin that are supported for use with this software.
   264 
   265 See the following page for information on moinsetup:
   266 
   267 http://moinmo.in/ScriptMarket/moinsetup
   268 
   269 The Xapian search software is highly recommended, if not technically
   270 essential, for the acceptable performance of the EventAggregator macro since
   271 the macro makes use of search routines in MoinMoin that can dominate the time
   272 spent processing requests.
   273 
   274 See the following page for information on Xapian and MoinMoin:
   275 
   276 http://moinmo.in/HelpOnXapian
   277 
   278 Troubleshooting: Categories
   279 ---------------------------
   280 
   281 See here for a bug related to category recognition:
   282 
   283 http://moinmo.in/MoinMoinBugs/1.7TemplatesNotAppearing
   284 
   285 This affects installations where migrations between versions have occurred,
   286 yet the Wiki configuration retains old regular expression details.
   287 
   288 Troubleshooting: Xapian
   289 -----------------------
   290 
   291 Xapian can be troublesome, especially where file permissions are concerned: if
   292 something acquires a lock on the index (for example, the moin script, possibly
   293 invoked via moinsetup) nothing else will be able to modify the index, and this
   294 may cause pages to become detached from their categories in the index.
   295 
   296 To resolve index issues, try and run the following command (with the appropriate
   297 options):
   298 
   299 moin --config-dir=path-to-wiki --wiki-url=example.com/ index build --mode=rebuild
   300 
   301 It may be necessary to manually remove locks. This can be done as follows:
   302 
   303 find path-to-wiki/data/cache/xapian -depth -name "*lock" -type d -exec rmdir '{}' \;
   304 
   305 Troubleshooting: Plain Text Formatting
   306 --------------------------------------
   307 
   308 Plain text formatting is used in certain places in EventAggregator, but the
   309 formatter is rather broken in MoinMoin 1.8 and in previous releases. See the
   310 following page for a summary:
   311 
   312 http://moinmo.in/FeatureRequests/TextPlainFormatterRewrite
   313 
   314 A patch is supplied in the patches directory to fix link formatting in the
   315 plain text formatter, and once copied into the root directory of the MoinMoin
   316 1.8 sources it can be applied as follows:
   317 
   318 patch -p1 < patch-plain-text-link-formatting-1.8.diff
   319 
   320 Contact, Copyright and Licence Information
   321 ------------------------------------------
   322 
   323 See the following Web pages for more information about this work:
   324 
   325 http://moinmo.in/MacroMarket/EventAggregator
   326 http://moinmo.in/ActionMarket/EventAggregator
   327 
   328 The author can be contacted at the following e-mail address:
   329 
   330 paul@boddie.org.uk
   331 
   332 Copyright and licence information can be found in the docs directory - see
   333 docs/COPYING.txt and docs/LICENCE.txt for more information.
   334 
   335 Dependencies
   336 ------------
   337 
   338 EventAggregator has the following basic dependencies:
   339 
   340 Packages                    Release Information
   341 --------                    -------------------
   342 
   343 MoinSupport                 Tested with 0.2
   344                             Source: http://hgweb.boddie.org.uk/MoinSupport
   345 
   346 vContent                    Tested with 0.2
   347                             Source: http://hgweb.boddie.org.uk/vContent
   348 
   349 pytz                        Tested with 2007k (specifically 2007k-0ubuntu2)
   350                             Source: http://pytz.sourceforge.net/
   351 
   352 If time zone handling is not required, pytz need not be installed, but this
   353 may result in iCalendar summaries being produced that provide insufficient
   354 time zone information for the correct interpretation of time information in
   355 those summaries. Thus, it is highly recommended that pytz be installed.
   356 
   357 New in EventAggregator 0.10 (Changes since EventAggregator 0.9)
   358 ---------------------------------------------------------------
   359 
   360   * Fixed quoting of special date parameters in navigation URLs and download
   361     dialogue URLs.
   362   * Fixed the resolution of whole calendar download/subscription links in day
   363     views.
   364   * Changed iCalendar serialisation to use the vContent library, making
   365     vContent a requirement of this software.
   366   * Refactored the library, replacing the support module with a package
   367     containing separate modules for the different library activities.
   368 
   369 New in EventAggregator 0.9 (Changes since EventAggregator 0.8.5)
   370 ----------------------------------------------------------------
   371 
   372   * Moved much of the support library to the MoinSupport distribution, thus
   373     introducing a dependency on that software.
   374   * Added support for in-page updates of the event views so that navigation
   375     between days, months and different views does not cause a full-page
   376     reload if JavaScript is enabled.
   377   * Tidied up the new event form, showing a list of known locations for
   378     selection, making the event location affect the chosen time zone/regime if
   379     the location is known, and hiding latitude and longitude fields unless an
   380     unknown location is to be specified.
   381   * The EventLocationsDict or equivalent can now retain time zone/regime
   382     information about each location.
   383   * Added an event parser that can format special page regions in different
   384     ways and support links directly to such regions.
   385   * Permitted Wiki markup in the description and location metadata.
   386   * Added support for search patterns so that event pages can be obtained
   387     through arbitrary searches and do not have to belong to particular
   388     categories.
   389   * Encoded map location pop-up headings as plain text in order to handle
   390     locations specified using Wiki formatting.
   391   * Permitted events with map references but without location details to be
   392     positioned in maps.
   393   * Improved navigation between months and days, and between view modes for
   394     both levels of calendar view.
   395 
   396 New in EventAggregator 0.8.5 (Changes since EventAggregator 0.8.4)
   397 ------------------------------------------------------------------
   398 
   399   * Fixed iCalendar quoting for newlines in calendar data.
   400 
   401 New in EventAggregator 0.8.4 (Changes since EventAggregator 0.8.3)
   402 ------------------------------------------------------------------
   403 
   404   * The calculation of hour and minute offsets for time regimes west of the
   405     prime meridian was not producing correct results since the day offset
   406     provided by pytz was not being considered in the calculation. Such regimes
   407     should now produce the expected (hour, minute) offsets such that events
   408     employing these regimes can be positioned correctly on a UTC timescale.
   409 
   410 New in EventAggregator 0.8.3 (Changes since EventAggregator 0.8.2)
   411 ------------------------------------------------------------------
   412 
   413   * The end dates defined in events from remote iCalendar event sources were
   414     not correctly adjusted when aggregating such events. Thus, events with a
   415     day-level resolution will have appeared one day longer in calendars and
   416     summaries than was actually specified in the source data. This adjustment
   417     has now been introduced.
   418 
   419 New in EventAggregator 0.8.2 (Changes since EventAggregator 0.8.1)
   420 ------------------------------------------------------------------
   421 
   422   * Improved the error handling around remote event source data retrieval,
   423     introducing handling of missing resources and unsupported content types.
   424   * Improved the presentation of download and subscription links, adding
   425     webcal: URL links for suitable calendar clients.
   426 
   427 New in EventAggregator 0.8.1 (Changes since EventAggregator 0.8)
   428 ----------------------------------------------------------------
   429 
   430   * Changed the EventAggregatorNewEvent action to not save new event pages
   431     directly, instead invoking the textual page editor for the page so that
   432     the page text can be changed and the page saved without a redundant
   433     initial version being created. Cancelling the editing operation will also
   434     avoid the creation of unwanted event pages.
   435   * Added a page break before each map in the print view, adding a page break
   436     after each map to fully isolate unpositioned events on separate pages.
   437   * Fixed errors where empty location fields were given in vCalendar events.
   438   * Reintroduced event sorting in the list and table views.
   439   * Fixed location positioning where some events employing an unknown location
   440     do not position that location whereas others do (using "geo" information).
   441 
   442 New in EventAggregator 0.8 (Changes since EventAggregator 0.7.1)
   443 ----------------------------------------------------------------
   444 
   445   * Added remote event aggregation with support for iCalendar event sources.
   446   * Added support for explicit latitude and longitude event properties.
   447   * Added support for decimal latitude and longitude values.
   448   * Introduced in-page updates of the new event form, avoiding full-page
   449     reloads when editing the initial details of an event.
   450 
   451 New in EventAggregator 0.7.1 (Changes since EventAggregator 0.7)
   452 ----------------------------------------------------------------
   453 
   454   * Restored MoinMoin 1.9.x compatibility around WikiDict access.
   455 
   456 New in EventAggregator 0.7 (Changes since EventAggregator 0.6.4)
   457 ----------------------------------------------------------------
   458 
   459   * Added a day view which shows events ordered according to their timespans
   460     within each day.
   461   * Added a map view which shows events according to their location. This
   462     requires map images to be uploaded to a designated page, and map locations
   463     to be defined on a designated page.
   464   * Switched to using moinsetup for the installation procedure.
   465   * Introduced formatting of description, location and topic information in
   466     the list and table views and in RSS format summaries.
   467   * Introduced support for days as calendar period units in the list view.
   468   * Added "Help" and "New event" links alongside the calendar view controls,
   469     giving the download and view controls centre alignment.
   470 
   471 New in EventAggregator 0.6.4 (Changes since EventAggregator 0.6.3)
   472 ------------------------------------------------------------------
   473 
   474   * Fixed pop-up element labels where one limit of a calendar has not been
   475     specified.
   476 
   477 New in EventAggregator 0.6.3 (Changes since EventAggregator 0.6.2)
   478 ------------------------------------------------------------------
   479 
   480   * Fixed category membership parsing.
   481   * Fixed open-ended calendars and their pop-up summaries.
   482 
   483 New in EventAggregator 0.6.2 (Changes since EventAggregator 0.6.1)
   484 ------------------------------------------------------------------
   485 
   486   * Fixed HTML encoding in the forms generated by the actions.
   487   * Dropped MoinMoin 1.5.x support, since Xapian search is not available for
   488     that version and is virtually a necessity.
   489   * Fixed form handling to be compatible with MoinMoin 1.9.x, since that
   490     particular release series introduced an incompatible request API that
   491     breaks existing code (no longer providing access to query string
   492     parameters via the form attribute, and only returning single values
   493     unless the new getlist method on form-like objects is used).
   494   * Fixed the direct writing of requests to be compatible with MoinMoin 1.9.
   495   * Added pop-up elements showing information about the calendar/view
   496     resources available for download or subscription.
   497   * Added download/subscription links which open the form associated with the
   498     EventAggregatorSummary action and permit editing of the supplied values.
   499 
   500 New in EventAggregator 0.6.1 (Changes since EventAggregator 0.6)
   501 ----------------------------------------------------------------
   502 
   503   * Fixed HTML encoding in the forms generated by the actions.
   504 
   505 New in EventAggregator 0.6 (Changes since EventAggregator 0.5)
   506 --------------------------------------------------------------
   507 
   508   * Added print stylesheet rules in order to improve the printed versions of
   509     calendars.
   510   * Fixed definition list parsing to handle completely empty definitions
   511     (having no space after the "::" token) which previously captured text from
   512     subsequent lines, and merely empty definitions which previously would have
   513     produced a single empty value for definitions providing lists of values.
   514   * Added a script to import events from RSS feeds.
   515   * Added support for a link entry in event pages, although this does not
   516     replace the link information provided by the RSS and iCalendar summaries.
   517   * Fixed the production of the summaries when pages with no available edit
   518     log information are to be included.
   519   * Added support for event times and time zone/regime information. This is
   520     subject to revision.
   521 
   522 New in EventAggregator 0.5 (Changes since EventAggregator 0.4)
   523 --------------------------------------------------------------
   524 
   525   * Changed the EventAggregatorNewEvent action to substitute only the stated
   526     title, not the full page title, into the new page.
   527   * Changed event colouring to use the event summary as the basis for
   528     calculating the colour used in the calendar. This means that related
   529     events can be coloured identically if their summaries are the same.
   530   * Added support for multiple events on a single event page.
   531   * Introduced EventPage and Event abstractions in order to better support new
   532     features.
   533   * Introduced basic and advanced modes to the EventAggregatorNewEvent action,
   534     along with date swapping to correct cases where the start is given as
   535     being later than the end of an event.
   536   * Fixed the "download this calendar" and "subscribe to this calendar" links
   537     by propagating the "raw" calendar start and end values within the macro.
   538     These links should yield events only within the period defined for a
   539     calendar, not all events in a calendar's categories. This fix also ensures
   540     that the links for year- and month-relative calendars are correct, rather
   541     than the specific links generated previously. Thus, a "this year's events"
   542     link will now continue to produce a resource with the current year's
   543     events, rather than the events from the year when the link was generated.
   544 
   545 New in EventAggregator 0.4 (Changes since EventAggregator 0.3)
   546 --------------------------------------------------------------
   547 
   548   * Added a table view in the macro, using special topic/category styles to
   549     provide background colours for events.
   550   * Added category propagation from calendars to the new event form provided
   551     by the EventAggregatorNewEvent action.
   552   * Added a default template parameter to the macro, employed by the new event
   553     form.
   554   * Added a parent page parameter which is used by the new event form to place
   555     new event pages in a particular location specific to a calendar or
   556     collection of events.
   557   * Improved the presentation of pop-up event information elements.
   558   * Added navigation between display modes (calendar, list and table views).
   559   * Ensured that calendar settings are retained when creating new events for a
   560     calendar.
   561   * Fixed various problems with events not having topics.
   562 
   563 New in EventAggregator 0.3 (Changes since EventAggregator 0.2)
   564 --------------------------------------------------------------
   565 
   566   * Added a parameter to the EventAggregatorSummary action to select the
   567     source of event descriptions for the RSS feed.
   568   * Updated the documentation to cover the RSS support.
   569   * Added the EventAggregatorNewEvent action.
   570 
   571 New in EventAggregator 0.2 (Changes since EventAggregator 0.1)
   572 --------------------------------------------------------------
   573 
   574   * Improved the calendar view in the macro to use the fixed table layout
   575     algorithm and to provide cells spanning potentially many columns for
   576     continuing events. Introduced pop-up elements in order to show truncated
   577     event names.
   578   * Made the "weekly" naming policy the default in the calendar view.
   579   * Improved the list view in the macro.
   580   * Introduced RSS 2.0 feed support.
   581   * Improved the help pages. 
   582 
   583 Release Procedures
   584 ------------------
   585 
   586 Update the EventAggregatorSupport.py __version__ attribute and the setup.py
   587 version details.
   588 Change the version number and package filename/directory in the documentation.
   589 Update the setup.py and PKG-INFO files.
   590 Update the release notes (see above).
   591 Tag, export.
   592 Archive, upload.
   593 Update the MacroMarket and ActionMarket (see above for the URLs).