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
|
||||||
return 'textelement'
|
|
||||||
|
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):
|
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