From b91c67f0389c2db264fe826c25cdbaac94492af1 Mon Sep 17 00:00:00 2001 From: helmutm Date: Thu, 16 Jul 2009 06:05:03 +0000 Subject: [PATCH] remove 'target' string from URLs, '.NNNN' is sufficient git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3458 fd906abe-77d9-0310-91a1-e0d9ade77398 --- README.txt | 2 +- browser/concept_macros.pt | 9 +++-- browser/node.py | 71 +++++++++++++++++++++++++----------- browser/node_macros.pt | 3 +- browser/resource_macros.pt | 16 +++++--- organize/README.txt | 2 +- versioning/version_macros.pt | 10 ++++- 7 files changed, 77 insertions(+), 36 deletions(-) diff --git a/README.txt b/README.txt index 1eb6180..f4a48d4 100755 --- a/README.txt +++ b/README.txt @@ -594,7 +594,7 @@ is ``NodeView.getUrlForTarget()`` that expects a ConceptView, ResourceView, or ConceptRelationView as its argument. >>> view.getUrlForTarget(childRels[0]) - 'http://127.0.0.1/loops/views/m1/m11/m112/.target37' + 'http://127.0.0.1/loops/views/m1/m11/m112/.37' Actions ------- diff --git a/browser/concept_macros.pt b/browser/concept_macros.pt index 5b381b0..2c1ee51 100644 --- a/browser/concept_macros.pt +++ b/browser/concept_macros.pt @@ -76,7 +76,7 @@

Parents

Concept Title
@@ -104,7 +104,7 @@ Resource Title @@ -162,7 +162,7 @@ tal:attributes="value uid;" /> 1.1 + tal:define="url python: view.getUrlForTarget(related)" + tal:attributes="href string:${url}?loops.viewName=listversions">1.1 diff --git a/browser/node.py b/browser/node.py index 6001e6a..f04e12a 100644 --- a/browser/node.py +++ b/browser/node.py @@ -222,7 +222,8 @@ class NodeView(BaseView): def targetUrl(self): t = self.targetObjectView if t is not None: - return '%s/.target%s' % (self.url, t.uniqueId) + #return '%s/.target%s' % (self.url, t.uniqueId) + return '%s/.%s' % (self.url, t.uniqueId) return '' def renderTarget(self): @@ -388,7 +389,8 @@ class NodeView(BaseView): def virtualTargetUrl(self): targetId = self.targetId if targetId is not None: - return '%s/.target%s' % (self.url, targetId) + #return '%s/.target%s' % (self.url, targetId) + return '%s/.%s' % (self.url, targetId) else: return self.url @@ -411,12 +413,14 @@ class NodeView(BaseView): # target viewing and editing support def getUrlForTarget(self, target): - """ Return URL of given target view given as .targetXXX URL. + """ Return URL of given target view given as .XXX URL. """ if isinstance(target, BaseView): - return '%s/.target%s' % (self.url, target.uniqueId) + #return '%s/.target%s' % (self.url, target.uniqueId) + return '%s/.%s' % (self.url, target.uniqueId) else: - return ('%s/.target%s' % + #return ('%s/.target%s' % + return ('%s/.%s' % (self.url, util.getUidForObject(target))) def getActions(self, category='object', target=None): @@ -794,23 +798,24 @@ class NodeTraverser(ItemTraverser): setViewConfiguration(context, request) if name == '.loops': return self.context.getLoopsRoot() - if name.startswith('.target'): - traversalStack = request._traversal_stack - while traversalStack and traversalStack[0].startswith('.target'): - # skip obsolete target references in the url - name = traversalStack.pop(0) - traversedNames = request._traversed_names - if traversedNames: - lastTraversed = traversedNames[-1] - if lastTraversed.startswith('.target') and lastTraversed != name: - # let tag show the current object - traversedNames[-1] = name - if len(name) > len('.target'): - uid = int(name[len('.target'):]) - target = util.getObjectForUid(uid) - #target = component.getUtility(IIntIds).getObject(uid) - else: - target = self.context.target + if name.startswith('.'): + name = self.cleanUpTraversalStack(request, name)[1:] + #traversalStack = request._traversal_stack + #while traversalStack and traversalStack[0].startswith('.target'): + # # skip obsolete target references in the url + # name = traversalStack.pop(0) + #traversedNames = request._traversed_names + #if traversedNames: + # lastTraversed = traversedNames[-1] + # if lastTraversed.startswith('.target') and lastTraversed != name: + # # let tag show the current object + # traversedNames[-1] = name + #if len(name) > len('.target'): + # uid = int(name[len('.target'):]) + # target = util.getObjectForUid(uid) + #else: + # target = self.context.target + target = self.getTarget(name) if target is not None: # remember self.context in request if request.method == 'PUT': @@ -825,6 +830,28 @@ class NodeTraverser(ItemTraverser): obj = super(NodeTraverser, self).publishTraverse(request, name) return obj + def cleanUpTraversalStack(self, request, name): + traversalStack = request._traversal_stack + while traversalStack and traversalStack[0].startswith('.'): + # skip obsolete target references in the url + name = traversalStack.pop(0) + traversedNames = request._traversed_names + if traversedNames: + lastTraversed = traversedNames[-1] + if lastTraversed.startswith('.') and lastTraversed != name: + # let tag show the current object + traversedNames[-1] = name + return name + + def getTarget(self, name): + if name.startswith('target'): + name = name[6:] + if '-' in name: + name, ignore = name.split('-', 1) + if name and name.isdigit(): + return util.getObjectForUid(int(name)) + return self.context.target + def setViewConfiguration(context, request): viewAnnotations = request.annotations.setdefault('loops.view', {}) diff --git a/browser/node_macros.pt b/browser/node_macros.pt index a8c68cb..8944c32 100644 --- a/browser/node_macros.pt +++ b/browser/node_macros.pt @@ -228,7 +228,8 @@ -
Log out
+
Log out
diff --git a/browser/resource_macros.pt b/browser/resource_macros.pt index 3204178..9172377 100644 --- a/browser/resource_macros.pt +++ b/browser/resource_macros.pt @@ -1,3 +1,6 @@ + + +
Title
+ string:${view/url}/.${view/targetId}/view?version=this" />

Description

@@ -64,7 +67,7 @@ + string:${view/virtualTargetUrl}/download.html?version=this"> Download @@ -73,7 +76,7 @@ + string:${view/virtualTargetUrl}/view?version=this"> View @@ -81,7 +84,7 @@ tal:condition="item/xeditable"> Open for editing @@ -112,9 +115,12 @@
+ tal:attributes="href python: view.getUrlForTarget(concept)"> Concept (Type)
+ + + \ No newline at end of file diff --git a/organize/README.txt b/organize/README.txt index 1096d85..99b15fc 100644 --- a/organize/README.txt +++ b/organize/README.txt @@ -412,7 +412,7 @@ Send Email to Members >>> form.subject u"loops Notification from '$site'" >>> form.mailBody - u'\n\nEvent #1\nhttp://127.0.0.1/loops/views/menu/.target97\n\n' + u'\n\nEvent #1\nhttp://127.0.0.1/loops/views/menu/.97\n\n' Fin de partie diff --git a/versioning/version_macros.pt b/versioning/version_macros.pt index 2bcc4ba..b82d009 100644 --- a/versioning/version_macros.pt +++ b/versioning/version_macros.pt @@ -1,3 +1,6 @@ + + +
Resource Title @@ -45,9 +49,11 @@ + +