1.1 --- a/EventAggregatorSupport.py Sun Mar 29 19:33:59 2009 +0200
1.2 +++ b/EventAggregatorSupport.py Sun Mar 29 21:01:49 2009 +0200
1.3 @@ -485,6 +485,9 @@
1.4
1.5 # User interface functions.
1.6
1.7 +def getParameter(request, name):
1.8 + return request.form.get(name, [None])[0]
1.9 +
1.10 def getParameterMonth(arg):
1.11 n = None
1.12
1.13 @@ -517,12 +520,20 @@
1.14 else:
1.15 calendar_prefix = "%s-%s" % (calendar_name, argname)
1.16
1.17 - arg = request.form.get(calendar_prefix, [None])[0]
1.18 + arg = getParameter(request, calendar_prefix)
1.19 if arg is not None:
1.20 return getParameterMonth(arg)
1.21 else:
1.22 return None
1.23
1.24 +def getFormMonthPair(request, yeararg, montharg):
1.25 + year = getParameter(request, yeararg)
1.26 + month = getParameter(request, montharg)
1.27 + if year and month:
1.28 + return (int(year), int(month))
1.29 + else:
1.30 + return None
1.31 +
1.32 def getPrettyPageName(page):
1.33
1.34 "Return a nicely formatted title/name for the given 'page'."
2.1 --- a/actions/EventAggregatorSummary.py Sun Mar 29 19:33:59 2009 +0200
2.2 +++ b/actions/EventAggregatorSummary.py Sun Mar 29 21:01:49 2009 +0200
2.3 @@ -34,14 +34,24 @@
2.4
2.5 category_list.append('<option value="%s">%s</option>' % (category_pagename, category_name))
2.6
2.7 + month_list = []
2.8 + month_list.append('<option value=""></option>')
2.9 +
2.10 + for month in range(1, 13):
2.11 + month_label = _(EventAggregatorSupport.getMonthLabel(month))
2.12 + month_list.append('<option value="%02d">%s</option>' % (month, month_label))
2.13 +
2.14 + year_label = []
2.15 +
2.16 d = {
2.17 "buttons_html" : buttons_html,
2.18 "category_label" : _("Categories"),
2.19 "category_list" : "\n".join(category_list),
2.20 + "month_list" : "\n".join(month_list),
2.21 "start_label" : _("Start year and month"),
2.22 - "start_default" : "",
2.23 + "start_year_default" : "",
2.24 "end_label" : _("End year and month"),
2.25 - "end_default" : "",
2.26 + "end_year_default" : "",
2.27 }
2.28
2.29 return '''
2.30 @@ -57,13 +67,19 @@
2.31 <tr>
2.32 <td class="label"><label>%(start_label)s</label></td>
2.33 <td>
2.34 - <input name="start" type="text" value="%(start_default)s" size="12" />
2.35 + <select name="start-month">
2.36 + %(month_list)s
2.37 + </select>
2.38 + <input name="start-year" type="text" value="%(start_year_default)s" size="4" />
2.39 </td>
2.40 </tr>
2.41 <tr>
2.42 <td class="label"><label>%(end_label)s</label></td>
2.43 <td>
2.44 - <input name="end" type="text" value="%(end_default)s" size="12" />
2.45 + <select name="end-month">
2.46 + %(month_list)s
2.47 + </select>
2.48 + <input name="end-year" type="text" value="%(end_year_default)s" size="4" />
2.49 </td>
2.50 </tr>
2.51 <tr>
2.52 @@ -80,11 +96,12 @@
2.53 "Write the iCalendar resource."
2.54
2.55 _ = self._
2.56 + form = self.request.form
2.57
2.58 # If no category names exist in the request, an error message is
2.59 # returned.
2.60
2.61 - category_names = self.request.form.get("category", [])
2.62 + category_names = form.get("category", [])
2.63
2.64 if not category_names:
2.65 return 0, _("No categories specified.")
2.66 @@ -117,6 +134,16 @@
2.67 calendar_start = EventAggregatorSupport.getFormMonth(request, None, "start")
2.68 calendar_end = EventAggregatorSupport.getFormMonth(request, None, "end")
2.69
2.70 + # Look for separate start and end years and months.
2.71 +
2.72 + form = request.form
2.73 +
2.74 + if calendar_start is None:
2.75 + calendar_start = EventAggregatorSupport.getFormMonthPair(request, "start-year", "start-month")
2.76 +
2.77 + if calendar_end is None:
2.78 + calendar_end = EventAggregatorSupport.getFormMonthPair(request, "end-year", "end-month")
2.79 +
2.80 events, shown_events, all_shown_events, earliest, latest = \
2.81 EventAggregatorSupport.getEvents(request, category_names, calendar_start, calendar_end)
2.82