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"
|
||||
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>
|
||||
|
|
|
@ -65,6 +65,25 @@
|
|||
</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 -->
|
||||
|
||||
<metal:image define-macro="image">
|
||||
|
|
|
@ -30,6 +30,8 @@ from zope.cachedescriptors.property import Lazy
|
|||
from cybertools.typology.interfaces import IType
|
||||
from loops.browser.concept import ConceptView as BaseConceptView
|
||||
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
|
||||
|
||||
|
||||
|
@ -209,3 +211,55 @@ class Header2(BasePart):
|
|||
imageSize = 'medium'
|
||||
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