1.1 --- a/actions/EventAggregatorNewEvent.py Sat Jun 06 23:37:14 2009 +0200
1.2 +++ b/actions/EventAggregatorNewEvent.py Sun Jun 07 00:14:21 2009 +0200
1.3 @@ -25,14 +25,14 @@
1.4
1.5 "An event creation dialogue requesting various parameters."
1.6
1.7 - def _get_selected(self, month, input_month):
1.8 - return input_month is not None and month == input_month and 'selected="selected"' or ''
1.9 + def _get_selected(self, value, input_value):
1.10 + return input_value is not None and value == input_value and 'selected="selected"' or ''
1.11
1.12 - def _get_input(self, form, name, default, error):
1.13 - try:
1.14 - return int(form.get(name, [None])[0] or default)
1.15 - except ValueError:
1.16 - return error
1.17 + def _get_selected_for_list(self, value, input_values):
1.18 + return value in input_values and 'selected="selected"' or ''
1.19 +
1.20 + def _get_input(self, form, name, default):
1.21 + return int(form.get(name, [None])[0] or default)
1.22
1.23 def get_form_html(self, buttons_html):
1.24 _ = self._
1.25 @@ -41,12 +41,15 @@
1.26
1.27 category_list = []
1.28
1.29 + category_pagenames = form.get("category", [])
1.30 +
1.31 for category_name, category_pagename in \
1.32 EventAggregatorSupport.getCategoryMapping(
1.33 EventAggregatorSupport.getCategories(request),
1.34 request):
1.35
1.36 - category_list.append('<option value="%s">%s</option>' % (category_pagename, category_name))
1.37 + selected = self._get_selected_for_list(category_pagename, category_pagenames)
1.38 + category_list.append('<option value="%s" %s>%s</option>' % (category_pagename, selected, category_name))
1.39
1.40 # Initialise month lists.
1.41
1.42 @@ -55,10 +58,8 @@
1.43 end_month_list = []
1.44 end_month_list.append('<option value=""></option>')
1.45
1.46 - start_month = self._get_input(form, "start-month", 0, None)
1.47 - end_month = self._get_input(form, "end-month", 0, None)
1.48 - start_year = self._get_input(form, "start-year", EventAggregatorSupport.getCurrentYear(), None)
1.49 - end_year = self._get_input(form, "end-year", 0, None)
1.50 + start_month = self._get_input(form, "start-month", 0)
1.51 + end_month = self._get_input(form, "end-month", 0)
1.52
1.53 # Prepare month lists, selecting specified months.
1.54
1.55 @@ -77,11 +78,12 @@
1.56 "end_month_list" : "\n".join(end_month_list),
1.57 "start_label" : _("Start date (day, month, year)"),
1.58 "start_day_default" : form.get("start-day", [""])[0],
1.59 - "start_year_default" : start_year,
1.60 + "start_year_default" : form.get("start-year", [""])[0] or EventAggregatorSupport.getCurrentYear(),
1.61 "end_label" : _("End date (day, month, year)"),
1.62 "end_day_default" : form.get("end-day", [""])[0],
1.63 "end_year_default" : form.get("end-year", [""])[0],
1.64 "title_label" : _("Event title/summary"),
1.65 + "title_default" : form.get("title", [""])[0],
1.66 }
1.67
1.68 return '''
1.69 @@ -89,7 +91,9 @@
1.70 <tr>
1.71 <td class="label"><label>%(title_label)s</label></td>
1.72 <td>
1.73 - <input name="title" type="text" size="40" />
1.74 + <input name="title" type="text" size="40" value="%(title_default)s" />
1.75 + </td>
1.76 + </tr>
1.77 <tr>
1.78 <td class="label"><label>%(category_label)s</label></td>
1.79 <td class="content">
1.80 @@ -160,21 +164,21 @@
1.81 _ = request.getText
1.82 form = request.form
1.83
1.84 - category_names = form.get("category", [])
1.85 + category_pagenames = form.get("category", [])
1.86 title = form.get("title", [None])[0]
1.87
1.88 try:
1.89 - start_day = self._get_input(form, "start-day", 0, None)
1.90 - start_month = self._get_input(form, "start-month", 0, None)
1.91 - start_year = self._get_input(form, "start-year", 0, None)
1.92 - end_day = self._get_input(form, "end-day", start_day, None)
1.93 - end_month = self._get_input(form, "end-month", start_month, None)
1.94 - end_year = self._get_input(form, "end-year", start_year, None)
1.95 + start_day = self._get_input(form, "start-day", 0)
1.96 + start_month = self._get_input(form, "start-month", 0)
1.97 + start_year = self._get_input(form, "start-year", 0)
1.98 + end_day = self._get_input(form, "end-day", start_day)
1.99 + end_month = self._get_input(form, "end-month", start_month)
1.100 + end_year = self._get_input(form, "end-year", start_year)
1.101
1.102 start_year, start_month, start_day = self.constrain_date(start_year, start_month, start_day)
1.103 end_year, end_month, end_day = self.constrain_date(end_year, end_month, end_day)
1.104
1.105 - except ValueError:
1.106 + except (TypeError, ValueError):
1.107 return 0, _("Days and years must be numbers yielding a valid date!")
1.108
1.109 start_date = self.make_date_string(start_year, start_month, start_day)
1.110 @@ -196,7 +200,7 @@
1.111 if EventAggregatorSupport.getFormat(page) == "wiki":
1.112 event_details = {"start" : start_date, "end" : end_date, "title" : title, "summary" : title}
1.113 body = EventAggregatorSupport.setEventDetails(body, event_details)
1.114 - body = EventAggregatorSupport.setCategoryMembership(body, category_names)
1.115 + body = EventAggregatorSupport.setCategoryMembership(body, category_pagenames)
1.116 new_page.saveText(body, 0)
1.117
1.118 # Redirect and return success.