traversal error in portal_quickinstaller after using ZopeSkel plone3_theme

David Bain david.bain at alteroo.com
Mon Nov 19 12:21:25 UTC 2007


I've set up a new theme using ZopeSkel as follows

paster create -t plone3_theme

I've used easy_install my.theme
and then placed the zcml slug in instance/etc/package-includes

After restarting zope I get a traversal error (the full output is below):

Site Error

An error was encountered while publishing this resource.

*TraversalError*
Sorry, a site error occurred.

Traceback (innermost last):

   - Module ZPublisher.Publish, line 202, in publish_module_standard
   - Module ZPublisher.Publish, line 150, in publish
   - Module Zope2.App.startup, line 221, in zpublisher_exception_hook
   - Module ZPublisher.Publish, line 119, in publish
   - Module ZPublisher.mapply, line 88, in mapply
   - Module ZPublisher.Publish, line 42, in call_object
   - Module Shared.DC.Scripts.Bindings, line 313, in __call__
   - Module Shared.DC.Scripts.Bindings, line 350, in _bindAndExec
   - Module Products.PageTemplates.PageTemplateFile, line 129, in _exec
   - Module Products.PageTemplates.PageTemplate, line 89, in pt_render
   - Module zope.pagetemplate.pagetemplate, line 117, in pt_render
   - Module zope.tal.talinterpreter, line 271, in __call__
   - Module zope.tal.talinterpreter, line 346, in interpret
   - Module zope.tal.talinterpreter, line 534, in do_optTag_tal
   - Module zope.tal.talinterpreter, line 516, in no_tag
   - Module zope.tal.talinterpreter, line 346, in interpret
   - Module zope.tal.talinterpreter, line 534, in do_optTag_tal
   - Module zope.tal.talinterpreter, line 516, in no_tag
   - Module zope.tal.talinterpreter, line 346, in interpret
   - Module zope.tal.talinterpreter, line 824, in do_loop_tal
   - Module zope.tal.talinterpreter, line 346, in interpret
   - Module zope.tal.talinterpreter, line 379, in do_startEndTag
   - Module zope.tal.talinterpreter, line 408, in do_startTag
   - Module zope.tal.talinterpreter, line 485, in attrAction_tal
   - Module Products.PageTemplates.Expressions, line 228, in evaluateText
   - Module zope.tales.tales, line 696, in evaluate
   *URL: manage_installProductsForm*
   *Line 34, Column 12*
   *Expression: <PathExpr standard:'product/id'>*
   *Names:*

   {'container': <QuickInstallerTool at /plonesite/portal_quickinstaller>,
    'context': <QuickInstallerTool at /plonesite/portal_quickinstaller>,
    'default': <object object at 0xb7df3528>,
    'here': <QuickInstallerTool at /plonesite/portal_quickinstaller>,
    'loop': {'product':
<Products.PageTemplates.Expressions.PathIterator object at
0xb2a7ad0c>},
    'nothing': None,
    'options': {'args': ()},
    'repeat': <Products.PageTemplates.Expressions.SafeMapping object
at 0xb2a7a9cc>,
    'request': <HTTPRequest,
URL=http://earth.alteroo.com:3880/plonesite/portal_quickinstaller/manage_installProductsForm>,
    'root': <Application at >,
    'template': <PageTemplateFile at
/plonesite/portal_quickinstaller/manage_installProductsForm>,
    'user': <PropertiedUser 'admin'>}

   - Module zope.tales.expressions, line 217, in __call__
   - Module Products.PageTemplates.Expressions, line 153, in _eval
   - Module zope.tales.expressions, line 124, in _eval
   - Module Products.PageTemplates.Expressions, line 83, in
   boboAwareZopeTraverse
   - Module zope.traversing.adapters, line 161, in traversePathElement
   __traceback_info__: ({'status': 'new', 'hasError': False, 'id':
   'ATReferenceBrowserWidget', 'title': 'ATReferenceBrowserWidget'}, 'id')

