Commit 3dff3d70 authored by Romain Courteaud's avatar Romain Courteaud

erp5_no_style: wip

parent 9af6a669
import json
import cgi
import re
portal = context.getPortalObject()
REQUEST = portal.REQUEST
def _(string_to_escape):
return cgi.escape("%s" % string_to_escape, quote=False)
def __(string_to_escape):
return cgi.escape("%s" % string_to_escape, quote=True)
def dumpshtml(web_section, hal_json):
result = ""
# Show title
result += '<h1>%s</h1>' % _(hal_json['title'])
# Render the embedded form
if ('_embedded' in hal_json) and ('_view' in hal_json['_embedded']):
# Display the form content
form_hal_json = hal_json['_embedded']['_view']
result += '<main>'
for key, value in form_hal_json.items():
if not key.startswith('_'):
if value["type"] == "EditorField":
result += value["default"]
elif value["type"] == "ImageField":
result += '<img src="%s">' % (_(value["default"]), )
result += '</main>'
# Render the web site tree
web_site = web_section.getWebSiteValue()
result += '<footer><ol>'
result += '<li><a href="%s">%s</a></li>' % (_(web_site.absolute_url()), __(web_site.getTranslatedTitle()))
for sub_section_dict in web_site.WebSection_getSiteMapTree(depth=1, include_subsection=1, include_document=1):
result += '<li><a href="%s">%s</a></li>' % (__(sub_section_dict['url']), __(sub_section_dict['translated_title']))
result += '</ol><ul>'
# Language
available_language_set = web_site.getLayoutProperty("available_language_set", default=['en'])
portal = context.getPortalObject()
default_language = web_site.getLayoutProperty("default_available_language", default='en')
website_url_set = {}
root_website_url = web_site.getOriginalDocument().absolute_url()
website_url_pattern = r'^%s(?:%s)*(/|$)' % (
re.escape(root_website_url),
'|'.join('/' + re.escape(x) for x in available_language_set))
for language in available_language_set:
if language == default_language:
website_url_set[language] = re.sub(website_url_pattern, r'%s/\1' % root_website_url, web_section.absolute_url())
else:
website_url_set[language] = re.sub(website_url_pattern, r'%s/%s/\1' % (root_website_url, language), web_section.absolute_url())
for language, url in website_url_set.items():
result += '<li><a href="%s">%s</a></li>' % (__(url), __(language))
result += '</ul><footer>'
# XXX Drop hardcoded portal_skins path
result = '<html><head>' \
'<meta name="viewport"\n' \
'content="width=device-width,height=device-height,' \
'initial-scale=1" />' \
'<style>body {max-width: 40em;}\n' \
'label {display: block;}\n' \
'input:not([type=submit]):not([type=file]) {width: 100%%;}\n' \
'textarea {height: 15em;width: 100%%;}</style>' \
'<script src="portal_skins/erp5_xhtml_style/rsvp.js"></script>' \
'<script src="portal_skins/erp5_xhtml_style/renderjs.js"></script>' \
'<script src="portal_skins/erp5_no_style/nostyle.js"></script>' \
'</head><body>%(body)s</body></html>' % {'body': result}
return result
previous_skin_selection = REQUEST.get('previous_skin_selection', None)
new_skin_name = "Hal"
context.getPortalObject().portal_skins.changeSkin(new_skin_name)
REQUEST.set('portal_skin', new_skin_name)
# REQUEST=None, response=None, view=None, mode='root', query=None, select_list=None, limit=10, local_roles=None, form=None, form_data=None, relative_url=None, list_method=None, default_param_json=None, form_relative_url=None, bulk_list="[]", group_by=None, sort_on=None, selection_domain=None, extra_param_json=None, portal_status_message='', portal_status_level=None, keep_items=None
hal_json = context.ERP5Document_getHateoas(
REQUEST=REQUEST,
view='web_view',
mode='traverse',
relative_url=context.getRelativeUrl()
)
portal.changeSkin(previous_skin_selection)
# XXX aq_parent is only an hack
web_section = REQUEST.get("current_web_section", context.aq_parent)
REQUEST.response.setHeader('Content-Type', 'text/html')
return dumpshtml(web_section, json.loads(hal_json))
<?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>ERP5Document_getHateoas</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>Image_viewAsWeb</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>Base_edit</string> </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>webcontent header bottom</string>
<string>bottom</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>webcontent header bottom</string> </key>
<value>
<list/>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebPage_viewAsWeb</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>WebPage_view</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_view</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>Web Page</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>
</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>default</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</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>
</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>
<tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string encoding="cdata"><![CDATA[
python:\'<iframe width="100%%" height="600" src="%s/asEntireHTML"></iframe>\' % here.absolute_url()
]]></string> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<tuple>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
<tuple/>
</tuple>
</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>enabled</string>
<string>title</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>
</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>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>text_content</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewWebFieldLibrary</string> </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>
</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>here/getTextContent</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>
import cgi
import re
web_site = context
def _(string_to_escape):
return cgi.escape("%s" % string_to_escape, quote=False)
def __(string_to_escape):
return cgi.escape("%s" % string_to_escape, quote=True)
def generateSectionListHTML(result_list, section_list):
if (section_list):
result_list.append('<ul>')
for section in section_list:
result_list.append('<li><a href="%s">%s</a>' % (_(section['url']), __(section['translated_title'])))
generateSectionListHTML(result_list, section['subsection'])
result_list.append('</li>')
result_list.append('</ul>')
# Language
result_list = ['<nav id="language"><ul>']
available_language_set = web_site.getLayoutProperty("available_language_set", default=['en'])
default_language = web_site.getLayoutProperty("default_available_language", default='en')
website_url_set = {}
root_website_url = web_site.getOriginalDocument().absolute_url()
website_url_pattern = r'^%s(?:%s)*(/|$)' % (
re.escape(root_website_url),
'|'.join('/' + re.escape(x) for x in available_language_set))
for language in available_language_set:
if language == default_language:
website_url_set[language] = re.sub(website_url_pattern, r'%s/\1' % root_website_url, web_site.absolute_url())
else:
website_url_set[language] = re.sub(website_url_pattern, r'%s/%s/\1' % (root_website_url, language), web_site.absolute_url())
for language, url in website_url_set.items():
result_list += '<li><a href="%s" hreflang="%s"><abbr lang="%s">%s</abbr></a></li>' % (__(url), _(language), _(language), __(language))
result_list.append('</ul></nav>')
# Sitemap
result_list.append('<nav id="sitemap">')
result_list.append('<a href="%s">%s</a>' % (_(web_site.absolute_url()), __(web_site.getTranslatedTitle())))
generateSectionListHTML(result_list, web_site.WebSection_getSiteMapTree(depth=99, include_subsection=1))
result_list.append('</nav>')
return ''.join(result_list)
......@@ -54,7 +54,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>erp5_web_content_layout</string> </value>
<value> <string>WebSite_generateNavigationHTML</string> </value>
</item>
</dictionary>
</pickle>
......
<?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>fdl_complexity.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>
body {
display: grid;
grid-template-raws: repeat(3, 1fr);
}
body > nav#sitemap {
grid-row: 1;
background-color: #DDD;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
min-height: 2.5em;
align-items: center;
}
body > nav#sitemap > a {
padding-left: 1em;
padding-right: 1em;
}
body > nav#sitemap ul {
margin: 0;
}
body > nav#sitemap ul,
body > nav#sitemap li,
body > nav#sitemap a {
padding: 0;
display: flex;
flex: 1;
}
body > nav#sitemap ul:not(:first-child),
body > nav#sitemap li:not(:first-child),
body > nav#sitemap a:not(:first-child) {
padding: 0 1em;
}
body main {
grid-row: 2;
}
body main fieldset {
border: none;
}
body main fieldset > div {
display: flex;
flex-flow: row nowrap;
}
body main fieldset > div > label {
margin-right: 1em;
font-weight: bold;
min-width: 10%;
}
body > nav#language {
grid-row: 3;
background-color: #DDD;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
min-height: 2.5em;
align-items: center;
}
body > nav#language > a {
padding-left: 1em;
padding-right: 1em;
}
body > nav#language ul {
margin: 0;
}
body > nav#language ul,
body > nav#language li,
body > nav#language a {
padding: 0;
display: flex;
flex: 1;
}
body > nav#language ul:not(:first-child),
body > nav#language li:not(:first-child),
body > nav#language a:not(:first-child) {
padding: 0 1em;
}
<?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>nostyle.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>
/*globals window, document, RSVP, rJS*/
/*globals window, document, RSVP, rJS, XMLHttpRequest, DOMParser, URL,
loopEventListener, history */
/*jslint indent: 2, maxlen: 80*/
(function () {
(function (window, document, RSVP, rJS, XMLHttpRequest, DOMParser, URL,
loopEventListener, history) {
"use strict";
// XXX Copy/paste from renderjs
function ajax(url) {
var xhr;
function resolver(resolve, reject) {
function handler() {
try {
if (xhr.readyState === 0) {
// UNSENT
reject(xhr);
} else if (xhr.readyState === 4) {
// DONE
if ((xhr.status < 200) || (xhr.status >= 300) ||
(!/^text\/html[;]?/.test(
xhr.getResponseHeader("Content-Type") || ""
))) {
reject(xhr);
} else {
resolve(xhr);
}
}
} catch (e) {
reject(e);
}
}
xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.onreadystatechange = handler;
xhr.setRequestHeader('Accept', 'text/html');
xhr.withCredentials = true;
xhr.send();
}
function canceller() {
if ((xhr !== undefined) && (xhr.readyState !== xhr.DONE)) {
xhr.abort();
}
}
return new RSVP.Promise(resolver, canceller);
}
function removeHash(url) {
var index = url.indexOf('#');
if (index > 0) {
url = url.substring(0, index);
}
return url;
}
function scrollToHash(hash) {
var scroll_element = null;
if (hash) {
hash = hash.split('#', 2)[1];
if (hash === undefined) {
hash = "";
}
if (hash) {
scroll_element = document.querySelector(hash);
}
}
if (scroll_element === null) {
window.scrollTo(0, 0);
} else {
scroll_element.scrollIntoView(true);
}
}
function renderPage(gadget, page_url, hash) {
return new RSVP.Queue(RSVP.hash({
xhr: ajax(page_url),
style_gadget: gadget.getDeclaredGadget('renderer')
}))
.push(function (result_dict) {
var dom_parser = (new DOMParser()).parseFromString(
result_dict.xhr.responseText,
'text/html'
);
document.title = dom_parser.title;
return result_dict.style_gadget.render(
dom_parser.body.querySelector('main').innerHTML
);
})
.push(function () {
return scrollToHash(hash);
});
}
function listenURLChange() {
var gadget = this;
// prevent automatic page location restoration
if (history.scrollRestoration) {
history.scrollRestoration = 'manual';
}
function handlePopState() {
return renderPage(gadget, window.location.href, window.location.hash);
}
function handleClick(evt) {
var target_element = evt.target.closest('a'),
base_uri = document.baseURI,
link_url;
if (!target_element) {
// Only handle link
return;
}
if (target_element.target === "_blank") {
// Open in a new tab
return;
}
if (evt.altKey || evt.ctrlKey || evt.metaKey || evt.shiftKey) {
return;
}
link_url = new URL(target_element.href, base_uri);
if (link_url.href.indexOf(base_uri) !== 0) {
// Only handle sub path of the base url
return;
}
if (link_url.hash) {
// If new link has an hash, check if the path/query parts are identical
// if so, do not refresh the content and
// let browser scroll to the correct element
if (removeHash(link_url.href) === removeHash(window.location.href)) {
return;
}
}
evt.preventDefault();
return renderPage(gadget, target_element.href, link_url.hash)
.push(function () {
// Important: pushState must be called AFTER the page rendering
// to ensure popstate listener is correctly working
// when the user will click on back/forward browser buttons
history.pushState(null, null, target_element.href);
}, function (error) {
// Implement support for managed error
// (like URL is not an HTML document parsable)
// and redirect in such case
window.location = target_element.href;
});
}
return RSVP.all([
loopEventListener(window, 'popstate', false, handlePopState, false),
loopEventListener(gadget.element, 'click', false, handleClick,
false)
]);
}
rJS(window)
.ready(function () {
// Hide the page as fast as possible
// this.element.hidden = true;
this.main_element = this.element.querySelector('main');
})
.allowPublicAcquisition("reportServiceError", function () {
this.element.hidden = false;
throw rJS.AcquisitionError();
})
.declareJob("listenURLChange", listenURLChange)
.declareService(function () {
var gadget = this,
style_gadget,
body = gadget.element;
body.hidden = true;
return new RSVP.Queue(RSVP.all([
rJS.declareCSS("https://www.fdl-lef.org/material_design_lite.1.3.0.min.css", document.head),
rJS.declareCSS("https://www.fdl-lef.org/font-awesome.5.1/font-awesome.5.1.css", document.head),
rJS.declareCSS("https://www.fdl-lef.org/fdl_complexity.css", document.head)
]))
// Clear the DOM
while (body.firstChild) {
body.firstChild.remove();
}
return gadget.declareGadget('nostyle_fdl.html', {scope: 'renderer'})
.push(function (result) {
style_gadget = result;
return style_gadget.render(gadget.main_element.innerHTML);
})
.push(function () {
var main = body.querySelector('main');
// Trigger URL handling
gadget.listenURLChange();
body.innerHTML = '';
body.appendChild(main);
body.hidden = false;
body.appendChild(style_gadget.element);
gadget.element.hidden = false;
scrollToHash(window.location.hash);
}, function (error) {
gadget.element.hidden = false;
throw error;
});
console.log('aaaa');
});
}());
\ No newline at end of file
}(window, document, RSVP, rJS, XMLHttpRequest, DOMParser, URL,
loopEventListener, history));
\ No newline at end of file
.flattenNav() {
background-color: #DDD;
// Put the title and the first list on the same line
display: flex;
flex-wrap: wrap;
justify-content: space-between;
// Increase header size
min-height: 2.5em;
align-items: center;
> a {
padding-left: 1em;
padding-right: 1em;
}
ul {
margin: 0;
}
ul, li, a {
padding: 0;
display: flex;
flex: 1;
&:not(:first-child) {
padding: 0 1em;
}
}
}
body {
display: grid;
grid-template-raws: repeat(3, 1fr);
> nav#sitemap {
grid-row: 1;
.flattenNav();
}
main {
grid-row: 2;
fieldset {
border: none;
> div {
display: flex;
flex-flow: row nowrap;
> label {
margin-right: 1em;
font-weight: bold;
min-width: 10%;
}
}
}
}
> nav#language {
grid-row: 3;
.flattenNav();
}
}
\ 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>nostyle.less</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>
body {
/*background-color: black;*/
}
body {max-width: 40em;}
label {display: block;}
input:not([type=submit]):not([type=file]) {width: 100%;}
textarea {height: 15em;width: 100%;}
\ 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>nostyle_demo.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>
<html>
<head>
<link rel="stylesheet" href="nostyle_demo.css">
<script src="portal_skins/erp5_xhtml_style/rsvp.js"></script>
<script src="portal_skins/erp5_xhtml_style/renderjs.js"></script>
<script src="nostyle_demo.js"></script>
</head>
<body>
</body>
</html>
\ 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>nostyle_demo.html</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</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>
/*globals window, document, RSVP, rJS*/
/*jslint indent: 2, maxlen: 80*/
(function () {
"use strict";
rJS(window)
.ready(function () {
this.element.textContent = 'AAAA';
console.log('loaded');
/*
})
.declareService(function () {
var gadget = this,
body = gadget.element;
return new RSVP.Queue(RSVP.all([
rJS.declareCSS("https://www.fdl-lef.org/material_design_lite.1.3.0.min.css", document.head),
rJS.declareCSS("https://www.fdl-lef.org/font-awesome.5.1/font-awesome.5.1.css", document.head),
rJS.declareCSS("https://www.fdl-lef.org/fdl_complexity.css", document.head)
]))
.push(function () {
var main = body.querySelector('main');
body.innerHTML = '';
body.appendChild(main);
body.hidden = false;
});
console.log('aaaa');
*/
});
}());
\ 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>nostyle_demo.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>
<html>
<head>
<link rel="stylesheet" href="https://www.fdl-lef.org/material_design_lite.1.3.0.min.css" />
<link rel="stylesheet" href="https://www.fdl-lef.org/font-awesome.5.1/font-awesome.5.1.css" />
<link rel="stylesheet" href="fdl_complexity.css" />
<!--script type="text/javascript" src="https://www.fdl-lef.org/material_design_lite.1.3.0.min.js"></script>
<script type="text/javascript" src="https://www.fdl-lef.org/material_design_lite.1.3.0.dialog.polyfill.js"></script-->
<script type="text/javascript" src="https://www.fdl-lef.org/siema.carousel.min.js"></script>
<script src="portal_skins/erp5_xhtml_style/rsvp.js"></script>
<script src="portal_skins/erp5_xhtml_style/renderjs.js"></script>
<script src="nostyle_fdl.js"></script>
</head>
<body>
<div class="mdl-layout mdl-js-layout mdl-layout--fixed-header">
<header class="mdl-layout__header rjs-header">
<div class="rjs-header-row mdl-layout__header-row">
<a href="./P-FDL.Website.Page.Landing" class="mdl-button mdl-js-button rjs-header-link rjs-btn"><i class="material-icons">home</i><span class="rjs-button-text">Home</span></a>
<ul class="rjs-header-list">
<li class="rjs-header-list-item"><a href="./P-FDL.Website.Page.Project" class="mdl-button mdl-js-button rjs-header-link rjs-btn"><i class="material-icons">library_books</i><span class="rjs-button-text">Projects</span></a></li>
<li class="rjs-header-list-item"><a href="P-FDL.Website.Page.Donate" class="mdl-button mdl-js-button rjs-header-link rjs-btn"><i class="material-icons">payment</i><span class="rjs-button-text">Donate</span></a></li>
</ul>
<div class="mdl-layout-spacer"></div>
</div>
</header>
<main class="mdl-layout__content rjs-page-content">
<div class="rjs-content-container">
</div>
<footer class="rjs-footer">
<div class="rjs-footer-sub">
<h4 class="rjs-footer-sub-header">About us</h4>
<div class="rjs-footer-wrapper">
<div class="rjs-footer-wrapper-left">
<div class="rjs-navbar">
<h5 class="rjs-navbar-header">What we do?</h5>
<ul class="rjs-navbar-list">
<li class="rjs-navbar-item"><a class="rjs-navbar-link" href="P-FDL.Website.Page.Project">Projects</a></li>
<li class="rjs-navbar-item"><a class="rjs-navbar-link" href="P-FDL.Website.Page.Process">Process</a></li>
<li class="rjs-navbar-item"><a class="rjs-navbar-link" href="P-FDL.Website.Page.Committee">Committee</a></li>
<li class="rjs-navbar-item"><a class="rjs-navbar-link" href="P-FDL.Website.Page.Members">Members</a></li>
<li class="rjs-navbar-item"><a class="rjs-navbar-link" href="P-FDL.Website.Page.Benefits">Benefits</a></li>
</ul>
</div>
<div class="rjs-navbar">
<h5 class="rjs-navbar-header">How can we help?</h5>
<ul class="rjs-navbar-list">
<li class="rjs-navbar-item"><a class="rjs-navbar-link" href="P-FDL.Website.Page.Faq">FAQ</a></li>
<li class="rjs-navbar-item"><a class="rjs-navbar-link" href="P-FDL.Website.Page.Contact">Contact</a></li>
</ul>
</div>
</div>
<div class="rjs-footer-wrapper-center"></div>
<div class="rjs-footer-wrapper-right"></div>
</div>
<h4 class="rjs-footer-sub-header">Follow us</h4>
<div class="rjs-footer-floater">
<a class="rjs-social-media-link" href=""><i class="fab fa fa-facebook"></i></a>
<a class="rjs-social-media-link" href=""><i class="fab fa fa-twitter"></i></a>
<a class="rjs-social-media-link" href=""><i class="fab fa fa-linkedin"></i></a>
</div>
</div>
<div class="rjs-footer-bottom-line">
<h4 class="rjs-footer-bottom-line-header">Related Sites:</h4>
<ul class="rjs-footer-bottom-line-list">
<li class="rjs-footer-bottom-line-item"><a class="rjs-footer-bottom-line-link" href="http://www.afs.one">Free Software Publishers</a></li>
</ul>
<p class="rjs-footer-bottom-line-text">© 2018 - FDL</p>
</div>
</footer>
</main>
</div>
</body>
</html>
\ 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>nostyle_fdl.html</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</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>
/*globals window, document, RSVP, rJS*/
/*jslint indent: 2, maxlen: 80*/
(function () {
"use strict";
rJS(window)
.declareMethod("render", function (main_innerhtml) {
var gadget = this;
var div = document.createElement('div');
div.innerHTML = main_innerhtml;
gadget.element.querySelector('div.rjs-content-container').innerHTML = div.querySelector('div.input').firstChild.innerHTML;
gadget.renderCarousel();
})
.declareJob("renderCarousel", function () {
var gadget = this;
gadget.element.querySelector('main').scrollTo(0, 0);
var carousel = gadget.element.querySelector(".siema");
var s;
if (carousel) {
s = new Siema({
selector: carousel,
easing: 'ease-out',
perPage: 1,
duration: 300,
loop: true
});
document.querySelector('.prev').addEventListener('click', function () {
s.prev();
}, false);
document.querySelector('.next').addEventListener('click', function () {
s.next();
}, false);
// window.componentHandler.upgradeDom();
}
});
}());
\ 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>nostyle_fdl.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>
.mx-0 {
margin-left: 0 !important;
margin-right: 0 !important; }
@-ms-viewport {
width: device-width; }
html {
box-sizing: border-box;
-ms-overflow-style: scrollbar; }
*,
*::before,
*::after {
box-sizing: inherit; }
.container {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
max-width: 540px;
max-width: 720px;
max-width: 960px;
max-width: 1140px; }
.container-fluid {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto; }
.row {
display: flex;
flex-wrap: wrap;
margin-right: -15px;
margin-left: -15px; }
.no-gutters {
margin-right: 0;
margin-left: 0; }
.no-gutters > .col,
.no-gutters > [class*="col-"] {
padding-right: 0;
padding-left: 0; }
.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,
.col-auto {
position: relative;
width: 100%;
min-height: 1px;
padding-right: 15px;
padding-left: 15px; }
.col {
flex-basis: 0;
flex-grow: 1;
max-width: 100%; }
.col-auto {
flex: 0 0 auto;
width: auto;
max-width: none; }
.col-1 {
flex: 0 0 8.33333%;
max-width: 8.33333%; }
.col-2 {
flex: 0 0 16.66667%;
max-width: 16.66667%; }
.col-3 {
flex: 0 0 25%;
max-width: 25%; }
.col-4 {
flex: 0 0 33.33333%;
max-width: 33.33333%; }
.col-5 {
flex: 0 0 41.66667%;
max-width: 41.66667%; }
.col-6 {
flex: 0 0 50%;
max-width: 50%; }
.col-7 {
flex: 0 0 58.33333%;
max-width: 58.33333%; }
.col-8 {
flex: 0 0 66.66667%;
max-width: 66.66667%; }
.col-9 {
flex: 0 0 75%;
max-width: 75%; }
.col-10 {
flex: 0 0 83.33333%;
max-width: 83.33333%; }
.col-11 {
flex: 0 0 91.66667%;
max-width: 91.66667%; }
.col-12 {
flex: 0 0 100%;
max-width: 100%; }
.order-first {
order: -1; }
.order-last {
order: 13; }
.order-0 {
order: 0; }
.order-1 {
order: 1; }
.order-2 {
order: 2; }
.order-3 {
order: 3; }
.order-4 {
order: 4; }
.order-5 {
order: 5; }
.order-6 {
order: 6; }
.order-7 {
order: 7; }
.order-8 {
order: 8; }
.order-9 {
order: 9; }
.order-10 {
order: 10; }
.order-11 {
order: 11; }
.order-12 {
order: 12; }
.offset-1 {
margin-left: 8.33333%; }
.offset-2 {
margin-left: 16.66667%; }
.offset-3 {
margin-left: 25%; }
.offset-4 {
margin-left: 33.33333%; }
.offset-5 {
margin-left: 41.66667%; }
.offset-6 {
margin-left: 50%; }
.offset-7 {
margin-left: 58.33333%; }
.offset-8 {
margin-left: 66.66667%; }
.offset-9 {
margin-left: 75%; }
.offset-10 {
margin-left: 83.33333%; }
.offset-11 {
margin-left: 91.66667%; }
.d-none {
display: none !important; }
.d-inline {
display: inline !important; }
.d-inline-block {
display: inline-block !important; }
.d-block {
display: block !important; }
.d-table {
display: table !important; }
.d-table-row {
display: table-row !important; }
.d-table-cell {
display: table-cell !important; }
.d-flex {
display: flex !important; }
.d-inline-flex {
display: inline-flex !important; }
@media print {
.d-print-none {
display: none !important; }
.d-print-inline {
display: inline !important; }
.d-print-inline-block {
display: inline-block !important; }
.d-print-block {
display: block !important; }
.d-print-table {
display: table !important; }
.d-print-table-row {
display: table-row !important; }
.d-print-table-cell {
display: table-cell !important; }
.d-print-flex {
display: flex !important; }
.d-print-inline-flex {
display: inline-flex !important; } }
.flex-row {
flex-direction: row !important; }
.flex-column {
flex-direction: column !important; }
.flex-row-reverse {
flex-direction: row-reverse !important; }
.flex-column-reverse {
flex-direction: column-reverse !important; }
.flex-wrap {
flex-wrap: wrap !important; }
.flex-nowrap {
flex-wrap: nowrap !important; }
.flex-wrap-reverse {
flex-wrap: wrap-reverse !important; }
.flex-fill {
flex: 1 1 auto !important; }
.flex-grow-0 {
flex-grow: 0 !important; }
.flex-grow-1 {
flex-grow: 1 !important; }
.flex-shrink-0 {
flex-shrink: 0 !important; }
.flex-shrink-1 {
flex-shrink: 1 !important; }
.justify-content-start {
justify-content: flex-start !important; }
.justify-content-end {
justify-content: flex-end !important; }
.justify-content-center {
justify-content: center !important; }
.justify-content-between {
justify-content: space-between !important; }
.justify-content-around {
justify-content: space-around !important; }
.align-items-start {
align-items: flex-start !important; }
.align-items-end {
align-items: flex-end !important; }
.align-items-center {
align-items: center !important; }
.align-items-baseline {
align-items: baseline !important; }
.align-items-stretch {
align-items: stretch !important; }
.align-content-start {
align-content: flex-start !important; }
.align-content-end {
align-content: flex-end !important; }
.align-content-center {
align-content: center !important; }
.align-content-between {
align-content: space-between !important; }
.align-content-around {
align-content: space-around !important; }
.align-content-stretch {
align-content: stretch !important; }
.align-self-auto {
align-self: auto !important; }
.align-self-start {
align-self: flex-start !important; }
.align-self-end {
align-self: flex-end !important; }
.align-self-center {
align-self: center !important; }
.align-self-baseline {
align-self: baseline !important; }
.align-self-stretch {
align-self: stretch !important; }
\ 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>nostyle_syna.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>
<html>
<head>
<link href="nostyle_syna.css" rel="stylesheet">
<link href="https://themes.gohugo.io//theme/syna/style.min.5be84a29588be25ce368c2c2286616c722690b5d9d22c6344ec304c1e8178eb9.css" rel="stylesheet">
<!--script>
window.syna = {
enabledUnsafeEvents: true,
};
</script-->
<!--script src="https://themes.gohugo.io//theme/syna/scripts/syna-head.min.0757f18970a0a32d5acac5a2accc5fe82f787821866c545d9ed17ca765f291a3.js"--></script>
<script src="portal_skins/erp5_xhtml_style/rsvp.js"></script>
<script src="portal_skins/erp5_xhtml_style/renderjs.js"></script>
<script src="nostyle_syna.js"></script>
</head>
<body class="bg-secondary">
<!-- Navigation -->
<nav class="overlay fragment navbar navbar-expand-lg py-2 scroll-spy bg-dark navbar-dark" id="nav" role="navigation" style='position: sticky; top: 0; z-index: 10000 !important;'>
<div class="container">
<!--a class="navbar-brand py-0" href="https://themes.gohugo.io//theme/syna/#">
<img src="https://themes.gohugo.io//theme/syna/images/logo.svg" height="35" class="d-inline-block align-top" alt="Syna">
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button-->
<a class="navbar-brand py-0" href="P-FDL.Website.Page.Landing">
Fonds de Dotation du Libre
</a>
<!--div class="navbar-collapse justify-content-between collapse show" id="navbarCollapse"-->
<div class="justify-content-between show" id="navbarCollapse">
<ul class="navbar-nav"><li class="nav-item">
<a href="P-FDL.Website.Page.Project"
class="nav-link">
Projects
</a>
</li><li class="nav-item">
<a href="P-FDL.Website.Page.Donate"
class="nav-link">
Donate
</a>
</ul>
</div>
</div>
</nav>
<main class="fragment content-fragment">
<div class="container-fluid overlay">
<div class="container py-5 overlay">
</div>
</div>
</main>
<!-- Footer -->
<section id="footer" class="fragment ">
<div class="container-fluid bg-secondary ">
<div class="container py-5 ">
<div class="row">
<div class="col-md m-2 text-body">
<h4></h4>
<a href="P-FDL.Website.Page.Landing">
Fonds de Dotation du Libre
</a>
</div>
<div class="col-md m-2 text-body">
<h4>What we do?</h4>
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link p-0 display-5" href="P-FDL.Website.Page.Project">Projects</a>
</li>
<li class="nav-item">
<a class="nav-link p-0 display-5" href="P-FDL.Website.Page.Process">Process</a>
</li>
<li class="nav-item">
<a class="nav-link p-0 display-5" href="P-FDL.Website.Page.Committee">Committee</a>
</li>
<li class="nav-item">
<a class="nav-link p-0 display-5" href="P-FDL.Website.Page.Members">Members</a>
</li>
<li class="nav-item">
<a class="nav-link p-0 display-5" href="P-FDL.Website.Page.Benefits">Benefits</a>
</li>
</ul>
</div>
<div class="col-md m-2 text-body">
<h4>How can we help?</h4>
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link p-0 display-5" href="P-FDL.Website.Page.Faq">FAQ</a>
</li>
<li class="nav-item">
<a class="nav-link p-0 display-5" href="P-FDL.Website.Page.Contact">Contact</a>
</li>
</ul>
</div>
<div class="col-md m-2 text-body">
<h4>Related sites</h4>
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link p-0 display-5" href="https://www.afs.one">Free Software Publishers</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</section>
</body>
</html>
\ 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>nostyle_syna.html</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</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>
/*globals window, document, RSVP, rJS*/
/*jslint indent: 2, maxlen: 80*/
(function () {
"use strict";
rJS(window)
.declareMethod("render", function (main_innerhtml) {
var gadget = this,
div = document.createElement('div');
div.innerHTML = main_innerhtml;
gadget.element.querySelector('div.py-5').innerHTML = div.querySelector('div.input').firstChild.innerHTML;
});
}());
\ 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>nostyle_syna.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>
......@@ -2,14 +2,10 @@
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
......@@ -24,18 +20,6 @@
<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>
......@@ -49,12 +33,24 @@
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string></string> </value>
<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_web_layout</string> </value>
<value> <string>view_main</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>
......
<tal:block xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<tal:block metal:define-macro="master">
<tal:block tal:define="
dummy python: request.set('is_web_mode', True);
dummy python: request.set('ignore_layout', False);
dummy python: request.set('editable_mode', False);
web_site python: here.getWebSiteValue();
global_definitions_macros here/global_definitions/macros;">
<tal:block metal:use-macro="global_definitions_macros/header_definitions" />
<html>
<head>
<base tal:attributes="href python: '%s/' % web_site.absolute_url()" />
<meta name="viewport" content="width=device-width,height=device-height,initial-scale=1" />
<title tal:content="python: here.getTranslatedTitle() or web_site.getTranslatedTitle()"></title>
<noscript>
<link rel="stylesheet" href="nostyle.css">
</noscript>
<script src="portal_skins/erp5_xhtml_style/rsvp.js"></script>
<script src="portal_skins/erp5_xhtml_style/renderjs.js"></script>
<script src="gadget_global.js"></script>
<script src="nostyle.js"></script>
</head>
<body>
<tal:block tal:content="structure python: web_site.WebSite_generateNavigationHTML()"></tal:block>
<main><tal:block metal:define-slot="main"/></main>
</body>
</html>
</tal:block>
</tal:block>
</tal:block>
\ No newline at end of file
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