work in progress: layout management
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2899 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
7d83c0dbeb
commit
d4f355c2c9
7 changed files with 45 additions and 39 deletions
|
@ -28,6 +28,9 @@ manager.
|
||||||
|
|
||||||
The layouts themselves are also specified as utilities.
|
The layouts themselves are also specified as utilities.
|
||||||
|
|
||||||
|
>>> from cybertools.composer.layout.browser.default import page
|
||||||
|
>>> component.provideUtility(page, ILayout, name='page')
|
||||||
|
|
||||||
>>> from cybertools.composer.layout.browser.liquid.default import css
|
>>> from cybertools.composer.layout.browser.liquid.default import css
|
||||||
>>> component.provideUtility(css, ILayout, name='css.liquid')
|
>>> component.provideUtility(css, ILayout, name='css.liquid')
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,8 @@ class Layout(Template):
|
||||||
title = description = u''
|
title = description = u''
|
||||||
category = 'default'
|
category = 'default'
|
||||||
renderer = None
|
renderer = None
|
||||||
order = 0
|
order = 50
|
||||||
|
sublayouts = None
|
||||||
|
|
||||||
def __init__(self, name, regionName, **kw):
|
def __init__(self, name, regionName, **kw):
|
||||||
self.name = name
|
self.name = name
|
||||||
|
@ -84,5 +85,6 @@ class LayoutInstance(object):
|
||||||
def getLayouts(self, region):
|
def getLayouts(self, region):
|
||||||
if region is None:
|
if region is None:
|
||||||
return []
|
return []
|
||||||
return region.layouts
|
sublayouts = self.template.sublayouts
|
||||||
|
return [l for l in region.layouts
|
||||||
|
if sublayouts is None or l.name in sublayouts]
|
||||||
|
|
|
@ -5,6 +5,11 @@
|
||||||
xmlns:browser="http://namespaces.zope.org/browser"
|
xmlns:browser="http://namespaces.zope.org/browser"
|
||||||
i18n_domain="cybertools.composer">
|
i18n_domain="cybertools.composer">
|
||||||
|
|
||||||
|
<zope:utility
|
||||||
|
component="cybertools.composer.layout.browser.default.page"
|
||||||
|
provides="cybertools.composer.layout.interfaces.ILayout"
|
||||||
|
name="page" />
|
||||||
|
|
||||||
<zope:utility
|
<zope:utility
|
||||||
component="cybertools.composer.layout.browser.default.logo"
|
component="cybertools.composer.layout.browser.default.logo"
|
||||||
provides="cybertools.composer.layout.interfaces.ILayout"
|
provides="cybertools.composer.layout.interfaces.ILayout"
|
||||||
|
|
|
@ -25,11 +25,15 @@ $Id$
|
||||||
from zope.app.pagetemplate import ViewPageTemplateFile
|
from zope.app.pagetemplate import ViewPageTemplateFile
|
||||||
|
|
||||||
from cybertools.composer.layout.base import Layout
|
from cybertools.composer.layout.base import Layout
|
||||||
|
from cybertools.composer.layout.browser.standard import standardRenderers
|
||||||
|
|
||||||
|
|
||||||
defaultRenderers = ViewPageTemplateFile('default.pt').macros
|
defaultRenderers = ViewPageTemplateFile('default.pt').macros
|
||||||
|
|
||||||
|
|
||||||
|
page = Layout('page', 'page', renderer=standardRenderers['page'],
|
||||||
|
sublayouts=set(['css.liquid', 'body.liquid']))
|
||||||
|
|
||||||
logo = Layout('logo.default', 'body.logo', renderer=defaultRenderers['logo'])
|
logo = Layout('logo.default', 'body.logo', renderer=defaultRenderers['logo'])
|
||||||
|
|
||||||
top_actions = Layout('top_actions.default', 'body.top_actions',
|
top_actions = Layout('top_actions.default', 'body.top_actions',
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
<metal:page define-macro="page"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
|
|
||||||
tal:define="body view/body">
|
|
||||||
|
|
||||||
<head metal:define-macro="head">
|
|
||||||
<title metal:define-macro="title"
|
|
||||||
tal:content="options/title|view/headTitle|context/title|default">
|
|
||||||
Powered by Zope 3
|
|
||||||
</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|
||||||
|
|
||||||
<tal:css repeat="view view/layouts/css">
|
|
||||||
<metal:css use-macro="view/renderer" />
|
|
||||||
</tal:css>
|
|
||||||
|
|
||||||
<base href="." tal:attributes="href request/URL">
|
|
||||||
</head>
|
|
||||||
<body tal:replace="structure body" />
|
|
||||||
|
|
||||||
</html>
|
|
||||||
|
|
||||||
</metal:page>
|
|
|
@ -1,3 +1,27 @@
|
||||||
|
<metal:page define-macro="page"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
|
||||||
|
tal:define="body view/body">
|
||||||
|
|
||||||
|
<head metal:define-macro="head">
|
||||||
|
<title metal:define-macro="title"
|
||||||
|
tal:content="options/title|view/headTitle|context/title|default">
|
||||||
|
Powered by Zope 3
|
||||||
|
</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
|
|
||||||
|
<tal:css repeat="view view/layouts/css">
|
||||||
|
<metal:css use-macro="view/renderer" />
|
||||||
|
</tal:css>
|
||||||
|
|
||||||
|
<base href="." tal:attributes="href request/URL">
|
||||||
|
</head>
|
||||||
|
<body tal:replace="structure body" />
|
||||||
|
|
||||||
|
</html>
|
||||||
|
|
||||||
|
</metal:page>
|
||||||
|
|
||||||
|
|
||||||
<metal:css define-macro="css"
|
<metal:css define-macro="css"
|
||||||
tal:define="layout view/context/template">
|
tal:define="layout view/context/template">
|
||||||
<style type="text/css" media="all"
|
<style type="text/css" media="all"
|
||||||
|
|
|
@ -28,7 +28,8 @@ from zope.cachedescriptors.property import Lazy
|
||||||
from zope.app.pagetemplate import ViewPageTemplateFile
|
from zope.app.pagetemplate import ViewPageTemplateFile
|
||||||
|
|
||||||
from cybertools.composer.layout.base import Layout
|
from cybertools.composer.layout.base import Layout
|
||||||
from cybertools.composer.layout.interfaces import ILayoutManager, ILayoutInstance
|
from cybertools.composer.layout.interfaces import ILayoutManager
|
||||||
|
from cybertools.composer.layout.interfaces import ILayout, ILayoutInstance
|
||||||
|
|
||||||
|
|
||||||
class BaseView(object):
|
class BaseView(object):
|
||||||
|
@ -54,15 +55,14 @@ class BaseView(object):
|
||||||
|
|
||||||
class Page(BaseView):
|
class Page(BaseView):
|
||||||
|
|
||||||
macroName = 'page'
|
layoutName = 'page'
|
||||||
|
|
||||||
@Lazy
|
@Lazy
|
||||||
def rootView(self):
|
def rootView(self):
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def __call__(self):
|
def __call__(self):
|
||||||
layout = Layout('page', 'page')
|
layout = component.getUtility(ILayout, name=self.layoutName)
|
||||||
layout.renderer = ViewPageTemplateFile('main.pt').macros[self.macroName]
|
|
||||||
instance = ILayoutInstance(self.context)
|
instance = ILayoutInstance(self.context)
|
||||||
instance.template = layout
|
instance.template = layout
|
||||||
view = LayoutView(instance, self.request, name='page',
|
view = LayoutView(instance, self.request, name='page',
|
||||||
|
@ -124,13 +124,3 @@ class ViewLayouts(object):
|
||||||
instance.view = v
|
instance.view = v
|
||||||
subviews.append(v)
|
subviews.append(v)
|
||||||
return subviews
|
return subviews
|
||||||
|
|
||||||
|
|
||||||
class ViewResources(object):
|
|
||||||
|
|
||||||
def __init__(self, view):
|
|
||||||
self.view = view
|
|
||||||
|
|
||||||
def __getitem__(self, key):
|
|
||||||
# TODO...
|
|
||||||
return []
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue