# HG changeset patch # User Paul Boddie # Date 1257626196 -3600 # Node ID fd80caf4722fb41e61a1f19dd1174df86bc9b729 # Parent d919e2bb13e0fc7bad91c642d23c4eb6c51fe7e1 Restricted the mode parameter to specific calendars where these are named. Added display parameters to the new event links so that the calendar involved retains its settings. Tidied up parameter name handling and retrieval. diff -r d919e2bb13e0 -r fd80caf4722f EventAggregatorSupport.py --- a/EventAggregatorSupport.py Sat Nov 07 21:08:16 2009 +0100 +++ b/EventAggregatorSupport.py Sat Nov 07 21:36:36 2009 +0100 @@ -693,6 +693,16 @@ def getParameter(request, name, default=None): return request.form.get(name, [default])[0] +def getQualifiedParameter(request, calendar_name, argname, default=None): + argname = getQualifiedParameterName(calendar_name, argname) + return getParameter(request, argname, default) + +def getQualifiedParameterName(calendar_name, argname): + if calendar_name is None: + return argname + else: + return "%s-%s" % (calendar_name, argname) + def getParameterMonth(arg): n = None @@ -720,12 +730,7 @@ return date def getFormMonth(request, calendar_name, argname): - if calendar_name is None: - calendar_prefix = argname - else: - calendar_prefix = "%s-%s" % (calendar_name, argname) - - arg = getParameter(request, calendar_prefix) + arg = getQualifiedParameter(request, calendar_name, argname) if arg is not None: return getParameterMonth(arg) else: diff -r d919e2bb13e0 -r fd80caf4722f macros/EventAggregator.py --- a/macros/EventAggregator.py Sat Nov 07 21:08:16 2009 +0100 +++ b/macros/EventAggregator.py Sat Nov 07 21:36:36 2009 +0100 @@ -66,20 +66,22 @@ self.previous_set_end = EventAggregatorSupport.monthupdate(last, -self.number_of_months) self.next_set_end = EventAggregatorSupport.monthupdate(last, self.number_of_months) + def getQualifiedParameterName(self, argname): + return EventAggregatorSupport.getQualifiedParameterName(self.calendar_name, argname) + def getMonthQueryString(self, argname, month, prefix=1): if month is not None: if prefix: - return "%s-%s=%04d-%02d" % ((self.calendar_name, argname) + month) - else: - return "%s=%04d-%02d" % ((argname,) + month) + argname = self.getQualifiedParameterName(argname) + return "%s=%04d-%02d" % ((argname,) + month) else: return "" def getNavigationLink(self, start, end, mode=None): - return "%s&%s&mode=%s" % ( + return "%s&%s&%s=%s" % ( self.getMonthQueryString("start", start), self.getMonthQueryString("end", end), - mode or self.mode + self.getQualifiedParameterName("mode"), mode or self.mode ) def writeDownloadControls(self): @@ -230,9 +232,20 @@ output = [] + # Prepare navigation details for the calendar shown with the new event + # form. + + navigation_link = self.getNavigationLink( + self.calendar_start, self.calendar_end, self.mode + ) + + # Prepare the link to the new event form, incorporating the above + # calendar parameters. + new_event_link = "action=EventAggregatorNewEvent&start-day=%d&start-month=%d&start-year=%d" \ - "&%s&template=%s&parent=%s" % ( - day, month, year, self.category_name_parameters, self.template_name, self.parent_name or "") + "&%s&template=%s&parent=%s&%s" % ( + day, month, year, self.category_name_parameters, self.template_name, self.parent_name or "", + navigation_link) output.append(fmt.div(on=1)) output.append(fmt.span(on=1, css_class="event-day-number")) @@ -347,7 +360,7 @@ calendar_start = EventAggregatorSupport.getFormMonth(request, calendar_name, "start") or calendar_start calendar_end = EventAggregatorSupport.getFormMonth(request, calendar_name, "end") or calendar_end - mode = EventAggregatorSupport.getParameter(request, "mode", mode or "calendar") + mode = EventAggregatorSupport.getQualifiedParameter(request, calendar_name, "mode", mode or "calendar") # Get the events.