merge branch master

This commit is contained in:
Helmut Merz 2011-10-28 17:48:20 +02:00
commit fd2d9794a5
10 changed files with 88 additions and 38 deletions

View file

@ -351,7 +351,12 @@ class ConceptView(BaseView):
#IOptions(adapted(pr.predicate))('hide_parents_for', [])): #IOptions(adapted(pr.predicate))('hide_parents_for', [])):
IOptions(pr.predicate)('hide_parents_for', [])): IOptions(pr.predicate)('hide_parents_for', [])):
return True return True
hideRoles = IOptions(adapted(pr.first.conceptType))('hide_for', None) hideRoles = None
options = component.queryAdapter(adapted(pr.first), IOptions)
if options is not None:
hideRoles = options('hide_for', None)
if not hideRoles:
hideRoles = IOptions(adapted(pr.first.conceptType))('hide_for', None)
if hideRoles is not None: if hideRoles is not None:
principal = self.request.principal principal = self.request.principal
if (IUnauthenticatedPrincipal.providedBy(principal) and if (IUnauthenticatedPrincipal.providedBy(principal) and
@ -399,10 +404,16 @@ class ConceptView(BaseView):
if fv.check(r.first): if fv.check(r.first):
yield ResourceRelationView(r, self.request, contextIsSecond=True) yield ResourceRelationView(r, self.request, contextIsSecond=True)
@Lazy
def resourcesList(self):
from loops.browser.resource import ResourceRelationView
return [ResourceRelationView(r, self.request, contextIsSecond=True)
for r in self.context.getResourceRelations()]
@Lazy @Lazy
def resourcesByType(self): def resourcesByType(self):
result = dict(texts=[], images=[], files=[]) result = dict(texts=[], images=[], files=[])
for rv in self.resources(): for rv in self.resourcesList:
r = rv.context r = rv.context
if r.contentType.startswith('text/'): if r.contentType.startswith('text/'):
result['texts'].append(r) result['texts'].append(r)

View file

@ -26,6 +26,12 @@
class="loops.browser.node.NodeView" class="loops.browser.node.NodeView"
permission="zope.Public" /> permission="zope.Public" />
<page for="loops.interfaces.INode"
name="contents.html"
template="contents.pt"
class="cybertools.container.ordered.ContainerView"
permission="loops.ManageSite" />
<!-- login/logout --> <!-- login/logout -->
<page for="loops.interfaces.INode" <page for="loops.interfaces.INode"
@ -125,7 +131,7 @@
name="edit.html" name="edit.html"
for="loops.interfaces.ILoops" for="loops.interfaces.ILoops"
class="loops.browser.manager.LoopsEditForm" class="loops.browser.manager.LoopsEditForm"
permission="zope.ManageSite" permission="loops.ManageSite"
menu="zmi_views" title="Edit" menu="zmi_views" title="Edit"
/> />
@ -175,7 +181,7 @@
<pages <pages
for="loops.interfaces.IConcept" for="loops.interfaces.IConcept"
class=".concept.ConceptConfigureView" class=".concept.ConceptConfigureView"
permission="zope.ManageContent"> permission="loops.ManageSite">
<page <page
name="configure.html" name="configure.html"
@ -193,7 +199,7 @@
name="edit.html" name="edit.html"
for="loops.interfaces.IConcept" for="loops.interfaces.IConcept"
class="loops.browser.concept.ConceptEditForm" class="loops.browser.concept.ConceptEditForm"
permission="zope.ManageContent" permission="loops.ManageSite"
menu="zmi_views" title="Edit" /> menu="zmi_views" title="Edit" />
<page <page
@ -279,7 +285,7 @@
<pages <pages
for="loops.interfaces.IResource" for="loops.interfaces.IResource"
class=".resource.ResourceConfigureView" class=".resource.ResourceConfigureView"
permission="zope.ManageContent"> permission="loops.ManageSite">
<page <page
name="configure.html" name="configure.html"
@ -292,7 +298,7 @@
name="edit.html" name="edit.html"
for="loops.interfaces.IResource" for="loops.interfaces.IResource"
class="loops.browser.resource.ResourceEditForm" class="loops.browser.resource.ResourceEditForm"
permission="zope.ManageContent" permission="loops.ManageSite"
menu="zmi_views" title="Edit" /> menu="zmi_views" title="Edit" />
<!-- suppress the upload menu item: --> <!-- suppress the upload menu item: -->
@ -314,7 +320,7 @@
name="edit.html" name="edit.html"
for="loops.interfaces.IDocument" for="loops.interfaces.IDocument"
class="loops.browser.resource.DocumentEditForm" class="loops.browser.resource.DocumentEditForm"
permission="zope.ManageContent" permission="loops.ManageSite"
menu="zmi_views" title="Edit" /> menu="zmi_views" title="Edit" />
<page <page
@ -353,17 +359,17 @@
schema="loops.interfaces.IViewManager" schema="loops.interfaces.IViewManager"
content_factory="loops.view.ViewManager" content_factory="loops.view.ViewManager"
template="add.pt" template="add.pt"
permission="zope.ManageContent" /> permission="loops.ManageSite" />
<containerViews <containerViews
for="loops.interfaces.IViewManager" for="loops.interfaces.IViewManager"
index="zope.View" index="zope.View"
add="zope.ManageContent" /> add="loops.ManageSite" />
<menuItem <menuItem
for="loops.interfaces.IViewManager" for="loops.interfaces.IViewManager"
action="contents.html" action="contents.html"
permission="zope.ManageContent" permission="loops.ManageSite"
menu="zmi_views" title="Contents" /> menu="zmi_views" title="Contents" />
<!-- record manager --> <!-- record manager -->
@ -389,7 +395,7 @@
<menuItem <menuItem
for="loops.interfaces.INode" for="loops.interfaces.INode"
action="contents.html" action="contents.html"
permission="zope.ManageContent" permission="loops.ManageSite"
menu="zmi_views" title="Contents" /> menu="zmi_views" title="Contents" />
<addform <addform
@ -418,7 +424,7 @@
fields="title description nodeType viewName body" fields="title description nodeType viewName body"
for="loops.interfaces.INode" for="loops.interfaces.INode"
template="edit.pt" template="edit.pt"
permission="zope.ManageContent" permission="loops.ManageSite"
menu="zmi_views" title="Edit"> menu="zmi_views" title="Edit">
<widget field="description" height="2" /> <widget field="description" height="2" />
@ -452,13 +458,13 @@
for="loops.interfaces.INode" for="loops.interfaces.INode"
template="node_target.pt" template="node_target.pt"
class="loops.browser.node.ConfigureView" class="loops.browser.node.ConfigureView"
permission="zope.ManageContent" permission="loops.ManageSite"
/> />
<menuItem <menuItem
for="loops.interfaces.INode" for="loops.interfaces.INode"
action="@@configure.html" action="@@configure.html"
permission="zope.ManageContent" permission="loops.ManageSite"
menu="zmi_views" title="Configure" menu="zmi_views" title="Configure"
/> />
@ -704,12 +710,12 @@
schema="loops.interfaces.IViewConfiguratorSchema" schema="loops.interfaces.IViewConfiguratorSchema"
for="loops.interfaces.INode" for="loops.interfaces.INode"
template="edit.pt" template="edit.pt"
permission="zope.ManageContent" /> permission="loops.ManageSite" />
<menuItem <menuItem
for="loops.interfaces.INode" for="loops.interfaces.INode"
action="viewconfigure.html" action="viewconfigure.html"
permission="zope.ManageContent" permission="loops.ManageSite"
menu="zmi_views" title="View Properties" menu="zmi_views" title="View Properties"
filter="python: context.nodeType == 'menu'" /> filter="python: context.nodeType == 'menu'" />

View file

@ -39,6 +39,14 @@
factory="loops.browser.lobo.standard.List2" factory="loops.browser.lobo.standard.List2"
permission="zope.View" /> permission="zope.View" />
<zope:adapter
name="lobo_h0"
for="loops.interfaces.IConcept
loops.browser.skin.Lobo"
provides="zope.interface.Interface"
factory="loops.browser.lobo.standard.Header0"
permission="zope.View" />
<zope:adapter <zope:adapter
name="lobo_h1" name="lobo_h1"
for="loops.interfaces.IConcept for="loops.interfaces.IConcept

View file

@ -36,7 +36,7 @@
<a tal:attributes="href cell/targetUrl"> <a tal:attributes="href cell/targetUrl">
<b tal:content="cell/title" /></a><br /> <b tal:content="cell/title" /></a><br />
<tal:desc condition="cell/description"> <tal:desc condition="cell/description">
<i tal:content="structure cell/renderedDescription" /></tal:desc> <span tal:content="structure cell/renderedDescription" /></tal:desc>
<br /> <br />
</div> </div>
</tal:cell> </tal:cell>
@ -46,22 +46,24 @@
<metal:block define-macro="header"> <metal:block define-macro="header">
<div tal:define="cell part/getView"> <div tal:define="cell part/getView">
<metal:headline use-macro="item/macros/headline" /> <metal:headline use-macro="item/macros/headline" />
<div tal:define="showImageLink python:True" <tal:image condition="part/showImage">
tal:attributes="class python:part.cssClass[0]"> <div tal:define="showImageLink python:True"
<metal:image use-macro="item/macros/image" /> tal:attributes="class python:part.cssClass[0]">
<span tal:condition="cell/img/showInfo|nothing"> <metal:image use-macro="item/macros/image" />
<a tal:define="url string:${cell/img/url}/meta_info.html" <span tal:condition="cell/img/showInfo|nothing">
tal:attributes="href url; <a tal:define="url string:${cell/img/url}/meta_info.html"
onclick string:objectDialog('', '$url');; tal:attributes="href url;
return false"> onclick string:objectDialog('', '$url');;
<img tal:attributes="src return false">
string:${controller/resourceBase}/cybertools.icons/info.png" /> <img tal:attributes="src
</a></span> string:${controller/resourceBase}/cybertools.icons/info.png" />
</div> </a></span>
</div>
</tal:image>
<div tal:attributes="class python:part.cssClass[1]"> <div tal:attributes="class python:part.cssClass[1]">
<span tal:content="structure cell/renderedTextDescription" /> <span tal:content="structure cell/renderedTextDescription" />
</div> </div>
<tal:break condition="cell/img"> <tal:break condition="python:part.showImage and cell.img">
<br style="clear: both" />&nbsp;</tal:break> <br style="clear: both" />&nbsp;</tal:break>
<div tal:condition="cell/renderedText" <div tal:condition="cell/renderedText"
tal:attributes="class python:part.cssClass[2]"> tal:attributes="class python:part.cssClass[2]">
@ -108,13 +110,15 @@
title cell/img/title"> title cell/img/title">
<img tal:condition="showImageLink|python:False" <img tal:condition="showImageLink|python:False"
tal:attributes="src cell/img/src; tal:attributes="src cell/img/src;
class cell/img/cssClass" /> class cell/img/cssClass;
alt cell/title" />
</a> </a>
<a tal:condition="not:showImageLink|python:False" <a tal:condition="not:showImageLink|python:False"
tal:attributes="href cell/targetUrl; tal:attributes="href cell/targetUrl;
title cell/description"> title cell/title">
<img tal:attributes="src cell/img/src; <img tal:attributes="src cell/img/src;
class cell/img/cssClass" /> class cell/img/cssClass;
alt cell/title" />
</a> </a>
</tal:img> </tal:img>
</metal:image> </metal:image>

View file

@ -157,6 +157,7 @@ class BasePart(Base):
imageCssClass = '' imageCssClass = ''
height = 260 height = 260
gridPattern = [] gridPattern = []
showImage = True
def getChildren(self): def getChildren(self):
subtypeNames = (self.params.get('subtypes') or [''])[0].split(',') subtypeNames = (self.params.get('subtypes') or [''])[0].split(',')
@ -206,6 +207,14 @@ class List2(BasePart):
gridPattern = [['span-4 clear', 'span-2 last']] gridPattern = [['span-4 clear', 'span-2 last']]
class Header0(BasePart):
macroName = 'header'
cssClass = ['span-6 last', 'clear']
showImage = False
cssClass = ['', 'span-6 last', 'clear']
class Header1(BasePart): class Header1(BasePart):
macroName = 'header' macroName = 'header'

View file

@ -243,8 +243,10 @@ class ResourceView(BaseView):
# actions # actions
def getPortletActions(self, page=None, target=None): def getPortletActions(self, page=None, target=None):
return actions.get('portlet', ['edit_object'], view=self, page=page, if canWrite(target.context, 'data'):
target=target) return actions.get('portlet', ['edit_object'], view=self, page=page,
target=target)
return []
def getObjectActions(self, page=None, target=None): def getObjectActions(self, page=None, target=None):
acts = ['info'] acts = ['info']

View file

@ -443,7 +443,7 @@ img.notselected {
/* lobo layout-specific classes */ /* lobo layout-specific classes */
.legend { .legend {
margin-top: 3px; margin-top: 1px;
} }
/* comments */ /* comments */

View file

@ -1,6 +1,7 @@
<metal:block define-macro="asset"> <metal:block define-macro="asset">
<div tal:attributes="ondblclick python: item.openEditWindow('edit.html')"> <div tal:attributes="ondblclick python: item.openEditWindow('edit.html')">
<div metal:use-macro="views/node_macros/object_actions" /> <tal:actions condition="view/showObjectActions">
<div metal:use-macro="views/node_macros/object_actions" /></tal:actions>
<h1 tal:content="item/title">Title</h1><br /> <h1 tal:content="item/title">Title</h1><br />
<p tal:define="url python: view.getUrlForTarget(item)"> <p tal:define="url python: view.getUrlForTarget(item)">
<a tal:omit-tag="view/isAnonymous" <a tal:omit-tag="view/isAnonymous"

View file

@ -49,6 +49,14 @@
<!-- ZMI views --> <!-- ZMI views -->
<browser:page
for="cybertools.tracking.interfaces.ITrackingStorage"
name="contents.html"
template="../../browser/contents.pt"
class="cybertools.container.ordered.ContainerView"
menu="zmi_views" title="Contents"
permission="loops.ManageSite" />
<browser:page <browser:page
for="cybertools.tracking.interfaces.ITrackingStorage" for="cybertools.tracking.interfaces.ITrackingStorage"
name="index.html" name="index.html"

View file

@ -49,6 +49,7 @@
<grant role="loops.SiteManager" permission="loops.AssignAsParent" /> <grant role="loops.SiteManager" permission="loops.AssignAsParent" />
<grant role="loops.SiteManager" permission="loops.xmlrpc.ManageConcepts" /> <grant role="loops.SiteManager" permission="loops.xmlrpc.ManageConcepts" />
<grant role="loops.SiteManager" permission="zope.ManageContent" /> <grant role="loops.SiteManager" permission="zope.ManageContent" />
<grant role="loops.SiteManager" permission="zope.app.dublincore.change" />
<grant role="loops.SiteManager" permission="zope.View" /> <grant role="loops.SiteManager" permission="zope.View" />
<role id="loops.xmlrpc.ConceptManager" <role id="loops.xmlrpc.ConceptManager"