1.1 --- a/EventAggregatorSupport/Actions.py Wed May 01 00:04:59 2013 +0200
1.2 +++ b/EventAggregatorSupport/Actions.py Wed May 01 01:44:54 2013 +0200
1.3 @@ -8,6 +8,8 @@
1.4
1.5 from DateSupport import *
1.6 from MoinSupport import *
1.7 +from MoinDateSupport import getFormDate, getFormMonth, \
1.8 + getParameterDate, getParameterMonth
1.9
1.10 from MoinMoin.wikiutil import escape
1.11
1.12 @@ -73,4 +75,16 @@
1.13
1.14 return start_day_default, end_day_default
1.15
1.16 +def get_date_functions(resolution):
1.17 + if resolution == "date":
1.18 + return getParameterDate, getFormDate
1.19 + else:
1.20 + return getParameterMonth, getFormMonth
1.21 +
1.22 +def get_date_label_functions(resolution):
1.23 + if resolution == "date":
1.24 + return getParameterDate, getFullDateLabel
1.25 + else:
1.26 + return getParameterMonth, getFullMonthLabel
1.27 +
1.28 # vim: tabstop=4 expandtab shiftwidth=4
2.1 --- a/EventAggregatorSupport/View.py Wed May 01 00:04:59 2013 +0200
2.2 +++ b/EventAggregatorSupport/View.py Wed May 01 01:44:54 2013 +0200
2.3 @@ -82,7 +82,7 @@
2.4 calendar_start, calendar_end,
2.5 wider_calendar_start, wider_calendar_end,
2.6 first, last, category_names, remote_sources, search_pattern, template_name,
2.7 - parent_name, mode, resolution, name_usage, map_name):
2.8 + parent_name, mode, raw_resolution, resolution, name_usage, map_name):
2.9
2.10 """
2.11 Initialise the view with the current 'page', a 'calendar_name' (which
2.12 @@ -101,7 +101,8 @@
2.13 'template_name', 'parent_name' and 'mode' parameters are used to
2.14 configure the links employed by the view.
2.15
2.16 - The 'resolution' affects the view for certain modes and is also used to
2.17 + The 'raw_resolution' is used to parameterise download links, whereas the
2.18 + 'resolution' affects the view for certain modes and is also used to
2.19 parameterise links.
2.20
2.21 The 'name_usage' parameter controls how names are shown on calendar mode
2.22 @@ -124,6 +125,7 @@
2.23 self.template_name = template_name
2.24 self.parent_name = parent_name
2.25 self.mode = mode
2.26 + self.raw_resolution = raw_resolution
2.27 self.resolution = resolution
2.28 self.name_usage = name_usage
2.29 self.map_name = map_name
2.30 @@ -265,6 +267,7 @@
2.31 ("calendarend", self.raw_calendar_end or ""),
2.32 ("mode", mode or self.mode),
2.33 ("resolution", resolution or self.resolution),
2.34 + ("raw-resolution", self.raw_resolution),
2.35 ("parent", self.parent_name or ""),
2.36 ("template", self.template_name or ""),
2.37 ("names", self.name_usage),
2.38 @@ -314,8 +317,8 @@
2.39 def getFullMonthLabel(self, year_month):
2.40 return getFullMonthLabel(self.page.request, year_month)
2.41
2.42 - def getFullLabel(self, arg):
2.43 - return self.resolution == "date" and self.getFullDateLabel(arg) or self.getFullMonthLabel(arg)
2.44 + def getFullLabel(self, arg, resolution):
2.45 + return resolution == "date" and self.getFullDateLabel(arg) or self.getFullMonthLabel(arg)
2.46
2.47 def _getCalendarPeriod(self, start_label, end_label, default_label):
2.48
2.49 @@ -337,22 +340,31 @@
2.50 return "".join(output) or default_label
2.51
2.52 def getCalendarPeriod(self):
2.53 +
2.54 + "Return the period description for the shown calendar."
2.55 +
2.56 _ = self.page.request.getText
2.57 return self._getCalendarPeriod(
2.58 - self.calendar_start and self.getFullLabel(self.calendar_start),
2.59 - self.calendar_end and self.getFullLabel(self.calendar_end),
2.60 + self.calendar_start and self.getFullLabel(self.calendar_start, self.resolution),
2.61 + self.calendar_end and self.getFullLabel(self.calendar_end, self.resolution),
2.62 _("All events")
2.63 )
2.64
2.65 def getOriginalCalendarPeriod(self):
2.66 +
2.67 + "Return the period description for the originally specified calendar."
2.68 +
2.69 _ = self.page.request.getText
2.70 return self._getCalendarPeriod(
2.71 - self.original_calendar_start and self.getFullLabel(self.original_calendar_start),
2.72 - self.original_calendar_end and self.getFullLabel(self.original_calendar_end),
2.73 + self.original_calendar_start and self.getFullLabel(self.original_calendar_start, self.raw_resolution),
2.74 + self.original_calendar_end and self.getFullLabel(self.original_calendar_end, self.raw_resolution),
2.75 _("All events")
2.76 )
2.77
2.78 def getRawCalendarPeriod(self):
2.79 +
2.80 + "Return the raw period description for the calendar."
2.81 +
2.82 _ = self.page.request.getText
2.83 return self._getCalendarPeriod(
2.84 self.raw_calendar_start,
2.85 @@ -381,9 +393,8 @@
2.86
2.87 # Generate the links.
2.88
2.89 - download_dialogue_link = "action=EventAggregatorSummary&parent=%s&resolution=%s&search=%s%s%s" % (
2.90 + download_dialogue_link = "action=EventAggregatorSummary&parent=%s&search=%s%s%s" % (
2.91 self.parent_name or "",
2.92 - self.resolution,
2.93 self.search_pattern or "",
2.94 self.category_name_parameters and "&%s" % self.category_name_parameters,
2.95 self.remote_source_parameters and "&%s" % self.remote_source_parameters
2.96 @@ -394,6 +405,14 @@
2.97 self.getDateQueryString("end", self.calendar_end, prefix=0)
2.98 ))
2.99
2.100 + # The entire calendar download uses the originally specified resolution
2.101 + # of the calendar as does the dialogue. The other link uses the current
2.102 + # resolution.
2.103 +
2.104 + download_dialogue_link += "&resolution=%s" % self.raw_resolution
2.105 + download_all_link += "&resolution=%s" % self.raw_resolution
2.106 + download_link += "&resolution=%s" % self.resolution
2.107 +
2.108 # Subscription links just explicitly select the RSS format.
2.109
2.110 subscribe_dialogue_link = download_dialogue_link + "&format=RSS"
2.111 @@ -423,7 +442,7 @@
2.112
2.113 # Pop-up descriptions of the downloadable calendars.
2.114
2.115 - calendar_period = self.getCalendarPeriod()
2.116 + shown_calendar_period = self.getCalendarPeriod()
2.117 original_calendar_period = self.getOriginalCalendarPeriod()
2.118 raw_calendar_period = self.getRawCalendarPeriod()
2.119
2.120 @@ -450,7 +469,7 @@
2.121 append(fmt.text(_("Download this view")))
2.122 append(fmt.span(on=0)) # end label
2.123 append(fmt.span(on=1, css_class="event-download-period"))
2.124 - append(fmt.text(calendar_period))
2.125 + append(fmt.text(shown_calendar_period))
2.126 append(fmt.span(on=0))
2.127 append(fmt.div(on=0))
2.128
2.129 @@ -494,7 +513,7 @@
2.130 append(linkToPage(request, page, _("Subscribe to this view"), subscribe_link))
2.131 append(fmt.span(on=0)) # end label
2.132 append(fmt.span(on=1, css_class="event-download-period"))
2.133 - append(fmt.text(calendar_period))
2.134 + append(fmt.text(shown_calendar_period))
2.135 append(fmt.span(on=0))
2.136 append(fmt.div(on=0))
2.137
3.1 --- a/README.txt Wed May 01 00:04:59 2013 +0200
3.2 +++ b/README.txt Wed May 01 01:44:54 2013 +0200
3.3 @@ -359,6 +359,8 @@
3.4
3.5 * Fixed quoting of special date parameters in navigation URLs and download
3.6 dialogue URLs.
3.7 + * Fixed the resolution of whole calendar download/subscription links in day
3.8 + views.
3.9 * Changed iCalendar serialisation to use the vContent library, making
3.10 vContent a requirement of this software.
3.11 * Refactored the library, replacing the support module with a package
4.1 --- a/actions/EventAggregatorUpdate.py Wed May 01 00:04:59 2013 +0200
4.2 +++ b/actions/EventAggregatorUpdate.py Wed May 01 01:44:54 2013 +0200
4.3 @@ -6,8 +6,9 @@
4.4 @license: GNU GPL (v2 or later), see COPYING.txt for details.
4.5 """
4.6
4.7 -from MoinDateSupport import getParameterDate, getParameterMonth
4.8 +from EventAggregatorSupport.Actions import get_date_functions
4.9 from EventAggregatorSupport import *
4.10 +from MoinDateSupport import getParameterMonth
4.11 from MoinMoin.Page import Page
4.12 from MoinMoin import config
4.13
4.14 @@ -37,6 +38,7 @@
4.15 template_name = getParameter(request, "template")
4.16 parent_name = getParameter(request, "parent")
4.17 mode = getParameter(request, "mode", "calendar")
4.18 + raw_resolution = getParameter(request, "raw-resolution")
4.19 resolution = getParameter(request, "resolution", mode == "day" and "date" or "month")
4.20 map_name = getParameter(request, "map")
4.21
4.22 @@ -50,22 +52,21 @@
4.23
4.24 resolution = mode == "calendar" and "month" or resolution
4.25
4.26 - if resolution == "date":
4.27 - get_date = getParameterDate
4.28 - else:
4.29 - get_date = getParameterMonth
4.30 + # Determine the limits of the calendar.
4.31
4.32 - # Determine the limits of the calendar.
4.33 + get_date, _get_form_date = get_date_functions(raw_resolution)
4.34
4.35 original_calendar_start = calendar_start = get_date(raw_calendar_start)
4.36 original_calendar_end = calendar_end = get_date(raw_calendar_end)
4.37
4.38 + wider_calendar_start = getParameterMonth(getParameter(request, "wider-start"))
4.39 + wider_calendar_end = getParameterMonth(getParameter(request, "wider-end"))
4.40 +
4.41 + get_date, _get_form_date = get_date_functions(resolution)
4.42 +
4.43 calendar_start = get_date(getParameter(request, "start")) or calendar_start
4.44 calendar_end = get_date(getParameter(request, "end")) or calendar_end
4.45
4.46 - wider_calendar_start = getParameterMonth(getParameter(request, "wider-start"))
4.47 - wider_calendar_end = getParameterMonth(getParameter(request, "wider-end"))
4.48 -
4.49 # Get the events according to the resolution of the calendar.
4.50
4.51 all_shown_events, first, last = getEventsUsingParameters(
4.52 @@ -80,7 +81,7 @@
4.53 calendar_start, calendar_end,
4.54 wider_calendar_start, wider_calendar_end,
4.55 first, last, category_names, remote_sources, search_pattern, template_name,
4.56 - parent_name, mode, resolution, name_usage, map_name)
4.57 + parent_name, mode, raw_resolution, resolution, name_usage, map_name)
4.58
4.59 send_headers = get_send_headers(request)
4.60 send_headers(["Content-Type: text/html; charset=%s" % config.charset])
5.1 --- a/macros/EventAggregator.py Wed May 01 00:04:59 2013 +0200
5.2 +++ b/macros/EventAggregator.py Wed May 01 01:44:54 2013 +0200
5.3 @@ -8,10 +8,10 @@
5.4 @license: GNU GPL (v2 or later), see COPYING.txt for details.
5.5 """
5.6
5.7 +from EventAggregatorSupport.Actions import get_date_functions
5.8 from EventAggregatorSupport.Resources import getEventsUsingParameters
5.9 from EventAggregatorSupport.View import View, getQualifiedParameter
5.10 -from MoinDateSupport import getFormDate, getFormMonth, \
5.11 - getParameterDate, getParameterMonth
5.12 +from MoinDateSupport import getFormMonth
5.13 from MoinMoin import wikiutil
5.14
5.15 Dependencies = ['pages']
5.16 @@ -85,6 +85,7 @@
5.17 raw_calendar_end = None
5.18 calendar_start = None
5.19 calendar_end = None
5.20 + raw_mode = None
5.21 mode = None
5.22 name_usage = "weekly"
5.23 calendar_name = None
5.24 @@ -100,7 +101,7 @@
5.25 raw_calendar_end = arg[4:]
5.26
5.27 elif arg.startswith("mode="):
5.28 - mode = arg[5:]
5.29 + raw_mode = arg[5:]
5.30
5.31 elif arg.startswith("names="):
5.32 name_usage = arg[6:]
5.33 @@ -128,31 +129,30 @@
5.34
5.35 # Find request parameters to override settings.
5.36
5.37 - mode = getQualifiedParameter(request, calendar_name, "mode", mode or "calendar")
5.38 + mode = getQualifiedParameter(request, calendar_name, "mode", raw_mode or "calendar")
5.39
5.40 # Different modes require different levels of precision by default.
5.41
5.42 + raw_resolution = raw_mode == "day" and "date" or "month"
5.43 +
5.44 resolution = getQualifiedParameter(request, calendar_name, "resolution", mode == "day" and "date" or "month")
5.45 resolution = mode == "calendar" and "month" or resolution
5.46
5.47 - if resolution == "date":
5.48 - get_date = getParameterDate
5.49 - get_form_date = getFormDate
5.50 - else:
5.51 - get_date = getParameterMonth
5.52 - get_form_date = getFormMonth
5.53 + # Determine the limits of the calendar.
5.54
5.55 - # Determine the limits of the calendar.
5.56 + get_date, get_form_date = get_date_functions(raw_resolution)
5.57
5.58 original_calendar_start = calendar_start = get_date(raw_calendar_start)
5.59 original_calendar_end = calendar_end = get_date(raw_calendar_end)
5.60
5.61 + wider_calendar_start = getFormMonth(request, calendar_name, "wider-start")
5.62 + wider_calendar_end = getFormMonth(request, calendar_name, "wider-end")
5.63 +
5.64 + get_date, get_form_date = get_date_functions(resolution)
5.65 +
5.66 calendar_start = get_form_date(request, calendar_name, "start") or calendar_start
5.67 calendar_end = get_form_date(request, calendar_name, "end") or calendar_end
5.68
5.69 - wider_calendar_start = getFormMonth(request, calendar_name, "wider-start")
5.70 - wider_calendar_end = getFormMonth(request, calendar_name, "wider-end")
5.71 -
5.72 # Get the events according to the resolution of the calendar.
5.73
5.74 all_shown_events, first, last = getEventsUsingParameters(
5.75 @@ -167,7 +167,7 @@
5.76 calendar_start, calendar_end,
5.77 wider_calendar_start, wider_calendar_end,
5.78 first, last, category_names, remote_sources, search_pattern, template_name,
5.79 - parent_name, mode, resolution, name_usage, map_name)
5.80 + parent_name, mode, raw_resolution, resolution, name_usage, map_name)
5.81
5.82 return view.render(all_shown_events)
5.83