# HG changeset patch # User Paul Boddie # Date 1322523194 -3600 # Node ID d99e03c37375a9bd5503da012c17e617602a7fb2 # Parent 13a33b37aeacda9d1e2323ba5642f8c2fde35357 Replaced the download and subscription links with pop-up elements containing links to the view, calendar and custom resources, retaining descriptions of those resources, and adding specific "webcal" and "http" links for iCalendar resources. Fixed raw date parameter quoting so that "current+1" is sent to actions correctly. Moved getPathInfo into the support module. diff -r 13a33b37aeac -r d99e03c37375 EventAggregatorSupport.py --- a/EventAggregatorSupport.py Fri Nov 25 00:04:53 2011 +0100 +++ b/EventAggregatorSupport.py Tue Nov 29 00:33:14 2011 +0100 @@ -349,6 +349,12 @@ def escattr(s): return escape(s, 1) +def getPathInfo(request): + if hasattr(request, "getPathinfo"): + return request.getPathinfo() + else: + return request.path + # Textual representations. def getSimpleWikiText(text): diff -r 13a33b37aeac -r d99e03c37375 actions/EventAggregatorSummary.py --- a/actions/EventAggregatorSummary.py Fri Nov 25 00:04:53 2011 +0100 +++ b/actions/EventAggregatorSummary.py Tue Nov 29 00:33:14 2011 +0100 @@ -381,10 +381,7 @@ # Using the page name and the page URL in the title, link and # description. - if hasattr(request, "getPathinfo"): - path_info = request.getPathinfo() - else: - path_info = request.path + path_info = getPathInfo(request) request.write('\r\n') request.write('\r\n') diff -r 13a33b37aeac -r d99e03c37375 css/event-aggregator.css --- a/css/event-aggregator.css Fri Nov 25 00:04:53 2011 +0100 +++ b/css/event-aggregator.css Tue Nov 29 00:33:14 2011 +0100 @@ -32,11 +32,6 @@ position: relative; } -.event-view a, -.event-download a { - font-size: smaller; -} - .event-download-popup { display: none; } @@ -45,22 +40,67 @@ .event-day-box:hover .event-day-number-popup { display: block; position: absolute; - top: 1.5em; + top: 1.25em; left: 0; z-index: 3; background-color: #fff; color: #000; - padding: 0.5em; + padding: 0.5em 0.5em 0 0.5em; border: 1px solid #000; } +.event-download-item { + padding-top: 0.5em; + margin-bottom: 0.5em; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + white-space: nowrap; +} + +.event-download-webcal a { + background-color: #99d; +} + +.event-download-http a { + background-color: #d99; +} + +.event-download-webcal a:link:hover, +.event-download-webcal a:link:active { + background-color: #00d; +} + +.event-download-http a:link:hover, +.event-download-http a:link:active { + background-color: #d00; +} + +.event-download-webcal a, +.event-download-webcal a:link, +.event-download-webcal a:link:hover, +.event-download-webcal a:link:active, +.event-download-http a, +.event-download-http a:link, +.event-download-http a:link:hover, +.event-download-http a:link:active { + font-size: inherit; + font-weight: bold; + color: #fff; + text-decoration: none; + padding: 0.25em; + margin-right: 0.25em; +} + .event-download-period { display: block; + margin-top: 0.5em; + text-align: right; } .event-download-period-raw { display: block; font-size: smaller; + text-align: right; } /* Calendar view. */ diff -r 13a33b37aeac -r d99e03c37375 macros/EventAggregator.py --- a/macros/EventAggregator.py Fri Nov 25 00:04:53 2011 +0100 +++ b/macros/EventAggregator.py Tue Nov 29 00:33:14 2011 +0100 @@ -142,7 +142,7 @@ if date is not None: if prefix: argname = self.getQualifiedParameterName(argname) - return "%s=%s" % (argname, date) + return "%s=%s" % (argname, wikiutil.url_quote_plus(date)) else: return "" @@ -250,6 +250,10 @@ output = [] + # The full URL is needed for webcal links. + + full_url = "%s%s" % (request.getBaseURL(), getPathInfo(request)) + # Generate the links. download_dialogue_link = "action=EventAggregatorSummary&parent=%s&resolution=%s&%s&%s" % ( @@ -302,61 +306,101 @@ # Download controls. output.append(fmt.div(on=1, css_class="event-download-controls")) + output.append(fmt.span(on=1, css_class="event-download")) - output.append(linkToPage(request, page, _("Download this view"), download_link)) - output.append(fmt.span(on=1, css_class="event-download-popup")) + output.append(fmt.text(_("Download..."))) + output.append(fmt.div(on=1, css_class="event-download-popup")) + + output.append(fmt.div(on=1, css_class="event-download-item")) + output.append(fmt.span(on=1, css_class="event-download-types")) + output.append(fmt.span(on=1, css_class="event-download-webcal")) + output.append(linkToResource(full_url.replace("http", "webcal", 1), request, _("webcal"), download_link)) + output.append(fmt.span(on=0)) + output.append(fmt.span(on=1, css_class="event-download-http")) + output.append(linkToPage(request, page, _("http"), download_link)) + output.append(fmt.span(on=0)) + output.append(fmt.span(on=0)) # end types + output.append(fmt.span(on=1, css_class="event-download-label")) + output.append(fmt.text(_("Download this view"))) + output.append(fmt.span(on=0)) # end label + output.append(fmt.span(on=1, css_class="event-download-period")) output.append(fmt.text(calendar_period)) output.append(fmt.span(on=0)) + output.append(fmt.div(on=0)) + + output.append(fmt.div(on=1, css_class="event-download-item")) + output.append(fmt.span(on=1, css_class="event-download-types")) + output.append(fmt.span(on=1, css_class="event-download-webcal")) + output.append(linkToResource(full_url.replace("http", "webcal", 1), request, _("webcal"), download_all_link)) output.append(fmt.span(on=0)) - - output.append(fmt.span(on=1, css_class="event-download")) - output.append(linkToPage(request, page, _("Download this calendar"), download_all_link)) - output.append(fmt.span(on=1, css_class="event-download-popup")) + output.append(fmt.span(on=1, css_class="event-download-http")) + output.append(linkToPage(request, page, _("http"), download_all_link)) + output.append(fmt.span(on=0)) + output.append(fmt.span(on=0)) # end types + output.append(fmt.span(on=1, css_class="event-download-label")) + output.append(fmt.text(_("Download this calendar"))) + output.append(fmt.span(on=0)) # end label output.append(fmt.span(on=1, css_class="event-download-period")) output.append(fmt.text(original_calendar_period)) output.append(fmt.span(on=0)) output.append(fmt.span(on=1, css_class="event-download-period-raw")) output.append(fmt.text(raw_calendar_period)) output.append(fmt.span(on=0)) - output.append(fmt.span(on=0)) - output.append(fmt.span(on=0)) - - output.append(fmt.span(on=1, css_class="event-download")) + output.append(fmt.div(on=0)) + + output.append(fmt.div(on=1, css_class="event-download-item")) + output.append(fmt.span(on=1, css_class="event-download-label")) output.append(linkToPage(request, page, _("Download..."), download_dialogue_link)) - output.append(fmt.span(on=1, css_class="event-download-popup")) + output.append(fmt.span(on=0)) # end label + output.append(fmt.span(on=1, css_class="event-download-period")) output.append(fmt.text(_("Edit download options"))) output.append(fmt.span(on=0)) - output.append(fmt.span(on=0)) + output.append(fmt.div(on=0)) + + output.append(fmt.div(on=0)) # end of pop-up + output.append(fmt.span(on=0)) # end of download # Subscription controls. output.append(fmt.span(on=1, css_class="event-download")) + output.append(fmt.text(_("Subscribe..."))) + output.append(fmt.div(on=1, css_class="event-download-popup")) + + output.append(fmt.div(on=1, css_class="event-download-item")) + output.append(fmt.span(on=1, css_class="event-download-label")) output.append(linkToPage(request, page, _("Subscribe to this view"), subscribe_link)) - output.append(fmt.span(on=1, css_class="event-download-popup")) + output.append(fmt.span(on=0)) # end label + output.append(fmt.span(on=1, css_class="event-download-period")) output.append(fmt.text(calendar_period)) output.append(fmt.span(on=0)) - output.append(fmt.span(on=0)) - - output.append(fmt.span(on=1, css_class="event-download")) + output.append(fmt.div(on=0)) + + output.append(fmt.div(on=1, css_class="event-download-item")) + output.append(fmt.span(on=1, css_class="event-download-label")) output.append(linkToPage(request, page, _("Subscribe to this calendar"), subscribe_all_link)) - output.append(fmt.span(on=1, css_class="event-download-popup")) + output.append(fmt.span(on=0)) # end label output.append(fmt.span(on=1, css_class="event-download-period")) output.append(fmt.text(original_calendar_period)) output.append(fmt.span(on=0)) output.append(fmt.span(on=1, css_class="event-download-period-raw")) output.append(fmt.text(raw_calendar_period)) output.append(fmt.span(on=0)) - output.append(fmt.span(on=0)) - output.append(fmt.span(on=0)) - - output.append(fmt.span(on=1, css_class="event-download")) + output.append(fmt.div(on=0)) + + output.append(fmt.div(on=1, css_class="event-download-item")) + output.append(fmt.span(on=1, css_class="event-download-label")) output.append(linkToPage(request, page, _("Subscribe..."), subscribe_dialogue_link)) - output.append(fmt.span(on=1, css_class="event-download-popup")) + output.append(fmt.span(on=0)) # end label + output.append(fmt.span(on=1, css_class="event-download-period")) output.append(fmt.text(_("Edit subscription options"))) output.append(fmt.span(on=0)) - output.append(fmt.span(on=0)) output.append(fmt.div(on=0)) + output.append(fmt.div(on=0)) # end of pop-up + output.append(fmt.span(on=0)) # end of download + + output.append(fmt.div(on=0)) # end of controls + return "".join(output) def writeViewControls(self):