[Checkins] SVN: Sandbox/cklinger/megrok.ootbviewlets/trunk/ Savepoint
Christian Klinger
cklinger at novareto.de
Tue Mar 31 08:38:17 EDT 2009
Log message for revision 98679:
Savepoint
Changed:
U Sandbox/cklinger/megrok.ootbviewlets/trunk/.installed.cfg
U Sandbox/cklinger/megrok.ootbviewlets/trunk/buildout.cfg
U Sandbox/cklinger/megrok.ootbviewlets/trunk/setup.py
U Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/__init__.py
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/ftesting.zcml
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/managers.py
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/templates/
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/templates/tab.pt
U Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/__init__.py
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_contextmenuitem.py
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_contextmenuitem_templates/
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_contextmenuitem_templates/myview.pt
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_contextmenuitem_templates/print.pt
D Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_doc.py
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_globalmenuitem.py
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_globalmenuitem_templates/
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_globalmenuitem_templates/myview.pt
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_globalmenuitem_templates/print.pt
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_tabs.py
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_tabs_templates/
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_tabs_templates/myview.pt
A Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/viewlets.py
D Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok.ootbviewlets.egg-info/
-=-
Modified: Sandbox/cklinger/megrok.ootbviewlets/trunk/.installed.cfg
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/.installed.cfg 2009-03-31 12:23:42 UTC (rev 98678)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/.installed.cfg 2009-03-31 12:38:17 UTC (rev 98679)
@@ -1,7 +1,38 @@
[buildout]
installed_develop_eggs = /Users/cklinger/work/hell/megrok.ootbviewlets/develop-eggs/megrok.ootbviewlets.egg-link
-parts = coverage-test coverage-report python test
+parts = python test coverage-test coverage-report
+[python]
+__buildout_installed__ = /Users/cklinger/work/hell/megrok.ootbviewlets/bin/python
+__buildout_signature__ = zc.recipe.egg-1.2.2-py2.4.egg setuptools-0.6c9-py2.4.egg zc.buildout-1.2.1-py2.4.egg
+_b = /Users/cklinger/work/hell/megrok.ootbviewlets/bin
+_d = /Users/cklinger/work/hell/megrok.ootbviewlets/develop-eggs
+_e = /Users/cklinger/work/hell/megrok.ootbviewlets/eggs
+bin-directory = /Users/cklinger/work/hell/megrok.ootbviewlets/bin
+develop-eggs-directory = /Users/cklinger/work/hell/megrok.ootbviewlets/develop-eggs
+eggs = megrok.ootbviewlets
+eggs-directory = /Users/cklinger/work/hell/megrok.ootbviewlets/eggs
+executable = /Users/cklinger/work/hell/megrok.ootbviewlets/../bin/python
+interpreter = python
+recipe = zc.recipe.egg
+
+[test]
+__buildout_installed__ = /Users/cklinger/work/hell/megrok.ootbviewlets/parts/test
+ /Users/cklinger/work/hell/megrok.ootbviewlets/bin/test
+__buildout_signature__ = zc.recipe.testrunner-1.0.0-py2.4.egg zc.recipe.egg-1.2.2-py2.4.egg setuptools-0.6c9-py2.4.egg zope.testing-3.5.4-py2.4.egg zc.buildout-1.2.1-py2.4.egg zc.buildout-1.2.1-py2.4.egg
+_b = /Users/cklinger/work/hell/megrok.ootbviewlets/bin
+_d = /Users/cklinger/work/hell/megrok.ootbviewlets/develop-eggs
+_e = /Users/cklinger/work/hell/megrok.ootbviewlets/eggs
+bin-directory = /Users/cklinger/work/hell/megrok.ootbviewlets/bin
+defaults = ['--tests-pattern', '^f?tests$', '-vc']
+develop-eggs-directory = /Users/cklinger/work/hell/megrok.ootbviewlets/develop-eggs
+eggs = megrok.ootbviewlets [test]
+eggs-directory = /Users/cklinger/work/hell/megrok.ootbviewlets/eggs
+executable = /Users/cklinger/work/hell/megrok.ootbviewlets/../bin/python
+location = /Users/cklinger/work/hell/megrok.ootbviewlets/parts/test
+recipe = zc.recipe.testrunner
+script = /Users/cklinger/work/hell/megrok.ootbviewlets/bin/test
+
[coverage-test]
__buildout_installed__ = /Users/cklinger/work/hell/megrok.ootbviewlets/parts/coverage-test
/Users/cklinger/work/hell/megrok.ootbviewlets/bin/coverage-test
@@ -34,39 +65,32 @@
recipe = zc.recipe.egg
scripts = coverage=coverage-report
-[python]
-__buildout_installed__ = /Users/cklinger/work/hell/megrok.ootbviewlets/bin/python
-__buildout_signature__ = zc.recipe.egg-1.2.2-py2.4.egg setuptools-0.6c9-py2.4.egg zc.buildout-1.2.1-py2.4.egg
-_b = /Users/cklinger/work/hell/megrok.ootbviewlets/bin
-_d = /Users/cklinger/work/hell/megrok.ootbviewlets/develop-eggs
-_e = /Users/cklinger/work/hell/megrok.ootbviewlets/eggs
-bin-directory = /Users/cklinger/work/hell/megrok.ootbviewlets/bin
-develop-eggs-directory = /Users/cklinger/work/hell/megrok.ootbviewlets/develop-eggs
-eggs = megrok.ootbviewlets
-eggs-directory = /Users/cklinger/work/hell/megrok.ootbviewlets/eggs
-executable = /Users/cklinger/work/hell/megrok.ootbviewlets/../bin/python
-interpreter = python
-recipe = zc.recipe.egg
+[buildout]
+installed_develop_eggs = /Users/cklinger/work/hell/megrok.ootbviewlets/develop-eggs/megrok.ootbviewlets.egg-link
-[test]
-__buildout_installed__ = /Users/cklinger/work/hell/megrok.ootbviewlets/parts/test
- /Users/cklinger/work/hell/megrok.ootbviewlets/bin/test
-__buildout_signature__ = zc.recipe.testrunner-1.0.0-py2.4.egg zc.recipe.egg-1.2.2-py2.4.egg setuptools-0.6c9-py2.4.egg zope.testing-3.5.4-py2.4.egg zc.buildout-1.2.1-py2.4.egg zc.buildout-1.2.1-py2.4.egg
-_b = /Users/cklinger/work/hell/megrok.ootbviewlets/bin
-_d = /Users/cklinger/work/hell/megrok.ootbviewlets/develop-eggs
-_e = /Users/cklinger/work/hell/megrok.ootbviewlets/eggs
-bin-directory = /Users/cklinger/work/hell/megrok.ootbviewlets/bin
-defaults = ['--tests-pattern', '^f?tests$', '-vc']
-develop-eggs-directory = /Users/cklinger/work/hell/megrok.ootbviewlets/develop-eggs
-eggs = megrok.ootbviewlets [test]
-eggs-directory = /Users/cklinger/work/hell/megrok.ootbviewlets/eggs
-executable = /Users/cklinger/work/hell/megrok.ootbviewlets/../bin/python
-location = /Users/cklinger/work/hell/megrok.ootbviewlets/parts/test
-recipe = zc.recipe.testrunner
-script = /Users/cklinger/work/hell/megrok.ootbviewlets/bin/test
+[buildout]
+parts = test coverage-test coverage-report python
[buildout]
+parts = coverage-test coverage-report python test
+
+[buildout]
parts = coverage-report python test coverage-test
[buildout]
parts = python test coverage-test coverage-report
+
+[buildout]
+installed_develop_eggs = /Users/cklinger/work/hell/megrok.ootbviewlets/develop-eggs/megrok.ootbviewlets.egg-link
+
+[buildout]
+parts = test coverage-test coverage-report python
+
+[buildout]
+parts = coverage-test coverage-report python test
+
+[buildout]
+parts = coverage-report python test coverage-test
+
+[buildout]
+parts = python test coverage-test coverage-report
Modified: Sandbox/cklinger/megrok.ootbviewlets/trunk/buildout.cfg
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/buildout.cfg 2009-03-31 12:23:42 UTC (rev 98678)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/buildout.cfg 2009-03-31 12:38:17 UTC (rev 98679)
@@ -12,7 +12,7 @@
[test]
recipe = zc.recipe.testrunner
eggs = megrok.ootbviewlets [test]
-defaults = ['--tests-pattern', '^f?tests$', '-vc']
+defaults = ['--tests-pattern', '^f?tests$', '-c']
[coverage-test]
recipe = zc.recipe.testrunner
Modified: Sandbox/cklinger/megrok.ootbviewlets/trunk/setup.py
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/setup.py 2009-03-31 12:23:42 UTC (rev 98678)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/setup.py 2009-03-31 12:38:17 UTC (rev 98679)
@@ -33,8 +33,8 @@
'zope.testing']},
install_requires = [
'setuptools',
- 'z3c.menu.ready2go',
- 'grokcore.viewlet',
+ 'z3c.menu.simple',
+ 'grok',
],
zip_safe = False,
entry_points = {},
Modified: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/__init__.py
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/__init__.py 2009-03-31 12:23:42 UTC (rev 98678)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/__init__.py 2009-03-31 12:38:17 UTC (rev 98679)
@@ -1 +1,2 @@
-# Make a package.
+from managers import TabMenuManager
+from viewlets import ContextViewlet, GlobalMenuViewlet, TabItem
Added: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/ftesting.zcml
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/ftesting.zcml (rev 0)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/ftesting.zcml 2009-03-31 12:38:17 UTC (rev 98679)
@@ -0,0 +1,36 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:grok="http://namespaces.zope.org/grok">
+
+ <include package="grok" />
+ <include package="grokcore.view" file="meta.zcml" />
+
+
+ <grok:grok package="megrok.ootbviewlets.tests" />
+
+ <securityPolicy
+ component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy"
+ />
+
+ <unauthenticatedPrincipal
+ id="zope.anybody"
+ title="Unauthenticated User"
+ />
+ <grant
+ permission="zope.View"
+ principal="zope.anybody"
+ />
+
+ <principal
+ id="zope.mgr"
+ title="Manager"
+ login="mgr"
+ password="mgrpw"
+ />
+
+ <role id="zope.Manager" title="Site Manager" />
+ <grantAll role="zope.Manager" />
+ <grant role="zope.Manager" principal="zope.mgr" />
+
+</configure>
+
Added: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/managers.py
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/managers.py (rev 0)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/managers.py 2009-03-31 12:38:17 UTC (rev 98679)
@@ -0,0 +1,13 @@
+import grok
+from z3c.menu.simple import menu
+
+class TabMenuManager(menu.Tab, grok.ViewletManager):
+ grok.baseclass()
+ template = grok.PageTemplateFile('templates/tab.pt')
+
+ def render(self):
+ """Return the template with the option 'menus'"""
+ if not self.viewlets:
+ return u''
+ return self.template.render(self)
+
Added: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/templates/tab.pt
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/templates/tab.pt (rev 0)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/templates/tab.pt 2009-03-31 12:38:17 UTC (rev 98679)
@@ -0,0 +1,4 @@
+<div class="tabMenu">
+ <tal:block repeat="viewlet viewletmanager/viewlets"
+ content="structure viewlet/render" />
+</div>
Modified: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/__init__.py
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/__init__.py 2009-03-31 12:23:42 UTC (rev 98678)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/__init__.py 2009-03-31 12:38:17 UTC (rev 98679)
@@ -1 +1,9 @@
-# Make a package.
+import os.path
+import megrok.ootbviewlets
+from zope.app.testing.functional import ZCMLLayer
+
+ftesting_zcml = os.path.join(os.path.dirname(megrok.ootbviewlets.__file__),
+ 'ftesting.zcml')
+FunctionalLayer = ZCMLLayer(ftesting_zcml, __name__, 'FunctionalLayer',
+ allow_teardown=True)
+
Added: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_contextmenuitem.py
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_contextmenuitem.py (rev 0)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_contextmenuitem.py 2009-03-31 12:38:17 UTC (rev 98679)
@@ -0,0 +1,71 @@
+"""
+Set up a content object in the application root::
+
+ >>> from zope.app.testing.functional import getRootFolder
+ >>> root = getRootFolder()
+ >>> root['fred'] = MyContext()
+ >>> root['klaus'] = MyContext()
+
+Traverse to the view on the model object. We get the viewlets
+registered for the default layer, with the anybody permission::
+
+ >>> from zope.testbrowser.testing import Browser
+ >>> browser = Browser()
+ >>> browser.handleErrors = False
+
+Open the myview in context of fred should give us
+the print in link in the right context.
+
+ >>> browser.open("http://localhost/fred/@@myview")
+ >>> print browser.contents
+ <a href="http://localhost/fred/print"
+ class="inactive-menu-item">printviewlet</a>
+
+Now look if we get the right link in the context of klaus too
+
+ >>> browser.open("http://localhost/klaus/@@myview")
+ >>> print browser.contents
+ <a href="http://localhost/klaus/print"
+ class="inactive-menu-item">printviewlet</a>
+
+
+Now check if we get the right css class if we had the same url
+endings in our view and the urlEndings in our Viewlet
+
+ >>> browser.open("http://localhost/klaus/@@print")
+ >>> print browser.contents
+ <a href="http://localhost/klaus/print"
+ class="active-menu-item">printviewlet</a>
+
+
+"""
+import grok
+from megrok.ootbviewlets import ContextViewlet
+
+class MyContext(grok.Context):
+ pass
+
+class MyView(grok.View):
+ pass
+
+class Print(grok.View):
+ pass
+
+class MyManager(grok.ViewletManager):
+ grok.name('mymanager')
+
+class PrintViewlet(ContextViewlet):
+
+ urlEndings = ['print', ]
+ viewURL = 'print'
+
+
+
+
+def test_suite():
+ from zope.testing import doctest
+ from megrok.ootbviewlets.tests import FunctionalLayer
+ suite = doctest.DocTestSuite(optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS|doctest.REPORT_NDIFF)
+ suite.layer = FunctionalLayer
+ return suite
+
Added: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_contextmenuitem_templates/myview.pt
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_contextmenuitem_templates/myview.pt (rev 0)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_contextmenuitem_templates/myview.pt 2009-03-31 12:38:17 UTC (rev 98679)
@@ -0,0 +1 @@
+<span tal:replace="provider:mymanager" />
Added: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_contextmenuitem_templates/print.pt
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_contextmenuitem_templates/print.pt (rev 0)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_contextmenuitem_templates/print.pt 2009-03-31 12:38:17 UTC (rev 98679)
@@ -0,0 +1 @@
+<span tal:replace="provider:mymanager" />
Deleted: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_doc.py
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_doc.py 2009-03-31 12:23:42 UTC (rev 98678)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_doc.py 2009-03-31 12:38:17 UTC (rev 98679)
@@ -1,13 +0,0 @@
-import unittest
-import zope.testing.doctest
-
-def test_suite():
- return unittest.TestSuite((
-
- zope.testing.doctest.DocFileSuite(
- '../README.txt',
- optionflags=zope.testing.doctest.NORMALIZE_WHITESPACE |
- zope.testing.doctest.ELLIPSIS),
-
-
- ))
Added: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_globalmenuitem.py
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_globalmenuitem.py (rev 0)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_globalmenuitem.py 2009-03-31 12:38:17 UTC (rev 98679)
@@ -0,0 +1,64 @@
+"""
+Set up a content object in the application root::
+
+ >>> from zope.app.testing.functional import getRootFolder
+ >>> from zope.app.component.hooks import setSite
+ >>> root = getRootFolder()
+ >>> root['app'] = MyApp()
+ >>> root['app']['klaus'] = MyContext()
+ >>> setSite(root['app'])
+
+Traverse to the view on the model object. We get the viewlets
+registered for the default layer, with the anybody permission::
+
+ >>> from zope.testbrowser.testing import Browser
+ >>> browser = Browser()
+ >>> browser.handleErrors = False
+
+Open the myview in context of our application should give us
+the logout link in the right context.
+
+ >>> browser.open("http://localhost/app/@@myview")
+ >>> print browser.contents
+ <a href="http://localhost/app/logout.html"
+ class="inactive-menu-item">logoutviewlet</a>
+
+ >>> browser.open("http://localhost/app/klaus/@@myview")
+ >>> print browser.contents
+ <a href="http://localhost/app/logout.html"
+ class="inactive-menu-item">logoutviewlet</a>
+
+"""
+import grok
+from zope.interface import Interface
+from megrok.ootbviewlets import GlobalMenuViewlet
+
+class MyApp(grok.Application, grok.Container):
+ pass
+
+class MyContext(grok.Context):
+ pass
+
+class MyView(grok.View):
+ grok.context(Interface)
+ pass
+
+class MyManager(grok.ViewletManager):
+ grok.context(Interface)
+ grok.name('mymanager')
+
+class LogoutViewlet(GlobalMenuViewlet):
+ grok.context(Interface)
+
+ viewURL = 'logout.html'
+
+
+
+
+def test_suite():
+ from zope.testing import doctest
+ from megrok.ootbviewlets.tests import FunctionalLayer
+ suite = doctest.DocTestSuite(optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS|doctest.REPORT_NDIFF)
+ suite.layer = FunctionalLayer
+ return suite
+
Added: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_globalmenuitem_templates/myview.pt
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_globalmenuitem_templates/myview.pt (rev 0)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_globalmenuitem_templates/myview.pt 2009-03-31 12:38:17 UTC (rev 98679)
@@ -0,0 +1 @@
+<span tal:replace="provider:mymanager" />
Added: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_globalmenuitem_templates/print.pt
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_globalmenuitem_templates/print.pt (rev 0)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_globalmenuitem_templates/print.pt 2009-03-31 12:38:17 UTC (rev 98679)
@@ -0,0 +1 @@
+<span tal:replace="provider:mymanager" />
Added: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_tabs.py
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_tabs.py (rev 0)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_tabs.py 2009-03-31 12:38:17 UTC (rev 98679)
@@ -0,0 +1,54 @@
+"""
+Set up a content object in the application root::
+
+ >>> from zope.app.testing.functional import getRootFolder
+ >>> root = getRootFolder()
+ >>> root['tabs'] = MyContext()
+
+Traverse to the view on the model object. We get the viewlets
+registered for the default layer, with the anybody permission::
+
+ >>> from zope.testbrowser.testing import Browser
+ >>> browser = Browser()
+ >>> browser.handleErrors = False
+
+Open the myview in context of fred should give us
+the print in link in the right context.
+
+ >>> browser.open("http://localhost/tabs/@@myview")
+ >>> print browser.contents
+ <div class="tabMenu">
+ <span class="inactive-menu-item">
+ <a href="">print</a>
+ </span>
+ <BLANKLINE>
+ </div>
+ klaus
+
+
+"""
+import grok
+from megrok.ootbviewlets import TabItem, TabMenuManager
+
+class MyContext(grok.Context):
+ pass
+
+class MyView(grok.View):
+ pass
+
+class MyManager(TabMenuManager):
+ grok.name('mymanager')
+
+class MyTab(TabItem):
+ grok.name('print')
+
+ urlEndings = ['print', ]
+ viewURL = 'print'
+
+def test_suite():
+ from zope.testing import doctest
+ from megrok.ootbviewlets.tests import FunctionalLayer
+ suite = doctest.DocTestSuite(optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS|doctest.REPORT_NDIFF)
+ suite.layer = FunctionalLayer
+ return suite
+
Added: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_tabs_templates/myview.pt
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_tabs_templates/myview.pt (rev 0)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/tests/test_tabs_templates/myview.pt 2009-03-31 12:38:17 UTC (rev 98679)
@@ -0,0 +1 @@
+<span tal:replace="provider:mymanager" />
Added: Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/viewlets.py
===================================================================
--- Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/viewlets.py (rev 0)
+++ Sandbox/cklinger/megrok.ootbviewlets/trunk/src/megrok/ootbviewlets/viewlets.py 2009-03-31 12:38:17 UTC (rev 98679)
@@ -0,0 +1,17 @@
+import grok
+from z3c.menu.simple.menu import (ContextMenuItem, GlobalMenuItem,
+ TabItem)
+
+class ContextViewlet(ContextMenuItem, grok.Viewlet):
+ grok.baseclass()
+
+
+class GlobalMenuViewlet(GlobalMenuItem, grok.Viewlet):
+ grok.baseclass()
+
+class TabItem(TabItem, grok.Viewlet):
+ grok.baseclass()
+
+ def render(self):
+ return self.template()
+
More information about the Checkins
mailing list