Skip to main content

Pagelet layer setup for Zope3

Project description

This package provides a pagelet based layer setup for Zope3.

Pagelet-based Layer for Zope 3

This package contains the pagelet layer. This layer supports a correct set of component registration and can be used for inheritation in custom skins.

Right now the default implementation in Zope3 has different restriction in the traversal concept and use to much registration on the default layer.

Important

This layer ia based on the pagelet pattern. This means every page e.g. the error page is based on the pagelet concept.

IPageletBrowserLayer Layer

The pagelet layer is useful for build custom presentation skins without access to ZMI menus like zmi_views etc. This means there is no menu item registred if you use this layer.

This layer is NOT derived from IDefaultBrowserLayer layer. Therefore it provides only a minimal set of the most important public views such as @@absolute_url. The following packages are accounted:

  • zope.app.http.exception

  • zope.app.publication

  • zope.app.publisher.browser

  • zope.app.traversing

  • zope.app.traversing.browser

Testing

For testing the IPageletBrowserLayer layer we use the testing skin defined in the tests package which uses the IPageletBrowserLayer layer as the only base layer. This means, that our testing skin provides only the views defined in the minimal package and it’s testing views defined in tests.

Login as manager first:

>>> from zope.testbrowser.testing import Browser
>>> manager = Browser()
>>> manager.addHeader('Authorization', 'Basic mgr:mgrpw')

Check if we can access the page.html view which is registred in the ftesting.zcml file with our skin:

>>> manager = Browser()
>>> manager.addHeader('Authorization', 'Basic mgr:mgrpw')
>>> skinURL = 'http://localhost/++skin++PageletTestSkin'
>>> manager.open(skinURL + '/page.html')
>>> manager.url
'http://localhost/++skin++PageletTestSkin/page.html'
>>> print manager.contents
<!DOCTYPE...
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>PageletTestLayout</title>
</head>
<body>
  test page
<BLANKLINE>
</body>
</html>
<BLANKLINE>

Now check the not found page which is a exception view on the exception zope.publisher.interfaces.INotFound:

>>> manager.open(skinURL + '/foobar.html')
Traceback (most recent call last):
...
httperror_seek_wrapper: HTTP Error 404: Not Found
>>> print manager.contents
<!DOCTYPE...
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>PageletTestLayout</title>
</head>
<body>
  <div>
  <br />
  <br />
  <h3>
    The page you are trying to access is not available
  </h3>
  <br />
  <b>
    Please try the following:
  </b>
  <br />
  <ol>
    <li>
      Make sure that the Web site address is spelled correctly.
    </li>
    <li>
      <a href="javascript:history.back(1);">
        Go back and try another URL.
      </a>
    </li>
  </ol>
</div>
<BLANKLINE>
</body>
</html>
<BLANKLINE>

And check the user error page which is a view registred for zope.exceptions.interfaces.IUserError exceptions:

>>> manager.open(skinURL + '/@@usererror.html')
>>> print manager.contents
<!DOCTYPE ...
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>PageletTestLayout</title>
</head>
<body>
  <div>
  <div>simply user error</div>
</div>
<BLANKLINE>
</body>
</html>
<BLANKLINE>

And check error view registred for zope.interface.common.interfaces.IException:

>>> manager.open(skinURL + '/@@systemerror.html')
>>> print manager.contents
<!DOCTYPE...
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>PageletTestLayout</title>
</head>
<body>
  <div>
  <br />
  <br />
  <h3>A system error occurred</h3>
  <br />
  <b>Please contact the administrator.</b>
  <a href="javascript:history.back(1);">
    Go back and try another URL.
  </a>
</div>
<BLANKLINE>
</body>
</html>
<BLANKLINE>

And check the zope.security.interfaces.IUnauthorized view, use a new unregistred user (test browser) for this:

>>> unauthorized = Browser()
>>> unauthorized.open(skinURL + '/@@forbidden.html')
Traceback (most recent call last):
...
httperror_seek_wrapper: HTTP Error 403: Forbidden
>>> print unauthorized.contents
<!DOCTYPE ...
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>PageletTestLayout</title>
</head>
<body>
  <div>
  <br />
  <br />
  <h3>Unauthorized</h3>
  <br />
  <b>You are not authorized.</b>
</div>
<BLANKLINE>
</body>
</html>
<BLANKLINE>

CHANGES

1.1.0 (2009-02-14)

  • Bugfix: use IContentTemplate instead of IPageTemplate which avoids to get the layout template if no IPageTemplate is registered.

  • Using zope.location.interfaces.ISite instead of zope.app.component.interfaces.ISite.

  • Using zope.container instead of zope.app.container.

  • Cleaned up dependencies.

1.0.1 (2008-01-24)

  • Bug: Update meta data.

1.0.0 (2008-01-21)

  • Restructure: Move z3c.layer.pagelet package to it’s own top level package form z3c.layer to z3c.layer.pagelet.

  • Restructure: Removed zope.app.form support from pagelet layer.

0.2.3 (2007-11-07)

  • Forward-Bug: Due to a bug in mechanize, the testbrowser throws httperror_seek_wrapper instead of HTTPError errors. Thanks to RE normalizers, the code will now work whether the bug is fixed or not in mechanize.

0.2.2 (2007-10-31)

  • Bug: Fixed package meta-data.

  • Bug: Fixed test failures due to depency updates.

  • Restructure: Fixed deprecation warninf for ZopeSecurityPolicy.

0.2.1 (2007-??-??)

  • Changes unknown.

0.2.0 (2007-??-??)

  • Initial release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

z3c.layer.pagelet-1.1.0.tar.gz (12.6 kB view details)

Uploaded Source

File details

Details for the file z3c.layer.pagelet-1.1.0.tar.gz.

File metadata

File hashes

Hashes for z3c.layer.pagelet-1.1.0.tar.gz
Algorithm Hash digest
SHA256 c45fc6cf39a01d5d2ce352b6ad8a4ae0c80d9cae1a4e6d1a03de7393bc19dbb1
MD5 ed9c09b634778018aac6fc6aa327fbcd
BLAKE2b-256 bbeed4a498aa8559223af63385c5aa3e638e5f7552aa93737ed19ab14464f920

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page