From a7330d47bc4f07659b7118ebe513c68d89ae0f5d Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sun, 25 Sep 2011 18:07:26 +0200 Subject: [PATCH] work in progress: provide parts for presenting resource lists, starting with grid --- browser/lobo/configure.zcml | 10 +++++++ browser/lobo/standard.pt | 19 +++++++++++++ browser/lobo/standard.py | 54 +++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) diff --git a/browser/lobo/configure.zcml b/browser/lobo/configure.zcml index baae840..6355601 100644 --- a/browser/lobo/configure.zcml +++ b/browser/lobo/configure.zcml @@ -63,4 +63,14 @@ factory="loops.browser.lobo.standard.ConceptView" permission="zope.View" /> + + + + diff --git a/browser/lobo/standard.pt b/browser/lobo/standard.pt index e540490..f344cc6 100644 --- a/browser/lobo/standard.pt +++ b/browser/lobo/standard.pt @@ -65,6 +65,25 @@ + + + + +
+ + +
+
+ +
+
+
+
+
+ + diff --git a/browser/lobo/standard.py b/browser/lobo/standard.py index 1ba3177..1e0de59 100644 --- a/browser/lobo/standard.py +++ b/browser/lobo/standard.py @@ -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'] + +