allow for association of image icons with text elements of certain document types

This commit is contained in:
Helmut Merz 2013-06-22 10:24:07 +02:00
parent fd4c777d74
commit 2fc2dade52
3 changed files with 32 additions and 8 deletions

View file

@ -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']

View file

@ -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')

View file

@ -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"