From 73042183b3f0e7ff1bc096c7da961bd3ca0d439d Mon Sep 17 00:00:00 2001 From: werners Date: Tue, 18 Nov 2008 12:59:50 +0000 Subject: [PATCH] Category List and speaking URL git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3000 fd906abe-77d9-0310-91a1-e0d9ade77398 --- layout/browser/concept.py | 9 ++++++++- layout/browser/traversal.py | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/layout/browser/concept.py b/layout/browser/concept.py index 24cde89..c517372 100644 --- a/layout/browser/concept.py +++ b/layout/browser/concept.py @@ -22,6 +22,8 @@ Layout-based concept views. $Id$ """ +import re + from zope import component from zope.cachedescriptors.property import Lazy from zope.traversing.browser import absoluteURL @@ -45,7 +47,7 @@ class ConceptView(object): @Lazy def url(self): - return '%s/.%s' % (absoluteURL(self.node, self.request), self.context.uid) + return '%s/.%s-%s' % (absoluteURL(self.node, self.request), self.context.uid, normalize(self.context.title)) @property def children(self): @@ -54,3 +56,8 @@ class ConceptView(object): view.node = self.node yield view + +pattern = re.compile(r'[ /\?\+%]') + +def normalize(text): + return pattern.sub('-', text) diff --git a/layout/browser/traversal.py b/layout/browser/traversal.py index 29beeef..257b0ab 100644 --- a/layout/browser/traversal.py +++ b/layout/browser/traversal.py @@ -40,6 +40,8 @@ class NodeTraverser(ItemTraverser): def publishTraverse(self, request, name): if name.startswith('.'): if len(name) > 1: + if '-' in name: + name, ignore = name.split('-', 1) uid = int(name[1:]) target = util.getObjectForUid(uid) else: