[Checkins] SVN: z3c.skin.ready2go/trunk/ Make progress with ready2go skin implementation

Roger Ineichen roger at projekt01.ch
Sat Dec 29 12:06:16 EST 2007


Log message for revision 82553:
  Make progress with ready2go skin implementation
  Improve different concepts
  Added a new IReady2GoSkinLayer which which makes it reusable
  Use new IReady2GoSkinLayer in IReady2GoBrowserSkin
  Use new menu declarations from z3c.menu.ready2go
  Improve CSS
  Updated buildout setup
  Updated tests

Changed:
  U   z3c.skin.ready2go/trunk/buildout.cfg
  U   z3c.skin.ready2go/trunk/setup.py
  U   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/README.txt
  U   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/__init__.py
  U   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/__init__.py
  U   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/configure.zcml
  U   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/favicon.png
  D   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/menu_context.pt
  D   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/menu_global.pt
  U   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/ready2go.css
  D   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/sidebar.pt
  U   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/template.pt
  D   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/views.py
  U   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/configure.zcml
  D   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/demo.py
  D   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/demo.zcml
  U   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/ftesting.zcml
  A   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/skin.zcml
  D   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/testing.py
  U   z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/tests.py

-=-
Modified: z3c.skin.ready2go/trunk/buildout.cfg
===================================================================
--- z3c.skin.ready2go/trunk/buildout.cfg	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/buildout.cfg	2007-12-29 17:06:16 UTC (rev 82553)
@@ -2,30 +2,278 @@
 develop = .
           externals/z3c.layer.ready2go
           externals/z3c.layer.pagelet
-          externals/z3c.skin.pagelet
           externals/z3c.menu.ready2go
-parts = demo test coverage
+          externals/z3c.recipe.dev
+          externals/zope.viewlet
+parts = test coverage checker demo
 
+
 [test]
 recipe = zc.recipe.testrunner
-eggs = z3c.skin.ready2go [app, test]
+eggs = z3c.skin.ready2go [test]
 
 [coverage]
 recipe = zc.recipe.egg
 eggs = z3c.coverage
 
-[zope3]
-location = .
 
-[ready2go-demo-app]
-recipe = zc.zope3recipes:app
-site.zcml = <include package="z3c.skin.ready2go" file="ftesting.zcml" />
-eggs = z3c.skin.ready2go [app]
+[checker]
+recipe = lovely.recipe:importchecker
+path = src/z3c/skin/ready2go
 
+
 [demo]
-recipe = zc.zope3recipes:instance
-application = ready2go-demo-app
-zope.conf = ${database:zconfig}
+recipe = z3c.recipe.dev:app
+eggs = z3c.skin.ready2go
+server = zserver
+zope.conf =
+  ${var:zconfig}
 
-[database]
+  interrupt-check-interval 50
+
+  <server>
+    type WSGI-HTTP
+    address 8080
+  </server>
+
+  <eventlog>
+    <logfile>
+      path STDOUT
+      formatter zope.exceptions.log.Formatter
+    </logfile>
+  </eventlog>
+
+  <accesslog>
+    <logfile>
+      path access.log
+    </logfile>
+    <logfile>
+      path STDOUT
+    </logfile>
+  </accesslog>
+
+  devmode on
+
+site.zcml =
+  <!-- Turn on the devmode -->
+  <configure
+      xmlns:meta="http://namespaces.zope.org/meta"
+      xmlns:browser="http://namespaces.zope.org/browser"
+      xmlns:z3c="http://namespaces.zope.org/z3c"
+      xmlns:mail="http://namespaces.zope.org/mail"
+      i18n_domain="zope">
+
+  <!-- Turn on the devmode -->
+  <meta:provides feature="devmode" />
+
+  <!-- load meta configuration for exclude -->
+  <include package="zc.configuration" file="meta.zcml" />
+
+  <!-- exclude will prevent from include -->
+  <exclude package="zope.app.authentication" file="ftpplugins.zcml" />
+  <exclude package="zope.app.authentication" file="groupfolder.zcml" />
+  <exclude package="zope.app.authentication" file="principalfolder.zcml" />
+  <exclude package="zope.app.authentication.browser" />
+  <exclude package="zope.app.authentication.browser" file="configure.zcml" />
+  <exclude package="zope.app.authentication.browser" file="groupfolder.zcml" />
+  <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.broken" file="browser.zcml" />
+  <exclude package="zope.app.container.browser" />
+  <exclude package="zope.app.error.browser" />
+  <exclude package="zope.app.folder.browser" />
+  <exclude package="zope.app.i18n.browser" />
+  <exclude package="zope.app.securitypolicy.browser" />
+  <exclude package="zope.app.session" file="browser.zcml" />
+  <exclude package="zope.dublincore.browser" />
+
+  <!-- meta configure -->
+  <include package="zope.i18n" file="meta.zcml" />
+  <include package="zope.app.component" file="meta.zcml" />
+  <include package="zope.app.component.browser" file="meta.zcml" />
+  <include package="zope.app.container.browser" 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.app.security" file="meta.zcml" />
+  <include package="zope.security" file="meta.zcml" />
+  <include package="zope.securitypolicy" file="meta.zcml" />
+  <include package="zope.viewlet" file="meta.zcml" />
+
+  <!-- load 3rd party meta configuration -->
+  <include package="z3c.form" file="meta.zcml" />
+  <include package="z3c.macro" file="meta.zcml" />
+  <include package="z3c.pagelet" file="meta.zcml" />
+  <include package="z3c.template" file="meta.zcml" />
+  <include package="z3c.zrtresource" file="meta.zcml" />
+
+  <!-- vocabulary setup, that's bad and weird, because this is meta configuration -->
+  <include package="zope.app.schema" />
+
+
+  <!-- Database -->
+  <include package="zope.app.appsetup" />
+  <include package="zope.app.zopeappgenerations" />
+
+
+  <!-- zope packages -->
+  <include package="zope.annotation" />
+  <include package="zope.component" />
+  <include package="zope.contentprovider" />
+  <include package="zope.dublincore" />
+  <include package="zope.location" />
+  <include package="zope.securitypolicy" />
+  <include package="zope.session" />
+  <include package="zope.traversing" />
+  <include package="zope.traversing.browser" />
+
+  <!-- Zope server -->
+  <include package="zope.app.server" />
+  <include package="zope.app.twisted" />
+  <include package="zope.app.wsgi" />
+
+  <!-- Broken-object support -->
+  <include package="zope.app.broken" />
+  
+
+  <!-- Utilities -->
+  <include package="zope.app.principalannotation" />
+  <include package="zope.error" />
+
+
+  <!-- load zope package configuration -->
+  <include package="zope.app.authentication" />
+  <include package="zope.app.component" />
+  <include package="zope.app.container" />
+  <include package="zope.app.folder" />
+  <include package="zope.app.http" />
+  <include package="zope.app.i18n" />
+  <include package="zope.app.publication" />
+  <include package="zope.app.publisher" />
+  <include package="zope.app.publisher.browser" />
+  <include package="zope.app.security" />
+  <include package="zope.app.securitypolicy" />
+
+
+  <!-- z3c component -->
+  <include package="z3c.form" />
+  <include package="z3c.formui" />
+  <include package="z3c.layer.pagelet" />
+  <include package="z3c.layer.ready2go" />
+  <include package="z3c.macro" />
+  <include package="z3c.pagelet" />
+  <include package="z3c.skin.ready2go" />
+
+
+  <browser:defaultSkin name="Ready2Go" />
+
+  <!-- default view points to TestPage -->
+  <browser:defaultView name="index.html" />
+
+
+  <!-- test pages taken from z3c.layer.pagelet package -->
+  <configure package="z3c.layer.pagelet.tests">
+    <z3c:pagelet
+        for="*"
+        name="index.html"
+        permission="zope.ManageContent"
+        class=".TestPage"
+        layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+        />
+
+    <z3c:template
+        for=".TestPage"
+        layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+        template="page.pt"
+        />
+  </configure>
+
+  <!-- from zope.app.i18n move this to another package -->
+  <!-- Setup charset negotiation -->
+  <adapter
+      factory="zope.publisher.http.HTTPCharsets"
+      for="zope.publisher.interfaces.http.IHTTPRequest"
+      provides="zope.i18n.interfaces.IUserPreferredCharsets"
+      />
+
+  <!-- Setup charset negotiation --><!-- move this to another package -->
+  <adapter
+      factory="zope.app.publisher.browser.ModifiableBrowserLanguages"
+      for="zope.publisher.interfaces.http.IHTTPRequest"
+      provides="zope.i18n.interfaces.IModifiableUserPreferredLanguages"
+      />
+
+  <class class="zope.publisher.http.HTTPRequest">
+    <implements
+        interface="zope.annotation.interfaces.IAttributeAnnotatable"
+        />
+  </class>
+
+  <!-- load other zcml files -->
+  <include file="securitypolicy.zcml" />
+  <include file="principals.zcml" />
+
+  </configure>
+
+principals.zcml = 
+  <unauthenticatedPrincipal
+    id="zope.anybody"
+    title="Unauthenticated User" 
+    />
+
+  <unauthenticatedGroup
+    id="zope.Anybody"
+    title="Unauthenticated Users" 
+    />
+
+  <authenticatedGroup
+    id="zope.Authenticated"
+    title="Authenticated Users"
+    />
+
+  <everybodyGroup
+    id="zope.Everybody"
+    title="All Users"
+    />
+
+  <principal
+    id="zope.manager"
+    title="Manager"
+    login="Manager"
+    password="password"
+    />
+
+  <grant
+    role="zope.Manager"
+    principal="zope.manager"
+    />
+
+
+securitypolicy.zcml =
+  <include package="zope.securitypolicy" />
+
+  <securityPolicy
+      component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy"
+      />
+
+  <role id="zope.Anonymous" title="Everybody"
+        description="All users have this role implicitly" />
+  <role id="zope.Manager" title="Site Manager" />
+  <role id="zope.Member" title="Site Member" />
+
+  <!-- Replace the following directive if you don't want public access -->
+  <grant
+      permission="zope.View"
+      role="zope.Anonymous"
+      />
+  <grant
+      permission="zope.app.dublincore.view"
+      role="zope.Anonymous"
+      />
+
+  <grantAll role="zope.Manager" />
+
+
+[var]
 recipe = zc.recipe.filestorage

