How to install dolmen.menu
- Download and install ActivePython
- Open Command Prompt
- Type
pypm install dolmen.menu
Dependencies
- distribute
- grokcore.component
- grokcore.view
- grokcore.viewlet
- martian
- megrok.pagetemplate
- zope.component
- zope.interface
- zope.location
- zope.publisher
- zope.schema
- zope.security
- zope.security
- zope.traversing
- zope.viewlet
- [test] grokcore.security
- [test] zope.container
- [test] zope.i18n
- [test] zope.location
- [test] zope.principalregistry
- [test] zope.securitypolicy
- [test] zope.site
Lastest release
dolmen.menu aims to provide the most flexible and explicit way to create and manage menus and their entries with Grok.
You have to know that...
- dolmen.menu only works on Python 2.6.
- dolmen.menu does not support sub-menus, out of the box. The implementation is left to your discretion.
Components
dolmen.menu provides two components:
- Menu : the menu implementation is based on the zope "content provider" notion and is using the grokcore.viewlet package.
- Entry: a menu item is called an entry. It's a multi adapter that is registered for a Menu component.
Examples
A menu component:
>>> from dolmen import menu >>> class MyMenu(menu.Menu): ... menu.title('My nice menu')
A menu entry:
>>> class MyMenuEntry(menu.Entry): ... menu.order(1) ... menu.name('a_direct_entry') ... menu.title('My Entry') ... menu.menu(MyMenu)
Registration
In order to use base Grok component as menu entries, we get two registration ways.
class decorator
A class decorator allows you to decorate any class, in order to register it as a menu entry:
>>> import grokcore.view >>> @menu.menuentry(MyMenu) ... class TestEntry(grokcore.view.View): ... def render(self): ... return u"A simple entry"
Module level martian directive
A martian directive allows you register classes you can't decorate (from a foreign package, for instance), explicitly:
>>> class SomeView(grokcore.view.View): ... def render(self): ... return u"I'm a view and I want to be a menu entry" >>> menu.global_menuentry(SomeView, MyMenu, order=2)
Changes
0.5 (2011-01-31)
- dolmen.menu now works on the latest martian. The treatment of the decorator has been deferred by the use of a module annotation. The registration is now done by a global grokker.
0.4 (2010-12-24)
- It is now possible to define a menu context, that is different of the rendering context. This allow delegated rendering, such as Root menus or other object-specific menus.
0.3 (2010-06-04)
- Corrected a bug where 'zope.Public' was evaluated as a "normal" permission. Now, the manager converts the permission into a CheckerPublic marker.
- the filter method is now a generator.
0.2 (2010-03-05)
- Changed the way to fetch the menu CSS id.
0.1 (2010-03-03)
- Initial release.