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.traversing.api import getName
from cybertools.meta.interfaces import IOptions
from cybertools.typology.interfaces import IType
from loops.browser.lobo import standard
from loops.browser.concept import ConceptView
@ -118,11 +119,29 @@ class Base(object):
self.images[idx].append(img)
return result
def getCssClassForResource(self, r):
def getDocumentTypeForResource(self, r):
for c in r.context.getConcepts([self.defaultPredicate]):
if c.conceptType == self.documentTypeType:
return getName(c)
return 'textelement'
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'
css = IOptions(adapted(dt))('cssclass')
if css:
return css
return getName(dt)
def getMacroForResource(self, r):
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'tip', u'Tipp', u'documenttype')
concept(u'usecase', u'Fallbeispiel', u'documenttype')
concept(u'warning', u'Warnung', u'documenttype')
# book structure
child(u'book', u'section', u'issubtype', usePredicate=u'ispartof')

View file

@ -42,11 +42,15 @@
<metal:text define-macro="textresources">
<div tal:repeat="related item/textResources">
<div class="span-4">
<metal:text define-macro="default_text">
<div tal:attributes="class python:
item.getCssClassForResource(related)"
tal:content="structure related/render" />
</metal:text>
<div metal:define-macro="default_text"
tal:attributes="class python:
item.getCssClassForResource(related)">
<img class="flow-left" style="padding-top: 5px"
tal:define="icon python:item.getIconForResource(related)"
tal:condition="icon"
tal:attributes="src icon" />
<span tal:content="structure related/render" />
</div>
</div>
<div class="span-2 last" style="padding-top: 0.4em">
<div class="object-actions" style="padding-top: 0"