merge branch master
This commit is contained in:
		
						commit
						fd2d9794a5
					
				
					 10 changed files with 88 additions and 38 deletions
				
			
		|  | @ -351,6 +351,11 @@ 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 = 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) |             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 | ||||||
|  | @ -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) | ||||||
|  |  | ||||||
|  | @ -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'" /> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -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 | ||||||
|  |  | ||||||
|  | @ -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,6 +46,7 @@ | ||||||
| <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" /> | ||||||
|  |     <tal:image condition="part/showImage"> | ||||||
|       <div tal:define="showImageLink python:True" |       <div tal:define="showImageLink python:True" | ||||||
|            tal:attributes="class python:part.cssClass[0]"> |            tal:attributes="class python:part.cssClass[0]"> | ||||||
|         <metal:image use-macro="item/macros/image" /> |         <metal:image use-macro="item/macros/image" /> | ||||||
|  | @ -58,10 +59,11 @@ | ||||||
|                   string:${controller/resourceBase}/cybertools.icons/info.png" /> |                   string:${controller/resourceBase}/cybertools.icons/info.png" /> | ||||||
|           </a></span> |           </a></span> | ||||||
|       </div> |       </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" /> </tal:break> |       <br style="clear: both" /> </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> | ||||||
|  |  | ||||||
|  | @ -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' | ||||||
|  |  | ||||||
|  | @ -243,8 +243,10 @@ class ResourceView(BaseView): | ||||||
|     # actions |     # actions | ||||||
| 
 | 
 | ||||||
|     def getPortletActions(self, page=None, target=None): |     def getPortletActions(self, page=None, target=None): | ||||||
|  |         if canWrite(target.context, 'data'): | ||||||
|             return actions.get('portlet', ['edit_object'], view=self, page=page, |             return actions.get('portlet', ['edit_object'], view=self, page=page, | ||||||
|                                target=target) |                                target=target) | ||||||
|  |         return [] | ||||||
| 
 | 
 | ||||||
|     def getObjectActions(self, page=None, target=None): |     def getObjectActions(self, page=None, target=None): | ||||||
|         acts = ['info'] |         acts = ['info'] | ||||||
|  |  | ||||||
|  | @ -443,7 +443,7 @@ img.notselected { | ||||||
| /* lobo layout-specific classes */ | /* lobo layout-specific classes */ | ||||||
| 
 | 
 | ||||||
| .legend { | .legend { | ||||||
|     margin-top: 3px; |     margin-top: 1px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* comments */ | /* comments */ | ||||||
|  |  | ||||||
|  | @ -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" | ||||||
|  |  | ||||||
|  | @ -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" | ||||||
|  |  | ||||||
|  | @ -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" | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue