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" | ||||
|         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> | ||||
|  |  | |||
|  | @ -65,6 +65,25 @@ | |||
| </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 --> | ||||
| 
 | ||||
| <metal:image define-macro="image"> | ||||
|  |  | |||
|  | @ -30,6 +30,8 @@ from zope.cachedescriptors.property import Lazy | |||
| from cybertools.typology.interfaces import IType | ||||
| from loops.browser.concept import ConceptView as BaseConceptView | ||||
| 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 | ||||
| 
 | ||||
| 
 | ||||
|  | @ -209,3 +211,55 @@ class Header2(BasePart): | |||
|     imageSize = 'medium' | ||||
|     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