work in progress: provide parts for presenting resource lists, starting with grid
This commit is contained in:
		
							parent
							
								
									824c7606ad
								
							
						
					
					
						commit
						a7330d47bc
					
				
					 3 changed files with 83 additions and 0 deletions
				
			
		|  | @ -63,4 +63,14 @@ | ||||||
|         factory="loops.browser.lobo.standard.ConceptView" |         factory="loops.browser.lobo.standard.ConceptView" | ||||||
|         permission="zope.View" /> |         permission="zope.View" /> | ||||||
| 
 | 
 | ||||||
|  |   <!-- parts for displaying resources --> | ||||||
|  | 
 | ||||||
|  |   <zope:adapter | ||||||
|  |         name="lobo_rg3" | ||||||
|  |         for="loops.interfaces.IConcept | ||||||
|  |              loops.browser.skin.Lobo" | ||||||
|  |         provides="zope.interface.Interface" | ||||||
|  |         factory="loops.browser.lobo.standard.ResourceGrid3" | ||||||
|  |         permission="zope.View" /> | ||||||
|  | 
 | ||||||
| </configure> | </configure> | ||||||
|  |  | ||||||
|  | @ -65,6 +65,25 @@ | ||||||
| </metal:block> | </metal:block> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | <!-- resources listing macros --> | ||||||
|  | 
 | ||||||
|  | <metal:block define-macro="rgrid"> | ||||||
|  |   <tal:cell repeat="cell part/getResources"> | ||||||
|  |     <div tal:attributes="class cell/cssClass; | ||||||
|  |                          style cell/style"> | ||||||
|  |       <a tal:attributes="href cell/targetUrl; | ||||||
|  |                          title cell/description"> | ||||||
|  |         <metal:image use-macro="item/macros/image" /> | ||||||
|  |         <div class="legend"> | ||||||
|  |           <b tal:content="cell/title" /><br /> | ||||||
|  |           <i tal:content="cell/description" /> | ||||||
|  |         </div> | ||||||
|  |       </a> | ||||||
|  |     </div> | ||||||
|  |   </tal:cell> | ||||||
|  | </metal:block> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| <!-- basic component macros --> | <!-- basic component macros --> | ||||||
| 
 | 
 | ||||||
| <metal:image define-macro="image"> | <metal:image define-macro="image"> | ||||||
|  |  | ||||||
|  | @ -30,6 +30,8 @@ from zope.cachedescriptors.property import Lazy | ||||||
| from cybertools.typology.interfaces import IType | from cybertools.typology.interfaces import IType | ||||||
| from loops.browser.concept import ConceptView as BaseConceptView | from loops.browser.concept import ConceptView as BaseConceptView | ||||||
| from loops.browser.concept import ConceptRelationView as BaseConceptRelationView | from loops.browser.concept import ConceptRelationView as BaseConceptRelationView | ||||||
|  | from loops.browser.resource import ResourceView as BaseResourceView | ||||||
|  | from loops.browser.resource import ResourceRelationView as BaseResourceRelationView | ||||||
| from loops.common import adapted, baseObject | from loops.common import adapted, baseObject | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -209,3 +211,55 @@ class Header2(BasePart): | ||||||
|     imageSize = 'medium' |     imageSize = 'medium' | ||||||
|     cssClass = ['span-4', 'span-2 last', 'clear'] |     cssClass = ['span-4', 'span-2 last', 'clear'] | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | # layout components for presenting lists of resources | ||||||
|  | 
 | ||||||
|  | class ResourceRelationView(BaseResourceRelationView): | ||||||
|  | 
 | ||||||
|  |     def __init__(self, relation, request, contextIsSecond=False, | ||||||
|  |                  parent=None, idx=0): | ||||||
|  |         BaseResourceRelationView.__init__(self, relation, request, contextIsSecond) | ||||||
|  |         self.parentView = parent | ||||||
|  |         self.idx = idx | ||||||
|  | 
 | ||||||
|  |     @Lazy | ||||||
|  |     def targetUrl(self): | ||||||
|  |         return self.nodeView.getUrlForTarget(self.context) | ||||||
|  | 
 | ||||||
|  |     @Lazy | ||||||
|  |     def cssClass(self): | ||||||
|  |         pattern = self.parentView.gridPattern | ||||||
|  |         if pattern: | ||||||
|  |             return pattern[self.idx % len(pattern)] | ||||||
|  | 
 | ||||||
|  |     @Lazy | ||||||
|  |     def style(self): | ||||||
|  |         return 'height: %s' % self.parentView.height | ||||||
|  | 
 | ||||||
|  |     @Lazy | ||||||
|  |     def img(self): | ||||||
|  |         self.registerDojoLightbox() # also provides access to info popup | ||||||
|  |         url = self.nodeView.getUrlForTarget(self.context) | ||||||
|  |         src = ('%s/mediaasset.html?v=%s' % (url, self.parentView.imageSize)) | ||||||
|  |         return dict(src=src, url=url, | ||||||
|  |                     cssClass=self.parentView.imageCssClass) | ||||||
|  | 
 | ||||||
|  | class ResourcesPart(BasePart): | ||||||
|  | 
 | ||||||
|  |     def getResources(self): | ||||||
|  |         result = [] | ||||||
|  |         resourceRels = self.context.getResourceRelations() | ||||||
|  |         for idx, r in enumerate(resourceRels): | ||||||
|  |             result.append(ResourceRelationView(r, self.request, | ||||||
|  |                                 contextIsSecond=True, parent=self, idx=idx)) | ||||||
|  |         return result | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class ResourceGrid3(ResourcesPart): | ||||||
|  | 
 | ||||||
|  |     macroName = 'rgrid' | ||||||
|  |     imageSize = 'small' | ||||||
|  |     height = 'auto; padding-bottom: 10px' | ||||||
|  |     gridPattern = ['span-2', 'span-2', 'span-2 last'] | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue