work in progress: breadcrumbs
This commit is contained in:
parent
a2bc7f570d
commit
705b4a6f2d
6 changed files with 38 additions and 5 deletions
17
README.txt
17
README.txt
|
@ -649,6 +649,23 @@ to the bottom, and to the top.
|
|||
['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
|
||||
================================
|
||||
|
||||
|
|
|
@ -18,8 +18,6 @@
|
|||
|
||||
"""
|
||||
Common base class for loops browser view classes.
|
||||
|
||||
$Id$
|
||||
"""
|
||||
|
||||
from cgi import parse_qs, parse_qsl
|
||||
|
@ -146,6 +144,9 @@ class BaseView(GenericView, I18NView):
|
|||
return self.controller.getTemplateMacros('resource', resource_macros)
|
||||
#return resource_macros.macros
|
||||
|
||||
def breadcrumbs(self):
|
||||
return []
|
||||
|
||||
@Lazy
|
||||
def name(self):
|
||||
return getName(self.context)
|
||||
|
|
|
@ -36,7 +36,7 @@ from zope.lifecycleevent import ObjectCreatedEvent, ObjectModifiedEvent
|
|||
from zope.lifecycleevent import Attributes
|
||||
from zope.formlib.form import Form, FormFields
|
||||
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.proxy import removeSecurityProxy
|
||||
from zope.traversing.api import getParent, getParents, getPath
|
||||
|
@ -91,6 +91,10 @@ class NodeView(BaseView):
|
|||
self.recordAccess()
|
||||
return result
|
||||
|
||||
@Lazy
|
||||
def title(self):
|
||||
return self.context.title or getName(self.context)
|
||||
|
||||
def breadcrumbs(self):
|
||||
if not self.globalOptions('showBreadcrumbs'):
|
||||
return []
|
||||
|
@ -100,6 +104,13 @@ class NodeView(BaseView):
|
|||
if menuItem != menu.context:
|
||||
data.append(dict(label=menuItem.title,
|
||||
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
|
||||
|
||||
def recordAccess(self, viewName=''):
|
||||
|
|
|
@ -29,10 +29,11 @@
|
|||
<metal:breadcrumbs define-slot="breadcrumbs">
|
||||
<div tal:define="crumbs view/breadcrumbs"
|
||||
tal:condition="crumbs">
|
||||
<span i18n:translate="">You are here:</span>
|
||||
<span tal:repeat="crumb crumbs">
|
||||
<a tal:attributes="href crumb/url"
|
||||
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:define-slot="actions"></div>
|
||||
<div metal:define-slot="message"></div>
|
||||
|
|
Binary file not shown.
|
@ -3,7 +3,7 @@ msgstr ""
|
|||
|
||||
"Project-Id-Version: $Id$\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"
|
||||
"Language-Team: loops developers <helmutm@cy55.de>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
@ -11,6 +11,9 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: kwrite\n"
|
||||
|
||||
msgid "You are here:"
|
||||
msgstr "Sie sind hier:"
|
||||
|
||||
msgid "Concept"
|
||||
msgstr "Begriff"
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue