Commit 9da55ffb authored by Xiaowu Zhang's avatar Xiaowu Zhang

erp5_corporate_identity: add CI_web skin

parent 87b1f298
...@@ -19,8 +19,12 @@ ...@@ -19,8 +19,12 @@
<skin_folder>erp5_corporate_identity_slide</skin_folder> <skin_folder>erp5_corporate_identity_slide</skin_folder>
<skin_selection>Slide</skin_selection> <skin_selection>Slide</skin_selection>
</skin_folder_selection> </skin_folder_selection>
<skin_folder_selection>
<skin_folder>erp5_corporate_identity_web</skin_folder>
<skin_selection>CI_web</skin_selection>
</skin_folder_selection>
<skin_folder_selection> <skin_folder_selection>
<skin_folder>erp5_xhtml_style</skin_folder> <skin_folder>erp5_xhtml_style</skin_folder>
<skin_selection>Book,Leaflet,Letter,Release,Report,Slide</skin_selection> <skin_selection>Book,CI_web,Leaflet,Letter,Release,Report,Slide</skin_selection>
</skin_folder_selection> </skin_folder_selection>
</registered_skin_selection> </registered_skin_selection>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_local_properties</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>erp5_corporate_identity_web</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>404.error.page</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Page Not Found</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {
line-height: 1.2;
margin: 0;
}
html {
color: #888;
display: table;
font-family: sans-serif;
height: 100%;
text-align: center;
width: 100%;
}
body {
display: table-cell;
vertical-align: middle;
margin: 2em auto;
}
h1 {
color: #555;
font-size: 2em;
font-weight: 400;
}
p {
margin: 0 auto;
width: 280px;
}
@media only screen and (max-width: 280px) {
body, p {
width: 95%;
}
h1 {
font-size: 1.5em;
margin: 0 0 0.3em;
}
}
</style>
</head>
<body>
<h1>Page Not Found</h1>
<p>Sorry, but the page you were trying to view does not exist.</p>
</body>
</html>
<!-- IE needs 512+ bytes: https://blogs.msdn.microsoft.com/ieinternals/2010/08/18/friendly-http-error-pages/ -->
\ No newline at end of file
import re
from Products.PythonScripts.standard import html_quote
document = context
document_content = content
websection = document.getWebSectionValue()
document_url = html_quote(websection.getPermanentURL(context))
# table of content
# XXX we are back to adding TOC to all documents, which we don't want
# XXX fix this to be applied only if a page is viewed as chapter
document_header_list = re.findall("<h[1-6].*?</h[1-6]>", document_content or "")
if len(document_header_list) > 0:
header_current = 1
header_initial = None
table_of_content = ''
for header in document_header_list:
header_level = header[2]
header_initial = header_initial or header_level
header_reference = re.findall(">(.*)<", header)[0]
header_lowercase = header_reference.lower()
header_reference_prefix = header_lowercase.replace(" ", "-")
if header_level == header_current:
table_of_content += '</li>'
# start of a list
if header_level > header_current:
header_current = header_level
table_of_content += '<ul>'
# end of a list
if header_level < header_current:
iterations = (int(header_current) - int(header_level))
table_of_content += '</li></ul>' * iterations
header_current = header_level
# add anchor in content
snippet = ''.join(['>', header_reference])
named_snippet = ''.join([
'>',
'<a name="', html_quote(header_reference_prefix), '"></a>',
header_reference,
'<a class="custom-para" href="', document_url, '#', header_reference_prefix, '"><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a>'
])
document_content = document_content.replace(snippet, named_snippet)
# create table of content entry
table_of_content += ''.join([
'<li><a href="#',
html_quote(header_reference_prefix),
'">',
html_quote(header_reference),
'</a>']
)
closer = int(header_current) * '</ul>'
insert = ''.join(['<p class="custom-table-of-contents">Table of Contents</p>', table_of_content, closer])
document_content = document_content.replace('${table_of_content}', insert)
return document_content
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>content=None</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebPage_enhanceHtmlContent</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
"""
================================================================================
Looks for <img /> with data-open-graph-image="true" from content
================================================================================
"""
import re
if item and item.getPortalType() == "Web Page":
content_image_list = re.findall("<img(.*?)/>", item.getTextContent() or "")
for image_candidate in content_image_list:
if "data-open-graph-image" in image_candidate:
match = re.search('src="([^"]+)"', image_candidate)
if match:
return match.group(1).split("?")[0]
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>item=None</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebPage_getOpenGraphImage</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
"""
================================================================================
Get Lastest Documents of a certain Publication Section
================================================================================
"""
portal = language = validation_state = None
portal = context.getPortalObject()
portal_catalog = portal.portal_catalog
language = portal.Localizer.get_selected_language()
validation_state = (
'released',
'released_alive',
'published',
'published_alive',
'shared',
'shared_alive',
'public',
'validated'
)
def getUid(publication_section):
publication_section_smallcaps = publication_section.lower()
return portal.portal_categories.publication_section[publication_section_smallcaps].getUid()
if len(publication_section_list) > 0:
publication_section_uid_list = map(lambda x:getUid(x), publication_section_list)
# beware of different dates: modificatio_date, creation_date, effective_date
if len(publication_section_uid_list) > 0:
return portal_catalog(
portal_type='Web Page',
publication_section_uid=[x for x in publication_section_uid_list],
validation_state=validation_state,
language=language,
sort_on=[('creation_date', 'descending')],
group_by=('reference',),
limit=[0, upper_limit]
)
return []
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>upper_limit=4, publication_section_list=[]</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSection_getLastestDocumentList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSite_generateWebSectionBook</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
'''=============================================================================
Create WebSection based Navigation
============================================================================='''
from Products.PythonScripts.standard import html_quote
def buildItem(item, drill_down_depth):
return menu_item_template % (
#html_quote(item.getRelativeUrl()),
html_quote(item.getId()),
html_quote(item.getTitle()),
buildWebSectionMenu(getChildWebSectionList(item), drill_down_depth)
)
def getChildWebSectionList(element):
breadcrumb_list = element.getBreadcrumbItemList()
current_section = breadcrumb_list[-1]
return current_section[1].contentValues(portal_type='Web Section')
def buildWebSectionMenu(element_list, depth):
if depth < max_depth:
depth = depth + 1
display_list = []
display_items = ''
display_count = 0
for section in element_list:
is_accessible = section.getProperty('authorization_forced') is not True
is_visible = section.getProperty('visible') is 1
has_index = section.getProperty('int_index') is not None
if is_accessible and is_visible and has_index:
display_list.append(section)
if len(display_list):
display_list.sort(key=lambda x: x.getProperty('int_index'), reverse=False)
for menu_item in display_list:
if max_items is not None:
if display_count < max_items:
display_count = display_count + 1
display_items = display_items + buildItem(menu_item, depth)
else:
display_items = display_items + buildItem(menu_item, depth)
return menu_list_template % display_items
else:
return ''
else:
return ''
parent = context
parent_section_list = getChildWebSectionList(parent)
menu_list_template = '''<ul class="ci-web-sitemap-list">%s</ul>'''
menu_item_template = '''<li><a href="./%s"><span class="ci-web-sitemap-item-title">%s</span></a>%s</li>'''
depth = 0
max_depth = max_depth or 2
return buildWebSectionMenu(parent_section_list, depth)
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>max_depth=None, max_items=None</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSite_generateWebSectionNavigation</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
'''=============================================================================
List of CSS Files to load
============================================================================='''
if scope is not None:
if scope == "global":
return (
'roboto/roboto.css',
'roboto-condensed/roboto-condensed.css',
'heuristica/heuristica.css',
'ci_web_css/normalize.css',
'ci_web_css/ci_web.css',
)
return ()
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>scope=None</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSite_getCssRelativeUrlList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
"""
================================================================================
Return extendable default list of JavaScript files to load
================================================================================
"""
if scope is not None:
if scope == "global":
return [
"ci_web_js/ci_web.js"
]
return []
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>scope=None</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSite_getJavaScriptRelativeUrlList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
if parameter is not None and proxy is not None:
proxyHandler = getattr(context, 'Base_getProxyThemeBasedProperty', None)
prefixHandler = getattr(context, 'Base_getBasicThemeBasedProperty', None)
if proxyHandler is not None and proxy == True:
return proxyHandler(
parameter=parameter,
source_uid=source_uid,
is_site=True
)
if prefixHandler is not None and proxy == False:
return prefixHandler(
parameter=parameter
)
return "XXX could not retrieve %s" % (parameter or " undefined parameter")
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>parameter=None, proxy=None, source_uid=None</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSite_getThemeBasedProperty</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
'''=============================================================================
Adds <link rel="alternate" hreflang="[language] href="[href]"> for
alternative language verions of web pages. SEO-relevant to avoid
duplicate page/content flags
============================================================================='''
portal_type = context.getPortalType()
website = context.getWebSiteValue()
website_url = website.getAbsoluteUrl()
default_language = website.getDefaultAvailableLanguage()
language_displayed_in_path = website.getStaticLanguageSelection()
available_language_list = website.getAvailableLanguageList()
def generateAlternativeTags(my_loop_language, my_visible_language, my_url=None):
if my_url is None:
my_url = website_url
trailing_slash = ''
else:
trailing_slash = '/'
if my_loop_language == default_language:
visible_path_snippet = '/' + my_visible_language + '/'
updated_path_snippet = '/'
else:
# no language indicator in path
if my_visible_language == default_language:
visible_path_snippet = website_url
updated_path_snippet = website_url + '/' + my_loop_language
else:
visible_path_snippet = '/' + my_visible_language + trailing_slash
updated_path_snippet = '/' + my_loop_language + trailing_slash
return '<link rel="alternate" hreflang="%s" href="%s">' % (
my_loop_language,
my_url.replace(visible_path_snippet, updated_path_snippet)
)
def generateAlternativeLanguageListForDocument(webpage):
webpage_url = webpage.getAbsoluteUrl()
reference = webpage.getProperty("reference")
visible_language = webpage.getProperty("language")
available_version_list = webpage.getDocumentValueList(
reference=reference,
all_languages=True,
portal_type='Web Page',
validation_state='published_alive'
)
if (reference is not None
and visible_language is not None
and language_displayed_in_path == 1
):
result = []
for loop_language in available_language_list:
for document in available_version_list:
document_language = document.getLanguage()
if document_language == loop_language:
if document_language != visible_language:
result.append(
generateAlternativeTags(
document_language,
visible_language,
webpage_url
)
)
return '\n'.join(result)
if portal_type == 'Web Page':
return generateAlternativeLanguageListForDocument(context)
if portal_type == 'Web Section':
websection = context
websection_url = websection.getAbsoluteUrl()
default_document = websection.getDefaultDocumentValue()
if default_document is not None:
return generateAlternativeLanguageListForDocument(default_document)
else:
result = []
localizer_tool = context.Localizer
visible_language = localizer_tool.get_selected_language()
for loop_language in available_language_list:
if loop_language != visible_language:
result.append(
generateAlternativeTags(
loop_language,
visible_language,
websection_url
)
)
return '\n'.join(result)
if portal_type == 'Web Site':
default_document = website.getDefaultDocumentValue()
if default_document is not None:
return generateAlternativeLanguageListForDocument(default_document)
else:
result = []
localizer_tool = context.Localizer
visible_language = localizer_tool.get_selected_language()
for loop_language in available_language_list:
if loop_language != visible_language:
result.append(generateAlternativeTags(loop_language, visible_language))
return '\n'.join(result)
return ''
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSite_setAlternativeLanguageList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
'''=============================================================================
Adds open graph meta for Twitter and Facebook
https://developers.facebook.com/docs/sharing/best-practices
NOTE: add data-open-graph-image="true" to <img/> for OpenGraph
============================================================================='''
portal_type = context.getPortalType()
website = context.getWebSiteValue()
website_url = website.getAbsoluteUrl()
website_name = website.getProperty('short_title')
website_fallback_image = website.getProperty('layout_seo_open_graph_image', '')
def generateImageUrl(my_url, my_image, my_size):
return ''.join([my_url, '/', my_image, "?format=png&amp;display=", my_size])
def generateOpenGraphMeta(my_title, my_url, my_description, my_image):
result = []
result.append('<!-- OpenGraph -->')
result.append('<meta property="og:type" content="website"/>')
result.append('<meta property="og:site_name" content="%s"/>' % (website_name))
result.append('<meta property="og:title" content="%s"/>' % (my_title))
result.append('<meta property="og:url" content="%s"/>' % (my_url))
result.append('<meta property="og:description" content="%s"/>' % (my_description))
result.append('<meta property="og:image" content="%s"/>' % (my_image))
result.append('<!-- Twitter Card -->')
result.append('<meta name="twitter:card" content="summary"/>')
result.append('<meta name="twitter:site" content="%s"/>' % (''.join(["@", website_name])))
result.append('<meta name="twitter:title" content="%s"/>' % (my_title))
result.append('<meta name="twitter:url" content="%s"/>' % (my_url))
result.append('<meta name="twitter:description" content="%s"/>' % (my_description))
result.append('<meta name="twitter:image" content="%s"/>' % (my_image))
return '\n'.join(result)
def generateOpenGraphParamaters(my_context, has_text_content=None):
document = my_context
document_url = document.getAbsoluteUrl()
document_title = document.getProperty("short_title") or document.getProperty("title")
document_description = document.getProperty("description")
# test if an image is labelled for open-graph in this documents textContent
if has_text_content is not None:
document_image = generateImageUrl(website_url, website_fallback_image, "xsmall")
document_image_candidate = context.WebPage_getOpenGraphImage(document)
if document_image_candidate:
document_image = document_image.replace(website_fallback_image, document_image_candidate)
else:
document_background = document.getProperty('layout_content_background')
if document_background is not None:
document_image = generateImageUrl(document_url, document_background, "xlarge")
else:
document_image = generateImageUrl(document_url, website_fallback_image, "xsmall")
return generateOpenGraphMeta(
document_title,
document_url,
document_description,
document_image
)
if portal_type == 'Web Page':
return generateOpenGraphParamaters(context, True)
if portal_type == 'Web Section':
websection = context
default_document = websection.getDefaultDocumentValue()
if default_document is not None:
return generateOpenGraphParamaters(default_document, True)
else:
return generateOpenGraphParamaters(websection)
if portal_type == 'Web Site':
default_document = website.getDefaultDocumentValue()
if default_document is not None:
return generateOpenGraphParamaters(default_document, True)
else:
return generateOpenGraphParamaters(website)
return ''
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSite_setOpenGraphMeta</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
'''=============================================================================
Adds schemaDotOrg discoverable descriptions
https://schema.org/ | https://developers.google.com/schemas/
https://schema.org/docs/full.html
NOTE: Schema defines categories applied to web sites/sections/pages
NOTE: Organizations cannot be declared currently hardcoded
============================================================================='''
'''
portal_type = context.getPortalType()
website = context.getWebSiteValue()
website_url = website.getAbsoluteUrl()
website_name = website.getProperty('title')
website_fallback_image = website.getProperty('layout_seo_open_graph_image', '')
#hardcoded (can't store on organization)
facebook_handle = 'https://www.facebook.com/pages/Nexedi/168462169880320'
twitter_handle = 'https://twitter.com/nexedi'
google_handle = ''
# always add website information, no matter displayed
result = []
result.append('<script type="application/ld+json">')
result.append('{')
result.append('"@context": "http://schema.org",')
result.append('"@type": "WebSite",')
result.append(''.join(['"@url": "', website_url, '",']))
result.append('"potentialAction": {')
result.append('"@type": "InteractAction",')
result.append(''.join(['"target": "', website_url, '/contact"']))
result.append('}')
result.append('</script>')
# on a website, we add above and hardcoded organization info
if portal_type == 'Web Site':
result.append('<script type="application/ld+json">')
result.append('{')
result.append('"@context": "http://schema.org",')
result.append('"@type": "Organization",')
result.append(''.join(['"name": "', website_name, '",']))
result.append(''.join(['"url": "', website_url, '",']))
result.append(''.join(['"logo": "', website_fallback_image, '?format=png&amp;display=xsmall",']))
result.append(''.join(['"sameAs":["', facebook_handle, '", "', twitter_handle,'", "', google_handle, '"]']))
# once organizations are retrieveable, could we add contact numbers
result.append('"contactPoint": [')
result.append('{')
result.append('"@type" : "ContactPoint",')
result.append('"telephone": "+33-6-62-05-76-14",')
result.append('"contactType": "Enquiries",')
result.append('"availableLanguage": ["French", "English", "Japanese"]')
result.append('}, {')
result.append('"@type" : "ContactPoint",')
result.append('"telephone": "+49-176-9639-9023",')
result.append('"contactType": "Enquiries",')
result.append('"availableLanguage": ["German", "English", "French"]')
result.append('}, {')
result.append('"@type" : "ContactPoint",')
result.append('"telephone": "+33-6-77-73-59-28",')
result.append('"contactType": "Enquiries",')
result.append('"availableLanguage": ["Chinese", "English", "French"]')
result.append('}, {')
result.append('"@type" : "ContactPoint",')
result.append('"telephone": "+55-21-999-09-58-70",')
result.append('"contactType": "Enquiries",')
result.append('"availableLanguage": ["Portuguese", "English", "French"]')
result.append('}')
result.append('</script>')
# a web section should ideally be a webpage in schema.org
if portal_type == 'Web Section':
result.append('<script type="application/ld+json">')
result.append('{')
result.append('"@context": "http://schema.org",')
result.append('"@type": "Organization",')
result.append('}')
result.append('</script>')
return '\n'.join(result)
"""
I could use categories, if we would have
schema/WebSite
schema/WebPage
schema/AboutPage
schema/ProfilePage
schema/CheckoutPage
schema/CollectionPage
schema/ContactPage
schema/ItemPage
about = AboutPage
value = ProfilePage
success = ~ CheckoutPage
innovation = ~ CheckoutPage
free software = CollectionPage & Item = Product/Software
jobs = ~ CheckoutPage
contact = ContactPage
Solution = CollectionPage & Item = Product/Software
Service = CollectionPage & Item = Service
Press = CollectionPage
Blog = CollectionPage
Team = CheckoutPage
#import re
#portal_type = context.getPortalType()
#website = context.getWebSiteValue()
#website_url = website.getAbsoluteUrl()
#website_name = website.getProperty('title')
#website_fallback_image = website.getProperty('layout_seo_open_graph_image', '')
#def generateImageUrl(my_url, my_image, my_size):
# return ''.join([my_url, '/', my_image, "?format=png&amp;display=", my_size])
#def generateOpenGraphMeta(my_title, my_url, my_description, my_image):
# result = []
# result.append('<!-- OpenGraph -->')
# result.append('<meta property="og:type" content="website"/>')
# result.append('<meta property="og:site_name" content="%s"/>' % (website_name))
# result.append('<meta property="og:title" content="%s"/>' % (my_title))
# result.append('<meta property="og:url" content="%s"/>' % (my_url))
# result.append('<meta property="og:description" content="%s"/>' % (my_description))
# result.append('<meta property="og:image" content="%s"/>' % (my_image))
# result.append('<!-- Twitter Card -->')
# result.append('<meta name="twitter:card" content="summary"/>')
# result.append('<meta name="twitter:site" content="%s"/>' % (''.join(["@", website_name])))
# result.append('<meta name="twitter:title" content="%s"/>' % (my_title))
# result.append('<meta name="twitter:url" content="%s"/>' % (my_url))
# result.append('<meta name="twitter:description" content="%s"/>' % (my_description))
# result.append('<meta name="twitter:image" content="%s"/>' % (my_image))
# return '\n'.join(result)
#def generateOpenGraphParamaters(my_context, has_text_content=None):
# document = my_context
# document_url = document.getAbsoluteUrl()
# document_title = document.getProperty("short_title")
# document_description = document.getProperty("description")
# # test if an image is labelled for open-graph in this documents textContent
# if has_text_content is not None:
# document_content = document.getProperty("text_content")
# document_image_list = re.findall("<img(.*?)/>", document_content)
# document_image = generateImageUrl(website_url, website_fallback_image, "xsmall")
# for image_candidate in document_image_list:
# if "data-open-graph-image" in image_candidate:
# match = re.search('src="([^"]+)"', image_candidate)
# if match:
# document_image = match.group(1).split("?")[0]
# else:
# document_background = document.getProperty('layout_content_background')
# if document_background is not None:
# document_image = generateImageUrl(document_url, document_background, "xlarge")
# else:
# document_image = generateImageUrl(document_url, website_fallback_image, "xsmall")
# return generateOpenGraphMeta(
# document_title,
# document_url,
# document_description,
# document_image
# )
#if portal_type == 'Web Page':
# return generateOpenGraphParamaters(context, True)
#if portal_type == 'Web Section':
# websection = context
# default_document = websection.getDefaultDocumentValue()
# if default_document is not None:
# return generateOpenGraphParamaters(default_document, True)
# else:
# return generateOpenGraphParamaters(websection)
#if portal_type == 'Web Site':
# default_document = website.getDefaultDocumentValue()
# if default_document is not None:
# return generateOpenGraphParamaters(default_document, True)
# else:
# return generateOpenGraphParamaters(website)
#return ''
'''
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSite_setSchemaDotOrg</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5 Form" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>bottom</string> </key>
<value>
<list>
<string>iframe_content</string>
<string>text_content</string>
</list>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSite_viewBookPage</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>WebSite_viewBookPage</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>erp5_ci_web_template</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>css_class</string>
<string>default</string>
<string>description</string>
<string>editable</string>
<string>enabled</string>
<string>height</string>
<string>title</string>
<string>whitespace_preserve</string>
<string>width</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>iframe_content</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string>page hiddenLabel</string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_editor_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>18</int> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Page Content</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>80</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string encoding="cdata"><![CDATA[
python:\'<iframe width="100%%" height="600" src="%s/asEntireHTML"></iframe>\' % context.absolute_url()
]]></string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>here/getUrlString</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>css_class</string>
<string>default</string>
<string>description</string>
<string>editable</string>
<string>enabled</string>
<string>text_editor</string>
<string>title</string>
<string>whitespace_preserve</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>text_content</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string>page hidden_label</string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_editor_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>text_editor</string> </key>
<value> <string>text_area</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Page Content</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python: context.WebPage_viewAsBook(format="plain")</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>not:here/getUrlString</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5 Form" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>bottom</string> </key>
<value>
<list>
<string>iframe_content</string>
<string>text_content</string>
</list>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSite_viewChapterPage</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>WebSite_viewChapterPage</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>erp5_ci_web_template</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>css_class</string>
<string>default</string>
<string>description</string>
<string>editable</string>
<string>enabled</string>
<string>height</string>
<string>title</string>
<string>whitespace_preserve</string>
<string>width</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>iframe_content</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string>page hiddenLabel</string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_editor_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>18</int> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Page Content</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>80</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string encoding="cdata"><![CDATA[
python:\'<iframe width="100%%" height="600" src="%s/asEntireHTML"></iframe>\' % context.absolute_url()
]]></string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>here/getUrlString</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>css_class</string>
<string>default</string>
<string>description</string>
<string>editable</string>
<string>enabled</string>
<string>text_editor</string>
<string>title</string>
<string>whitespace_preserve</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>text_content</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string>page hidden_label</string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_editor_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>text_editor</string> </key>
<value> <string>text_area</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Page Content</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python: context.WebPage_viewAsChapter(format="plain")</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>not:here/getUrlString</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5 Form" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>bottom</string> </key>
<value>
<list>
<string>iframe_content</string>
<string>text_content</string>
</list>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSite_viewDefaultPage</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>WebSite_viewDefaultPage</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>erp5_ci_web_template</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>css_class</string>
<string>default</string>
<string>description</string>
<string>editable</string>
<string>enabled</string>
<string>height</string>
<string>title</string>
<string>whitespace_preserve</string>
<string>width</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>iframe_content</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string>page hiddenLabel</string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_editor_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>18</int> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Page Content</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>80</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string encoding="cdata"><![CDATA[
python:\'<iframe width="100%%" height="600" src="%s/asEntireHTML"></iframe>\' % context.absolute_url()
]]></string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>here/getUrlString</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>css_class</string>
<string>default</string>
<string>description</string>
<string>editable</string>
<string>enabled</string>
<string>text_editor</string>
<string>title</string>
<string>whitespace_preserve</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>text_content</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>css_class</string> </key>
<value> <string>page hidden_label</string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_editor_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>target</string> </key>
<value> <string>Click to edit the target</string> </value>
</item>
<item>
<key> <string>text_editor</string> </key>
<value> <string>text_area</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Page Content</string> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python: context.WebPage_viewAsDefault(format=\'plain\')</string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>not:here/getUrlString</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
"""
================================================================================
Render page content for pages in this web section as book
================================================================================
"""
context.REQUEST.set("content_form_id", "WebPage_viewAsBook")
web_section = context.getWebSectionValue()
web_section_default_renderer = getattr(context, web_section.getApplicableLayout())
return web_section_default_renderer()
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSite_viewFoo</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
'''=============================================================================
Website Search
============================================================================='''
if field_your_search_form_id is None:
field_your_search_form_id = 'WebSite_viewSearchResultList'
if context is context.getWebSiteValue():
field_your_search_form_id = context.getWebSiteValue()["browse"].absolute_url()
return context.ERP5Site_viewQuickSearchResultList(
field_your_search_text=field_your_search_text,
field_your_search_portal_type=field_your_search_portal_type,
all_languages=all_languages,
list_style=list_style,
field_your_search_form_id=field_your_search_form_id,
)
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>field_your_search_text=\'\', field_your_search_portal_type=\'\', all_languages=None, list_style=None, field_your_search_form_id=None</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebSite_viewQuickSearchResultList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ci_web_css</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/* === Browser Overrides === */
fieldset {
border: 0 none;
padding: 0;
margin: 0;
}
/* === font-family === */
.ci-web .ci-web-header-bar-logo-left span,
.ci-web .ci-web-header div,
.ci-web .ci-web-page-footer .ci-web-copyright {
font-family: "Roboto", Arial, sans-serif;
font-weight: normal;
}
.ci-web .ci-web-page-content h1,
.ci-web .ci-web-page-content h2,
.ci-web .ci-web-page-content h3 {
font-family: "Roboto", Arial, sans-serif;
}
.ci-web .ci-web-page-content table th,
.ci-web .ci-web-page-content table td {
font-family: "Roboto Condensed", Arial, 'Noto Sans Sc', SimHei, STXihei, sans-serif;
font-weight: normal;
}
.ci-web .ci-web-page-content p,
.ci-web .ci-web-page-content li,
.ci-web .ci-web-page-content span {
font-family: 'Heuristica', 'Helvetica', Times, serif;
}
.ci-web .ci-web-page-content pre,
.ci-web .ci-web-page-content code,
.ci-web .ci-web-page-content code span {
font-family: "Courier New", Courier, monospace, sans-serif;
}
/* === font-size === */
.ci-web .ci-web-page-content code span,
.ci-web .ci-web-page-footer .ci-web-copyright {
font-size: .9em;
}
.ci-web .ci-web-page-content p,
.ci-web .ci-web-page-content ul li {
font-size: 1.25em;
line-height: 1.58em;
letter-spacing: -.003em;
}
/* === main section dimensions === */
.ci-web .ci-web-page-header,
.ci-web .ci-web-page-footer {
width: 100%;
}
.ci-web .ci-web-page-header-logo-bar,
.ci-web .ci-web-page-content {
width: 80%;
max-width: 64em;
margin: 0 auto;
}
@media(max-width: 64em) {
.ci-web .ci-web-page-header-logo-bar,
.ci-web .ci-web-page-content {
width: auto;
max-width: none;
padding: 0 1em;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
}
/* === site header === */
.ci-web .ci-web-page-header {
margin-bottom: 1em;
padding-bottom: 5em;
-webkit-box-shadow: 0 2px 5px 0 rgba(0,0,0,0.24);
-moz-box-shadow: 0 2px 5px 0 rgba(0,0,0,0.24);
box-shadow: 0 2px 5px 0 rgba(0,0,0,0.24);
}
.ci-web-header-bar-navigation-left img {
width: 2em;
vertical-align: middle;
padding-right: .5em;
padding-left: .5em;
}
.ci-web .ci-web-page-header-bar-navigation-title {
vertical-align: middle;
padding: .25em 0;
}
.ci-web .ci-web-header-bar-logo-left a,
.ci-web-header-bar-navigation-left a {
text-decoration: none;
}
.ci-web .ci-web-header-bar-logo-left img {
max-width: 10em;
height: auto;
border: 0 none;
vertical-align: middle;
}
.ci-web .ci-web-header-bar-logo-left span {
vertical-align: middle;
text-transform: uppercase;
letter-spacing: 2px;
font-weight: bold;
}
@media(max-width: 45em) {
.ci-web .ci-web-header-bar-logo-left span {
display: block;
width: auto;
}
.ci-web .ci-web-header-bar-logo-left img {
text-align: center;
margin-bottom: 1em;
}
}
.ci-web .ci-web-header-bar-logo {
margin-top: 4em;
text-align: center;
}
.ci-web .ci-web .ci-web-header-bar-logo-left,
.ci-web .ci-web .ci-web-header-bar-logo-center,
.ci-web .ci-web .ci-web-header-bar-logo-right {
display: inline-block;
width: 0;
}
.ci-web .ci-web .ci-web-header-bar-logo-left {
width: 50%;
}
@media(max-width: 64em) {
.ci-web .ci-web .ci-web-header-bar-logo-left {
width: auto;
}
}
.ci-web .ci-web-header-bar-navigation {
padding: .25em 0;
-webkit-box-shadow: 0 2px 5px 0 rgba(0,0,0,0.24);
-moz-box-shadow: 0 2px 5px 0 rgba(0,0,0,0.24);
box-shadow: 0 2px 5px 0 rgba(0,0,0,0.24);
}
/*
ci-web-page-header
ci-web-page-footer
ci-web-page-banner
ci-web-header
ci-web-header-bar-navigation
ci-web-header-bar-navigation-left
ci-web-header-bar-navigation-center
ci-web-header-bar-navigation-right
ci-web-header-menu-lang
ci-web-header-menu-auth
ci-web-header-menu-user
ci-web-header-bar-logo
ci-web-header-bar-logo-left
ci-web-header-bar-logo-center
ci-web-header-bar-logo-right
ci-web-header-bar-search
ci-web-header-bar-search-left
ci-web-header-bar-search-center
ci-web-header-bar-search-right
*/
/* === site content === */
.ci-web .ci-web-page-content h1:not(:first-of-type) {
margin-top: 1.5em;
}
.ci-web .ci-web-page-content h2 {
margin-top: 1em;
}
.ci-web .ci-web-page-content h3 {
margin-top: .5em;
}
.ci-web .ci-web-page-content table {
border-collapse: collapse;
border: 1px solid #808080;
}
.ci-web .ci-web-page-content table thead {
background: #F0F0F0;
}
.ci-web .ci-web-page-content table thead th,
.ci-web .ci-web-page-content table thead td {
padding: 1em .25em;
}
.ci-web .ci-web-page-content table tbody th,
.ci-web .ci-web-page-content table tbody td {
padding: 0 .25em;
}
.ci-web .ci-web-page-content img {
width: 100%;
}
.ci-web .ci-web-page-content a {
text-decoration: none;
}
/* prevent inline code elements to break page width */
.ci-web .ci-web-page-content code {
word-break: break-all;
word-wrap: break-word;
}
.ci-web .ci-web-page-content pre code {
word-break: normal;
word-wrap: normal;
}
/*
.ci-web .ci-web-page-content p,
.ci-web .ci-web-page-content li,
.ci-web .ci-web-page-content span {
line-height: 1.3em;
}
*/
/* === site content responsie tables === */
@media (max-width: 64em) {
.ci-web .ci-web-page-content table,
.ci-web .ci-web-page-content thead,
.ci-web .ci-web-page-content tbody,
.ci-web .ci-web-page-content th,
.ci-web .ci-web-page-content td,
.ci-web .ci-web-page-content tr {
display: block;
}
.ci-web .ci-web-page-content thead tr {
position: absolute !important;
height: 1px;
width: 1px;
overflow: hidden;
clip: rect(1px,1px,1px,1px);
}
.ci-web .ci-web-page-content table tbody tr td:first-child {
font-weight: 700;
}
.ci-web .ci-web-page-content tr {
border-bottom: 1px solid #808080;
padding: 1em 0.5em;
}
/* new row */
.ci-web .ci-web-page-content td {
border: none;
}
/* new row header */
.ci-web .ci-web-page-content td:before {
padding-right: 10px;
white-space: nowrap;
}
}
/* === Login Menu === */
.ci-web .ci-web-header-menu-user {
display: none;
}
/* === site footer === */
.ci-web .ci-web-page-footer {
text-align: center;
margin-top: 2em;
padding: 1em 0;
}
.ci-web .ci-web-page-footer .ci-web-copyright {
}
/* === code highlighting === */
/* highlightjs */
.hljs {
display: block;
overflow-x: auto;
background: #F0F0F0
}
.hljs,
.hljs-subst {
color: #444
}
.hljs-comment {
color: #888888
}
.hljs-keyword,
.hljs-attribute,
.hljs-selector-tag,
.hljs-meta-keyword,
.hljs-doctag,
.hljs-name {
font-weight: bold
}
.hljs-type,
.hljs-string,
.hljs-number,
.hljs-selector-id,
.hljs-selector-class,
.hljs-quote,
.hljs-template-tag,
.hljs-deletion {
color: #880000
}
.hljs-title,
.hljs-section {
color: #880000;
font-weight: bold
}
.hljs-regexp,
.hljs-symbol,
.hljs-variable,
.hljs-template-variable,
.hljs-link,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #BC6060
}
.hljs-literal {
color: #78A960
}
.hljs-built_in,
.hljs-bullet,
.hljs-code,
.hljs-addition {
color: #397300
}
.hljs-meta {
color: #1f7199
}
.hljs-meta-string {
color: #4d99bf
}
.hljs-emphasis {
font-style: italic
}
.hljs-strong {
font-weight: bold
}
/* line numbers from experimental branch: https://github.com/isagalaev/highlight.js/compare/line-numbers */
/* line numbers */
pre {
counter-reset: lines;
}
pre .line {
counter-increment: lines;
}
pre .line::before {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
content: counter(lines);
text-align: right;
display: inline-block;
width: 2em;
padding-right: 0.5em;
margin-right: 0.5em;
color: #BBB;
border-right: solid 1px;
}
/* hanging indent, removed per request of Vincent *//*
pre .line {
padding-left: 1.5em;
text-indent: -2em;
display: block;
}
pre {
white-space: pre-wrap;
white-space: -moz-pre-wrap;
white-space: -pre-wrap;
white-space: -o-pre-wrap;
word-wrap: break-word;
}
*/
/* customized colors */
/* coloring from prismjs */
.hljs-comment,
.hljs-doctag,
.hljs-meta,
.hljs-meta-string {
color: slategray;
}
.hljs-keyword {
color: #07a;
}
.hljs-attribute,
.hljs-string,
.hljs-selector-tag,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #690;
}
.hljs-number,
.hljs-deletion,
.hljs-symbol,
.hljs-code {
color: #905;
}
.hljs-regexp,
.hljs-variable,
.hljs-template-variable,
.hljs-strong {
color: #e90;
}
.hljs-link {
color: #a67f59;
}
/* don't exist */
.hljs-name,
.hljs-type,
.hljs-quote,
.hljs-template-tag,
.hljs-title,
.hljs-section,
.hljs-literal,
.hljs-built_in,
.hljs-addition,
.hljs-bullet {
color: inherit;
font-weight: normal;
}
/* overriding of line breaks with scrolling, added per request of Vincent */
.ci-web .ci-web-page-content pre {
overflow-x: scroll;
}
.ci-web .ci-web-page-content pre code {
white-space: pre;
}
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>ci_web.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */
/**
* 1. Change the default font family in all browsers (opinionated).
* 2. Correct the line height in all browsers.
* 3. Prevent adjustments of font size after orientation changes in
* IE on Windows Phone and in iOS.
*/
/* Document
========================================================================== */
html {
font-family: sans-serif; /* 1 */
line-height: 1.15; /* 2 */
-ms-text-size-adjust: 100%; /* 3 */
-webkit-text-size-adjust: 100%; /* 3 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers (opinionated).
*/
body {
margin: 0;
}
/**
* Add the correct display in IE 9-.
*/
article,
aside,
footer,
header,
nav,
section {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* Add the correct display in IE 9-.
* 1. Add the correct display in IE.
*/
figcaption,
figure,
main { /* 1 */
display: block;
}
/**
* Add the correct margin in IE 8.
*/
figure {
margin: 1em 40px;
}
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* 1. Remove the gray background on active links in IE 10.
* 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
*/
a {
background-color: transparent; /* 1 */
-webkit-text-decoration-skip: objects; /* 2 */
}
/**
* Remove the outline on focused links when they are also active or hovered
* in all browsers (opinionated).
*/
a:active,
a:hover {
outline-width: 0;
}
/**
* 1. Remove the bottom border in Firefox 39-.
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Prevent the duplicate application of `bolder` by the next rule in Safari 6.
*/
b,
strong {
font-weight: inherit;
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font style in Android 4.3-.
*/
dfn {
font-style: italic;
}
/**
* Add the correct background and color in IE 9-.
*/
mark {
background-color: #ff0;
color: #000;
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Add the correct display in IE 9-.
*/
audio,
video {
display: inline-block;
}
/**
* Add the correct display in iOS 4-7.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Remove the border on images inside links in IE 10-.
*/
img {
border-style: none;
}
/**
* Hide the overflow in IE.
*/
svg:not(:root) {
overflow: hidden;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers (opinionated).
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: sans-serif; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input { /* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
* 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
* controls in Android 4.
* 2. Correct the inability to style clickable types in iOS and Safari.
*/
button,
html [type="button"], /* 1 */
[type="reset"],
[type="submit"] {
-webkit-appearance: button; /* 2 */
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Change the border, margin, and padding in all browsers (opinionated).
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* 1. Add the correct display in IE 9-.
* 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
display: inline-block; /* 1 */
vertical-align: baseline; /* 2 */
}
/**
* Remove the default vertical scrollbar in IE.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10-.
* 2. Remove the padding in IE 10-.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in IE 9-.
* 1. Add the correct display in Edge, IE, and Firefox.
*/
details, /* 1 */
menu {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Scripting
========================================================================== */
/**
* Add the correct display in IE 9-.
*/
canvas {
display: inline-block;
}
/**
* Add the correct display in IE.
*/
template {
display: none;
}
/* Hidden
========================================================================== */
/**
* Add the correct display in IE 10-.
*/
[hidden] {
display: none;
}
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>normalize.css</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/css</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>ci_web_js</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value> <string>http_cache</string> </value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>ci_web.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5 Form" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>edit_order</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>right</string>
<string>center</string>
<string>bottom</string>
<string>try</string>
<string>documentation</string>
<string>breadcrumb</string>
<string>header_title</string>
<string>teaser</string>
<string>discussions</string>
<string>related_documents</string>
<string>site_header</string>
<string>site_footer</string>
<string>flex_slider_control</string>
<string>hidden</string>
<string>application</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>application</string> </key>
<value>
<list>
<string>special_header</string>
</list>
</value>
</item>
<item>
<key> <string>bottom</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>breadcrumb</string> </key>
<value>
<list>
<string>breadcrumb</string>
</list>
</value>
</item>
<item>
<key> <string>center</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>discussions</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>documentation</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>flex_slider_control</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>header_title</string> </key>
<value>
<list>
<string>header_title</string>
</list>
</value>
</item>
<item>
<key> <string>hidden</string> </key>
<value>
<list>
<string>special_content</string>
</list>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>related_documents</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>site_footer</string> </key>
<value>
<list>
<string>site_footer</string>
</list>
</value>
</item>
<item>
<key> <string>site_header</string> </key>
<value>
<list>
<string>site_header</string>
</list>
</value>
</item>
<item>
<key> <string>teaser</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>try</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>erp5_ci_web_container_layout</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>container_layout</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>erp5_ci_web_template</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>update_action_title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>erp5_ci_web_template</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<tal:block metal:use-macro="options/macro" />
\ No newline at end of file
# www.robotstxt.org/
# Allow crawling of all content
User-agent: *
Disallow:
\ No newline at end of file
<tal:block define="dummy python:request.RESPONSE.setHeader('Content-Type', 'application/xml;; charset=utf-8')"
tal:replace="structure python: context.WebSite_viewSiteMapAsXML()">
</tal:block>
\ No newline at end of file
...@@ -4,7 +4,9 @@ erp5_corporate_identity_leaflet | Leaflet ...@@ -4,7 +4,9 @@ erp5_corporate_identity_leaflet | Leaflet
erp5_corporate_identity_letter | Letter erp5_corporate_identity_letter | Letter
erp5_corporate_identity_release | Release erp5_corporate_identity_release | Release
erp5_corporate_identity_slide | Slide erp5_corporate_identity_slide | Slide
erp5_corporate_identity_web | CI_web
erp5_xhtml_style | Book erp5_xhtml_style | Book
erp5_xhtml_style | CI_web
erp5_xhtml_style | Leaflet erp5_xhtml_style | Leaflet
erp5_xhtml_style | Letter erp5_xhtml_style | Letter
erp5_xhtml_style | Release erp5_xhtml_style | Release
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment