[Zope3-Users] Different menu items for different views for the
same context
Robert Marianski
rmarianski at openplans.org
Wed Aug 6 15:13:17 EDT 2008
On Wed, Aug 06, 2008 at 11:52:18PM +0530, Baiju M wrote:
> Hi all,
>
> I am trying to create a navigation menu where menu items should
> change based on views. To do this first I created a
> viewletManager like this::
>
> <browser:viewletManager
> name="page_navigation_menu"
> provides=".viewlet.IPageNavigationMenu"
> class=".viewlet.PageNavigationMenu"
> layer="myapp.skinning.layer.IMyappBrowserLayer"
> permission="myapp.View"
> />
>
> And I defined viewletManager like this::
>
> from zope.viewlet.manager import WeightOrderedViewletManager
> from zope.interface import implements
> from zope.viewlet.interfaces import IViewletManager
>
> class IPageNavigationMenu(IViewletManager):
> """Page Navigation Menu Viewlet Manager."""
>
>
> class PageNavigationMenu(WeightOrderedViewletManager):
>
> implements(IPageNavigationMenu)
>
>
> Also I have this in my page layout::
>
> <div id="pagenavigation"
> tal:content="structure provider:page_navigation_menu">
> Page Navigation Menu
> </div>
>
>
> This is an example viewlet::
>
> <browser:viewlet
> name="Add User"
> viewURL="@@add_user"
> for="myapp.main.interfaces.IMyapp"
> manager="myapp.skinning.viewlet.IPageNavigationMenu"
> class="z3c.menu.simple.menu.ContextMenuItem"
> permission="myapp.View"
> layer="myapp.skinning.layer.IMyappBrowserLayer"
> weight="2"
> />
>
> I do not want this viewlet appear when I open some views
> registerd for `myapp.main.interfaces.IMyapp`. How can I do that
> ? Can I use "layer" feature in some way to solve this ?
> or anything I missed here ?
>
> Regards,
> Baiju M
You can register your viewlets for a particular view. This works well if
you only want your viewlet to appear on a small number of views.
--
Robert
More information about the Zope3-users
mailing list