clean-up of cybertools.browser

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@1136 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2006-03-24 13:21:20 +00:00
parent 65cf93e338
commit c84daaf067
26 changed files with 73 additions and 969 deletions

View file

@ -1,11 +1,8 @@
Use Content Providers and Viewlets for setting up web pages
===========================================================
Browser View Tools
==================
We first set up a test and working environment:
>>> from zope.app import zapi
>>> from zope.app.testing import ztapi
>>> from cybertools.browser.pageprovider import BaseView, PageProviderView
>>> from cybertools.browser.pageprovider import PageProvider

View file

@ -6,20 +6,13 @@
i18n_domain="zope"
>
<menu
id="mmain"
title="main Menu"
/>
<page name="controller" for="*"
class="cybertools.browser.controller.Controller"
permission="zope.Public"
/>
<menuItem
action="demo"
for="zope.interface.Interface"
menu="mmain"
title="Demo"
permission="zope.Public"
/>
<!-- a tableless layout skin -->
<include package=".skin" />
<include package=".liquid" />
</configure>

View file

@ -1,5 +1,5 @@
#
# Copyright (c) 2005 Helmut Merz helmutm@cy55.de
# Copyright (c) 2006 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
@ -17,13 +17,30 @@
#
"""
cybertools regions.
Controller for views, templates, macros.
$Id$
"""
from zope.viewlet.interfaces import IViewletManager
from zope.app import zapi
from zope.cachedescriptors.property import Lazy
class ILeft(IViewletManager):
""" Left slot.
"""
class Controller(object):
@Lazy
def macros(self):
return Macros(self)
class Macros(object):
def __init__(self, controller):
self.controller = controller
self.context = controller.context
self.request = controller.request
@Lazy
def css(self):
return 'Here comes the CSS stuff...'

View file

@ -7,7 +7,7 @@ from zope.app.testing.functional import FunctionalDocFileSuite
def test_suite():
flags = doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS
browser = FunctionalDocFileSuite('skin/cyberview.txt', optionflags=flags)
browser = FunctionalDocFileSuite('liquid.txt', optionflags=flags)
return unittest.TestSuite((browser,))
if __name__ == '__main__':

View file

@ -1,5 +1,5 @@
Using the CyberView Skin
========================
The Liquid Skin and Related Stuff
=================================
We first set up a test and working environment:
@ -14,10 +14,10 @@ We first set up a test and working environment:
We can now open a page using the CyberView skin:
>>> browser.addHeader('Accept-Language', 'en-US')
>>> browser.open('http://localhost/++skin++CyberView')
>>> browser.open('http://localhost/++skin++Liquid')
>>> print browser.headers
Status: 200 Ok...
>>> browser.url
'http://localhost/++skin++CyberView'
'http://localhost/++skin++Liquid'

View file

