1.1 --- a/macros/EventAggregator.py Thu Feb 04 21:05:07 2010 +0100
1.2 +++ b/macros/EventAggregator.py Thu Feb 04 21:49:45 2010 +0100
1.3 @@ -27,12 +27,15 @@
1.4
1.5 "A view of the event calendar."
1.6
1.7 - def __init__(self, page, calendar_name, calendar_start, calendar_end,
1.8 - first, last, category_names, template_name, parent_name, mode):
1.9 + def __init__(self, page, calendar_name, raw_calendar_start, raw_calendar_end,
1.10 + calendar_start, calendar_end, first, last, category_names, template_name,
1.11 + parent_name, mode):
1.12
1.13 """
1.14 Initialise the view with the current 'page', a 'calendar_name' (which
1.15 - may be None), the requested 'calendar_start' and 'calendar_end', and the
1.16 + may be None), the 'raw_calendar_start' and 'raw_calendar_end' (which
1.17 + are the actual start and end values provided by the request), the
1.18 + requested, calculated 'calendar_start' and 'calendar_end', and the
1.19 'first' and 'last' months of event coverage.
1.20
1.21 The additional 'category_names', 'template_name', 'parent_name' and
1.22 @@ -41,6 +44,8 @@
1.23
1.24 self.page = page
1.25 self.calendar_name = calendar_name
1.26 + self.raw_calendar_start = raw_calendar_start
1.27 + self.raw_calendar_end = raw_calendar_end
1.28 self.calendar_start = calendar_start
1.29 self.calendar_end = calendar_end
1.30 self.template_name = template_name
1.31 @@ -103,6 +108,25 @@
1.32 subscribe_all_link = download_all_link + "&format=RSS"
1.33 subscribe_link = download_link + "&format=RSS"
1.34
1.35 + # Adjust the "download all" and "subscribe all" links if the calendar
1.36 + # has an inherent period associated with it.
1.37 +
1.38 + period_limits = []
1.39 +
1.40 + if self.raw_calendar_start:
1.41 + period_limits.append("&%s" %
1.42 + self.getMonthQueryString("start", self.raw_calendar_start, prefix=0)
1.43 + )
1.44 + if self.raw_calendar_end:
1.45 + period_limits.append("&%s" %
1.46 + self.getMonthQueryString("end", self.raw_calendar_end, prefix=0)
1.47 + )
1.48 +
1.49 + period_limits = "".join(period_limits)
1.50 +
1.51 + download_all_link += period_limits
1.52 + subscribe_all_link += period_limits
1.53 +
1.54 # Write the controls.
1.55
1.56 output.append(fmt.div(on=1, css_class="event-download-controls"))
1.57 @@ -322,6 +346,8 @@
1.58 # Get special arguments.
1.59
1.60 category_names = []
1.61 + raw_calendar_start = None
1.62 + raw_calendar_end = None
1.63 calendar_start = None
1.64 calendar_end = None
1.65 mode = None
1.66 @@ -332,10 +358,12 @@
1.67
1.68 for arg in parsed_args:
1.69 if arg.startswith("start="):
1.70 - calendar_start = EventAggregatorSupport.getParameterMonth(arg[6:])
1.71 + raw_calendar_start = arg[6:]
1.72 + calendar_start = EventAggregatorSupport.getParameterMonth(raw_calendar_start)
1.73
1.74 elif arg.startswith("end="):
1.75 - calendar_end = EventAggregatorSupport.getParameterMonth(arg[4:])
1.76 + raw_calendar_end = arg[4:]
1.77 + calendar_end = EventAggregatorSupport.getParameterMonth(raw_calendar_end)
1.78
1.79 elif arg.startswith("mode="):
1.80 mode = arg[5:]
1.81 @@ -374,7 +402,8 @@
1.82
1.83 # Define a view of the calendar, retaining useful navigational information.
1.84
1.85 - view = View(page, calendar_name, calendar_start, calendar_end, first, last, category_names, template_name, parent_name, mode)
1.86 + view = View(page, calendar_name, raw_calendar_start, raw_calendar_end, calendar_start, calendar_end,
1.87 + first, last, category_names, template_name, parent_name, mode)
1.88
1.89 # Make a calendar.
1.90