Modified: z3c.skin.ready2go/trunk/setup.py
===================================================================
--- z3c.skin.ready2go/trunk/setup.py	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/setup.py	2007-12-29 17:06:16 UTC (rev 82553)
@@ -48,29 +48,14 @@
     packages = find_packages('src'),
     include_package_data = True,
     package_dir = {'':'src'},
-    namespace_packages = ['z3c'],
+    namespace_packages = ['z3c', 'z3c.skin'],
     extras_require = dict(
-        app = ['zope.app.component',
-               'zope.app.pagetemplate',
-               'zope.app.publisher',
-               'zope.app.publication',
-               'zope.app.container',
-               'zope.app.testing',
-               'zope.app.zapi',
-               'zope.contentprovider',
-               'zope.i18n',
-               'zope.i18nmessageid',
-               'zope.interface',
-               'zope.schema',
-               'zope.security',
-               'zope.testing',
-               'zope.traversing',
-               'zope.viewlet',
-               ],
-        test = ['z3c.coverage',
-                'z3c.etestbrowser',
-                'zope.app.testing',
-                'zope.app.securitypolicy'],
+        test = [
+            'z3c.coverage',
+            'z3c.etestbrowser',
+            'zope.app.testing',
+            'zope.app.securitypolicy',
+            ],
         ),
     install_requires = [
         'setuptools',
@@ -102,8 +87,8 @@
         'z3c.zrtresource',
         'z3c.layer.pagelet',
         'z3c.layer.ready2go',
-        'z3c.skin.pagelet',
         'z3c.menu.ready2go',
+        'zc.configuration',
         ],
     zip_safe = False,
 )
\ No newline at end of file

Modified: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/README.txt
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/README.txt	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/README.txt	2007-12-29 17:06:16 UTC (rev 82553)
@@ -2,19 +2,19 @@
 README
 ======
 
-The z3c.skin.ready2go package provides a skin including the layer called
+The z3c.skin.ready2go package provides a skin based on the called
 IReady2GoBrowserLayer which is defined in z3c.layer.ready2go.
 
 Note, this skin is only registered in the test layer. You can use this
 skin as a base for your own custom skins or just use it as a sample for build
 you own skins.
 
-Open a browser and access our test skin called ``TestSkin``:
+Open a browser and access our test skin called ``Ready2Go``:
 
   >>> from z3c.etestbrowser.testing import ExtendedTestBrowser
   >>> user = ExtendedTestBrowser()
   >>> user.addHeader('Accept-Language', 'en')
-  >>> user.open('http://localhost/++skin++TestSkin')
+  >>> user.open('http://localhost/++skin++Ready2Go')
 
 Let's see how such a skin looks like:
 
@@ -23,12 +23,23 @@
   <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
         lang="en">
   <head>
