let layouts register themselves automatically as utilities upon creation
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3063 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
ff0078630a
commit
16d43f6f81
5 changed files with 21 additions and 84 deletions
|
@ -26,34 +26,11 @@ manager.
|
||||||
>>> manager = LayoutManager()
|
>>> manager = LayoutManager()
|
||||||
>>> component.provideUtility(manager)
|
>>> component.provideUtility(manager)
|
||||||
|
|
||||||
The layouts themselves are also specified as utilities.
|
The layouts themselves are also specified as utilities that are automatically
|
||||||
|
registered when we import the modules they are defined in.
|
||||||
|
|
||||||
>>> from cybertools.composer.layout.browser.default import page
|
>>> from cybertools.composer.layout.browser import default
|
||||||
>>> component.provideUtility(page, ILayout, name='page')
|
>>> from cybertools.composer.layout.browser.liquid import default
|
||||||
|
|
||||||
>>> from cybertools.composer.layout.browser.liquid.default import css
|
|
||||||
>>> component.provideUtility(css, ILayout, name='css.liquid')
|
|
||||||
|
|
||||||
>>> from cybertools.composer.layout.browser.liquid.default import body
|
|
||||||
>>> component.provideUtility(body, ILayout, name='body.liquid')
|
|
||||||
|
|
||||||
>>> from cybertools.composer.layout.browser.default import logo
|
|
||||||
>>> component.provideUtility(logo, ILayout, name='logo.default')
|
|
||||||
|
|
||||||
>>> from cybertools.composer.layout.browser.default import top_actions
|
|
||||||
>>> component.provideUtility(top_actions, ILayout, name='top_actions.default')
|
|
||||||
|
|
||||||
>>> from cybertools.composer.layout.browser.default import column1
|
|
||||||
>>> component.provideUtility(column1, ILayout, name='column1.default')
|
|
||||||
|
|
||||||
>>> from cybertools.composer.layout.browser.default import content
|
|
||||||
>>> component.provideUtility(content, ILayout, name='content.default')
|
|
||||||
|
|
||||||
>>> from cybertools.composer.layout.browser.default import column2
|
|
||||||
>>> component.provideUtility(column2, ILayout, name='column2.default')
|
|
||||||
|
|
||||||
>>> from cybertools.composer.layout.browser.default import footer
|
|
||||||
>>> component.provideUtility(footer, ILayout, name='footer.default')
|
|
||||||
|
|
||||||
In addition we have to provide at least one layout instance adapter that
|
In addition we have to provide at least one layout instance adapter that
|
||||||
connects a layout with the client object.
|
connects a layout with the client object.
|
||||||
|
|
|
@ -70,12 +70,12 @@ class Layout(Template):
|
||||||
self.regionName = regionName
|
self.regionName = regionName
|
||||||
for k, v in kw.items():
|
for k, v in kw.items():
|
||||||
setattr(self, k, v)
|
setattr(self, k, v)
|
||||||
#self.register()
|
self.register()
|
||||||
|
|
||||||
def register(self):
|
def register(self):
|
||||||
existing = component.queryUtility(ILayout, name=self.name)
|
existing = component.queryUtility(ILayout, name=self.name)
|
||||||
if existing:
|
if existing:
|
||||||
raise ValueError('Layout %s has already been registered.' % self.name)
|
raise ValueError("Layout '%s' has already been registered." % self.name)
|
||||||
component.provideUtility(self, provides=ILayout, name=self.name)
|
component.provideUtility(self, provides=ILayout, name=self.name)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,42 +7,11 @@
|
||||||
|
|
||||||
<browser:resourceDirectory name="default" directory="resources" />
|
<browser:resourceDirectory name="default" directory="resources" />
|
||||||
|
|
||||||
<!-- main layouts -->
|
<!-- layouts -->
|
||||||
|
|
||||||
<zope:utility
|
<zope:module module="cybertools.composer.layout.browser.default" />
|
||||||
component="cybertools.composer.layout.browser.default.page"
|
|
||||||
provides="cybertools.composer.layout.interfaces.ILayout"
|
|
||||||
name="page" />
|
|
||||||
|
|
||||||
<zope:utility
|
<!-- skin-specific layouts -->
|
||||||
component="cybertools.composer.layout.browser.default.logo"
|
|
||||||
provides="cybertools.composer.layout.interfaces.ILayout"
|
|
||||||
name="logo.default" />
|
|
||||||
|
|
||||||
<zope:utility
|
|
||||||
component="cybertools.composer.layout.browser.default.top_actions"
|
|
||||||
provides="cybertools.composer.layout.interfaces.ILayout"
|
|
||||||
name="column2.top_actions" />
|
|
||||||
|
|
||||||
<zope:utility
|
|
||||||
component="cybertools.composer.layout.browser.default.column1"
|
|
||||||
provides="cybertools.composer.layout.interfaces.ILayout"
|
|
||||||
name="column1.default" />
|
|
||||||
|
|
||||||
<zope:utility
|
|
||||||
component="cybertools.composer.layout.browser.default.content"
|
|
||||||
provides="cybertools.composer.layout.interfaces.ILayout"
|
|
||||||
name="content.default" />
|
|
||||||
|
|
||||||
<zope:utility
|
|
||||||
component="cybertools.composer.layout.browser.default.column2"
|
|
||||||
provides="cybertools.composer.layout.interfaces.ILayout"
|
|
||||||
name="column2.default" />
|
|
||||||
|
|
||||||
<zope:utility
|
|
||||||
component="cybertools.composer.layout.browser.default.footer"
|
|
||||||
provides="cybertools.composer.layout.interfaces.ILayout"
|
|
||||||
name="footer.default" />
|
|
||||||
|
|
||||||
<include package=".liquid" />
|
<include package=".liquid" />
|
||||||
|
|
||||||
|
|
|
@ -32,22 +32,19 @@ from cybertools.composer.layout.browser.standard import standardRenderers
|
||||||
defaultRenderers = RendererFactory(ViewPageTemplateFile('default.pt'))
|
defaultRenderers = RendererFactory(ViewPageTemplateFile('default.pt'))
|
||||||
|
|
||||||
|
|
||||||
page = Layout('page', 'page', renderer=standardRenderers['page'],
|
Layout('page', 'page', renderer=standardRenderers['page'],
|
||||||
sublayouts=set(['css.liquid', 'body.liquid']),
|
sublayouts=set(['css.liquid', 'body.liquid']),
|
||||||
favicon='default/favicon.png')
|
favicon='default/favicon.png')
|
||||||
|
|
||||||
logo = Layout('logo.default', 'body.logo', renderer=defaultRenderers.logo)
|
Layout('logo.default', 'body.logo', renderer=defaultRenderers.logo)
|
||||||
|
|
||||||
top_actions = Layout('top_actions.default', 'body.top_actions',
|
Layout('top_actions.default', 'body.top_actions',
|
||||||
renderer=defaultRenderers.top_actions)
|
renderer=defaultRenderers.top_actions)
|
||||||
|
|
||||||
column1 = Layout('column1.default', 'body.column1',
|
Layout('column1.default', 'body.column1', renderer=defaultRenderers.column1)
|
||||||
renderer=defaultRenderers.column1)
|
|
||||||
|
|
||||||
content = Layout('content.default', 'body.content',
|
Layout('content.default', 'body.content', renderer=defaultRenderers.content)
|
||||||
renderer=defaultRenderers.content)
|
|
||||||
|
|
||||||
column2 = Layout('column2.default', 'body.column2',
|
Layout('column2.default', 'body.column2', renderer=defaultRenderers.column2)
|
||||||
renderer=defaultRenderers.column2)
|
|
||||||
|
|
||||||
footer = Layout('footer.default', 'body.footer', renderer=defaultRenderers.footer)
|
Layout('footer.default', 'body.footer', renderer=defaultRenderers.footer)
|
||||||
|
|
|
@ -8,14 +8,8 @@
|
||||||
<browser:resource
|
<browser:resource
|
||||||
name="liquid.css" file="base.css" />
|
name="liquid.css" file="base.css" />
|
||||||
|
|
||||||
<zope:utility
|
<!-- layouts -->
|
||||||
component="cybertools.composer.layout.browser.liquid.default.css"
|
|
||||||
provides="cybertools.composer.layout.interfaces.ILayout"
|
|
||||||
name="css.liquid" />
|
|
||||||
|
|
||||||
<zope:utility
|
<zope:module module="cybertools.composer.layout.browser.liquid.default" />
|
||||||
component="cybertools.composer.layout.browser.liquid.default.body"
|
|
||||||
provides="cybertools.composer.layout.interfaces.ILayout"
|
|
||||||
name="body.liquid" />
|
|
||||||
|
|
||||||
</configure>
|
</configure>
|
||||||
|
|
Loading…
Add table
Reference in a new issue