provide generic base classes and templates

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3783 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2010-03-26 11:17:12 +00:00
parent 1b8d510d88
commit 26aa91568b
6 changed files with 89 additions and 13 deletions

3
z2/browser/__init__.py Normal file
View file

@ -0,0 +1,3 @@
"""
$Id$
"""

19
z2/browser/configure.zcml Normal file
View file

@ -0,0 +1,19 @@
<!-- $Id$ -->
<configure
xmlns:zope="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser">
<browser:page
name="index_html"
for="cybertools.util.generic.interfaces.IGeneric"
class="cybertools.z2.browser.view.GenericView"
permission="zope2.View" />
<browser:page
name="create.html"
for="cybertools.util.generic.interfaces.IGeneric"
class="cybertools.z2.browser.view.GenericAddForm"
permission="zope2.ManageProperties" />
</configure>

14
z2/browser/generic.pt Normal file
View file

@ -0,0 +1,14 @@
<tal:show condition="view/update">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"
metal:use-macro="view/getMainMacro">
<body>
<div metal:fill-slot="content">
<metal:content use-macro="view/getContentMacro" />
</div>
</body>
</html>
</tal:show>

View file

@ -1,5 +1,5 @@
#
# Copyright (c) 2009 Helmut Merz helmutm@cy55.de
# Copyright (c) 2010 Helmut Merz helmutm@cy55.de
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -22,12 +22,38 @@ Base classes for views.
$Id$
"""
from zope.app.pagetemplate import ViewPageTemplateFile
from zope.cachedescriptors.property import Lazy
from zope import component
from Products.Five import BrowserView
#from Products.Five.browser.pagetemplatefile import PageTemplateFile
class GenericView(BrowserView):
generic_page = ViewPageTemplateFile('generic.pt')
view_macros = ViewPageTemplateFile('view_macros.pt')
class BaseView(BrowserView):
index = generic_page
default_template = None # specify in subclass
def __call__(self):
return self.index(self)
def getMainMacro(self):
return view_macros.macros['main']
def getDefaultTemplate(self):
return self.default_template
def getContentMacro(self):
return self.getDefaultTemplate().macros[self.content_renderer]
# generic views for use with generic persistent objects with type-based adapters
class GenericView(BaseView):
name = 'index_html'

24
z2/browser/view_macros.pt Normal file
View file

@ -0,0 +1,24 @@
<metal:main define-macro="main">
<html>
<head>
</head>
<body>
<div>
<h1>Top Bar</h1>
</div>
<div>
<metal:content define-slot="content">Content</metal:content>
</div>
<div>
<p>Footer</p>
</div>
</body>
</html>
</metal:main>

View file

@ -14,16 +14,6 @@
<zope:adapter factory="cybertools.z2.base.BaseFolder"
provides="cybertools.util.generic.interfaces.IGenericFolder" />-->
<browser:page
name="index_html"
for="cybertools.util.generic.interfaces.IGeneric"
class="cybertools.z2.browser.GenericView"
permission="zope2.View" />
<browser:page
name="create.html"
for="cybertools.util.generic.interfaces.IGeneric"
class="cybertools.z2.browser.GenericAddForm"
permission="zope2.ManageProperties" />
<include package=".browser" />
</configure>