+  <base href="http://localhost/++skin++Ready2Go/@@index.html" />
+  <BLANKLINE>
   <title>Ready2go</title><meta http-equiv="cache-control" content="no-cache" />
   <meta http-equiv="pragma" content="no-cache" />
+  <script type="text/javascript">
+    var contexturl = 'http://localhost/++skin++Ready2Go';
+    var viewurl = 'http://localhost/++skin++Ready2Go/@@index.html';</script>
+  <script type="text/javascript"
+          src="http://localhost/++skin++Ready2Go/@@/ready2go.js">
+  </script>
   <BLANKLINE>
+  <link type="text/css" rel="stylesheet"
+        href="http://localhost/++skin++Ready2Go/@@/ready2go.css"
+        media="all" />
   <BLANKLINE>
   <link rel="icon" type="image/png"
-        href="http://localhost/++skin++TestSkin/@@/favicon.png" />
+        href="http://localhost/++skin++Ready2Go/@@/favicon.png" />
   </head>
   <body>
   <div id="layoutWrapper">
@@ -38,38 +49,39 @@
   <BLANKLINE>
         </div>
         <div id="user">
-          User: Manager
+          <span>User:</span>
+          <span>Fallback unauthenticated principal</span>
+          &nbsp;&nbsp;
+          <a href="http://localhost/++skin++Ready2Go/logout.html"
+             style="font-size: 100%">[Logout]</a>
         </div>
         <img id="logo"
-             src="http://localhost/++skin++TestSkin/@@/img/logo.gif"
+             src="http://localhost/++skin++Ready2Go/@@/img/logo.gif"
              width="53" height="51" alt="logo" />
       </div>
       <div id="menuContainer">
-  <ul>
-    <li class="selected">
-    <a href="http://localhost/++skin++TestSkin/index.html"><span>Home</span></a>
-  </li>
   <BLANKLINE>
-  </ul>
+        <div id="addingMenuContainer">
+          <ul id="addingMenu" class="addingMenu">
+            <li class="menuSeparatorLeft">
+              <a href="#">Adding</a>
   <BLANKLINE>
-  </div>
-      <div id="naviContainer" class="sortable">
-        Sidebar
+            </li>
+          </ul>
+        </div>
+      </div>
+      <div id="naviContainer">
   <BLANKLINE>
       </div>
       <div id="contentContainer">
-        <div id="tabContainer"></div>
+        <div id="contextMenuContainer">
+  <BLANKLINE>
+          <div id="contextMenuContainerBottom">
+            &nbsp;
+          </div>
+        </div>
         <div id="content">
-          <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>
+          test page
   <BLANKLINE>
         </div>
       </div>

