{ "info": { "author": "Stephan Richter, Roger Ineichen and the Zope Community", "author_email": "zope-dev@zope.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Zope3", "Intended Audience :: Developers", "License :: OSI Approved :: Zope Public License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP" ], "description": "This package provides a simple menu implementation based on viewlets.\n\n\n.. contents ::\n\n===========\nSimple Menu\n===========\n\nThe ``z3c.menu.simple`` package provides a simple menu implementation which\nallows you to implement simply menus based on content providers and viewlets.\n\nRight now there are some ``SimpleMenuItem`` menu item implementations and\na tabbed menu with tab/tab-item and action/action-item located in this\npackage.\n\nLet's see what this means.\n\n\nContextMenu\n-----------\n\n >>> from zope.viewlet.interfaces import IViewlet\n >>> from zope.viewlet.interfaces import IViewletManager\n\nLet's create a menu which means we define a viewlet manager interface:\n\n >>> class IMenu(IViewletManager):\n ... \"\"\"Menu viewlet manager.\"\"\"\n\nYou can then create a viewlet manager using this interface now:\n\n >>> from zope.viewlet import manager\n >>> Menu = manager.ViewletManager('left', IMenu)\n\nNow we have to define a context:\n\n >>> import zope.interface\n >>> from zope.app.container import contained\n >>> from zope.app.container.interfaces import IContained\n >>> class Content(contained.Contained):\n ... zope.interface.implements(IContained)\n >>> root['content'] = Content()\n >>> content = root['content']\n\n >>> from zope.publisher.browser import TestRequest\n >>> request = TestRequest()\n\n >>> from zope.publisher.interfaces.browser import IBrowserView\n >>> class View(contained.Contained):\n ... zope.interface.implements(IBrowserView)\n ... def __init__(self, context, request):\n ... self.__parent__ = context\n ... self.context = context\n ... self.request = request\n >>> view = View(content, request)\n\n >>> menu = Menu(content, request, view)\n\nSo initially no menu get rendered:\n\n >>> menu.update()\n >>> menu.render()\n u''\n\nBut now we register a context menu item for the `IMenu`:\n\n >>> import zope.component\n >>> from zope.publisher.interfaces.browser import IDefaultBrowserLayer\n\n >>> from z3c.menu.simple.menu import ContextMenuItem\n >>> class MyLocalLink(ContextMenuItem):\n ...\n ... __name__ = u'MyLocalLink'\n ... urlEndings = 'myLocal.html'\n ... viewURL = 'myLocal.html'\n\n >>> # Create a security checker for viewlets.\n >>> from zope.security.checker import NamesChecker, defineChecker\n >>> viewletChecker = NamesChecker(('update', 'render'))\n >>> defineChecker(MyLocalLink, viewletChecker)\n\n >>> zope.component.provideAdapter(\n ... MyLocalLink,\n ... (zope.interface.Interface, IDefaultBrowserLayer,\n ... IBrowserView, IMenu),\n ... IViewlet, name='MyLocalLink')\n\nNow see what we get if the IMenu viewlet manager get used:\n\n >>> menu.update()\n >>> print menu.render()\n MyLocalLink\n\n\nGlobalMenu\n----------\n\n >>> from z3c.menu.simple.menu import GlobalMenuItem\n >>> class MyGlobalLink(GlobalMenuItem):\n ...\n ... __name__ = u'MyGlobalLink'\n ... urlEndings = 'myGlobal.html'\n ... viewURL = 'myGlobal.html'\n\n >>> defineChecker(MyGlobalLink, viewletChecker)\n\n >>> zope.component.provideAdapter(\n ... MyGlobalLink,\n ... (zope.interface.Interface, IDefaultBrowserLayer,\n ... IBrowserView, IMenu),\n ... IViewlet, name='MyGlobalLink')\n\nNow see what we get if the IMenu viewlet manager get used:\n\n >>> menu.update()\n >>> print menu.render()\n MyGlobalLink\n MyLocalLink\n\n\nTabbedMenu\n----------\n\nNow we create a tabbed menu called MasterMenu:\n\n >>> class IMasterMenu(IViewletManager):\n ... \"\"\"Master menu viewlet manager.\"\"\"\n\nLet's create a viewlet manager using this interface and the TabMenu as base\nclass:\n\n >>> from z3c.menu.simple.menu import TabMenu\n >>> MasterMenu = manager.ViewletManager('masterMenu', IMasterMenu,\n ... bases=(TabMenu,))\n\nWe use the same context, request and view like before:\n\n >>> masterMenu = MasterMenu(content, request, view)\n\nSo initially no menu get rendered:\n\n >>> masterMenu.update()\n >>> masterMenu.render()\n u''\n\nNow we register a menu tab which is also a viewlet manager:\n\n >>> from zope.browserpage import viewpagetemplatefile\n >>> from z3c.menu.simple import ITab\n >>> from z3c.menu.simple.menu import Tab\n >>> class MyTabs(Tab):\n ... template = viewpagetemplatefile.ViewPageTemplateFile('tab.pt')\n >>> myTabs = MyTabs(content, request, view)\n\nAlso here, initially no tab get rendered:\n\n >>> myTabs.update()\n >>> myTabs.render()\n u''\n\nNow we register a menu action which is also a viewlet manager:\n\n >>> from z3c.menu.simple import IAction\n >>> from z3c.menu.simple.menu import Action\n >>> class MyActions(Action):\n ... template = viewpagetemplatefile.ViewPageTemplateFile('action.pt')\n >>> myActions = MyActions(content, request, view)\n\nAlso here, initially no tab get rendered:\n\n >>> myActions.update()\n >>> myActions.render()\n u''\n\nAfter setup the `TabMenu`, `Tab` and `Action` viewlet managers, we start to\nregister a tab menu item:\n\n >>> from z3c.menu.simple.menu import TabItem\n >>> class MyTab(TabItem):\n ...\n ... __name__ = u'MyTab'\n ... url = 'myTab.html'\n ... selectedViewNames = ['myTab.html']\n\n >>> tabChecker = NamesChecker(('update', 'render', 'css', 'selected'))\n >>> defineChecker(MyTab, tabChecker)\n\n >>> zope.component.provideAdapter(\n ... MyTab,\n ... (zope.interface.Interface, IDefaultBrowserLayer,\n ... IBrowserView, ITab),\n ... IViewlet, name='MyTab')\n\nNow see what we get if the tab viewlet manager get rendered:\n\n >>> myTabs.update()\n >>> print myTabs.render()\n
\n \n MyTab\n \n
\n\nAfter showing how a tab menu item get used, we will register a menu action\nitem.\n\n >>> from z3c.menu.simple.menu import ActionItem\n >>> class MyAction(ActionItem):\n ...\n ... __name__ = u'MyAction'\n ... title = 'myAction'\n\n >>> actionChecker = NamesChecker(('update', 'render', 'title'))\n >>> defineChecker(MyAction, actionChecker)\n\n >>> zope.component.provideAdapter(\n ... MyAction,\n ... (zope.interface.Interface, IDefaultBrowserLayer,\n ... IBrowserView, IAction),\n ... IViewlet, name='MyAction')\n\nNow see what we get if the action viewlet manager get used:\n\n >>> myActions.update()\n >>> print myActions.render()\n
\n \n
\n
\n\n\n=======\nCHANGES\n=======\n\n0.6.0 (2010-07-14)\n------------------\n\n- Depend on `zope.browserpage` instead of `zope.app.pagetemplate` as\n needed code has been moved there.\n\n- No longer use deprecated `zope.testing.doc[unit]test`, use python's\n `doctest` instead.\n\n\n0.5.2 (2009-11-19)\n------------------\n\n- Removed zope.app.zapi dependency.\n\n\n0.5.1 (2008-01-25)\n------------------\n\n- Bug: Updated meta-data and documentation.\n\n\n0.5.0 (2008-01-21)\n------------------\n\n- Initial Release.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/z3c.menu.simple", "keywords": "zope3 z3c simple menu", "license": "ZPL 2.1", "maintainer": null, "maintainer_email": null, "name": "z3c.menu.simple", "package_url": "https://pypi.org/project/z3c.menu.simple/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/z3c.menu.simple/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pypi.python.org/pypi/z3c.menu.simple" }, "release_url": "https://pypi.org/project/z3c.menu.simple/0.6.0/", "requires_dist": null, "requires_python": null, "summary": "A simple menu system for Zope3", "version": "0.6.0" }, "last_serial": 802053, "releases": { "0.5.0": [ { "comment_text": "", "digests": { "md5": "526b78e9138be86d43fe49d84c86c937", "sha256": "75b54df3f809ecddc6f08819ceaf130f9457b2dbba25af2892f180ebd666a27d" }, "downloads": -1, "filename": "z3c.menu.simple-0.5.0.tar.gz", "has_sig": false, "md5_digest": "526b78e9138be86d43fe49d84c86c937", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8698, "upload_time": "2008-01-21T08:21:01", "url": "https://files.pythonhosted.org/packages/a9/ab/f300f6e5218870032183cba7616294b1687e9948c9767a52b0a3bbae77a3/z3c.menu.simple-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "4814ab27a242abee312578592dae423e", "sha256": "32c0eff03ab4032a510dc9870e3ca960e8643ee027a2bfc6f123e54706131274" }, "downloads": -1, "filename": "z3c.menu.simple-0.5.1.tar.gz", "has_sig": false, "md5_digest": "4814ab27a242abee312578592dae423e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9158, "upload_time": "2008-01-25T03:52:10", "url": "https://files.pythonhosted.org/packages/90/ee/bcf58663ad67010c8d8ba0aadf8e49ec936b288750a92a86cd5e65462e66/z3c.menu.simple-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "6c4131edd771a73da4c7ef161965bde2", "sha256": "d4bfccc5421e89a759f4005881d5e1b45313bb2017aa0a71ab038aa5d80c828a" }, "downloads": -1, "filename": "z3c.menu.simple-0.5.2.zip", "has_sig": false, "md5_digest": "6c4131edd771a73da4c7ef161965bde2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19811, "upload_time": "2009-11-19T09:42:03", "url": "https://files.pythonhosted.org/packages/49/ea/dfb152a65bd9e9df2579de20351d2514999b5d7f5dca2008c3aa20c9e18d/z3c.menu.simple-0.5.2.zip" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "797374ff587b1772850dbefb29947c78", "sha256": "32603ff3f0b4238c6c7eb1ba51f47f96c7fd6fb8f9e405444ef5cdb039c536c5" }, "downloads": -1, "filename": "z3c.menu.simple-0.6.0.tar.gz", "has_sig": false, "md5_digest": "797374ff587b1772850dbefb29947c78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9016, "upload_time": "2010-07-14T08:57:04", "url": "https://files.pythonhosted.org/packages/ed/88/7d95f2e30819d3273bd8c0ceb1f9645d5d29d4e849f5fbb94b82d2a4278b/z3c.menu.simple-0.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "797374ff587b1772850dbefb29947c78", "sha256": "32603ff3f0b4238c6c7eb1ba51f47f96c7fd6fb8f9e405444ef5cdb039c536c5" }, "downloads": -1, "filename": "z3c.menu.simple-0.6.0.tar.gz", "has_sig": false, "md5_digest": "797374ff587b1772850dbefb29947c78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9016, "upload_time": "2010-07-14T08:57:04", "url": "https://files.pythonhosted.org/packages/ed/88/7d95f2e30819d3273bd8c0ceb1f9645d5d29d4e849f5fbb94b82d2a4278b/z3c.menu.simple-0.6.0.tar.gz" } ] }