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.
|
||||
|
||||
>>> 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')
|
||||
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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"
|
||||
tal:define="layout view/context/template">
|
||||
<style type="text/css" media="all"
|
||||
|
|
|
@ -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 []
|
||||
|
|
Loading…
Add table
Reference in a new issue