Modified: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/__init__.py
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/__init__.py	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/__init__.py	2007-12-29 17:06:16 UTC (rev 82553)
@@ -16,39 +16,12 @@
 """
 __docformat__ = "reStructuredText"
 
-from zope.viewlet.interfaces import IViewletManager
-
 import z3c.layer.ready2go
 
 
-class IReady2GoBrowserSkin(z3c.layer.ready2go.IReady2GoBrowserLayer):
-    """The Ready2Go skin is not registered by default. 
-    
-    This could be done in your project or inherit from this layer and
-    register your own.
-    
-    """
+class IReady2GoSkinLayer(z3c.layer.ready2go.IReady2GoBrowserLayer):
+    """The Ready2Go skin layer offers base UI components."""
 
 
-class ICSS(IViewletManager):
-    """CSS viewlet manager."""
-
-
-class IJavaScript(IViewletManager):
-    """JavaScript viewlet manager."""
-
-
-class IBreadcrumb(IViewletManager):
-    """Breadcrumb viewlet manager."""
-
-
-class IGlobalMenu(IViewletManager):
-    """GlobalMenu viewlet manager."""
-
-
-class IContextMenu(IViewletManager):
-    """ContextMenu viewlet manager."""
-
-
-class ISideBar(IViewletManager):
-    """SideBar viewlet manager."""
+class IReady2GoBrowserSkin(IReady2GoSkinLayer):
+    """The Ready2Go browser skin is accessible as named ´´Ready2Go´´ skin."""

Modified: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/__init__.py
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/__init__.py	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/__init__.py	2007-12-29 17:06:16 UTC (rev 82553)
@@ -14,3 +14,17 @@
 """
 $Id: __init__.py 72088 2007-01-18 01:09:33Z rogerineichen $
 """
+__docformat__ = "reStructuredText"
+
+from zope.viewlet import viewlet
+from z3c.pagelet import browser
+
+
+class IndexPagelet(browser.BrowserPagelet):
+    """Default index view."""
+
+
+Ready2GoCSS = viewlet.CSSViewlet('ready2go.css')
+
+
+Ready2GoJavaScript = viewlet.JavaScriptViewlet('ready2go.js')

Modified: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/configure.zcml
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/configure.zcml	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/configure.zcml	2007-12-29 17:06:16 UTC (rev 82553)
@@ -8,70 +8,86 @@
   <zrt-resource
       name="ready2go.css"
       file="ready2go.css"
-      layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+      layer="z3c.skin.ready2go.IReady2GoSkinLayer"
       />
 
+  <zrt-resource
+      name="ready2go.js"
+      file="ready2go.js"
+      layer="z3c.skin.ready2go.IReady2GoSkinLayer"
+      />
+
   <resource
       name="favicon.png"
       file="favicon.png"
-      layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+      layer="z3c.skin.ready2go.IReady2GoSkinLayer"
       />
 
   <resourceDirectory
       name="img"
       directory="img"
-      layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+      layer="z3c.skin.ready2go.IReady2GoSkinLayer"
       />
 
   <!-- viewlet managers -->
   <viewletManager
       name="ICSS"
       class="z3c.viewlet.manager.WeightOrderedViewletManager"
-      provides="z3c.skin.ready2go.ICSS"
-      layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+      provides="z3c.layer.ready2go.ICSS"
+      layer="z3c.skin.ready2go.IReady2GoSkinLayer"
       permission="zope.Public"
       />
 
   <viewletManager
       name="IJavaScript"
-      provides="z3c.skin.ready2go.IJavaScript"
+      provides="z3c.layer.ready2go.IJavaScript"
       class="z3c.viewlet.manager.WeightOrderedViewletManager"
-      layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+      layer="z3c.skin.ready2go.IReady2GoSkinLayer"
       permission="zope.Public"
       />
 
   <viewletManager
       name="IBreadcrumb"
-      provides="z3c.skin.ready2go.IBreadcrumb"
+      provides="z3c.layer.ready2go.IBreadcrumb"
       class="z3c.viewlet.manager.WeightOrderedViewletManager"
-      layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+      layer="z3c.skin.ready2go.IReady2GoSkinLayer"
       permission="zope.Public"
       />
 
-  <viewletManager
-      name="IGlobalMenu"
-      provides="z3c.skin.ready2go.IGlobalMenu"
-      class="z3c.menu.ready2go.manager.MenuManager"
-      template="menu_global.pt"
-      layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
-      permission="zope.Public"
-      />
+  <configure package="z3c.menu.ready2go">
+    <viewletManager
+        name="IGlobalMenu"
+        provides=".IGlobalMenu"
+        class=".manager.MenuManager"
+        template="menu.pt"
+        layer="z3c.skin.ready2go.IReady2GoSkinLayer"
+        permission="zope.Public"
+        />
 
-  <viewletManager
-      name="IContextMenu"
-      provides="z3c.skin.ready2go.IContextMenu"
-      class="z3c.menu.ready2go.manager.MenuManager"
-      template="menu_context.pt"
-      layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
-      permission="zope.Public"
-      />
+    <viewletManager
+        name="IContextMenu"
+        provides="z3c.menu.ready2go.IContextMenu"
+        class=".manager.MenuManager"
+        template="menu.pt"
+        layer="z3c.skin.ready2go.IReady2GoSkinLayer"
+        permission="zope.Public"
+        />
 
+    <viewletManager
+        name="IAddMenu"
+        provides="z3c.menu.ready2go.IAddMenu"
+        class=".manager.MenuManager"
+        template="menu.pt"
+        layer="z3c.skin.ready2go.IReady2GoSkinLayer"
+        permission="zope.Public"
+        />
+  </configure>
+
   <viewletManager
       name="ISideBar"
-      provides="z3c.skin.ready2go.ISideBar"
-      class="z3c.viewlet.manager.WeightOrderedViewletManager"
-      template="sidebar.pt"
-      layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+      provides="z3c.layer.ready2go.ISideBar"
+      class="zope.viewlet.manager.ConditionalViewletManager"
+      layer="z3c.skin.ready2go.IReady2GoSkinLayer"
       permission="zope.Public"
       />
 
@@ -79,7 +95,7 @@
   <!-- layout -->
   <z3c:layout
       for="*"
-      layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+      layer="z3c.skin.ready2go.IReady2GoSkinLayer"
       template="template.pt"
       />
 
@@ -88,26 +104,35 @@
   <viewlet
       name="ready2go.css"
       for="*"
-      manager="z3c.skin.pagelet.ICSS"
-      class=".views.Ready2GoCSS"
-      layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+      manager="z3c.layer.ready2go.ICSS"
+      class=".Ready2GoCSS"
+      layer="z3c.skin.ready2go.IReady2GoSkinLayer"
       permission="zope.Public"
       />
 
-  <!-- simple index.html view -->
+  <viewlet
+      name="ready2go.js"
+      for="*"
+      manager="z3c.layer.ready2go.IJavaScript"
+      class=".Ready2GoJavaScript"
+      layer="z3c.skin.ready2go.IReady2GoSkinLayer"
+      permission="zope.Public"
+      />
+
+
+  <!-- default index.html view -->
   <z3c:pagelet
       name="index.html"
       for="*"
-      class=".views.IndexPagelet"
-      layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+      class=".IndexPagelet"
+      layer="z3c.skin.ready2go.IReady2GoSkinLayer"
       permission="zope.View"
       />
 
-  <!-- index template -->
   <z3c:template
       for="*"
       template="index.pt"
-      layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+      layer="z3c.skin.ready2go.IReady2GoSkinLayer"
       />
 
 </configure>

Modified: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/favicon.png
===================================================================
(Binary files differ)

Deleted: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/menu_context.pt
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/menu_context.pt	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/menu_context.pt	2007-12-29 17:06:16 UTC (rev 82553)
@@ -1,6 +0,0 @@
-<div id="contextMenu" tal:define="viewlets view/viewlets">
-<ul tal:condition="viewlets">
-  <tal:block repeat="viewlet viewlets"
-             content="structure viewlet/render" />
-</ul>
-</div>

Deleted: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/menu_global.pt
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/menu_global.pt	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/menu_global.pt	2007-12-29 17:06:16 UTC (rev 82553)
@@ -1,6 +0,0 @@
-<tal:block define="viewlets view/viewlets">
-<ul tal:condition="viewlets">
-  <tal:block repeat="viewlet viewlets"
-             content="structure viewlet/render" />
-</ul>
-</tal:block>

Modified: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/ready2go.css
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/ready2go.css	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/ready2go.css	2007-12-29 17:06:16 UTC (rev 82553)
@@ -22,6 +22,11 @@
     border: 0;
 }
 
+a {
+    color: #D91813;
+    text-decoration: none;
+}
+
 a:link {
     color: #D91813;
     text-decoration: none;
@@ -36,7 +41,48 @@
     color: #8C100D;
 }
 
+fieldset {
+    padding: 5px;
+}
 
+
+h1, h2, h3, h4, h5, h6 {
+    color: Black;
+    clear: left;
+    font: 100% bold Verdana, Helvetica, Arial, sans-serif;
+    margin: 0;
+    padding-top: 0.5em;
+}
+
+h1 {
+    font-size: 160%;
+}
+
+h2 {
+    font-size: 140%;
+}
+
+h3 {
+    height: 20px;
+    font-size: 120%;
+    background-color: #DDDCD0;
+    padding: 2px 0px 0px 5px;
+}
+
+h4 {
+    color: #777777;
+    font-size: 100%;
+    font-weight: bold;
+}
+
+h5 {
+    font-size: 90%;
+}
+
+h6 {
+    font-size: 80%;
+}
+
 /* [ layout ]---------------------------------------------------------------- */
 
 div#layoutWrapper {
@@ -63,11 +109,11 @@
     border-top: solid white 1px;
     margin: 0px;
     padding: 0px;
-    background: #3112C2 url(../img/topBG.jpg) repeat-x top left;
+    background: #3112C2 url(./img/topBG.jpg) repeat-x top left;
 }
 
 img#logo {
-    padding: 0px 0px 0px 10px;
+    padding: 0px;
 }
 
 div#user {
@@ -75,7 +121,7 @@
     right: 10px;
     position: absolute;
     color: white;
-    padding: 0px 10px 0px 0px;
+    padding: 0px 0px 0px 0px;
 }
 
 div#user a {
@@ -83,189 +129,258 @@
 }
 
 
+/* [ breadcrumbs ]--------------------------------------------------------- */
+
+div#breadcrumbs {
+    top: 65px;
+    left: 10px;
+    position: absolute;
+    color: #DDDDDD;
+    font-size: 11px;
+    padding: 10px 0px 10px 0px;
+    margin: 0px 0px 0px 0px;
+}
+
+#breadcrumbs a {
+    color: #DDDDDD;
+    text-decoration: none;
+}
+
+#breadcrumbs a:hover {
+    color: #FFFFFF;
+}
+
+
 /*---[ menu ]----------------------------------------------------------------*/
 
 #menuContainer {
-    float: left;
-    width: 941px;
     height: 33px;
-    background: #3112C2 url(../img/menuBG.jpg) repeat-x top left;
+    background: #3112C2 url(./img/menuBG.jpg) repeat-x top left;
     margin: 0;
     padding: 0;
 }
 
+
+#menuContainer ul {
+    margin: 0;
+    padding: 0;
+}
+
 #menuContainer li {
     float: left;
-    margin: 0;
-    padding: 0 1px 0 0;
+    margin: 0px;
+    padding: 0px 1px 0px 0px;
     list-style: none;
-    background: url(../img/menuSeparator.gif) no-repeat top right;
 }
 
+#menuContainer li.menuSeparatorRight {
+    background: url(./img/menuSeparator.gif) no-repeat top right;
+}
+
+#menuContainer li.menuSeparatorLeft {
+    background: url(./img/menuSeparator.gif) no-repeat top left;
+}
+
 #menuContainer a {
     float: left;
     padding: 9px 9px;
-    text-decoration: none;
-    border-bottom: none;
     color: #ffffff;
 }
 
 #menuContainer a:hover {
     color: #ffffff;
-    background: #230D8C;
+    background: #000266;
 }
 
 #menuContainer a.selected {
     color: #8C100D;
-    background: #230D8C;
+    background: #000266;
 }
 
+#menuContainer li.selected a, 
+#menuContainer li.selected span {
+  background: #000266;
+}
 
-/* [ breadcrumbs ]--------------------------------------------------------- */
 
-div#breadcrumbs {
-    top: 65px;
-    left: 10px;
+/*---[ adding menu ]---------------------------------------------------------*/
+
+#addingMenuContainer {
+    float: right;
+    width: 110px;
+    margin: 0;
+    padding: 0;
+}
+
+.addingMenu {
+    width: 110px; 
+    font-family: Arial, Helvetica, sans-serif;
+    z-index: 100;
+    position: relative;
+	margin: 0;
+	padding: 0;
+}
+
+.addingMenu a {
+    white-space: nowrap;
+    width: 85px;
+}
+ 
+.addingMenu ul {
+    width: 105px;  
+	list-style: none;
     position: absolute;
-    color: #DDDDDD;
-    font-size: 11px;
-    padding: 10px 0px 10px 0px;
-    margin: 0px 0px 0px 10px;
+    top: -999em;
+    left: -1px;
+    margin: 0;
+    padding: 0;
 }
 
-#breadcrumbs a {
-    color: #DDDDDD;
-    text-decoration: none;
+.addingMenu li {
+    float: left;
+    margin: 0;
+    padding: 0;
+    position: relative;
+    display: block;
 }
 
-#breadcrumbs a:hover {
-    color: #FFFFFF;
+.addingMenu li:hover ul,
+.addingMenu li.addingMenuHover ul {
+    top: 30px;
+    background: #290FA4;
 }
 
 
 /*---[ navigation ]----------------------------------------------------------*/
 
 #naviContainer {
-  width: 225px;
-  float: left;
-  color: #DFDFDF;
-  padding: 5px;
+    width: 225px;
+    color: #DFDFDF;
+    padding: 0px;
+    margin: 0px;
+    position: absolute;
+    left: 5px;
+    top: 160px;
 }
 
 #naviContainer a {
-  color: #FF9900;
+    color: #FF9900;
 }
 
-div.boxSpacer {
-  height: 10px;
-  clear: both;
-}
-
 div.naviBox {
-  background-color: #290FA4;
+    background-color: #290FA4;
+    padding: 0px 0px 7px 0px;
+    margin: 0px;
 }
 
 div.naviBox .naviBoxHeader {
-  color: #FFFFFF;
-  height: 20px;
-  padding: 5px 5px 0px 10px;
+    color: #FFFFFF;
+    height: 24px;
+    padding: 5px 0px 0px 10px;
+    margin: 0px;
 }
 
-div.naviBox .naviBoxHeader img.icon {
-  float: right;
+div.naviBox .naviBoxBody {
+    color: #DFDFDF;
+    padding: 5px 5px 0px 10px;
+    margin: 0px;
 }
 
-div.naviBox .naviBoxBody {
-  color: #DFDFDF;
-  padding: 0px 5px 10px 10px;
+div.boxSpacer {
+    height: 10px;
+    background-color: #F3F3EE;
+    clear: both;
 }
 
 
 /*---[ content ]-------------------------------------------------------------*/
 
 #contentContainer {
-  width: 689px;
-  float: right;
-  margin: 0;
-  padding: 5px;
+    margin: 0;
+    padding: 5px 0px 0px 250px;
 }
 
 #content {
-  padding: 10px 0px 0px 10px;
+    margin: 0;
+    padding: 0;
 }
 
+/*---[ menu tabs ]-----------------------------------------------------------*/
 
-/*---[ tab ]----------------------------------------------------------------*/
-
-#tabContainer {
-  padding: 0;
-  margin: 0;
+#contextMenuContainer {
+    padding: 0;
+    margin: 0;
+    background: transparent;
+    voice-family: "\"}\"";
+    voice-family: inherit;
 }
 
-#tabContainer ul {
-  width: 100%;
-  margin: 0;
-  padding: 0;
-  list-style: none;
+#contextMenuContainer ul {
+    margin: 0;
+    padding: 0;
+    list-style: none;
 }
 
-#tabContainer li {
-  display: inline;
-  margin: 0px 2px 0px 0px;
-  padding: 0;
+#contextMenuContainer li {
+    display: inline;
+    margin: 0;
+    padding: 0;
 }
 
-#tabContainer a {
-  float: left;
-  color: #290FA4;
-  background-color: #FFFFFF;
-  border: 1px solid #290FA4;
-  border-bottom: 0px;
-  margin: 0px 2px 0px 10px;
-  padding: 0px 0px 1px 3px;
-  text-decoration: none;
-  letter-spacing: 1px;
+#contextMenuContainer a {
+    float: left;
+    color: #FFFFFF;
+    background: #290FA4 url(./img/menuTabsLeft.gif) no-repeat left top;
+    margin: 0px 2px 0px 0px;
+    padding: 0px 0px 1px 3px;
+    text-decoration: none;
+    letter-spacing: 1px;
 }
 
-#tabContainer a span {
-  float: left;
-  display: block;
-  padding: 4px 9px 2px 6px;
+#contextMenuContainer a span {
+    float: left;
+    display: block;
+    background: transparent url(./img/menuTabsRight.gif) no-repeat right top;
+    padding: 4px 9px 2px 6px;
 }
 
-#tabContainer a span {
-  float: none;
+#contextMenuContainer a span {
+    float: none;
 }
 
-#tabContainer a:hover {
-  color: #FFFFFF;
-  background-color: #290FA4;
+#contextMenuContainer a:hover {
+    color: #FFFFFF;
+    background-color: #000266;
 }
 
-#tabContainer a:hover span {
-  color: #FFFFFF;
-  background-color: #290FA4;
+#contextMenuContainer a.selected {
+    color: #FFFFFF;
+    background-color: #000266;
 }
 
-#tabContainer .current a, #tabContainer .current span {
-  color: white;
-  background-color: #290FA4;
+#contextMenuContainer li.selected a, 
+#contextMenuContainer li.selected span {
+    color: #FFFFFF;
+    background-color: #000266;
 }
 
-#tabContainerBottom {
-  clear: both;
-  margin: 0;
-  padding: 0;
-  width: 100%;
-  height: 18px;
-  line-height: 18px;
-  background: #290FA4;
+#contextMenuContainerBottom {
+    clear: both;
+    padding: 0;
+    margin: 0;
+    width: 100%;
+    height: 20px;
+    line-height: 20px;
+    background: #290FA4;
+    border-top: 1px solid #FFFFFF; /*Remove this to remove border between bar and tabs*/
 }
 
+
 /*---[ table ]---------------------------------------------------------------*/
 /* Styles for tables that act as lists of objects. */
 
 table.list {
+    width: 100%;
     margin: 0;
     padding: 0;
     border: 0;
@@ -301,13 +416,21 @@
 }
 
 table.list th {
-    background-color: #E6E1D9;
-    border-color: #ffffff;
+    color: #666666;
+    border-color: #999999;
     border-bottom-width: 1px;
     border-bottom-style: solid;
     padding: 3px 4px;
     text-align: left;
+    background: url(./img/tableHeaderBG.gif) repeat-x left top;
 }
+table.list thead.verticaltext th {
+    text-align: left;
+    writing-mode: tb-rl;
+    filter: flipv fliph;
+    white-space: nowrap;
+    background: transparent;
+}
 
 table.list th.sorted-on {
     background-color: #D5CCBD;
@@ -399,14 +522,13 @@
     padding-top: 10px;
 }
 
-.button{
+.submitWidget{
   cursor: pointer;
   border: outset 1px #ccc;
   background: #999999;
-  color: #666666;
-  font-weight: bold;
+  color: #333333;
   padding: 1px 2px;
-  background: url(../img/buttonBG.gif) repeat-x left top;
+  background: url(./img/buttonBG.gif) repeat-x left top;
 }
 
 .clear {

Deleted: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/sidebar.pt
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/sidebar.pt	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/sidebar.pt	2007-12-29 17:06:16 UTC (rev 82553)
@@ -1 +0,0 @@
-Sidebar
\ No newline at end of file

Modified: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/template.pt
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/template.pt	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/template.pt	2007-12-29 17:06:16 UTC (rev 82553)
@@ -6,12 +6,19 @@
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 <meta http-equiv="cache-control" content="no-cache" />
 <meta http-equiv="pragma" content="no-cache" />
-<tal:block replace="structure provider:ICSS" />
-<tal:block replace="structure provider:IJavaScript" />
+<script type="text/javascript"
+        tal:define="contexturl context/@@absolute_url; 
+                    viewurl request/URL"
+        tal:content="string:
+	var contexturl = '${contexturl}';
+	var viewurl = '${viewurl}';"> 
+</script>
+<script tal:replace="structure provider:IJavaScript"> </script>
+<style tal:replace="structure provider:ICSS"> </style>
 <link rel="icon" type="image/png"
       tal:attributes="href context/++resource++favicon.png" />
 </head>
-<body>
+<body tal:define="applicationURL request/getApplicationURL">
 <div id="layoutWrapper">
   <div id="layoutContainer">
     <div id="headerContainer">
@@ -23,40 +30,53 @@
         </tal:block>
       </div>
       <div id="user">
-        User: Manager
+        <span i18n:translate="">User:</span>
+        <span tal:content="request/principal/title">Manager</span>
+        &nbsp;&nbsp;
+        <a href="" style="font-size: 100%"
+             tal:attributes="href string:${applicationURL}/logout.html"
+             i18n:translate="">[Logout]</a>
       </div>
       <img id="logo" src="logo.gif" width="53" height="51" alt="logo"
-             tal:attributes="src context/++resource++img/logo.gif" />
+               tal:attributes="src context/++resource++img/logo.gif" />
     </div>
-    <div id="menuContainer" tal:content="structure provider:IGlobalMenu">
-      <ul>
+    <div id="menuContainer">
+      <ul tal:replace="structure provider:IGlobalMenu">
         <li>
           <a href="#" class="selected">Menu item</a>
         </li>
-        <li>
-          <a href="#">Menu item</a>
-        </li>
-        <li>
-          <a href="#">Menu item</a>
-        </li>
       </ul>
+      <div id="addingMenuContainer">
+        <ul id="addingMenu" class="addingMenu">
+          <li class="menuSeparatorLeft">
+            <a href="#" i18n:translate="">Adding</a>
+            <ul tal:replace="structure provider:IAddMenu">
+              <li>
+                <a href="#">Menu item</a>
+              </li>
+            </ul>
+          </li>
+        </ul>
+      </div>
     </div>
-    <div id="naviContainer" class="sortable">
-      <tal:block replace="structure provider:ISideBar" />
+    <div id="naviContainer">
+      <tal:block replace="structure provider:ISideBar">sidebar</tal:block>
     </div>
     <div id="contentContainer">
-      <div id="tabContainer" tal:content="structure provider:IContextMenu">
-        <li style="margin-left: 1px" id="current">
-          <a href="#">
-          <span>Title</span></a>
-        </li>
-        <li style="margin-left: 1px">
-          <a href="#">
-          <span>Title</span></a>
-        </li>
+      <div id="contextMenuContainer">
+        <ul tal:replace="structure provider:IContextMenu">
+          <li style="margin-left: 1px">
+            <a href="#" title="Home">
+            <span>Home</span>
+            </a>
+          </li>
+        </ul>
+        <div id="contextMenuContainerBottom">
+          &nbsp;
+        </div>
       </div>
       <div id="content">
-        <tal:block content="structure provider:pagelet">content</tal:block>
+        <tal:block replace="structure provider:pagelet">pagelet provider</tal:block>
       </div>
     </div>
   </div>

Deleted: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/views.py
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/views.py	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/browser/views.py	2007-12-29 17:06:16 UTC (rev 82553)
@@ -1,22 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2006 by us.
-#
-##############################################################################
-"""
-$Id: views.py 72088 2007-01-18 01:09:33Z rogerineichen $
-"""
-__docformat__ = "reStructuredText"
-
-from zope.viewlet import viewlet
-from z3c.pagelet import browser
-
-
-class IndexPagelet(browser.BrowserPagelet):
-    """Default index view."""
-
-
-Ready2GoCSS = viewlet.CSSViewlet('ready2go.css')
-
-
-Ready2GoJavaScript = viewlet.JavaScriptViewlet('ready2go.js')

Modified: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/configure.zcml
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/configure.zcml	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/configure.zcml	2007-12-29 17:06:16 UTC (rev 82553)
@@ -2,14 +2,13 @@
     xmlns="http://namespaces.zope.org/zope"
     i18n_domain="z3c">
 
-  <!-- just registered as long we don't have a demo -->
   <interface
-      interface="z3c.skin.ready2go.IReady2GoBrowserSkin"
+      interface="z3c.skin.ready2go.IReady2GoSkinLayer"
       type="zope.publisher.interfaces.browser.IBrowserSkinType"
-      name="Ready2Go"
       />
 
+  <include file="skin.zcml" />
+
   <include package=".browser" />
-  <include file="demo.zcml" />
 
 </configure>

Deleted: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/demo.py
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/demo.py	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/demo.py	2007-12-29 17:06:16 UTC (rev 82553)
@@ -1,26 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2006 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 72088 2007-01-18 01:09:33Z rogerineichen $
-"""
-__docformat__ = "reStructuredText"
-
-from z3c.menu.ready2go import item
-
-
-class HomeMenuItem(item.MenuItem):
-    """Home menu."""
-
-    viewName = 'index.html'
-    weight = 1

