1.1 --- a/EventAggregatorSupport.py Thu Jul 08 22:18:54 2010 +0200
1.2 +++ b/EventAggregatorSupport.py Fri Jul 09 01:56:45 2010 +0200
1.3 @@ -161,7 +161,7 @@
1.4 else:
1.5 return int(value)
1.6
1.7 - def get_month_lists(self):
1.8 + def get_month_lists(self, default_as_current=0):
1.9
1.10 """
1.11 Return two lists of HTML element definitions corresponding to the start
1.12 @@ -177,11 +177,15 @@
1.13 start_month_list = []
1.14 end_month_list = []
1.15
1.16 - start_month = self._get_input(form, "start-month", getCurrentMonth().month())
1.17 + start_month = self._get_input(form, "start-month", default_as_current and getCurrentMonth().month() or None)
1.18 end_month = self._get_input(form, "end-month", start_month)
1.19
1.20 # Prepare month lists, selecting specified months.
1.21
1.22 + if not default_as_current:
1.23 + start_month_list.append('<option value=""></option>')
1.24 + end_month_list.append('<option value=""></option>')
1.25 +
1.26 for month in range(1, 13):
1.27 month_label = _(getMonthLabel(month))
1.28 selected = self._get_selected(month, start_month)
1.29 @@ -191,14 +195,14 @@
1.30
1.31 return start_month_list, end_month_list
1.32
1.33 - def get_year_defaults(self):
1.34 + def get_year_defaults(self, default_as_current=0):
1.35
1.36 "Return defaults for the start and end years."
1.37
1.38 form = self.get_form()
1.39
1.40 - start_year_default = form.get("start-year", [""])[0] or getCurrentYear()
1.41 - end_year_default = form.get("end-year", [""])[0] or start_year_default
1.42 + start_year_default = form.get("start-year", [default_as_current and getCurrentYear() or ""])[0]
1.43 + end_year_default = form.get("end-year", [default_as_current and start_year_default or ""])[0]
1.44
1.45 return start_year_default, end_year_default
1.46
1.47 @@ -1457,6 +1461,18 @@
1.48 else:
1.49 return None
1.50
1.51 +def getFullMonthLabel(request, year_month):
1.52 +
1.53 + """
1.54 + Return the full month plus year label using the given 'request' and
1.55 + 'year_month'.
1.56 + """
1.57 +
1.58 + _ = request.getText
1.59 + year, month = year_month.as_tuple()
1.60 + month_label = _(getMonthLabel(month))
1.61 + return "%s %s" % (month_label, year)
1.62 +
1.63 # Page-related functions.
1.64
1.65 def getPrettyPageName(page):
2.1 --- a/actions/EventAggregatorNewEvent.py Thu Jul 08 22:18:54 2010 +0200
2.2 +++ b/actions/EventAggregatorNewEvent.py Fri Jul 09 01:56:45 2010 +0200
2.3 @@ -82,8 +82,8 @@
2.4
2.5 # Initialise month lists.
2.6
2.7 - start_month_list, end_month_list = self.get_month_lists()
2.8 - start_year_default, end_year_default = self.get_year_defaults()
2.9 + start_month_list, end_month_list = self.get_month_lists(default_as_current=1)
2.10 + start_year_default, end_year_default = self.get_year_defaults(default_as_current=1)
2.11
2.12 # Initialise regime lists.
2.13
3.1 --- a/actions/EventAggregatorSummary.py Thu Jul 08 22:18:54 2010 +0200
3.2 +++ b/actions/EventAggregatorSummary.py Fri Jul 09 01:56:45 2010 +0200
3.3 @@ -48,6 +48,19 @@
3.4 start_month_list, end_month_list = self.get_month_lists()
3.5 start_year_default, end_year_default = self.get_year_defaults()
3.6
3.7 + # Criteria instead of months and years.
3.8 +
3.9 + start_criteria_default = form.get("start", [""])[0]
3.10 + end_criteria_default = form.get("end", [""])[0]
3.11 +
3.12 + start_criteria_evaluated = EventAggregatorSupport.getParameterMonth(start_criteria_default)
3.13 + end_criteria_evaluated = EventAggregatorSupport.getParameterMonth(end_criteria_default)
3.14 +
3.15 + start_criteria_evaluated = start_criteria_evaluated and \
3.16 + EventAggregatorSupport.getFullMonthLabel(request, start_criteria_evaluated) or ""
3.17 + end_criteria_evaluated = end_criteria_evaluated and \
3.18 + EventAggregatorSupport.getFullMonthLabel(request, end_criteria_evaluated) or ""
3.19 +
3.20 # Descriptions.
3.21
3.22 descriptions = form.get("descriptions", [None])[0]
3.23 @@ -71,11 +84,19 @@
3.24 "category_label" : _("Categories"),
3.25 "category_list" : "\n".join(category_list),
3.26 "start_month_list" : "\n".join(start_month_list),
3.27 - "start_label" : _("Start year and month"),
3.28 + "start_label" : _("Start month and year"),
3.29 "start_year_default" : start_year_default,
3.30 + "start_criteria_label" : _("or special criteria"),
3.31 + "start_criteria_default": start_criteria_default,
3.32 + "start_eval_label" : _(">>"),
3.33 + "start_criteria_eval" : start_criteria_evaluated,
3.34 "end_month_list" : "\n".join(end_month_list),
3.35 - "end_label" : _("End year and month"),
3.36 + "end_label" : _("End month and year"),
3.37 "end_year_default" : end_year_default,
3.38 + "end_criteria_label" : _("or special criteria"),
3.39 + "end_criteria_default" : end_criteria_default,
3.40 + "end_eval_label" : _(">>"),
3.41 + "end_criteria_eval" : end_criteria_evaluated,
3.42 "descriptions_label" : _("Use descriptions from..."),
3.43 "descriptions_list" : "\n".join(descriptions_list),
3.44 "format_label" : _("Summary format"),
3.45 @@ -104,6 +125,14 @@
3.46 </td>
3.47 </tr>
3.48 <tr>
3.49 + <td class="label"><label>%(start_criteria_label)s</label></td>
3.50 + <td>
3.51 + <input name="start" type="text" value="%(start_criteria_default)s" size="12" />
3.52 + <input name="start-eval" type="submit" value="%(start_eval_label)s" />
3.53 + %(start_criteria_eval)s
3.54 + </td>
3.55 + </tr>
3.56 + <tr>
3.57 <td class="label"><label>%(end_label)s</label></td>
3.58 <td>
3.59 <select name="end-month">
3.60 @@ -113,6 +142,14 @@
3.61 </td>
3.62 </tr>
3.63 <tr>
3.64 + <td class="label"><label>%(end_criteria_label)s</label></td>
3.65 + <td>
3.66 + <input name="end" type="text" value="%(end_criteria_default)s" size="12" />
3.67 + <input name="end-eval" type="submit" value="%(end_eval_label)s" />
3.68 + %(end_criteria_eval)s
3.69 + </td>
3.70 + </tr>
3.71 + <tr>
3.72 <td class="label"><label>%(descriptions_label)s</label></td>
3.73 <td class="content">
3.74 <select name="descriptions">
4.1 --- a/css/event-aggregator.css Thu Jul 08 22:18:54 2010 +0200
4.2 +++ b/css/event-aggregator.css Fri Jul 09 01:56:45 2010 +0200
4.3 @@ -39,6 +39,15 @@
4.4 border: 1px solid #000;
4.5 }
4.6
4.7 +.event-download-period {
4.8 + display: block;
4.9 +}
4.10 +
4.11 +.event-download-period-raw {
4.12 + display: block;
4.13 + font-size: smaller;
4.14 +}
4.15 +
4.16 .event-view-controls {
4.17 text-align: right;
4.18 }
5.1 --- a/macros/EventAggregator.py Thu Jul 08 22:18:54 2010 +0200
5.2 +++ b/macros/EventAggregator.py Fri Jul 09 01:56:45 2010 +0200
5.3 @@ -68,6 +68,18 @@
5.4 def getQualifiedParameterName(self, argname):
5.5 return EventAggregatorSupport.getQualifiedParameterName(self.calendar_name, argname)
5.6
5.7 + def getMonthYearQueryString(self, argname, year_month, prefix=1):
5.8 + if year_month is not None:
5.9 + year, month = year_month.as_tuple()
5.10 + month_argname = "%s-month" % argname
5.11 + year_argname = "%s-year" % argname
5.12 + if prefix:
5.13 + month_argname = self.getQualifiedParameterName(month_argname)
5.14 + year_argname = self.getQualifiedParameterName(year_argname)
5.15 + return "%s=%s&%s=%s" % (month_argname, month, year_argname, year)
5.16 + else:
5.17 + return ""
5.18 +
5.19 def getMonthQueryString(self, argname, month, prefix=1):
5.20 if month is not None:
5.21 if prefix:
5.22 @@ -83,6 +95,11 @@
5.23 self.getQualifiedParameterName("mode"), mode or self.mode
5.24 )
5.25
5.26 + def getFullMonthLabel(self, year_month):
5.27 + page = self.page
5.28 + request = page.request
5.29 + return EventAggregatorSupport.getFullMonthLabel(request, year_month)
5.30 +
5.31 def writeDownloadControls(self):
5.32 page = self.page
5.33 request = page.request
5.34 @@ -98,8 +115,8 @@
5.35 )
5.36 download_all_link = download_dialogue_link + "&doit=1"
5.37 download_link = download_all_link + ("&%s&%s" % (
5.38 - self.getMonthQueryString("start", self.calendar_start, prefix=0),
5.39 - self.getMonthQueryString("end", self.calendar_end, prefix=0)
5.40 + self.getMonthYearQueryString("start", self.calendar_start, prefix=0),
5.41 + self.getMonthYearQueryString("end", self.calendar_end, prefix=0)
5.42 ))
5.43
5.44 # Subscription links just explicitly select the RSS format.
5.45 @@ -131,11 +148,16 @@
5.46
5.47 # Pop-up descriptions of the downloadable calendars.
5.48
5.49 - calendar_period = "%s - %s" % (self.calendar_start, self.calendar_end)
5.50 + calendar_period = "%s - %s" % (
5.51 + self.getFullMonthLabel(self.calendar_start),
5.52 + self.getFullMonthLabel(self.calendar_end)
5.53 + )
5.54 raw_calendar_period = "%s - %s" % (self.raw_calendar_start, self.raw_calendar_end)
5.55
5.56 # Write the controls.
5.57
5.58 + # Download controls.
5.59 +
5.60 output.append(fmt.div(on=1, css_class="event-download-controls"))
5.61 output.append(fmt.span(on=1, css_class="event-download"))
5.62 output.append(linkToPage(request, page, _("Download this view"), download_link))
5.63 @@ -143,30 +165,47 @@
5.64 output.append(fmt.text(calendar_period))
5.65 output.append(fmt.span(on=0))
5.66 output.append(fmt.span(on=0))
5.67 +
5.68 output.append(fmt.span(on=1, css_class="event-download"))
5.69 output.append(linkToPage(request, page, _("Download this calendar"), download_all_link))
5.70 output.append(fmt.span(on=1, css_class="event-download-popup"))
5.71 + output.append(fmt.span(on=1, css_class="event-download-period"))
5.72 + output.append(fmt.text(calendar_period))
5.73 + output.append(fmt.span(on=0))
5.74 + output.append(fmt.span(on=1, css_class="event-download-period-raw"))
5.75 output.append(fmt.text(raw_calendar_period))
5.76 output.append(fmt.span(on=0))
5.77 output.append(fmt.span(on=0))
5.78 + output.append(fmt.span(on=0))
5.79 +
5.80 output.append(fmt.span(on=1, css_class="event-download"))
5.81 output.append(linkToPage(request, page, _("Download..."), download_dialogue_link))
5.82 output.append(fmt.span(on=1, css_class="event-download-popup"))
5.83 output.append(fmt.text(_("Edit download options")))
5.84 output.append(fmt.span(on=0))
5.85 output.append(fmt.span(on=0))
5.86 +
5.87 + # Subscription controls.
5.88 +
5.89 output.append(fmt.span(on=1, css_class="event-download"))
5.90 output.append(linkToPage(request, page, _("Subscribe to this view"), subscribe_link))
5.91 output.append(fmt.span(on=1, css_class="event-download-popup"))
5.92 output.append(fmt.text(calendar_period))
5.93 output.append(fmt.span(on=0))
5.94 output.append(fmt.span(on=0))
5.95 +
5.96 output.append(fmt.span(on=1, css_class="event-download"))
5.97 output.append(linkToPage(request, page, _("Subscribe to this calendar"), subscribe_all_link))
5.98 output.append(fmt.span(on=1, css_class="event-download-popup"))
5.99 + output.append(fmt.span(on=1, css_class="event-download-period"))
5.100 + output.append(fmt.text(calendar_period))
5.101 + output.append(fmt.span(on=0))
5.102 + output.append(fmt.span(on=1, css_class="event-download-period-raw"))
5.103 output.append(fmt.text(raw_calendar_period))
5.104 output.append(fmt.span(on=0))
5.105 output.append(fmt.span(on=0))
5.106 + output.append(fmt.span(on=0))
5.107 +
5.108 output.append(fmt.span(on=1, css_class="event-download"))
5.109 output.append(linkToPage(request, page, _("Subscribe..."), subscribe_dialogue_link))
5.110 output.append(fmt.span(on=1, css_class="event-download-popup"))
5.111 @@ -219,9 +258,6 @@
5.112
5.113 output = []
5.114
5.115 - year, month = year_month.as_tuple()
5.116 - month_label = _(EventAggregatorSupport.getMonthLabel(month))
5.117 -
5.118 # Prepare navigation links.
5.119
5.120 if self.calendar_name is not None:
5.121 @@ -249,7 +285,7 @@
5.122
5.123 # A link leading to this month being at the top of the calendar.
5.124
5.125 - full_month_label = "%s %s" % (month_label, year)
5.126 + full_month_label = self.getFullMonthLabel(year_month)
5.127 end_month = year_month.month_update(self.number_of_months - 1)
5.128
5.129 month_link = self.getNavigationLink(year_month, end_month)
5.130 @@ -270,11 +306,7 @@
5.131
5.132 else:
5.133 output.append(fmt.span(on=1))
5.134 - output.append(fmt.text(month_label))
5.135 - output.append(fmt.span(on=0))
5.136 - output.append(fmt.text(" "))
5.137 - output.append(fmt.span(on=1))
5.138 - output.append(fmt.text(unicode(year)))
5.139 + output.append(fmt.text(full_month_label))
5.140 output.append(fmt.span(on=0))
5.141
5.142 return "".join(output)