[Zope-Checkins] SVN: Zope/branches/z4-zmi/ re-enable the ++skin++ traverser
Christian Theune
ct at gocept.com
Wed Nov 16 10:34:18 UTC 2011
Log message for revision 123366:
re-enable the ++skin++ traverser
Changed:
U Zope/branches/z4-zmi/doc/CHANGES.rst
A Zope/branches/z4-zmi/src/Products/Five/browser/tests/skin.py
A Zope/branches/z4-zmi/src/Products/Five/browser/tests/skin.txt
A Zope/branches/z4-zmi/src/Products/Five/browser/tests/skin.zcml
A Zope/branches/z4-zmi/src/Products/Five/browser/tests/test_skin.py
U Zope/branches/z4-zmi/src/Zope2/App/traversing.zcml
-=-
Modified: Zope/branches/z4-zmi/doc/CHANGES.rst
===================================================================
--- Zope/branches/z4-zmi/doc/CHANGES.rst 2011-11-16 10:33:38 UTC (rev 123365)
+++ Zope/branches/z4-zmi/doc/CHANGES.rst 2011-11-16 10:34:17 UTC (rev 123366)
@@ -124,15 +124,6 @@
`lib/python` and `Products` from the default. You can continue to manually
add these back.
-- Removed the rarely used support for the `++skin++` traverser. You can enable
- it in your own applications by defining::
-
- <adapter
- name="skin"
- for="* zope.publisher.interfaces.IRequest"
- provides="zope.traversing.interfaces.ITraversable"
- factory="zope.traversing.namespace.skin" />
-
- Five.browser: Marked `processInputs` and `setPageEncoding` as deprecated.
`processInputs` was replaced by the `postProcessInputs` request method and
the charset negotiation done by `setPageEncoding` was never fully supported.
Copied: Zope/branches/z4-zmi/src/Products/Five/browser/tests/skin.py (from rev 122055, Zope/trunk/src/Products/Five/browser/tests/skin.py)
===================================================================
--- Zope/branches/z4-zmi/src/Products/Five/browser/tests/skin.py (rev 0)
+++ Zope/branches/z4-zmi/src/Products/Five/browser/tests/skin.py 2011-11-16 10:34:17 UTC (rev 123366)
@@ -0,0 +1,20 @@
+##############################################################################
+#
+# 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.
+#
+##############################################################################
+"""Test skins
+"""
+
+from zope.publisher.interfaces.browser import IDefaultBrowserLayer
+
+class ITestSkin(IDefaultBrowserLayer):
+ pass
Copied: Zope/branches/z4-zmi/src/Products/Five/browser/tests/skin.txt (from rev 122055, Zope/trunk/src/Products/Five/browser/tests/skin.txt)
===================================================================
--- Zope/branches/z4-zmi/src/Products/Five/browser/tests/skin.txt (rev 0)
+++ Zope/branches/z4-zmi/src/Products/Five/browser/tests/skin.txt 2011-11-16 10:34:17 UTC (rev 123366)
@@ -0,0 +1,54 @@
+Test layer and skin support
+===========================
+
+Let's register a test layer and test skin:
+
+ >>> import Products.Five.browser.tests
+ >>> from Zope2.App import zcml
+ >>> zcml.load_config("configure.zcml", Products.Five)
+ >>> zcml.load_config("skin.zcml", package=Products.Five.browser.tests)
+
+Let's add a test object that we'll access the test page from:
+
+ >>> from Products.Five.tests.testing.simplecontent import manage_addSimpleContent
+ >>> manage_addSimpleContent(self.folder, 'testoid', 'Testoid')
+
+The view was registered on a different layer than 'default', that's
+why we can't access it straight away:
+
+ >>> print http(r"""
+ ... GET /test_folder_1_/testoid/eagle.html HTTP/1.1
+ ... """)
+ HTTP/1.1 404 Not Found
+ ...
+
+It works when we explicitly use the skin that includes that layer:
+
+ >>> print http(r"""
+ ... GET /test_folder_1_/testoid/++skin++TestSkin/eagle.html HTTP/1.1
+ ... """)
+ HTTP/1.1 200 OK
+ ...
+ The eagle has landed
+
+Or when we make that skin the default skin:
+
+ >>> zcml.load_string('''
+ ... <browser:defaultSkin
+ ... xmlns:browser="http://namespaces.zope.org/browser"
+ ... name="TestSkin" />
+ ... ''')
+
+ >>> print http(r"""
+ ... GET /test_folder_1_/testoid/eagle.html HTTP/1.1
+ ... """)
+ HTTP/1.1 200 OK
+ ...
+ The eagle has landed
+
+
+Clean up
+--------
+
+ >>> from zope.component.testing import tearDown
+ >>> tearDown()
Copied: Zope/branches/z4-zmi/src/Products/Five/browser/tests/skin.zcml (from rev 122055, Zope/trunk/src/Products/Five/browser/tests/skin.zcml)
===================================================================
--- Zope/branches/z4-zmi/src/Products/Five/browser/tests/skin.zcml (rev 0)
+++ Zope/branches/z4-zmi/src/Products/Five/browser/tests/skin.zcml 2011-11-16 10:34:17 UTC (rev 123366)
@@ -0,0 +1,23 @@
+<configure xmlns="http://namespaces.zope.org/zope"
+ xmlns:meta="http://namespaces.zope.org/meta"
+ xmlns:browser="http://namespaces.zope.org/browser">
+
+ <!-- make the zope2.Public permission work -->
+ <meta:redefinePermission from="zope2.Public" to="zope.Public" />
+
+ <interface
+ interface=".skin.ITestSkin"
+ type="zope.publisher.interfaces.browser.IBrowserSkinType"
+ name="TestSkin"
+ />
+
+ <browser:page
+ for="Products.Five.tests.testing.simplecontent.ISimpleContent"
+ class=".pages.SimpleView"
+ attribute="eagle"
+ name="eagle.html"
+ permission="zope2.Public"
+ layer=".skin.ITestSkin"
+ />
+
+</configure>
Copied: Zope/branches/z4-zmi/src/Products/Five/browser/tests/test_skin.py (from rev 122055, Zope/trunk/src/Products/Five/browser/tests/test_skin.py)
===================================================================
--- Zope/branches/z4-zmi/src/Products/Five/browser/tests/test_skin.py (rev 0)
+++ Zope/branches/z4-zmi/src/Products/Five/browser/tests/test_skin.py 2011-11-16 10:34:17 UTC (rev 123366)
@@ -0,0 +1,20 @@
+##############################################################################
+#
+# Copyright (c) 2005 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.
+#
+##############################################################################
+"""Test browser pages
+"""
+
+def test_suite():
+ from Testing.ZopeTestCase import FunctionalDocFileSuite
+ return FunctionalDocFileSuite('skin.txt',
+ package='Products.Five.browser.tests')
Modified: Zope/branches/z4-zmi/src/Zope2/App/traversing.zcml
===================================================================
--- Zope/branches/z4-zmi/src/Zope2/App/traversing.zcml 2011-11-16 10:33:38 UTC (rev 123365)
+++ Zope/branches/z4-zmi/src/Zope2/App/traversing.zcml 2011-11-16 10:34:17 UTC (rev 123366)
@@ -38,6 +38,13 @@
/>
<adapter
+ name="skin"
+ for="* zope.publisher.interfaces.IRequest"
+ provides="zope.traversing.interfaces.ITraversable"
+ factory="zope.traversing.namespace.skin"
+ />
+
+ <adapter
name="resource"
for="* zope.publisher.interfaces.IRequest"
provides="zope.traversing.interfaces.ITraversable"
More information about the Zope-Checkins
mailing list