Deleted: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/demo.zcml
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/demo.zcml	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/demo.zcml	2007-12-29 17:06:16 UTC (rev 82553)
@@ -1,15 +0,0 @@
-<configure
-    xmlns:zope="http://namespaces.zope.org/zope"
-    xmlns="http://namespaces.zope.org/browser"
-    i18n_domain="z3c">
-
-  <viewlet
-      name="Home"
-      for="*"
-      class=".demo.HomeMenuItem"
-      manager="z3c.skin.ready2go.IGlobalMenu"
-      layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
-      permission="zope.Public"
-      />
-
-</configure>
\ No newline at end of file

Modified: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/ftesting.zcml
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/ftesting.zcml	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/ftesting.zcml	2007-12-29 17:06:16 UTC (rev 82553)
@@ -1,74 +1,166 @@
 <configure
     xmlns="http://namespaces.zope.org/zope"
+    xmlns:meta="http://namespaces.zope.org/meta"
     xmlns:browser="http://namespaces.zope.org/browser"
-    i18n_domain="demo">
+    xmlns:z3c="http://namespaces.zope.org/z3c"
+    i18n_domain="zope">
 
+  <!-- Turn on the devmode -->
+  <meta:provides feature="devmode" />
+
+  <!-- load meta configuration for exclude -->
+  <include package="zc.configuration" file="meta.zcml" />
+
+  <!-- exclude will prevent from include -->
+  <exclude package="zope.app.authentication" file="ftpplugins.zcml" />
+  <exclude package="zope.app.authentication" file="groupfolder.zcml" />
+  <exclude package="zope.app.authentication" file="principalfolder.zcml" />
+  <exclude package="zope.app.authentication.browser" />
+  <exclude package="zope.app.authentication.browser" file="configure.zcml" />
+  <exclude package="zope.app.authentication.browser" file="groupfolder.zcml" />
+  <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.broken" file="browser.zcml" />
+  <exclude package="zope.app.container.browser" />
+  <exclude package="zope.app.error.browser" />
+  <exclude package="zope.app.folder.browser" />
+  <exclude package="zope.app.i18n.browser" />
+  <exclude package="zope.app.securitypolicy.browser" />
+  <exclude package="zope.app.session" file="browser.zcml" />
+  <exclude package="zope.dublincore.browser" />
+
+  <!-- meta configure -->
   <include package="zope.i18n" file="meta.zcml" />
   <include package="zope.app.component" file="meta.zcml" />
   <include package="zope.app.component.browser" file="meta.zcml" />
