Package: gocept.pagelet
gocept.pageletEasier z3c.pagelet handlingContentsgocept.pageletChanges2.0 (2023-07-18)1.1 (2019-06-10)1.0 (2016-04-06)0.4 (2013-03-28)0.3 (2009-12-27)0.2 (2009-12-27)0.1 (2008-09-20)ContributorsEasy z3c.pagelet registrationSetupTemplate onlyClass onlyClass and templateCopyright (c) 2007-2016 gocept gmbh & co. kg
All Rights Reserved.This software is subject to the provisions of the Zope Public License,
Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
THIS SOFTWARE IS PROVIDED “AS IS” AND ANY AND ALL EXPRESS OR IMPLIED
WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
FOR A PARTICULAR PURPOSE.Changes2.0 (2023-07-18)Drop support for Python 2.7, 3.5, 3.6.Add support for Python 3.9, 3.10, 3.11.1.1 (2019-06-10)Claim support of Python 3.5, 3.6, 3.7, 3.8, PyPy and PyPy3.Use tox for testing.1.0 (2016-04-06)Updatebootstrap.pyto azc.buildout 2.3.Use py.test as test runner.Declare the explicit support of Python 2.7.
No other Python versions are currently supported.0.4 (2013-03-28)When registering a pagelet using ZCML which only has template, the name of
the template is rendered in thereprthe generated class to have a
clue what is the purpose of this class when debugging.Updated tests to use Python’sdoctestinstead of deprecatedzope.testing.doctest.0.3 (2009-12-27)Usingzope.browserpageandzope.browsermenuinstead ofzope.app.publisher.0.2 (2009-12-27)Allow arbitrary number of context elements for adaptation.0.1 (2008-09-20)First public release.ContributorsMichael Howitz <mh at gocept dot com>Christian Theune <ct at gocept dot com>Easy z3c.pagelet registrationThe<gocept:pagelet>directive allows easier registration of
z3c.pagelets. It behaves quite like<browser:page>.SetupWe need some zcml setup:>>> import sys
>>> from zope.configuration import xmlconfig
>>> import gocept.pagelet
>>> context = xmlconfig.file('meta.zcml', gocept.pagelet)Template onlyIt is possible to just use a template as pagelet. A class is not required:>>> context = xmlconfig.string("""
... <configure
...     xmlns:gocept="http://namespaces.gocept.com/zcml">
...   <gocept:pagelet
...       name="index.html"
...       for="*"
...       permission="zope.Public"
...       template="test-template.pt"
...       />
... </configure>
... """, context)We should now have a page:>>> import zope.component
>>> from zope.publisher.browser import TestRequest
>>> pagelet = zope.component.getMultiAdapter(
...     (object, TestRequest()), name='index.html')
>>> pagelet
<gocept.pagelet.zcml.SimplePagelet from .../gocept/pagelet/test-template.pt object at 0x...>
>>> pagelet.__name__
u'index.html'When we render the pagelet the test-template is used:>>> pagelet.render()
u'Hello from the test template.\n'Class onlyOf course it’s also possible to register a class without a template. Create a
class and make it available in a module:>>> from z3c.pagelet.browser import BrowserPagelet
>>> class MyPagelet(BrowserPagelet):
...     """Custom pagelet"""
...     def render(self):
...         return u"Hello from the custom pagelet."""Make it available under the fake packagecustom:>>> sys.modules['custom'] = type(
...     'Module', (),
...     {'MyPagelet': MyPagelet})()Make it available via ZCML:>>> context = xmlconfig.string("""
... <configure
...     xmlns:gocept="http://namespaces.gocept.com/zcml">
...   <gocept:pagelet
...       name="class.html"
...       for="*"
...       permission="zope.Public"
...       class="custom.MyPagelet"
...       />
... </configure>
... """, context)Get the pagelet:>>> pagelet = zope.component.getMultiAdapter(
...     (object, TestRequest()), name='class.html')
>>> pagelet
<gocept.pagelet.zcml.MyPagelet object at 0x...>
>>> pagelet.render()
u'Hello from the custom pagelet.'Class and templateIt’s for course also possible to specify both class and template. So create
another pagelet class and register it:>>> class MyPagelet2(BrowserPagelet):
...     """Custom pagelet"""
...     i_am_very_custom = True
>>> sys.modules['custom'] = type(
...     'Module', (),
...     {'MyPagelet': MyPagelet2})()Make it available via zcml:>>> context = xmlconfig.string("""
... <configure
...     xmlns:gocept="http://namespaces.gocept.com/zcml">
...   <gocept:pagelet
...       name="class-template.html"
...       for="*"
...       permission="zope.Public"
...       class="custom.MyPagelet"
...       template="test-template.pt"
...       />
... </configure>
... """, context)>>> pagelet = zope.component.getMultiAdapter(
...     (object, TestRequest()), name='class-template.html')
>>> pagelet
<gocept.pagelet.zcml.MyPagelet2 object at 0x...>
>>> pagelet.render()
u'Hello from the test template.\n'
>>> pagelet.i_am_very_custom
True