[Checkins] SVN: z3c.layer.pagelet/trunk/ - change view for zope.publisher.interfaces.ITraversalException from system

Roger Ineichen roger at projekt01.ch
Mon Nov 30 10:27:10 EST 2009


Log message for revision 106121:
  - change view for zope.publisher.interfaces.ITraversalException from system
    error pagelet to not found pagelet
  - move authentication viewlets to z3c.authviewlet.
  - cleanup dependencies, reflect changes in zope packages
  - cleanup test dependencies
  

Changed:
  U   z3c.layer.pagelet/trunk/CHANGES.txt
  U   z3c.layer.pagelet/trunk/setup.py
  U   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/README.txt
  U   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/__init__.py
  D   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/auth.py
  U   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/configure.zcml
  D   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_failed.pt
  D   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_success.pt
  D   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout.pt
  D   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout_head.pt
  D   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect.pt
  D   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect_head.pt
  D   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/session_cred_loginform.pt
  D   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/zope.authentication.zcml
  U   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/configure.zcml
  A   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/interfaces.py
  D   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/login.txt
  U   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/__init__.py
  U   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/ftesting.zcml
  D   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/login-logout-template.pt
  U   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/test_layer.py
  D   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.http.exception.zcml
  D   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.publisher.browser.zcml
  A   z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.browserresource.zcml

-=-
Modified: z3c.layer.pagelet/trunk/CHANGES.txt
===================================================================
--- z3c.layer.pagelet/trunk/CHANGES.txt	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/CHANGES.txt	2009-11-30 15:27:09 UTC (rev 106121)
@@ -2,12 +2,19 @@
 CHANGES
 =======
 
-1.5.1 (unreleased)
+1.6.0 (2009-11-30)
 ------------------
 
-- Nothing changed yet.
+- change view for zope.publisher.interfaces.ITraversalException from system
+  error pagelet to not found pagelet
 
+- move authentication viewlets to z3c.authviewlet.
 
+- cleanup dependencies, reflect changes in zope packages
+
+- cleanup test dependencies
+
+
 1.5.0 (2009-05-28)
 ------------------
 

Modified: z3c.layer.pagelet/trunk/setup.py
===================================================================
--- z3c.layer.pagelet/trunk/setup.py	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/setup.py	2009-11-30 15:27:09 UTC (rev 106121)
@@ -19,11 +19,10 @@
 def read(*rnames):
     return open(os.path.join(os.path.dirname(__file__), *rnames)).read()
 
-version = '1.5.1dev'
 
 setup(
     name='z3c.layer.pagelet',
-    version=version,
+    version='1.6.0',
     author='Zope Foundation and Contributors',
     author_email='zope-dev at zope.org',
     description = "Pagelet layer setup for Zope3",
@@ -34,8 +33,6 @@
         + '\n\n' +
         read('src', 'z3c', 'layer', 'pagelet', 'README.txt')
         + '\n\n' +
-        read('src', 'z3c', 'layer', 'pagelet', 'login.txt')
-        + '\n\n' +
         read('CHANGES.txt')
         ),
     keywords = "z3c pagelet layer zope zope3",
@@ -58,24 +55,26 @@
     extras_require = dict(
         test = [
             'zope.testbrowser',
-            'zope.securitypolicy',
-            'zope.app.testing',
-            'zope.app.i18n',
-            'zope.configuration>=3.5.0',
-            'zope.component',
             'zope.app.authentication',
+            'zope.app.testing',
+            'zope.browserresource',
+            'zope.exceptions',
             'zope.principalregistry',
+            'zope.publisher',
+            'zope.security',
+            'zope.securitypolicy',
+            'zope.testing',
             ],
         ),
     install_requires = [
         'setuptools',
         'z3c.pagelet',
-        'zope.app.publisher',
+        'z3c.template',
         'zope.authentication',
         'zope.browser>=1.2',
-        'zope.configuration',
-        'zope.traversing',
-        'zope.viewlet',
+        'zope.component',
+        'zope.interface',
+        'zope.publisher',
         ],
     zip_safe = False,
 )

Modified: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/README.txt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/README.txt	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/README.txt	2009-11-30 15:27:09 UTC (rev 106121)
@@ -24,15 +24,21 @@
 
 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:
+``@@absolute_url`` which get registered in zope packages for the IHTTPRequest
+and IBrowserRequest.  Next to this views, this package will only provide error
+views and traversers which are normaly regsitered in the following zope
+packages:
 
 - ``zope.app.http.exception``
 - ``zope.app.publication``
-- ``zope.app.publisher.browser``
-- ``zope.app.traversing``
-- ``zope.app.traversing.browser``
+- ``zope.browserresource``
+- ``zope.traversing``
 
+Note, this package does not depend on all the packages described above. We only
+need to depend on the same interfaces where this package will define views and
+traversers for.
 
+
 Testing
 -------
 

Modified: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/__init__.py
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/__init__.py	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/__init__.py	2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,6 +1,6 @@
 ##############################################################################
 #
-# Copyright (c) 2007-2009 Zope Foundation and Contributors.
+# Copyright (c) 2007 Zope Foundation and Contributors.
 # All Rights Reserved.
 #
 # This software is subject to the provisions of the Zope Public License,
