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). The start and end dates are read from the
7 page describing each event, and the calendar is automatically filled out with
8 the details of each event, colouring each event period in a specially
9 generated colour.
10
11 The EventAggregatorSummary action can be used to provide iCalendar and RSS
12 summaries of event data based on pages belonging to specific categories, as
13 described above. The category, start and end parameters are read directly from
14 the request as URL or form parameters: these restrict the extent of each
15 generated summary.
16
17 The EventAggregatorNewEvent action can be used to conveniently create new
18 event pages, displaying a simple form which can be filled out in order to
19 provide elementary event details such as the event title or summary, the
20 categories to which the page will be assigned, and the start and end dates of
21 the event.
22
23 The eventfeed script can be used to import events from RSS feeds, inserting
24 new pages into a Wiki.
25
26 Important Notices
27 -----------------
28
29 Release 0.6.2 fixes various bugs in HTML production done by the actions. It is
30 strongly recommended to upgrade from earlier versions to this or a later
31 release.
32
33 In release 0.6.2, support for MoinMoin 1.5.x has been dropped. Since usage of
34 the Xapian search software is practically a necessary part of deploying this
35 solution, and yet Xapian only became integrated with MoinMoin from version 1.6
36 onwards, few deployments should have involved MoinMoin 1.5.x.
37
38 In release 0.6, support for event times has been introduced. Due to the
39 complicated nature of times, time zones, time regimes, and so on, the
40 behaviour of the software may change in future versions to support common
41 use-cases in a more convenient fashion. Please be aware that implicitly chosen
42 or generated time or time zone information may change for events, particularly
43 those whose times are ambiguous or ill-defined. It is highly recommended that
44 the pytz library be installed - see the documentation regarding dependencies
45 for more information.
46
47 In release 0.5, the "download this calendar" and "subscribe to this calendar"
48 links have been fixed to return only events within the specified period and to
49 work with day- and month-relative calendars. Users who have bookmarks in their
50 Web browser or feed reader should replace these bookmarks by visiting the
51 bookmarked page and acquiring new versions of these links, once
52 EventAggregator has been upgraded.
53
54 Installation
55 ------------
56
57 To install the support library and MoinMoin-related scripts, consider using
58 the moinsetup tool. See the "Recommended Software" section below for more
59 information.
60
61 With moinsetup and a suitable configuration file, the installation is done as
62 follows with $EADIR referring to the EventAggregator distribution directory
63 containing this README.txt file:
64
65 python moinsetup.py -f moinsetup.cfg install_extension_package $EADIR
66 python moinsetup.py -f moinsetup.cfg install_actions $EADIR/actions
67 python moinsetup.py -f moinsetup.cfg install_macros $EADIR/macros
68 python moinsetup.py -f moinsetup.cfg install_theme_resources $EADIR
69 python moinsetup.py -f moinsetup.cfg edit_theme_stylesheet screen.css event-aggregator.css
70 python moinsetup.py -f moinsetup.cfg edit_theme_stylesheet print.css event-aggregator.css
71 python moinsetup.py -f moinsetup.cfg edit_theme_stylesheet print.css event-aggregator-print.css
72
73 The first command above uses the setup.py script provided as follows:
74
75 python setup.py install --prefix=path-to-moin-prefix
76
77 The second and third commands install the actions and macros respectively.
78
79 The fourth command installs the theme resources in the available theme
80 directories.
81
82 The remaining commands activate the styles provided by EventAggregator by
83 editing the screen.css and print.css files which are typically provided by
84 themes. These commands add imports of the following form to the theme
85 stylesheets:
86
87 @import "event-aggregator.css";
88
89 Useful Pages
90 ------------
91
92 The pages directory contains a selection of useful pages using a syntax
93 appropriate for use with MoinMoin 1.6 or later. These pages can be created
94 through the Wiki and their contents copied in from each of the files. An
95 easier installation method is to issue the following commands:
96
97 python moinsetup.py -f moinsetup.cfg make_page_package $EADIR/pages pages.zip
98 python moinsetup.py -f moinsetup.cfg install_page_package pages.zip
99
100 You may need to switch user in order to have sufficient privileges to copy the
101 page package into the Wiki.
102
103 Resource Pages
104 --------------
105
106 For the map view, some resource pages are provided with EventAggregator.
107 Unlike the help pages which are most likely to be left unedited, the resource
108 pages should be modified and updated with additional map and place details.
109 Consequently, upgrading these pages is not necessarily desirable when new
110 releases of EventAggregator are made available, and thus these pages are kept
111 separate from the help pages.
112
113 To install the resource pages, use the following commands:
114
115 python moinsetup.py -f moinsetup.cfg make_page_package $EADIR/resource_pages resource_pages.zip
116 python moinsetup.py -f moinsetup.cfg install_page_package resource_pages.zip
117
118 You may need to switch user in order to have sufficient privileges to copy the
119 page package into the Wiki.
120
121 Using the Macro
122 ---------------
123
124 It should now be possible to edit pages and use the macro as follows:
125
126 <<EventAggregator(CategoryEvents)>>
127
128 As arguments to the macro, you must indicate a comma-separated list of
129 categories to be inspected for event data. For example:
130
131 <<EventAggregator(CategoryEvents,CategoryTraining)>>
132
133 By default, this should display a calendar in a collection of tables, one for
134 each month containing events. To show a collection of month-by-month listings,
135 use the 'mode' argument as follows:
136
137 <<EventAggregator(CategoryEvents,mode=list)>>
138
139 See pages/HelpOnEventAggregator for more detailed information.
140
141 Using the Actions
142 -----------------
143
144 To obtain an iCalendar summary, the EventAggregatorSummary action can be
145 selected from the actions menu on any page. Alternatively, a collection of
146 parameters can be specified in the URL of any Wiki page.
147
148 See pages/HelpOnEventAggregatorSummary for more detailed information.
149
150 To create new events using the EventAggregatorNewEvent action, the appropriate
151 menu entry can be selected in the actions menu. Alternatively, clicking on a
152 day number in a calendar view will invoke the action and pre-fill the form
153 with the start date set to the selected day from the calendar.
154
155 See pages/HelpOnEventAggregatorNewEvent for more detailed information.
156
157 Running the Scripts
158 -------------------
159
160 To import events from an RSS feed, the eventfeed script integrated with the
161 moin program can be used as follows:
162
163 moin --config-dir=path-to-wiki --wiki-url=example.com/ \
164 import eventfeed --url=url-of-events-feed
165
166 Thus, to import events from the FSFE events RSS feed, the following command
167 could be used:
168
169 moin --config-dir=path-to-wiki --wiki-url=example.com/ \
170 import eventfeed --url=http://www.fsfe.org/events/events.en.rss
171
172 If this command is being used with sudo, make sure to use the -u option so
173 that the script can operate as the appropriate user. For example:
174
175 sudo -u www-data moin --config-dir=path-to-wiki --wiki-url=example.com/ \
176 import eventfeed --url=http://www.fsfe.org/events/events.en.rss
177
178 It may also be necessary to set PYTHONPATH directly before the moin program
179 name and even to explicitly use the path to that program.
180
181 Recommended Software
182 --------------------
183
184 The moinsetup tool is recommended for installation since it aims to support
185 all versions of MoinMoin that are supported for use with this software.
186
187 See the following page for information on moinsetup:
188
189 http://moinmo.in/ScriptMarket/moinsetup
190
191 The Xapian search software is highly recommended, if not technically
192 essential, for the acceptable performance of the EventAggregator macro since
193 the macro makes use of search routines in MoinMoin that can dominate the time
194 spent processing requests.
195
196 See the following page for information on Xapian and MoinMoin:
197
198 http://moinmo.in/HelpOnXapian
199
200 Troubleshooting
201 ---------------
202
203 See here for a bug related to category recognition:
204
205 http://moinmo.in/MoinMoinBugs/1.7TemplatesNotAppearing
206
207 This affects installations where migrations between versions have occurred,
208 yet the Wiki configuration retains old regular expression details.
209
210 Xapian can be troublesome, especially where file permissions are concerned: if
211 something acquires a lock on the index (for example, the moin script, possibly
212 invoked via moinsetup) nothing else will be able to modify the index, and this
213 may cause pages to become detached from their categories in the index.
214
215 To resolve index issues, try and run the following command (with the appropriate
216 options):
217
218 moin --config-dir=path-to-wiki --wiki-url=example.com/ index build --mode=rebuild
219
220 It may be necessary to manually remove locks. This can be done as follows:
221
222 find path-to-wiki/data/cache/xapian -depth -name "*-lock" -type d -exec rmdir '{}' \;
223
224 Contact, Copyright and Licence Information
225 ------------------------------------------
226
227 See the following Web pages for more information about this work:
228
229 http://moinmo.in/MacroMarket/EventAggregator
230 http://moinmo.in/ActionMarket/EventAggregator
231
232 The author can be contacted at the following e-mail address:
233
234 paul@boddie.org.uk
235
236 Copyright and licence information can be found in the docs directory - see
237 docs/COPYING.txt and docs/LICENCE.txt for more information.
238
239 Dependencies
240 ------------
241
242 EventAggregator has the following basic dependencies:
243
244 Packages Release Information
245 -------- -------------------
246
247 pytz Tested with 2007k (specifically 2007k-0ubuntu2)
248 Source: http://pytz.sourceforge.net/
249
250 If time zone handling is not required, pytz need not be installed, but this
251 may result in iCalendar summaries being produced that provide insufficient
252 time zone information for the correct interpretation of time information in
253 those summaries. Thus, it is highly recommended that pytz be installed.
254
255 New in EventAggregator 0.7 (Changes since EventAggregator 0.6.4)
256 ----------------------------------------------------------------
257
258 * Added a day view which shows events ordered according to their timespans
259 within each day.
260 * Added a map view which shows events according to their location. This
261 requires map images to be uploaded to a designated page, and map locations
262 to be defined on a designated page.
263 * Switched to using moinsetup for the installation procedure.
264 * Introduced formatting of description, location and topic information in
265 the list and table views and in RSS format summaries.
266
267 New in EventAggregator 0.6.4 (Changes since EventAggregator 0.6.3)
268 ------------------------------------------------------------------
269
270 * Fixed pop-up element labels where one limit of a calendar has not been
271 specified.
272
273 New in EventAggregator 0.6.3 (Changes since EventAggregator 0.6.2)
274 ------------------------------------------------------------------
275
276 * Fixed category membership parsing.
277 * Fixed open-ended calendars and their pop-up summaries.
278
279 New in EventAggregator 0.6.2 (Changes since EventAggregator 0.6.1)
280 ------------------------------------------------------------------
281
282 * Fixed HTML encoding in the forms generated by the actions.
283 * Dropped MoinMoin 1.5.x support, since Xapian search is not available for
284 that version and is virtually a necessity.
285 * Fixed form handling to be compatible with MoinMoin 1.9.x, since that
286 particular release series introduced an incompatible request API that
287 breaks existing code (no longer providing access to query string
288 parameters via the form attribute, and only returning single values
289 unless the new getlist method on form-like objects is used).
290 * Fixed the direct writing of requests to be compatible with MoinMoin 1.9.
291 * Added pop-up elements showing information about the calendar/view
292 resources available for download or subscription.
293 * Added download/subscription links which open the form associated with the
294 EventAggregatorSummary action and permit editing of the supplied values.
295
296 New in EventAggregator 0.6.1 (Changes since EventAggregator 0.6)
297 ----------------------------------------------------------------
298
299 * Fixed HTML encoding in the forms generated by the actions.
300
301 New in EventAggregator 0.6 (Changes since EventAggregator 0.5)
302 --------------------------------------------------------------
303
304 * Added print stylesheet rules in order to improve the printed versions of
305 calendars.
306 * Fixed definition list parsing to handle completely empty definitions
307 (having no space after the "::" token) which previously captured text from
308 subsequent lines, and merely empty definitions which previously would have
309 produced a single empty value for definitions providing lists of values.
310 * Added a script to import events from RSS feeds.
311 * Added support for a link entry in event pages, although this does not
312 replace the link information provided by the RSS and iCalendar summaries.
313 * Fixed the production of the summaries when pages with no available edit
314 log information are to be included.
315 * Added support for event times and time zone/regime information. This is
316 subject to revision.
317
318 New in EventAggregator 0.5 (Changes since EventAggregator 0.4)
319 --------------------------------------------------------------
320
321 * Changed the EventAggregatorNewEvent action to substitute only the stated
322 title, not the full page title, into the new page.
323 * Changed event colouring to use the event summary as the basis for
324 calculating the colour used in the calendar. This means that related
325 events can be coloured identically if their summaries are the same.
326 * Added support for multiple events on a single event page.
327 * Introduced EventPage and Event abstractions in order to better support new
328 features.
329 * Introduced basic and advanced modes to the EventAggregatorNewEvent action,
330 along with date swapping to correct cases where the start is given as
331 being later than the end of an event.
332 * Fixed the "download this calendar" and "subscribe to this calendar" links
333 by propagating the "raw" calendar start and end values within the macro.
334 These links should yield events only within the period defined for a
335 calendar, not all events in a calendar's categories. This fix also ensures
336 that the links for year- and month-relative calendars are correct, rather
337 than the specific links generated previously. Thus, a "this year's events"
338 link will now continue to produce a resource with the current year's
339 events, rather than the events from the year when the link was generated.
340
341 New in EventAggregator 0.4 (Changes since EventAggregator 0.3)
342 --------------------------------------------------------------
343
344 * Added a table view in the macro, using special topic/category styles to
345 provide background colours for events.
346 * Added category propagation from calendars to the new event form provided
347 by the EventAggregatorNewEvent action.
348 * Added a default template parameter to the macro, employed by the new event
349 form.
350 * Added a parent page parameter which is used by the new event form to place
351 new event pages in a particular location specific to a calendar or
352 collection of events.
353 * Improved the presentation of pop-up event information elements.
354 * Added navigation between display modes (calendar, list and table views).
355 * Ensured that calendar settings are retained when creating new events for a
356 calendar.
357 * Fixed various problems with events not having topics.
358
359 New in EventAggregator 0.3 (Changes since EventAggregator 0.2)
360 --------------------------------------------------------------
361
362 * Added a parameter to the EventAggregatorSummary action to select the
363 source of event descriptions for the RSS feed.
364 * Updated the documentation to cover the RSS support.
365 * Added the EventAggregatorNewEvent action.
366
367 New in EventAggregator 0.2 (Changes since EventAggregator 0.1)
368 --------------------------------------------------------------
369
370 * Improved the calendar view in the macro to use the fixed table layout
371 algorithm and to provide cells spanning potentially many columns for
372 continuing events. Introduced pop-up elements in order to show truncated
373 event names.
374 * Made the "weekly" naming policy the default in the calendar view.
375 * Improved the list view in the macro.
376 * Introduced RSS 2.0 feed support.
377 * Improved the help pages.
378
379 Release Procedures
380 ------------------
381
382 Update the EventAggregatorSupport.py __version__ attribute and the setup.py
383 version details.
384 Change the version number and package filename/directory in the documentation.
385 Update the setup.py and PKG-INFO files.
386 Update the release notes (see above).
387 Tag, export.
388 Archive, upload.
389 Update the MacroMarket and ActionMarket (see above for the URLs).