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:
helmutm 2008-09-23 07:19:03 +00:00
parent 7d83c0dbeb
commit d4f355c2c9
7 changed files with 45 additions and 39 deletions

View file

@ -28,6 +28,9 @@ manager.
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
>>> component.provideUtility(css, ILayout, name='css.liquid')

View file

@ -59,7 +59,8 @@ class Layout(Template):
title = description = u''
category = 'default'
renderer = None
order = 0
order = 50
sublayouts = None
def __init__(self, name, regionName, **kw):
self.name = name
@ -84,5 +85,6 @@ class LayoutInstance(object):
def getLayouts(self, region):
if region is None:
return []
return region.layouts
sublayouts = self.template.sublayouts
return [l for l in region.layouts
if sublayouts is None or l.name in sublayouts]

View file

@ -5,6 +5,11 @@
xmlns:browser="http://namespaces.zope.org/browser"
i18n_domain="cybertools.composer">
<zope:utility
component="cybertools.composer.layout.browser.default.page"
provides="cybertools.composer.layout.interfaces.ILayout"
name="page" />
<zope:utility
component="cybertools.composer.layout.browser.default.logo"
provides="cybertools.composer.layout.interfaces.ILayout"

View file

@ -25,11 +25,15 @@ $Id$
from zope.app.pagetemplate import ViewPageTemplateFile
from cybertools.composer.layout.base import Layout
from cybertools.composer.layout.browser.standard import standardRenderers
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'])
top_actions = Layout('top_actions.default', 'body.top_actions',

View file

@ -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>

View file

@ -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"
tal:define="layout view/context/template">
<style type="text/css" media="all"

View file

@ -28,7 +28,8 @@ from zope.cachedescriptors.property import Lazy
from zope.app.pagetemplate import ViewPageTemplateFile
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):
@ -54,15 +55,14 @@ class BaseView(object):
class Page(BaseView):
macroName = 'page'
layoutName = 'page'
@Lazy
def rootView(self):
return self
def __call__(self):
layout = Layout('page', 'page')
layout.renderer = ViewPageTemplateFile('main.pt').macros[self.macroName]
layout = component.getUtility(ILayout, name=self.layoutName)
instance = ILayoutInstance(self.context)
instance.template = layout
view = LayoutView(instance, self.request, name='page',
@ -124,13 +124,3 @@ class ViewLayouts(object):
instance.view = v
subviews.append(v)
return subviews
class ViewResources(object):
def __init__(self, view):
self.view = view
def __getitem__(self, key):
# TODO...
return []