I am trying to follow Martin Aspelli's book examples, but I had problems
with the first unit test example (from page 74).
Here is my steps:
1 - Installed Zope 2.11.1 from the Windows installer -> got a Zope dir with
Zope and Python installs.
2 - easy_installed ZopeSkel to that Python install
3 - installed PIL with the installer I got from
http://www.pythonware.com/products/pil/
4 - pastered a plone3_buildout template in Plone3 folder inside the Zope
main dir.
5 - bootstraped the buildout
6 - Modified buildout.cfg to include references to optilux.policy package
7 - Created src/optilux.policy dir and files according to the book example
8 - Ran bin\buildout
9 - Started Zope, created a Plone Site at the Zope root, then stopped Zope
10 - Tried "bin\instance test -s optilux.policy", and got the following
error message:
D:\Zope\2.11.1\Plone3>bin\instance test -s optilux.policy
Running tests at level 1
Test-module import failures:
Module: optilux.policy.tests
AttributeError: 'module' object has no attribute 'test_suite'
Module: optilux.policy.tests.test_setup
Traceback (most recent call last):
File "d:\plone3\src\optilux.policy\optilux\policy\tests\test_setup.py",
line 2
, in ?
File
"d:\zope\2.11.1\plone3\src\optilux.policy\optilux\policy\tests\base.py",
line 36
class OptiluxPolicyTestCase(ptc.PloneTestCase):
^
SyntaxError: invalid syntax
Total: 0 tests, 0 failures, 0 errors in 0.000 seconds.
Test-modules with import problems:
optilux.policy.tests
optilux.policy.tests.test_setup
D:\Zope\2.11.1\Plone3>
Does anyone have a guess on why I get this errors?
Best regards,
Alberto
--
View this message in context: http://n2.nabble.com/Help-with-Martin%27s-book-example-tp1668590p1668590.html
Sent from the General Questions mailing list archive at Nabble.com.
------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you. Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
Plone-Users mailing list
Plone...@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plone-users
> class OptiluxPolicyTestCase(ptc.PloneTestCase):
> ^
> SyntaxError: invalid syntax
Reading tracebacks helps. This tells that you're having a syntax error
(likely a typo or something). Unless you provide the _exact_ code as it
is on your filesystem, we can't help.
-aj
def initialize(context):
pass
at its beginning
hth
robert
Alberto Lopes schrieb:
Shame on me. I thought it was something a little more esoteric - I got so
focused on the "AttributeError: 'module' object has no attribute
'test_suite'" message that I haven't noticed the SyntaxError.
I checked and double-checked my code, but I should've triple-checked it: my
code had
ptc.setupPloneSite(products=['optilux.policy']
instead of
ptc.setupPloneSite(products=['optilux.policy'])
But anyway, I am still getting the AttributeError message. I even created
the properties.xml file. Do you know why I am getting it?
Also, I am getting a lot of DeprecationWarnings... Is there a way to tell
instance.exe not to display them?
Thank you,
Alberto
Here is my "current" test output:
Running tests at level 1
Test-module import failures:
Module: optilux.policy.tests
AttributeError: 'module' object has no attribute 'test_suite'
Running Products.PloneTestCase.layer.PloneSite tests:
Set up
Testing.ZopeTestCase.layer.ZopeLiteD:\Zope\2.11.1\Plone3\parts\plone\Ge
nericSetup\registry.py:744: DeprecationWarning: Version for profile
PluggableAut
hService:simple taken from version.txt. This is deprecated behaviour and
will be
removed in GenericSetup 1.5: please specify the version in metadata.xml.
DeprecationWarning)
D:\Zope\2.11.1\Plone3\parts\plone\GenericSetup\registry.py:744:
DeprecationWarni
ng: Version for profile PluggableAuthService:empty taken from version.txt.
This
is deprecated behaviour and will be removed in GenericSetup 1.5: please
specify
the version in metadata.xml.
DeprecationWarning)
in 3.141 seconds.
Set up
Products.PloneTestCase.layer.ZCMLD:\Zope\2.11.1\Zope\lib\python\zope\co
nfiguration\xmlconfig.py:331: DeprecationWarning: zope.app.annotation has
moved
to zope.annotation. Import of zope.app.annotation will become unsupported in
Zop
e 3.5
__import__(arguments[0])
D:\Zope\2.11.1\Plone3\parts\plone\GenericSetup\registry.py:744:
DeprecationWarni
ng: Version for profile Products.CMFActionIcons:actionicons taken from
version.t
xt. This is deprecated behaviour and will be removed in GenericSetup 1.5:
please
specify the version in metadata.xml.
DeprecationWarning)
D:\Zope\2.11.1\Plone3\parts\plone\GenericSetup\registry.py:744:
DeprecationWarni
ng: Version for profile Products.CMFCalendar:default taken from version.txt.
Thi
s is deprecated behaviour and will be removed in GenericSetup 1.5: please
specif
y the version in metadata.xml.
DeprecationWarning)
D:\Zope\2.11.1\Plone3\parts\plone\GenericSetup\registry.py:744:
DeprecationWarni
ng: Version for profile Products.CMFCalendar:skins_support taken from
version.tx
t. This is deprecated behaviour and will be removed in GenericSetup 1.5:
please
specify the version in metadata.xml.
DeprecationWarning)
D:\Zope\2.11.1\Plone3\parts\plone\GenericSetup\registry.py:744:
DeprecationWarni
ng: Version for profile Products.CMFDefault:default taken from version.txt.
This
is deprecated behaviour and will be removed in GenericSetup 1.5: please
specify
the version in metadata.xml.
DeprecationWarning)
D:\Zope\2.11.1\Plone3\parts\plone\GenericSetup\registry.py:744:
DeprecationWarni
ng: Version for profile Products.CMFDefault:views_support taken from
version.txt
. This is deprecated behaviour and will be removed in GenericSetup 1.5:
please s
pecify the version in metadata.xml.
DeprecationWarning)
D:\Zope\2.11.1\Plone3\parts\plone\GenericSetup\registry.py:744:
DeprecationWarni
ng: Version for profile Products.CMFDefault:sample_content taken from
version.tx
t. This is deprecated behaviour and will be removed in GenericSetup 1.5:
please
specify the version in metadata.xml.
DeprecationWarning)
D:\Zope\2.11.1\Plone3\parts\plone\GenericSetup\registry.py:744:
DeprecationWarni
ng: Version for profile Products.CMFTopic:default taken from version.txt.
This i
s deprecated behaviour and will be removed in GenericSetup 1.5: please
specify t
he version in metadata.xml.
DeprecationWarning)
D:\Zope\2.11.1\Plone3\parts\plone\GenericSetup\registry.py:744:
DeprecationWarni
ng: Version for profile Products.CMFUid:default taken from version.txt. This
is
deprecated behaviour and will be removed in GenericSetup 1.5: please specify
the
version in metadata.xml.
DeprecationWarning)
D:\Zope\2.11.1\Plone3\parts\plone\GenericSetup\registry.py:744:
DeprecationWarni
ng: Version for profile Products.DCWorkflow:revision2 taken from
version.txt. Th
is is deprecated behaviour and will be removed in GenericSetup 1.5: please
speci
fy the version in metadata.xml.
DeprecationWarning)
D:\Zope\2.11.1\Plone3\parts\plone\GenericSetup\registry.py:744:
DeprecationWarni
ng: Version for profile Products.MimetypesRegistry:MimetypesRegistry taken
from
version.txt. This is deprecated behaviour and will be removed in
GenericSetup 1.
5: please specify the version in metadata.xml.
DeprecationWarning)
D:\Zope\2.11.1\Plone3\parts\plone\GenericSetup\registry.py:744:
DeprecationWarni
ng: Version for profile Products.PortalTransforms:PortalTransforms taken
from ve
rsion.txt. This is deprecated behaviour and will be removed in GenericSetup
1.5:
please specify the version in metadata.xml.
DeprecationWarning)
in 9.484 seconds.
Set up
Products.PloneTestCase.layer.PloneSiteD:\Zope\2.11.1\Plone3\parts\plone
\PlonePAS\setuphandlers.py:39: DeprecationWarning: portal_groups.getGroupIds
is
deprecated and will be removed in Plone 3.5. Use PAS searchGroups instead
existing = gtool.listGroupIds()
in 59.235 seconds.
Running:
..
Ran 2 tests with 0 failures and 0 errors in 0.032 seconds.
Tearing down left over layers:
Tear down Products.PloneTestCase.layer.PloneSite in 0.953 seconds.
Tear down Products.PloneTestCase.layer.ZCML in 0.000 seconds.
Tear down Testing.ZopeTestCase.layer.ZopeLite in 0.000 seconds.
Test-modules with import problems:
optilux.policy.tests
D:\Zope\2.11.1\Plone3>
Here is base.py:
from Products.Five import zcml
from Products.Five import fiveconfigure
from Testing import ZopeTestCase as ztc
from Products.PloneTestCase import PloneTestCase as ptc
from Products.PloneTestCase.layer import onsetup
@onsetup
def setup_optilux_policy():
"""Set up the additional products required for the Optilux site
policy.
The @onsetup decorator causes the execution of this body to be deferred
until the setup of the Plone site testing layer.
"""
# Load the ZCML configuration for the optilux.policy package.
fiveconfigure.debug_mode = True
import optilux.policy
zcml.load_config('configure.zcml', optilux.policy)
fiveconfigure.debug_mode = False
# We need to tell the testing framework that these products
# should be available. This can't happen until after we have loaded
# the ZCML.
ztc.installPackage('optilux.policy')
# The order here is importante: We first call the (deferred) function
# which installs the products we need for the Optilux package. Then,
# we let PloneTestCase set up this product on installation.
setup_optilux_policy()
ptc.setupPloneSite(products=['optilux.policy'])
class OptiluxPolicyTestCase(ptc.PloneTestCase):
"""We use this base class for all the tests in this package. If
necessary,
we can put common utility or setup code in here;
"""
Here is test_setup.py:
import unittest
from optilux.policy.tests.base import OptiluxPolicyTestCase
class TestSetup(OptiluxPolicyTestCase):
def test_portal_title(self):
self.assertEquals("Optilux Cinemas",
self.portal.getProperty('title'))
def test_portal_description(self):
self.assertEquals("Welcome to Optilux Cinemas",
self.portal.getProperty('description'))
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestSetup))
return suite
And here is properties.xml
<?xml version="1.0"?>
<site>
<property name="title">Optilux Cinemas</property>
<property name="description">Welcome to Optilux Cinemas</property>
</site>
--
View this message in context: http://n2.nabble.com/Help-with-Martin%27s-book-example-tp1668590p1668779.html
you mean src/optilux.policy/optilux/policy/__init__.py?
Its contents are:
def initialize(context):
"""Initializer called when used as a Zope 2 product."""
I guess the docstring is enough instead of the pass, isn't it?
--
View this message in context: http://n2.nabble.com/Help-with-Martin%27s-book-example-tp1668590p1668874.html
Sent from the General Questions mailing list archive at Nabble.com.
Although that shouldn't be needed either.
My guess is that you have a tests.py as well as a tests/__init__.py and
tests/test_whatever.py. Get rid of the tests.py first.
Martin
--
Author of `Professional Plone Development`, a book for developers who
want to work with Plone. See http://martinaspeli.net/plone-book
Martin Aspeli-2 wrote:
>
> My guess is that you have a tests.py as well as a tests/__init__.py and
> tests/test_whatever.py. Get rid of the tests.py first.
>
You nailed it. It was exactly that. I renamed tests.py to _tests.py and
there were no more attribute errors.
And to finish this all, I got from the --help option of the "instance test"
command that in order to suppress the Deprecation Warnings, I just needed to
run the tests with the --nowarnings option.
Thank you for your help, Martin, aj and Robert.
Alberto
--
View this message in context: http://n2.nabble.com/Help-with-Martin%27s-book-example-tp1668590p1669743.html
Sent from the General Questions mailing list archive at Nabble.com.
I seem to have the same problem as Robert.. When I removed the tests.py I am
still getting a DeprecationWarning... any ideas?
thanks
kevin
~/optilux> ./bin/instance test -s optilux.policy
Running tests at level 1
Installing CMFCore ... done (0.451s)
Installing CMFDefault ... done (0.390s)
Installing CMFCalendar ... done (0.101s)
Installing CMFTopic ... done (0.071s)
Installing DCWorkflow ... done (0.120s)
Installing CMFActionIcons ... done (0.036s)
Installing CMFQuickInstallerTool ... done (0.133s)
Installing CMFFormController ... done (0.593s)
Installing GroupUserFolder ... done (0.665s)
Installing ZCTextIndex ... done (0.126s)
Installing CMFPlone ... done (3.574s)
Installing Archetypes ... done (0.212s)
Installing ATContentTypes ... done (0.068s)
Installing ATReferenceBrowserWidget ... done (0.052s)
Installing CMFDynamicViewFTI ... done (0.047s)
Installing ExternalEditor ... done (0.040s)
Installing ExtendedPathIndex ... done (0.053s)
Installing ResourceRegistries ... done (0.041s)
Installing SecureMailHost ... done (0.047s)
Installing CMFPlacefulWorkflow ... done (0.166s)
Installing PasswordResetTool ... done (0.052s)
Installing PluggableAuthService ...
/home/revo/optilux/parts/plone/GenericSetup/registry.py:744:
DeprecationWarning: Version for profile PluggableAuthService:simple taken
from version.txt. This is deprecated behaviour and will be removed in
GenericSetup 1.5: please specify the version in metadata.xml.
DeprecationWarning)
/home/revo/optilux/parts/plone/GenericSetup/registry.py:744:
DeprecationWarning: Version for profile PluggableAuthService:empty taken
from version.txt. This is deprecated behaviour and will be removed in
GenericSetup 1.5: please specify the version in metadata.xml.
DeprecationWarning)
done (0.076s)
Installing PluginRegistry ... done (0.057s)
Installing PlonePAS ... done (0.076s)
Installing kupu ... done (0.478s)
Installing CMFEditions ... done (0.081s)
Installing CMFDiffTool ... done (0.075s)
Installing PloneLanguageTool ... done (0.074s)
Total: 0 tests, 0 failures, 0 errors
--
View this message in context: http://n2.nabble.com/Help-with-Martin%27s-book-example-tp1668590p2429255.html
Sent from the General Questions mailing list archive at Nabble.com.
------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
Those warnings are harmless and not related to your code.
> /home/revo/optilux/parts/plone/GenericSetup/registry.py:744:
> DeprecationWarning: Version for profile PluggableAuthService:simple taken
> from version.txt. This is deprecated behaviour and will be removed in
> GenericSetup 1.5: please specify the version in metadata.xml.
> DeprecationWarning)
> /home/revo/optilux/parts/plone/GenericSetup/registry.py:744:
> DeprecationWarning: Version for profile PluggableAuthService:empty taken
> from version.txt. This is deprecated behaviour and will be removed in
> GenericSetup 1.5: please specify the version in metadata.xml.
> DeprecationWarning)
Martin
--
Author of `Professional Plone Development`, a book for developers who
want to work with Plone. See http://martinaspeli.net/plone-book
------------------------------------------------------------------------------
--
View this message in context: http://n2.nabble.com/Help-with-Martin%27s-book-example-tp1668590p2436483.html
Sent from the General Questions mailing list archive at Nabble.com.
When I run the first test on page 74 my results are:
./bin/instance test --nowarning -s optilux.policy
Running tests at level 1
Installing CMFCore ... done (0.448s)
Installing CMFDefault ... done (0.360s)
Installing CMFCalendar ... done (0.061s)
Installing CMFTopic ... done (0.032s)
Installing DCWorkflow ... done (0.083s)
Installing CMFActionIcons ... done (0.032s)
Installing CMFQuickInstallerTool ... done (0.093s)
Installing CMFFormController ... done (0.563s)
Installing GroupUserFolder ... done (0.635s)
Installing ZCTextIndex ... done (0.092s)
Installing CMFPlone ... done (3.567s)
Installing Archetypes ... done (0.174s)
Installing ATContentTypes ... done (0.071s)
Installing ATReferenceBrowserWidget ... done (0.021s)
Installing CMFDynamicViewFTI ... done (0.019s)
Installing ExternalEditor ... done (0.022s)
Installing ExtendedPathIndex ... done (0.023s)
Installing ResourceRegistries ... done (0.183s)
Installing SecureMailHost ... done (0.021s)
Installing CMFPlacefulWorkflow ... done (0.087s)
Installing PasswordResetTool ... done (0.026s)
Installing PluggableAuthService ... done (0.035s)
Installing PluginRegistry ... done (0.027s)
Installing PlonePAS ... done (0.033s)
Installing kupu ... done (0.415s)
Installing CMFEditions ... done (0.040s)
Installing CMFDiffTool ... done (0.034s)
Installing PloneLanguageTool ... done (0.034s)
Total: 0 tests, 0 failures, 0 error
Any idea why the totals are all zeros?
--
View this message in context: http://n2.nabble.com/Help-with-Martin%27s-book-example-tp1668590p2492994.html
Sent from the General Questions mailing list archive at Nabble.com.
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
You either have a tests.py masking your tests/ directory (if so, delete
it), or you don't have any tests (or you're lacking a test_suite).
Martin
--
Author of `Professional Plone Development`, a book for developers who
want to work with Plone. See http://martinaspeli.net/plone-book
------------------------------------------------------------------------------
('No traversable adapter found', {u'content': [('version', '1.6'), ('mode',
'html'), ('setPosition', (95, 16)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('beginScope', {u'tal:define': u'show_border
context/@@plone/showEditableBorder', u'metal:define-macro': u'content',
u'tal:attributes': u"class
python:test(show_border,'documentEditable','')"}), ('setLocal',
(u'show_border', )), ('startTag', (u'div', [(u'metal:define-macro',
u'content', 'metal'), (u'tal:define', u'show_border
context/@@plone/showEditableBorder', 'tal'), (u'tal:attributes', u"class
python:test(show_border,'documentEditable','')", 'tal'), (u'class', None,
'insert', , False, None)])), ('rawtextBeginScope', (u'\n\n ', 18, (99, 18),
0, {u'tal:replace': u'structure provider:plone.contentviews'})), ('optTag',
(u'div', '', None, 1, [('startEndTag', (u'div', [(u'tal:replace',
u'structure provider:plone.contentviews', 'tal')]))], [('insertStructure',
(, {}, []))])), ('endScope', ()), ('rawtextColumn', (u'\n\n
\n\n \n \n \n \n\n ', 20)), ('setPosition', (109, 20)), ('useMacro',
(u'here/global_statusmessage/macros/portal_message', , {}, [('startTag',
(u'div', [(u'metal:use-macro',
u'here/global_statusmessage/macros/portal_message', 'metal')])),
('rawtextColumn', (u'\n Portal status message\n
', 26))])), ('setPosition', (111, 20)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n \n ', 20, (113, 20), 0, {u'tal:content':
u'structure provider:plone.abovecontent', u'id':
u'viewlet-above-content'})), ('startTag', (u'div', [(u'id',
u'id="viewlet-above-content"'), (u'tal:content', u'structure
provider:plone.abovecontent', 'tal')])), ('insertStructure', (, {}, [])),
('endScope', ()), ('rawtextColumn', (u'\n\n ', 20)), ('setPosition', (115,
20)), ('defineSlot', (u'body', [('beginScope', {u'metal:define-slot':
u'body'}), ('optTag', (u'metal:slot', None, 'metal', 0, [('startTag',
(u'metal:slot', [(u'metal:define-slot', u'body', 'metal')]))],
[('rawtextBeginScope', (u'\n ', 20, (116, 20), 0, {u'replace':
u'nothing'})), ('optTag', (u'tal:comment', '', 'tal', 0, [('startTag',
(u'tal:comment', [(u'replace', u'nothing', 'tal')]))], [('insertText', (,
[('rawtextColumn', (u"\n The div with ID #content will only show up if we're
actually on a content\n view, never on edit forms, control panels etc. It's
meant to only wrap the\n actual content that gets rendered on a page, not
the other UI elements.\n ", 20))]))])), ('rawtextBeginScope', (u'\n ', 20,
(121, 20), 1, {u'tal:omit-tag':
u'not:context/@@plone_context_state/is_view_template', u'id': u'content'})),
('optTag', (u'div', , None, 0, [('startTag', (u'div', [(u'id',
u'id="content"'), (u'tal:omit-tag',
u'not:context/@@plone_context_state/is_view_template', 'tal')]))],
[('rawtextColumn', (u'\n ', 22)), ('setPosition', (123, 22)), ('defineSlot',
(u'header', [('beginScope', {u'metal:define-slot': u'header',
u'tal:content': u'nothing'}), ('optTag', (u'metal:header', None, 'metal', 0,
[('startTag', (u'metal:header', [(u'metal:define-slot', u'header', 'metal'),
(u'tal:content', u'nothing', 'tal')]))], [('insertText', (,
[('rawtextColumn', (u'\n Visual Header\n ', 22))]))])), ('endScope', ())])),
('setPosition', (125, 22)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 22)), ('setPosition', (126, 22)), ('defineSlot',
(u'main', [('beginScope', {u'metal:define-slot': u'main', u'tal:content':
u'nothing'}), ('optTag', (u'metal:bodytext', None, 'metal', 0, [('startTag',
(u'metal:bodytext', [(u'metal:define-slot', u'main', 'metal'),
(u'tal:content', u'nothing', 'tal')]))], [('insertText', (,
[('rawtextColumn', (u'\n Page body text\n ', 22))]))])), ('endScope',
())])), ('setPosition', (128, 22)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 20))])), ('endScope', ()), ('rawtextColumn',
(u'\n ', 20))])), ('endScope', ())])), ('setPosition', (130, 20)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n\n ', 20)), ('setPosition', (132, 20)),
('defineSlot', (u'sub', [('beginScope', {u'metal:define-slot': u'sub'}),
('optTag', (u'metal:sub', None, 'metal', 0, [('startTag', (u'metal:sub',
[(u'metal:define-slot', u'sub', 'metal')]))], [('rawtextBeginScope', (u'\n
\n ', 22, (134, 22), 0, {u'tal:replace': u'structure
provider:plone.belowcontent'})), ('optTag', (u'div', '', None, 1,
[('startEndTag', (u'div', [(u'tal:replace', u'structure
provider:plone.belowcontent', 'tal')]))], [('insertStructure', (, {},
[]))])), ('endScope', ()), ('rawtextColumn', (u'\n \n ', 20))])),
('endScope', ())])), ('setPosition', (136, 20)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('endScope', ()), ('rawtextColumn', (u'\n\n \n \n\n \n\n ', 22))],
u'master': [('version', '1.6'), ('mode', 'html'), ('setPosition', (1, 0)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('beginScope', {u'define-macro': u'master'}), ('optTag', (u'metal:page',
None, 'metal', 0, [('startTag', (u'metal:page', [(u'define-macro',
u'master', 'metal')]))], [('setPosition', (1, 34)), ('defineSlot',
(u'doctype', [('beginScope', {u'define-slot': u'doctype'}), ('optTag',
(u'metal:doctype', None, 'metal', 0, [('startTag', (u'metal:doctype',
[(u'define-slot', u'doctype', 'metal')]))], [('rawtextOffset', (u'',
121))])), ('endScope', ())])), ('setPosition', (1, 192)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n', 0)), ('setPosition', (2, 0)), ('defineSlot',
(u'top_slot', [('beginScope', {u'define-slot': u'top_slot'}), ('optTag',
(u'metal:block', None, 'metal', 1, [('startEndTag', (u'metal:block',
[(u'define-slot', u'top_slot', 'metal')]))], [])), ('endScope', ())])),
('setPosition', (2, 0)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n', 0)), ('setPosition', (3, 0)), ('useMacro',
(u'here/global_defines/macros/defines', , {}, [('beginScope', {u'use-macro':
u'here/global_defines/macros/defines'}), ('optTag', (u'metal:block', None,
'metal', 1, [('startEndTag', (u'metal:block', [(u'use-macro',
u'here/global_defines/macros/defines', 'metal')]))], [])), ('endScope',
())])), ('setPosition', (3, 0)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n', 0, (5, 0), 0, {u'lang': u'en',
u'tal:define': u'lang language', u'xmlns': u'http://www.w3.org/1999/xhtml',
u'tal:attributes': u'lang lang;\n xml:lang lang', u'xml:lang': u'en'})),
('setLocal', (u'lang', )), ('startTag', (u'html', [(u'xmlns',
u'xmlns="http://www.w3.org/1999/xhtml"'), (u'xml:lang', u'en', 'replace', ,
False, None), (u'lang', u'en', 'replace', , False, None), (u'tal:define',
u'lang language', 'tal'), (u'tal:attributes', u'lang lang;\n xml:lang lang',
'tal')])), ('rawtextBeginScope', (u'\n\n ', 2, (12, 2), 0, {u'tal:define':
u'charset site_properties/default_charset|string:utf-8'})), ('setLocal',
(u'charset', )), ('optTag', (u'tal:cache', None, 'tal', 0, [('startTag',
(u'tal:cache', [(u'tal:define', u'charset
site_properties/default_charset|string:utf-8', 'tal')]))],
[('rawtextColumn', (u'\n ', 4)), ('setPosition', (13, 4)), ('useMacro',
(u'here/global_cache_settings/macros/cacheheaders', , {}, [('beginScope',
{u'use-macro': u'here/global_cache_settings/macros/cacheheaders'}),
('optTag', (u'metal:cache', None, 'metal', 0, [('startTag', (u'metal:cache',
[(u'use-macro', u'here/global_cache_settings/macros/cacheheaders',
'metal')]))], [('rawtextColumn', (u'\n Get the global cache headers located
in global_cache_settings.\n ', 4))])), ('endScope', ())])), ('setPosition',
(15, 4)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 2))])), ('rawtextBeginScope', (u'\n\n \n\n ', 4,
(20, 4), 1, {u'content': u'text/html; charset=iso-8859-1', u'tal:define':
u'charset site_properties/default_charset|string:utf-8', u'tal:attributes':
u'content string:text/html;;charset=${charset}', u'http-equiv':
u'Content-Type'})), ('setLocal', (u'charset', )), ('startEndTag', (u'meta',
[(u'http-equiv', u'http-equiv="Content-Type"'), (u'content', u'text/html;
charset=iso-8859-1', 'replace', , False, None), (u'tal:define', u'charset
site_properties/default_charset|string:utf-8', 'tal'), (u'tal:attributes',
u'content string:text/html;;charset=${charset}', 'tal')])), ('endScope',
()), ('rawtextColumn', (u'\n\n ', 4)), ('setPosition', (24, 4)),
('defineSlot', (u'base', [('beginScope', {u'define-slot': u'base'}),
('optTag', (u'metal:baseslot', None, 'metal', 0, [('startTag',
(u'metal:baseslot', [(u'define-slot', u'base', 'metal')]))],
[('rawtextBeginScope', (u'\n ', 6, (25, 6), 0, {u'tal:attributes': u'href
here/renderBase'})), ('startEndTag', (u'base', [(u'tal:attributes', u'href
here/renderBase', 'tal'), (u'href', None, 'insert', , False, None)])),
('endScope', ()), ('rawtextColumn', (u'\n ', 4))])), ('endScope', ())])),
('setPosition', (26, 4)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n \n\n ', 4, (30, 4), 0, {u'tal:replace':
u'structure provider:plone.htmlhead'})), ('optTag', (u'div', '', None, 1,
[('startEndTag', (u'div', [(u'tal:replace', u'structure
provider:plone.htmlhead', 'tal')]))], [('insertStructure', (, {}, []))])),
('rawtextBeginScope', (u'\n', 0, (32, 4), 1, {u'tal:define': u'metatags
python:putils.listMetaTags(here).items()', u'tal:repeat': u'keyval
metatags', u'tal:condition': u'metatags', u'tal:attributes': u'name
python:keyval[0];\n content python:keyval[1];'})), ('setLocal',
(u'metatags', )), ('condition', (, [('loop', (u'keyval', ,
[('rawtextColumn', (u'\n ', 4)), ('startEndTag', (u'meta', [(u'tal:define',
u'metatags python:putils.listMetaTags(here).items()', 'tal'),
(u'tal:condition', u'metatags', 'tal'), (u'tal:repeat', u'keyval metatags',
'tal'), (u'tal:attributes', u'name python:keyval[0];\n content
python:keyval[1];', 'tal'), (u'content', None, 'insert', , False, None),
(u'name', None, 'insert', , False, None)]))]))])), ('rawtextBeginScope',
(u'\n\n \n ', 4, (39, 4), 1, {u'replace': u'structure string:'})),
('optTag', (u'tal:iefixend', '', 'tal', 1, [('startEndTag',
(u'tal:iefixend', [(u'replace', u'structure string:', 'tal')]))],
[('insertStructure', ('>, {}, []))])), ('rawtextBeginScope', (u'\n\n ', 4,
(45, 4), 1, {u'tal:replace': u'structure provider:plone.htmlhead.links'})),
('optTag', (u'link', '', None, 1, [('startEndTag', (u'link',
[(u'tal:replace', u'structure provider:plone.htmlhead.links', 'tal')]))],
[('insertStructure', (, {}, []))])), ('rawtextBeginScope', (u'\n\n \n \n \n
', 4, (50, 4), 1, {u'replace': u'nothing'})), ('optTag', (u'tal:comment',
'', 'tal', 0, [('startTag', (u'tal:comment', [(u'replace', u'nothing',
'tal')]))], [('insertText', (, [('rawtextOffset', (u' A slot where you can
insert elements in the header from a template ', 68))]))])), ('endScope',
()), ('rawtextColumn', (u'\n ', 4)), ('setPosition', (51, 4)),
('defineSlot', (u'head_slot', [('beginScope', {u'define-slot':
u'head_slot'}), ('optTag', (u'metal:headslot', None, 'metal', 1,
[('startEndTag', (u'metal:headslot', [(u'define-slot', u'head_slot',
'metal')]))], [])), ('endScope', ())])), ('setPosition', (51, 4)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n ', 4, (53, 4), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (, [('rawtextOffset',
(u' A slot where you can insert CSS in the header from a template ',
63))]))])), ('endScope', ()), ('rawtextColumn', (u'\n ', 4)),
('setPosition', (54, 4)), ('defineSlot', (u'style_slot', [('beginScope',
{u'define-slot': u'style_slot'}), ('optTag', (u'metal:styleslot', None,
'metal', 1, [('startEndTag', (u'metal:styleslot', [(u'define-slot',
u'style_slot', 'metal')]))], [])), ('endScope', ())])), ('setPosition', (54,
4)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n ', 4, (56, 4), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (, [('rawtextOffset',
(u' This is deprecated, please use style_slot instead. ', 52))]))])),
('endScope', ()), ('rawtextColumn', (u'\n ', 4)), ('setPosition', (57, 4)),
('defineSlot', (u'css_slot', [('beginScope', {u'define-slot': u'css_slot'}),
('optTag', (u'metal:cssslot', None, 'metal', 1, [('startEndTag',
(u'metal:cssslot', [(u'define-slot', u'css_slot', 'metal')]))], [])),
('endScope', ())])), ('setPosition', (57, 4)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n ', 4, (59, 4), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (, [('rawtextOffset',
(u' A slot where you can insert javascript in the header from a template ',
70))]))])), ('endScope', ()), ('rawtextColumn', (u'\n ', 4)),
('setPosition', (60, 4)), ('defineSlot', (u'javascript_head_slot',
[('beginScope', {u'define-slot': u'javascript_head_slot'}), ('optTag',
(u'metal:javascriptslot', None, 'metal', 1, [('startEndTag',
(u'metal:javascriptslot', [(u'define-slot', u'javascript_head_slot',
'metal')]))], [])), ('endScope', ())])), ('setPosition', (60, 4)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n \n\n ', 2, (64, 2), 0, {u'tal:attributes':
u"class string:${here/getSectionFromURL} template-${template/id};\n dir
python:test(isRTL, 'rtl', 'ltr')"})), ('startTag', (u'body',
[(u'tal:attributes', u"class string:${here/getSectionFromURL}
template-${template/id};\n dir python:test(isRTL, 'rtl', 'ltr')", 'tal'),
(u'class', None, 'insert', , False, None), (u'dir', None, 'insert', , False,
None)])), ('rawtextColumn', (u'\n
\n\n ', 6)), ('setPosition', (68, 6)), ('beginI18nContext', {'source': None,
'domain': u'plone', 'target': None}), ('beginScope', {u'i18n:domain':
u'plone', u'id': u'portal-top'}), ('startTag', (u'div', [(u'id',
u'id="portal-top"'), (u'i18n:domain', u'plone', 'i18n')])),
('rawtextBeginScope', (u'\n ', 8, (69, 8), 0, {u'tal:replace': u'structure
provider:plone.portaltop'})), ('optTag', (u'div', '', None, 1,
[('startEndTag', (u'div', [(u'tal:replace', u'structure
provider:plone.portaltop', 'tal')]))], [('insertStructure', (, {}, []))])),
('endScope', ()), ('endScope', ()), ('rawtextColumn', (u'\n
', 12)), ('endI18nContext', ()), ('rawtextBeginScope', (u'\n\n
\n\n \n \n \n ', 12, (77, 12), 0, {u'replace': u'nothing'})), ('optTag',
(u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment', [(u'replace',
u'nothing', 'tal')]))], [('insertText', (, [('rawtextOffset', (u' Start of
the left column ', 26))]))])), ('endScope', ()), ('rawtextColumn', (u'\n ',
12)), ('setPosition', (78, 12)), ('defineSlot', (u'column_one_slot',
[('beginScope', {u'metal:define-slot': u'column_one_slot', u'tal:condition':
u'sl', u'id': u'portal-column-one'}), ('condition', (, [('startTag', (u'td',
[(u'id', u'id="portal-column-one"'), (u'metal:define-slot',
u'column_one_slot', 'metal'), (u'tal:condition', u'sl', 'tal')])),
('rawtextColumn', (u'\n
\n ', 16)), ('setPosition', (82, 16)), ('defineSlot', (u'portlets_one_slot',
[('beginScope', {u'define-slot': u'portlets_one_slot'}), ('optTag',
(u'metal:portlets', None, 'metal', 0, [('startTag', (u'metal:portlets',
[(u'define-slot', u'portlets_one_slot', 'metal')]))], [('rawtextBeginScope',
(u'\n ', 18, (83, 18), 0, {u'replace': u'structure
provider:plone.leftcolumn'})), ('optTag', (u'tal:block', '', 'tal', 1,
[('startEndTag', (u'tal:block', [(u'replace', u'structure
provider:plone.leftcolumn', 'tal')]))], [('insertStructure', (, {}, []))])),
('endScope', ()), ('rawtextColumn', (u'\n ', 16))])), ('endScope', ())])),
('setPosition', (84, 16)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n \n
\n ', 17))])), ('endScope', ())])), ('setPosition', (87, 12)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n ', 12, (88, 12), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (, [('rawtextOffset',
(u' End of the left column ', 24))]))])), ('rawtextBeginScope', (u'\n\n ',
12, (90, 12), 1, {u'replace': u'nothing'})), ('optTag', (u'tal:comment', '',
'tal', 0, [('startTag', (u'tal:comment', [(u'replace', u'nothing',
'tal')]))], [('insertText', (, [('rawtextOffset', (u' Start of main content
block ', 29))]))])), ('rawtextBeginScope', (u'\n ', 12, (91, 12), 1,
{u'tal:define': u'tabindex python:Iterator(mainSlot=False)', u'id':
u'portal-column-content'})), ('setLocal', (u'tabindex', )), ('startTag',
(u'td', [(u'id', u'id="portal-column-content"'), (u'tal:define', u'tabindex
python:Iterator(mainSlot=False)', 'tal')])), ('rawtextColumn', (u'\n\n ',
14)), ('setPosition', (94, 14)), ('defineSlot', (u'content', [('beginScope',
{u'define-slot': u'content'}), ('optTag', (u'metal:block', None, 'metal', 0,
[('startTag', (u'metal:block', [(u'define-slot', u'content', 'metal')]))],
[('rawtextColumn', (u'\n ', 16)), ('setPosition', (95, 16)), ('defineMacro',
(u'content', [('version', '1.6'), ('mode', 'html'), ('setPosition', (95,
16)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('beginScope', {u'tal:define': u'show_border
context/@@plone/showEditableBorder', u'metal:define-macro': u'content',
u'tal:attributes': u"class
python:test(show_border,'documentEditable','')"}), ('setLocal',
(u'show_border', )), ('startTag', (u'div', [(u'metal:define-macro',
u'content', 'metal'), (u'tal:define', u'show_border
context/@@plone/showEditableBorder', 'tal'), (u'tal:attributes', u"class
python:test(show_border,'documentEditable','')", 'tal'), (u'class', None,
'insert', , False, None)])), ('rawtextBeginScope', (u'\n\n ', 18, (99, 18),
0, {u'tal:replace': u'structure provider:plone.contentviews'})), ('optTag',
(u'div', '', None, 1, [('startEndTag', (u'div', [(u'tal:replace',
u'structure provider:plone.contentviews', 'tal')]))], [('insertStructure',
(, {}, []))])), ('endScope', ()), ('rawtextColumn', (u'\n\n
\n\n \n \n \n \n\n ', 20)), ('setPosition', (109, 20)), ('useMacro',
(u'here/global_statusmessage/macros/portal_message', , {}, [('startTag',
(u'div', [(u'metal:use-macro',
u'here/global_statusmessage/macros/portal_message', 'metal')])),
('rawtextColumn', (u'\n Portal status message\n
', 26))])), ('setPosition', (111, 20)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n \n ', 20, (113, 20), 0, {u'tal:content':
u'structure provider:plone.abovecontent', u'id':
u'viewlet-above-content'})), ('startTag', (u'div', [(u'id',
u'id="viewlet-above-content"'), (u'tal:content', u'structure
provider:plone.abovecontent', 'tal')])), ('insertStructure', (, {}, [])),
('endScope', ()), ('rawtextColumn', (u'\n\n ', 20)), ('setPosition', (115,
20)), ('defineSlot', (u'body', [('beginScope', {u'metal:define-slot':
u'body'}), ('optTag', (u'metal:slot', None, 'metal', 0, [('startTag',
(u'metal:slot', [(u'metal:define-slot', u'body', 'metal')]))],
[('rawtextBeginScope', (u'\n ', 20, (116, 20), 0, {u'replace':
u'nothing'})), ('optTag', (u'tal:comment', '', 'tal', 0, [('startTag',
(u'tal:comment', [(u'replace', u'nothing', 'tal')]))], [('insertText', (,
[('rawtextColumn', (u"\n The div with ID #content will only show up if we're
actually on a content\n view, never on edit forms, control panels etc. It's
meant to only wrap the\n actual content that gets rendered on a page, not
the other UI elements.\n ", 20))]))])), ('rawtextBeginScope', (u'\n ', 20,
(121, 20), 1, {u'tal:omit-tag':
u'not:context/@@plone_context_state/is_view_template', u'id': u'content'})),
('optTag', (u'div', , None, 0, [('startTag', (u'div', [(u'id',
u'id="content"'), (u'tal:omit-tag',
u'not:context/@@plone_context_state/is_view_template', 'tal')]))],
[('rawtextColumn', (u'\n ', 22)), ('setPosition', (123, 22)), ('defineSlot',
(u'header', [('beginScope', {u'metal:define-slot': u'header',
u'tal:content': u'nothing'}), ('optTag', (u'metal:header', None, 'metal', 0,
[('startTag', (u'metal:header', [(u'metal:define-slot', u'header', 'metal'),
(u'tal:content', u'nothing', 'tal')]))], [('insertText', (,
[('rawtextColumn', (u'\n Visual Header\n ', 22))]))])), ('endScope', ())])),
('setPosition', (125, 22)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 22)), ('setPosition', (126, 22)), ('defineSlot',
(u'main', [('beginScope', {u'metal:define-slot': u'main', u'tal:content':
u'nothing'}), ('optTag', (u'metal:bodytext', None, 'metal', 0, [('startTag',
(u'metal:bodytext', [(u'metal:define-slot', u'main', 'metal'),
(u'tal:content', u'nothing', 'tal')]))], [('insertText', (,
[('rawtextColumn', (u'\n Page body text\n ', 22))]))])), ('endScope',
())])), ('setPosition', (128, 22)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 20))])), ('endScope', ()), ('rawtextColumn',
(u'\n ', 20))])), ('endScope', ())])), ('setPosition', (130, 20)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n\n ', 20)), ('setPosition', (132, 20)),
('defineSlot', (u'sub', [('beginScope', {u'metal:define-slot': u'sub'}),
('optTag', (u'metal:sub', None, 'metal', 0, [('startTag', (u'metal:sub',
[(u'metal:define-slot', u'sub', 'metal')]))], [('rawtextBeginScope', (u'\n
\n ', 22, (134, 22), 0, {u'tal:replace': u'structure
provider:plone.belowcontent'})), ('optTag', (u'div', '', None, 1,
[('startEndTag', (u'div', [(u'tal:replace', u'structure
provider:plone.belowcontent', 'tal')]))], [('insertStructure', (, {},
[]))])), ('endScope', ()), ('rawtextColumn', (u'\n \n ', 20))])),
('endScope', ())])), ('setPosition', (136, 20)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('endScope', ()), ('rawtextColumn', (u'\n\n \n \n\n \n\n ', 22))])),
('rawtextColumn', (u'\n\n ', 14))])), ('endScope', ())])), ('setPosition',
(145, 14)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n \n ', 12, (147, 12), 1, {u'replace':
u'nothing'})), ('optTag', (u'tal:comment', '', 'tal', 0, [('startTag',
(u'tal:comment', [(u'replace', u'nothing', 'tal')]))], [('insertText', (,
[('rawtextOffset', (u' End of main content block ', 27))]))])),
('rawtextBeginScope', (u'\n\n ', 12, (149, 12), 1, {u'replace':
u'nothing'})), ('optTag', (u'tal:comment', '', 'tal', 0, [('startTag',
(u'tal:comment', [(u'replace', u'nothing', 'tal')]))], [('insertText', (,
[('rawtextOffset', (u' Start of right column ', 23))]))])), ('endScope',
()), ('rawtextColumn', (u'\n ', 12)), ('setPosition', (150, 12)),
('defineSlot', (u'column_two_slot', [('beginScope', {u'metal:define-slot':
u'column_two_slot', u'tal:condition': u'sr', u'id': u'portal-column-two'}),
('condition', (, [('startTag', (u'td', [(u'id', u'id="portal-column-two"'),
(u'metal:define-slot', u'column_two_slot', 'metal'), (u'tal:condition',
u'sr', 'tal')])), ('rawtextColumn', (u'\n
\n ', 16)), ('setPosition', (154, 16)), ('defineSlot',
(u'portlets_two_slot', [('beginScope', {u'define-slot':
u'portlets_two_slot'}), ('optTag', (u'metal:portlets', None, 'metal', 0,
[('startTag', (u'metal:portlets', [(u'define-slot', u'portlets_two_slot',
'metal')]))], [('rawtextBeginScope', (u'\n ', 18, (155, 18), 0, {u'replace':
u'structure provider:plone.rightcolumn'})), ('optTag', (u'tal:block', '',
'tal', 1, [('startEndTag', (u'tal:block', [(u'replace', u'structure
provider:plone.rightcolumn', 'tal')]))], [('insertStructure', (, {},
[]))])), ('endScope', ()), ('rawtextColumn', (u'\n ', 16))])), ('endScope',
())])), ('setPosition', (156, 16)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n \n
\n ', 17))])), ('endScope', ())])), ('setPosition', (159, 12)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n ', 12, (160, 12), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (, [('rawtextOffset',
(u' End of the right column ', 25))]))])), ('rawtextBeginScope', (u'\n \n \n
\n ', 6, (164, 6), 1, {u'replace': u'nothing'})), ('optTag',
(u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment', [(u'replace',
u'nothing', 'tal')]))], [('insertText', (, [('rawtextOffset', (u' end column
wrapper ', 20))]))])), ('rawtextBeginScope', (u'\n\n
\n \n ', 6, (168, 6), 1, {u'tal:define': u'context_state
context/@@plone_context_state;\n portlet_assignable
context_state/portlet_assignable', u'tal:condition': u"python:not sl and not
sr and portlet_assignable and checkPermission('Portlets: Manage portlets',
context)"})), ('setLocal', (u'context_state', )), ('setLocal',
(u'portlet_assignable', )), ('condition', (, [('startTag', (u'div',
[(u'tal:define', u'context_state context/@@plone_context_state;\n
portlet_assignable context_state/portlet_assignable', 'tal'),
(u'tal:condition', u"python:not sl and not sr and portlet_assignable and
checkPermission('Portlets: Manage portlets', context)", 'tal')])),
('rawtextBeginScope', (u'\n ', 10, (171, 10), 0, {u'i18n:translate':
u'manage_portlets_fallback', u'class': u'managePortletsFallback',
u'tal:attributes': u'href
string:${context_state/canonical_object_url}/@@manage-portlets'})),
('startTag', (u'a', [(u'class', u'class="managePortletsFallback"'),
(u'tal:attributes', u'href
string:${context_state/canonical_object_url}/@@manage-portlets', 'tal'),
(u'i18n:translate', u'manage_portlets_fallback', 'i18n'), (u'href', None,
'insert', , False, None)])), ('insertTranslation',
(u'manage_portlets_fallback', [('rawtextColumn', (u'\n Manage portlets\n ',
10))])), ('endScope', ()), ('rawtextColumn', (u'\n ', 12))])), ('endScope',
()), ('rawtextColumn', (u'\n\n ', 6)), ('setPosition', (178, 6)),
('beginI18nContext', {'source': None, 'domain': u'plone', 'target': None}),
('beginScope', {u'i18n:domain': u'plone'}), ('optTag', (u'metal:block',
None, 'metal', 0, [('startTag', (u'metal:block', [(u'i18n:domain', u'plone',
'i18n')]))], [('rawtextBeginScope', (u'\n\n ', 8, (180, 8), 0,
{u'tal:replace': u'structure provider:plone.portalfooter'})), ('optTag',
(u'div', '', None, 1, [('startEndTag', (u'div', [(u'tal:replace',
u'structure provider:plone.portalfooter', 'tal')]))], [('insertStructure',
(, {}, []))])), ('endScope', ()), ('rawtextColumn', (u'\n\n ', 6))])),
('endScope', ()), ('endI18nContext', ()), ('rawtextBeginScope', (u'\n\n
\n \n
', 22, (186, 22), 0, {u'alt': u'', u'tal:attributes': u'src
string:${portal_url}/spinner.gif'})), ('startEndTag', (u'img',
[(u'tal:attributes', u'src string:${portal_url}/spinner.gif', 'tal'),
(u'alt', u'alt=""'), (u'src', None, 'insert', , False, None)])),
('endScope', ()), ('endScope', ()), ('endScope', ()), ('rawtextColumn', (u'
\n\n\n', 0))])), ('endScope', ())]}) (Also, the following error occurred
while attempting to render the standard error message, please see the event
log for full details: ('No traversable adapter found', {u'content':
[('version', '1.6'), ('mode', 'html'), ('setPosition', (95, 16)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('beginScope', {u'tal:define': u'show_border
context/@@plone/showEditableBorder', u'metal:define-macro': u'content',
u'tal:attributes': u"class
python:test(show_border,'documentEditable','')"}), ('setLocal',
(u'show_border', <PathExpr
standard:u'context/@@plone/showEditableBorder'>)), ('startTag', (u'div',
[(u'metal:define-macro', u'content', 'metal'), (u'tal:define', u'show_border
context/@@plone/showEditableBorder', 'tal'), (u'tal:attributes', u"class
python:test(show_border,'documentEditable','')", 'tal'), (u'class', None,
'insert', <PythonExpr test(show_border,'documentEditable','')>, False,
None)])), ('rawtextBeginScope', (u'\n\n ', 18, (99, 18), 0, {u'tal:replace':
u'structure provider:plone.contentviews'})), ('optTag', (u'div', '', None,
1, [('startEndTag', (u'div', [(u'tal:replace', u'structure
provider:plone.contentviews', 'tal')]))], [('insertStructure', (<StringExpr
u'plone.contentviews'>, {}, []))])), ('endScope', ()), ('rawtextColumn',
(u'\n\n <div id="region-content" class="documentContent">\n\n \n \n \n
\n\n ', 20)), ('setPosition', (109, 20)), ('useMacro',
(u'here/global_statusmessage/macros/portal_message', <PathExpr
standard:u'here/global_statusmessage/macros/portal_message'>, {},
[('startTag', (u'div', [(u'metal:use-macro',
u'here/global_statusmessage/macros/portal_message', 'metal')])),
('rawtextColumn', (u'\n Portal status message\n </div>', 26))])),
('setPosition', (111, 20)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n \n ', 20, (113, 20), 0, {u'tal:content':
u'structure provider:plone.abovecontent', u'id':
u'viewlet-above-content'})), ('startTag', (u'div', [(u'id',
u'id="viewlet-above-content"'), (u'tal:content', u'structure
provider:plone.abovecontent', 'tal')])), ('insertStructure', (<StringExpr
u'plone.abovecontent'>, {}, [])), ('endScope', ()), ('rawtextColumn',
(u'</div>\n\n ', 20)), ('setPosition', (115, 20)), ('defineSlot', (u'body',
[('beginScope', {u'metal:define-slot': u'body'}), ('optTag', (u'metal:slot',
None, 'metal', 0, [('startTag', (u'metal:slot', [(u'metal:define-slot',
u'body', 'metal')]))], [('rawtextBeginScope', (u'\n ', 20, (116, 20), 0,
{u'replace': u'nothing'})), ('optTag', (u'tal:comment', '', 'tal', 0,
[('startTag', (u'tal:comment', [(u'replace', u'nothing', 'tal')]))],
[('insertText', (<PathExpr standard:u'nothing'>, [('rawtextColumn', (u"\n
The div with ID #content will only show up if we're actually on a content\n
view, never on edit forms, control panels etc. It's meant to only wrap the\n
actual content that gets rendered on a page, not the other UI elements.\n ",
20))]))])), ('rawtextBeginScope', (u'\n ', 20, (121, 20), 1,
{u'tal:omit-tag': u'not:context/@@plone_context_state/is_view_template',
u'id': u'content'})), ('optTag', (u'div', <NotExpr
u'context/@@plone_context_state/is_view_template'>, None, 0, [('startTag',
(u'div', [(u'id', u'id="content"'), (u'tal:omit-tag',
u'not:context/@@plone_context_state/is_view_template', 'tal')]))],
[('rawtextColumn', (u'\n ', 22)), ('setPosition', (123, 22)), ('defineSlot',
(u'header', [('beginScope', {u'metal:define-slot': u'header',
u'tal:content': u'nothing'}), ('optTag', (u'metal:header', None, 'metal', 0,
[('startTag', (u'metal:header', [(u'metal:define-slot', u'header', 'metal'),
(u'tal:content', u'nothing', 'tal')]))], [('insertText', (<PathExpr
standard:u'nothing'>, [('rawtextColumn', (u'\n Visual Header\n ',
22))]))])), ('endScope', ())])), ('setPosition', (125, 22)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 22)), ('setPosition', (126, 22)), ('defineSlot',
(u'main', [('beginScope', {u'metal:define-slot': u'main', u'tal:content':
u'nothing'}), ('optTag', (u'metal:bodytext', None, 'metal', 0, [('startTag',
(u'metal:bodytext', [(u'metal:define-slot', u'main', 'metal'),
(u'tal:content', u'nothing', 'tal')]))], [('insertText', (<PathExpr
standard:u'nothing'>, [('rawtextColumn', (u'\n Page body text\n ',
22))]))])), ('endScope', ())])), ('setPosition', (128, 22)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 20))])), ('endScope', ()), ('rawtextColumn',
(u'\n ', 20))])), ('endScope', ())])), ('setPosition', (130, 20)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n\n ', 20)), ('setPosition', (132, 20)),
('defineSlot', (u'sub', [('beginScope', {u'metal:define-slot': u'sub'}),
('optTag', (u'metal:sub', None, 'metal', 0, [('startTag', (u'metal:sub',
[(u'metal:define-slot', u'sub', 'metal')]))], [('rawtextBeginScope', (u'\n
\n ', 22, (134, 22), 0, {u'tal:replace': u'structure
provider:plone.belowcontent'})), ('optTag', (u'div', '', None, 1,
[('startEndTag', (u'div', [(u'tal:replace', u'structure
provider:plone.belowcontent', 'tal')]))], [('insertStructure', (<StringExpr
u'plone.belowcontent'>, {}, []))])), ('endScope', ()), ('rawtextColumn',
(u'\n \n ', 20))])), ('endScope', ())])), ('setPosition', (136, 20)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('endScope', ()), ('rawtextColumn', (u'\n\n \n \n\n </div>\n\n </div>',
22))], u'master': [('version', '1.6'), ('mode', 'html'), ('setPosition', (1,
0)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('beginScope', {u'define-macro': u'master'}), ('optTag', (u'metal:page',
None, 'metal', 0, [('startTag', (u'metal:page', [(u'define-macro',
u'master', 'metal')]))], [('setPosition', (1, 34)), ('defineSlot',
(u'doctype', [('beginScope', {u'define-slot': u'doctype'}), ('optTag',
(u'metal:doctype', None, 'metal', 0, [('startTag', (u'metal:doctype',
[(u'define-slot', u'doctype', 'metal')]))], [('rawtextOffset', (u'<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">', 121))])),
('endScope', ())])), ('setPosition', (1, 192)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n', 0)), ('setPosition', (2, 0)), ('defineSlot',
(u'top_slot', [('beginScope', {u'define-slot': u'top_slot'}), ('optTag',
(u'metal:block', None, 'metal', 1, [('startEndTag', (u'metal:block',
[(u'define-slot', u'top_slot', 'metal')]))], [])), ('endScope', ())])),
('setPosition', (2, 0)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n', 0)), ('setPosition', (3, 0)), ('useMacro',
(u'here/global_defines/macros/defines', <PathExpr
standard:u'here/global_defines/macros/defines'>, {}, [('beginScope',
{u'use-macro': u'here/global_defines/macros/defines'}), ('optTag',
(u'metal:block', None, 'metal', 1, [('startEndTag', (u'metal:block',
[(u'use-macro', u'here/global_defines/macros/defines', 'metal')]))], [])),
('endScope', ())])), ('setPosition', (3, 0)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n', 0, (5, 0), 0, {u'lang': u'en',
u'tal:define': u'lang language', u'xmlns': u'http://www.w3.org/1999/xhtml',
u'tal:attributes': u'lang lang;\n xml:lang lang', u'xml:lang': u'en'})),
('setLocal', (u'lang', <PathExpr standard:u'language'>)), ('startTag',
(u'html', [(u'xmlns', u'xmlns="http://www.w3.org/1999/xhtml"'),
(u'xml:lang', u'en', 'replace', <PathExpr standard:u'lang'>, False, None),
(u'lang', u'en', 'replace', <PathExpr standard:u'lang'>, False, None),
(u'tal:define', u'lang language', 'tal'), (u'tal:attributes', u'lang lang;\n
xml:lang lang', 'tal')])), ('rawtextBeginScope', (u'\n\n ', 2, (12, 2), 0,
{u'tal:define': u'charset site_properties/default_charset|string:utf-8'})),
('setLocal', (u'charset', <PathExpr
standard:u'site_properties/default_charset|string:utf-8'>)), ('optTag',
(u'tal:cache', None, 'tal', 0, [('startTag', (u'tal:cache', [(u'tal:define',
u'charset site_properties/default_charset|string:utf-8', 'tal')]))],
[('rawtextColumn', (u'\n ', 4)), ('setPosition', (13, 4)), ('useMacro',
(u'here/global_cache_settings/macros/cacheheaders', <PathExpr
standard:u'here/global_cache_settings/macros/cacheheaders'>, {},
[('beginScope', {u'use-macro':
u'here/global_cache_settings/macros/cacheheaders'}), ('optTag',
(u'metal:cache', None, 'metal', 0, [('startTag', (u'metal:cache',
[(u'use-macro', u'here/global_cache_settings/macros/cacheheaders',
'metal')]))], [('rawtextColumn', (u'\n Get the global cache headers located
in global_cache_settings.\n ', 4))])), ('endScope', ())])), ('setPosition',
(15, 4)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 2))])), ('rawtextBeginScope', (u'\n\n <head>\n\n
', 4, (20, 4), 1, {u'content': u'text/html; charset=iso-8859-1',
u'tal:define': u'charset site_properties/default_charset|string:utf-8',
u'tal:attributes': u'content string:text/html;;charset=${charset}',
u'http-equiv': u'Content-Type'})), ('setLocal', (u'charset', <PathExpr
standard:u'site_properties/default_charset|string:utf-8'>)), ('startEndTag',
(u'meta', [(u'http-equiv', u'http-equiv="Content-Type"'), (u'content',
u'text/html; charset=iso-8859-1', 'replace', <StringExpr
u'text/html;charset=${charset}'>, False, None), (u'tal:define', u'charset
site_properties/default_charset|string:utf-8', 'tal'), (u'tal:attributes',
u'content string:text/html;;charset=${charset}', 'tal')])), ('endScope',
()), ('rawtextColumn', (u'\n\n ', 4)), ('setPosition', (24, 4)),
('defineSlot', (u'base', [('beginScope', {u'define-slot': u'base'}),
('optTag', (u'metal:baseslot', None, 'metal', 0, [('startTag',
(u'metal:baseslot', [(u'define-slot', u'base', 'metal')]))],
[('rawtextBeginScope', (u'\n ', 6, (25, 6), 0, {u'tal:attributes': u'href
here/renderBase'})), ('startEndTag', (u'base', [(u'tal:attributes', u'href
here/renderBase', 'tal'), (u'href', None, 'insert', <PathExpr
standard:u'here/renderBase'>, False, None)])), ('endScope', ()),
('rawtextColumn', (u'<!--[if lt IE 7]></base><![endif]-->\n ', 4))])),
('endScope', ())])), ('setPosition', (26, 4)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n <meta name="generator" content="Plone -
http://plone.org" />\n\n ', 4, (30, 4), 0, {u'tal:replace': u'structure
provider:plone.htmlhead'})), ('optTag', (u'div', '', None, 1,
[('startEndTag', (u'div', [(u'tal:replace', u'structure
provider:plone.htmlhead', 'tal')]))], [('insertStructure', (<StringExpr
u'plone.htmlhead'>, {}, []))])), ('rawtextBeginScope', (u'\n', 0, (32, 4),
1, {u'tal:define': u'metatags python:putils.listMetaTags(here).items()',
u'tal:repeat': u'keyval metatags', u'tal:condition': u'metatags',
u'tal:attributes': u'name python:keyval[0];\n content python:keyval[1];'})),
('setLocal', (u'metatags', <PythonExpr putils.listMetaTags(here).items()>)),
('condition', (<PathExpr standard:u'metatags'>, [('loop', (u'keyval',
<PathExpr standard:u'metatags'>, [('rawtextColumn', (u'\n ', 4)),
('startEndTag', (u'meta', [(u'tal:define', u'metatags
python:putils.listMetaTags(here).items()', 'tal'), (u'tal:condition',
u'metatags', 'tal'), (u'tal:repeat', u'keyval metatags', 'tal'),
(u'tal:attributes', u'name python:keyval[0];\n content python:keyval[1];',
'tal'), (u'content', None, 'insert', <PythonExpr keyval[1]>, False, None),
(u'name', None, 'insert', <PythonExpr keyval[0]>, False, None)]))]))])),
('rawtextBeginScope', (u'\n\n <!-- Internet Explorer CSS Fixes -->\n ', 4,
(39, 4), 1, {u'replace': u'structure string:<!--[if IE]>'})), ('optTag',
(u'tal:iefixstart', '', 'tal', 1, [('startEndTag', (u'tal:iefixstart',
[(u'replace', u'structure string:<!--[if IE]>', 'tal')]))],
[('insertStructure', (<StringExpr u'<!--[if IE]>'>, {}, []))])),
('rawtextBeginScope', (u'\n ', 8, (40, 8), 1, {u'media': u'all',
u'tal:condition': u'exists: portal/IEFixes.css', u'type': u'text/css',
u'tal:content': u'string:@import url($portal_url/IEFixes.css);'})),
('condition', (<PathExpr exists:u' portal/IEFixes.css'>, [('startTag',
(u'style', [(u'type', u'type="text/css"'), (u'media', u'media="all"'),
(u'tal:condition', u'exists: portal/IEFixes.css', 'tal'), (u'tal:content',
u'string:@import url($portal_url/IEFixes.css);', 'tal')])), ('insertText',
(<StringExpr u'@import url($portal_url/IEFixes.css);'>, [('rawtextColumn',
(u'\n ', 8))])), ('rawtextOffset', (u'</style>', 8))])),
('rawtextBeginScope', (u'\n ', 4, (43, 4), 1, {u'replace': u'structure
string:<![endif]-->'})), ('optTag', (u'tal:iefixend', '', 'tal', 1,
[('startEndTag', (u'tal:iefixend', [(u'replace', u'structure
string:<![endif]-->', 'tal')]))], [('insertStructure', (<StringExpr
u'<![endif]-->'>, {}, []))])), ('rawtextBeginScope', (u'\n\n ', 4, (45, 4),
1, {u'tal:replace': u'structure provider:plone.htmlhead.links'})),
('optTag', (u'link', '', None, 1, [('startEndTag', (u'link',
[(u'tal:replace', u'structure provider:plone.htmlhead.links', 'tal')]))],
[('insertStructure', (<StringExpr u'plone.htmlhead.links'>, {}, []))])),
('rawtextBeginScope', (u'\n\n <!-- Disable IE6 image toolbar -->\n <meta
http-equiv="imagetoolbar" content="no" />\n \n ', 4, (50, 4), 1,
{u'replace': u'nothing'})), ('optTag', (u'tal:comment', '', 'tal', 0,
[('startTag', (u'tal:comment', [(u'replace', u'nothing', 'tal')]))],
[('insertText', (<PathExpr standard:u'nothing'>, [('rawtextOffset', (u' A
slot where you can insert elements in the header from a template ',
68))]))])), ('endScope', ()), ('rawtextColumn', (u'\n ', 4)),
('setPosition', (51, 4)), ('defineSlot', (u'head_slot', [('beginScope',
{u'define-slot': u'head_slot'}), ('optTag', (u'metal:headslot', None,
'metal', 1, [('startEndTag', (u'metal:headslot', [(u'define-slot',
u'head_slot', 'metal')]))], [])), ('endScope', ())])), ('setPosition', (51,
4)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n ', 4, (53, 4), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (<PathExpr
standard:u'nothing'>, [('rawtextOffset', (u' A slot where you can insert CSS
in the header from a template ', 63))]))])), ('endScope', ()),
('rawtextColumn', (u'\n ', 4)), ('setPosition', (54, 4)), ('defineSlot',
(u'style_slot', [('beginScope', {u'define-slot': u'style_slot'}), ('optTag',
(u'metal:styleslot', None, 'metal', 1, [('startEndTag', (u'metal:styleslot',
[(u'define-slot', u'style_slot', 'metal')]))], [])), ('endScope', ())])),
('setPosition', (54, 4)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n ', 4, (56, 4), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (<PathExpr
standard:u'nothing'>, [('rawtextOffset', (u' This is deprecated, please use
style_slot instead. ', 52))]))])), ('endScope', ()), ('rawtextColumn', (u'\n
', 4)), ('setPosition', (57, 4)), ('defineSlot', (u'css_slot',
[('beginScope', {u'define-slot': u'css_slot'}), ('optTag',
(u'metal:cssslot', None, 'metal', 1, [('startEndTag', (u'metal:cssslot',
[(u'define-slot', u'css_slot', 'metal')]))], [])), ('endScope', ())])),
('setPosition', (57, 4)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n ', 4, (59, 4), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (<PathExpr
standard:u'nothing'>, [('rawtextOffset', (u' A slot where you can insert
javascript in the header from a template ', 70))]))])), ('endScope', ()),
('rawtextColumn', (u'\n ', 4)), ('setPosition', (60, 4)), ('defineSlot',
(u'javascript_head_slot', [('beginScope', {u'define-slot':
u'javascript_head_slot'}), ('optTag', (u'metal:javascriptslot', None,
'metal', 1, [('startEndTag', (u'metal:javascriptslot', [(u'define-slot',
u'javascript_head_slot', 'metal')]))], [])), ('endScope', ())])),
('setPosition', (60, 4)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n </head>\n\n ', 2, (64, 2), 0,
{u'tal:attributes': u"class string:${here/getSectionFromURL}
template-${template/id};\n dir python:test(isRTL, 'rtl', 'ltr')"})),
('startTag', (u'body', [(u'tal:attributes', u"class
string:${here/getSectionFromURL} template-${template/id};\n dir
python:test(isRTL, 'rtl', 'ltr')", 'tal'), (u'class', None, 'insert',
<StringExpr u'${here/getSectionFromURL} template-${template/id}'>, False,
None), (u'dir', None, 'insert', <PythonExpr test(isRTL, 'rtl', 'ltr')>,
False, None)])), ('rawtextColumn', (u'\n <div
id="visual-portal-wrapper">\n\n ', 6)), ('setPosition', (68, 6)),
('beginI18nContext', {'source': None, 'domain': u'plone', 'target': None}),
('beginScope', {u'i18n:domain': u'plone', u'id': u'portal-top'}),
('startTag', (u'div', [(u'id', u'id="portal-top"'), (u'i18n:domain',
u'plone', 'i18n')])), ('rawtextBeginScope', (u'\n ', 8, (69, 8), 0,
{u'tal:replace': u'structure provider:plone.portaltop'})), ('optTag',
(u'div', '', None, 1, [('startEndTag', (u'div', [(u'tal:replace',
u'structure provider:plone.portaltop', 'tal')]))], [('insertStructure',
(<StringExpr u'plone.portaltop'>, {}, []))])), ('endScope', ()),
('endScope', ()), ('rawtextColumn', (u'\n </div>', 12)), ('endI18nContext',
()), ('rawtextBeginScope', (u'\n\n <div class="visualClear"
id="clear-space-before-wrapper-table"><!-- --></div>\n\n <table
id="portal-columns">\n <tbody>\n <tr>\n ', 12, (77, 12), 0, {u'replace':
u'nothing'})), ('optTag', (u'tal:comment', '', 'tal', 0, [('startTag',
(u'tal:comment', [(u'replace', u'nothing', 'tal')]))], [('insertText',
(<PathExpr standard:u'nothing'>, [('rawtextOffset', (u' Start of the left
column ', 26))]))])), ('endScope', ()), ('rawtextColumn', (u'\n ', 12)),
('setPosition', (78, 12)), ('defineSlot', (u'column_one_slot',
[('beginScope', {u'metal:define-slot': u'column_one_slot', u'tal:condition':
u'sl', u'id': u'portal-column-one'}), ('condition', (<PathExpr
standard:u'sl'>, [('startTag', (u'td', [(u'id', u'id="portal-column-one"'),
(u'metal:define-slot', u'column_one_slot', 'metal'), (u'tal:condition',
u'sl', 'tal')])), ('rawtextColumn', (u'\n <div class="visualPadding">\n ',
16)), ('setPosition', (82, 16)), ('defineSlot', (u'portlets_one_slot',
[('beginScope', {u'define-slot': u'portlets_one_slot'}), ('optTag',
(u'metal:portlets', None, 'metal', 0, [('startTag', (u'metal:portlets',
[(u'define-slot', u'portlets_one_slot', 'metal')]))], [('rawtextBeginScope',
(u'\n ', 18, (83, 18), 0, {u'replace': u'structure
provider:plone.leftcolumn'})), ('optTag', (u'tal:block', '', 'tal', 1,
[('startEndTag', (u'tal:block', [(u'replace', u'structure
provider:plone.leftcolumn', 'tal')]))], [('insertStructure', (<StringExpr
u'plone.leftcolumn'>, {}, []))])), ('endScope', ()), ('rawtextColumn', (u'\n
', 16))])), ('endScope', ())])), ('setPosition', (84, 16)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n \n </div>\n </td>', 17))])), ('endScope',
())])), ('setPosition', (87, 12)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n ', 12, (88, 12), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (<PathExpr
standard:u'nothing'>, [('rawtextOffset', (u' End of the left column ',
24))]))])), ('rawtextBeginScope', (u'\n\n ', 12, (90, 12), 1, {u'replace':
u'nothing'})), ('optTag', (u'tal:comment', '', 'tal', 0, [('startTag',
(u'tal:comment', [(u'replace', u'nothing', 'tal')]))], [('insertText',
(<PathExpr standard:u'nothing'>, [('rawtextOffset', (u' Start of main
content block ', 29))]))])), ('rawtextBeginScope', (u'\n ', 12, (91, 12), 1,
{u'tal:define': u'tabindex python:Iterator(mainSlot=False)', u'id':
u'portal-column-content'})), ('setLocal', (u'tabindex', <PythonExpr
Iterator(mainSlot=False)>)), ('startTag', (u'td', [(u'id',
u'id="portal-column-content"'), (u'tal:define', u'tabindex
python:Iterator(mainSlot=False)', 'tal')])), ('rawtextColumn', (u'\n\n ',
14)), ('setPosition', (94, 14)), ('defineSlot', (u'content', [('beginScope',
{u'define-slot': u'content'}), ('optTag', (u'metal:block', None, 'metal', 0,
[('startTag', (u'metal:block', [(u'define-slot', u'content', 'metal')]))],
[('rawtextColumn', (u'\n ', 16)), ('setPosition', (95, 16)), ('defineMacro',
(u'content', [('version', '1.6'), ('mode', 'html'), ('setPosition', (95,
16)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('beginScope', {u'tal:define': u'show_border
context/@@plone/showEditableBorder', u'metal:define-macro': u'content',
u'tal:attributes': u"class
python:test(show_border,'documentEditable','')"}), ('setLocal',
(u'show_border', <PathExpr
standard:u'context/@@plone/showEditableBorder'>)), ('startTag', (u'div',
[(u'metal:define-macro', u'content', 'metal'), (u'tal:define', u'show_border
context/@@plone/showEditableBorder', 'tal'), (u'tal:attributes', u"class
python:test(show_border,'documentEditable','')", 'tal'), (u'class', None,
'insert', <PythonExpr test(show_border,'documentEditable','')>, False,
None)])), ('rawtextBeginScope', (u'\n\n ', 18, (99, 18), 0, {u'tal:replace':
u'structure provider:plone.contentviews'})), ('optTag', (u'div', '', None,
1, [('startEndTag', (u'div', [(u'tal:replace', u'structure
provider:plone.contentviews', 'tal')]))], [('insertStructure', (<StringExpr
u'plone.contentviews'>, {}, []))])), ('endScope', ()), ('rawtextColumn',
(u'\n\n <div id="region-content" class="documentContent">\n\n \n \n \n
\n\n ', 20)), ('setPosition', (109, 20)), ('useMacro',
(u'here/global_statusmessage/macros/portal_message', <PathExpr
standard:u'here/global_statusmessage/macros/portal_message'>, {},
[('startTag', (u'div', [(u'metal:use-macro',
u'here/global_statusmessage/macros/portal_message', 'metal')])),
('rawtextColumn', (u'\n Portal status message\n </div>', 26))])),
('setPosition', (111, 20)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n \n ', 20, (113, 20), 0, {u'tal:content':
u'structure provider:plone.abovecontent', u'id':
u'viewlet-above-content'})), ('startTag', (u'div', [(u'id',
u'id="viewlet-above-content"'), (u'tal:content', u'structure
provider:plone.abovecontent', 'tal')])), ('insertStructure', (<StringExpr
u'plone.abovecontent'>, {}, [])), ('endScope', ()), ('rawtextColumn',
(u'</div>\n\n ', 20)), ('setPosition', (115, 20)), ('defineSlot', (u'body',
[('beginScope', {u'metal:define-slot': u'body'}), ('optTag', (u'metal:slot',
None, 'metal', 0, [('startTag', (u'metal:slot', [(u'metal:define-slot',
u'body', 'metal')]))], [('rawtextBeginScope', (u'\n ', 20, (116, 20), 0,
{u'replace': u'nothing'})), ('optTag', (u'tal:comment', '', 'tal', 0,
[('startTag', (u'tal:comment', [(u'replace', u'nothing', 'tal')]))],
[('insertText', (<PathExpr standard:u'nothing'>, [('rawtextColumn', (u"\n
The div with ID #content will only show up if we're actually on a content\n
view, never on edit forms, control panels etc. It's meant to only wrap the\n
actual content that gets rendered on a page, not the other UI elements.\n ",
20))]))])), ('rawtextBeginScope', (u'\n ', 20, (121, 20), 1,
{u'tal:omit-tag': u'not:context/@@plone_context_state/is_view_template',
u'id': u'content'})), ('optTag', (u'div', <NotExpr
u'context/@@plone_context_state/is_view_template'>, None, 0, [('startTag',
(u'div', [(u'id', u'id="content"'), (u'tal:omit-tag',
u'not:context/@@plone_context_state/is_view_template', 'tal')]))],
[('rawtextColumn', (u'\n ', 22)), ('setPosition', (123, 22)), ('defineSlot',
(u'header', [('beginScope', {u'metal:define-slot': u'header',
u'tal:content': u'nothing'}), ('optTag', (u'metal:header', None, 'metal', 0,
[('startTag', (u'metal:header', [(u'metal:define-slot', u'header', 'metal'),
(u'tal:content', u'nothing', 'tal')]))], [('insertText', (<PathExpr
standard:u'nothing'>, [('rawtextColumn', (u'\n Visual Header\n ',
22))]))])), ('endScope', ())])), ('setPosition', (125, 22)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 22)), ('setPosition', (126, 22)), ('defineSlot',
(u'main', [('beginScope', {u'metal:define-slot': u'main', u'tal:content':
u'nothing'}), ('optTag', (u'metal:bodytext', None, 'metal', 0, [('startTag',
(u'metal:bodytext', [(u'metal:define-slot', u'main', 'metal'),
(u'tal:content', u'nothing', 'tal')]))], [('insertText', (<PathExpr
standard:u'nothing'>, [('rawtextColumn', (u'\n Page body text\n ',
22))]))])), ('endScope', ())])), ('setPosition', (128, 22)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 20))])), ('endScope', ()), ('rawtextColumn',
(u'\n ', 20))])), ('endScope', ())])), ('setPosition', (130, 20)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n\n ', 20)), ('setPosition', (132, 20)),
('defineSlot', (u'sub', [('beginScope', {u'metal:define-slot': u'sub'}),
('optTag', (u'metal:sub', None, 'metal', 0, [('startTag', (u'metal:sub',
[(u'metal:define-slot', u'sub', 'metal')]))], [('rawtextBeginScope', (u'\n
\n ', 22, (134, 22), 0, {u'tal:replace': u'structure
provider:plone.belowcontent'})), ('optTag', (u'div', '', None, 1,
[('startEndTag', (u'div', [(u'tal:replace', u'structure
provider:plone.belowcontent', 'tal')]))], [('insertStructure', (<StringExpr
u'plone.belowcontent'>, {}, []))])), ('endScope', ()), ('rawtextColumn',
(u'\n \n ', 20))])), ('endScope', ())])), ('setPosition', (136, 20)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('endScope', ()), ('rawtextColumn', (u'\n\n \n \n\n </div>\n\n </div>',
22))])), ('rawtextColumn', (u'\n\n ', 14))])), ('endScope', ())])),
('setPosition', (145, 14)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n </td>\n ', 12, (147, 12), 1, {u'replace':
u'nothing'})), ('optTag', (u'tal:comment', '', 'tal', 0, [('startTag',
(u'tal:comment', [(u'replace', u'nothing', 'tal')]))], [('insertText',
(<PathExpr standard:u'nothing'>, [('rawtextOffset', (u' End of main content
block ', 27))]))])), ('rawtextBeginScope', (u'\n\n ', 12, (149, 12), 1,
{u'replace': u'nothing'})), ('optTag', (u'tal:comment', '', 'tal', 0,
[('startTag', (u'tal:comment', [(u'replace', u'nothing', 'tal')]))],
[('insertText', (<PathExpr standard:u'nothing'>, [('rawtextOffset', (u'
Start of right column ', 23))]))])), ('endScope', ()), ('rawtextColumn',
(u'\n ', 12)), ('setPosition', (150, 12)), ('defineSlot',
(u'column_two_slot', [('beginScope', {u'metal:define-slot':
u'column_two_slot', u'tal:condition': u'sr', u'id': u'portal-column-two'}),
('condition', (<PathExpr standard:u'sr'>, [('startTag', (u'td', [(u'id',
u'id="portal-column-two"'), (u'metal:define-slot', u'column_two_slot',
'metal'), (u'tal:condition', u'sr', 'tal')])), ('rawtextColumn', (u'\n <div
class="visualPadding">\n ', 16)), ('setPosition', (154, 16)), ('defineSlot',
(u'portlets_two_slot', [('beginScope', {u'define-slot':
u'portlets_two_slot'}), ('optTag', (u'metal:portlets', None, 'metal', 0,
[('startTag', (u'metal:portlets', [(u'define-slot', u'portlets_two_slot',
'metal')]))], [('rawtextBeginScope', (u'\n ', 18, (155, 18), 0, {u'replace':
u'structure provider:plone.rightcolumn'})), ('optTag', (u'tal:block', '',
'tal', 1, [('startEndTag', (u'tal:block', [(u'replace', u'structure
provider:plone.rightcolumn', 'tal')]))], [('insertStructure', (<StringExpr
u'plone.rightcolumn'>, {}, []))])), ('endScope', ()), ('rawtextColumn',
(u'\n ', 16))])), ('endScope', ())])), ('setPosition', (156, 16)),
('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n \n </div>\n </td>', 17))])), ('endScope',
())])), ('setPosition', (159, 12)), ('setSourceFile',
'file:/home/revo/optilux/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n ', 12, (160, 12), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (<PathExpr
standard:u'nothing'>, [('rawtextOffset', (u' End of the right column ',
25))]))])), ('rawtextBeginScope', (u'\n </tr>\n </tbody>\n </table>\n ', 6,
(164, 6), 1, {u'replace': u'nothing'})), ('optTag', (u'tal:comment', '',
'tal', 0, [('startTag', (u'tal:comment', [(u'replace', u'nothing',
'tal')]))], [('insertText', (<PathExpr standard:u'nothing'>,
[('rawtextOffset', (u' end column wrapper ', 20))]))])),
('rawtextBeginScope', (u'\n\n <div class="visualClear"
id="clear-space-before-footer"><!-- --></div>\n \n ', 6, (168, 6), 1,
{u'tal:define': u'context_state context/@@plone_context_state;\n
portlet_assignable context_state/portlet_assignable', u'tal:condition':
u"python:not sl and not sr and portlet_assignable and
checkPermission('Portlets: Manage portlets', context)"})), ('setLocal',
(u'context_state', <PathExpr standard:u'context/@@plone_context_state'>)),
('setLocal', (u'portlet_assignable', <PathExpr
standard:u'context_state/portlet_assignable'>)), ('condition', (<PythonExpr
not sl and not sr and portlet_assignable and checkPermission('Portlets:
Manage portlets', context)>, [('startTag', (u'div', [(u'tal:define',
u'context_state context/@@plone_context_state;\n portlet_assignable
context_state/portlet_assignable', 'tal'), (u'tal:condition', u"python:not
sl and not sr and portlet_assignable and checkPermission('Portlets: Manage
portlets', context)", 'tal')])), ('rawtextBeginScope', (u'\n ', 10, (171,
10), 0, {u'i18n:translate': u'manage_portlets_fallback', u'class':
u'managePortletsFallback', u'tal:attributes': u'href
string:${context_state/canonical_object_url}/@@manage-portlets'})),
('startTag', (u'a', [(u'class', u'class="managePortletsFallback"'),
(u'tal:attributes', u'href
string:${context_state/canonical_object_url}/@@manage-portlets', 'tal'),
(u'i18n:translate', u'manage_portlets_fallback', 'i18n'), (u'href', None,
'insert', <StringExpr
u'${context_state/canonical_object_url}/@@manage-portlets'>, False,
None)])), ('insertTranslation', (u'manage_portlets_fallback',
[('rawtextColumn', (u'\n Manage portlets\n ', 10))])), ('endScope', ()),
('rawtextColumn', (u' \n </div>', 12))])), ('endScope', ()),
('rawtextColumn', (u'\n\n ', 6)), ('setPosition', (178, 6)),
('beginI18nContext', {'source': None, 'domain': u'plone', 'target': None}),
('beginScope', {u'i18n:domain': u'plone'}), ('optTag', (u'metal:block',
None, 'metal', 0, [('startTag', (u'metal:block', [(u'i18n:domain', u'plone',
'i18n')]))], [('rawtextBeginScope', (u'\n\n ', 8, (180, 8), 0,
{u'tal:replace': u'structure provider:plone.portalfooter'})), ('optTag',
(u'div', '', None, 1, [('startEndTag', (u'div', [(u'tal:replace',
u'structure provider:plone.portalfooter', 'tal')]))], [('insertStructure',
(<StringExpr u'plone.portalfooter'>, {}, []))])), ('endScope', ()),
('rawtextColumn', (u'\n\n ', 6))])), ('endScope', ()), ('endI18nContext',
()), ('rawtextBeginScope', (u'\n\n <div class="visualClear"><!-- --></div>\n
</div>\n<div id="kss-spinner">', 22, (186, 22), 0, {u'alt': u'',
u'tal:attributes': u'src string:${portal_url}/spinner.gif'})),
('startEndTag', (u'img', [(u'tal:attributes', u'src
string:${portal_url}/spinner.gif', 'tal'), (u'alt', u'alt=""'), (u'src',
None, 'insert', <StringExpr u'${portal_url}/spinner.gif'>, False, None)])),
('endScope', ()), ('endScope', ()), ('endScope', ()), ('rawtextColumn',
(u'</div>\n</body>\n</html>\n', 0))])), ('endScope', ())]}))
--
View this message in context: http://n2.nabble.com/Help-with-Martin%27s-book-example-tp1668590p2493193.html
Almost certainly, you have some broken ZCML.
Start Zope in the foreground (always do this when developing) with
`bin/instance fg`, and look for errors.
Martin
--
Author of `Professional Plone Development`, a book for developers who
want to work with Plone. See http://martinaspeli.net/plone-book
------------------------------------------------------------------------------
>
> Also, when I go to the optilux page..this is what I get...
>
> ('No traversable adapter found', {u'content': [('version', '1.6'),
> ('mode', 'html'), ('setPosition', (95, 16)), ('setSourceFile',
That means something's not installed right :-(
The easiest way to figure out what, I find, is to start up a debug instance:
> /bin/instance debug
You usually get an informative error.
--
derek
--
View this message in context: http://n2.nabble.com/Help-with-Martin%27s-book-example-tp1668590p2505039.html
Sent from the General Questions mailing list archive at Nabble.com.
--
View this message in context: http://n2.nabble.com/Help-with-Martin%27s-book-example-tp1668590p2505048.html
Sent from the General Questions mailing list archive at Nabble.com.
>
> Thanks Derek.. I had quite a few typos in the configure.zcml file :-)
>
How unusual! I'm sure that's never happened to any of the rest of us :-)