TraversalError: ('No traversable adapter found', {'status': 'new',
'hasError': False, 'id': 'ATReferenceBrowserWidget', 'title':
'ATReferenceBrowserWidget'}) (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', (99, 16)), ('setSourceFile',
'file:/home/david/plonehost1/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&quot;class
python:test(show_border,'documentEditable','')&quot;}), ('setLocal',
(u'show_border', &lt;PathExpr
standard:u'context/@@plone/showEditableBorder'&gt;)), ('startTag', (u'div',
[(u'metal:define-macro', u'content', 'metal'), (u'tal:define', u'show_border
context/@@plone/showEditableBorder', 'tal'), (u'tal:attributes',
u&quot;class python:test(show_border,'documentEditable','')&quot;, 'tal'),
(u'class', None, 'insert', &lt;PythonExpr
test(show_border,'documentEditable','')&gt;, False, None)])),
('rawtextBeginScope', (u'\n\n ', 18, (103, 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', (&lt;StringExpr u'
plone.contentviews'&gt;, {}, []))])), ('endScope', ()), ('rawtextColumn',
(u'\n\n &lt;div id=&quot;region-content&quot;
class=&quot;documentContent&quot;&gt;\n\n &lt;span
id=&quot;contentTopLeft&quot;&gt;&lt;/span&gt;\n &lt;span
id=&quot;contentTopRight&quot;&gt;&lt;/span&gt;\n \n &lt;a
name=&quot;documentContent&quot;&gt;&lt;/a&gt;\n\n ', 20)), ('setPosition',
(113, 20)), ('useMacro',
(u'here/global_statusmessage/macros/portal_message', &lt;PathExpr
standard:u'here/global_statusmessage/macros/portal_message'&gt;, {},
[('startTag', (u'div', [(u'metal:use-macro',
u'here/global_statusmessage/macros/portal_message', 'metal')])),
('rawtextColumn', (u'\n Portal status message\n &lt;/div&gt;', 26))])),
('setPosition', (115, 20)), ('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n \n ', 20, (117, 20), 0, {u'tal:content':
u'structure provider:plone.abovecontent', u'id':
u'viewlet-above-content'})), ('startTag', (u'div', [(u'id',
u'id=&quot;viewlet-above-content&quot;'), (u'tal:content', u'structure
provider:plone.abovecontent', 'tal')])), ('insertStructure', (&lt;StringExpr
u'plone.abovecontent'&gt;, {}, [])), ('endScope', ()), ('rawtextColumn',
(u'&lt;/div&gt;\n\n ', 20)), ('setPosition', (119, 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, (120, 20), 0, {u'replace': u'nothing'})), ('optTag', (u'tal:comment',
'', 'tal', 0, [('startTag', (u'tal:comment', [(u'replace', u'nothing',
'tal')]))], [('insertText', (&lt;PathExpr standard:u'nothing'&gt;,
[('rawtextColumn', (u&quot;\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 &quot;, 20))]))])), ('rawtextBeginScope', (u'\n
', 20, (125, 20), 1, {u'tal:omit-tag':
u'not:context/@@plone_context_state/is_view_template', u'id': u'content'})),
('optTag', (u'div', &lt;NotExpr
u'context/@@plone_context_state/is_view_template'&gt;, None, 0,
[('startTag', (u'div', [(u'id', u'id=&quot;content&quot;'),
(u'tal:omit-tag', u'not:context/@@plone_context_state/is_view_template',
'tal')]))], [('rawtextColumn', (u'\n ', 22)), ('setPosition', (127, 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', (&lt;PathExpr
standard:u'nothing'&gt;, [('rawtextColumn', (u'\n Visual Header\n ',
22))]))])), ('endScope', ())])), ('setPosition', (129, 22)),
('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 22)), ('setPosition', (130, 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', (&lt;PathExpr
standard:u'nothing'&gt;, [('rawtextColumn', (u'\n Page body text\n ',
22))]))])), ('endScope', ())])), ('setPosition', (132, 22)),
('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 20))])), ('endScope', ()), ('rawtextColumn',
(u'\n ', 20))])), ('endScope', ())])), ('setPosition', (134, 20)),
('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n\n ', 20)), ('setPosition', (136, 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, (138, 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', (&lt;StringExpr u'plone.belowcontent'&gt;,
{}, []))])), ('endScope', ()), ('rawtextColumn', (u'\n \n ', 20))])),
('endScope', ())])), ('setPosition', (140, 20)), ('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('endScope', ()), ('rawtextColumn', (u'\n\n &lt;span
id=&quot;contentBottomLeft&quot;&gt;&lt;/span&gt;\n &lt;span
id=&quot;contentBottomRight&quot;&gt;&lt;/span&gt;\n\n &lt;/div&gt;\n\n
&lt;/div&gt;', 22))], u'master': [('version', '1.6'), ('mode', 'html'),
('setPosition', (1, 0)), ('setSourceFile',
'file:/home/david/plonehost1/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'&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML
1.0Transitional//EN&quot;
&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd&quot;&gt;', 121))])), ('endScope', ())])), ('setPosition',
(1, 192)), ('setSourceFile',
'file:/home/david/plonehost1/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/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n', 0)), ('setPosition', (3, 0)), ('useMacro',
(u'here/global_defines/macros/defines', &lt;PathExpr
standard:u'here/global_defines/macros/defines'&gt;, {}, [('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/david/plonehost1/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', &lt;PathExpr standard:u'language'&gt;)), ('startTag',
(u'html', [(u'xmlns', u'xmlns=&quot;http://www.w3.org/1999/xhtml&quot;'),
(u'xml:lang', u'en', 'replace', &lt;PathExpr standard:u'lang'&gt;, False,
None), (u'lang', u'en', 'replace', &lt;PathExpr standard:u'lang'&gt;, 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',
&lt;PathExpr standard:u'site_properties/default_charset|string:utf-8'&gt;)),
('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',
&lt;PathExpr standard:u'here/global_cache_settings/macros/cacheheaders'&gt;,
{}, [('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/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 2))])), ('rawtextBeginScope', (u'\n\n
&lt;head&gt;\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', &lt;PathExpr
standard:u'site_properties/default_charset|string:utf-8'&gt;)),
('startEndTag', (u'meta', [(u'http-equiv',
u'http-equiv=&quot;Content-Type&quot;'), (u'content', u'text/html;
charset=iso-8859-1', 'replace', &lt;StringExpr
u'text/html;charset=${charset}'&gt;, 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', &lt;PathExpr
standard:u'here/renderBase'&gt;, False, None)])), ('endScope', ()),
('rawtextColumn', (u'&lt;!--[if lt IE
7]&gt;&lt;/base&gt;&lt;![endif]--&gt;\n ', 4))])), ('endScope', ())])),
('setPosition', (26, 4)), ('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n &lt;meta name=&quot;generator&quot;
content=&quot;Plone - http://plone.org&quot; /&gt;\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',
(&lt;StringExpr u'plone.htmlhead'&gt;, {}, []))])), ('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', &lt;PythonExpr
putils.listMetaTags(here).items()&gt;)),
('condition', (&lt;PathExpr standard:u'metatags'&gt;, [('loop', (u'keyval',
&lt;PathExpr standard:u'metatags'&gt;, [('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', &lt;PythonExpr keyval[1]&gt;, False, None), (u'name', None,
'insert', &lt;PythonExpr keyval[0]&gt;, False, None)]))]))])),
('rawtextBeginScope', (u'\n\n &lt;!-- Internet Explorer CSS Fixes --&gt;\n
', 4, (39, 4), 1, {u'replace': u'structure string:&lt;!--[if IE]&gt;'})),
('optTag', (u'tal:iefixstart', '', 'tal', 1, [('startEndTag',
(u'tal:iefixstart', [(u'replace', u'structure string:&lt;!--[if IE]&gt;',
'tal')]))], [('insertStructure', (&lt;StringExpr u'&lt;!--[if IE]&gt;'&gt;,
{}, []))])), ('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:@importurl($portal_url/IEFixes.css);'})), ('condition',
(&lt;PathExpr exists:u'
portal/IEFixes.css'&gt;, [('startTag', (u'style', [(u'type',
u'type=&quot;text/css&quot;'), (u'media', u'media=&quot;all&quot;'),
(u'tal:condition', u'exists: portal/IEFixes.css', 'tal'), (u'tal:content',
u'string:@import url($portal_url/IEFixes.css);', 'tal')])), ('insertText',
(&lt;StringExpr u'@import url($portal_url/IEFixes.css);'&gt;,
[('rawtextColumn', (u'\n ', 8))])), ('rawtextOffset', (u'&lt;/style&gt;',
8))])), ('rawtextBeginScope', (u'\n ', 4, (43, 4), 1, {u'replace':
u'structure string:&lt;![endif]--&gt;'})), ('optTag', (u'tal:iefixend', '',
'tal', 1, [('startEndTag', (u'tal:iefixend', [(u'replace', u'structure
string:&lt;![endif]--&gt;', 'tal')]))], [('insertStructure', (&lt;StringExpr
u'&lt;![endif]--&gt;'&gt;, {}, []))])), ('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', (&lt;StringExpr u'plone.htmlhead.links'&gt;, {},
[]))])), ('rawtextBeginScope', (u'\n\n ', 4, (47, 4), 1, {u'rel':
u'alternate', u'title': u'RSS 1.0', u'tal:condition': u'python:
syntool.isSyndicationAllowed(here)', u'href': u'', u'tal:attributes': u'href
string:$here_url/RSS', u'type': u'application/rss+xml'})), ('condition',
(&lt;PythonExpr syntool.isSyndicationAllowed(here)&gt;, [('startEndTag',
(u'link', [(u'rel', u'rel=&quot;alternate&quot;'), (u'href', u'', 'replace',
&lt;StringExpr u'$here_url/RSS'&gt;, False, None), (u'title',
u'title=&quot;RSS 1.0&quot;'), (u'type',
u'type=&quot;application/rss+xml&quot;'), (u'tal:condition', u'python:
syntool.isSyndicationAllowed(here)', 'tal'), (u'tal:attributes', u'href
string:$here_url/RSS', 'tal')]))])), ('rawtextBeginScope', (u'\n\n &lt;!--
Disable IE6 image toolbar --&gt;\n &lt;meta
http-equiv=&quot;imagetoolbar&quot; content=&quot;no&quot; /&gt;\n \n ', 4,
(54, 4), 1, {u'replace': u'nothing'})), ('optTag', (u'tal:comment', '',
'tal', 0, [('startTag', (u'tal:comment', [(u'replace', u'nothing',
'tal')]))], [('insertText', (&lt;PathExpr standard:u'nothing'&gt;,
[('rawtextOffset', (u' A slot where you can insert elements in the header
from a template ', 68))]))])), ('endScope', ()), ('rawtextColumn', (u'\n ',
4)), ('setPosition', (55, 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', (55,
4)), ('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n ', 4, (57, 4), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (&lt;PathExpr
standard:u'nothing'&gt;, [('rawtextOffset', (u' A slot where you can insert
CSS in the header from a template ', 63))]))])), ('endScope', ()),
('rawtextColumn', (u'\n ', 4)), ('setPosition', (58, 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', (58, 4)), ('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n ', 4, (60, 4), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (&lt;PathExpr
standard:u'nothing'&gt;, [('rawtextOffset', (u' This is deprecated, please
use style_slot instead. ', 52))]))])), ('endScope', ()), ('rawtextColumn',
(u'\n ', 4)), ('setPosition', (61, 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', (61, 4)), ('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n ', 4, (63, 4), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (&lt;PathExpr
standard:u'nothing'&gt;, [('rawtextOffset', (u' A slot where you can insert
javascript in the header from a template ', 70))]))])), ('endScope', ()),
('rawtextColumn', (u'\n ', 4)), ('setPosition', (64, 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', (64, 4)), ('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n\n &lt;/head&gt;\n\n ', 2, (68, 2), 0,
{u'tal:attributes': u&quot;class string:${here/getSectionFromURL}
template-${template/id};\n dir python:test(isRTL, 'rtl', 'ltr')&quot;})),
('startTag', (u'body', [(u'tal:attributes', u&quot;class
string:${here/getSectionFromURL} template-${template/id};\n dir
python:test(isRTL, 'rtl', 'ltr')&quot;, 'tal'), (u'class', None, 'insert',
&lt;StringExpr u'${here/getSectionFromURL} template-${template/id}'&gt;,
False, None), (u'dir', None, 'insert', &lt;PythonExpr test(isRTL, 'rtl',
'ltr')&gt;, False, None)])), ('rawtextColumn', (u'\n &lt;div
id=&quot;visual-portal-wrapper&quot;&gt;\n\n ', 6)), ('setPosition', (72,
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=&quot;portal-top&quot;'),
(u'i18n:domain', u'plone', 'i18n')])), ('rawtextBeginScope', (u'\n ', 8,
(73, 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',
(&lt;StringExpr u'plone.portaltop'&gt;, {}, []))])), ('endScope', ()),
('endScope', ()), ('rawtextColumn', (u'\n &lt;/div&gt;', 12)),
('endI18nContext', ()), ('rawtextBeginScope', (u'\n\n &lt;div
class=&quot;visualClear&quot;
id=&quot;clear-space-before-wrapper-table&quot;&gt;&lt;!--
--&gt;&lt;/div&gt;\n\n &lt;table id=&quot;portal-columns&quot;&gt;\n
&lt;tbody&gt;\n &lt;tr&gt;\n ', 12, (81, 12), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (&lt;PathExpr
standard:u'nothing'&gt;, [('rawtextOffset', (u' Start of the left column ',
26))]))])), ('endScope', ()), ('rawtextColumn', (u'\n ', 12)),
('setPosition', (82, 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', (&lt;PathExpr
standard:u'sl'&gt;, [('startTag', (u'td', [(u'id',
u'id=&quot;portal-column-one&quot;'), (u'metal:define-slot',
u'column_one_slot', 'metal'), (u'tal:condition', u'sl', 'tal')])),
('rawtextColumn', (u'\n &lt;div class=&quot;visualPadding&quot;&gt;\n ',
16)), ('setPosition', (86, 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, (87, 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', (&lt;StringExpr u'plone.leftcolumn'&gt;, {}, []))])),
('endScope', ()), ('rawtextColumn', (u'\n ', 16))])), ('endScope', ())])),
('setPosition', (88, 16)), ('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n &amp;nbsp;\n &lt;/div&gt;\n &lt;/td&gt;', 17))])),
('endScope', ())])), ('setPosition', (91, 12)), ('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n ', 12, (92, 12), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (&lt;PathExpr
standard:u'nothing'&gt;, [('rawtextOffset', (u' End of the left column ',
24))]))])), ('rawtextBeginScope', (u'\n\n ', 12, (94, 12), 1, {u'replace':
u'nothing'})), ('optTag', (u'tal:comment', '', 'tal', 0, [('startTag',
(u'tal:comment', [(u'replace', u'nothing', 'tal')]))], [('insertText',
(&lt;PathExpr standard:u'nothing'&gt;, [('rawtextOffset', (u' Start of main
content block ', 29))]))])), ('rawtextBeginScope', (u'\n ', 12, (95, 12), 1,
{u'tal:define': u'tabindex python:Iterator(mainSlot=False)', u'id':
u'portal-column-content'})), ('setLocal', (u'tabindex', &lt;PythonExpr
Iterator(mainSlot=False)&gt;)), ('startTag', (u'td', [(u'id',
u'id=&quot;portal-column-content&quot;'), (u'tal:define', u'tabindex
python:Iterator(mainSlot=False)', 'tal')])), ('rawtextColumn', (u'\n\n ',
14)), ('setPosition', (98, 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', (99, 16)), ('defineMacro',
(u'content', [('version', '1.6'), ('mode', 'html'), ('setPosition', (99,
16)), ('setSourceFile',
'file:/home/david/plonehost1/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&quot;class
python:test(show_border,'documentEditable','')&quot;}), ('setLocal',
(u'show_border', &lt;PathExpr
standard:u'context/@@plone/showEditableBorder'&gt;)), ('startTag', (u'div',
[(u'metal:define-macro', u'content', 'metal'), (u'tal:define', u'show_border
context/@@plone/showEditableBorder', 'tal'), (u'tal:attributes',
u&quot;class python:test(show_border,'documentEditable','')&quot;, 'tal'),
(u'class', None, 'insert', &lt;PythonExpr
test(show_border,'documentEditable','')&gt;, False, None)])),
('rawtextBeginScope', (u'\n\n ', 18, (103, 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', (&lt;StringExpr u'
plone.contentviews'&gt;, {}, []))])), ('endScope', ()), ('rawtextColumn',
(u'\n\n &lt;div id=&quot;region-content&quot;
class=&quot;documentContent&quot;&gt;\n\n &lt;span
id=&quot;contentTopLeft&quot;&gt;&lt;/span&gt;\n &lt;span
id=&quot;contentTopRight&quot;&gt;&lt;/span&gt;\n \n &lt;a
name=&quot;documentContent&quot;&gt;&lt;/a&gt;\n\n ', 20)), ('setPosition',
(113, 20)), ('useMacro',
(u'here/global_statusmessage/macros/portal_message', &lt;PathExpr
standard:u'here/global_statusmessage/macros/portal_message'&gt;, {},
[('startTag', (u'div', [(u'metal:use-macro',
u'here/global_statusmessage/macros/portal_message', 'metal')])),
('rawtextColumn', (u'\n Portal status message\n &lt;/div&gt;', 26))])),
('setPosition', (115, 20)), ('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n \n ', 20, (117, 20), 0, {u'tal:content':
u'structure provider:plone.abovecontent', u'id':
u'viewlet-above-content'})), ('startTag', (u'div', [(u'id',
u'id=&quot;viewlet-above-content&quot;'), (u'tal:content', u'structure
provider:plone.abovecontent', 'tal')])), ('insertStructure', (&lt;StringExpr
u'plone.abovecontent'&gt;, {}, [])), ('endScope', ()), ('rawtextColumn',
(u'&lt;/div&gt;\n\n ', 20)), ('setPosition', (119, 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, (120, 20), 0, {u'replace': u'nothing'})), ('optTag', (u'tal:comment',
'', 'tal', 0, [('startTag', (u'tal:comment', [(u'replace', u'nothing',
'tal')]))], [('insertText', (&lt;PathExpr standard:u'nothing'&gt;,
[('rawtextColumn', (u&quot;\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 &quot;, 20))]))])), ('rawtextBeginScope', (u'\n
', 20, (125, 20), 1, {u'tal:omit-tag':
u'not:context/@@plone_context_state/is_view_template', u'id': u'content'})),
('optTag', (u'div', &lt;NotExpr
u'context/@@plone_context_state/is_view_template'&gt;, None, 0,
[('startTag', (u'div', [(u'id', u'id=&quot;content&quot;'),
(u'tal:omit-tag', u'not:context/@@plone_context_state/is_view_template',
'tal')]))], [('rawtextColumn', (u'\n ', 22)), ('setPosition', (127, 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', (&lt;PathExpr
standard:u'nothing'&gt;, [('rawtextColumn', (u'\n Visual Header\n ',
22))]))])), ('endScope', ())])), ('setPosition', (129, 22)),
('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 22)), ('setPosition', (130, 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', (&lt;PathExpr
standard:u'nothing'&gt;, [('rawtextColumn', (u'\n Page body text\n ',
22))]))])), ('endScope', ())])), ('setPosition', (132, 22)),
('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n ', 20))])), ('endScope', ()), ('rawtextColumn',
(u'\n ', 20))])), ('endScope', ())])), ('setPosition', (134, 20)),
('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n\n ', 20)), ('setPosition', (136, 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, (138, 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', (&lt;StringExpr u'plone.belowcontent'&gt;,
{}, []))])), ('endScope', ()), ('rawtextColumn', (u'\n \n ', 20))])),
('endScope', ())])), ('setPosition', (140, 20)), ('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('endScope', ()), ('rawtextColumn', (u'\n\n &lt;span
id=&quot;contentBottomLeft&quot;&gt;&lt;/span&gt;\n &lt;span
id=&quot;contentBottomRight&quot;&gt;&lt;/span&gt;\n\n &lt;/div&gt;\n\n
&lt;/div&gt;', 22))])), ('rawtextColumn', (u'\n\n ', 14))])), ('endScope',
())])), ('setPosition', (149, 14)), ('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n &lt;/td&gt;\n ', 12, (151, 12), 1, {u'replace':
u'nothing'})), ('optTag', (u'tal:comment', '', 'tal', 0, [('startTag',
(u'tal:comment', [(u'replace', u'nothing', 'tal')]))], [('insertText',
(&lt;PathExpr standard:u'nothing'&gt;, [('rawtextOffset', (u' End of main
content block ', 27))]))])), ('rawtextBeginScope', (u'\n\n ', 12, (153, 12),
1, {u'replace': u'nothing'})), ('optTag', (u'tal:comment', '', 'tal', 0,
[('startTag', (u'tal:comment', [(u'replace', u'nothing', 'tal')]))],
[('insertText', (&lt;PathExpr standard:u'nothing'&gt;, [('rawtextOffset',
(u' Start of right column ', 23))]))])), ('endScope', ()), ('rawtextColumn',
(u'\n ', 12)), ('setPosition', (154, 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', (&lt;PathExpr standard:u'sr'&gt;, [('startTag', (u'td',
[(u'id', u'id=&quot;portal-column-two&quot;'), (u'metal:define-slot',
u'column_two_slot', 'metal'), (u'tal:condition', u'sr', 'tal')])),
('rawtextColumn', (u'\n &lt;div class=&quot;visualPadding&quot;&gt;\n ',
16)), ('setPosition', (158, 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, (159, 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', (&lt;StringExpr u'
plone.rightcolumn'&gt;, {}, []))])), ('endScope', ()), ('rawtextColumn',
(u'\n ', 16))])), ('endScope', ())])), ('setPosition', (160, 16)),
('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextColumn', (u'\n &amp;nbsp;\n &lt;/div&gt;\n &lt;/td&gt;', 17))])),
('endScope', ())])), ('setPosition', (163, 12)), ('setSourceFile',
'file:/home/david/plonehost1/parts/plone/CMFPlone/skins/plone_templates/main_template.pt'),
('rawtextBeginScope', (u'\n ', 12, (164, 12), 0, {u'replace': u'nothing'})),
('optTag', (u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment',
[(u'replace', u'nothing', 'tal')]))], [('insertText', (&lt;PathExpr
standard:u'nothing'&gt;, [('rawtextOffset', (u' End of the right column ',
25))]))])), ('rawtextBeginScope', (u'\n &lt;/tr&gt;\n &lt;/tbody&gt;\n
&lt;/table&gt;\n ', 6, (168, 6), 1, {u'replace': u'nothing'})), ('optTag',
(u'tal:comment', '', 'tal', 0, [('startTag', (u'tal:comment', [(u'replace',
u'nothing', 'tal')]))], [('insertText', (&lt;PathExpr
standard:u'nothing'&gt;, [('rawtextOffset', (u' end column wrapper ',
20))]))])), ('rawtextBeginScope', (u'\n\n &lt;div
class=&quot;visualClear&quot;
id=&quot;clear-space-before-footer&quot;&gt;&lt;!-- --&gt;&lt;/div&gt;\n \n
', 6, (172, 6), 1, {u'tal:define': u'context_state
context/@@plone_context_state;\n portlet_assignable
context_state/portlet_assignable', u'tal:condition': u&quot;python:not sl
and not sr and portlet_assignable and checkPermission('Portlets: Manage
portlets', context)&quot;})), ('setLocal', (u'context_state', &lt;PathExpr
standard:u'context/@@plone_context_state'&gt;)), ('setLocal',
(u'portlet_assignable', &lt;PathExpr
standard:u'context_state/portlet_assignable'&gt;)), ('condition',
(&lt;PythonExpr not sl and not sr and portlet_assignable and
checkPermission('Portlets: Manage portlets', context)&gt;, [('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&quot;python:not sl and not sr and portlet_assignable
and checkPermission('Portlets: Manage portlets', context)&quot;, 'tal')])),
('rawtextBeginScope', (u'\n ', 10, (175, 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=&quot;managePortletsFallback&quot;'), (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', &lt;StringExpr
u'${context_state/canonical_object_url}/@@manage-portlets'&gt;, False,
None)])), ('insertTranslation', (u'manage_portlets_fallback',
[('rawtextColumn', (u'\n Manage portlets\n ', 10))])), ('endScope', ()),
('rawtextColumn', (u'&lt;/a&gt;\n &lt;/div&gt;', 12))])), ('endScope', ()),
('rawtextColumn', (u'\n\n ', 6)), ('setPosition', (182, 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, (184, 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',
(&lt;StringExpr u'plone.portalfooter'&gt;, {}, []))])), ('endScope', ()),
('rawtextColumn', (u'\n\n ', 6))])), ('endScope', ()), ('endI18nContext',
()), ('rawtextBeginScope', (u'\n\n &lt;div
class=&quot;visualClear&quot;&gt;&lt;!-- --&gt;&lt;/div&gt;\n
&lt;/div&gt;\n&lt;div id=&quot;kss-spinner&quot;&gt;', 22, (190, 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=&quot;&quot;'),
(u'src', None, 'insert', &lt;StringExpr u'${portal_url}/spinner.gif'&gt;,
False, None)])), ('endScope', ()), ('endScope', ()), ('endScope', ()),
('rawtextColumn', (u'&lt;/div&gt;\n&lt;/body&gt;\n&lt;/html&gt;\n', 0))])),
('endScope', ())]}))
------------------------------

Troubleshooting Suggestions

   - The URL may be incorrect.
   - The parameters passed to this resource may be incorrect.
   - A resource that this resource relies on may be encountering an
   error.

For more detailed information about the error, please refer to the error
log.

If the error persists please contact the site maintainer. Thank you for your
patience.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.plone.org/pipermail/product-developers/attachments/20071119/6762a266/attachment-0001.htm


More information about the Product-Developers mailing list