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

View file

@ -24,7 +24,6 @@ $Id$
from zope.app import zapi from zope.app import zapi
from zope.app.catalog.interfaces import ICatalog 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.event.objectevent import ObjectCreatedEvent, ObjectModifiedEvent
from zope.app.form.browser.interfaces import ITerms from zope.app.form.browser.interfaces import ITerms
from zope.app.pagetemplate import ViewPageTemplateFile from zope.app.pagetemplate import ViewPageTemplateFile

View file

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

View file

@ -126,11 +126,24 @@ class NodeView(BaseView):
def editable(self): def editable(self):
return canWrite(self.context, 'body') return canWrite(self.context, 'body')
@Lazy
def menuObject(self):
return self.context.getMenu()
@Lazy @Lazy
def menu(self): def menu(self):
menu = self.context.getMenu() menu = self.menuObject
return menu is not None and NodeView(menu, self.request) or None 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 @Lazy
def menuItems(self): def menuItems(self):
return [NodeView(child, self.request) return [NodeView(child, self.request)

View file

@ -217,6 +217,9 @@
<content class=".view.Node"> <content class=".view.Node">
<!--<implements
interface="loops.interfaces.ILoopsObject" />-->
<implements <implements
interface="zope.app.annotation.interfaces.IAttributeAnnotatable" /> interface="zope.app.annotation.interfaces.IAttributeAnnotatable" />
@ -240,6 +243,30 @@
<!-- adapters --> <!-- 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.concept.IndexAttributes" />
<adapter factory="loops.resource.IndexAttributes" /> <adapter factory="loops.resource.IndexAttributes" />
<adapter factory="loops.resource.IndexableResource" /> <adapter factory="loops.resource.IndexableResource" />

View file

@ -46,6 +46,9 @@ class ILoopsObject(Interface):
""" Return the loops root object. """ 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): class IPotentialTarget(Interface):
""" For objects that may be used as target objects for views/nodes. """ For objects that may be used as target objects for views/nodes.