[Checkins] SVN: z3c.traverser/trunk/ - bugfix: if viewlet and
managers get nested a viewlet was not found if
Bernd Roessl
bernd.roessl at lovelysystems.com
Thu Nov 29 09:05:37 EST 2007
Log message for revision 82026:
- bugfix: if viewlet and managers get nested a viewlet was not found if
the depth reaches 3 because the context was set to the page and not
to the context object
- bugfix: replaced call to _getContextName because it has been removed from
absoluteURL
Changed:
U z3c.traverser/trunk/CHANGES.txt
U z3c.traverser/trunk/setup.py
U z3c.traverser/trunk/src/z3c/traverser/viewlet/BROWSER.txt
U z3c.traverser/trunk/src/z3c/traverser/viewlet/README.txt
U z3c.traverser/trunk/src/z3c/traverser/viewlet/browser.py
U z3c.traverser/trunk/src/z3c/traverser/viewlet/ftesting.zcml
U z3c.traverser/trunk/src/z3c/traverser/viewlet/namespace.py
U z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/app.py
A z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/inner.pt
A z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/nested.pt
A z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/outer.pt
-=-
Modified: z3c.traverser/trunk/CHANGES.txt
===================================================================
--- z3c.traverser/trunk/CHANGES.txt 2007-11-29 13:20:51 UTC (rev 82025)
+++ z3c.traverser/trunk/CHANGES.txt 2007-11-29 14:05:37 UTC (rev 82026)
@@ -2,6 +2,16 @@
CHANGES
=======
+0.2.1 (2007-11-92)
+------------------
+
+- bugfix: if viewlet and managers get nested a viewlet was not found if
+ the depth reaches 3 because the context was set to the page and not
+ to the context object
+- bugfix: replaced call to _getContextName because it has been removed from
+ absoluteURL
+
+
0.2.0 (2007-10-31)
------------------
Modified: z3c.traverser/trunk/setup.py
===================================================================
--- z3c.traverser/trunk/setup.py 2007-11-29 13:20:51 UTC (rev 82025)
+++ z3c.traverser/trunk/setup.py 2007-11-29 14:05:37 UTC (rev 82026)
@@ -1,4 +1,4 @@
-##############################################################################
+###############################################################################
#
# Copyright (c) 2007 Zope Corporation and Contributors.
# All Rights Reserved.
@@ -22,7 +22,7 @@
return open(os.path.join(os.path.dirname(__file__), *rnames)).read()
setup(name='z3c.traverser',
- version = '0.3.0',
+ version = '0.2.1',
author='Zope Corporation and Contributors',
author_email='zope3-dev at zope.org',
description='Pluggable Traverser API',
Modified: z3c.traverser/trunk/src/z3c/traverser/viewlet/BROWSER.txt
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/viewlet/BROWSER.txt 2007-11-29 13:20:51 UTC (rev 82025)
+++ z3c.traverser/trunk/src/z3c/traverser/viewlet/BROWSER.txt 2007-11-29 14:05:37 UTC (rev 82026)
@@ -29,6 +29,29 @@
>>> print browser.contents
<div><a href="http://localhost/test.html/++manager++IMyManager/++viewlet++MyViewlet">My Viewlet</a></div>
+
+What happens if a viewlet managers is nested into another viewlet? To test
+this we will create anothe manager and another viewlet::
+
+ >>> browser.open('http://localhost/@@nested.html')
+ >>> print browser.contents
+ <html>
+ <body>
+ <div><div><a href="http://localhost/nested.html/++manager++IOuterManager/++viewlet++OuterViewlet/++manager++IInnerManager/++viewlet++InnerViewlet/++manager++IMostInnerManager/++viewlet++MostInnerViewlet">Most inner viewlet</a></div>
+ </div>
+ </body>
+ </html>
+
+Let's follow the link to traverse the viewlet directly.
+
+ >>> browser.getLink('Most inner viewlet').click()
+ >>> browser.url
+ 'http://localhost/nested.html/++manager++IOuterManager/++viewlet++OuterViewlet/++manager++IInnerManager/++viewlet++InnerViewlet/++manager++IMostInnerManager/++viewlet++MostInnerViewlet'
+
+ >>> browser.contents
+ '<div><a href="http://localhost/nested.html/++manager++IOuterManager/++viewlet++OuterViewlet/++manager++IInnerManager/++viewlet++InnerViewlet/++manager++IMostInnerManager/++viewlet++MostInnerViewlet">Most inner viewlet</a></div>'
+
+
Ceveats
-------
Modified: z3c.traverser/trunk/src/z3c/traverser/viewlet/README.txt
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/viewlet/README.txt 2007-11-29 13:20:51 UTC (rev 82025)
+++ z3c.traverser/trunk/src/z3c/traverser/viewlet/README.txt 2007-11-29 14:05:37 UTC (rev 82026)
@@ -86,7 +86,7 @@
... IAbsoluteURL)
>>> myViewlet = MyViewlet(content, request, view, leftColumn)
>>> absoluteurl.absoluteURL(leftColumn, request)
- 'http://127.0.0.1/content/test.html/++manager++left'
+ 'http://127.0.0.1/content/test.html/++manager++left'
>>> absoluteurl.absoluteURL(myViewlet, request)
'.../content/test.html/++manager++left/++viewlet++myViewlet'
Modified: z3c.traverser/trunk/src/z3c/traverser/viewlet/browser.py
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/viewlet/browser.py 2007-11-29 13:20:51 UTC (rev 82025)
+++ z3c.traverser/trunk/src/z3c/traverser/viewlet/browser.py 2007-11-29 14:05:37 UTC (rev 82026)
@@ -32,8 +32,7 @@
return url
def _getContextName(self, context):
- name = super(ViewletAbsoluteURL,
- self)._getContextName(context)
+ name = getattr(context, '__name__', None)
return u'++viewlet++' + name
@@ -62,8 +61,7 @@
def _getContextName(self, context):
- name = super(ViewletManagerAbsoluteURL,
- self)._getContextName(context)
+ name = getattr(context, '__name__', None)
return u'++manager++' + name
__call__ = __str__
Modified: z3c.traverser/trunk/src/z3c/traverser/viewlet/ftesting.zcml
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/viewlet/ftesting.zcml 2007-11-29 13:20:51 UTC (rev 82025)
+++ z3c.traverser/trunk/src/z3c/traverser/viewlet/ftesting.zcml 2007-11-29 14:05:37 UTC (rev 82026)
@@ -88,5 +88,53 @@
template="test.pt"
permission="zope.Public"
/>
+
+ <!-- nested viewlet manager -->
+ <browser:page
+ for="*"
+ name="nested.html"
+ template="nested.pt"
+ permission="zope.Public"
+ />
+
+ <browser:viewletManager
+ name="IOuterManager"
+ provides=".app.IOuterManager"
+ permission="zope.Public"
+ />
+
+ <browser:viewlet
+ for="zope.app.component.interfaces.ISite"
+ name="OuterViewlet"
+ manager=".app.IOuterManager"
+ class=".app.OuterViewlet"
+ permission="zope.Public"/>
+
+ <browser:viewletManager
+ name="IInnerManager"
+ provides=".app.IInnerManager"
+ permission="zope.Public"
+ />
+
+ <browser:viewlet
+ for="zope.app.component.interfaces.ISite"
+ name="InnerViewlet"
+ manager=".app.IInnerManager"
+ class=".app.InnerViewlet"
+ permission="zope.Public"/>
+
+ <browser:viewletManager
+ name="IMostInnerManager"
+ provides=".app.IMostInnerManager"
+ permission="zope.Public"
+ />
+
+ <browser:viewlet
+ for="zope.app.component.interfaces.ISite"
+ name="MostInnerViewlet"
+ manager=".app.IMostInnerManager"
+ class=".app.MostInnerViewlet"
+ permission="zope.Public"/>
+
</configure>
</configure>
Modified: z3c.traverser/trunk/src/z3c/traverser/viewlet/namespace.py
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/viewlet/namespace.py 2007-11-29 13:20:51 UTC (rev 82025)
+++ z3c.traverser/trunk/src/z3c/traverser/viewlet/namespace.py 2007-11-29 14:05:37 UTC (rev 82026)
@@ -11,13 +11,13 @@
self.request = request
def traverse(self, name, ignored):
- context = self.context.__parent__.__parent__
+ context = removeSecurityProxy(self.context).context
provider = component.queryMultiAdapter(
(context, self.request, self.context),
IViewletManager, name)
if provider is None:
raise NotFound(self.context, name, self.request)
-
+
return provider
@@ -53,6 +53,6 @@
# viewlet class a IBrowserPublisher, which assumes that we
# have a call in browserdefault, so we have to replace this
# method.
- viewlet.browserDefault = lambda r: (viewlet, ('index.html',))
+ viewlet.browserDefault = lambda r: (viewlet, ('index.html',))
return viewlet
-
+
Modified: z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/app.py
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/app.py 2007-11-29 13:20:51 UTC (rev 82025)
+++ z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/app.py 2007-11-29 14:05:37 UTC (rev 82026)
@@ -1,6 +1,8 @@
from zope.viewlet import interfaces
from zope.traversing.browser.absoluteurl import absoluteURL
+from zope.app.pagetemplate import ViewPageTemplateFile
+
class IMyManager(interfaces.IViewletManager):
"""Viewlet manager"""
@@ -14,3 +16,45 @@
absoluteURL(self, self.request)
+class IOuterManager(interfaces.IViewletManager):
+ """Outer viewlet manager"""
+
+
+class IInnerManager(interfaces.IViewletManager):
+ """Inner viewlet manager"""
+
+
+class IMostInnerManager(interfaces.IViewletManager):
+ """Most inner viewlet manager"""
+
+
+class OuterViewlet(object):
+
+ template = ViewPageTemplateFile('outer.pt')
+
+ def upate(self):
+ pass
+
+ def render(self):
+ return self.template()
+
+
+class InnerViewlet(object):
+
+ template = ViewPageTemplateFile('inner.pt')
+
+ def upate(self):
+ pass
+
+ def render(self):
+ return self.template()
+
+
+class MostInnerViewlet(object):
+
+ def upate(self):
+ pass
+
+ def render(self):
+ return '<div><a href="%s">Most inner viewlet</a></div>' % \
+ absoluteURL(self, self.request)
Added: z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/inner.pt
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/inner.pt (rev 0)
+++ z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/inner.pt 2007-11-29 14:05:37 UTC (rev 82026)
@@ -0,0 +1 @@
+<div tal:replace="structure provider:IMostInnerManager"></div>
\ No newline at end of file
Property changes on: z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/inner.pt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/nested.pt
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/nested.pt (rev 0)
+++ z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/nested.pt 2007-11-29 14:05:37 UTC (rev 82026)
@@ -0,0 +1,5 @@
+<html>
+ <body>
+ <div tal:content="structure provider:IOuterManager"/>
+ </body>
+</html>
\ No newline at end of file
Property changes on: z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/nested.pt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/outer.pt
===================================================================
--- z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/outer.pt (rev 0)
+++ z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/outer.pt 2007-11-29 14:05:37 UTC (rev 82026)
@@ -0,0 +1 @@
+<div tal:replace="structure provider:IInnerManager"></div>
\ No newline at end of file
Property changes on: z3c.traverser/trunk/src/z3c/traverser/viewlet/testing/outer.pt
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the Checkins
mailing list