Commit 31378a2f authored by Xiaowu Zhang's avatar Xiaowu Zhang

erp5_corporate_identity: add export as contract

parent 8fc24c2d
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/object_exchange</string>
</tuple>
</value>
</item>
<item>
<key> <string>category</string> </key>
<value> <string>object_exchange</string> </value>
</item>
<item>
<key> <string>condition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Generate a book from the current web page.</string> </value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>export_contract</string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
<value>
<tuple>
<string>View</string>
</tuple>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Action Information</string> </value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>25.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Export as Contract</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Expression" module="Products.CMFCore.Expression"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/WebPage_viewExportAsContractDialog</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -3,6 +3,10 @@
<skin_folder>erp5_corporate_identity_book</skin_folder>
<skin_selection>Book,Report</skin_selection>
</skin_folder_selection>
<skin_folder_selection>
<skin_folder>erp5_corporate_identity_contract</skin_folder>
<skin_selection>Contract</skin_selection>
</skin_folder_selection>
<skin_folder_selection>
<skin_folder>erp5_corporate_identity_leaflet</skin_folder>
<skin_selection>Leaflet</skin_selection>
......@@ -25,6 +29,6 @@
</skin_folder_selection>
<skin_folder_selection>
<skin_folder>erp5_xhtml_style</skin_folder>
<skin_selection>Book,CI_web,Leaflet,Letter,Release,Report,Slide</skin_selection>
<skin_selection>Book,CI_web,Contract,Leaflet,Letter,Release,Report,Slide</skin_selection>
</skin_folder_selection>
</registered_skin_selection>
\ No newline at end of file
<?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>WebPage_createContract</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:comment replace="nothing">
"""
================================================================================
Generates the complete contract (only called in HTML version)
================================================================================
"""
</tal:comment>
<tal:block tal:define="contract_raw_tables python: options.get('contract_raw_tables');
contract_raw_report python: options.get('contract_raw_report');
contract_theme python: options.get('contract_theme');
contract_header python: options.get('contract_header');
contract_footer python: options.get('contract_footer');
contract_title python: options.get('contract_title');
contract_language python: options.get('contract_language');
contract_theme_css_font_list python: options.get('contract_theme_css_font_list');
contract_theme_css_url python: options.get('contract_theme_css_url');
contract_template_css_url python: options.get('contract_template_css_url');
contract_report_css_list python: options.get('contract_report_css_list');
contract_report_js_list python: options.get('contract_report_js_list');
contract_embed python: options.get('contract_embed');
contract_short_title python: options.get('contract_short_title');
contract_description python: options.get('contract_description');
contract_source_person_title python: options.get('contract_source_person_title');
contract_include_history python: options.get('contract_include_history');
contract_signature_list python: options.get('contract_signature_list');
contract_version_list python: options.get('contract_version_list');
contract_distribution_list python: options.get('contract_distribution_list');
contract_content python: options.get('contract_content');
contract_format python: options.get('contract_format');
contract_rendering_fix python: options.get('contract_rendering_fix');
contract_logo_url python: options.get('contract_logo_url');
contract_logo_title python: options.get('contract_logo_title');
contract_reference python: options.get('contract_reference');
contract_revision python: options.get('contract_revision');
contract_version python: options.get('contract_version');
contract_short_date python: options.get('contract_short_date');
contract_full_reference python: options.get('contract_full_reference');
contract_source_organisation_title python: options.get('contract_source_organisation_title');
contract_history_section_list python: options.get('contract_history_section_list');
contract_table_of_content python: options.get('contract_table_of_content');">
<!DOCTYPE html>
<html tal:attributes="class python: ''.join(['ci-', contract_theme, ' ci-', contract_language])">
<head>
<meta charset="utf-8">
<title tal:content="python: contract_title"></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<tal:block tal:repeat="font_url contract_theme_css_font_list">
<link rel="stylesheet" tal:attributes="href font_url" />
</tal:block>
<link rel="stylesheet" tal:attributes="href contract_theme_css_url" />
<link rel="stylesheet" tal:attributes="href contract_template_css_url" />
<link rel="stylesheet" href="template_css/highlight.css" />
<tal:block tal:condition="python: len(contract_report_css_list) > 0">
<tal:block tal:repeat="css_href contract_report_css_list">
<link rel="stylesheet" tal:attributes="href css_href" />
</tal:block>
</tal:block>
<script type="text/javascript">
function setPlaceholdersWithUrlParameters() {
var vars={};
var x=window.location.search.substring(1).split('&');
for (var i in x) {var z=x[i].split('=',2);vars[z[0]] = unescape(z[1]);}
var x=['frompage','topage','page','webpage','section','subsection','subsubsection'];
for (var i in x) {
var y = document.getElementsByClassName(x[i]);
for (var j=0; j<y.length; ++j) y[j].textContent = vars[x[i]];
}
}
</script>
</head>
<body class="ci-contract" onload="setPlaceholdersWithUrlParameters()">
<tal:block tal:condition="python: contract_embed != 1">
<tal:block metal:use-macro="context/WebPage_createContractHeader/macros/contract_header" />
<tal:block tal:condition="python: contract_raw_report != True">
<tal:block metal:use-macro="context/WebPage_createContractCover/macros/contract_cover" />
</tal:block>
<tal:block tal:condition="python: contract_include_history">
<tal:block metal:use-macro="context/WebPage_createContractTableOfHistory/macros/contract_history" />
</tal:block>
<tal:block tal:replace="structure contract_table_of_content"></tal:block>
</tal:block>
<tal:block metal:use-macro="context/WebPage_createContractContent/macros/contract_content" />
<tal:block tal:condition="python: contract_embed != 1">
<tal:block metal:use-macro="context/WebPage_createContractFooter/macros/contract_footer" />
</tal:block>
<script type="text/javascript" src="template_js/highlight.js"></script>
<tal:block tal:condition="python: len(contract_report_js_list) > 0">
<tal:block tal:repeat="js_src contract_report_js_list">
<script type="text/javascript" tal:attributes="src js_src"></script>
</tal:block>
</tal:block>
</body>
</html>
</tal:block>
\ No newline at end of file
<?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>WebPage_createContractContent</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:comment replace="nothing">
"""
================================================================================
Creates the Book content.
================================================================================
"""
</tal:comment>
<tal:block tal:define="contract_theme python: options.get('contract_theme');
contract_title python: options.get('contract_title');
contract_language python: options.get('contract_language');
contract_theme_css_font_list python: options.get('contract_theme_css_font_list');
contract_theme_css_url python: options.get('contract_theme_css_url');
contract_template_css_url python: options.get('contract_template_css_url');
contract_report_css_list python: options.get('contract_report_css_list');
contract_report_js_list python: options.get('contract_report_js_list');
contract_short_title python: options.get('contract_short_title');
contract_description python: options.get('contract_description');
contract_source_person_title python: options.get('contract_source_person_title');
contract_content python: options.get('contract_content');
contract_format python: options.get('contract_format');
contract_rendering_fix python: options.get('contract_rendering_fix');">
<!DOCTYPE html>
<html tal:attributes="class python: ''.join(['ci-', contract_theme, ' ci-', contract_language])">
<head>
<meta charset="utf-8">
<title tal:content="python: contract_title"></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<tal:block tal:repeat="font_url contract_theme_css_font_list">
<link rel="stylesheet" tal:attributes="href font_url" />
</tal:block>
<link rel="stylesheet" tal:attributes="href contract_theme_css_url" />
<link rel="stylesheet" tal:attributes="href contract_template_css_url" />
<link rel="stylesheet" href="template_css/highlight.css" />
<tal:block tal:condition="python: len(contract_report_css_list) > 0">
<tal:block tal:repeat="css_href contract_report_css_list">
<link rel="stylesheet" tal:attributes="href css_href" />
</tal:block>
</tal:block>
</head>
<body class="ci-contract ci-contract-content">
<tal:block metal:use-macro="context/WebPage_createContractContent/macros/contract_content" />
<script type="text/javascript" src="template_js/highlight.js"></script>
<tal:block tal:condition="python: len(contract_report_js_list) > 0">
<tal:block tal:repeat="js_src contract_report_js_list">
<script type="text/javascript" tal:attributes="src js_src"></script>
</tal:block>
</tal:block>
<tal:block tal:condition="python: contract_format == 'pdf'">
<tal:block tal:content="structure python: contract_rendering_fix"></tal:block>
</tal:block>
</body>
</html>
</tal:block>
<tal:block tal:condition="python: False">
<tal:block metal:define-macro="contract_content">
<tal:block tal:content="structure python: contract_content"></tal:block>
</tal:block>
</tal:block>
\ No newline at end of file
<?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>WebPage_createContractCover</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:comment replace="nothing">
"""
================================================================================
Creates the Contract cover.
================================================================================
"""
</tal:comment>
<tal:block tal:define="contract_theme python: options.get('contract_theme');
contract_title python: options.get('contract_title');
contract_language python: options.get('contract_language');
contract_theme_css_font_list python: options.get('contract_theme_css_font_list');
contract_theme_css_url python: options.get('contract_theme_css_url');
contract_template_css_url python: options.get('contract_template_css_url');
contract_short_title python: options.get('contract_short_title');
contract_description python: options.get('contract_description');
contract_source_person_title python: options.get('contract_source_person_title');">
<!DOCTYPE html>
<html tal:attributes="class python: ''.join(['ci-', contract_theme, ' ci-', contract_language])">
<head>
<meta charset="utf-8">
<title tal:content="python: contract_title"></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<tal:block tal:repeat="font_url contract_theme_css_font_list">
<link rel="stylesheet" tal:attributes="href font_url" />
</tal:block>
<link rel="stylesheet" tal:attributes="href contract_theme_css_url" />
<link rel="stylesheet" tal:attributes="href contract_template_css_url" />
</head>
<body class="ci-contract">
<tal:block metal:use-macro="context/WebPage_createContractCover/macros/contract_cover" />
</body>
</html>
</tal:block>
<tal:block tal:condition="python: False">
<tal:block metal:define-macro="contract_cover">
<div class="ci-contract-cover ci-document-cover ci-document-print">
<p class="ci-contract-cover-faux-h1" tal:content="python: contract_title"></p>
<p class="ci-contract-cover-faux-h2" tal:content="python: contract_short_title"></p>
<p class="ci-contract-cover-description" tal:content="python: contract_description"></p>
<p class="ci-contract-cover-author-list">
<tal:block tal:repeat="author contract_source_person_title">
<span tal:content="author"></span><tal:block tal:condition="not: repeat/author/end">,</tal:block>
</tal:block>
</p>
</div>
</tal:block>
</tal:block>
\ No newline at end of file
<?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>WebPage_createContractFooter</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:comment replace="nothing">
"""
================================================================================
Creates the Contract footer.
================================================================================
"""
</tal:comment>
<tal:block tal:define="contract_theme python: options.get('contract_theme');
contract_title python: options.get('contract_title');
contract_footer python: options.get('contract_footer');
contract_language python: options.get('contract_language');
contract_theme_css_font_list python: options.get('contract_theme_css_font_list');
contract_theme_css_url python: options.get('contract_theme_css_url');
contract_template_css_url python: options.get('contract_template_css_url');
contract_full_reference python: options.get('contract_full_reference');
contract_source_organisation_title python: options.get('contract_source_organisation_title');">
<!DOCTYPE html>
<html tal:attributes="class python: ''.join(['ci-', contract_theme, ' ci-', contract_language])">
<head>
<meta charset="utf-8">
<title tal:content="python: contract_title"></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<tal:block tal:repeat="font_url contract_theme_css_font_list">
<link rel="stylesheet" tal:attributes="href font_url" />
</tal:block>
<link rel="stylesheet" tal:attributes="href contract_theme_css_url" />
<link rel="stylesheet" tal:attributes="href contract_template_css_url" />
<script type="text/javascript">
function setPlaceholdersWithUrlParameters() {
var vars={};
var x=window.location.search.substring(1).split('&');
for (var i in x) {var z=x[i].split('=',2);vars[z[0]] = unescape(z[1]);}
var x=['frompage','topage','page','webpage','section','subsection','subsubsection'];
for (var i in x) {
var y = document.getElementsByClassName(x[i]);
for (var j=0; j<y.length; ++j) y[j].textContent = vars[x[i]];
}
}
</script>
</head>
<body class="ci-contract" onload="setPlaceholdersWithUrlParameters()">
<tal:block metal:use-macro="context/WebPage_createContractFooter/macros/contract_footer" />
</body>
</html>
</tal:block>
<tal:block tal:condition="python: False">
<tal:block metal:define-macro="contract_footer">
<tal:block tal:condition="python: contract_footer">
<tal:block tal:content="structure python: contract_footer"></tal:block>
</tal:block>
<tal:block tal:condition="python: not contract_footer">
<table class="ci-contract-footer">
<tbody>
<tr>
<td></td>
<td></td>
<td><div>
<span class="ci-contract-header-key" i18n:translate="" i18n:domain="erp5_ui">Page:</span>
<span class="ci-contract-header-value page"></span>
<span class="ci-contract-header-value">/</span>
<span class="ci-contract-header-value topage"></span>
</div></td>
</tr>
</tbody>
</table>
</tal:block>
</tal:block>
</tal:block>
\ No newline at end of file
<?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>WebPage_createContractHeader</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:comment replace="nothing">
"""
================================================================================
Creates the Contract header.
================================================================================
"""
</tal:comment>
<tal:block tal:define="contract_theme python: options.get('contract_theme');
contract_title python: options.get('contract_title');
contract_header python: options.get('contract_header');
contract_language python: options.get('contract_language');
contract_theme_css_font_list python: options.get('contract_theme_css_font_list');
contract_theme_css_url python: options.get('contract_theme_css_url');
contract_template_css_url python: options.get('contract_template_css_url');
contract_logo_url python: options.get('contract_logo_url');
contract_logo_title python: options.get('contract_logo_title');
contract_short_title python: options.get('contract_short_title');
contract_reference python: options.get('contract_reference');
contract_revision python: options.get('contract_revision');
contract_version python: options.get('contract_version');
contract_short_date python: options.get('contract_short_date');">
<!DOCTYPE html>
<html tal:attributes="class python: ''.join(['ci-', contract_theme, ' ci-', contract_language])">
<head>
<meta charset="utf-8">
<title tal:content="python: contract_title"></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<tal:block tal:repeat="font_url contract_theme_css_font_list">
<link rel="stylesheet" tal:attributes="href font_url" />
</tal:block>
<link rel="stylesheet" tal:attributes="href contract_theme_css_url" />
<link rel="stylesheet" tal:attributes="href contract_template_css_url" />
<script type="text/javascript">
function setPlaceholdersWithUrlParameters() {
var vars={};
var x=window.location.search.substring(1).split('&');
for (var i in x) {var z=x[i].split('=',2);vars[z[0]] = unescape(z[1]);}
var x=['frompage','topage','page','webpage','section','subsection','subsubsection'];
for (var i in x) {
var y = document.getElementsByClassName(x[i]);
for (var j=0; j<y.length; ++j) y[j].textContent = vars[x[i]];
}
}
function setImageSize(pic) {
if (pic.naturalWidth / pic.naturalHeight <= 1) {
pic.style.width = "auto";
pic.style.maxWidth = "28mm";
pic.style.maxHeight = "28mm"
pic.style.height = "auto";
}
}
</script>
</head>
<body class="ci-contract" onload="setPlaceholdersWithUrlParameters()">
<tal:block metal:use-macro="context/WebPage_createContractHeader/macros/contract_header" />
</body>
</html>
</tal:block>
<tal:block tal:condition="python: False">
<tal:block metal:define-macro="contract_header">
<tal:block tal:condition="python: contract_header">
<tal:block tal:content="structure python: contract_header"></tal:block>
</tal:block>
<tal:block tal:condition="python: not contract_header">
<table class="ci-contract-header">
<tbody>
<tr>
<td>
</td>
<td>
</td>
<td>
<div class="ci-contract-header-image-wkhtmltopdf-image-wrapper">
<img class="hack" onload="setImageSize(event.srcElement)" tal:attributes="src python: contract_logo_url; alt python: contract_logo_title"/>
</div>
</td>
</tr>
</tbody>
</table>
</tal:block>
</tal:block>
</tal:block>
\ No newline at end of file
<?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>WebPage_createContractTableOfHistory</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:comment replace="nothing">
"""
================================================================================
Creates the Contract sections (version, authors, etc).
================================================================================
"""
</tal:comment>
<tal:block tal:define="contract_theme python: options.get('contract_theme');
contract_title python: options.get('contract_title');
contract_language python: options.get('contract_language');
contract_theme_css_font_list python: options.get('contract_theme_css_font_list');
contract_theme_css_url python: options.get('contract_theme_css_url');
contract_template_css_url python: options.get('contract_template_css_url');
contract_include_history python: options.get('contract_include_history');
contract_history_section_list python: options.get('contract_history_section_list');">
<!DOCTYPE html>
<html tal:attributes="class python: ''.join(['ci-', contract_theme, ' ci-', contract_language])">
<head>
<meta charset="utf-8">
<title tal:content="python: contract_title"></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<tal:block tal:repeat="font_url contract_theme_css_font_list">
<link rel="stylesheet" tal:attributes="href font_url" />
</tal:block>
<link rel="stylesheet" tal:attributes="href contract_theme_css_url" />
<link rel="stylesheet" tal:attributes="href contract_template_css_url" />
</head>
<body class="ci-contract" tal:condition="python: contract_include_history != 0">
<tal:block metal:use-macro="context/WebPage_createContractTableOfHistory/macros/contract_history" />
</body>
</html>
</tal:block>
<tal:block tal:condition="python: False">
<tal:block metal:define-macro="contract_history">
<tal:block tal:repeat="contract_history_section contract_history_section_list">
<tal:block tal:replace="structure contract_history_section"></tal:block>
</tal:block>
</tal:block>
</tal:block>
\ No newline at end of file
<?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>WebPage_createContractTableOfReferences</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:comment replace="nothing">
"""
================================================================================
Creates the Tables of references.
================================================================================
"""
</tal:comment>
<tal:block tal:define="contract_format python: options.get('contract_format');
contract_theme python: options.get('contract_theme');
contract_title python: options.get('contract_title');
contract_language python: options.get('contract_language');
contract_theme_css_font_list python: options.get('contract_theme_css_font_list');
contract_theme_css_url python: options.get('contract_theme_css_url');
contract_template_css_url python: options.get('contract_template_css_url');
contract_include_reference python: options.get('contract_include_reference');
contract_reference_list python: options.get('contract_reference_list');
contract_applicable_document_list python: options.get('contract_applicable_document_list');
contract_abbreviation_list python: options.get('contract_abbreviation_list');
contract_image_list python: options.get('contract_image_list');
contract_table_list python: options.get('contract_table_list');">
<tal:block tal:condition="python: contract_format == 'html' or contract_format == 'mhtml'">
<tal:block metal:use-macro="context/WebPage_createContractTableOfReferences/macros/contract_references" />
</tal:block>
<tal:block tal:condition="python: contract_format == 'pdf'">
<!DOCTYPE html>
<html tal:attributes="class python: ''.join(['ci-', contract_theme, ' ci-', contract_language])">
<head>
<meta charset="utf-8">
<title tal:content="python: contract_title"></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<tal:block tal:repeat="font_url contract_theme_css_font_list">
<link rel="stylesheet" tal:attributes="href font_url" />
</tal:block>
<link rel="stylesheet" tal:attributes="href contract_theme_css_url" />
<link rel="stylesheet" tal:attributes="href contract_template_css_url" />
</head>
<body class="ci-contract" tal:condition="python: contract_include_reference != 0">
<tal:block metal:use-macro="context/WebPage_createContractTableOfReferences/macros/contract_references" />
</body>
</html>
</tal:block>
</tal:block>
<tal:block tal:condition="python: False">
<tal:block metal:define-macro="contract_references">
<tal:comment tal:replace="nothing">We need to recheck in case macro is called directly</tal:comment>
<tal:block tal:condition="python: contract_include_reference != 0">
<h2 i18n:translate="" i18n:domain="erp5_ui">References</h2>
<p i18n:translate="" i18n:domain="erp5_ui">This section provides the list of applicable documents and references.</p>
<h3 i18n:translate="" i18n:domain="erp5_ui">Applicable Documents</h3>
<p i18n:translate="" i18n:domain="erp5_ui">This section provides the list of applicable documents.</p>
<table class="ci-contract-table ci-contract-applicable-list" border="1" width="100%" style="table-layout:fixed;" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th width="9%"><b i18n:translate="" i18n:domain="erp5_ui">ID</b></th>
<th width="56%"><b i18n:translate="" i18n:domain="erp5_ui">Title</b><b>/</b><b i18n:translate="" i18n:domain="erp5_ui">Reference</b></th>
<th width="21%"><b i18n:translate="" i18n:domain="erp5_ui">Document Number</b></th>
<th width="14%"><b i18n:translate="" i18n:domain="erp5_ui">Issue.</b><br /><b i18n:translate="" i18n:domain="erp5_ui">Rev.</b></th>
</tr>
</thead>
<tbody>
<tal:block tal:condition="python: len(contract_applicable_document_list) > 0">
<tal:block tal:repeat="applicable_document contract_applicable_document_list">
<tr>
<td width="9%"><a tal:attributes="id python: applicable_document.get('id')"></a><span tal:content="python: applicable_document.get('id')"></span></td>
<td width="56%" style="text-align:left"><span tal:content="python: applicable_document.get('title')"></span><br/><a tal:attributes="href python: applicable_document.get('href')"><span tal:content="python: applicable_document.get('href')"></span></a></td>
<td width="21%" tal:content="python: applicable_document.get('number')"></td>
<td width="14%" tal:content="python: applicable_document.get('version')"></td>
</tr>
</tal:block>
</tal:block>
</tbody>
</table>
<h3 i18n:translate="" i18n:domain="erp5_ui">Referenced Documents</h3>
<p i18n:translate="" i18n:domain="erp5_ui">This section provides the list of referenced documents.</p>
<table class="ci-contract-table ci-contract-reference-list" border="1" width="100%" style="table-layout:fixed;" cellpadding="2" cellspacing="0">
<thead>
<tr>
<th width="9%"><b i18n:translate="" i18n:domain="erp5_ui">ID</b></th>
<th width="56%"><b i18n:translate="" i18n:domain="erp5_ui">Title</b><b>/</b><b i18n:translate="" i18n:domain="erp5_ui">Reference</b></th>
<th width="21%"><b i18n:translate="" i18n:domain="erp5_ui">Document Number</b></th>
<th width="14%"><b i18n:translate="" i18n:domain="erp5_ui">Issue.</b><br /><b i18n:translate="" i18n:domain="erp5_ui">Rev.</b></th>
</tr>
</thead>
<tbody>
<tal:block tal:condition="python: len(contract_reference_list) > 0">
<tal:block tal:repeat="reference_document contract_reference_list">
<tr>
<td width="9%"><a tal:attributes="id python: reference_document.get('id')"></a><span tal:content="python: reference_document.get('id')"></span></td>
<td width="56%" style="text-align:left"><span tal:content="python: reference_document.get('title')"></span><br/><a tal:attributes="href python: reference_document.get('href')"><span tal:content="python: reference_document.get('href')"></span></a></td>
<td width="21%" tal:content="python: reference_document.get('number')"></td>
<td width="14%" tal:content="python: reference_document.get('version')"></td>
</tr>
</tal:block>
</tal:block>
</tbody>
</table>
<h2 i18n:translate="" i18n:domain="erp5_ui">Abbreviations</h2>
<p i18n:translate="" i18n:domain="erp5_ui">This section provides the lists of the applicable abbreviations.</p>
<table border="1" class="ci-contract-table ci-contract-abbreviation-list" width="100%" style="table-layout:fixed;" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th width="10%"><b i18n:translate="" i18n:domain="erp5_ui">ID</b></th>
<th width="15%"><b i18n:translate="" i18n:domain="erp5_ui">Abbreviation</b></th>
<th width="31%"><b i18n:translate="" i18n:domain="erp5_ui">Title</b></th>
<th width="43%"><b i18n:translate="" i18n:domain="erp5_ui">Description</b></th>
</tr>
</thead>
<tbody>
<tal:block tal:condition="python: len(contract_abbreviation_list) > 0">
<tal:block tal:repeat="abbreviation contract_abbreviation_list">
<tr>
<td width="9%"><a tal:attributes="id python: abbreviation.get('id')"></a><span tal:content="python: abbreviation.get('id')"></span></td>
<td width="56%" style="text-align:left"><a tal:attributes="href python: abbreviation.get('href')"><span tal:content="python: abbreviation.get('abbreviation')"></span></a></td>
<td width="21%" style="text-align:left" tal:content="python: abbreviation.get('title')"></td>
<td width="14%" style="text-align:left" tal:content="python: abbreviation.get('description')"></td>
</tr>
</tal:block>
</tal:block>
</tbody>
</table>
<h2 i18n:translate="" i18n:domain="erp5_ui">Figures</h2>
<p i18n:translate="" i18n:domain="erp5_ui">This section provides the list of figures and images.</p>
<table border="1" class="ci-contract-table ci-contract-figure-list" width="100%" style="table-layout:fixed;" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th width="10%"><b i18n:translate="" i18n:domain="erp5_ui">ID</b></th>
<th width="90%"><b i18n:translate="" i18n:domain="erp5_ui">Title</b></th>
</tr>
</thead>
<tbody>
<tal:block tal:condition="python: len(contract_image_list) > 0">
<tal:block tal:repeat="image contract_image_list">
<tr>
<td width="10%"><a tal:attributes="id python: image.get('id')"></a><span tal:content="python: image.get('id')"></span></td>
<td width="90%" style="text-align: left; vertical-align: top" tal:content="python: image.get('title')"></td>
</tr>
</tal:block>
</tal:block>
</tbody>
</table>
<h2 i18n:translate="" i18n:domain="erp5_ui">Tables</h2>
<p i18n:translate="" i18n:domain="erp5_ui">This section provides the list of tables.</p>
<table border="1" class="ci-contract-table ci-contract-figure-list" width="100%" style="table-layout:fixed;" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th width="10%"><b i18n:translate="" i18n:domain="erp5_ui">ID</b></th>
<th width="90%"><b i18n:translate="" i18n:domain="erp5_ui">Title</b></th>
</tr>
</thead>
<tbody>
<tal:block tal:condition="contract_table_list">
<tal:block tal:repeat="table contract_table_list">
<tr>
<td width="10%"><a tal:attributes="id python: table.get('id')"></a><span tal:content="python: table.get('id')"></span></td>
<td width="90%" style="text-align: left; vertical-align: top" tal:content="python: table.get('title')"></td>
</tr>
</tal:block>
</tal:block>
</tbody>
</table>
</tal:block>
</tal:block>
</tal:block>
\ No newline at end of file
<?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>WebPage_createContractXslTableOfContent</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>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:outline="http://wkhtmltopdf.org/outline"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="html" encoding="utf-8" indent="yes" doctype-system="about:legacy-compat"/>
<xsl:template match="outline:outline">
<xsl:param name="count" select="0" />
<html>
<head>
<title>Table of Contents</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
/* punt at fixing overlaps */
html, body {
overflow-x: initial !important;
}
/* font */
.ci-contract-table-of-content ol,
.ci-contract-table-of-content li,
.ci-contract-table-of-content a,
.ci-contract-table-of-content span {
font-family: "Roboto", Arial, 'Noto Sans Sc', SimHei, STXihei, sans-serif;
}
.ci-contract-faux-h1 {
font-family: "Roboto", Arial, 'Noto Sans Sc', SimHei, STXihei, sans-serif;
}
/* size */
.ci-contract-table-of-content ol {
font-size: 20px;
}
.ci-contract-table-of-content ol ol {
font-size: 18px;
}
.ci-contract-faux-h1 {
font-size: 36px;
}
/* indent */
/* h1 */
.ci-contract-table-of-content ol {
text-indent: 0;
}
/* h2 */
.ci-contract-table-of-content ol ol {
text-indent: 3em;
}
/* h3 */
.ci-contract-table-of-content ol ol ol {
text-indent: 6em;
}
/* h4 */
.ci-contract-table-of-content ol ol ol ol {
text-indent: 9em;
}
/* h5 */
.ci-contract-table-of-content ol ol ol ol ol {
text-indent: 12em;
}
/* h6 */
.ci-contract-table-of-content ol ol ol ol ol ol {
text-indent: 15em;
}
/* spacing, what misery */
.ci-contract-helper {
margin: 0;
padding: 0;
}
.ci-contract-table-of-content-lead-item:not(:first-child) {
padding-top: 10mm;
}
/* dotted lines */
.ci-contract-table-of-content ol li div {
position: relative;
overflow: hidden;
}
.ci-contract-table-of-content ol li div:after {
content: "";
position: absolute;
bottom: 3px;
width: 100%;
border-bottom: 1px dotted #000;
z-index: 500;
}
/* line-height */
.ci-contract-table-of-content ol li div {
height: 28px;
line-height: 24px;
}
.ci-contract-table-of-content ol ol li div {
height: 24px;
line-height: 20px;
}
/* numbering x.x.x.x */
.ci-contract-table-of-content ol li {
counter-increment: item;
}
.ci-contract-table-of-content ol li div:before {
content: counters(item, ".") ". ";
padding-right: 0.5em;
}
.ci-contract-table-of-content li ol li div:before {
content: counters(item, ".") " ";
}
/* general styling */
.ci-contract-table-of-content {
display: block;
width: 100%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding-right: 10px;
}
.ci-contract-table-of-content ol {
counter-reset: item;
list-style-type: none;
margin: 0;
padding: 0;
display: block;
width: inherit;
}
.ci-contract-table-of-content li ol li {
margin: 0;
}
/* page numbers */
.ci-contract-table-of-content span {
float: right;
position: relative;
}
/* hail mary coverup */
.ci-contract-table-of-content span:before {
content: "";
height: 4px;
width: 22px;
position: absolute;
background-color: #fff;
bottom: -4px;
right: -1px;
z-index: 1000;
}
.ci-contract-table-of-content a {
text-decoration:none;
color: black;
}
.ci-contract-faux-h1 {
text-align: left;
font-weight: normal;
margin-top: 24mm;
margin-bottom: 12%;
}
</style>
</head>
<body class="ci-contract-toc">
<p class="ci-contract-faux-h1" tal:content="python: options.get('contract_toc_title') or ''">Table of Contents</p>
<div class="ci-contract-table-of-content">
<p class="ci-contract-helper"></p>
<ol>
<xsl:apply-templates select="outline:item/outline:item">
<xsl:with-param name="count" select="$count" />
</xsl:apply-templates>
</ol>
</div>
</body>
</html>
</xsl:template>
<xsl:template match="outline:item">
<xsl:param name="count" />
<xsl:choose>
<xsl:when test="number($count)=0">
<li class="ci-contract-table-of-content-lead-item">
<xsl:if test="@title!=''">
<div>
<a>
<xsl:if test="@link">
<xsl:attribute name="href"><xsl:value-of select="@link"/></xsl:attribute>
</xsl:if>
<xsl:if test="@backLink">
<xsl:attribute name="name"><xsl:value-of select="@backLink"/></xsl:attribute>
</xsl:if>
<xsl:value-of select="@title" />
</a>
<span><xsl:value-of select="@page" /> </span>
</div>
</xsl:if>
<ol>
<xsl:comment>added to prevent self-closing tags in QtXmlPatterns</xsl:comment>
<xsl:apply-templates select="outline:item"></xsl:apply-templates>
</ol>
</li>
</xsl:when>
<xsl:otherwise>
<li>
<xsl:if test="@title!=''">
<div>
<a>
<xsl:if test="@link">
<xsl:attribute name="href"><xsl:value-of select="@link"/></xsl:attribute>
</xsl:if>
<xsl:if test="@backLink">
<xsl:attribute name="name"><xsl:value-of select="@backLink"/></xsl:attribute>
</xsl:if>
<xsl:value-of select="@title" />
</a>
<span><xsl:value-of select="@page" /> </span>
</div>
</xsl:if>
<ol>
<xsl:comment>added to prevent self-closing tags in QtXmlPatterns</xsl:comment>
<xsl:apply-templates select="outline:item"></xsl:apply-templates>
</ol>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
\ No newline at end of file
......@@ -58,8 +58,8 @@ for header in re.findall("<h[1-6].*?</h[1-6]>", doc_content or blank):
closer = int(header_current) * '</ol>'
insert = ''.join([
'<section class="ci-book-table-of-content">',
'<p class="ci-book-toc-faux-h1">%s</p>' % (doc_toc_title or "Table of Contents"),
'<section class="ci-%s-table-of-content">' % type,
'<p class="ci-%s-toc-faux-h1">%s</p>' % (type, doc_toc_title or "Table of Contents"),
table_of_content,
closer,
'</section>'
......
......@@ -50,7 +50,7 @@
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>doc_content=None, doc_reference=None, doc_toc_title=None</string> </value>
<value> <string>doc_content=None, doc_reference=None, doc_toc_title=None, type=\'book\'</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......
return context.WebPage_viewAsContract(
document_save=document_save,
display_svg=display_svg,
batch_mode=batch_mode,
include_content_table=include_content_table,
include_history_table=include_history_table,
include_reference_table=include_reference_table,
include_linked_content=include_linked_content,
include_report_content=include_report_content,
format=format,
**kw
)
<?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>format=None, include_content_table=None,include_history_table= None,include_reference_table=None,include_linked_content=None,include_report_content=None,batch_mode=False,display_svg=None,document_save=None, **kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebPage_exportAsContract</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
from Products.ERP5Type.Message import translateString
if dialog_id is not None:
return context.Base_redirect(
dialog_id,
keep_items = dict(
portal_status_message=translateString('Preview updated.'),
cancel_url=cancel_url,
portal_skin=portal_skin,
format=format,
display_svg=display_svg,
document_save=document_save,
include_content_table=include_content_table,
include_history_table=include_history_table,
include_reference_table=include_reference_table,
include_linked_content=include_linked_content,
include_report_content=include_report_content,
#**kw
)
)
<?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>dialog_id=None, cancel_url=None, portal_skin=None, include_content_table=None, include_history_table= None, include_reference_table=None, include_linked_content=None, include_report_content=None, format=None,display_svg=None,document_save=None, *args,**kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebPage_updateContractDialog</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
import re
from base64 import b64encode
blank = ''
pref = context.getPortalObject().portal_preferences
contract_format = kw.get('format') or 'html'
contract_save = int(kw.get('document_save') or 0)
contract_display_svg = kw.get('display_svg') or 'png'
contract_include_content_table = int(kw.get('include_content_table') or 0)
contract_include_history_table = int(kw.get('include_history_table') or 0)
contract_include_reference_table = int(kw.get('include_reference_table') or 0)
contract_include_linked_content = int(kw.get('include_linked_content') or 0)
contract_include_report_content = int(kw.get('include_report_content') or 0)
override_batch_mode = kw.get('batch_mode')
contract_relative_url = context.getRelativeUrl()
#contract_prefix = pref.getPreferredCorporateIdentityTemplateContractDocumentPrefix() or "Contract."
contract_prefix='Contract.'
contract_rendering_fix = context.WebPage_getPdfOutputRenderingFix() or blank
contract_content = context.getTextContent()
contract_aggregate_list = []
contract_revision = context.getRevision()
contract_modification_date = context.getModificationDate()
contract_language = context.getLanguage()
contract_reference = context.getReference()
contract_short_title = context.getShortTitle()
contract_version = context.getVersion() or "001"
contract_description = context.getDescription()
contract_title = context.getTitle()
if isinstance(contract_content, unicode):
contract_content = contract_content.encode("UTF-8")
contract_history_section_list = re.findall('<section.+?>.+?</section>', contract_content, re.S)
for contract_history_section in contract_history_section_list:
contract_content = contract_content.replace(contract_history_section, '')
for header in re.findall("<h[1-6].*</h[1-6]>", contract_content or ""):
convert_to_h2 = True
for tag in ['introduction', 'annex', 'appendix']:
if tag in header.lower():
convert_to_h2 = False
break
if convert_to_h2:
header_list = re.findall("<(h[1-6]).*>", header)
if len(header_list):
tag = header_list[0]
contract_content = contract_content.replace(
header,
header.replace(tag, 'h2')
)
# override for tests
if override_batch_mode:
contract_modification_date = DateTime("1976-11-04")
contract_revision = "1"
contract_short_date = contract_modification_date.strftime('%Y-%m-%d')
if contract_language:
context.REQUEST['AcceptLanguage'].set(contract_language, 10)
else:
contract_language = blank
if not contract_reference:
contract_reference = contract_prefix + contract_title.replace(" ", ".")
contract_full_reference = '-'.join([contract_reference, contract_version, contract_language])
# ------------------------------- Theme ----------------------------------------
contract_theme = context.Base_getThemeDict(doc_format=contract_format, css_path="template_css/contract", skin="Contract")
# --------------------------- Source/Destination -------------------------------
contract_source = context.Base_getSourceDict(
theme_logo_url=contract_theme.get("theme_logo_url", None)
)
# --------------------------- Content Upgrades ---------------------------------
contract_reference_list = []
contract_report_css_list = contract_report_js_list = []
contract_applicable_document_list = []
contract_abbreviation_list = []
contract_image_list = []
contract_table_list = []
contract_table_of_content = blank
# old generate book, this embed link like <a href="Template.Test.context.Embeddable.Document">This link should be embedded</a>
if contract_include_linked_content:
contract_content = context.WebPage_embedLinkedDocumentList(doc_content=contract_content)
# embed reports, link like <a href="project_module/1234?report=bam>, which has report=
if contract_include_report_content:
contract_report_css_list = pref.getPreferredCorporateIdentityTemplateReportCssList() or []
contract_report_js_list = pref.getPreferredCorporateIdentityTemplateReportJsList() or []
contract_content = context.WebPage_embedReportDocumentList(doc_content=contract_content, doc_language=contract_language, doc_format=contract_format)
# table of links
if contract_include_reference_table:
contract_link_list = context.WebPage_createLinkOverview(contract_content)
table_link_list = context.WebPage_createTableOverview(contract_content)
image_link_list = context.WebPage_createImageOverview(contract_content)
for referenced_document in contract_link_list.get("reference_list", []):
contract_reference_list.append(referenced_document.get("item"))
contract_content = contract_content.replace(referenced_document.get("input"), referenced_document.get("output"),1)
for applicable_document in contract_link_list.get("applicable_list", []):
contract_applicable_document_list.append(applicable_document.get("item"))
contract_content = contract_content.replace(applicable_document.get("input"), applicable_document.get("output"),1)
for abbreviation in contract_link_list.get("abbreviation_list", []):
contract_abbreviation_list.append(abbreviation.get("item"))
contract_content = contract_content.replace(abbreviation.get("input"), abbreviation.get("output"),1)
for figure in image_link_list.get("figure_list", []):
contract_image_list.append(figure.get("item"))
contract_content = contract_content.replace(figure.get("input"), figure.get("output"), 1)
for table in table_link_list.get("table_list", []):
contract_table_list.append(table.get("item"))
contract_content = contract_content.replace(table.get("input"), table.get("output"), 1)
# in order for the reference tables to be in the table of content, they must
# be added beforehand to content
contract_references = context.WebPage_createContractTableOfReferences(
contract_format=contract_format,
contract_theme=contract_theme.get("theme"),
contract_title=contract_title,
contract_language=contract_language,
contract_theme_css_font_list=contract_theme.get("theme_css_font_list"),
contract_theme_css_url=contract_theme.get("theme_css_url"),
contract_template_css_url=contract_theme.get("template_css_url"),
contract_include_reference=contract_include_reference_table,
contract_reference_list=contract_reference_list,
contract_applicable_document_list=contract_applicable_document_list,
contract_abbreviation_list=contract_abbreviation_list,
contract_image_list=contract_image_list,
contract_table_list=contract_table_list
)
contract_references = context.Base_unescape(contract_references)
contract_content = contract_content.replace("${WebPage_insertTableOfReferences}", contract_references.encode('UTF-8').strip())
else:
contract_content = contract_content.replace("${WebPage_insertTableOfReferences}", blank)
# table of content has to be created manually to run over everything that
# should be indexed in the toc
if contract_include_content_table:
contract_translated_toc_title = context.Base_translateString("Table of Contents", lang=contract_language)
if contract_format == "pdf":
contract_table_of_content = context.WebPage_createContractXslTableOfContent(
contract_toc_title=contract_translated_toc_title,
).encode('UTF-8').strip()
elif contract_format == "html":
contract_content, contract_table_of_content = context.WebPage_createTableOfContent(
doc_content=contract_content,
doc_reference=contract_reference,
doc_toc_title=contract_translated_toc_title,
type='contract'
)
for image in re.findall('(<img.*?/>)', contract_content):
contract_content = contract_content.replace(
image,
context.WebPage_validateImage(
img_string=image,
img_svg_format=contract_display_svg,
img_wrap=True
)
)
# ============================ Transformation ==================================
# ========================== Format: mhtml/html ================================
if contract_format == "html" or contract_format == "mhtml":
context.REQUEST.RESPONSE.setHeader("Content-Type", "text/html; charset=utf-8")
contract_output = context.WebPage_createContract(
contract_history_section_list = contract_history_section_list,
contract_theme=contract_theme.get("theme"),
contract_title=contract_title,
contract_language=contract_language,
contract_theme_css_font_list=contract_theme.get("theme_css_font_list"),
contract_theme_css_url=contract_theme.get("theme_css_url"),
contract_template_css_url=contract_theme.get("template_css_url"),
contract_report_css_list=contract_report_css_list,
contract_report_js_list=contract_report_js_list,
contract_short_title=contract_short_title,
contract_description=contract_description,
contract_source_person_title=contract_source.get("contributor_title_string").split(','),
contract_include_history=contract_include_history_table,
contract_logo_url=context.Base_setUrl(path=contract_source.get("enhanced_logo_url"), display="small"),
contract_logo_title=contract_theme.get("theme_logo_description"),
contract_reference=contract_reference,
contract_revision=contract_revision,
contract_version=contract_version,
contract_short_date=contract_short_date,
contract_full_reference=contract_full_reference,
contract_source_organisation_title=contract_source.get("organisation_title") or blank,
contract_content=contract_content,
contract_table_of_content=contract_table_of_content
)
if contract_format == "html":
return context.Base_finishWebPageCreation(
doc_save=contract_save,
doc_version=contract_version,
doc_title=contract_title,
doc_relative_url=contract_relative_url,
doc_aggregate_list=contract_aggregate_list,
doc_language=contract_language,
doc_modification_date=contract_modification_date,
doc_reference=contract_reference,
doc_full_reference=contract_full_reference,
doc_html_file=contract_output
)
return context.Base_convertHtmlToSingleFile(contract_output, allow_script=True)
# ============================= Format: pdf ====================================
elif contract_format == "pdf":
contract_cover = context.WebPage_createContractCover(
contract_theme=contract_theme.get("theme"),
contract_title=contract_title,
contract_language=contract_language,
contract_theme_css_font_list=contract_theme.get("theme_css_font_list"),
contract_theme_css_url=contract_theme.get("theme_css_url"),
contract_template_css_url=contract_theme.get("template_css_url"),
contract_short_title=contract_short_title,
contract_description=contract_description,
contract_source_person_title=contract_source.get("contributor_title_string").split(",")
)
contract_history = context.WebPage_createContractTableOfHistory(
contract_history_section_list = contract_history_section_list,
contract_theme=contract_theme.get("theme"),
contract_title=contract_title,
contract_language=contract_language,
contract_theme_css_font_list=contract_theme.get("theme_css_font_list"),
contract_theme_css_url=contract_theme.get("theme_css_url"),
contract_theme_logo_url=context.Base_setUrl(path=contract_source.get("enhanced_logo_url"), display="small"),
contract_theme_logo_alt=contract_theme.get("theme_logo_alt"),
contract_template_css_url=contract_theme.get("template_css_url"),
contract_include_history=contract_include_history_table
)
# contract_references created and added above
contract_content = context.WebPage_createContractContent(
contract_format=contract_format,
contract_rendering_fix=contract_rendering_fix,
contract_theme=contract_theme.get("theme"),
contract_title=contract_title,
contract_language=contract_language,
contract_theme_css_font_list=contract_theme.get("theme_css_font_list"),
contract_theme_css_url=contract_theme.get("theme_css_url"),
contract_template_css_url=contract_theme.get("template_css_url"),
contract_report_css_list=contract_report_css_list,
contract_report_js_list=contract_report_js_list,
contract_content=contract_content,
)
contract_head = context.WebPage_createContractHeader(
contract_theme=contract_theme.get("theme"),
contract_title=contract_title,
contract_language=contract_language,
contract_theme_css_font_list=contract_theme.get("theme_css_font_list"),
contract_theme_css_url=contract_theme.get("theme_css_url"),
contract_template_css_url=contract_theme.get("template_css_url"),
contract_logo_url=context.Base_setUrl(path=contract_source.get("enhanced_logo_url"), display="small"),
contract_logo_title=contract_theme.get("theme_logo_description"),
contract_short_title=contract_short_title,
contract_reference=contract_reference,
contract_revision=contract_revision,
contract_version=contract_version,
contract_short_date=contract_short_date
)
contract_foot = context.WebPage_createContractFooter(
contract_theme=contract_theme.get("theme"),
contract_title=contract_title,
contract_language=contract_language,
contract_theme_css_font_list=contract_theme.get("theme_css_font_list"),
contract_theme_css_url=contract_theme.get("theme_css_url"),
contract_theme_logo_url=context.Base_setUrl(path=contract_source.get("enhanced_logo_url"), display="small"),
contract_theme_logo_alt=contract_theme.get("theme_logo_description"),
contract_template_css_url=contract_theme.get("template_css_url"),
contract_full_reference=contract_full_reference,
contract_source_organisation_title=contract_source.get("organisation_title") or blank,
)
# ================ encode and build cloudoo elements =========================
header_embedded_html_data = context.Base_convertHtmlToSingleFile(contract_head, allow_script=True)
before_toc_data_list = [
b64encode(context.Base_convertHtmlToSingleFile(contract_cover, allow_script=True)),
]
after_toc_data_list = []
if contract_include_history_table:
before_toc_data_list.append(
b64encode(context.Base_convertHtmlToSingleFile(contract_history, allow_script=True))
)
#if contract_include_reference_table:
# after_toc_data_list.append(
# b64encode(context.Base_convertHtmlToSingleFile(contract_references, allow_script=True))
# )
xsl_style_sheet_data = contract_table_of_content
embedded_html_data = context.Base_convertHtmlToSingleFile(contract_content, allow_script=True)
footer_embedded_html_data = context.Base_convertHtmlToSingleFile(contract_foot, allow_script=True)
margin_top = 40
margin_bottom = 20
pdf_file = context.Base_cloudoooDocumentConvert(embedded_html_data, "html", "pdf", conversion_kw=dict(
encoding="utf8",
margin_top=margin_top,
margin_bottom=margin_bottom,
toc=True if contract_include_content_table else False,
before_toc_data_list=before_toc_data_list,
xsl_style_sheet_data=b64encode(xsl_style_sheet_data),
after_toc_data_list=after_toc_data_list,
header_html_data=b64encode(header_embedded_html_data),
header_spacing=10,
footer_html_data=b64encode(footer_embedded_html_data),
footer_spacing=3,
)
)
return context.WebPage_finishPdfCreation(
doc_save=contract_save,
doc_version=contract_version or "001",
doc_title=contract_title,
doc_relative_url=contract_relative_url,
doc_aggregate_list=contract_aggregate_list,
doc_language=contract_language,
doc_modification_date=contract_modification_date,
doc_reference=contract_reference,
doc_full_reference=contract_full_reference,
doc_pdf_file=pdf_file
)
<?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>*args,**kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebPage_viewAsContract</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>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string>WebPage_exportAsContract</string> </value>
</item>
<item>
<key> <string>action_title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Export this web page as a Contract in the chosen format.</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>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>
<string>format</string>
<string>include_history_table</string>
<string>include_content_table</string>
<string>include_reference_table</string>
<string>display_svg</string>
<string>document_save</string>
<string>portal_skin</string>
</list>
</value>
</item>
<item>
<key> <string>right</string> </key>
<value>
<list>
<string>include_linked_content</string>
<string>include_report_content</string>
</list>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebPage_viewExportAsContractDialog</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>WebPage_viewExportAsContractDialog</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_dialog</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>Export Contract</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>WebPage_updateContractDialog</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="EditorField" module="Products.ERP5Form.EditorField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>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>
<item>
<key> <string>line_too_long</string> </key>
<value> <string>A line was too long.</string> </value>
</item>
<item>
<key> <string>required_not_found</string> </key>
<value> <string>Input is required but no input given.</string> </value>
</item>
<item>
<key> <string>too_long</string> </key>
<value> <string>You entered too many characters.</string> </value>
</item>
<item>
<key> <string>too_many_lines</string> </key>
<value> <string>You entered too many lines.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></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> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_linelength</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_lines</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>text_editor</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</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>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<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> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_linelength</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_lines</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>text_editor</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>unicode</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>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string>page</string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>The content of the document considered as a text 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>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>40</int> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>max_length</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_linelength</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>max_lines</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>required</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>text_editor</string> </key>
<value> <string>codemirror</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Content</string> </value>
</item>
<item>
<key> <string>unicode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>whitespace_preserve</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>100</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="500" style="background-color:#FFFFFF;box-sizing:border-box;-wekbit-box-sizing:border-box;" src="%s/WebPage_viewAsWeb?portal_skin=Contract&amp;override_document_description=%s&amp;override_document_short_title=%s&amp;override_document_title=%s&amp;override_document_version=%s&amp;override_logo_reference=%s&amp;override_source_organisation_title=%s&amp;override_source_person_title=%s&amp;include_content_table=%s&amp;include_history_table=%s&amp;include_reference_table=%s&amp;include_linked_content=%s&amp;include_report_content=%s&amp;display_svg=%s" name="default_version"></iframe>\' % (context.absolute_url(), context.REQUEST.get("override_document_description", ""), context.REQUEST.get("override_document_short_title", ""), context.REQUEST.get("override_document_title", ""), context.REQUEST.get("override_document_version", ""), context.REQUEST.get("override_logo_reference", ""), context.REQUEST.get("override_source_organisation_title", ""), context.REQUEST.get("override_source_person_title", ""),context.REQUEST.get("include_content_table", 0), context.REQUEST.get("include_history_table", 0),context.REQUEST.get("include_reference_table", 0),context.REQUEST.get("include_linked_content", 0),context.REQUEST.get("include_report_content", 0), context.REQUEST.get("display_svg", "png"))
]]></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>default</string>
<string>description</string>
<string>items</string>
<string>orientation</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>display_svg</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>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string></string> </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>items</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>orientation</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>default</string> </key>
<value> <string>png</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Format to display SVG images in.</string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_radio_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>items</string> </key>
<value>
<list>
<tuple>
<string>svg</string>
<string>svg</string>
</tuple>
<tuple>
<string>png</string>
<string>png</string>
</tuple>
</list>
</value>
</item>
<item>
<key> <string>orientation</string> </key>
<value> <string>horizontal</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Svg Output Format</string> </value>
</item>
</dictionary>
</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>default</string>
<string>description</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>document_save</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>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string></string> </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>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Save generated document in Document module.</string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_checkbox</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Save in Document Module</string> </value>
</item>
</dictionary>
</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>default</string>
<string>description</string>
<string>enabled</string>
<string>items</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>format</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>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </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>items</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string>html</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Document output format.</string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_dialog_mode_format</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>items</string> </key>
<value>
<list>
<tuple>
<string>html</string>
<string>html</string>
</tuple>
<tuple>
<string>pdf</string>
<string>pdf</string>
</tuple>
<tuple>
<string>mhtml</string>
<string>mhtml</string>
</tuple>
</list>
</value>
</item>
</dictionary>
</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>default</string>
<string>description</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>include_content_table</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>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string></string> </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>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Display table of content.</string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_checkbox</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Include Table Of Content</string> </value>
</item>
</dictionary>
</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>default</string>
<string>description</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>include_history_table</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>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string></string> </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>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Display table of versions and signatures.</string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_checkbox</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Include History Table</string> </value>
</item>
</dictionary>
</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>default</string>
<string>description</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>include_linked_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>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string></string> </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>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Embed linked internal documents.</string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_checkbox</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Embed Linked Documents</string> </value>
</item>
</dictionary>
</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>default</string>
<string>description</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>include_reference_table</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>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string></string> </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>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Display table of references.</string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_checkbox</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Include Reference Tables</string> </value>
</item>
</dictionary>
</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>default</string>
<string>description</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>include_report_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>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <string></string> </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>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Generate and embed linked report documents.</string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_checkbox</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewFieldLibrary</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Embed Report Documents</string> </value>
</item>
</dictionary>
</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>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>portal_skin</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>
</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> <string></string> </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>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>hidden</string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string>Book</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Portal skin to be used.</string> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>your_portal_skin</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
<value> <string>Base_viewDialogFieldLibrary</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Portal Skin</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
/* === font-size === */
.ci-contract h1 {
font-size: 12.7mm; /* 36pt; */ /* 48px; */
}
.ci-contract h2 {
font-size: 7.9375mm; /* 22.5pt; */ /* 30px; */
}
.ci-contract h3 {
font-size: 6.879167mm; /* 19.5pt; */ /* 26px; */
}
.ci-contract .ci-contract-header .ci-contract-header-title
/*,
.ci-contract table thead tr:first-child:nth-last-child(2) th,
.ci-contract table thead tr:first-child:nth-last-child(2) td
*/
{
font-size: 6.35mm; /* 18pt; */ /* 24px; */
}
.ci-contract div.ci-contract-box-offer span,
.ci-contract div.ci-contract-box-offer-milestone span {
font-size: 5.820833mm; /* 16.5pt; */ /* 22px */
}
.ci-contract div.ci-contract-box-offer *,
.ci-contract div.ci-contract-box-offer-milestone * {
font-size: 4.7625mm; /* 13.5pt; */ /* 18px; */
/* font-size: 5.820833mm; 16.5pt; */ /* 22px */
}
.ci-contract-ci-contract-table-of-content li,
.ci-contract h4,
.ci-contract h5,
.ci-contract h6,
.ci-contract span,
.ci-contract p,
.ci-contract a,
.ci-contract li,
.ci-contract p,
.ci-contract pre {
font-size: 5.29167mm; /* 15pt; */ /* 20px; */
}
.ci-contract .ci-contract-img + span,
.ci-contract caption,
.ci-contract table thead th,
.ci-contract table thead td,
.ci-contract table tbody td,
.ci-contract table tbody td span,
.ci-contract table tbody td p,
.ci-contract table tbody td li,
.ci-contract table tbody td em,
.ci-contract table tbody td strong,
.ci-contract table tbody td a,
.ci-contract table tbody td em,
.ci-contract pre code {
font-size: 4.7625mm; /* 13.5pt; */ /* 18px; */
}
.ci-contract .ci-contract-header td:last-child div {
font-size: 4.7625mm; /* 13.5pt; */ /* 18px; */
}
.ci-contract .ci-contract-header .ci-contract-header-subtitle,
.ci-contract .ci-contract-header .ci-contract-header-value,
.ci-contract .ci-contract-header .ci-contract-header-key {
font-size: 4.4979167mm; /* 12.75pt; */ /* 17px; */
}
.ci-contract .ci-contract-footer .ci-contract-footer-copy,
.ci-contract .ci-contract-footer span {
font-size: 4.23333mm; /* 12pt; */ /* 16px; */
}
.ci-contract table tbody tr td ul li:before,
.ci-contract .ci-contract-box-offer div,
.ci-contract .ci-contract-box-offer-line div,
.ci-contract .ci-contract-box-offer-milestone div,
.ci-contract .ci-contract-box-offer div b,
.ci-contract .ci-contract-box-offer-line div b,
.ci-contract .ci-contract-box-offer-milestone div b {
font-size: 3.704167mm; /* 10.5pt; */ /* 14px; */ /* 8px; */
}
/* === cover === */
.ci-contract .ci-contract-cover p.ci-contract-cover-faux-h1 {
font-family: "Roboto" !important;
font-weight: bold !important;
font-size: 12.7mm; /* 36pt; */ /* 48px; */
}
.ci-contract .ci-contract-cover p.ci-contract-cover-faux-h2 {
font-family: "Arial";
font-weight: lighter;
font-style: normal;
font-size: 12.7mm; /* 36pt; */ /* 48px; */
}
.ci-contract .ci-contract-cover p.ci-contract-cover-description {
font-family: "Roboto";
font-weight: lighter;
font-style: italic;
font-size: 6.35mm; /* 18pt; */ /* 24px; */
}
.ci-contract .ci-contract-cover p.ci-contract-cover-author-list span {
font-family: "Roboto";
font-weight: lighter;
font-style: normal;
font-size: 6.35mm; /* 18pt; */ /* 24px; */
}
.ci-contract p em,
.ci-contract p i {
font-style: italic;
}
/* === color === */
/* .ci-contract a:not([href*="#"]), */
.ci-contract a:not([id]),
.ci-contract td i,
.ci-contract a span
/*, .ci-contract .ci-contract-table table td[colspan]*/ {
color: #1c76bb !important;
}
.ci-contract * {
color: #000 /* XXX Why? !important */;
}
.ci-contract a {
text-decoration: none;
}
/* === text align === */
/* text align */
.ci-contract p {
text-align: justify;
}
.ci-contract table tbody td ul {
text-align: left;
font-weight: normal;
margin: 0;
margin-left: 4pt;
padding: 0;
}
/* Chinese */
.ci-zh .ci-contract p {
text-align: initial;
}
/* === page breaks === */
.ci-contract h1 {
page-break-before: always;
page-break-after: avoid;
}
.ci-contract .custom-force-page-break,
.ci-contract .custom-resume {
page-break-before: always;
}
.ci-contract h2,
.ci-contract h3,
.ci-contract h4,
.ci-contract h5 {
page-break-after: avoid;
}
.ci-contract h1 + img,
.ci-contract h2 + img,
.ci-contract h2 + p {
page-break-before: avoid;
}
.ci-contract table,
.ci-contract table caption,
.ci-contract img,
.ci-contract tr {
page-break-inside: avoid;
}
.ci-contract section:not(:last-child) {
page-break-after: always;
page-break-inside: always;
}
/* clear blank page after custom tables */
.ci-contract table.ci-contract-version-list {
page-break-after: avoid !important;
}
.ci-contract tbody + caption,
.ci-contract .ci-contract-img + span {
page-break-inside: avoid;
page-break-before: avoid;
page-break-after: avoid;
}
.ci-contract .ci-contract-box-offer {
page-break-inside: avoid;
}
/* === header/footer === */
.ci-contract .ci-contract-header,
.ci-contract .ci-contract-footer {
border-collapse: collapse;
width: 100%;
table-layout: fixed;
}
.ci-contract .ci-contract-header {
margin-top: 0;
}
.ci-contract .ci-contract-header td div,
.ci-contract .ci-contract-header div,
.ci-contract .ci-contract-header .ci-contract-header-sidebyside,
.ci-contract .ci-contract-header .ci-contract-header-sidebyside-first,
.ci-contract .ci-contract-header .ci-contract-header-sidebyside-last {
line-height: 18px;
height: 18px;
}
.ci-contract .ci-contract-header td,
.ci-contract .ci-contract-footer td {
text-align: center;
margin: 0;
vertical-align: middle;
padding: 0;
padding-bottom: 3mm;
}
.ci-contract .ci-contract-footer td span {
font-weight: 300;
}
.ci-contract .ci-contract-header td {
padding-top: 2mm;
border: transparent;
}
/* freeze table cell widths */
.ci-contract .ci-contract-header td:nth-child(1),
.ci-contract .ci-contract-header td:nth-child(3),
.ci-contract .ci-contract-footer td:nth-child(2),
.ci-contract .ci-contract-footer td:nth-child(3) {
width: 30%;
}
.ci-contract .ci-contract-header td:nth-child(2),
.ci-contract .ci-contract-footer td:nth-child(1) {
width: 40%;
}
.ci-contract .ci-contract-footer td:nth-child(1) {
text-align: left;
}
.ci-contract .ci-contract-footer td:nth-child(3) {
text-align: right;
}
/* header title/subtitle */
.ci-contract .ci-contract-header .ci-contract-header-title,
.ci-contract .ci-contract-header .ci-contract-header-subtitle {
font-weight: bold;
}
.ci-contract .ci-contract-header .ci-contract-header-title {
padding-top: 2mm;
padding-bottom: 2mm;
}
/* header image dimensions */
.ci-contract .ci-contract-header .ci-contract-header-image-wkhtmltopdf-image-wrapper {
padding-top: 1mm;
min-height: 25mm;
display: inline;
vertical-align: middle;
}
/* BACKUP:
fits all logos, unless you have to use a really wiiiiide logo like Nexedi
*/
.ci-contract .ci-contract-header .ci-contract-header-image-wkhtmltopdf-image-wrapper img {
height: auto;
display: inline-block;
width: auto;
}
/* hardcode here we go.
NOTE: logos will disappear in wkhtmltopdf if they go beyond the available space
.ci-contract .ci-contract-header .ci-contract-header-image-wkhtmltopdf-image-wrapper img {
height: auto;
display: inline-block;
width: 60%;
vertical-align: -webkit-baseline-middle;
}
*/
/* header spec section */
.ci-contract .ci-contract-header td:last-child {
text-align: left;
padding-left: 2mm;
}
.ci-contract .ci-contract-header td:last-child .ci-contract-header-key {
min-width: 25%;
display: inline-block;
font-weight: 300;
}
.ci-contract .ci-contract-header td:last-child .ci-contract-header-value {
font-weight: bold;
width: auto;
}
.ci-contract .ci-contract-header .ci-contract-header-sidebyside-last {
display: inline-block;
width: 58%;
}
.ci-contract .ci-contract-header .ci-contract-header-sidebyside-first {
display: inline-block;
width: 40%;
}
.ci-contract .ci-contract-header .ci-contract-header-sidebyside-first .ci-contract-header-key {
width: 62.5%;
}
.ci-contract .ci-contract-header td div.ci-contract-header-sidebyside {
position: relative;
top: -2px;
}
.ci-contract .ci-contract-header td div:last-child {
padding-top: 2px;
}
.ci-contract .ci-contract-header td:last-child .ci-contract-header-minify {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 70%;
}
.ci-contract .ci-contract-header td:last-child div {
vertical-align: middle;
}
.ci-contract .ci-contract-header div span {
line-height: 16px;
height: 16px;
display: inline-block;
vertical-align: middle;
}
.ci-contract .ci-contract-footer th,
.ci-contract .ci-contract-footer td {
border: 0 none;
}
.ci-contract .ci-contract-footer .ci-contract-footer-copy {
padding-right: 2mm;
}
/* === document cover === */
.ci-contract .ci-contract-cover p {
text-align: center;
}
.ci-contract .ci-contract-cover .ci-contract-cover-faux-h1 {
text-decoration: uppercase;
padding-top: 40%;
padding-bottom: 2%;
}
.ci-contract .ci-contract-cover .ci-contract-cover-description {
margin: 10mm 0;
font-weight: normal;
}
.ci-contract .ci-contract-cover {
margin-bottom: 20%;
}
/* === tables === */
/* fix header/footer clipping content */
.ci-contract thead {
display: table-header-group;
}
.ci-contract tfoot {
display: table-row-group;
}
.ci-contract table tr {
page-break-inside: avoid;
}
.ci-contract .ci-contract-table-highlight td,
.ci-contract table tr[data-class='ci-contract-table-highlight'] td {
background-color: #ffa07a;
}
.ci-contract .ci-contract-table-section td,
.ci-contract table tr[data-class='ci-contract-table-section'] td,
.ci-contract .ci-contract-table-section-depth-1 td {
background-color: #e0e0e0;
}
.ci-contract .ci-contract-table-section-depth-2 td {
background-color: #f5f5f5;
}
.ci-contract table td[colspan] {
padding: 0;
}
.ci-contract table table td[colspan] {
padding-left: 2mm;
padding-right: 2mm;
}
.ci-contract .ci-contract-table table {
margin-right: 0;
margin-left: auto;
border-collapse: collapse;
width: 100%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
border-left-color: transparent;
border-top-color: transparent;
border-right-color: transparent;
}
.ci-contract .ci-contract-table table td {
text-align: left;
}
.ci-contract .ci-contract-table table td[rowspan] {
border-left-color: transparent;
vertical-align:top;
}
.ci-contract .ci-contract-table table td[rowspan],
.ci-contract .ci-contract-table table td[colspan] {
border-left-color: transparent;
}
.ci-contract .ci-contract-table table td[colspan] {
border-bottom-color: transparent;
}
.ci-contract .ci-contract-table table tr:nth-child(1) td {
border-top-color: transparent;
}
.ci-contract .ci-contract-table table tr td:last-child {
border-right-color: transparent;
}
/* multi-table headers */
.ci-contract table thead {
display: table-header-group;
}
.ci-contract table tfoot {
display: table-row-group;
}
.ci-contract table tr {
page-break-inside: avoid;
}
/* spacing */
.ci-contract table {
border-collapse: collapse;
width: 100%;
margin: 0 auto;
}
/* === table == */
.ci-contract section table thead th {
vertical-align: middle;
padding-top: 2mm;
padding-bottom: 2mm;
}
.ci-contract table {
width: 100%;
margin: initial;
background-color: transparent !important;
}
.ci-contract table th,
.ci-contract table td {
border: 1px solid #a1a1a1;
padding: 0 2mm;
}
.ci-contract table th {
text-align: center;
}
/* opinionated align for content tables, overwrite in html if required */
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer):not(.ci-contract-table) tbody td,
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer):not(.ci-contract-table) tbody th {
/*text-align: center;*/
}
/*
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer):not(.ci-contract-table) tbody tr td:first-child,
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer):not(.ci-contract-table) tbody tr th:first-child {
text-align: right;
}
*/
.ci-contract table thead tr th p {
color: black !important;
}
.ci-contract a + table tbody tr td:first-child,
.ci-contract a + table tbody tr th:first-child {
/*text-align: center;*/
}
.ci-contract a + table tbody tr td:not(:first-child),
.ci-contract a + table tbody tr th:not(:first-child) {
/*text-align: right;*/
}
.ci-contract p + table td a {
display: block;
}
/* table formatting */
.ci-contract table {
border-collapse: collapse;
}
.ci-contract table td {
padding-left: 2mm;
word-wrap: break-word;
}
/* sigh... Fcuk Editor... backgrounds */
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer) thead tr td,
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer) thead tr th,
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer) thead tr th span,
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer) tbody tr:first-child td,
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer) tbody tr:first-child th {
background-color: #e0e0e0;
font-weight: bold;
/*text-align: center;*/
}
.ci-contract .ci-contract-table tbody tr td,
.ci-contract .ci-contract-table tbody tr th {
text-align: center;
}
.ci-contract table thead tr td,
.ci-contract table thead tr th {
text-align: center;
}
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer) thead + tbody tr:first-child td,
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer) thead + tbody tr:first-child th {
background-color: #ffffff;
font-weight: normal;
}
.ci-contract table.ci-document-page-header tbody tr td,
.ci-contract table.ci-document-page-footer tbody tr td {
/* background-color: #ffffff !important; */
/*text-align: center;*/
font-weight: 100;
}
.ci-contract table thead tr td,
.ci-contract table thead tr th {
padding-top: 2mm;
padding-bottom: 2mm;
}
/* override header with p tags eating maring/padding */
.ci-contract table thead tr td p
.ci-contract table thead tr th p {
padding: 0;
margin: 0;
}
/* === list formatting === */
.ci-contract ol {
list-style-position: inside;
}
.ci-contract ul {
list-style: none;
list-style-position: inside;
}
.ci-contract ul li,
.ci-contract ol li {
padding-left: 16px;
/*text-indent: -24px;*/
}
.ci-contract ul li:before {
content: "•";
padding-right: 16px;
margin-top: 2px;
}
/* === header auto-numbering 1.2.3.4. === */
/* table-of-content numbering (numbering x.x.x.x) */
/* faux-h1 */
.ci-contract p.ci-contract-toc-faux-h1 {
text-align: left;
font-weight: normal;
padding-top: 10mm;
margin-bottom: 25%;
padding-left: 2mm;
font-size: 12.7mm; /* 36pt; */ /* 48px; */
}
.ci-contract .ci-contract-table-of-content + ol,
.ci-contract .ci-contract-table-of-content + ol ol {
counter-reset: item;
list-style: none;
margin: 0;
}
.ci-contract .ci-contract-table-of-content + ol > li,
.ci-contract .ci-contract-table-of-content + ol ol > li {
counter-increment: item;
}
.ci-contract .ci-contract-table-of-content + ol > li:before,
.ci-contract .ci-contract-table-of-content + ol ol > li:before {
content: counters(item, ".") ". ";
padding-right: 0.5em;
}
.ci-contract .ci-contract-table-of-content + ol li ol li:before {
content: counters(item, ".") " ";
}
.ci-contract .ci-contract-table-of-content ~ h1 ~ ol > li:before,
.ci-contract .ci-contract-table-of-content ~ h1 ~ ol ol > li:before,
.ci-contract .ci-contract-table-of-content ~ h2 ~ ol > li:before,
.ci-contract .ci-contract-table-of-content ~ h2 ~ ol ol > li:before,
.ci-contract .ci-contract-table-of-content ~ h3 ~ ol > li:before,
.ci-contract .ci-contract-table-of-content ~ h3 ~ ol ol > li:before,
.ci-contract .ci-contract-table-of-content ~ h4 ~ ol > li:before,
.ci-contract .ci-contract-table-of-content ~ h4 ~ ol ol > li:before {
counter-increment: initial;
content: none;
}
.ci-contract {
counter-reset: h1;
}
.ci-contract h1 {
counter-reset: h2;
}
.ci-contract h2 {
counter-reset: h3;
}
.ci-contract h3 {
counter-reset: h4;
}
.ci-contract h4 {
counter-reset: h5;
}
.ci-contract h5 {
counter-reset: h6;
}
.ci-contract h1:before {
counter-increment: h1;
content: counter(h1) ". ";
}
.ci-contract h2:before {
counter-increment: h2;
content: counter(h1) "." counter(h2) ". ";
}
.ci-contract h3:before {
counter-increment: h3;
content: counter(h1) "." counter(h2) "." counter(h3) ". ";
}
.ci-contract h4:before {
counter-increment: h4;
content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) ". ";
}
.ci-contract h5:before {
counter-increment: h5;
content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) ". ";
}
.ci-contract h6:before {
counter-increment: h6;
content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) "." counter(h6) ". ";
}
.ci-contract .ci-contract-table-of-content ol {
text-indent: 0;
}
.ci-contract .ci-contract-table-of-content ol ol {
text-indent: 3em;
}
.ci-contract .ci-contract-table-of-content ol ol ol {
text-indent: 6em;
}
.ci-contract .ci-contract-table-of-content ol ol ol ol {
text-indent: 9em;
}
.ci-contract .ci-contract-table-of-content ol ol ol ol ol {
text-indent: 12em;
}
.ci-contract .ci-contract-table-of-content ol ol ol ol ol ol {
text-indent: 15em;
}
.ci-contract .ci-contract-table-of-content-lead-item:not(:first-child) {
padding-top: 10mm;
}
.ci-contract-table-of-content ol li div {
position: relative;
overflow: hidden;
}
.ci-contract-table-of-content ol li div:after {
content: "";
position: absolute;
bottom: 3px;
width: 100%;
border-bottom: 1px dotted #000;
z-index: 500;
}
.ci-contract .ci-contract-table-of-content ol li div {
height: 28px;
line-height: 24px;
}
.ci-contract .ci-contract-table-of-content ol ol li div {
height: 24px;
line-height: 20px;
}
.ci-contract .ci-contract-table-of-content ol li {
counter-increment: item;
}
.ci-contract .ci-contract-table-of-content ol li div:before {
content: counters(item, ".") ". ";
padding-right: 0.5em;
}
.ci-contract .ci-contract-table-of-content li ol li div:before {
content: counters(item, ".") " ";
}
.ci-contract .ci-contract-table-of-content {
display: block;
width: 100%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding-right: 10px;
}
.ci-contract .ci-contract-table-of-content ol {
counter-reset: item;
list-style-type: none;
margin: 0;
padding: 0;
display: block;
width: inherit;
}
.ci-contract .ci-contract-table-of-content li ol li {
margin: 0;
}
.ci-contract .ci-contract-table-of-content a {
text-decoration:none;
color: black;
}
/* === custom margins === */
.ci-contract h1 {
text-align: left;
font-weight: normal;
padding-top: 10mm;
padding-left: 2mm;
}
.ci-contract h2 {
margin-top: 10mm; /* 0.67em */
}
.ci-contract h3 {
margin-top: 12mm; /* 1em */
}
.ci-contract h4 {
margin-top: 14mm; /* 1.33em */
}
.ci-contract h5 {
margin-top: 16mm /* 1.67em */;
}
.ci-contract h6 {
margin-top: 18mm /* 2.33em */;
}
.ci-contract p {
margin-top: 5mm;
margin-bottom: 5mm;
}
/* === indent all paragraphs === */
.ci-contract p {
text-indent: 5mm;
}
.ci-contract table {
margin-top: 5mm;
margin-bottom: 5mm;
margin-left: auto;
margin-right: auto;
}
.ci-contract table table {
margin-top: 0;
}
/* === image and table captions */
/* XXX caption should be inside .ci-contract-img */
.ci-contract .ci-contract-img > img {
display: block;
margin: 0 auto 0;
padding-top: 20px;
max-width: 240mm;
page-break-after: avoid;
width: 50%;
}
.ci-contract .ci-contract-img > img ~ span {
margin-left: 3cm;
display:inline-block;
}
.ci-contract .ci-contract-img + span {
margin-left: 3cm;
display:inline-block;
}
.ci-contract table caption,
.ci-contract .ci-contract-caption {
text-align: center;
padding-top: 4mm;
padding-bottom: 5mm;
caption-side: bottom;
width: auto;
}
/* customizations */
/* editor adding <p>... */
html .ci-contract table td p {
margin: 0;
text-indent: 0;
display:inline-block;
}
html .ci-contract table td p:first-child {
padding: 0;
}
html .ci-contract table td p:not(:first-child){
padding-left: 5px;
}
/* === code boxes === */
.ci-contract pre {
text-align: left;
font-family: TexGyreCursor;
white-space: pre-wrap;
word-wrap: break-word;
padding: 10px 20px 36px;
background-color: rgb(234,246,246);
/*
white-space: pre;
word-wrap: break-word;
overflow-wrap: break-word;
*/
/*
break after 100 characters - https://stackoverflow.com/a/16756641
max-width: 40em;
max-width: 100ch;
*/
}
.ci-contract pre code {
display: block;
background-color: rgb(234,246,246);
}
.ci-contract p code,
.ci-contract blockquote {
background-color: rgb(234,246,246);
}
/* === special headers === */
/* distribution list */
.ci-contract .ci-contract thead th {
vertical-align: middle;
padding-top: 2mm;
padding-bottom: 2mm;
}
.ci-contract .ci-contract-distribution-list tbody tr td ul,
/* backcompat */
.ci-contract section tbody tr td ul {
vertical-align: top;
margin-left: 0;
padding-left: 0;
display: inline-block;
width: 49%;
padding-top: 5mm;
padding-bottom: 5mm;
}
.ci-contract .ci-contract-distribution-list tbody tr td ul li,
/* backcompat */
.ci-contract section tbody tr td ul li {
padding: 0;
list-style: none;
text-indent: 0;
line-height: 18pt;
text-align: left;
}
.ci-contract .ci-contract-distribution-list tbody tr td ul li:before,
/* backcompat */
.ci-contract section tbody tr td ul li:before {
content: "■";
padding-right: 8px;
vertical-align: middle;
}
.ci-contract .ci-contract-distribution-list tbody tr td ul li span,
.ci-contract .ci-contract-distribution-list tbody tr td ul li div {
width: 46%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
display: inline-block;
}
/* backcompat */
.ci-contract section tbody tr td ul li span,
.ci-contract section tbody tr td ul li div,
.ci-contract section tbody tr td ul li p {
display: inline-block;
width: 46%;
}
.ci-contract .ci-contract-distribution-list tbody tr td ul li,
.ci-contract .ci-contract-distribution-list tbody tr td ul div,
.ci-contract .ci-contract-distribution-list tbody tr td ul span,
/* backcompat */
.ci-contract section tbody tr td ul li,
.ci-contract section tbody tr td ul div,
.ci-contract section tbody tr td ul span {
vertical-align: middle;
}
/* Version List */
/* Signature List */
.ci-contract .ci-contract-signature-list tbody td {
padding-top: 2mm;
padding-bottom: 5mm;
}
.ci-contract .ci-contract-signature-list tbody td i,
.ci-contract .ci-contract-signature-list tbody td em {
display: block;
text-align: left;
text-indent: 2mm;
}
/* === reports === */
/* should have their own .css/.pdf.css file eventually */
.ci-contract .ci-contract-table .ci-contract-report-cell-left,
.ci-contract .ci-contract-table td[colspan] {
text-align: left;
}
.ci-contract .ci-contract-table .ci-contract-report-cell-right {
text-align: right;
}
/* === box items === */
/* Project Breakdown/Milestone List */
.ci-contract .ci-contract-box-offer,
.ci-contract div.ci-contract-box-offer-milestone,
/* backcompat */
.ci-document-box-offer,
div.ci-document-box-offer-milestone {
width: 100%;
}
.ci-contract .ci-contract-box-offer,
.ci-contract .ci-contract-box-id,
.ci-contract .ci-contract-box-coverage,
.ci-contract .ci-contract-box-begin,
.ci-contract .ci-contract-box-end,
.ci-contract .ci-contract-box-total-duration,
.ci-contract .ci-contract-box-duration,
.ci-contract .ci-contract-box-leader,
.ci-contract .ci-contract-box-resources,
.ci-contract .ci-contract-box-location,
.ci-contract .ci-contract-box-result,
.ci-contract .ci-contract-box-offer-milestone {
}
.ci-contract .ci-contract-box-offer b,
.ci-contract .ci-contract-box-offer-milestone b,
.ci-contract .ci-contract-box-offer-line b,
/* backcompat */
.ci-document-box-offer b,
.ci-document-box-offer-milestone b,
.ci-document-box-offer-line b{
font-weight: bold;
}
.ci-contract .ci-contract-box-detail,
/* backcompat */
.ci-document-box-detail {
table-layout: fixed;
}
.ci-contract .ci-contract-box-offer,
.ci-contract .ci-contract-box-offer-line,
.ci-contract .ci-contract-box-offer-milestone,
/* backcompat */
.ci-document-box-offer,
.ci-document-box-offer-line,
.ci-document-box-offer-milestone {
border: 1px solid #a1a1a1;
padding: 2px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-box-shadow: 10px 10px 0 #a1a1a1;
-moz-box-shadow: 10px 10px 0 #a1a1a1;
box-shadow: 10px 10px 0 #a1a1a1;
background-color: #fff;
}
.ci-contract .ci-contract-box-coverage,
/* backcompat */
.ci-document-box-coverage {
display: inline-block;
vertical-align: top;
width: 66%;
}
.ci-contract-box-location,
.ci-contract-box-resources,
.ci-contract-box-leader,
/* backcompat */
.ci-document-box-location,
.ci-document-box-resources,
.ci-document-box-leader {
display: inline-block;
vertical-align: top;
width: 33%;
}
.ci-contract .ci-contract-box-begin,
.ci-contract .ci-contract-box-end,
/* backcompat */
.ci-document-box-begin,
.ci-document-box-end {
display: inline-block;
vertical-align: top;
width: 33%;
}
.ci-contract .ci-contract-box-id,
/* backcompat */
.ci-document-box-id {
display: inline-block;
vertical-align: top;
width: 33%;
}
.ci-contract .ci-contract-box-duration,
/* backcompat */
.ci-document-box-duration {
display: inline-block;
vertical-align: top;
width: 33%;
}
.ci-contract .ci-contract-box-end + .ci-contract-box-resources,
/* backcompat */
.ci-document-box-end + .ci-document-box-resources {
margin-left: 20%;
}
.ci-contract .ci-contract-box-end + .ci-contract-box-resources,
/* backcompat */
.ci-document-box-end + .ci-document-box-resources {
margin-left: 20%;
}
\ 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>__name__</string> </key>
<value> <string>contract.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>
/* === font-size === */
.ci-contract h1 {
font-size: 12.7mm; /* 36pt; */ /* 48px; */
}
.ci-contract h2 {
font-size: 7.9375mm; /* 22.5pt; */ /* 30px; */
}
.ci-contract h3 {
font-size: 6.879167mm; /* 19.5pt; */ /* 26px; */
}
.ci-contract .ci-contract-header .ci-contract-header-title
/*,
.ci-contract table thead tr:first-child:nth-last-child(2) th,
.ci-contract table thead tr:first-child:nth-last-child(2) td
*/
{
font-size: 6.35mm; /* 18pt; */ /* 24px; */
}
.ci-contract div.ci-contract-box-offer span,
.ci-contract div.ci-contract-box-offer-milestone span {
font-size: 5.820833mm; /* 16.5pt; */ /* 22px */
}
.ci-contract div.ci-contract-box-offer *,
.ci-contract div.ci-contract-box-offer-milestone * {
font-size: 4.7625mm; /* 13.5pt; */ /* 18px; */
/* font-size: 5.820833mm; 16.5pt; */ /* 22px */
}
.ci-contract-ci-contract-table-of-content li,
.ci-contract h4,
.ci-contract h5,
.ci-contract h6,
.ci-contract span,
.ci-contract p,
.ci-contract a,
.ci-contract li,
.ci-contract p,
.ci-contract pre {
font-size: 5.29167mm; /* 15pt; */ /* 20px; */
}
.ci-contract .ci-contract-img + span,
.ci-contract caption,
.ci-contract table thead th,
.ci-contract table thead td,
.ci-contract table tbody td,
.ci-contract table tbody td span,
.ci-contract table tbody td p,
.ci-contract table tbody td li,
.ci-contract table tbody td em,
.ci-contract table tbody td strong,
.ci-contract table tbody td a,
.ci-contract table tbody td em,
.ci-contract pre code {
font-size: 4.7625mm; /* 13.5pt; */ /* 18px; */
}
.ci-contract .ci-contract-header td:last-child div {
font-size: 4.7625mm; /* 13.5pt; */ /* 18px; */
}
.ci-contract .ci-contract-header .ci-contract-header-subtitle,
.ci-contract .ci-contract-header .ci-contract-header-value,
.ci-contract .ci-contract-header .ci-contract-header-key {
font-size: 4.4979167mm; /* 12.75pt; */ /* 17px; */
}
.ci-contract .ci-contract-footer .ci-contract-footer-copy,
.ci-contract .ci-contract-footer span {
font-size: 4.23333mm; /* 12pt; */ /* 16px; */
}
.ci-contract table tbody tr td ul li:before,
.ci-contract .ci-contract-box-offer div,
.ci-contract .ci-contract-box-offer-line div,
.ci-contract .ci-contract-box-offer-milestone div,
.ci-contract .ci-contract-box-offer div b,
.ci-contract .ci-contract-box-offer-line div b,
.ci-contract .ci-contract-box-offer-milestone div b {
font-size: 3.704167mm; /* 10.5pt; */ /* 14px; */ /* 8px; */
}
/* === cover === */
.ci-contract .ci-contract-cover p.ci-contract-cover-faux-h1 {
font-family: "Roboto" !important;
font-weight: bold !important;
font-size: 12.7mm; /* 36pt; */ /* 48px; */
}
.ci-contract .ci-contract-cover p.ci-contract-cover-faux-h2 {
font-family: "Arial";
font-weight: lighter;
font-style: normal;
font-size: 12.7mm; /* 36pt; */ /* 48px; */
}
.ci-contract .ci-contract-cover p.ci-contract-cover-description {
font-family: "Roboto";
font-weight: lighter;
font-style: italic;
font-size: 6.35mm; /* 18pt; */ /* 24px; */
}
.ci-contract .ci-contract-cover p.ci-contract-cover-author-list span {
font-family: "Roboto";
font-weight: lighter;
font-style: normal;
font-size: 6.35mm; /* 18pt; */ /* 24px; */
}
.ci-contract p em,
.ci-contract p i {
font-style: italic;
}
/* === color === */
/* .ci-contract a:not([href*="#"]), */
.ci-contract a:not([id]),
.ci-contract td i,
.ci-contract a span
/*, .ci-contract .ci-contract-table table td[colspan]*/ {
color: #1c76bb !important;
}
.ci-contract * {
color: #000 /* XXX Why? !important */;
}
.ci-contract a {
text-decoration: none;
}
/* === text align === */
/* text align */
.ci-contract p {
text-align: justify;
}
.ci-contract table tbody td ul {
text-align: left;
font-weight: normal;
margin: 0;
margin-left: 4pt;
padding: 0;
}
/* Chinese */
.ci-zh .ci-contract p {
text-align: initial;
}
/* === page breaks === */
.ci-contract h1 {
page-break-before: always;
page-break-after: avoid;
}
.ci-contract .custom-force-page-break,
.ci-contract .custom-resume {
page-break-before: always;
}
.ci-contract h2,
.ci-contract h3,
.ci-contract h4,
.ci-contract h5 {
page-break-after: avoid;
}
.ci-contract h1 + img,
.ci-contract h2 + img,
.ci-contract h2 + p {
page-break-before: avoid;
}
.ci-contract table,
.ci-contract table caption,
.ci-contract img,
.ci-contract tr {
page-break-inside: avoid;
}
.ci-contract section:not(:last-child) {
page-break-after: always;
page-break-inside: always;
}
/* clear blank page after custom tables */
.ci-contract table.ci-contract-version-list {
page-break-after: avoid !important;
}
.ci-contract tbody + caption,
.ci-contract .ci-contract-img + span {
page-break-inside: avoid;
page-break-before: avoid;
page-break-after: avoid;
}
.ci-contract .ci-contract-box-offer {
page-break-inside: avoid;
}
/* === header/footer === */
.ci-contract .ci-contract-header,
.ci-contract .ci-contract-footer {
border-collapse: collapse;
width: 100%;
table-layout: fixed;
}
.ci-contract .ci-contract-header {
margin-top: 0;
}
.ci-contract .ci-contract-header td div,
.ci-contract .ci-contract-header div,
.ci-contract .ci-contract-header .ci-contract-header-sidebyside,
.ci-contract .ci-contract-header .ci-contract-header-sidebyside-first,
.ci-contract .ci-contract-header .ci-contract-header-sidebyside-last {
line-height: 18px;
height: 18px;
}
.ci-contract .ci-contract-header td,
.ci-contract .ci-contract-footer td {
text-align: center;
margin: 0;
vertical-align: middle;
padding: 0;
padding-bottom: 3mm;
}
.ci-contract .ci-contract-footer td span {
font-weight: 300;
}
.ci-contract .ci-contract-header td {
padding-top: 2mm;
border: transparent;
}
/* freeze table cell widths */
.ci-contract .ci-contract-header td:nth-child(1),
.ci-contract .ci-contract-header td:nth-child(3),
.ci-contract .ci-contract-footer td:nth-child(2),
.ci-contract .ci-contract-footer td:nth-child(3) {
width: 30%;
}
.ci-contract .ci-contract-header td:nth-child(2),
.ci-contract .ci-contract-footer td:nth-child(1) {
width: 40%;
}
.ci-contract .ci-contract-footer td:nth-child(1) {
text-align: left;
}
.ci-contract .ci-contract-footer td:nth-child(3) {
text-align: right;
}
/* header title/subtitle */
.ci-contract .ci-contract-header .ci-contract-header-title,
.ci-contract .ci-contract-header .ci-contract-header-subtitle {
font-weight: bold;
}
.ci-contract .ci-contract-header .ci-contract-header-title {
padding-top: 2mm;
padding-bottom: 2mm;
}
/* header image dimensions */
.ci-contract .ci-contract-header .ci-contract-header-image-wkhtmltopdf-image-wrapper {
padding-top: 1mm;
min-height: 25mm;
vertical-align: middle;
width: 100%;
line-height: 25mm;
}
.ci-contract .ci-contract-header .ci-contract-header-image-wkhtmltopdf-image-wrapper img {
height: auto;
vertical-align: middle;
max-height: 14mm;
}
/* header spec section */
.ci-contract .ci-contract-header td:last-child {
text-align: left;
padding-left: 2mm;
}
.ci-contract .ci-contract-header td:last-child .ci-contract-header-key {
min-width: 25%;
display: inline-block;
font-weight: 300;
}
.ci-contract .ci-contract-header td:last-child .ci-contract-header-value {
font-weight: bold;
width: auto;
}
.ci-contract .ci-contract-header .ci-contract-header-sidebyside-last {
display: inline-block;
width: 58%;
}
.ci-contract .ci-contract-header .ci-contract-header-sidebyside-first {
display: inline-block;
width: 40%;
}
.ci-contract .ci-contract-header .ci-contract-header-sidebyside-first .ci-contract-header-key {
width: 62.5%;
}
.ci-contract .ci-contract-header td div.ci-contract-header-sidebyside {
position: relative;
top: -2px;
}
.ci-contract .ci-contract-header td div:last-child {
padding-top: 2px;
}
.ci-contract .ci-contract-header td:last-child .ci-contract-header-minify {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 70%;
}
.ci-contract .ci-contract-header td:last-child div {
vertical-align: middle;
}
.ci-contract .ci-contract-header div span {
line-height: 16px;
height: 16px;
display: inline-block;
vertical-align: middle;
}
.ci-contract .ci-contract-footer th,
.ci-contract .ci-contract-footer td {
border: 0 none;
}
.ci-contract .ci-contract-footer .ci-contract-footer-copy {
padding-right: 2mm;
}
/* === document cover === */
.ci-contract .ci-contract-cover p {
text-align: center;
}
.ci-contract .ci-contract-cover .ci-contract-cover-faux-h1 {
text-decoration: uppercase;
padding-top: 40%;
padding-bottom: 2%;
}
.ci-contract .ci-contract-cover .ci-contract-cover-description {
margin: 10mm 0;
font-weight: normal;
}
.ci-contract .ci-contract-cover {
margin-bottom: 20%;
}
/* === tables === */
/* fix header/footer clipping content */
.ci-contract thead {
display: table-header-group;
}
.ci-contract tfoot {
display: table-row-group;
}
.ci-contract table tr {
page-break-inside: avoid;
}
.ci-contract .ci-contract-table-highlight td,
.ci-contract table tr[data-class='ci-contract-table-highlight'] td {
background-color: #ffa07a;
}
.ci-contract .ci-contract-table-section td,
.ci-contract table tr[data-class='ci-contract-table-section'] td,
.ci-contract .ci-contract-table-section-depth-1 td {
background-color: #e0e0e0;
}
.ci-contract .ci-contract-table-section-depth-2 td {
background-color: #f5f5f5;
}
.ci-contract table td[colspan] {
padding: 0;
}
.ci-contract table table td[colspan] {
padding-left: 2mm;
padding-right: 2mm;
}
.ci-contract .ci-contract-table table {
margin-right: 0;
margin-left: auto;
border-collapse: collapse;
width: 100%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
vertical-align: top;
border-left-color: transparent;
border-top-color: transparent;
border-right-color: transparent;
}
.ci-contract .ci-contract-table table td {
text-align: left;
}
.ci-contract .ci-contract-table table td[rowspan] {
border-left-color: transparent;
vertical-align:top;
}
.ci-contract .ci-contract-table table td[rowspan],
.ci-contract .ci-contract-table table td[colspan] {
border-left-color: transparent;
}
.ci-contract .ci-contract-table table td[colspan] {
border-bottom-color: transparent;
}
.ci-contract .ci-contract-table table tr:nth-child(1) td {
border-top-color: transparent;
}
.ci-contract .ci-contract-table table tr td:last-child {
border-right-color: transparent;
}
/* multi-table headers */
.ci-contract table thead {
display: table-header-group;
}
.ci-contract table tfoot {
display: table-row-group;
}
.ci-contract table tr {
page-break-inside: avoid;
}
/* spacing */
.ci-contract table {
border-collapse: collapse;
width: 100%;
margin: 0 auto;
}
/* === table == */
.ci-contract section table thead th {
vertical-align: middle;
padding-top: 2mm;
padding-bottom: 2mm;
}
.ci-contract table {
width: 100%;
margin: initial;
background-color: transparent !important;
}
.ci-contract table th,
.ci-contract table td {
border: 1px solid #a1a1a1;
padding: 0 2mm;
}
.ci-contract table th {
text-align: center;
}
/* opinionated align for content tables, overwrite in html if required */
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer):not(.ci-contract-table) tbody td,
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer):not(.ci-contract-table) tbody th {
/*text-align: center;*/
}
/*
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer):not(.ci-contract-table) tbody tr td:first-child,
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer):not(.ci-contract-table) tbody tr th:first-child {
text-align: right;
}
*/
.ci-contract table thead tr th p {
color: black !important;
}
.ci-contract a + table tbody tr td:first-child,
.ci-contract a + table tbody tr th:first-child {
/*text-align: center;*/
}
.ci-contract a + table tbody tr td:not(:first-child),
.ci-contract a + table tbody tr th:not(:first-child) {
/*text-align: right;*/
}
.ci-contract p + table td a {
display: block;
}
/* table formatting */
.ci-contract table {
border-collapse: collapse;
}
.ci-contract table td {
padding-left: 2mm;
word-wrap: break-word;
}
/* sigh... Fcuk Editor... backgrounds */
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer) thead tr td,
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer) thead tr th,
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer) thead tr th span,
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer) tbody tr:first-child td,
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer) tbody tr:first-child th {
background-color: #e0e0e0;
font-weight: bold;
/*text-align: center;*/
}
.ci-contract .ci-contract-table tbody tr td,
.ci-contract .ci-contract-table tbody tr th {
text-align: center;
}
.ci-contract table thead tr td,
.ci-contract table thead tr th {
text-align: center;
}
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer) thead + tbody tr:first-child td,
.ci-contract table:not(.ci-contract-header):not(.ci-contract-footer) thead + tbody tr:first-child th {
background-color: #ffffff;
font-weight: normal;
}
.ci-contract table.ci-document-page-header tbody tr td,
.ci-contract table.ci-document-page-footer tbody tr td {
/* background-color: #ffffff !important; */
/*text-align: center;*/
font-weight: 100;
}
.ci-contract table thead tr td,
.ci-contract table thead tr th {
padding-top: 2mm;
padding-bottom: 2mm;
}
/* override header with p tags eating maring/padding */
.ci-contract table thead tr td p
.ci-contract table thead tr th p {
padding: 0;
margin: 0;
}
/* === list formatting === */
.ci-contract ol {
list-style-position: inside;
}
.ci-contract ul {
list-style: none;
list-style-position: inside;
}
.ci-contract ul li,
.ci-contract ol li {
padding-left: 16px;
/*text-indent: -24px;*/
}
.ci-contract ul li:before {
content: "•";
padding-right: 16px;
margin-top: 2px;
}
.ci-contract {
counter-reset: h1;
}
.ci-contract h1 {
counter-reset: h2;
}
.ci-contract h2 {
counter-reset: h3;
}
.ci-contract h3 {
counter-reset: h4;
}
.ci-contract h4 {
counter-reset: h5;
}
.ci-contract h5 {
counter-reset: h6;
}
.ci-contract h1:before {
counter-increment: h1;
content: counter(h1) ". ";
}
.ci-contract h2:before {
counter-increment: h2;
content: counter(h1) "." counter(h2) ". ";
}
.ci-contract h3:before {
counter-increment: h3;
content: counter(h1) "." counter(h2) "." counter(h3) ". ";
}
.ci-contract h4:before {
counter-increment: h4;
content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) ". ";
}
.ci-contract h5:before {
counter-increment: h5;
content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) ". ";
}
.ci-contract h6:before {
counter-increment: h6;
content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) "." counter(h5) "." counter(h6) ". ";
}
.ci-contract .ci-contract-table-of-content ol {
text-indent: 0;
}
.ci-contract .ci-contract-table-of-content ol ol {
text-indent: 3em;
}
.ci-contract .ci-contract-table-of-content ol ol ol {
text-indent: 6em;
}
.ci-contract .ci-contract-table-of-content ol ol ol ol {
text-indent: 9em;
}
.ci-contract .ci-contract-table-of-content ol ol ol ol ol {
text-indent: 12em;
}
.ci-contract .ci-contract-table-of-content ol ol ol ol ol ol {
text-indent: 15em;
}
.ci-contract .ci-contract-table-of-content-lead-item:not(:first-child) {
padding-top: 10mm;
}
.ci-contract-table-of-content ol li div {
position: relative;
overflow: hidden;
}
.ci-contract-table-of-content ol li div:after {
content: "";
position: absolute;
bottom: 3px;
width: 100%;
border-bottom: 1px dotted #000;
z-index: 500;
}
.ci-contract .ci-contract-table-of-content ol li div {
height: 28px;
line-height: 24px;
}
.ci-contract .ci-contract-table-of-content ol ol li div {
height: 24px;
line-height: 20px;
}
.ci-contract .ci-contract-table-of-content ol li {
counter-increment: item;
}
.ci-contract .ci-contract-table-of-content ol li div:before {
content: counters(item, ".") ". ";
padding-right: 0.5em;
}
.ci-contract .ci-contract-table-of-content li ol li div:before {
content: counters(item, ".") " ";
}
.ci-contract .ci-contract-table-of-content {
display: block;
width: 100%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding-right: 10px;
}
.ci-contract .ci-contract-table-of-content ol {
counter-reset: item;
list-style-type: none;
margin: 0;
padding: 0;
display: block;
width: inherit;
}
.ci-contract .ci-contract-table-of-content li ol li {
margin: 0;
}
.ci-contract .ci-contract-table-of-content a {
text-decoration:none;
color: black;
}
/* === custom margins === */
.ci-contract h1 {
text-align: left;
font-weight: normal;
padding-top: 10mm;
padding-left: 2mm;
}
.ci-contract h2 {
margin-top: 10mm; /* 0.67em */
}
.ci-contract h3 {
margin-top: 12mm; /* 1em */
}
.ci-contract h4 {
margin-top: 14mm; /* 1.33em */
}
.ci-contract h5 {
margin-top: 16mm /* 1.67em */;
}
.ci-contract h6 {
margin-top: 18mm /* 2.33em */;
}
.ci-contract p {
margin-top: 5mm;
margin-bottom: 5mm;
}
/* === indent all paragraphs === */
.ci-contract p {
text-indent: 5mm;
}
.ci-contract table {
margin-top: 5mm;
margin-bottom: 5mm;
margin-left: auto;
margin-right: auto;
}
.ci-contract table table {
margin-top: 0;
}
/* === image and table captions */
/* XXX caption should be inside .ci-contract-img */
.ci-contract .ci-contract-img > img {
display: block;
margin: 0 auto 0;
padding-top: 20px;
max-width: 240mm;
page-break-after: avoid;
width: 50%;
}
.ci-contract .ci-contract-img > img ~ span {
margin-left: 3cm;
display:inline-block;
}
.ci-contract .ci-contract-img + span {
margin-left: 3cm;
display:inline-block;
}
.ci-contract table caption,
.ci-contract .ci-contract-caption {
text-align: center;
padding-top: 4mm;
padding-bottom: 5mm;
caption-side: bottom;
width: auto;
}
/* customizations */
/* editor adding <p>... */
html .ci-contract table td p {
margin: 0;
text-indent: 0;
display:inline-block;
}
html .ci-contract table td p:first-child {
padding: 0;
}
html .ci-contract table td p:not(:first-child){
padding-left: 5px;
}
/* === code boxes === */
.ci-contract pre {
text-align: left;
font-family: TexGyreCursor;
white-space: pre-wrap;
word-wrap: break-word;
padding: 10px 20px 36px;
background-color: rgb(234,246,246);
/*
white-space: pre;
word-wrap: break-word;
overflow-wrap: break-word;
*/
/*
break after 100 characters - https://stackoverflow.com/a/16756641
max-width: 40em;
max-width: 100ch;
*/
}
.ci-contract pre code {
display: block;
background-color: rgb(234,246,246);
}
.ci-contract p code,
.ci-contract blockquote {
background-color: rgb(234,246,246);
}
/* === special headers === */
/* distribution list */
.ci-contract .ci-contract thead th {
vertical-align: middle;
padding-top: 2mm;
padding-bottom: 2mm;
}
.ci-contract .ci-contract-distribution-list tbody tr td ul,
/* backcompat */
.ci-contract section tbody tr td ul {
vertical-align: top;
margin-left: 0;
padding-left: 0;
display: inline-block;
width: 49%;
padding-top: 5mm;
padding-bottom: 5mm;
}
.ci-contract .ci-contract-distribution-list tbody tr td ul li,
/* backcompat */
.ci-contract section tbody tr td ul li {
padding: 0;
list-style: none;
text-indent: 0;
line-height: 18pt;
text-align: left;
}
.ci-contract .ci-contract-distribution-list tbody tr td ul li:before,
/* backcompat */
.ci-contract section tbody tr td ul li:before {
content: "■";
padding-right: 8px;
vertical-align: middle;
}
.ci-contract .ci-contract-distribution-list tbody tr td ul li span,
.ci-contract .ci-contract-distribution-list tbody tr td ul li div {
width: 46%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
display: inline-block;
}
/* backcompat */
.ci-contract section tbody tr td ul li span,
.ci-contract section tbody tr td ul li div,
.ci-contract section tbody tr td ul li p {
display: inline-block;
width: 46%;
}
.ci-contract .ci-contract-distribution-list tbody tr td ul li,
.ci-contract .ci-contract-distribution-list tbody tr td ul div,
.ci-contract .ci-contract-distribution-list tbody tr td ul span,
/* backcompat */
.ci-contract section tbody tr td ul li,
.ci-contract section tbody tr td ul div,
.ci-contract section tbody tr td ul span {
vertical-align: middle;
}
/* Version List */
/* Signature List */
.ci-contract .ci-contract-signature-list tbody td {
padding-top: 2mm;
padding-bottom: 5mm;
}
.ci-contract .ci-contract-signature-list tbody td i,
.ci-contract .ci-contract-signature-list tbody td em {
display: block;
text-align: left;
text-indent: 2mm;
}
/* === reports === */
/* should have their own .css/.pdf.css file eventually */
.ci-contract .ci-contract-table .ci-contract-report-cell-left,
.ci-contract .ci-contract-table td[colspan] {
text-align: left;
}
.ci-contract .ci-contract-table .ci-contract-report-cell-right {
text-align: right;
}
/* === box items === */
/* Project Breakdown/Milestone List */
.ci-contract .ci-contract-box-offer,
.ci-contract div.ci-contract-box-offer-milestone,
/* backcompat */
.ci-document-box-offer,
div.ci-document-box-offer-milestone {
width: 100%;
}
.ci-contract .ci-contract-box-offer,
.ci-contract .ci-contract-box-id,
.ci-contract .ci-contract-box-coverage,
.ci-contract .ci-contract-box-begin,
.ci-contract .ci-contract-box-end,
.ci-contract .ci-contract-box-total-duration,
.ci-contract .ci-contract-box-duration,
.ci-contract .ci-contract-box-leader,
.ci-contract .ci-contract-box-resources,
.ci-contract .ci-contract-box-location,
.ci-contract .ci-contract-box-result,
.ci-contract .ci-contract-box-offer-milestone {
}
.ci-contract .ci-contract-box-offer b,
.ci-contract .ci-contract-box-offer-milestone b,
.ci-contract .ci-contract-box-offer-line b,
/* backcompat */
.ci-document-box-offer b,
.ci-document-box-offer-milestone b,
.ci-document-box-offer-line b{
font-weight: bold;
}
.ci-contract .ci-contract-box-detail,
/* backcompat */
.ci-document-box-detail {
table-layout: fixed;
}
.ci-contract .ci-contract-box-offer,
.ci-contract .ci-contract-box-offer-line,
.ci-contract .ci-contract-box-offer-milestone,
/* backcompat */
.ci-document-box-offer,
.ci-document-box-offer-line,
.ci-document-box-offer-milestone {
border: 1px solid #a1a1a1;
padding: 2px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-box-shadow: 10px 10px 0 #a1a1a1;
-moz-box-shadow: 10px 10px 0 #a1a1a1;
box-shadow: 10px 10px 0 #a1a1a1;
background-color: #fff;
}
.ci-contract .ci-contract-box-coverage,
/* backcompat */
.ci-document-box-coverage {
display: inline-block;
vertical-align: top;
width: 66%;
}
.ci-contract-box-location,
.ci-contract-box-resources,
.ci-contract-box-leader,
/* backcompat */
.ci-document-box-location,
.ci-document-box-resources,
.ci-document-box-leader {
display: inline-block;
vertical-align: top;
width: 33%;
}
.ci-contract .ci-contract-box-begin,
.ci-contract .ci-contract-box-end,
/* backcompat */
.ci-document-box-begin,
.ci-document-box-end {
display: inline-block;
vertical-align: top;
width: 33%;
}
.ci-contract .ci-contract-box-id,
/* backcompat */
.ci-document-box-id {
display: inline-block;
vertical-align: top;
width: 33%;
}
.ci-contract .ci-contract-box-duration,
/* backcompat */
.ci-document-box-duration {
display: inline-block;
vertical-align: top;
width: 33%;
}
.ci-contract .ci-contract-box-end + .ci-contract-box-resources,
/* backcompat */
.ci-document-box-end + .ci-document-box-resources {
margin-left: 20%;
}
.ci-contract .ci-contract-box-end + .ci-contract-box-resources,
/* backcompat */
.ci-document-box-end + .ci-document-box-resources {
margin-left: 20%;
}
\ 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>__name__</string> </key>
<value> <string>contract.pdf.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>_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_contract</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>document</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
return context.WebPage_viewAsContract(
document_save=document_save,
display_svg=display_svg,
batch_mode=batch_mode,
include_content_table=include_content_table,
include_history_table=include_history_table,
include_reference_table=include_reference_table,
include_linked_content=include_linked_content,
include_report_content=include_report_content,
format=format,
**kw
)
<?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>format="html", include_content_table=None,include_history_table= None,include_reference_table=None,include_linked_content=None,include_report_content=None,batch_mode=False,display_svg=None,document_save=None, **kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>WebPage_viewAsWeb</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
Preference | corporate_identity_style_preferences
Web Page | export_book
Web Page | export_contract
Web Page | export_leaflet
Web Page | export_letter
Web Page | export_release
......
erp5_corporate_identity_book | Book
erp5_corporate_identity_book | Report
erp5_corporate_identity_contract | Contract
erp5_corporate_identity_leaflet | Leaflet
erp5_corporate_identity_letter | Letter
erp5_corporate_identity_release | Release
......@@ -7,6 +8,7 @@ erp5_corporate_identity_slide | Slide
erp5_corporate_identity_web | CI_web
erp5_xhtml_style | Book
erp5_xhtml_style | CI_web
erp5_xhtml_style | Contract
erp5_xhtml_style | Leaflet
erp5_xhtml_style | Letter
erp5_xhtml_style | Release
......
erp5_corporate_identity
erp5_corporate_identity_book
erp5_corporate_identity_contract
erp5_corporate_identity_leaflet
erp5_corporate_identity_letter
erp5_corporate_identity_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