From 751bc4a7d3c7984f4531c609cfabca491434a93b Mon Sep 17 00:00:00 2001 From: helmutm Date: Fri, 10 Sep 2010 07:56:29 +0000 Subject: [PATCH] work in progress: more lobo layout views git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@3989 fd906abe-77d9-0310-91a1-e0d9ade77398 --- browser/lobo/README.txt | 33 ++++++++++++++++++++++ browser/lobo/configure.zcml | 14 ++++++++-- browser/lobo/standard.pt | 2 +- browser/lobo/standard.py | 55 ++++++++++++++++++++++++++----------- browser/lobo/tests.py | 22 +++++++++++++++ 5 files changed, 106 insertions(+), 20 deletions(-) create mode 100644 browser/lobo/README.txt create mode 100755 browser/lobo/tests.py diff --git a/browser/lobo/README.txt b/browser/lobo/README.txt new file mode 100644 index 0000000..e665e71 --- /dev/null +++ b/browser/lobo/README.txt @@ -0,0 +1,33 @@ +=============================================================== +loops - Linked Objects for Organization and Processing Services +=============================================================== + + ($Id$) + +Let's do some basic set up + + >>> from zope.app.testing.setup import placefulSetUp, placefulTearDown + >>> site = placefulSetUp(True) + + >>> from zope import component, interface + +and setup a simple loops site with a concept manager and some concepts +(with all the type machinery, what in real life is done via standard +ZCML setup): + + >>> from loops.tests.setup import TestSite + >>> t = TestSite(site) + >>> concepts, resources, views = t.setup() + + +Using the Lobo Blueprint-based Layout Views +=========================================== + + >>> from loops.browser.lobo.standard import Grid3, Single1 + + +Fin de partie +============= + + >>> placefulTearDown() + diff --git a/browser/lobo/configure.zcml b/browser/lobo/configure.zcml index 41db419..e89dca6 100644 --- a/browser/lobo/configure.zcml +++ b/browser/lobo/configure.zcml @@ -8,11 +8,19 @@ + + diff --git a/browser/lobo/standard.pt b/browser/lobo/standard.pt index a2e4765..26374ea 100644 --- a/browser/lobo/standard.pt +++ b/browser/lobo/standard.pt @@ -1,7 +1,7 @@ - +

diff --git a/browser/lobo/standard.py b/browser/lobo/standard.py index eee4254..80ad21f 100644 --- a/browser/lobo/standard.py +++ b/browser/lobo/standard.py @@ -34,33 +34,56 @@ from loops.common import adapted standard_template = ViewPageTemplateFile('standard.pt') -class Basic3Columns(ConceptView): +class Base(ConceptView): + + template = standard_template + templateName = 'lobo.standard' + macroName = 'basic' + imageSize = 'small' + height = 260 + gridPattern = ['span-2', 'span-2', 'span-2 last'] @Lazy - def standard_macros(self): - return self.controller.getTemplateMacros('lobo.standard', standard_template) + def macros(self): + return self.controller.getTemplateMacros(self.templateName, self.template) @property def macro(self): - return self.standard_macros['basic-image'] + return self.macros[self.macroName] def content(self): result = [] for idx, c in enumerate(self.context.getChildren([self.defaultPredicate])): - text = c.title - url = self.nodeView.getUrlForTarget(c) - # TODO: use layout settings of c for display - cssClass = 'span-2' - if idx % 3 == 2: - cssClass += ' last' - style = 'height: 260px' - result.append(dict(text=text, url=url, cssClass=cssClass, - style=style, img=self.getImageData(c), - object=adapted(c))) + result.append(self.setupItem(idx, c)) return result - def getImageData(self, concept): + def setupItem(self, idx, obj): + text = obj.title + url = self.nodeView.getUrlForTarget(obj) + # TODO: use layout settings of context and c for display + style = 'height: %ipx' % self.height + return dict(text=text, url=url, cssClass=self.getCssClass(idx, obj), + style=style, img=self.getImageData(idx, obj), + object=adapted(obj)) + + def getCssClass(self, idx, obj): + pattern = self.gridPattern + return pattern[idx % len(pattern)] + + def getImageData(self, idx, concept): for r in concept.getResources([self.defaultPredicate]): if r.contentType.startswith('image/'): - src = '%s/mediaasset.html?v=small' % self.nodeView.getUrlForTarget(r) + src = ('%s/mediaasset.html?v=%s' % + (self.nodeView.getUrlForTarget(r), self.imageSize)) return dict(src=src) + + +class Grid3(Base): + + pass + + +class Single1(Base): + + pass + diff --git a/browser/lobo/tests.py b/browser/lobo/tests.py new file mode 100755 index 0000000..c0a4e80 --- /dev/null +++ b/browser/lobo/tests.py @@ -0,0 +1,22 @@ +# $Id$ + +import unittest, doctest +from zope.testing.doctestunit import DocFileSuite +from zope.interface.verify import verifyClass + +class Test(unittest.TestCase): + "Basic tests for the browser.lobo sub-package." + + def testSomething(self): + pass + + +def test_suite(): + flags = doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS + return unittest.TestSuite(( + unittest.makeSuite(Test), + DocFileSuite('README.txt', optionflags=flags), + )) + +if __name__ == '__main__': + unittest.main(defaultTest='test_suite')