[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