work in progress: provide parts for presenting resource lists, starting with grid
This commit is contained in:
parent
824c7606ad
commit
a7330d47bc
3 changed files with 83 additions and 0 deletions
|
@ -63,4 +63,14 @@
|
||||||
factory="loops.browser.lobo.standard.ConceptView"
|
factory="loops.browser.lobo.standard.ConceptView"
|
||||||
permission="zope.View" />
|
permission="zope.View" />
|
||||||
|
|
||||||
|
<!-- parts for displaying resources -->
|
||||||
|
|
||||||
|
<zope:adapter
|
||||||
|
name="lobo_rg3"
|
||||||
|
for="loops.interfaces.IConcept
|
||||||
|
loops.browser.skin.Lobo"
|
||||||
|
provides="zope.interface.Interface"
|
||||||
|
factory="loops.browser.lobo.standard.ResourceGrid3"
|
||||||
|
permission="zope.View" />
|
||||||
|
|
||||||
</configure>
|
</configure>
|
||||||
|
|
|
@ -65,6 +65,25 @@
|
||||||
</metal:block>
|
</metal:block>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- resources listing macros -->
|
||||||
|
|
||||||
|
<metal:block define-macro="rgrid">
|
||||||
|
<tal:cell repeat="cell part/getResources">
|
||||||
|
<div tal:attributes="class cell/cssClass;
|
||||||
|
style cell/style">
|
||||||
|
<a tal:attributes="href cell/targetUrl;
|
||||||
|
title cell/description">
|
||||||
|
<metal:image use-macro="item/macros/image" />
|
||||||
|
<div class="legend">
|
||||||
|
<b tal:content="cell/title" /><br />
|
||||||
|
<i tal:content="cell/description" />
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</tal:cell>
|
||||||
|
</metal:block>
|
||||||
|
|
||||||
|
|
||||||
<!-- basic component macros -->
|
<!-- basic component macros -->
|
||||||
|
|
||||||
<metal:image define-macro="image">
|
<metal:image define-macro="image">
|
||||||
|
|
|
@ -30,6 +30,8 @@ from zope.cachedescriptors.property import Lazy
|
||||||
from cybertools.typology.interfaces import IType
|
from cybertools.typology.interfaces import IType
|
||||||
from loops.browser.concept import ConceptView as BaseConceptView
|
from loops.browser.concept import ConceptView as BaseConceptView
|
||||||
from loops.browser.concept import ConceptRelationView as BaseConceptRelationView
|
from loops.browser.concept import ConceptRelationView as BaseConceptRelationView
|
||||||
|
from loops.browser.resource import ResourceView as BaseResourceView
|
||||||
|
from loops.browser.resource import ResourceRelationView as BaseResourceRelationView
|
||||||
from loops.common import adapted, baseObject
|
from loops.common import adapted, baseObject
|
||||||
|
|
||||||
|
|
||||||
|
@ -209,3 +211,55 @@ class Header2(BasePart):
|
||||||
imageSize = 'medium'
|
imageSize = 'medium'
|
||||||
cssClass = ['span-4', 'span-2 last', 'clear']
|
cssClass = ['span-4', 'span-2 last', 'clear']
|
||||||
|
|
||||||
|
|
||||||
|
# layout components for presenting lists of resources
|
||||||
|
|
||||||
|
class ResourceRelationView(BaseResourceRelationView):
|
||||||
|
|
||||||
|
def __init__(self, relation, request, contextIsSecond=False,
|
||||||
|
parent=None, idx=0):
|
||||||
|
BaseResourceRelationView.__init__(self, relation, request, contextIsSecond)
|
||||||
|
self.parentView = parent
|
||||||
|
self.idx = idx
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def targetUrl(self):
|
||||||
|
return self.nodeView.getUrlForTarget(self.context)
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def cssClass(self):
|
||||||
|
pattern = self.parentView.gridPattern
|
||||||
|
if pattern:
|
||||||
|
return pattern[self.idx % len(pattern)]
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def style(self):
|
||||||
|
return 'height: %s' % self.parentView.height
|
||||||
|
|
||||||
|
@Lazy
|
||||||
|
def img(self):
|
||||||
|
self.registerDojoLightbox() # also provides access to info popup
|
||||||
|
url = self.nodeView.getUrlForTarget(self.context)
|
||||||
|
src = ('%s/mediaasset.html?v=%s' % (url, self.parentView.imageSize))
|
||||||
|
return dict(src=src, url=url,
|
||||||
|
cssClass=self.parentView.imageCssClass)
|
||||||
|
|
||||||
|
class ResourcesPart(BasePart):
|
||||||
|
|
||||||
|
def getResources(self):
|
||||||
|
result = []
|
||||||
|
resourceRels = self.context.getResourceRelations()
|
||||||
|
for idx, r in enumerate(resourceRels):
|
||||||
|
result.append(ResourceRelationView(r, self.request,
|
||||||
|
contextIsSecond=True, parent=self, idx=idx))
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
class ResourceGrid3(ResourcesPart):
|
||||||
|
|
||||||
|
macroName = 'rgrid'
|
||||||
|
imageSize = 'small'
|
||||||
|
height = 'auto; padding-bottom: 10px'
|
||||||
|
gridPattern = ['span-2', 'span-2', 'span-2 last']
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue