[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
+  &lt;a href="http://localhost/fred/print"
+          class="inactive-menu-item"&gt;printviewlet&lt;/a&gt;
+
+Now look if we get the right link in the context of klaus too
+
+  >>> browser.open("http://localhost/klaus/@@myview")
+  >>> print browser.contents
+  &lt;a href="http://localhost/klaus/print"
+          class="inactive-menu-item"&gt;printviewlet&lt;/a&gt;
+
+
+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
+  &lt;a href="http://localhost/klaus/print"
+          class="active-menu-item"&gt;printviewlet&lt;/a&gt;
+
+
+"""
+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
+  &lt;a href="http://localhost/app/logout.html"
+          class="inactive-menu-item"&gt;logoutviewlet&lt;/a&gt;
+
+  >>> browser.open("http://localhost/app/klaus/@@myview")
+  >>> print browser.contents
+  &lt;a href="http://localhost/app/logout.html"
+          class="inactive-menu-item"&gt;logoutviewlet&lt;/a&gt;
+
+"""
+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
+  &lt;div class="tabMenu"&gt;
+    &lt;span class="inactive-menu-item"&gt;
+    &lt;a href=""&gt;print&lt;/a&gt;
+  &lt;/span&gt;
+  <BLANKLINE>
+  &lt;/div&gt;
+  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