@@ -15,18 +15,19 @@
 $Id: __init__.py 97 2007-03-29 22:58:27Z rineichen $
 """
 
+import zope.interface
+import zope.component
 import z3c.pagelet.browser
 import z3c.template.interfaces
 import zope.authentication.interfaces
-import zope.browser.interfaces
-import zope.component
-import zope.interface
 
+from z3c.layer.pagelet import interfaces
 
+
 class SystemErrorPagelet(z3c.pagelet.browser.BrowserPagelet):
     """SystemError pagelet."""
 
-    zope.interface.implements(zope.browser.interfaces.ISystemErrorView)
+    zope.interface.implements(interfaces.ISystemErrorPagelet)
 
     def isSystemError(self):
         return True
@@ -35,6 +36,8 @@
 class UnauthorizedPagelet(z3c.pagelet.browser.BrowserPagelet):
     """Unauthorized pagelet."""
 
+    zope.interface.implements(interfaces.IUnauthorizedPagelet)
+
     def render(self):
         # Set the error status to 403 (Forbidden) in the case when we don't
         # challenge the user
@@ -60,10 +63,17 @@
 class UserErrorPagelet(z3c.pagelet.browser.BrowserPagelet):
     """UserError pagelet."""
 
+    zope.interface.implements(interfaces.IUserErrorPagelet)
 
+    def title(self):
+        return self.context.__class__.__name__
+
+
 class NotFoundPagelet(z3c.pagelet.browser.BrowserPagelet):
     """NotFound pagelet."""
 
+    zope.interface.implements(interfaces.INotFoundPagelet)
+
     def render(self):
         self.request.response.setStatus(404)
         template = zope.component.getMultiAdapter(

Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/auth.py
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/auth.py	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/auth.py	2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,173 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2003-2009 Zope Corporation and Contributors.
-# 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.
-#
-##############################################################################
-"""Login and Logout screens
-
-$Id$
-"""
-import urllib
-import z3c.pagelet.interfaces
-import zope.app.publisher.interfaces.http
-import zope.authentication.interfaces
-import zope.component
-import zope.i18n
-import zope.i18nmessageid
-import zope.interface
-import zope.viewlet.interfaces
-import zope.viewlet.manager
-import zope.viewlet.viewlet
-
-_ = zope.i18nmessageid.MessageFactory("z3c")
-
-
-class ILoginLogoutHeadViewletManager(zope.viewlet.interfaces.IViewletManager):
-    """ViewletManager for supporting header contents (e. g. JavaScript)."""
-
-
-LoginLogoutHeadViewletManager = zope.viewlet.manager.ViewletManager(
-    'login-logout-head', ILoginLogoutHeadViewletManager)
-
-
-class ILoginLogoutViewletManager(zope.viewlet.interfaces.IViewletManager):
-    """ViewletManager for login and logout viewlets."""
-
-
-LoginLogoutViewletManager = zope.viewlet.manager.ViewletManager(
-    'login-logout', ILoginLogoutViewletManager,
-    bases=(zope.viewlet.manager.ConditionalViewletManager,))
-
-
-def authenticated(principal):
-    "Tell whether the principal is authenticated."
-    unauthenticated = zope.authentication.interfaces.IUnauthenticatedPrincipal
-    return not unauthenticated.providedBy(principal)
-
-
-def logout_supported(request):
-    "Tell whether logout is supported."
-    logout = zope.authentication.interfaces.ILogoutSupported(request, None)
-    return logout is not None
-
-
-def get_view_url(context, request, view_name):
-    "Compute the url of a view."
-    view_name_truncated = False
-    if view_name.startswith('@@'):
-        view_name = view_name[2:]
-        view_name_truncated = True
-    view = zope.component.getMultiAdapter((context, request), name=view_name)
-    view_url = zope.component.getMultiAdapter(
-        (view, request), name='absolute_url')()
-    if view_name_truncated:
-        view_url = view_url.replace(view_name, '@@'+view_name)
-    return view_url
-
-
-def render_pagelet(context, request, view_name):
-    "Render a pagelet."
-    pagelet =  zope.component.getMultiAdapter(
-        (context, request), z3c.pagelet.interfaces.IPagelet, name=view_name)
-    return pagelet()
-
-
-class LoginViewlet(zope.viewlet.viewlet.ViewletBase):
-    """Display login link when user is not logged in."""
-
-    @property
-    def available(self):
-        return not authenticated(self.request.principal)
-
-    def render(self):
-        return u'<a href="%s?nextURL=%s">%s</a>' % (
-                get_view_url(self. context, self.request, self.viewName),
-                urllib.quote(self.request.getURL()),
-                zope.i18n.translate(
-                    _('[Login]', default='Login'), context=self.request))
-
-
-class LogoutViewlet(zope.viewlet.viewlet.ViewletBase):
-    """Display logout link when user is logged in and logout is supported."""
-
-    @property
-    def available(self):
-        return (
-            authenticated(self.request.principal)
-            and
-            logout_supported(self.request))
-
-    def render(self):
-        return u'<a href="%s?nextURL=%s">%s</a>' % (
-                get_view_url(self. context, self.request, self.viewName),
-                urllib.quote(self.request.getURL()),
-                zope.i18n.translate(
-                    _('[Logout]', default='Logout'), context=self.request))
-
-
-class HTTPAuthenticationLogin(object):
-
-    zope.interface.implements(zope.app.publisher.interfaces.http.ILogin)
-
-    def login(self, nextURL=None):
-        # we don't want to keep challenging if we're authenticated
-        if not authenticated(self.request.principal):
-            auth = zope.component.getUtility(
-                zope.authentication.interfaces.IAuthentication)
-            auth.unauthorized(
-                self.request.principal.id, self.request)
-            return render_pagelet(self, self.request, 'login_failed.html')
-        else:
-            if nextURL is None:
-                return render_pagelet(self, self.request, 'login_success.html')
-            else:
-                self.request.response.redirect(nextURL)
-
-
-class LoginFailedPagelet(object):
-    "Pagelet to display login failed notice."
-
-
-class LoginSuccessfulPagelet(object):
-    "Pagelet to display login succecc notice."
-
-
-class HTTPAuthenticationLogout(object):
-    """Since HTTP Authentication really does not know about logout, we are
-    simply challenging the client again."""
-
-    zope.interface.implements(zope.authentication.interfaces.ILogout)
-
-    def logout(self, nextURL=None):
-        if authenticated(self.request.principal):
-            auth = zope.component.getUtility(
-                zope.authentication.interfaces.IAuthentication)
-            zope.authentication.interfaces.ILogout(auth).logout(self.request)
-            if nextURL:
-                return render_pagelet(self, self.request, 'redirect.html')
-        if nextURL is None:
-            return render_pagelet(self, self.request, 'logout_success.html')
-        else:
-            return self.request.response.redirect(nextURL)
-
-
-class LogoutRedirectPagelet(object):
-    "Pagelet to display logout redirect."
-
-
-class LogoutSuccessPagelet(object):
-    "Pagelet to display logout success."
-
-
-class SessionCredentialsLoginForm(object):
-    "Login form using session credentials."
-
-

Modified: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/configure.zcml
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/configure.zcml	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/configure.zcml	2009-11-30 15:27:09 UTC (rev 106121)
@@ -12,6 +12,12 @@
       layer="z3c.layer.pagelet.IPageletBrowserLayer"
       />
 
+  <z3c:template
+      for=".SystemErrorPagelet"
+      template="systemerror.pt"
+      layer="z3c.layer.pagelet.IPageletBrowserLayer"
+      />
+
   <defaultView
       name="index.html"
       for="zope.interface.common.interfaces.IException"
@@ -21,7 +27,7 @@
   <z3c:pagelet
       name="index.html"
       for="zope.publisher.interfaces.ITraversalException"
-      class=".SystemErrorPagelet"
+      class=".NotFoundPagelet"
       permission="zope.Public"
       layer="z3c.layer.pagelet.IPageletBrowserLayer"
       />
@@ -32,12 +38,6 @@
       layer="z3c.layer.pagelet.IPageletBrowserLayer"
       />
 
-  <z3c:template
-      for=".SystemErrorPagelet"
-      template="systemerror.pt"
-      layer="z3c.layer.pagelet.IPageletBrowserLayer"
-      />
-
   <z3c:pagelet
       name="index.html"
       for="zope.security.interfaces.IUnauthorized"
@@ -46,29 +46,23 @@
       layer="z3c.layer.pagelet.IPageletBrowserLayer"
       />
 
-  <defaultView
-      name="index.html"
-      for="zope.security.interfaces.IUnauthorized"
-      layer="z3c.layer.pagelet.IPageletBrowserLayer"
-      />
-
   <z3c:template
       for=".UnauthorizedPagelet"
       template="unauthorized.pt"
       layer="z3c.layer.pagelet.IPageletBrowserLayer"
       />
 
-  <z3c:pagelet
+  <defaultView
       name="index.html"
-      for="zope.exceptions.interfaces.IUserError"
-      class=".UserErrorPagelet"
-      permission="zope.Public"
+      for="zope.security.interfaces.IUnauthorized"
       layer="z3c.layer.pagelet.IPageletBrowserLayer"
       />
 
-  <defaultView
+  <z3c:pagelet
       name="index.html"
       for="zope.exceptions.interfaces.IUserError"
+      class=".UserErrorPagelet"
+      permission="zope.Public"
       layer="z3c.layer.pagelet.IPageletBrowserLayer"
       />
 
@@ -78,17 +72,17 @@
       layer="z3c.layer.pagelet.IPageletBrowserLayer"
       />
 
-  <z3c:pagelet
+  <defaultView
       name="index.html"
-      for="zope.publisher.interfaces.INotFound"
-      class=".NotFoundPagelet"
-      permission="zope.Public"
+      for="zope.exceptions.interfaces.IUserError"
       layer="z3c.layer.pagelet.IPageletBrowserLayer"
       />
 
-  <defaultView
+  <z3c:pagelet
       name="index.html"
       for="zope.publisher.interfaces.INotFound"
+      class=".NotFoundPagelet"
+      permission="zope.Public"
       layer="z3c.layer.pagelet.IPageletBrowserLayer"
       />
 
@@ -98,6 +92,10 @@
       layer="z3c.layer.pagelet.IPageletBrowserLayer"
       />
 
-  <include file="zope.authentication.zcml" />
+  <defaultView
+      name="index.html"
+      for="zope.publisher.interfaces.INotFound"
+      layer="z3c.layer.pagelet.IPageletBrowserLayer"
+      />
 
 </configure>

Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_failed.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_failed.pt	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_failed.pt	2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,10 +0,0 @@
-<div>
-  <h1 i18n:translate="">Login Failed!</h1>
-
-  <p style="font-size: 150%">
-    <tal:block
-       i18n:translate="">You cancelled the login procedure.</tal:block>
-    <a tal:attributes="href python: view.request.get('nextURL', '.')"
-       i18n:translate="">Click here to return.</a>
-  </p>
-</div>

Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_success.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_success.pt	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/login_success.pt	2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,9 +0,0 @@
-<div>
-  <h1 i18n:translate="">Login successful!</h1>
-  <p style="font-size: 200%" i18n:translate="">
-    You are now logged in as
-    <em tal:content="view/request/principal/title"
-        i18n:name="UserTitle">Joe Smith</em>.
-  </p>
-  <a href="." i18n:translate="">Back to the main page.</a>
-</div>

Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout.pt	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout.pt	2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,8 +0,0 @@
-<div>
-  <h1 i18n:translate="">Logout successful!</h1>
-
-  <p style="font-size: 200%" i18n:translate="">
-    You are now logged out.
-  </p>
-  <a href="." i18n:translate="">Back to the main page.</a>
-</div>

Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout_head.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout_head.pt	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/logout_head.pt	2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,16 +0,0 @@
-<script type="text/javascript"><!--
-  // clear HTTP Authentication
-  try {
-    if (window.XMLHttpRequest) {
-      var xmlhttp = new XMLHttpRequest();
-      // Send invalid credentials, then abort
-      xmlhttp.open("GET", "@@", true, "logout", "logout");
-      xmlhttp.send("");
-      xmlhttp.abort();
-    } else if (document.execCommand) {
-      // IE specific command
-      document.execCommand("ClearAuthenticationCache");
-    }
-  } catch(e) { }
-  //-->
-</script>

Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect.pt	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect.pt	2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,9 +0,0 @@
-<div>
-  <h1 i18n:translate="">You are being redirected!</h1>
-
-  <p style="font-size: 150%">
-    <a tal:attributes="href view/request/nextURL" i18n:translate="">
-      If you see this screen for more than 5 seconds, click here.
-    </a>
-  </p>
-</div>

Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect_head.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect_head.pt	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/redirect_head.pt	2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,2 +0,0 @@
-<meta http-equiv="refresh" content="0;url=./"
-      tal:attributes="content string:0;;url=${request/nextURL}" />

Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/session_cred_loginform.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/session_cred_loginform.pt	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/session_cred_loginform.pt	2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,36 +0,0 @@
-<div tal:define="principal python:request.principal.id">
-  <p i18n:translate=""
-     tal:condition="python: principal == 'zope.anybody'">
-    Please provide Login Information
-  </p>
-  <p i18n:translate=""
-     tal:condition="python: principal != 'zope.anybody'">
-    You are not authorized to perform this action. However, you may login as a
-    different user who is authorized.
-  </p>
-  <form action="" method="post">
-    <div tal:omit-tag=""
-         tal:condition="python:principal != 'zope.anybody' and 'SUBMIT' in request">
-      <span tal:define="dummy python:request.response.redirect(request.get('camefrom', ''))" />
-    </div>
-    <div class="row">
-      <div class="label"><label for="login" i18n:translate="">User Name</label></div>
-      <div class="field">
-        <input type="text" name="login" id="login" />
-      </div>
-    </div>
-
-    <div class="row">
-      <div class="label"><label for="password" i18n:translate="">Password</label></div>
-      <div class="field">
-        <input type="password" name="password" id="password" />
-      </div>
-    </div>
-
-    <div class="row">
-      <input class="form-element" type="submit"
-             name="SUBMIT" value="Log in" i18n:attributes="value login-button" />
-    </div>
-    <input type="hidden" name="camefrom" tal:attributes="value request/camefrom | nothing">
-  </form>
-</div>

Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/zope.authentication.zcml
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/zope.authentication.zcml	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/browser/zope.authentication.zcml	2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,170 +0,0 @@
-<configure
-   xmlns="http://namespaces.zope.org/zope"
-   xmlns:browser="http://namespaces.zope.org/browser"
-   xmlns:z3c="http://namespaces.zope.org/z3c"
-   i18n_domain="z3c">
-
-  <!-- viewlets in head tag supporting login and logout
-       (viewlets are defined together with the pagelets below) -->
-  <browser:viewletManager
-     provides=".auth.ILoginLogoutHeadViewletManager"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     name="login-logout-head"
-     class=".auth.LoginLogoutHeadViewletManager"
-     permission="zope.Public"
-     />
-
-  <!-- viewlet manager and viewlets for login and logout links -->
-  <browser:viewletManager
-     provides=".auth.ILoginLogoutViewletManager"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     name="login-logout"
-     class=".auth.LoginLogoutViewletManager"
-     permission="zope.Public"
-     />
-
-  <browser:viewlet
-     manager=".auth.ILoginLogoutViewletManager"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     name="Login"
-     class=".auth.LoginViewlet"
-     permission="zope.Public"
-     weight="1"
-     viewName="@@login.html"
-     />
-
-  <browser:viewlet
-     manager=".auth.ILoginLogoutViewletManager"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     name="Logout"
-     class=".auth.LogoutViewlet"
-     permission="zope.Public"
-     weight="2"
-     viewName="@@logout.html"
-     />
-
-  <!-- login page (executing login and redirecting user) -->
-  <browser:page
-     for="*"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     name="login.html"
-     class=".auth.HTTPAuthenticationLogin"
-     attribute="login"
-     allowed_interface="zope.app.publisher.interfaces.http.ILogin"
-     permission="zope.Public"
-     />
-
-  <!-- login form for session credentials  -->
-  <z3c:pagelet
-     for="*"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     name="loginForm.html"
-     class=".auth.SessionCredentialsLoginForm"
-     permission="zope.Public"
-     />
-
-  <z3c:template
-     for=".auth.SessionCredentialsLoginForm"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     template="session_cred_loginform.pt"
-     />
-
-  <!-- login failed -->
-  <z3c:pagelet
-     for=".auth.HTTPAuthenticationLogin"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     name="login_failed.html"
-     class=".auth.LoginFailedPagelet"
-     permission="zope.Public"
-     />
-
-  <z3c:template
-     for=".auth.LoginFailedPagelet"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     template="login_failed.pt"
-     />
-
-  <!-- login success confirmation -->
-  <z3c:pagelet
-     for=".auth.HTTPAuthenticationLogin"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     name="login_success.html"
-     class=".auth.LoginSuccessfulPagelet"
-     permission="zope.Public"
-     />
-
-  <z3c:template
-     for=".auth.LoginSuccessfulPagelet"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     template="login_success.pt"
-     />
-
-  <!-- logout page (executing logout and redirecting user) -->
-  <browser:page
-     for="*"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     name="logout.html"
-     class=".auth.HTTPAuthenticationLogout"
-     attribute="logout"
-     allowed_interface="zope.app.publisher.interfaces.http.ILogout"
-     permission="zope.Public"
-     />
-
-  <!-- redirecting logout confirmation -->
-  <z3c:pagelet
-     for=".auth.HTTPAuthenticationLogout"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     name="redirect.html"
-     class=".auth.LogoutRedirectPagelet"
-     permission="zope.Public"
-     />
-
-  <z3c:template
-     for=".auth.LogoutRedirectPagelet"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     template="redirect.pt"
-     />
-
-  <browser:viewlet
-     manager=".auth.ILoginLogoutHeadViewletManager"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     view=".auth.LogoutRedirectPagelet"
-     name="Redirect"
-     template="redirect_head.pt"
-     permission="zope.Public"
-     />
-
-  <browser:viewlet
-     manager=".auth.ILoginLogoutHeadViewletManager"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     view=".auth.LogoutRedirectPagelet"
-     name="Logout"
-     template="logout_head.pt"
-     permission="zope.Public"
-     />
-
-  <!-- not redirecting logout confirmation -->
-  <z3c:pagelet
-     for=".auth.HTTPAuthenticationLogout"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     name="logout_success.html"
-     class=".auth.LogoutSuccessPagelet"
-     permission="zope.Public"
-     />
-
-  <z3c:template
-     for=".auth.LogoutSuccessPagelet"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     template="logout.pt"
-     />
-
-  <browser:viewlet
-     manager=".auth.ILoginLogoutHeadViewletManager"
-     layer="z3c.layer.pagelet.IPageletBrowserLayer"
-     view=".auth.LogoutSuccessPagelet"
-     name="Logout"
-     template="logout_head.pt"
-     permission="zope.Public"
-     />
-
-</configure>

Modified: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/configure.zcml
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/configure.zcml	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/configure.zcml	2009-11-30 15:27:09 UTC (rev 106121)
@@ -9,9 +9,8 @@
       type="zope.publisher.interfaces.browser.IBrowserSkinType"
       />
   
-  <include file="zope.app.http.exception.zcml" />
   <include file="zope.app.publication.zcml" />
-  <include file="zope.app.publisher.browser.zcml" />
+  <include file="zope.browserresource.zcml" />
   <include file="zope.traversing.zcml" />
   <include file="zope.traversing.browser.zcml" />
 

Added: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/interfaces.py
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/interfaces.py	                        (rev 0)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/interfaces.py	2009-11-30 15:27:09 UTC (rev 106121)
@@ -0,0 +1,35 @@
+##############################################################################
+#
+# Copyright (c) 2007 Zope Foundation and Contributors.
+# 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.
+#
+##############################################################################
+"""
+$Id: __init__.py 97 2007-03-29 22:58:27Z rineichen $
+"""
+
+import zope.interface
+import zope.browser.interfaces
+
+
+class IUnauthorizedPagelet(zope.interface.Interface):
+    """Unauthorized pagelet marker."""
+
+
+class ISystemErrorPagelet(zope.browser.interfaces.ISystemErrorView):
+    """System error view pagelet marker."""
+
+
+class IUserErrorPagelet(zope.interface.Interface):
+    """User error pagelet marker."""
+
+
+class INotFoundPagelet(zope.interface.Interface):
+    """NotFound pagelet marker."""

Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/login.txt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/login.txt	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/login.txt	2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,613 +0,0 @@
-Login and logout
-----------------
-
-Login and logout work both for basic auth and cookie auth.
-
-
-Setup
-~~~~~
-
-The layout page template has to include two content providers (viewlet
-mangers):
-
-  - ``login-logout-head`` inside the head tag to get automatic
-    redirects and JavaScript code which does the logout for basic
-    auth and
-
-  - ``login-logout`` inside the body tag to get login and logout links.
-
-The sample template looks like this:
-
-  >>> import os.path
-  >>> template_path = os.path.join(os.path.dirname(__file__), "tests",
-  ...     "login-logout-template.pt")
-  >>> print file(template_path, "r").read()
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-      <tal:block replace="structure provider:login-logout-head" />
-    </head>
-    <body>
-      <tal:block replace="structure provider:login-logout" />
-      <tal:block replace="structure provider:pagelet" />
-    </body>
-  </html>
-
-This template is registered for the ``IContainer`` interface in
-``ftesting.zcml``. After creating a container the template is
-used when browsing the container:
-
-  >>> from zope.container.btree import BTreeContainer
-  >>> getRootFolder()['container'] = BTreeContainer()
-
-Basic auth
-~~~~~~~~~~
-
-When the user is not logged in the login link is displayed:
-
-  >>> from zope.testbrowser.testing import Browser
-  >>> skinURL = 'http://localhost/++skin++PageletTestSkin/'
-  >>> browser = Browser()
-  >>> browser.handleErrors = False
-  >>> browser.open(skinURL + 'container/@@default.html')
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/@@default.html'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-    </head>
-    <body>
-      <a href="http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Login</a>
-    </body>
-  </html>
-
-Selecting the link leads to the login page, as we use basic auth here,
-we get an HTTP error 401 (unauthorized):
-
-  >>> login_url = browser.getLink('Login').url
-  >>> browser.getLink('Login').click()
-  Traceback (most recent call last):
-  httperror_seek_wrapper: HTTP Error 401: Unauthorized
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html'
-
-When adding correct credentials we get authorized:
-
-  >>> browser.addHeader('Authorization', 'Basic mgr:mgrpw')
-  >>> browser.reload()
-
-We are redirected to the page where we selected the login link. After
-logging in the login link is no longer displayed. As we did not
-specify that logout is supported, no logout link is displayed:
-
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/@@default.html'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-    </head>
-    <body>
-    </body>
-  </html>
-
-Calling the login URL again leads directly to the page referred in nextURL:
-
-  >>> browser.open(login_url)
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/@@default.html'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-    </head>
-    <body>
-    </body>
-  </html>
-
-Calling the login URL again without the query parameter leeds to a
-confirmation page telling that login was successfull:
-
-  >>> browser.open(login_url.split('?')[0])
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/@@login.html'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-  <head>
-  <title>PageletTestLayout</title>
-  </head>
-  <body>
-    <div>
-     <h1>Login successful!</h1>
-     <p style="font-size: 200%"> You are now logged in as <em>Manager</em>. </p>
-     <a href=".">Back to the main page.</a>
-    </div>
-  </body>
-  </html>
-
-Selecting the ``Back to the main page.`` link send the user back to
-the default view of the container. (``ftesting.zcml`` defines
-``@@default.html`` as the default view.):
-
-  >>> browser.getLink('Back to the main page.').click()
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-    </head>
-    <body>
-    </body>
-  </html>
-
-
-Providing an ``ILogoutSupported`` adapter leads to a logout link being
-displayed:
-
-  >>> from zope.app.testing import ztapi
-  >>> import zope.interface
-  >>> import zope.authentication.logout
-  >>> import zope.authentication.interfaces
-  >>> ztapi.provideAdapter(
-  ...     zope.interface.Interface,
-  ...     zope.authentication.interfaces.ILogoutSupported,
-  ...     zope.authentication.logout.LogoutSupported)
-  >>> browser.reload()
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-    </head>
-    <body>
-      <a href="http://localhost/++skin++PageletTestSkin/container/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Logout</a>
-    </body>
-  </html>
-
-Logout is done using JavaScript and a redirect. zope.testbrowser
-follows the redirects even if they use the meta tag instead of the
-status code. So I have to use a non API call to change this behavior
-to show the file contents:
-
-  >>> browser.mech_browser.set_handle_refresh(False)
-
-As testbrowser is not able to execute JavaScript the user remains
-authenticated:
-
-  >>> logout_url = browser.getLink('Logout').url
-  >>> browser.getLink('Logout').click()
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-      <script type="text/javascript"><!--
-    // clear HTTP Authentication
-    ...
-    //-->
-  </script>
-  <meta http-equiv="refresh"
-        content="0;url=http://localhost/++skin++PageletTestSkin/container/@@default.html" />
-    </head>
-    <body>
-      <a href="http://localhost/++skin++PageletTestSkin/container/@@logout.html/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40logout.html">Logout</a>
-      <div>
-    <h1>You are being redirected!</h1>
-    <p style="font-size: 150%">
-      <a href="http://localhost/++skin++PageletTestSkin/container/@@default.html">
-        If you see this screen for more than 5 seconds, click here.
-      </a>
-    </p>
-  </div>
-    </body>
-  </html>
-
-Calling the logout URL again after logout (simulated using a new
-browser instance) leads directly to the page referred in nextURL:
-
-  >>> browser2 = Browser(logout_url)
-  >>> browser2.url
-  'http://localhost/++skin++PageletTestSkin/container/@@default.html'
-  >>> print browser2.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-    </head>
-    <body>
-      <a href="http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Login</a>
-    </body>
-  </html>
-
-Calling the logout URL again without the query parameter leeds to a
-confirmation page telling that logout was successfull:
-
-  >>> browser2.open(logout_url.split('?')[0])
-  >>> browser2.url
-  'http://localhost/++skin++PageletTestSkin/container/@@logout.html'
-  >>> print browser2.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-      <script type="text/javascript"><!--
-    // clear HTTP Authentication
-    ...
-    //-->
-  </script>
-    </head>
-    <body>
-      <a href="http://localhost/++skin++PageletTestSkin/container/logout.html/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40logout.html">Login</a>
-      <div>
-    <h1>Logout successful!</h1>
-    <p style="font-size: 200%">
-      You are now logged out.
-    </p>
-    <a href=".">Back to the main page.</a>
-  </div>
-    </body>
-  </html>
-
-
-Cookie auth
-~~~~~~~~~~~
-
-To do cookie auth we have to set up a pluggable auth utility (PAU)
-with a authenticator plug-in (principal folder) first:
-
-  >>> from zope.authentication.interfaces import IAuthentication
-  >>> from zope.app.authentication.interfaces import IAuthenticatorPlugin
-  >>> from zope.app.authentication.authentication import PluggableAuthentication
-  >>> from zope.app.authentication.principalfolder import PrincipalFolder
-  >>> from zope.site import site
-
-  >>> root = getRootFolder()
-  >>> root['principal_folder'] = PrincipalFolder()
-  >>> sm = root.getSiteManager()
-  >>> sm.registerUtility(
-  ...     root['principal_folder'], IAuthenticatorPlugin, 'principal_folder')
-
-  >>> root['auth'] = PluggableAuthentication()
-  >>> sm.registerUtility(root['auth'], IAuthentication, '')
-  >>> root['auth'].credentialsPlugins = (u'Session Credentials',)
-  >>> root['auth'].authenticatorPlugins = (u'principal_folder',)
-
-We need a principal inside the principal folder:
-
-  >>> from zope.app.authentication.principalfolder import InternalPrincipal
-  >>> root['principal_folder']['1'] = InternalPrincipal(
-  ...     'tester', 'tpass', 'Tester')
-
-
-We use a new browser, so the principal is not logged in and the login
-link is displayed:
-
-  >>> browser = Browser()
-  >>> browser.open(skinURL + 'container/@@default.html')
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/@@default.html'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-    </head>
-    <body>
-      <a href="http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Login</a>
-    </body>
-  </html>
-
-Selecting the link leads to the login page:
-
-  >>> login_url = browser.getLink('Login').url
-  >>> browser.getLink('Login').click()
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/@@loginForm.html?camefrom=%2F%2B%2Bskin%2B%2BPageletTestSkin%2Fcontainer%2F%40%40login.html%3FnextURL%3Dhttp%253A%2F%2Flocalhost%2F%252B%252Bskin%252B%252BPageletTestSkin%2Fcontainer%2F%2540%2540default.html'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-  <head>
-  <title>PageletTestLayout</title>
-  </head>
-  <body>
-    <div>
-    <p>
-      Please provide Login Information
-    </p>
-    <form action="" method="post">
-      <div class="row">
-        <div class="label"><label for="login">User Name</label></div>
-        <div class="field">
-          <input type="text" name="login" id="login" />
-        </div>
-      </div>
-      <div class="row">
-        <div class="label"><label for="password">Password</label></div>
-        <div class="field">
-          <input type="password" name="password" id="password" />
-        </div>
-      </div>
-      <div class="row">
-        <input class="form-element" type="submit"
-               name="SUBMIT" value="Log in" />
-      </div>
-      <input type="hidden" name="camefrom"
-             value="/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">
-    </form>
-  </div>
-  </body>
-  </html>
-
-Entering wrong username does not authorize but display an error
-message:
-
-  >>> browser.getControl('User Name').value = 'me'
-  >>> browser.getControl('Password').value = 'tpass'
-  >>> browser.getControl('Log in').click()
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/@@loginForm.html?camefrom=%2F%2B%2Bskin%2B%2BPageletTestSkin%2Fcontainer%2F%40%40login.html%3FnextURL%3Dhttp%253A%2F%2Flocalhost%2F%252B%252Bskin%252B%252BPageletTestSkin%2Fcontainer%2F%2540%2540default.html'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-  <head>
-  <title>PageletTestLayout</title>
-  </head>
-  <body>
-    <div>
-    <p>
-      Please provide Login Information
-    </p>
-    <form action="" method="post">
-      <div class="row">
-        <div class="label"><label for="login">User Name</label></div>
-        <div class="field">
-          <input type="text" name="login" id="login" />
-        </div>
-      </div>
-      <div class="row">
-        <div class="label"><label for="password">Password</label></div>
-        <div class="field">
-          <input type="password" name="password" id="password" />
-        </div>
-      </div>
-      <div class="row">
-        <input class="form-element" type="submit"
-               name="SUBMIT" value="Log in" />
-      </div>
-      <input type="hidden" name="camefrom"
-             value="/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">
-    </form>
-  </div>
-  </body>
-  </html>
-
-Entering wrong password does not authorize either:
-
-  >>> browser.getControl('User Name').value = 'tester'
-  >>> browser.getControl('Password').value = 'let me in'
-  >>> browser.getControl('Log in').click()
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/@@loginForm.html?camefrom=%2F%2B%2Bskin%2B%2BPageletTestSkin%2Fcontainer%2F%40%40login.html%3FnextURL%3Dhttp%253A%2F%2Flocalhost%2F%252B%252Bskin%252B%252BPageletTestSkin%2Fcontainer%2F%2540%2540default.html'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-  <head>
-  <title>PageletTestLayout</title>
-  </head>
-  <body>
-    <div>
-    <p>
-      Please provide Login Information
-    </p>
-    <form action="" method="post">
-      <div class="row">
-        <div class="label"><label for="login">User Name</label></div>
-        <div class="field">
-          <input type="text" name="login" id="login" />
-        </div>
-      </div>
-      <div class="row">
-        <div class="label"><label for="password">Password</label></div>
-        <div class="field">
-          <input type="password" name="password" id="password" />
-        </div>
-      </div>
-      <div class="row">
-        <input class="form-element" type="submit"
-               name="SUBMIT" value="Log in" />
-      </div>
-      <input type="hidden" name="camefrom"
-             value="/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">
-    </form>
-  </div>
-  </body>
-  </html>
-
-
-After entering a correct username and password the user gets
-authorized:
-
-  >>> browser.getControl('User Name').value = 'tester'
-  >>> browser.getControl('Password').value = 'tpass'
-  >>> browser.getControl('Log in').click()
-
-The user gets redirected to the page where he selected the login
-link. After logging in the login link is no longer displayed. As we
-already specified that logout is supported, a logout link is
-displayed:
-
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/@@default.html'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-    </head>
-    <body>
-      <a href="http://localhost/++skin++PageletTestSkin/container/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Logout</a>
-    </body>
-  </html>
-
-
-Calling the login URL again leads directly to the page referred in nextURL:
-
-  >>> browser.open(login_url)
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/@@default.html'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-    </head>
-    <body>
-      <a href="http://localhost/++skin++PageletTestSkin/container/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Logout</a>
-    </body>
-  </html>
-
-Calling the login URL again without the query parameter leeds to a
-confirmation page telling that login was successfull:
-
-  >>> browser.open(login_url.split('?')[0])
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/@@login.html'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-  <head>
-  <title>PageletTestLayout</title>
-  </head>
-  <body>
-    <div>
-     <h1>Login successful!</h1>
-     <p style="font-size: 200%"> You are now logged in as <em>Tester</em>. </p>
-     <a href=".">Back to the main page.</a>
-    </div>
-  </body>
-  </html>
-
-Selecting the ``Back to the main page.`` link send the user back to
-the default view of the container. (``ftesting.zcml`` defines
-``@@default.html`` as the default view.):
-
-  >>> browser.getLink('Back to the main page.').click()
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-    </head>
-    <body>
-      <a href="http://localhost/++skin++PageletTestSkin/container/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Logout</a>
-    </body>
-  </html>
-
-
-Selecting the displayed logout link drops authentication information
-and displays a confirmation page, which redirects to the default page
-where the login link is displayed again (as redirection is done
-automatically by testbrowser I have to use the non API call trick
-again to show the displayed page):
-
-  >>> browser.mech_browser.set_handle_refresh(False)
-  >>> logout_url = browser.getLink('Logout').url
-  >>> browser.getLink('Logout').click()
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-      <script type="text/javascript"><!--
-    // clear HTTP Authentication
-    ...
-    //-->
-  </script>
-  <meta http-equiv="refresh"
-        content="0;url=http://localhost/++skin++PageletTestSkin/container/@@default.html" />
-    </head>
-    <body>
-      <a href="http://localhost/++skin++PageletTestSkin/container/@@logout.html/@@logout.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40logout.html">Logout</a>
-      <div>
-    <h1>You are being redirected!</h1>
-  <BLANKLINE>
-    <p style="font-size: 150%">
-      <a href="http://localhost/++skin++PageletTestSkin/container/@@default.html">
-        If you see this screen for more than 5 seconds, click here.
-      </a>
-    </p>
-  </div>
-    </body>
-  </html>
-  >>> browser.getLink('If you see this screen for more than 5 seconds').click()
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-    </head>
-    <body>
-      <a href="http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Login</a>
-    </body>
-  </html>
-  >>> browser.mech_browser.set_handle_refresh(True)
-
-Calling the logout URL again after logout leads directly to the page
-referred in nextURL:
-
-  >>> browser.open(logout_url)
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/@@default.html'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-    </head>
-    <body>
-      <a href="http://localhost/++skin++PageletTestSkin/container/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40default.html">Login</a>
-    </body>
-  </html>
-
-Calling the logout URL again without the query parameter leeds to a
-confirmation page telling that logout was successfull:
-
-  >>> browser.open(logout_url.split('?')[0])
-  >>> browser.url
-  'http://localhost/++skin++PageletTestSkin/container/@@logout.html'
-  >>> print browser.contents
-  <!DOCTYPE ...>
-  <html ...>
-    <head>
-      <title>PageletTest</title>
-      <script type="text/javascript"><!--
-    // clear HTTP Authentication
-    ...
-    //-->
-  </script>
-    </head>
-    <body>
-      <a href="http://localhost/++skin++PageletTestSkin/container/logout.html/@@login.html?nextURL=http%3A//localhost/%2B%2Bskin%2B%2BPageletTestSkin/container/%40%40logout.html">Login</a>
-      <div>
-    <h1>Logout successful!</h1>
-    <p style="font-size: 200%">
-      You are now logged out.
-    </p>
-    <a href=".">Back to the main page.</a>
-  </div>
-    </body>
-  </html>

Modified: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/__init__.py
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/__init__.py	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/__init__.py	2009-11-30 15:27:09 UTC (rev 106121)
@@ -57,11 +57,3 @@
 
     def __call__(self):
         return str([type(x) for x in self.context.values()])
-
-
-class LoginLogoutPage(browser.BrowserPagelet):
-    """Login and logout page."""
-
-    # make sure the pagelet renders no content, as this is not what we
-    # want to show with this pagelet
-    template = lambda self: ''

Modified: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/ftesting.zcml
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/ftesting.zcml	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/ftesting.zcml	2009-11-30 15:27:09 UTC (rev 106121)
@@ -14,18 +14,15 @@
   <exclude package="zope.app.authentication.browser" file="httpplugins.zcml" />
   <exclude package="zope.app.authentication.browser" file="principalfolder.zcml" />
   <exclude package="zope.app.authentication.browser" file="session.zcml" />
-  <exclude package="zope.app.i18n.browser" />
-  <exclude package="zope.dublincore.browser" />
 
   <!-- meta configure -->
-  <include package="zope.i18n" file="meta.zcml" />
   <include package="zope.component" file="meta.zcml" />
   <include package="zope.app.pagetemplate" file="meta.zcml" />
   <include package="zope.app.publication" file="meta.zcml" />
-  <include package="zope.app.publisher" file="meta.zcml" />
   <include package="zope.principalregistry" file="meta.zcml" />
+  <include package="zope.publisher" file="meta.zcml" />
+  <include package="zope.browserpage" file="meta.zcml" />
   <include package="zope.securitypolicy" file="meta.zcml" />
-  <include package="zope.viewlet" file="meta.zcml" />
   <include package="zope.security" file="meta.zcml" />
 
   <!-- 3rd party meta configure -->
@@ -40,9 +37,7 @@
   <include package="zope.app.appsetup" />
   <include package="zope.site" />
   <include package="zope.container" />
-  <include package="zope.app.i18n" />
   <include package="zope.app.publication" />
-  <include package="zope.app.publisher.browser" />
   <include package="zope.app.authentication" />
   <include package="zope.securitypolicy" />
   <include package="zope.component" />
@@ -50,8 +45,6 @@
   <include package="zope.location" />
   <include package="zope.publisher" />
   <include package="zope.traversing" />
-  <include package="zope.traversing.browser" />
-  <include package="zope.viewlet" />
   <include package="zope.session" />
   <include package="zope.security" file="permissions.zcml" />
 
@@ -122,41 +115,6 @@
         class=".ContainerContentsPage"
         />
 
-    <!-- definitions for login-logout tests -->
-    <!-- use special template for default.html view -->
-    <z3c:layout
-        for=".LoginLogoutPage"
-        layer="z3c.layer.pagelet.IPageletBrowserLayer"
-        template="login-logout-template.pt"
-        />
-
-    <z3c:pagelet
-        for="zope.container.interfaces.IContainer"
-        name="default.html"
-        permission="zope.View"
-        class=".LoginLogoutPage"
-        layer="z3c.layer.pagelet.IPageletBrowserLayer"
-        />
-
-    <browser:defaultView
-       name="default.html"
-       for="zope.container.interfaces.IContainer"
-       layer="z3c.layer.pagelet.IPageletBrowserLayer"
-       />
-
-    <!-- use tempate with head slot for logout pagelets -->
-    <z3c:layout
-        for="..browser.auth.LogoutRedirectPagelet"
-        layer="z3c.layer.pagelet.IPageletBrowserLayer"
-        template="login-logout-template.pt"
-        />
-
-    <z3c:layout
-        for="..browser.auth.LogoutSuccessPagelet"
-        layer="z3c.layer.pagelet.IPageletBrowserLayer"
-        template="login-logout-template.pt"
-        />
-
   </configure>
 
 
@@ -171,19 +129,19 @@
       title="Unauthenticated User" />
 
   <unauthenticatedGroup
-    id="zope.Anybody"
-    title="Unauthenticated Users"
-    />
+      id="zope.Anybody"
+      title="Unauthenticated Users"
+      />
 
   <authenticatedGroup
-    id="zope.Authenticated"
-    title="Authenticated Users"
-    />
+      id="zope.Authenticated"
+      title="Authenticated Users"
+      />
 
   <everybodyGroup
-    id="zope.Everybody"
-    title="All Users"
-    />
+      id="zope.Everybody"
+      title="All Users"
+      />
 
   <!-- default users -->
   <role

Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/login-logout-template.pt
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/login-logout-template.pt	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/login-logout-template.pt	2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,11 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <title>PageletTest</title>
-    <tal:block replace="structure provider:login-logout-head" />
-  </head>
-  <body>
-    <tal:block replace="structure provider:login-logout" />
-    <tal:block replace="structure provider:pagelet" />
-  </body>
-</html>

Modified: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/test_layer.py
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/test_layer.py	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/tests/test_layer.py	2009-11-30 15:27:09 UTC (rev 106121)
@@ -38,6 +38,5 @@
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(create_suite('../README.txt', checker=checker))
-    suite.addTest(create_suite('../login.txt', checker=checker))
     suite.addTest(create_suite('bugfixes.txt'))
     return suite

Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.http.exception.zcml
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.http.exception.zcml	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.http.exception.zcml	2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,21 +0,0 @@
-<configure
-    xmlns="http://namespaces.zope.org/zope"
-    i18n_domain="z3c">
-
-  <view
-      name="index.html"
-      for="zope.security.interfaces.IUnauthorized"
-      permission="zope.Public"
-      factory=".browser.UnauthorizedPagelet"
-      type="z3c.layer.pagelet.IPageletBrowserLayer"
-      />
-
-  <view
-      name="index.html"
-      for="zope.publisher.interfaces.ITraversalException"
-      permission="zope.Public"
-      factory=".browser.NotFoundPagelet"
-      type="z3c.layer.pagelet.IPageletBrowserLayer"
-      />
-
-</configure>

Deleted: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.publisher.browser.zcml
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.publisher.browser.zcml	2009-11-30 14:57:31 UTC (rev 106120)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.publisher.browser.zcml	2009-11-30 15:27:09 UTC (rev 106121)
@@ -1,15 +0,0 @@
-<configure
-    xmlns="http://namespaces.zope.org/zope"
-    xmlns:browser="http://namespaces.zope.org/browser"
-    i18n_domain="z3c">
-
-  <browser:page
-      name=""
-      for="zope.location.interfaces.ISite"
-      class="zope.app.publisher.browser.resources.Resources"
-      permission="zope.Public"
-      allowed_interface="zope.publisher.interfaces.browser.IBrowserPublisher"
-      layer="z3c.layer.pagelet.IPageletBrowserLayer"
-      />
-
-</configure>

Copied: z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.browserresource.zcml (from rev 100221, z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.app.publisher.browser.zcml)
===================================================================
--- z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.browserresource.zcml	                        (rev 0)
+++ z3c.layer.pagelet/trunk/src/z3c/layer/pagelet/zope.browserresource.zcml	2009-11-30 15:27:09 UTC (rev 106121)
@@ -0,0 +1,15 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:browser="http://namespaces.zope.org/browser"
+    i18n_domain="z3c">
+
+  <browser:page
+      name=""
+      for="zope.location.interfaces.ISite"
+      class="zope.browserresource.resources.Resources"
+      permission="zope.Public"
+      allowed_interface="zope.publisher.interfaces.browser.IBrowserPublisher"
+      layer="z3c.layer.pagelet.IPageletBrowserLayer"
+      />
+
+</configure>



More information about the checkins mailing list