[Zope3-Users] Building a viewlet-based menu
Hermann Himmelbauer
dusty at qwer.tk
Fri Jan 4 07:26:32 EST 2008
Hi,
I'm currently trying to build a viewlet-based menu. As any common menu, it
should consist of entries, which link in my case to certain object views. If
such a link is clicked, the menu entry should change (no link) to denote that
the entry is selected.
Therefore I built a base class that looks like the following:
class MenuEntryViewlet(ViewletBase):
def update(self):
site_path = absoluteURL(getParent(getSiteManager(self)), self.request)
self.link = site_path + self.link
render = ViewPageTemplateFile('pt_desktop/menuentry.pt')
def iscurrent(self):
current_url = absoluteURL(getParent(getParent(self)), self.request)
if current_url == self.link:
return True
else:
return False
The page template either returns an entry with a link or without one,
regarding to view/iscurrent. Now I can inherit menu entries and configure
them to show up in the menu like this:
class ME_Home(MenuEntryViewlet):
label = u"Startseite"
link = "/index.html" # Relative to my Site Object
My problem is that the update() function which sets the link does not always
work. The link should always include the URL of the local site object, which
is does not when a 404 page is displayed, therefore all menu entries have
invalid links.
Does anyone know why, or does someone have a better suggestion to my problem?
Best Regards,
Hermann
--
hermann at qwer.tk
GPG key ID: 299893C7 (on keyservers)
FP: 0124 2584 8809 EF2A DBF9 4902 64B4 D16B 2998 93C7
More information about the Zope3-users
mailing list