-  <include package="zope.app.form.browser" file="meta.zcml" />
+  <include package="zope.app.container.browser" 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.app.security" file="meta.zcml" />
-  <include package="zope.app.securitypolicy" file="meta.zcml" />
+  <include package="zope.security" file="meta.zcml" />
+  <include package="zope.securitypolicy" file="meta.zcml" />
   <include package="zope.viewlet" file="meta.zcml" />
+
+  <!-- load 3rd party meta configuration -->
+  <include package="z3c.form" file="meta.zcml" />
   <include package="z3c.macro" file="meta.zcml" />
-  <include package="z3c.macroviewlet" file="meta.zcml" />
   <include package="z3c.pagelet" file="meta.zcml" />
   <include package="z3c.template" file="meta.zcml" />
   <include package="z3c.zrtresource" file="meta.zcml" />
 
-  <!-- uhh, remove this later -->
-  <browser:menu id="zmi_views" title="Views" />
-  <browser:menu id="zmi_actions" title="Actions" />
+  <!-- vocabulary setup, that's bad and weird, because this is meta configuration -->
+  <include package="zope.app.schema" />
 
+
+  <!-- Database -->
+  <include package="zope.app.appsetup" />
+  <include package="zope.app.zopeappgenerations" />
+
+
+  <!-- zope packages -->
   <include package="zope.annotation" />
