allow for association of image icons with text elements of certain document types
This commit is contained in:
		
							parent
							
								
									fd4c777d74
								
							
						
					
					
						commit
						2fc2dade52
					
				
					 3 changed files with 32 additions and 8 deletions
				
			
		|  | @ -26,6 +26,7 @@ from zope.app.pagetemplate import ViewPageTemplateFile | ||||||
| from zope.cachedescriptors.property import Lazy | from zope.cachedescriptors.property import Lazy | ||||||
| from zope.traversing.api import getName | from zope.traversing.api import getName | ||||||
| 
 | 
 | ||||||
|  | from cybertools.meta.interfaces import IOptions | ||||||
| from cybertools.typology.interfaces import IType | from cybertools.typology.interfaces import IType | ||||||
| from loops.browser.lobo import standard | from loops.browser.lobo import standard | ||||||
| from loops.browser.concept import ConceptView | from loops.browser.concept import ConceptView | ||||||
|  | @ -118,11 +119,29 @@ class Base(object): | ||||||
|                 self.images[idx].append(img) |                 self.images[idx].append(img) | ||||||
|         return result |         return result | ||||||
| 
 | 
 | ||||||
|     def getCssClassForResource(self, r): |     def getDocumentTypeForResource(self, r): | ||||||
|         for c in r.context.getConcepts([self.defaultPredicate]): |         for c in r.context.getConcepts([self.defaultPredicate]): | ||||||
|             if c.conceptType == self.documentTypeType: |             if c.conceptType == self.documentTypeType: | ||||||
|                 return getName(c) |                 return c | ||||||
|  | 
 | ||||||
|  |     def getOptionsForResource(self, r, name): | ||||||
|  |         dt = self.getDocumentTypeForResource(r) | ||||||
|  |         if dt is not None: | ||||||
|  |             return IOptions(adapted(dt))(name) | ||||||
|  | 
 | ||||||
|  |     def getIconForResource(self, r): | ||||||
|  |         icon = self.getOptionsForResource(r, 'icon') | ||||||
|  |         if icon: | ||||||
|  |             return '/'.join((self.controller.resourceBase, icon[0])) | ||||||
|  | 
 | ||||||
|  |     def getCssClassForResource(self, r): | ||||||
|  |         dt = self.getDocumentTypeForResource(r) | ||||||
|  |         if dt is None: | ||||||
|             return 'textelement' |             return 'textelement' | ||||||
|  |         css = IOptions(adapted(dt))('cssclass') | ||||||
|  |         if css: | ||||||
|  |             return css | ||||||
|  |         return getName(dt) | ||||||
| 
 | 
 | ||||||
|     def getMacroForResource(self, r): |     def getMacroForResource(self, r): | ||||||
|         return self.book_macros['default_text'] |         return self.book_macros['default_text'] | ||||||
|  |  | ||||||
|  | @ -26,6 +26,7 @@ concept(u'quote', u'Zitat', u'documenttype') | ||||||
| concept(u'story', u'Geschichte', u'documenttype') | concept(u'story', u'Geschichte', u'documenttype') | ||||||
| concept(u'tip', u'Tipp', u'documenttype') | concept(u'tip', u'Tipp', u'documenttype') | ||||||
| concept(u'usecase', u'Fallbeispiel', u'documenttype') | concept(u'usecase', u'Fallbeispiel', u'documenttype') | ||||||
|  | concept(u'warning', u'Warnung', u'documenttype') | ||||||
| 
 | 
 | ||||||
| # book structure | # book structure | ||||||
| child(u'book', u'section', u'issubtype', usePredicate=u'ispartof') | child(u'book', u'section', u'issubtype', usePredicate=u'ispartof') | ||||||
|  |  | ||||||
|  | @ -42,11 +42,15 @@ | ||||||
|   <metal:text define-macro="textresources"> |   <metal:text define-macro="textresources"> | ||||||
|     <div tal:repeat="related item/textResources"> |     <div tal:repeat="related item/textResources"> | ||||||
|       <div class="span-4"> |       <div class="span-4"> | ||||||
|         <metal:text define-macro="default_text"> |         <div metal:define-macro="default_text" | ||||||
|           <div tal:attributes="class python: |              tal:attributes="class python: | ||||||
|                       item.getCssClassForResource(related)" |                       item.getCssClassForResource(related)"> | ||||||
|                tal:content="structure related/render" /> |           <img class="flow-left" style="padding-top: 5px" | ||||||
|         </metal:text> |                tal:define="icon python:item.getIconForResource(related)" | ||||||
|  |                tal:condition="icon" | ||||||
|  |                tal:attributes="src icon" /> | ||||||
|  |           <span tal:content="structure related/render" /> | ||||||
|  |         </div> | ||||||
|       </div> |       </div> | ||||||
|       <div class="span-2 last" style="padding-top: 0.4em"> |       <div class="span-2 last" style="padding-top: 0.4em"> | ||||||
|         <div class="object-actions" style="padding-top: 0" |         <div class="object-actions" style="padding-top: 0" | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue