[Checkins] SVN: z3c.template/trunk/ * Added an IContentTemplate interface which is used for <z3c:template>.

Christian Zagrodnick cz at gocept.com
Thu Sep 27 04:14:53 EDT 2007


Log message for revision 80185:
  * Added an IContentTemplate interface which is used for <z3c:template>.
  

Changed:
  A   z3c.template/trunk/CHANGES.txt
  U   z3c.template/trunk/setup.py
  U   z3c.template/trunk/src/z3c/template/README.txt
  U   z3c.template/trunk/src/z3c/template/interfaces.py
  U   z3c.template/trunk/src/z3c/template/template.py
  U   z3c.template/trunk/src/z3c/template/zcml.py
  U   z3c.template/trunk/src/z3c/template/zcml.txt

-=-
Added: z3c.template/trunk/CHANGES.txt
===================================================================
--- z3c.template/trunk/CHANGES.txt	                        (rev 0)
+++ z3c.template/trunk/CHANGES.txt	2007-09-27 08:14:53 UTC (rev 80185)
@@ -0,0 +1,8 @@
+=======
+Changes
+=======
+
+1.1 (unreleased)
+================
+
+* Added an IContentTemplate interface which is used for <z3c:template>.


Property changes on: z3c.template/trunk/CHANGES.txt
___________________________________________________________________
Name: svn:keywords
   + Id Rev Date
Name: svn:eol-style
   + native

Modified: z3c.template/trunk/setup.py
===================================================================
--- z3c.template/trunk/setup.py	2007-09-27 08:11:38 UTC (rev 80184)
+++ z3c.template/trunk/setup.py	2007-09-27 08:14:53 UTC (rev 80185)
@@ -34,6 +34,8 @@
         '**********************\n'
         + '\n' +
         read('src', 'z3c', 'template', 'README.txt')
+        + '\n' +
+        read('CHANGES.txt')
         ),
     license = "ZPL 2.1",
     keywords = "zope3 template layout zpt pagetemplate",

Modified: z3c.template/trunk/src/z3c/template/README.txt
===================================================================
--- z3c.template/trunk/src/z3c/template/README.txt	2007-09-27 08:11:38 UTC (rev 80184)
+++ z3c.template/trunk/src/z3c/template/README.txt	2007-09-27 08:14:53 UTC (rev 80185)
@@ -52,7 +52,7 @@
   ...     def render(self):
   ...         if self.template is None:
   ...             template = zope.component.getMultiAdapter(
-  ...                 (self, self.request), IPageTemplate)
+  ...                 (self, self.request), interfaces.IContentTemplate)
   ...             return template(self)
   ...         return self.template()
 
@@ -81,9 +81,12 @@
 
 We register the factory on a view interface and a layer.
 
-  >>> component.provideAdapter(factory,
-  ...     (zope.interface.Interface, IDefaultBrowserLayer), IPageTemplate)
-  >>> template = component.getMultiAdapter((view, request), IPageTemplate)
+  >>> component.provideAdapter(
+  ...     factory,
+  ...     (zope.interface.Interface, IDefaultBrowserLayer),
+  ...     interfaces.IContentTemplate)
+  >>> template = component.getMultiAdapter((view, request),
+  ...     interfaces.IPageTemplate)
   >>> template
   <zope.app.pagetemplate.viewpagetemplatefile.ViewPageTemplateFile object at ...>
 
@@ -98,8 +101,9 @@
   >>> myTemplate = os.path.join(temp_dir, 'myTemplate.pt')
   >>> open(myTemplate, 'w').write('''<div>My content</div>''')
   >>> factory = TemplateFactory(myTemplate, 'text/html')
-  >>> component.provideAdapter(factory,
-  ...     (IMyView, IDefaultBrowserLayer), IPageTemplate)
+  >>> component.provideAdapter(
+  ...     factory,
+  ...     (IMyView, IDefaultBrowserLayer), interfaces.IContentTemplate)
   >>> print view.render()
   <div>My content</div>
 
@@ -119,7 +123,7 @@
   ...     def render(self):
   ...         if self.template is None:
   ...             template = zope.component.getMultiAdapter(
-  ...                 (self, self.request), IPageTemplate)
+  ...                 (self, self.request), interfaces.IContentTemplate)
   ...             return template(self)
   ...         return self.template()
   >>> contentView = MyViewWithTemplate(root, request)

Modified: z3c.template/trunk/src/z3c/template/interfaces.py
===================================================================
--- z3c.template/trunk/src/z3c/template/interfaces.py	2007-09-27 08:11:38 UTC (rev 80184)
+++ z3c.template/trunk/src/z3c/template/interfaces.py	2007-09-27 08:14:53 UTC (rev 80185)
@@ -20,3 +20,7 @@
 
 class ILayoutTemplate(IPageTemplate):
     """A template used for render the layout."""
+
+
+class IContentTemplate(IPageTemplate):
+    """A template used for render the content."""

Modified: z3c.template/trunk/src/z3c/template/template.py
===================================================================
--- z3c.template/trunk/src/z3c/template/template.py	2007-09-27 08:11:38 UTC (rev 80184)
+++ z3c.template/trunk/src/z3c/template/template.py	2007-09-27 08:14:53 UTC (rev 80185)
@@ -80,7 +80,7 @@
 class GetPageTemplate(ViewTemplate):
 
     def __init__(self, name=u''):
