a couple of minor improvements like using DC titles, ...

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1176 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2006-04-17 13:34:34 +00:00
parent 17a9a55b07
commit 6800f2e356
6 changed files with 89 additions and 18 deletions

View file

@ -23,7 +23,7 @@ $Id$
"""
from zope.app import zapi
from zope.app.dublincore.interfaces import ICMFDublinCore
from zope.app.dublincore.interfaces import IZopeDublinCore
from zope.app.form.browser.interfaces import ITerms
from zope.app.intid.interfaces import IIntIds
from zope.cachedescriptors.property import Lazy
@ -67,7 +67,7 @@ class BaseView(object):
def modified(self):
""" get date/time of last modification
"""
dc = ICMFDublinCore(self.context)
dc = IZopeDublinCore(self.context)
d = dc.modified or dc.created
return d and d.strftime('%Y-%m-%d %H:%M') or ''
@ -87,6 +87,14 @@ class BaseView(object):
def title(self):
return self.context.title or zapi.getName(self.context)
@Lazy
def dcTitle(self):
return IZopeDublinCore(self.context).title or self.title
@Lazy
def headTitle(self):
return self.dcTitle
@Lazy
def value(self):
return self.context

View file

@ -24,7 +24,6 @@ $Id$
from zope.app import zapi
from zope.app.catalog.interfaces import ICatalog
from zope.app.dublincore.interfaces import ICMFDublinCore
from zope.app.event.objectevent import ObjectCreatedEvent, ObjectModifiedEvent
from zope.app.form.browser.interfaces import ITerms
from zope.app.pagetemplate import ViewPageTemplateFile

View file

@ -48,6 +48,13 @@
permission="zope.View"
/>
<page
for="*"
name="resource_macros"
template="resource_macros.pt"
permission="zope.View"
/>
<!-- loops top-level container -->
<addform
@ -261,6 +268,20 @@
permission="zope.ManageContent"
menu="zmi_views" title="Edit" />
<page
for="loops.interfaces.IDocument"
name="document.html"
permission="zope.View"
template="document.pt"
class=".resource.DocumentView" />
<menuItem
for="loops.interfaces.IDocument"
action="document.html"
permission="zope.View"
menu="zmi_views" title="View"
/>
<zope:adapter
for="loops.interfaces.IDocument
zope.publisher.interfaces.browser.IBrowserRequest"
@ -362,6 +383,18 @@
<!-- node -->
<menuItem
for="loops.interfaces.INode"
action="@@contents.html"
permission="zope.ManageContent"
menu="zmi_views" title="Contents"
/>
<containerViews
for="loops.interfaces.INode"
index="zope.ManageContent"
/>
<addform
label="Add Node"
name="AddLoopsNode.html"
@ -419,11 +452,6 @@
<page name="action.html" attribute="action" />
</view>
<containerViews
for="loops.interfaces.INode"
index="zope.ManageContent"
/>
<page
name="configure.html"
for="loops.interfaces.INode"
@ -439,13 +467,6 @@
menu="zmi_views" title="Configure"
/>
<menuItem
for="loops.interfaces.INode"
action="@@contents.html"
permission="zope.ManageContent"
menu="zmi_views" title="Contents"
/>
<editform
label="Edit Media Asset"
name="edit_target.html"
@ -468,7 +489,7 @@
menu="zmi_views" title="Edit Document"
/>
<editform
<!--<editform
label="Edit Concept"
name="edit_target.html"
schema="loops.interfaces.IConcept"
@ -477,7 +498,7 @@
template="edit.pt"
permission="zope.ManageContent"
menu="zmi_views" title="Edit Concept"
/>
/>-->
<page
name="node.html"

View file

@ -126,11 +126,24 @@ class NodeView(BaseView):
def editable(self):
return canWrite(self.context, 'body')
@Lazy
def menuObject(self):
return self.context.getMenu()
@Lazy
def menu(self):
menu = self.context.getMenu()
menu = self.menuObject
return menu is not None and NodeView(menu, self.request) or None
@Lazy
def headTitle(self):
menuObject = self.menuObject
if menuObject is not None and menuObject != self.context:
prefix = super(NodeView, self.menu).headTitle + ' - '
else:
prefix = ''
return prefix + super(NodeView, self).headTitle
@Lazy
def menuItems(self):
return [NodeView(child, self.request)

View file

@ -217,6 +217,9 @@
<content class=".view.Node">
<!--<implements
interface="loops.interfaces.ILoopsObject" />-->
<implements
interface="zope.app.annotation.interfaces.IAttributeAnnotatable" />
@ -240,6 +243,30 @@
<!-- adapters -->
<adapter factory="loops.common.LoopsDCAdapter"
for="loops.interfaces.INode"
provides="zope.app.dublincore.interfaces.IZopeDublinCore"
trusted="True" />
<adapter factory="loops.common.LoopsDCAdapter"
for="loops.interfaces.IConcept"
provides="zope.app.dublincore.interfaces.IZopeDublinCore"
trusted="True" />
<adapter factory="loops.common.LoopsDCAdapter"
for="loops.interfaces.IDocument"
provides="zope.app.dublincore.interfaces.IZopeDublinCore"
trusted="True" />
<adapter factory="loops.common.LoopsDCAdapter"
for="loops.interfaces.IMediaAsset"
provides="zope.app.dublincore.interfaces.IZopeDublinCore"
trusted="True" />
<class class="loops.common.LoopsDCAdapter">
<require like_class="zope.app.dublincore.annotatableadapter.ZDCAnnotatableAdapter" />
</class>
<adapter factory="loops.concept.IndexAttributes" />
<adapter factory="loops.resource.IndexAttributes" />
<adapter factory="loops.resource.IndexableResource" />

View file

@ -46,6 +46,9 @@ class ILoopsObject(Interface):
""" Return the loops root object.
"""
title = Attribute(u'A short line of information about an object to be '
'used e.g. for menu items or listing entries.')
class IPotentialTarget(Interface):
""" For objects that may be used as target objects for views/nodes.