# HG changeset patch # User Paul Boddie # Date 1298081821 -3600 # Node ID d9899cbca14d468b65a8c3025c3f3542211f8271 # Parent f7c1f4b3e1a3d9208a9eb7bd14c4ca82fe94d0ff Added the "original" calendar limits to View instances so that subscriptions and downloads of a calendar are advertised using the appropriate calculated period. (Imported from revision 128.) diff -r f7c1f4b3e1a3 -r d9899cbca14d macros/EventAggregator.py --- a/macros/EventAggregator.py Sat Feb 19 03:11:19 2011 +0100 +++ b/macros/EventAggregator.py Sat Feb 19 03:17:01 2011 +0100 @@ -23,15 +23,19 @@ "A view of the event calendar." def __init__(self, page, calendar_name, raw_calendar_start, raw_calendar_end, - calendar_start, calendar_end, first, last, category_names, template_name, - parent_name, mode, name_usage): + original_calendar_start, original_calendar_end, calendar_start, calendar_end, + first, last, category_names, template_name, parent_name, mode, name_usage): """ Initialise the view with the current 'page', a 'calendar_name' (which may be None), the 'raw_calendar_start' and 'raw_calendar_end' (which are the actual start and end values provided by the request), the - requested, calculated 'calendar_start' and 'calendar_end', and the - 'first' and 'last' months of event coverage. + calculated 'original_calendar_start' and 'original_calendar_end' (which + are the result of calculating the calendar's limits from the raw start + and end values), and the requested, calculated 'calendar_start' and + 'calendar_end' (which may involve different start and end values due to + navigation in the user interface), along with the 'first' and 'last' + months of event coverage. The additional 'category_names', 'template_name', 'parent_name' and 'mode' parameters are used to configure the links employed by the view. @@ -44,6 +48,8 @@ self.calendar_name = calendar_name self.raw_calendar_start = raw_calendar_start self.raw_calendar_end = raw_calendar_end + self.original_calendar_start = original_calendar_start + self.original_calendar_end = original_calendar_end self.calendar_start = calendar_start self.calendar_end = calendar_end self.template_name = template_name @@ -147,7 +153,8 @@ # Generate the links. download_dialogue_link = "action=EventAggregatorSummary&parent=%s&%s" % ( - self.parent_name or "", self.category_name_parameters + self.parent_name or "", + self.category_name_parameters ) download_all_link = download_dialogue_link + "&doit=1" download_link = download_all_link + ("&%s&%s" % ( @@ -188,6 +195,10 @@ self.getFullMonthLabel(self.calendar_start), self.getFullMonthLabel(self.calendar_end) ) + original_calendar_period = "%s - %s" % ( + self.getFullMonthLabel(self.original_calendar_start), + self.getFullMonthLabel(self.original_calendar_end) + ) raw_calendar_period = "%s - %s" % (self.raw_calendar_start, self.raw_calendar_end) # Write the controls. @@ -206,7 +217,7 @@ output.append(linkToPage(request, page, _("Download this calendar"), download_all_link)) output.append(fmt.span(on=1, css_class="event-download-popup")) output.append(fmt.span(on=1, css_class="event-download-period")) - output.append(fmt.text(calendar_period)) + output.append(fmt.text(original_calendar_period)) output.append(fmt.span(on=0)) output.append(fmt.span(on=1, css_class="event-download-period-raw")) output.append(fmt.text(raw_calendar_period)) @@ -234,7 +245,7 @@ output.append(linkToPage(request, page, _("Subscribe to this calendar"), subscribe_all_link)) output.append(fmt.span(on=1, css_class="event-download-popup")) output.append(fmt.span(on=1, css_class="event-download-period")) - output.append(fmt.text(calendar_period)) + output.append(fmt.text(original_calendar_period)) output.append(fmt.span(on=0)) output.append(fmt.span(on=1, css_class="event-download-period-raw")) output.append(fmt.text(raw_calendar_period)) @@ -782,11 +793,9 @@ for arg in parsed_args: if arg.startswith("start="): raw_calendar_start = arg[6:] - calendar_start = EventAggregatorSupport.getParameterMonth(raw_calendar_start) elif arg.startswith("end="): raw_calendar_end = arg[4:] - calendar_end = EventAggregatorSupport.getParameterMonth(raw_calendar_end) elif arg.startswith("mode="): mode = arg[5:] @@ -806,6 +815,9 @@ else: category_names.append(arg) + original_calendar_start = calendar_start = EventAggregatorSupport.getParameterMonth(raw_calendar_start) + original_calendar_end = calendar_end = EventAggregatorSupport.getParameterMonth(raw_calendar_end) + # Find request parameters to override settings. calendar_start = EventAggregatorSupport.getFormMonth(request, calendar_name, "start") or calendar_start @@ -824,7 +836,8 @@ # Define a view of the calendar, retaining useful navigational information. - view = View(page, calendar_name, raw_calendar_start, raw_calendar_end, calendar_start, calendar_end, + view = View(page, calendar_name, raw_calendar_start, raw_calendar_end, + original_calendar_start, original_calendar_end, calendar_start, calendar_end, first, last, category_names, template_name, parent_name, mode, name_usage) # Make a calendar.