-        self.provides = IPageTemplate
+        self.provides = interfaces.IContentTemplate
         self.name = name
 
 getPageTemplate = GetPageTemplate

Modified: z3c.template/trunk/src/z3c/template/zcml.py
===================================================================
--- z3c.template/trunk/src/z3c/template/zcml.py	2007-09-27 08:11:38 UTC (rev 80184)
+++ z3c.template/trunk/src/z3c/template/zcml.py	2007-09-27 08:14:53 UTC (rev 80185)
@@ -23,10 +23,9 @@
 import zope.schema
 import zope.configuration.fields
 from zope.configuration.exceptions import ConfigurationError
-from zope.pagetemplate.interfaces import IPageTemplate
 from zope.publisher.interfaces.browser import IDefaultBrowserLayer
 
-from z3c.template import interfaces
+import z3c.template.interfaces
 from z3c.template.template import TemplateFactory
 
 
@@ -51,7 +50,7 @@
         title = u'Macro',
         description = u"""
             The macro to be used.
-            This allows us to define different macros in on template.
+            This allows us to define different macros in one template.
             The template designer can now create hole site, the
             ViewTemplate can then extract the macros for single viewlets
             or views.
@@ -79,7 +78,7 @@
         title=u"Interface the template provides",
         description=u"This attribute specifies the interface the template"
                       " instance will provide.",
-        default=IPageTemplate,
+        default=z3c.template.interfaces.IContentTemplate,
         required=False,
         )
 
@@ -94,11 +93,21 @@
 class ILayoutTemplateDirective(ITemplateDirective):
     """Parameters for the layout template directive."""
 
+    provides = zope.configuration.fields.GlobalInterface(
+        title=u"Interface the template provides",
+        description=u"This attribute specifies the interface the template"
+                      " instance will provide.",
+        default=z3c.template.interfaces.ILayoutTemplate,
+        required=False,
+        )
 
-def templateDirective(_context, template, name=u'',
-    for_=zope.interface.Interface, layer=IDefaultBrowserLayer, 
-    provides=IPageTemplate, contentType='text/html', macro=None):
 
+def templateDirective(
+    _context, template, name=u'',
+    for_=zope.interface.Interface, layer=IDefaultBrowserLayer,
+    provides=z3c.template.interfaces.IContentTemplate,
+    contentType='text/html', macro=None):
+
     # Make sure that the template exists
     template = os.path.abspath(str(_context.path(template)))
     if not os.path.isfile(template):
@@ -109,16 +118,18 @@
 
     # register the template
     if name:
-        zope.component.zcml.adapter(_context, (factory,), provides, 
-            (for_, layer), name=name)
+        zope.component.zcml.adapter(_context, (factory,), provides,
+                                    (for_, layer), name=name)
     else:
-        zope.component.zcml.adapter(_context, (factory,), provides, 
-            (for_, layer))
+        zope.component.zcml.adapter(_context, (factory,), provides,
+                                    (for_, layer))
 
 
-def layoutTemplateDirective(_context, template, name=u'', 
-    for_=zope.interface.Interface, layer=IDefaultBrowserLayer, 
-    provides=interfaces.ILayoutTemplate, contentType='text/html', macro=None):
+def layoutTemplateDirective(
+    _context, template, name=u'',
+    for_=zope.interface.Interface, layer=IDefaultBrowserLayer,
+    provides=z3c.template.interfaces.ILayoutTemplate,
+    contentType='text/html', macro=None):
 
-    templateDirective(_context, template, name, for_, layer, provides, 
-        contentType, macro)
+    templateDirective(_context, template, name, for_, layer, provides,
+                      contentType, macro)

Modified: z3c.template/trunk/src/z3c/template/zcml.txt
===================================================================
--- z3c.template/trunk/src/z3c/template/zcml.txt	2007-09-27 08:11:38 UTC (rev 80184)
+++ z3c.template/trunk/src/z3c/template/zcml.txt	2007-09-27 08:14:53 UTC (rev 80185)
@@ -44,7 +44,7 @@
   ...     'Module', (), 
   ...     {'IView': IView})()
 
-and register them as a layout template within the ``z3c:layout`` directive:
+and register them as a template within the ``z3c:template`` directive:
 
   >>> context = xmlconfig.string("""
   ... <configure
@@ -59,9 +59,10 @@
 Let's get the template
 
   >>> import zope.component
-  >>> from z3c.template.interfaces import IPageTemplate
-  >>> template = zope.component.queryMultiAdapter((view, request), 
-  ...     interface=IPageTemplate)
+  >>> from z3c.template.interfaces import IContentTemplate
+  >>> template = zope.component.queryMultiAdapter(
+  ...     (view, request), 
+  ...     interface=IContentTemplate)
 
 and check them:
 
@@ -130,17 +131,20 @@
 And call it:
 
   >>> from z3c.template.interfaces import ILayoutTemplate
-  >>> template = zope.component.queryMultiAdapter((view, request), 
-  ...     interface=IPageTemplate, name='edit')
+  >>> template = zope.component.queryMultiAdapter(
+  ...     (view, request), 
+  ...     interface=IContentTemplate, name='edit')
 
   >>> print template(view)
   <div>edit</div>
 
+
 Custom template
 ---------------
 
 Or you can define own interfaces and register templates for them:
 
+  >>> from zope.pagetemplate.interfaces import IPageTemplate
   >>> class IMyTemplate(IPageTemplate):
   ...     """My template"""
 



More information about the Checkins mailing list