[Checkins] SVN: z3ext.layout/trunk/ Use IPagelet instead of IPageTemplate for pagelet rendering

Nikolay Kim fafhrd at datacom.kz
Thu Dec 18 03:23:08 EST 2008


Log message for revision 94164:
  Use IPagelet instead of IPageTemplate for pagelet rendering

Changed:
  U   z3ext.layout/trunk/CHANGES.txt
  U   z3ext.layout/trunk/src/z3ext/layout/pagelet.py
  U   z3ext.layout/trunk/src/z3ext/layout/pagelet.txt

-=-
Modified: z3ext.layout/trunk/CHANGES.txt
===================================================================
--- z3ext.layout/trunk/CHANGES.txt	2008-12-18 06:55:04 UTC (rev 94163)
+++ z3ext.layout/trunk/CHANGES.txt	2008-12-18 08:23:07 UTC (rev 94164)
@@ -2,6 +2,12 @@
 CHANGES
 =======
 
+1.7.3 (2008-12-18)
+------------------
+
+- Use IPagelet instead of IPageTemplate for pagelet rendering
+
+
 1.7.2 (2008-12-17)
 ------------------
 

Modified: z3ext.layout/trunk/src/z3ext/layout/pagelet.py
===================================================================
--- z3ext.layout/trunk/src/z3ext/layout/pagelet.py	2008-12-18 06:55:04 UTC (rev 94163)
+++ z3ext.layout/trunk/src/z3ext/layout/pagelet.py	2008-12-18 08:23:07 UTC (rev 94164)
@@ -23,7 +23,6 @@
 from zope.publisher.interfaces import NotFound
 from zope.publisher.interfaces.browser import IBrowserPublisher
 from zope.tales.expressions import SimpleModuleImporter
-from zope.pagetemplate.interfaces import IPageTemplate
 from zope.app.publisher.browser import queryDefaultViewName
 
 from z3ext.layout.interfaces import IPagelet, IPageletType, ILayout
@@ -32,7 +31,7 @@
 @interface.implementer(IPagelet)
 @component.adapter(interface.Interface, interface.Interface)
 def queryPagelet(context, request):
-    name = queryDefaultViewName(context, request, 'index.html')
+    name = queryDefaultViewName(context, request, None)
     if name:
         view = queryMultiAdapter((context, request), name=name)
         if IPagelet.providedBy(view):
@@ -56,11 +55,9 @@
 class BrowserPagelet(BrowserPage):
     interface.implements(IPagelet)
 
+    template = None
     layoutname = u''
 
-    index = None
-    template = None
-
     def __init__(self, context, request, *args):
         self.managers = args
         super(BrowserPagelet, self).__init__(context, request)
@@ -69,16 +66,15 @@
         pass
 
     def render(self):
-        template = queryMultiAdapter((self, self.request), IPageTemplate)
+        if self.template is not None:
+            return self.template()
+        else:
+            template = queryMultiAdapter((self, self.request), IPagelet, name='')
+            if template is not None:
+                template.update()
+                return template.render()
+            raise LookupError("Can't find IPagelet for this pagelet.")
 
-        if template is None:
-            template = self.template or self.index
-            if template is None:
-                raise LookupError("Can't find IPageTemplate for pagelet.")
-            return template()
-
-        return template(self)
-
     def __call__(self):
         self.update()
 

Modified: z3ext.layout/trunk/src/z3ext/layout/pagelet.txt
===================================================================
--- z3ext.layout/trunk/src/z3ext/layout/pagelet.txt	2008-12-18 06:55:04 UTC (rev 94163)
+++ z3ext.layout/trunk/src/z3ext/layout/pagelet.txt	2008-12-18 08:23:07 UTC (rev 94164)
@@ -320,7 +320,7 @@
   >>> pagelet.render()
   Traceback (most recent call last):
   ...
-  LookupError: Can't find IPageTemplate for pagelet.
+  LookupError: Can't find IPagelet for this pagelet.
 
   >>> try:
   ...     tmp = __file__
@@ -328,14 +328,17 @@
   ...     from z3ext.layout import tests
   ...     __file__ = tests.__file__
 
-  >>> from zope.pagetemplate.interfaces import IPageTemplate
-  >>> from zope.app.pagetemplate import ViewPageTemplateFile
-  >>> pt = ViewPageTemplateFile(template)
-  >>> def getPT(context, request):
-  ...     return pt
-  >>> component.getSiteManager().registerAdapter(
-  ...     getPT, (pagelet.__class__, interface.Interface), IPageTemplate, '')
+  >>> pageletClass = pagelet.__class__
 
+  >>> context = xmlconfig.string("""
+  ... <configure xmlns:z3ext="http://namespaces.zope.org/z3ext">
+  ...   <z3ext:pagelet
+  ...       for="z3ext.layout.TESTS.pageletClass"
+  ...       template="%s"
+  ...       permission="zope.Public" />
+  ... </configure>
+  ... """%template, context)
+
   >>> print pagelet()
   <div>My pagelet</div>
 



More information about the Checkins mailing list