1.1 --- a/actions/EventAggregatorNewEvent.py Wed Nov 07 00:48:08 2012 +0100
1.2 +++ b/actions/EventAggregatorNewEvent.py Sun Nov 18 00:15:57 2012 +0100
1.3 @@ -2,7 +2,7 @@
1.4 """
1.5 MoinMoin - EventAggregatorNewEvent Action
1.6
1.7 - @copyright: 2008, 2009, 2010, 2011 by Paul Boddie <paul@boddie.org.uk>
1.8 + @copyright: 2008, 2009, 2010, 2011, 2012 by Paul Boddie <paul@boddie.org.uk>
1.9 @copyright: 2000-2004 Juergen Hermann <jh@web.de>,
1.10 2003-2008 MoinMoin:ThomasWaldmann,
1.11 2004-2006 MoinMoin:AlexanderSchremmer,
1.12 @@ -15,6 +15,7 @@
1.13 from MoinMoin.PageEditor import PageEditor
1.14 from MoinMoin import config
1.15 from EventAggregatorSupport import *
1.16 +import re
1.17
1.18 try:
1.19 import pytz
1.20 @@ -40,6 +41,11 @@
1.21 show_end_date = form.get("end-day") and not form.get("hide-end-date") or form.get("show-end-date")
1.22 show_times = (form.get("start-hour") or form.get("end-hour")) and not form.get("hide-times") or form.get("show-times")
1.23 show_location = form.get("show-location") or form.get("new-location") and not form.get("hide-location")
1.24 + choose_page_name = form.get("page-name") and not form.get("auto-page-name") or form.get("choose-page-name")
1.25 +
1.26 + # Define the overridden page name, if appropriate.
1.27 +
1.28 + page_name = choose_page_name and form.get("page-name", ["@PARENT@/@TITLE@"])[0] or ""
1.29
1.30 # Prepare the category list.
1.31
1.32 @@ -184,6 +190,10 @@
1.33
1.34 "title_label" : escape(_("Event title/summary")),
1.35 "title_default" : escattr(form.get("title", [""])[0]),
1.36 + "choose_page_name_label": escape(_("Choose page name")),
1.37 + "auto_page_name_label" : escape(_("Auto page name")),
1.38 + "page_name_label" : escape(_("Page name")),
1.39 + "page_name_default" : escattr(form.get("page-name", [page_name])[0]),
1.40 "description_label" : escape(_("Event description")),
1.41 "description_default" : escattr(form.get("description", [""])[0]),
1.42
1.43 @@ -225,6 +235,28 @@
1.44 </td>
1.45 </tr>''' % d
1.46
1.47 + # Page name options.
1.48 +
1.49 + if choose_page_name:
1.50 + html += '''
1.51 + <tr>
1.52 + <td class="label"><label>%(page_name_label)s</label></td>
1.53 + <td colspan="2">
1.54 + <input name="page-name" type="text" size="40" value="%(page_name_default)s" />
1.55 + </td>
1.56 + <tr>
1.57 + <td class="label">
1.58 + <input name="auto-page-name" type="submit" value="%(auto_page_name_label)s" />
1.59 + </td>
1.60 + </tr>''' % d
1.61 + else:
1.62 + html += '''
1.63 + <tr>
1.64 + <td class="label">
1.65 + <input name="choose-page-name" type="submit" value="%(choose_page_name_label)s" />
1.66 + </td>
1.67 + </tr>''' % d
1.68 +
1.69 # Location options.
1.70
1.71 html += '''
1.72 @@ -651,6 +683,8 @@
1.73 start_zone = start_regime or start_offset
1.74 end_zone = end_regime or end_offset
1.75
1.76 + page_name = form.get("page-name", [None])[0]
1.77 +
1.78 # Validate certain fields.
1.79
1.80 title = form.get("title", [""])[0].strip()
1.81 @@ -725,9 +759,28 @@
1.82
1.83 full_title = getFullPageName(parent, title)
1.84
1.85 + if page_name:
1.86 +
1.87 + # Allow parameters in the page name. This permits a degree of
1.88 + # interoperability with MonthCalendar.
1.89 +
1.90 + page_name = page_name.replace("@PAGE@", request.page.page_name)
1.91 + page_name = page_name.replace("@DATE@", str(start_date.as_date()))
1.92 + page_name = page_name.replace("@STARTDATE@", str(start_date.as_date()))
1.93 + page_name = page_name.replace("@ENDDATE@", str(end_date.as_date()))
1.94 + page_name = page_name.replace("@PARENT@", parent)
1.95 + page_name = page_name.replace("@TITLE@", title)
1.96 +
1.97 + # Normalise any page hierarchy separators.
1.98 +
1.99 + page_name = re.sub("/+", "/", page_name)
1.100 +
1.101 + else:
1.102 + page_name = full_title
1.103 +
1.104 # Load the new page and replace the event details in the body.
1.105
1.106 - new_page = PageEditor(request, full_title)
1.107 + new_page = PageEditor(request, page_name)
1.108
1.109 if new_page.exists():
1.110 return 0, _("The specified page already exists. Please choose another name.")