-  <include package="zope.app.appsetup" />
+  <include package="zope.component" />
+  <include package="zope.contentprovider" />
+  <include package="zope.dublincore" />
+  <include package="zope.location" />
+  <include package="zope.securitypolicy" />
+  <include package="zope.session" />
+  <include package="zope.traversing" />
+  <include package="zope.traversing.browser" />
+
+  <!-- Zope server -->
+  <include package="zope.app.server" />
+  <include package="zope.app.twisted" />
+  <include package="zope.app.wsgi" />
+
+  <!-- Broken-object support -->
+  <include package="zope.app.broken" />
+  
+
+  <!-- Utilities -->
+  <include package="zope.app.principalannotation" />
+  <include package="zope.error" />
+
+
+  <!-- load zope package configuration -->
+  <include package="zope.app.authentication" />
   <include package="zope.app.component" />
   <include package="zope.app.container" />
-  <include package="zope.app.error" />
+  <include package="zope.app.folder" />
+  <include package="zope.app.http" />
   <include package="zope.app.i18n" />
   <include package="zope.app.publication" />
+  <include package="zope.app.publisher" />
+  <include package="zope.app.publisher.browser" />
   <include package="zope.app.security" />
   <include package="zope.app.securitypolicy" />
-  <include package="zope.app.session" />
-  <include package="zope.app.twisted" />
-  <include package="zope.app.wsgi" />
-  <include package="zope.component" />
-  <include package="zope.contentprovider" />
-  <include package="zope.location" />
-  <include package="zope.publisher" />
-  <include package="zope.traversing" />
-  <include package="zope.traversing.browser" />
-  <include package="zope.viewlet" />
 
