provide more control on what is shown in list or grid via new 'represents' predicate for resources
This commit is contained in:
parent
c71669f1a7
commit
5d3bcf3cfa
3 changed files with 33 additions and 9 deletions
|
@ -17,7 +17,7 @@
|
|||
title cell/description">
|
||||
<div class="legend">
|
||||
<b tal:content="cell/title" /><br />
|
||||
<i tal:content="structure cell/renderedDescription" />
|
||||
<i tal:content="structure cell/textRepresentation" />
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
|
@ -36,7 +36,7 @@
|
|||
<a tal:attributes="href cell/targetUrl">
|
||||
<b tal:content="cell/title" /></a><br />
|
||||
<tal:desc condition="cell/description">
|
||||
<span tal:content="structure cell/renderedDescription" /></tal:desc>
|
||||
<span tal:content="structure cell/textRepresentation" /></tal:desc>
|
||||
<br />
|
||||
</div>
|
||||
</tal:cell>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2011 Helmut Merz helmutm@cy55.de
|
||||
# Copyright (c) 2012 Helmut Merz helmutm@cy55.de
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -18,8 +18,6 @@
|
|||
|
||||
"""
|
||||
View classes for lobo (blueprint-based) layouts.
|
||||
|
||||
$Id$
|
||||
"""
|
||||
|
||||
from cgi import parse_qs
|
||||
|
@ -66,8 +64,20 @@ class ConceptView(BaseConceptView):
|
|||
|
||||
@Lazy
|
||||
def resources(self):
|
||||
return self.getResources()
|
||||
|
||||
@Lazy
|
||||
def representingResources(self):
|
||||
pred = self.representationPredicate
|
||||
if pred is None:
|
||||
return {}
|
||||
return self.getResources([pred])
|
||||
|
||||
def getResources(self, predicates=None):
|
||||
result = dict(texts=[], images=[], files=[])
|
||||
for r in self.context.getResources([self.defaultPredicate]):
|
||||
if predicates is None:
|
||||
predicates = [self.defaultPredicate]
|
||||
for r in self.context.getResources(predicates):
|
||||
if r.contentType.startswith('text/'):
|
||||
result['texts'].append(r)
|
||||
if r.contentType.startswith('image/'):
|
||||
|
@ -81,6 +91,10 @@ class ConceptView(BaseConceptView):
|
|||
for r in self.resources['images']:
|
||||
yield r
|
||||
|
||||
@Lazy
|
||||
def representationPredicate(self):
|
||||
return self.conceptManager.get('represents')
|
||||
|
||||
# properties from base class: title, description, renderedDescription
|
||||
|
||||
@Lazy
|
||||
|
@ -99,6 +113,12 @@ class ConceptView(BaseConceptView):
|
|||
return u''
|
||||
return self.renderDescription(self.textDescription)
|
||||
|
||||
@Lazy
|
||||
def textRepresentation(self):
|
||||
for r in self.representingResources.get('texts', []):
|
||||
return self.renderText(r.data, r.contentType)
|
||||
return self.renderedDescription
|
||||
|
||||
@Lazy
|
||||
def targetUrl(self):
|
||||
return self.nodeView.getUrlForTarget(self.context)
|
||||
|
|
|
@ -67,9 +67,13 @@ class StatefulConceptIndexInfo(IndexInfo):
|
|||
@property
|
||||
def availableStatesDefinitions(self):
|
||||
globalOptions = IOptions(self.context.getLoopsRoot())
|
||||
typeOptions = IOptions(adapted(self.context.conceptType))
|
||||
return (globalOptions('organize.stateful.concept', []) +
|
||||
typeOptions('organize.stateful', []))
|
||||
type = self.context.conceptType
|
||||
if type is None: # may happen during object creation
|
||||
return globalOptions('organize.stateful.concept', [])
|
||||
else:
|
||||
typeOptions = IOptions(adapted(type))
|
||||
return (globalOptions('organize.stateful.concept', []) +
|
||||
typeOptions('organize.stateful', []))
|
||||
|
||||
|
||||
class StatefulResourceIndexInfo(IndexInfo):
|
||||
|
|
Loading…
Add table
Reference in a new issue