From 44f38115baf6a4b5c941729884208eb4528fb2e0 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sun, 11 Dec 2011 13:52:40 +0100 Subject: [PATCH] correctly quote title in informative URLs to avoid unicode errors --- browser/util.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/browser/util.py b/browser/util.py index ca12040..cf015e2 100644 --- a/browser/util.py +++ b/browser/util.py @@ -20,16 +20,15 @@ Utilities. """ -import re -from zope.app import zapi +import re, urllib from zope.app.pagetemplate import ViewPageTemplateFile from zope.app.publisher.browser.menu import BrowserMenu from zope.app.publisher.interfaces.browser import IBrowserSubMenuItem +from zope import component from zope.formlib.namedtemplate import NamedTemplateImplementation pageform = NamedTemplateImplementation(ViewPageTemplateFile('pageform.pt')) -#dataform = NamedTemplateImplementation(ViewPageTemplateFile('dataform.pt')) dataform = ViewPageTemplateFile('dataform.pt') concept_macros = NamedTemplateImplementation(ViewPageTemplateFile('concept_macros.pt')) @@ -44,7 +43,7 @@ class LoopsMenu(BrowserMenu): def getMenuItems(self, object, request): """Return menu item entries in a TAL-friendly form.""" result = sorted([(item.order, item.action.lower(), item) - for name, item in zapi.getAdapters( + for name, item in component.getAdapters( (object, request), self.getMenuItemType()) if item.available()]) return [ @@ -66,7 +65,7 @@ def html_quote(text, character_entities=((u'&', u'&'), (u'<', u'<' ), return text -pattern = re.compile(r'[ /\?\+%]') +pattern = re.compile(r'[ /\?\+\|%]') def normalizeForUrl(text): - return pattern.sub('-', text) + return urllib.quote(pattern.sub('-', text).encode('UTF-8'))