@ -2,3 +2,9 @@
$Id$
"""
from zope.publisher.interfaces.browser import IBrowserRequest
class liquid(IBrowserRequest):
"""The `liquid` layer."""

View file

@ -47,10 +47,3 @@ body {
#footer { border-bottom: none; }
/* cyberconcepts specialties */
.top {
background-image: url('bg_cyberview.gif');
height: 75px;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 B

View file

@ -6,7 +6,8 @@
i18n_domain="zope"
>
<layer name="liquid" />
<layer name="liquid"
interface="cybertools.browser.liquid.liquid" />
<skin name="Liquid"
layers="liquid rotterdam default" />
@ -16,16 +17,13 @@
permission="zope.View"
layer="liquid" />
<resource name="liquid.css" file="liquid4.css"
<resource name="base.css" file="base.css"
layer="liquid" />
<resource name="print.css" file="print.css"
layer="liquid" />
<resource name="cyberconcepts.gif" file="cyc-logo03.gif"
layer="liquid" />
<resource name="bg_cyberview.gif" file="bg_cyberview.gif"
<resource name="custom.css" file="custom.css"
layer="liquid" />
</configure>

View file

@ -0,0 +1,7 @@
/*
$Id$
Copy this to your custom skin directory and add custom settings.
*/

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

View file

@ -1,35 +1,40 @@
<metal:block define-macro="page"><metal:block define-slot="doctype"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></metal:block>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
i18n:domain="zope">
i18n:domain="zope"
tal:define="resourceBase view/resourceBase | string:${request/URL/0}/@@/">
<head metal:define-macro="head">
<title metal:define-slot="title"
tal:content="options/getTitle|view/getTitle|context/getTitle|default">
cyberconcepts IT-Consulting
tal:content="options/title|view/title|context/title|default">
Powered by Zope 3
</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css" media="all"
tal:content="string:@import url(${view/resourceBase}/zope3_tablelayout.css);">
tal:content="string:@import url(${resourceBase}zope3_tablelayout.css);">
@import url(zope3_tablelayout.css);
</style>
<metal:block metal:define-slot="headers">
<script type="text/javascript" src="zope3.js"
tal:attributes="src string:${view/resourceBase}/zope3.js" >
tal:attributes="src string:${resourceBase}zope3.js" >
</script>
<span metal:use-macro="context/@@standard_macros/navigation_tree_js" />
</metal:block>
<metal:block define-slot="style_slot" />
<style type="text/css" media="screen"
tal:content="string:@import url(${view/resourceBase}/liquid.css);">
@import url(liquid.css);
tal:content="string:@import url(${resourceBase}base.css);">
@import url(base.css);
</style>
<style type="text/css" media="all"
tal:content="string:@import url(${resourceBase}custom.css);">
@import url(custom.css);
</style>
<style type="text/css" media="print"
tal:content="string:@import url(${view/resourceBase}/print.css);">
tal:content="string:@import url(${resourceBase}print.css);">
@import url(print.css);
</style>
<metal:block define-slot="ecmascript_slot" />
<link rel="icon" type="image/png"
tal:attributes="href string:${view/resourceBase}/favicon.png" />
tal:attributes="href string:${resourceBase}favicon.png" />
</head>
<body tal:attributes="onload body_onload | nothing">
@ -38,9 +43,9 @@
<div class="top">
<a href="#" name="top" metal:define-slot="logo"
tal:attributes="href string:${request/URL/1}"><img
src="cyberconcepts.gif" height="75" border="0"
alt="cyberconcepts IT-Consulting"
tal:attributes="src string:${view/resourceBase}/cyberconcepts.gif" /></a>
src="logo.gif" border="0"
alt="Home"
tal:attributes="src string:${resourceBase}logo.gif" /></a>
</div>
</div>
<div id="menu">
@ -67,7 +72,8 @@
</a>
</tal:block>
</div>
<!--<tal:test content="views/controller/macros/css" />-->
<metal:content define-slot="body">Here comes the body</metal:content>
</div>
@ -77,9 +83,8 @@
</div>
<div id="footer" class="footer">
&copy; Copyright 2006, cyberconcepts IT-Consulting Dr. Helmut Merz<br />
<a href="#"
tal:attributes="href string:${view/menu/url}/impressum">Impressum</a>
Powered by <b><a href="http://www.python.org">Python</a></b> &middot;
<b><a href="http://www.zope.org/DevHome/Wikis/DevSite/Projects/ComponentArchitecture/FrontPage">Zope 3</a></b>
<metal:footer define-slot="footer"></metal:footer>
</div>

View file

@ -1,53 +0,0 @@
#
# Copyright (c) 2005 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
"""
cybertools menu.
$Id$
"""
from zope.app import zapi
from zope.app.pagetemplate.simpleviewclass import simple
from zope.viewlet.viewlet import ViewletBase, SimpleViewletClass
from zope.app.publisher.interfaces.browser import IBrowserMenu
class MenuViewlet(ViewletBase):
""" Menu viewlet.
"""
def getMenu(self):
menu = zapi.getUtility(IBrowserMenu, name='mmain')
return menu
def GenericMenuViewlet(template, offering=None, bases=(), name=u'', weight=0):
#return SimpleViewletClass(template, offering,
# bases + (MenuViewletBase,), name, weight)
if offering is None:
offering = sys._getframe(1).f_globals
bases += (MenuViewletBase, simple)
class_ = type("GenericMenuViewlet from %s" % template, bases,
{'index' : ViewletPageTemplateFile(template, offering),
'_weight' : weight,
'__name__' : name})
return class_

View file

@ -1,79 +0,0 @@
#
# Copyright (c) 2005 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
"""
This is intended to replace the page macro - we just use a view that renders
a standard template (main.pt). This calls a set of viewlet managers that
do the real work.
$Id$
"""
from zope.interface import implements
import zope.component
from zope.app.publisher.interfaces.browser import IBrowserView
from zope.app.publisher.browser import BrowserView
from zope.contentprovider.interfaces import IContentProvider
from zope.viewlet.manager import ViewletManagerBase
class BaseView(object):
""" Basic view class using a template and possibly doing some other
setup stuff.
"""
implements(IBrowserView)
def __call__(self):
# render the template associated with this view:
return self.index()
class PageProviderView(object):
""" Simple view class using a content provider for setting up a page.
"""
implements(IBrowserView)
def __call__(self):
context = self.context
request = self.request
name = 'cybertools.pageprovider'
provider = zope.component.queryMultiAdapter(
(context, request, self), IContentProvider, name)
provider.update()
return provider.render()
class PageProvider(ViewletManagerBase):
""" Simple implementation that provides a whole page.
"""
implements(IContentProvider)
def __init__(self, context, request, view):
self.context = context
self. request = request
self.view = view
self.__parent__ = view
def update(self):
return ViewletManagerBase.update(self)
def render(self):
return ViewletManagerBase.render(self)

View file

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 B

View file

@ -1,90 +0,0 @@
<!-- $Id$ -->
<configure
xmlns:zope="http://namespaces.zope.org/zope"
xmlns="http://namespaces.zope.org/browser"
i18n_domain="zope"
>
<layer name="cyberview" />
<skin name="CyberView"
layers="cyberview
zope.app.zopetop.css
zope.app.zopetop.images
zope.app.zopetop.templates
rotterdam default" />
<!--<page for="*"
name="view_macros" template="view_macros.pt"
permission="zope.View"
layer="cyberview" />-->
<view for="*"
name="default.html"
class="cybertools.browser.pageprovider.PageProviderView"
permission="zope.View"
layer="cyberview"
/>
<defaultView
for="*"
name="default.html"
layer="cyberview"
/>
<resource name="cyberview.css" file="cyberview.css"
layer="cyberview" />
<resource name="cyberconcepts.png" image="cyc-logo02.png"
layer="cyberview" />
<resource name="cyberconcepts.gif" image="cyc-logo03.gif"
layer="cyberview" />
<resource name="bg_cyberview.gif" image="bg_cyberview.gif"
layer="cyberview" />
<viewletManager
name="cybertools.pageprovider"
provides="zope.contentprovider.interfaces.IContentProvider"
class="cybertools.browser.pageprovider.PageProvider"
template="main.pt"
permission="zope.Public"
layer="cyberview"
/>
<viewletManager
name="cybertools.body"
provides="cybertools.browser.IBody"
permission="zope.Public"
layer="cyberview"
/>
<viewlet
name="body"
manager="cybertools.browser.IBody"
template="index.pt"
class="zope.app.container.browser.contents.Contents"
permission="zope.Public"
layer="cyberview"
/>
<viewletManager
name="cybertools.left"
provides="cybertools.browser.ILeft"
template="left_slot.pt"
permission="zope.Public"
layer="cyberview"
/>
<viewlet
name="navmenu"
manager="cybertools.browser.ILeft"
template="viewlet_menu.pt"
class="cybertools.browser.menu.MenuViewlet"
permission="zope.Public"
layer="cyberview"
/>
</configure>

View file

@ -1,523 +0,0 @@
/*****************************************************************************
*
* Copyright (c) 2001, 2002 Zope Corporation and Contributors.
* All Rights Reserved.
*
* This software is subject to the provisions of the Zope Public License,
* Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
* WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
* FOR A PARTICULAR PURPOSE.
*
*****************************************************************************
These are the basic CSS declarations.
$Id$
*/
/* Start CSS for fluid multi-column form layout */
div.row {
float: left;
clear: none;
padding: 0.5em;
}
div.separator {
clear: both;
}
div.controls {
float:left;
clear: both;
}
/* End CSS for fluid multi-column form layout */
div.label {
font-weight: bold;
}
div.field {
margin: 4px 0;
}
div.required:after{
content: " *";
}
body {
font: 0.8em Tahoma, Helvetica, Arial, sans-serif;
background-color: white;
color: #000066;
margin: 0;
padding: 0;
}
#drag-feedback-box {
border: 1px dotted black;
position: absolute;
display: none;
z-index: 1000;
}
div.top {
background-image: url('bg_cyberview.gif');
height: 75px;
}
div.top div.user {
position: absolute;
top: 1em;
right: 1em;
color: white;
}
a {
text-decoration: none;
color: #000066;
background-color: transparent;
}
table {
font: 1em Tahoma, Helvetica, Arial, sans-serif;
}
img {
/* turn off image borders. */
border: none;
}
p {
/* Default paragraph style*/
font: 1em Tahoma, Helvetica, Arial, sans-serif;
margin: 1em 0em;
text-align: left;
}
p a {
text-decoration: underline;
}
p a:visited {
color: Purple;
background-color: transparent;
}
p a:active {
color: Red;
background-color: transparent;
}
p img {
border: 1px solid Black;
margin: 1em;
}
hr {
clear: both;
height: 1px;
color: #8CACBB;
background-color: transparent;
}
h1, h2, h3, h4, h5, h6 {
color: Black;
padding: 0 0;
margin: .5em 0;
font-family: Tahoma, Helvetica, Arial, sans-serif;
}
h1 {
font-size: 1.8em;
}
h2 {
font-size: 1.6em;
}
h3 {
font-size: 1.4em;
}
h4 {
font-size: 1.2em;
}
h5 {
font-size: 1.1em;
}
h6 {
font-size: 1.0em;
}
ul {
/* list-style-image: url("bullet.gif"); */
margin-top: 1em;
margin-bottom: 1em;
margin-left: 2em;
padding:0;
}
/* we advise you to use the div.group and span.legend elements instead of
these, as the only browser showing legends correctly is IE. They are just
included here for completeness */
fieldset {
border: 1px solid #8cacbb;
margin: 2em 0em 1em 0em;
padding: 1em 0em;
}
legend {
background: White;
padding: 0.5em;
}
form {
border: none;
}
textarea {
/* Small cosmetic hack which makes textarea gadgets look nicer.*/
font: bold 1em Tahoma, Helvetica, Arial, sans-serif;
border: 1px solid #8cacbb;
width: 100%;
color: Black;
background-color: white;
}
input {
/* Small cosmetic fix which makes input gadgets look nicer. */
font: 1em Tahoma, Helvetica, Arial, sans-serif;
color: Black;
margin: 1px 1px 1px 1px;
}
select {
font: 1em Tahoma, Helvetica, Arial, sans-serif;
margin: 1px 1px 1px 1px;
}
abbr, acronym, .explain {
/* Help classes */
border-bottom: 1px dotted Black;
background-color: transparent;
cursor: help;
}
code {
font-size: 1.2em;
color: Black;
background-color: #dee7ec;
}
pre {
font-size: 1.2em;
padding: 1em;
border: 1px solid #8cacbb;
color: Black;
background-color: #dee7ec;
}
.netscape4 {
/* This hides elements necessary for getting Netscape 4.x to look better.
Mostly strategically placed hr tags and &middot;'s */
display: none;
}
table.listing {
/* The default table for document listings. Contains name, document types, modification times etc in a file-browser-like fashion */
border-collapse: collapse;
border-left: 1px solid #7B7AC6;
border-bottom: 1px solid #7B7AC6;
margin: 1em 0em 1em 0em;
}
table.listing th {
background: #A1A1F1;
border-top: 1px solid #7B7AC6;
border-bottom: 1px solid #7B7AC6;
border-right: 1px solid #7B7AC6;
color: #000000;
font-weight: normal;
padding: 0em 1em 0em 1em;
}
table.listing tr.odd {
/*every second line should be shaded */
background: transparent;
}
table.listing tr.even {
background: #ECFAFF;
}
table.listing td {
border-right: 1px solid #7B7AC6;
padding: 0.1em 0.4em 0.1em 0.4em;
}
table.listing a:hover {
text-decoration: underline;
}
table.listing img{
vertical-align: middle;
}
table.columns {
width: 100%;
padding: 0;
margin: 0;
border-collapse: collapse;
}
table.columns td{
vertical-align: top;
}
table.columns td.main {
background-color: white;
padding: 0 0.5em;
//border-bottom: 1px solid #7B7AC6;
}
table.columns td.left {
background-color: #eeeeee;
//border-right: 1px solid #7B7AC6;
//border-bottom: 1px solid #7B7AC6;
padding: 0.5em 0;
width: 114px;
}
table.columns td.right {
background-color: white;
border-left: 1px solid #7B7AC6;
border-bottom: 1px solid #7B7AC6;
width: 20%;
}
div.breadcrumbs{
background-color: white;
margin-top: 0em;
padding: 0 0.5em 0.5em 0.5em;
}
span.help img{
vertical-align: middle;
padding: 0;
margin: 0;
}
div.box {
border: none;
margin: 0.5em 0.5em 0em 0.5em;
padding: 0;
}
div.box h4 {
font-size: 1em;
}
div.box h5 {
background: #E5E5E5;
border: 1px solid #A3A3A3;
border-style: solid solid none solid;
color: #808080;
padding: 0em 1em 0em 1em;
text-transform: lowercase;
display: inline;
font-size: 1em;
height: 1em;
}
div.box h6 {
background: #E5E5E5;
border: 1px solid #A3A3A3;
border-style: solid solid none solid;
color: #808080;
padding: 0em 1em 0em 1em;
text-transform: lowercase;
display: block;
font-size: 1em;
height: 1.2em;
}
div.box div.body {
background: transparent;
border-collapse: collapse;
border: 1px solid #A3A3A3;
}
div.box .content {
padding-left: 0.6em;
padding-right: 0.6em;
padding-top: 0.4em;
padding-bottom: 0.4em;
}
div.box .even {
background-color: white;
}
div.box .odd {
background-color: White;
}
.darker {
background-color: #7B7AC6;
}
.hilite {
background: #FFFFFF;
}
.background {
border-bottom: 1px solid #7B7AC6;
}
.description {
/* The summary text describing the document */
font: bold 1em Tahoma, Helvetica, Arial, sans-serif;
display: block;
margin-bottom: 1em;
}
.footer {
background-color: #eeeeee;
padding: 0.5em;
text-align: center;
}
div.metadata {
font-size: 0.9em;
text-align: right;
}
.context-menu {
position: absolute;
border: 1px outset;
background-color: Menu;
color: MenuText;
cursor: default;
z-index: 1000;
visibility: hidden;
display: table;
}
.context-menu-item {
padding-left: 10px;
padding-right: 10px;
padding-top: 2px;
padding-bottom: 2px;
}
.drop-target {
border: 2px solid transparent;
visibility: hidden;
}
#navtreecontents a {
cursor: pointer;
}
#navtreecontents loading {
display: block;
padding-left: 31px;
height: 20px;
}
#navtreecontents expand {
background-repeat: no-repeat;
padding-left: 14px;
display: inline;
cursor: pointer;
padding-bottom: 0.2em;
padding-top: 0.2em;
}
#navtreecontents icon {
background-repeat: no-repeat;
padding-left: 20px;
display: inline;
cursor: auto;
padding-bottom: 0.2em;
padding-top: 0.2em;
}
#navtreecontents collection {
display: block;
margin-left: 10px;
/* border: red solid 1pt; */
height: auto;
padding-bottom: 0em;
padding-top: 0.4em;
}
.preclass {
font-family : monospace;
white-space : pre;
}
th.introspector {
vertical-align: top;
text-align: right;
}
.itemViews {
border-collapse: collapse;
padding-bottom: 2px;
padding-top: 6px;
margin-top: 0.5em;
white-space: nowrap;
background: transparent;
text-align: right;
}
.itemViews a {
background: transparent;
border: 1px solid #ccccff;
color: #000066;
font-weight: normal;
margin-right: 0.3em;
padding: 0.1em 0.5em 0.1em 0.5em;
}
.itemViews a.selected {
background-color: #CCCCFF;
border-bottom: #CCCCFF 1px solid;
color: #000066;
font-weight: normal;
}
.itemViews a:hover {
background-color: #CCCCFF;
color: #000066;
}
.actions {
background-color: #CCCCFF;
text-align: right;
padding-top: 0.3em;
color: Black;
border-collapse: collapse;
}
.actions a{
color: #000066;
border-left: 1px dashed #000066;
padding: 0 0.5em;
}
.actions a:hover {
background-color: White;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

View file

@ -1,44 +0,0 @@
<table
id="sortable" class="listing" summary="Content listing"
cellpadding="2" cellspacing="0"
i18n:attributes="summary">
<thead>
<tr>
<th>&nbsp;</th>
<th i18n:translate="">Name</th>
<th i18n:translate="">Title</th>
<th i18n:translate="">Created</th>
<th i18n:translate="">Modified</th>
</tr>
</thead>
<tbody>
<tr tal:repeat="info view/listContentInfo">
<td>
<a
href="#"
tal:attributes="href string:${request/URL}/${info/url}"
tal:content="structure info/icon|default" />
</td>
<td class="ContentTitle">
<a href="subfolder_id"
tal:attributes="href info/url"
tal:content="info/id"
i18n:translate=""
>ID here</a>
</td>
<td><span tal:content="info/title|default"
i18n:translate="">&nbsp;</span></td>
<td><span tal:content="info/created|default"
i18n:translate="">&nbsp;</span></td>
<td><span tal:content="info/modified|default"
i18n:translate="">&nbsp;</span></td>
</tr>
</tbody>
</table>

View file

@ -1,7 +0,0 @@
<div>
Headline
</div>
<div tal:repeat="viewlet options/viewlets">
<div tal:content="structure python: viewlet(viewlet=viewlet)">Left Slot
</div>
</div>

View file

@ -1,53 +0,0 @@
<metal:block define-macro="page"><metal:block define-slot="doctype"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></metal:block>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
i18n:domain="zope">
<head metal:define-macro="head">
<title metal:define-slot="title"
tal:content="options/getTitle|view/getTitle|context/getTitle|default">
cyberconcepts IT-Consulting
</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="cyberview.css" rel="stylesheet" type="text/css"
tal:attributes="href context/++resource++cyberview.css" />
</head>
<body>
<div class="top">
<a href="#" name="top" tal:attributes="href string:${request/URL/1}">
<img src="cyberconcepts.gif" height="75"
alt="cyberconcepts IT-Consulting"
tal:attributes="src context/++resource++cyberconcepts.gif" />
</a>
<span metal:use-macro="context/@@standard_macros/logged_user">
Logged in as user
</span>
</div>
<table class="columns">
<tr>
<td class="left">
<!--
<span metal:use-macro="context/@@standard_macros/commontasks_box" />
<span metal:use-macro="context/@@standard_macros/metadata_box" />
<span metal:use-macro="context/@@standard_macros/views_box" />
<span metal:use-macro="context/@@standard_macros/actions_box" />
-->
<div tal:replace="structure provider:cybertools.left" />
</td>
<td class="main">
<!--
<span metal:use-macro="context/@@standard_macros/zmi_views" />
<span metal:use-macro="context/@@standard_macros/zmi_actions" />
<span metal:use-macro="context/@@standard_macros/content_header_bar" />
-->
<div tal:replace="structure provider:cybertools.body" />
</td>
</tr>
</table>
<!--
<span metal:use-macro="context/@@standard_macros/footer" />
-->
</body>
</html>
</metal:block>

View file

@ -1,2 +0,0 @@
<div tal:define="menu options/viewlet/getMenu"
tal:content="python: menu.getMenuItems(context, request)" />

View file

@ -1,55 +0,0 @@
<metal:block define-macro="page"><metal:block define-slot="doctype"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></metal:block>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
i18n:domain="zope">
<head metal:define-macro="head">
<title metal:define-slot="title"
tal:content="options/getTitle|view/getTitle|context/getTitle|default">
cyberconcepts IT-Consulting
</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="cyberview.css" rel="stylesheet" type="text/css"
tal:attributes="href context/++resource++cyberview.css" />
<div metal:define-slot="headers" />
</head>
<body>
<div class="top">
<a href="#" name="top" tal:attributes="href string:${request/URL/1}/@@manage">
<img src="cyberconcepts.gif" height="75"
alt="cyberconcepts IT-Consulting"
tal:attributes="src context/++resource++cyberconcepts.gif" />
</a>
<span metal:use-macro="context/@@standard_macros/logged_user">
Logged in as user
</span>
</div>
<table class="columns">
<tr>
<td class="left">
<!--
<span metal:use-macro="context/@@standard_macros/commontasks_box" />
<span metal:use-macro="context/@@standard_macros/metadata_box" />
<span metal:use-macro="context/@@standard_macros/views_box" />
<span metal:use-macro="context/@@standard_macros/actions_box" />
-->
<div tal:replace="structure provider:navMenu" />
</td>
<td class="main">
<!--
<span metal:use-macro="context/@@standard_macros/zmi_views" />
<span metal:use-macro="context/@@standard_macros/zmi_actions" />
<span metal:use-macro="context/@@standard_macros/content_header_bar" />
-->
<span metal:define-slot="body">Here comes the body</span>
<!--<p tal:content="provider:cybertools.pageprovider" />-->
</td>
</tr>
</table>
<!--
<span metal:use-macro="context/@@standard_macros/footer" />
-->
</body>
</html>
</metal:block>

View file

@ -1,2 +0,0 @@
<div tal:define="menu options/viewlet/getMenu"
tal:content="python: menu.getMenuItems(context, request)" />