1.1 --- a/actions/EventAggregatorSummary.py Sun Feb 06 02:38:17 2011 +0100
1.2 +++ b/actions/EventAggregatorSummary.py Sat Feb 19 03:06:03 2011 +0100
1.3 @@ -14,7 +14,6 @@
1.4 from MoinMoin.action import ActionBase
1.5 from MoinMoin import config
1.6 from MoinMoin.Page import Page
1.7 -import MoinMoin.util # for MoinMoin 1.5.x
1.8 from MoinMoin import wikiutil
1.9 import EventAggregatorSupport
1.10
1.11 @@ -25,50 +24,82 @@
1.12
1.13 # Action class and supporting functions.
1.14
1.15 -class EventAggregatorSummary(ActionBase):
1.16 +class EventAggregatorSummary(ActionBase, EventAggregatorSupport.ActionSupport):
1.17
1.18 "A summary dialogue requesting various parameters."
1.19
1.20 def get_form_html(self, buttons_html):
1.21 _ = self._
1.22 request = self.request
1.23 - form = request.form
1.24 + form = self.get_form()
1.25
1.26 category_list = []
1.27 + category_pagenames = form.get("category", [])
1.28
1.29 for category_name, category_pagename in \
1.30 EventAggregatorSupport.getCategoryMapping(
1.31 EventAggregatorSupport.getCategories(request),
1.32 request):
1.33
1.34 - category_list.append('<option value="%s">%s</option>' % (escattr(category_pagename), escape(category_name)))
1.35 + selected = self._get_selected_for_list(category_pagename, category_pagenames)
1.36 + category_list.append('<option value="%s" %s>%s</option>' % (escattr(category_pagename), selected, escape(category_name)))
1.37 +
1.38 + # Initialise month lists.
1.39 +
1.40 + start_month_list, end_month_list = self.get_month_lists()
1.41 + start_year_default, end_year_default = self.get_year_defaults()
1.42 +
1.43 + # Criteria instead of months and years.
1.44
1.45 - month_list = []
1.46 - month_list.append('<option value=""></option>')
1.47 + start_criteria_default = form.get("start", [""])[0]
1.48 + end_criteria_default = form.get("end", [""])[0]
1.49 +
1.50 + start_criteria_evaluated = EventAggregatorSupport.getParameterMonth(start_criteria_default)
1.51 + end_criteria_evaluated = EventAggregatorSupport.getParameterMonth(end_criteria_default)
1.52
1.53 - for month in range(1, 13):
1.54 - month_label = _(EventAggregatorSupport.getMonthLabel(month))
1.55 - month_list.append('<option value="%02d">%s</option>' % (month, escape(month_label)))
1.56 + start_criteria_evaluated = start_criteria_evaluated and \
1.57 + EventAggregatorSupport.getFullMonthLabel(request, start_criteria_evaluated) or ""
1.58 + end_criteria_evaluated = end_criteria_evaluated and \
1.59 + EventAggregatorSupport.getFullMonthLabel(request, end_criteria_evaluated) or ""
1.60 +
1.61 + # Descriptions.
1.62 +
1.63 + descriptions = form.get("descriptions", [None])[0]
1.64
1.65 descriptions_list = [
1.66 - '<option value="%s">%s</option>' % ("page", escape(_("page"))),
1.67 - '<option value="%s">%s</option>' % ("comment", escape(_("comment")))
1.68 + '<option value="%s" %s>%s</option>' % ("page", self._get_selected("page", descriptions), escape(_("page"))),
1.69 + '<option value="%s" %s>%s</option>' % ("comment", self._get_selected("comment", descriptions), escape(_("comment")))
1.70 ]
1.71
1.72 + # Format.
1.73 +
1.74 + format = form.get("format", [None])[0]
1.75 +
1.76 format_list = [
1.77 - '<option value="%s">%s</option>' % ("iCalendar", escape(_("iCalendar"))),
1.78 - '<option value="%s">%s</option>' % ("RSS", escape(_("RSS 2.0")))
1.79 + '<option value="%s" %s>%s</option>' % ("iCalendar", self._get_selected("iCalendar", format), escape(_("iCalendar"))),
1.80 + '<option value="%s" %s>%s</option>' % ("RSS", self._get_selected("RSS", format), escape(_("RSS 2.0")))
1.81 ]
1.82
1.83 + right_arrow = unicode('\xe2\x86\x92', "utf-8")
1.84 +
1.85 d = {
1.86 "buttons_html" : buttons_html,
1.87 "category_label" : escape(_("Categories")),
1.88 "category_list" : "\n".join(category_list),
1.89 - "month_list" : "\n".join(month_list),
1.90 + "start_month_list" : "\n".join(start_month_list),
1.91 "start_label" : escape(_("Start year and month")),
1.92 - "start_year_default" : "",
1.93 + "start_year_default" : escattr(start_year_default),
1.94 + "start_criteria_label" : escape(_("or special criteria")),
1.95 + "start_criteria_default": escattr(start_criteria_default),
1.96 + "start_eval_label" : escape(right_arrow),
1.97 + "start_criteria_eval" : escape(start_criteria_evaluated),
1.98 + "end_month_list" : "\n".join(end_month_list),
1.99 "end_label" : escape(_("End year and month")),
1.100 - "end_year_default" : "",
1.101 + "end_year_default" : escattr(end_year_default),
1.102 + "end_criteria_label" : escape(_("or special criteria")),
1.103 + "end_criteria_default" : escattr(end_criteria_default),
1.104 + "end_eval_label" : escape(right_arrow),
1.105 + "end_criteria_eval" : escape(end_criteria_evaluated),
1.106 "descriptions_label" : escape(_("Use descriptions from...")),
1.107 "descriptions_list" : "\n".join(descriptions_list),
1.108 "format_label" : escape(_("Summary format")),
1.109 @@ -91,21 +122,37 @@
1.110 <td class="label"><label>%(start_label)s</label></td>
1.111 <td>
1.112 <select name="start-month">
1.113 - %(month_list)s
1.114 + %(start_month_list)s
1.115 </select>
1.116 <input name="start-year" type="text" value="%(start_year_default)s" size="4" />
1.117 </td>
1.118 </tr>
1.119 <tr>
1.120 + <td class="label"><label>%(start_criteria_label)s</label></td>
1.121 + <td>
1.122 + <input name="start" type="text" value="%(start_criteria_default)s" size="12" />
1.123 + <input name="start-eval" type="submit" value="%(start_eval_label)s" />
1.124 + %(start_criteria_eval)s
1.125 + </td>
1.126 + </tr>
1.127 + <tr>
1.128 <td class="label"><label>%(end_label)s</label></td>
1.129 <td>
1.130 <select name="end-month">
1.131 - %(month_list)s
1.132 + %(end_month_list)s
1.133 </select>
1.134 <input name="end-year" type="text" value="%(end_year_default)s" size="4" />
1.135 </td>
1.136 </tr>
1.137 <tr>
1.138 + <td class="label"><label>%(end_criteria_label)s</label></td>
1.139 + <td>
1.140 + <input name="end" type="text" value="%(end_criteria_default)s" size="12" />
1.141 + <input name="end-eval" type="submit" value="%(end_eval_label)s" />
1.142 + %(end_criteria_eval)s
1.143 + </td>
1.144 + </tr>
1.145 + <tr>
1.146 <td class="label"><label>%(descriptions_label)s</label></td>
1.147 <td class="content">
1.148 <select name="descriptions">
1.149 @@ -141,7 +188,7 @@
1.150 "Write the iCalendar resource."
1.151
1.152 _ = self._
1.153 - form = self.request.form
1.154 + form = self.get_form()
1.155
1.156 # If no category names exist in the request, an error message is
1.157 # returned.
1.158 @@ -179,7 +226,7 @@
1.159 can be specified.
1.160 """
1.161
1.162 - form = request.form
1.163 + form = EventAggregatorSupport.get_form(request)
1.164
1.165 category_names = form.get("category", [])
1.166 format = form.get("format", ["iCalendar"])[0]
1.167 @@ -206,10 +253,12 @@
1.168
1.169 # Output summary data...
1.170
1.171 - if EventAggregatorSupport.isMoin15():
1.172 + if hasattr(request, "http_headers"):
1.173 send_headers = request.http_headers
1.174 + elif hasattr(request, "emit_http_headers"):
1.175 + send_headers = request.emit_http_headers
1.176 else:
1.177 - send_headers = request.emit_http_headers
1.178 + send_headers = EventAggregatorSupport.send_headers(request)
1.179
1.180 # Define headers.
1.181
1.182 @@ -285,12 +334,19 @@
1.183 # Using the page name and the page URL in the title, link and
1.184 # description.
1.185
1.186 + if hasattr(request, "getPathinfo"):
1.187 + path_info = request.getPathinfo()
1.188 + else:
1.189 + path_info = request.path
1.190 +
1.191 request.write('<rss version="2.0">\r\n')
1.192 request.write('<channel>\r\n')
1.193 - request.write('<title>%s</title>\r\n' % request.getPathinfo()[1:])
1.194 - request.write('<link>%s%s</link>\r\n' % (request.getBaseURL(), request.getPathinfo()))
1.195 - request.write('<description>Events published on %s%s</description>\r\n' % (request.getBaseURL(), request.getPathinfo()))
1.196 - request.write('<lastBuildDate>%s</lastBuildDate>\r\n' % EventAggregatorSupport.getHTTPTimeString(latest_timestamp))
1.197 + request.write('<title>%s</title>\r\n' % path_info[1:])
1.198 + request.write('<link>%s%s</link>\r\n' % (request.getBaseURL(), path_info))
1.199 + request.write('<description>Events published on %s%s</description>\r\n' % (request.getBaseURL(), path_info))
1.200 +
1.201 + if latest_timestamp is not None:
1.202 + request.write('<lastBuildDate>%s</lastBuildDate>\r\n' % EventAggregatorSupport.getHTTPTimeString(latest_timestamp))
1.203
1.204 # Sort all_shown_events by start date, reversed:
1.205 #
1.206 @@ -335,9 +391,6 @@
1.207 request.write('</channel>\r\n')
1.208 request.write('</rss>\r\n')
1.209
1.210 - if EventAggregatorSupport.isMoin15():
1.211 - raise MoinMoin.util.MoinMoinNoFooter
1.212 -
1.213 def write_calendar_datetime(request, datetime):
1.214
1.215 """