-  <include package="z3c.layer.minimal" />
+
+  <!-- z3c component -->
+  <include package="z3c.form" />
+  <include package="z3c.formui" />
   <include package="z3c.layer.pagelet" />
+  <include package="z3c.layer.ready2go" />
   <include package="z3c.macro" />
-  <include package="z3c.macroviewlet" />
   <include package="z3c.pagelet" />
-  <include package="z3c.skin.pagelet" />
   <include package="z3c.skin.ready2go" />
 
-  <!-- registered as demo skin -->
-  <interface
-      interface="z3c.skin.ready2go.IReady2GoBrowserSkin"
-      type="zope.publisher.interfaces.browser.IBrowserSkinType"
-      name="TestSkin"
-      />
 
+  <browser:defaultSkin name="Ready2Go" />
 
+  <!-- default view points to TestPage -->
   <browser:defaultView name="index.html" />
-  <browser:defaultSkin name="TestSkin" />
 
+
+  <!-- test pages taken from z3c.layer.pagelet package -->
+  <configure package="z3c.layer.pagelet.tests">
+    <z3c:pagelet
+        for="*"
+        name="index.html"
+        permission="zope.ManageContent"
+        class=".TestPage"
+        layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+        />
+
+    <z3c:template
+        for=".TestPage"
+        layer="z3c.skin.ready2go.IReady2GoBrowserSkin"
+        template="page.pt"
+        />
+  </configure>
+
+  <!-- from zope.app.i18n move this to another package -->
+  <!-- Setup charset negotiation -->
+  <adapter
+      factory="zope.publisher.http.HTTPCharsets"
+      for="zope.publisher.interfaces.http.IHTTPRequest"
+      provides="zope.i18n.interfaces.IUserPreferredCharsets"
+      />
+
+  <!-- Setup charset negotiation --><!-- move this to another package -->
+  <adapter
+      factory="zope.app.publisher.browser.ModifiableBrowserLanguages"
+      for="zope.publisher.interfaces.http.IHTTPRequest"
+      provides="zope.i18n.interfaces.IModifiableUserPreferredLanguages"
+      />
+
+  <class class="zope.publisher.http.HTTPRequest">
+    <implements
+        interface="zope.annotation.interfaces.IAttributeAnnotatable"
+        />
+  </class>
+
+  <!-- security policy -->
   <securityPolicy
-      component="zope.app.securitypolicy.zopepolicy.ZopeSecurityPolicy"
+      component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy"
       />
 
-  <role id="zope.Manager" title="Manager" />
-  <grantAll role="zope.Manager" />
-  <grantAll role="zope.Anonymous" />
+  <role
+      id="zope.Manager"
+      title="Manager"
+      />
 
   <principal
       id="zope.manager"
@@ -82,4 +174,7 @@
       principal="zope.manager"
       />
 
- </configure>
+  <grantAll role="zope.Manager" />
+  <grantAll role="zope.Anonymous" />
+
+</configure>

Added: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/skin.zcml
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/skin.zcml	                        (rev 0)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/skin.zcml	2007-12-29 17:06:16 UTC (rev 82553)
@@ -0,0 +1,13 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    i18n_domain="z3c">
+
+  <!-- this own file allows you to exlude the Ready2Go skin in your buildout,
+       see zc.configuration for more info about the exclude directive. -->
+  <interface
+      interface="z3c.skin.ready2go.IReady2GoBrowserSkin"
+      type="zope.publisher.interfaces.browser.IBrowserSkinType"
+      name="Ready2Go"
+      />
+
+</configure>


Property changes on: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/skin.zcml
___________________________________________________________________
Name: svn:eol-style
   + native

Deleted: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/testing.py
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/testing.py	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/testing.py	2007-12-29 17:06:16 UTC (rev 82553)
@@ -1,25 +0,0 @@
-##############################################################################
-#
-# 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: testing.py 77310 2007-07-02 18:14:46Z srichter $
-"""
-__docformat__ = "reStructuredText"
-
-import os
-from zope.app.testing.functional import ZCMLLayer
-
-
-TestLayer = ZCMLLayer(
-    os.path.join(os.path.split(__file__)[0], 'ftesting.zcml'),
-    __name__, 'TestLayer', allow_teardown=True)

Modified: z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/tests.py
===================================================================
--- z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/tests.py	2007-12-29 17:02:13 UTC (rev 82552)
+++ z3c.skin.ready2go/trunk/src/z3c/skin/ready2go/tests.py	2007-12-29 17:06:16 UTC (rev 82553)
@@ -17,25 +17,34 @@
 """
 __docformat__ = "reStructuredText"
 
+import re
 import unittest
-from zope.testing import doctest
-from zope.app.testing import placelesssetup
+from zope.testing import renormalizing
+from zope.app.testing import functional
 
-from z3c.skin.ready2go import testing
+import z3c.layer.ready2go
 
+layer = functional.defineLayer('TestLayer', 'ftesting.zcml')
 
+
+def getRootFolder():
+    return functional.FunctionalTestSetup().getRootFolder()
+
+
 def test_suite():
-    suites = []
-    append = suites.append
-    suite = unittest.TestSuite((
-        doctest.DocFileSuite('README.txt',
-            optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,
-            ),
-        ))
-    suite.layer = testing.TestLayer
-    append(suite)
-    return unittest.TestSuite(suites)
+    suite = unittest.TestSuite()
 
+    s = functional.FunctionalDocFileSuite(
+        'README.txt',
+        globs={'getRootFolder': getRootFolder},
+        checker = renormalizing.RENormalizing([
+            (re.compile(r'httperror_seek_wrapper:', re.M), 'HTTPError:'),
+            ])
+        )
+    s.layer = TestLayer
+    suite.addTest(s)
 
+    return suite
+
 if __name__ == '__main__':
     unittest.main(defaultTest='test_suite')



More information about the Checkins mailing list