work in progress: breadcrumbs

This commit is contained in:
Helmut Merz 2011-11-25 09:02:14 +01:00
parent a2bc7f570d
commit 705b4a6f2d
6 changed files with 38 additions and 5 deletions

View file

@ -649,6 +649,23 @@ to the bottom, and to the top.
['m111', 'm114', 'm112', 'm113'] ['m111', 'm114', 'm112', 'm113']
Breadcrumbs
-----------
>>> view = NodeView(m112, TestRequest())
>>> view.breadcrumbs()
[]
>>> loopsRoot.options = ['showBreadcrumbs']
>>> m114.nodeType = 'page'
>>> m114.target = cc1
>>> view = NodeView(m114, TestRequest())
>>> view.breadcrumbs()
[{'url': 'http://127.0.0.1/loops/views/m1', 'label': u'Menu'},
{'url': 'http://127.0.0.1/loops/views/m1/m11', 'label': u'Zope'},
{'url': 'http://127.0.0.1/loops/views/m1/m11/m114', 'label': u''}]
End-user Forms and Special Views End-user Forms and Special Views
================================ ================================

View file

@ -18,8 +18,6 @@
""" """
Common base class for loops browser view classes. Common base class for loops browser view classes.
$Id$
""" """
from cgi import parse_qs, parse_qsl from cgi import parse_qs, parse_qsl
@ -146,6 +144,9 @@ class BaseView(GenericView, I18NView):
return self.controller.getTemplateMacros('resource', resource_macros) return self.controller.getTemplateMacros('resource', resource_macros)
#return resource_macros.macros #return resource_macros.macros
def breadcrumbs(self):
return []
@Lazy @Lazy
def name(self): def name(self):
return getName(self.context) return getName(self.context)

View file

@ -36,7 +36,7 @@ from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent
from zope.lifecycleevent import Attributes from zope.lifecycleevent import Attributes
from zope.formlib.form import Form, FormFields from zope.formlib.form import Form, FormFields
from zope.proxy import removeAllProxies from zope.proxy import removeAllProxies
from zope.publisher.defaultview import getDefaultViewName from zope.app.publisher.browser import getDefaultViewName
from zope.security import canAccess, canWrite, checkPermission from zope.security import canAccess, canWrite, checkPermission
from zope.security.proxy import removeSecurityProxy from zope.security.proxy import removeSecurityProxy
from zope.traversing.api import getParent, getParents, getPath from zope.traversing.api import getParent, getParents, getPath
@ -91,6 +91,10 @@ class NodeView(BaseView):
self.recordAccess() self.recordAccess()
return result return result
@Lazy
def title(self):
return self.context.title or getName(self.context)
def breadcrumbs(self): def breadcrumbs(self):
if not self.globalOptions('showBreadcrumbs'): if not self.globalOptions('showBreadcrumbs'):
return [] return []
@ -100,6 +104,13 @@ class NodeView(BaseView):
if menuItem != menu.context: if menuItem != menu.context:
data.append(dict(label=menuItem.title, data.append(dict(label=menuItem.title,
url=absoluteURL(menuItem, self.request))) url=absoluteURL(menuItem, self.request)))
for p in getParents(menuItem):
if p == menu.context:
break
data.insert(1, dict(label=p.title,
url=absoluteURL(p, self.request)))
if self.virtualTarget:
data.extend(self.virtualTarget.breadcrumbs())
return data return data
def recordAccess(self, viewName=''): def recordAccess(self, viewName=''):

View file

@ -29,10 +29,11 @@
<metal:breadcrumbs define-slot="breadcrumbs"> <metal:breadcrumbs define-slot="breadcrumbs">
<div tal:define="crumbs view/breadcrumbs" <div tal:define="crumbs view/breadcrumbs"
tal:condition="crumbs"> tal:condition="crumbs">
<span i18n:translate="">You are here:</span>
<span tal:repeat="crumb crumbs"> <span tal:repeat="crumb crumbs">
<a tal:attributes="href crumb/url" <a tal:attributes="href crumb/url"
tal:content="crumb/label" /> tal:content="crumb/label" />
<span tal:condition="not:repeat/crumb/end"> / </span></span> <span tal:condition="not:repeat/crumb/end"> > </span></span>
</div></metal:breadcrumbs> </div></metal:breadcrumbs>
<div metal:define-slot="actions"></div> <div metal:define-slot="actions"></div>
<div metal:define-slot="message"></div> <div metal:define-slot="message"></div>

Binary file not shown.

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: $Id$\n" "Project-Id-Version: $Id$\n"
"POT-Creation-Date: 2007-05-22 12:00 CET\n" "POT-Creation-Date: 2007-05-22 12:00 CET\n"
"PO-Revision-Date: 2011-10-31 12:00 CET\n" "PO-Revision-Date: 2011-11-19 12:00 CET\n"
"Last-Translator: Helmut Merz <helmutm@cy55.de>\n" "Last-Translator: Helmut Merz <helmutm@cy55.de>\n"
"Language-Team: loops developers <helmutm@cy55.de>\n" "Language-Team: loops developers <helmutm@cy55.de>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -11,6 +11,9 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: kwrite\n" "Generated-By: kwrite\n"
msgid "You are here:"
msgstr "Sie sind hier:"
msgid "Concept" msgid "Concept"
msgstr "Begriff" msgstr "Begriff"