Commit dc7fc5e8 authored by Xiaowu Zhang's avatar Xiaowu Zhang

corporate identity improvment

See merge request nexedi/erp5!1251
parents 65dc3807 a873edde
......@@ -35,8 +35,7 @@ pref = context.getPortalObject().portal_preferences
# -------------------------- Setup ---------------------------------------------
letter = context
letter_format = kw.get('format') or 'html'
letter_display_source_adress = kw.get('letter_display_source_adress', None)
letter_display_head = int(kw.get('dislay_head') or 1)
letter_display_head = int(kw.get('display_head') or 0)
letter_display_svg = kw.get('display_svg') or 'png'
letter_download = int(kw.get('document_download') or 0)
letter_save = int(kw.get('document_save') or 0)
......@@ -155,7 +154,6 @@ if letter_format == "html":
letter_source_country_code=letter_source.get("codification", blank),
letter_source_country=letter_source.get("country", blank),
letter_content = letter_content,
letter_display_source_adress=letter_display_source_adress,
letter_display_sender_company_above_recipient = display_sender_company_above_recipient,
letter_source_vat=letter_source.get("vat", blank),
letter_source_corporate_registration=letter_source.get("corporate_registration", blank),
......@@ -221,7 +219,6 @@ if letter_format == "pdf":
letter_source_postal_code=letter_source.get("postal_code", blank),
letter_source_city=letter_source.get("city", blank),
letter_source_country_code=letter_source.get("codification", blank),
letter_display_source_adress=letter_display_source_adress,
letter_display_sender_company_above_recipient = display_sender_company_above_recipient,
letter_content = letter_content
)
......
......@@ -16,18 +16,27 @@ Generates the complete letter
letter_template_css_url python: options.get('letter_template_css_url');
letter_timestamp python: options.get('letter_timestamp');
letter_source_company python: options.get('letter_source_company');
letter_source_company_corporate_name python: options.get('letter_source_company_corporate_name');
letter_source_company python: options.get('letter_source_company');
letter_source_company_capital python: options.get('letter_source_company_capital');
letter_source_company_capital_currency python: options.get('letter_source_company_capital_currency');
letter_source_registered_court python: options.get('letter_source_registered_court');
letter_source_ape_code python: options.get('letter_source_ape_code');
letter_source_address python: options.get('letter_source_address');
letter_source_country_code python: options.get('letter_source_country_code');
letter_source_postal_code python: options.get('letter_source_postal_code');
letter_source_city python: options.get('letter_source_city');
letter_source_country python: options.get('letter_source_country');
letter_source_vat python: options.get('letter_source_vat');
letter_source_corporate_registration python: options.get('letter_source_corporate_registration');
letter_source_phone python: options.get('letter_source_phone');
letter_source_fax python: options.get('letter_source_fax');
letter_source_mail python: options.get('letter_source_mail');
letter_source_website python: options.get('letter_source_website');
letter_source_bank python: options.get('letter_source_bank');
letter_source_bic python: options.get('letter_source_bic');
letter_source_iban python: options.get('letter_source_iban');
letter_destination_company python: options.get('letter_destination_company');
letter_destination_person python: options.get('letter_destination_person');
letter_destination_address python: options.get('letter_destination_address');
......@@ -38,23 +47,7 @@ Generates the complete letter
letter_destination_position_padding_left python: options.get('letter_destination_position_padding_left');
letter_content python: options.get('letter_content');
letter_display_source_address python: options.get('letter_display_source_address');
letter_display_sender_company_above_recipient python: options.get('letter_display_sender_company_above_recipient');
letter_source_company python: options.get('letter_source_company');
letter_source_address python: options.get('letter_source_address');
letter_source_postal_code python: options.get('letter_source_postal_code');
letter_source_city python: options.get('letter_source_city');
letter_source_country python: options.get('letter_source_country');
letter_source_vat python: options.get('letter_source_vat');
letter_source_corporate_registration python: options.get('letter_source_corporate_registration');
letter_source_phone python: options.get('letter_source_phone');
letter_source_fax python: options.get('letter_source_fax');
letter_source_mail python: options.get('letter_source_mail');
letter_source_website python: options.get('letter_source_website');
letter_source_bank python: options.get('letter_source_bank');
letter_source_bic python: options.get('letter_source_bic');
letter_source_iban python: options.get('letter_source_iban');">
letter_display_sender_company_above_recipient python: options.get('letter_display_sender_company_above_recipient');">
<!DOCTYPE html>
<html tal:attributes="class python: ''.join(['ci-', letter_theme, ' ci-', letter_language])">
<head>
......
......@@ -27,7 +27,6 @@ Generates the letter Content
letter_destination_postal_code python: options.get('letter_destination_postal_code');
letter_destination_city python: options.get('letter_destination_city');
letter_destination_country python: options.get('letter_destination_country');
letter_display_source_address python: options.get('letter_display_source_address');
letter_display_sender_company_above_recipient python: options.get('letter_display_sender_company_above_recipient');
letter_destination_position python: options.get('letter_destination_position');
letter_destination_position_padding_left python: options.get('letter_destination_position_padding_left');
......@@ -79,21 +78,7 @@ Generates the letter Content
<tal:block tal:condition="python: int(letter_display_head)">
<tr>
<td></td>
<td class="ci-letter-source">
<tal:block tal:condition="python: letter_display_source_address is not None">
<tal:block tal:condition="python: letter_source_company">
<span tal:content="letter_source_company"></span><span class="ci-letter-separator">-</span>
</tal:block>
<tal:block tal:condition="python: letter_source_address">
<span tal:content="letter_source_address"></span><span class="ci-letter-separator">-</span>
</tal:block>
<tal:block tal:condition="python: letter_source_country_code">
<span tal:content="letter_source_country_code"></span><span class="ci-letter-separator">-</span>
</tal:block>
<span tal:content="letter_source_postal_code"></span>&nbsp;
<span tal:content="letter_source_city"></span>
</tal:block>
</td>
<td class="ci-letter-source"></td>
<td></td>
</tr>
<tr>
......
......@@ -30,7 +30,6 @@ return context.Letter_viewAsLetter(
format=format,
display_head=display_head,
display_svg=display_svg,
display_source_address=display_source_address,
override_source_organisation_title=override_source_organisation_title,
override_source_person_title=override_source_person_title,
override_destination_organisation_title=override_destination_organisation_title,
......
......@@ -50,7 +50,7 @@
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>REQUEST=None, format="pdf", portal_skin=None, batch_mode=False, display_source_address=None, display_svg=None, display_head=1 ,document_download=None, document_save=1, override_source_organisation_title=None,override_source_person_title=None,override_destination_organisation_title=None,override_destination_person_title=None,override_date=None,**kw</string> </value>
<value> <string>REQUEST=None, format="pdf", portal_skin=None, batch_mode=False, display_svg=None, display_head=1 ,document_download=None, document_save=1, override_source_organisation_title=None,override_source_person_title=None,override_destination_organisation_title=None,override_destination_person_title=None,override_date=None,**kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......
......@@ -28,7 +28,6 @@ return context.Base_viewAsLetter(
format=format,
display_head=display_head,
display_svg=display_svg,
display_source_address=display_source_address,
override_source_organisation_title=override_source_organisation_title,
override_source_person_title=override_source_person_title,
override_destination_organisation_title=override_destination_organisation_title,
......
......@@ -50,7 +50,7 @@
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>format=None, display_source_address=None, display_head=None, display_svg=None, batch_mode=False, document_download=None, document_save=None, override_source_organisation_title=None,override_source_person_title=None,override_destination_organisation_title=None,override_destination_person_title=None,override_date=None,destination_position_in_letter=\'right\', display_sender_company_above_recipient=0,destination_position_padding_left=\'100px\',**kw</string> </value>
<value> <string>format=None, display_head=None, display_svg=None, batch_mode=False, document_download=None, document_save=None, override_source_organisation_title=None,override_source_person_title=None,override_destination_organisation_title=None,override_destination_person_title=None,override_date=None,destination_position_in_letter=\'right\', display_sender_company_above_recipient=0,destination_position_padding_left=\'100px\',**kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......
......@@ -89,6 +89,7 @@
<list>
<string>my_preferred_corporate_identity_template_default_organisation_relative_url</string>
<string>my_preferred_corporate_identity_template_default_theme</string>
<string>my_preferred_corporate_identity_template_default_logo_prefix</string>
<string>my_preferred_corporate_identity_template_theme_css_relative_url</string>
<string>my_preferred_corporate_identity_template_fallback_logo_absolute_url</string>
<string>my_preferred_corporate_identity_template_fallback_logo_relative_url</string>
......
......@@ -10,15 +10,15 @@
<key> <string>delegated_list</string> </key>
<value>
<list>
<string>default</string>
<string>description</string>
<string>display_width</string>
<string>title</string>
</list>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>display_source_address</string> </value>
<value> <string>my_preferred_corporate_identity_template_default_logo_prefix</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
......@@ -51,9 +51,15 @@
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string></string> </value>
......@@ -74,16 +80,16 @@
<value>
<dictionary>
<item>
<key> <string>default</string> </key>
<value> <int>0</int> </value>
<key> <string>description</string> </key>
<value> <string>Prefix used loading theme related logos.</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Display sender address in address window.</string> </value>
<key> <string>display_width</string> </key>
<value> <int>30</int> </value>
</item>
<item>
<key> <string>field_id</string> </key>
<value> <string>my_checkbox</string> </value>
<value> <string>my_string_field</string> </value>
</item>
<item>
<key> <string>form_id</string> </key>
......@@ -91,7 +97,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Display Source Address</string> </value>
<value> <string>Default Logo Prefix</string> </value>
</item>
</dictionary>
</value>
......@@ -99,4 +105,17 @@
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="TALESMethod" module="Products.Formulator.TALESField"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python: preferences.getPreference(\'preferred_string_field_width\', 30)</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -78,10 +78,9 @@ if context.getPortalType() in ["Presentation"]:
# slideshow will contain <header>, <content>, <header>, <content>...
# so we need to go through it two-slides at a time to assemble
# slides
slide_iter = iter(slideshow)
for slide in slide_iter:
slide_1st = slide
slide_2nd = next(slide_iter)
for index in range(0, len(slideshow),2):
slide_1st = slideshow[index]
slide_2nd = slideshow[index+1]
# we don't know whether header is on first or second position
if '<h1' not in slide_1st[1]:
......@@ -97,4 +96,4 @@ if context.getPortalType() in ["Presentation"]:
output = output + section_start + go_1st + go_2nd + section_end
kw["remote_content"] = output
return context.WebPage_viewAsSlideshowWIP(*args, **kw)
return context.WebPage_viewAsSlideshow(*args, **kw)
......@@ -27,6 +27,7 @@ def digestCaption(my_caption, my_caption_title, my_count, my_shift):
if match_doubles.get(my_caption_title, None) is None:
match_doubles[my_caption_title] = my_count
caption_relevant_count = my_count
my_count += 1
else:
caption_relevant_count = match_doubles[my_caption_title]
caption_id = caption_abbreviation + "-" + str(caption_relevant_count)
......@@ -41,7 +42,6 @@ def digestCaption(my_caption, my_caption_title, my_count, my_shift):
my_shift
)
caption_list.append(caption_dict)
my_count = my_count + 1
return my_count
# XXX single quotes?
......
......@@ -12,22 +12,16 @@ import re
blank = ""
for link in re.findall('([^[]<a.*?</a>[^]])', doc_content or blank):
link_reference_list = re.findall('href=\"(.*?)\"', link)
if len(link_reference_list) == 0:
link_reference = re.findall("href=\'(.*?)\'", link)
if len(link_reference_list) == 0:
link_reference = None
else:
if link_reference_list:
link_reference = link_reference_list[0]
if link_reference.find("report=") > -1:
link_reference = None
# only internal references can be embedded
if link_reference is not None and link_reference.find("http") == -1:
try:
link_doc = context.restrictedTraverse(link_reference.split("?")[0])
doc_content = doc_content.replace(link, link_doc.asStrippedHTML())
except LookupError:
raise LookupError(link_reference)
if link_reference.find("report=") == -1:
# only internal references can be embedded
if link_reference.lower().find("http") == -1:
try:
link_doc = context.restrictedTraverse(link_reference.split("?")[0])
doc_content = doc_content.replace(link, link_doc.asStrippedHTML())
except LookupError:
raise LookupError(link_reference)
doc_content = doc_content.replace("${related_subject_list}", blank)
doc_content = doc_content.replace("${table_of_content", blank)
......
......@@ -13,45 +13,40 @@ import re
document = context
# backcompat
def getReportViaFancyName(my_report_name):
for follow_up in document_required_follow_up_list:
#report_name = follow_up.split("insertFollowUp").pop().split("Report")[0]
report_name = my_report_name.split("insertFollowUp").pop().split("Report")[0]
detail_name = "Detail" in report_name
coverage_name = "Coverage" in report_name
# extra curl: CostEffortReport requires format (base|detailed)
# backcompat, example: WebPage_insertFollowUpCostEffortReport
def getReportViaFancyName(my_report_name, follow_up):
#report_name = follow_up.split("insertFollowUp").pop().split("Report")[0]
report_name = my_report_name.split("insertFollowUp").pop().split("Report")[0]
detail_name = "Detail" in report_name
coverage_name = "Coverage" in report_name
# extra curl: CostEffortReport requires format (base|detailed)
if detail_name:
report_name = report_name.replace("Detail", "")
#method_name = ''.join(['Base_render', report_name, 'TextDocumentReportAsHtml'])
method_name = ''.join(['Base_generate', report_name, 'Report'])
method_call = getattr(follow_up, method_name)
if method_call is not None:
# extra curl: Coverage report requires parameter details (1|0)
if coverage_name:
return method_call(comment_visibility=True)[0].encode(encoding='UTF-8')
if detail_name:
report_name = report_name.replace("Detail", "")
#method_name = ''.join(['Base_render', report_name, 'TextDocumentReportAsHtml'])
method_name = ''.join(['Base_generate', report_name, 'Report'])
method_call = getattr(follow_up, method_name)
if method_call is not None:
# extra curl: Coverage report requires parameter details (1|0)
if coverage_name:
return method_call(comment_visibility=True)[0].encode(encoding='UTF-8')
elif detail_name:
return method_call(format='detailed',display_detail = 1)[0].encode(encoding='UTF-8')
else:
return method_call()[0].encode(encoding='UTF-8')
return method_call(format='detailed',display_detail = 1)[0].encode(encoding='UTF-8')
return method_call()[0].encode(encoding='UTF-8')
if (doc_content.find('${WebPage_')):
document_allowed_portal_type_list = ["Project", "Sale Opportunity", "Sale Order"]
if doc_content.find('${WebPage_') != -1:
document_required_follow_up_list = [x.getObject() for x in document.portal_catalog(
portal_type=document_allowed_portal_type_list,
portal_type=["Project", "Sale Opportunity", "Sale Order"],
follow_up_related_uid=document.getUid(),
limit=1
)]
substitution_list = re.findall(r'\${WebPage_(.*)}', doc_content)
for substitution_report in substitution_list:
if substitution_report == 'insertTableOfReferences':
continue
placeholder = ''.join(['${WebPage_', substitution_report, '}'])
substitution_content = getReportViaFancyName(substitution_report)
doc_content = doc_content.replace(placeholder, substitution_content)
if document_required_follow_up_list:
substitution_list = re.findall(r'\${WebPage_(.*)}', doc_content)
for substitution_report in substitution_list:
if substitution_report == 'insertTableOfReferences':
continue
substitution_content = getReportViaFancyName(substitution_report, document_required_follow_up_list[0])
if substitution_content:
doc_content = doc_content.replace('${WebPage_%s}' % substitution_report, substitution_content)
# new handler
# fetch reports same way as embedding documents = via links, like:
......@@ -60,41 +55,34 @@ if (doc_content.find('${WebPage_')):
# call it with the parameters provided
for link in re.findall('([^[]<a.*?</a>[^]])', doc_content):
link_reference = None
link_reference_list = re.findall('href=\"(.*?)\"', link)
if len(link_reference_list) == 0:
link_reference = re.findall("href=\'(.*?)\'", link)
if len(link_reference_list) == 0:
link_reference = None
if len(link_reference_list) > 0:
if link_reference_list:
link_reference = link_reference_list[0]
if link_reference is not None and link_reference.find("report=") > -1:
# url for report, check if report can be found.
report_name = None
link_split = link_reference.split("?")
if len(link_split) > 1:
link_relative_url = link_split[0]
link_param_list = link_split[1].replace("&amp;", "&").split("&")
link_param_dict = {}
link_param_dict["document_language"] = doc_language
link_param_dict["format"] = doc_format
for param in link_param_list:
param_key, param_value = param.split("=")
if param_key == "report":
report_name = param_value
else:
link_param_dict[param_key] = param_value
if link_reference is not None and link_reference.find("report=") > -1:
# url for report, check if report can be found.
report_name = None
link_split = link_reference.split("?")
if len(link_split) > 1:
link_relative_url = link_split[0]
link_param_list = link_split[1].replace("&amp;", "&").split("&")
link_param_dict = {}
link_param_dict["document_language"] = doc_language
link_param_dict["format"] = doc_format
for param in link_param_list:
param_key, param_value = param.split("=")
if param_key == "report":
report_name = param_value
else:
link_param_dict[param_key] = param_value
# XXX report must be callable directly and generate the full output
if report_name is not None:
target_context = document.restrictedTraverse(link_relative_url, None)
if target_context is not None:
target_caller = getattr(target_context, report_name, None)
if target_caller is not None:
substitution_content = target_caller(**link_param_dict)
# Note: switched to report returning a tuple with (content, header-title, header-subtitle)
doc_content = doc_content.replace(link, substitution_content[0].encode("utf-8").strip())
# XXX report must be callable directly and generate the full output
if report_name is not None:
target_context = document.restrictedTraverse(link_relative_url, None)
if target_context is not None:
target_caller = getattr(target_context, report_name, None)
if target_caller is not None:
substitution_content = target_caller(**link_param_dict)
# Note: switched to report returning a tuple with (content, header-title, header-subtitle)
doc_content = doc_content.replace(link, substitution_content[0].encode("utf-8").strip())
return doc_content
......@@ -28,7 +28,6 @@ return context.WebPage_viewAsLetter(
format=format,
display_head=display_head,
display_svg=display_svg,
display_source_address=display_source_address,
override_source_organisation_title=override_source_organisation_title,
override_source_person_title=override_source_person_title,
override_destination_organisation_title=override_destination_organisation_title,
......
......@@ -50,7 +50,7 @@
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>format="html", display_source_address=None, display_head=1, display_svg=None, batch_mode=False, document_download=None, document_save=None, override_source_organisation_title=None,override_source_person_title=None,override_destination_organisation_title=None,override_destination_person_title=None,override_date=None, destination_position_in_letter = \'right\', display_sender_company_above_recipient=0, destination_position_padding_left=\'100px\',letter_header_margin_to_top=26,**kw</string> </value>
<value> <string>format="html", display_head=1, display_svg=None, batch_mode=False, document_download=None, document_save=None, override_source_organisation_title=None,override_source_person_title=None,override_destination_organisation_title=None,override_destination_person_title=None,override_date=None, destination_position_in_letter = \'right\', display_sender_company_above_recipient=0, destination_position_padding_left=\'100px\',letter_header_margin_to_top=26,**kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......
......@@ -42,7 +42,6 @@ if dialog_id is not None:
format=format,
display_head=display_head,
display_svg=display_svg,
display_source_address=display_source_address,
document_download=document_download,
document_save=document_save,
destination_position_in_letter = destination_position_in_letter,
......
......@@ -50,7 +50,7 @@
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>override_source_organisation_title=None, display_source_address=None, display_svg=None,document_download=None, document_save=None, dialog_id=None, cancel_url=None, portal_skin=None,display_head=None, format=None, override_date=None, override_destination_person_title=None, override_source_person_title=None,override_destination_organisation_title=None, destination_position_in_letter = \'right\', display_sender_company_above_recipient=None,destination_position_padding_left=\'100px\',letter_header_margin_to_top=26,*args,**kw</string> </value>
<value> <string>override_source_organisation_title=None, display_svg=None,document_download=None, document_save=None, dialog_id=None, cancel_url=None, portal_skin=None,display_head=None, format=None, override_date=None, override_destination_person_title=None, override_source_person_title=None,override_destination_organisation_title=None, destination_position_in_letter = \'right\', display_sender_company_above_recipient=None,destination_position_padding_left=\'100px\',letter_header_margin_to_top=26,*args,**kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......
......@@ -12,7 +12,6 @@ Upgrade image for the specific type of display
# img_svg_format display image as svg (default png/None)
import re
from zExceptions import NotFound
if img_string is None or img_string == "":
return img_string
......@@ -25,32 +24,26 @@ img_src = img_src[0]
if img_src.startswith('data:image/'):
return img_string
img_type = None
# START user ignoring guidelines:
validation_freebie = None
new_src = None
# Guideline: no relative links. we cover
if img_src.startswith("./"):
new_src = img_src.replace("./", "")
img_string = img_string.replace(img_src, new_src)
img_src = new_src
# Guideline: include format. we cover
img_src = new_src or img_src
if img_src.find("format=") == -1:
if img_src.find("?") == -1:
new_src = img_src + "?format="
else:
new_src = img_src + "&amp;format="
img_string = img_string.replace(img_src, new_src)
img_src = new_src
# Guideline: images must be stored locally, don't complain if your pdf breaks
img_src = new_src or img_src
if img_src.startswith("http"):
validation_freebie = True
if validation_freebie is None:
if not img_src.lower().startswith("http"):
#END user ignoring guidelines
if img_src[0] == '/':
img_src = img_src[1:]
......@@ -58,21 +51,20 @@ if validation_freebie is None:
# flag broken link until further notice
if img_obj is None:
raise NotFound('The following image could not be found in erp5 OR is not following guidelines for links (eg no ./ prefix): %s' % (img_src.split("?")[0]))
img_type = img_obj.getContentType()
return '<p style="color:red">The following image could not be found in erp5 OR is not following guidelines for links (eg no ./ prefix): <span style="font-weight:bold">%s</span></p>' % (img_src.split("?")[0])
# ensure alt attributes are set
if img_string.find('alt=') == -1:
img_string.replace ("src=", 'alt="%s" src=' % img_caption or img_obj.getTitle())
img_type = img_obj.getContentType()
# force svg display as svg or png
if img_type == "image/svg+xml":
if img_svg_format == "png" or img_svg_format is None:
if img_svg_format == "png":
img_string = img_string.replace('type="image/svg+xml"', '')
img_string = img_string.replace("type='image/svg+xml'", '')
img_string = img_string.replace('format=svg', 'format=png')
if img_svg_format == "svg":
elif img_svg_format == "svg":
img_string = img_string.replace('src=', 'type="image/svg+xml" src=')
img_string = img_string.replace('src=', "type='image/svg+xml' src=")
img_string = img_string.replace('format=png', 'format=svg')
......
......@@ -50,7 +50,7 @@
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>img_string=None, img_wrap=None, img_svg_format=None, img_fullscreen_link=None, img_caption=None</string> </value>
<value> <string>img_string=None, img_wrap=None, img_svg_format="png", img_fullscreen_link=None, img_caption=None</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......
......@@ -40,10 +40,6 @@ from base64 import b64encode
blank = ''
pref = context.getPortalObject().portal_preferences
# ------------------ HTML cleanup/converter methods ----------------------------
def translateText(snip):
return book_localiser.erp5_ui.gettext(snip, lang=book_language).encode('UTF-8').strip()
# -------------------------- Setup ---------------------------------------------
book = context
book_format = kw.get('format') or 'html'
......@@ -51,7 +47,7 @@ book_download = int(kw.get('document_download') or 0)
book_save = int(kw.get('document_save') or 0)
book_display_svg = kw.get('display_svg') or 'png'
book_include_content_table = int(kw.get('include_content_table') or 1)
book_include_content_table = int(kw.get('include_content_table') or 0)
book_include_history_table = int(kw.get('include_history_table') or 0)
book_include_reference_table = int(kw.get('include_reference_table') or 0)
book_include_linked_content = int(kw.get('include_linked_content') or 0)
......@@ -69,7 +65,6 @@ override_logo_reference = kw.get('override_logo_reference')
override_batch_mode = kw.get('batch_mode')
# -------------------------- Document Parameters ------------------------------
book_localiser = book.getPortalObject().Localizer
book_relative_url = book.getRelativeUrl()
book_prefix = pref.getPreferredCorporateIdentityTemplateBookDocumentPrefix() or "Book."
book_rendering_fix = book.WebPage_getPdfOutputRenderingFix() or blank
......@@ -96,11 +91,12 @@ if override_batch_mode:
book_revision = "1"
book_short_date = book_modification_date.strftime('%Y-%m-%d')
if book_language and book_language != blank:
if book_language:
book.REQUEST['AcceptLanguage'].set(book_language, 10)
else:
book_language = blank
if book_reference is None:
if not book_reference:
book_reference = book_prefix + book_title.replace(" ", ".")
book_full_reference = '-'.join([book_reference, book_version, book_language])
......@@ -136,11 +132,11 @@ if book_include_history_table:
book_version_list = []
book_distribution_list = []
# old generate book
# old generate book, this embed link like <a href="Template.Test.Book.Embeddable.Document">This link should be embedded</a>
if book_include_linked_content:
book_content = book.WebPage_embedLinkedDocumentList(doc_content=book_content)
# embed reports
# embed reports, link like <a href="project_module/1234?report=bam>, which has report=
if book_include_report_content:
book_report_css_list = pref.getPreferredCorporateIdentityTemplateReportCssList() or []
book_report_js_list = pref.getPreferredCorporateIdentityTemplateReportJsList() or []
......@@ -153,19 +149,19 @@ if book_include_reference_table:
image_link_list = book.WebPage_createImageOverview(book_content)
for referenced_document in book_link_list.get("reference_list", []):
book_reference_list.append(referenced_document.get("item"))
book_content = book_content.replace(referenced_document.get("input"), referenced_document.get("output"))
book_content = book_content.replace(referenced_document.get("input"), referenced_document.get("output"),1)
for applicable_document in book_link_list.get("applicable_list", []):
book_applicable_document_list.append(applicable_document.get("item"))
book_content = book_content.replace(applicable_document.get("input"), applicable_document.get("output"))
book_content = book_content.replace(applicable_document.get("input"), applicable_document.get("output"),1)
for abbreviation in book_link_list.get("abbreviation_list", []):
book_abbreviation_list.append(abbreviation.get("item"))
book_content = book_content.replace(abbreviation.get("input"), abbreviation.get("output"))
book_content = book_content.replace(abbreviation.get("input"), abbreviation.get("output"),1)
for figure in image_link_list.get("figure_list", []):
book_image_list.append(figure.get("item"))
book_content = book_content.replace(figure.get("input"), figure.get("output"))
book_content = book_content.replace(figure.get("input"), figure.get("output"), 1)
for table in table_link_list.get("table_list", []):
book_table_list.append(table.get("item"))
book_content = book_content.replace(table.get("input"), table.get("output"))
book_content = book_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
......@@ -193,6 +189,7 @@ if book_include_reference_table:
# book_content = book_content.replace(book_history_section_list[-1], (book_history_section_list[-1] + book_references.encode('UTF-8').strip()))
#else:
# book_content = book_content.replace("${WebPage_insertTableOfReferences}", book_references.encode('UTF-8').strip())
book_references = book.Base_unescape(book_references)
book_content = book_content.replace("${WebPage_insertTableOfReferences}", book_references.encode('UTF-8').strip())
else:
book_content = book_content.replace("${WebPage_insertTableOfReferences}", blank)
......@@ -200,7 +197,7 @@ else:
# table of content has to be created manually to run over everything that
# should be indexed in the toc
if book_include_content_table:
book_translated_toc_title = translateText("Table of Contents")
book_translated_toc_title = context.Base_translateString("Table of Contents", lang=book_language)
if book_format == "pdf":
book_table_of_content = book.WebPage_createBookXslTableOfContent(
book_toc_title=book_translated_toc_title,
......@@ -270,11 +267,10 @@ if book_format == "html" or book_format == "mhtml":
doc_html_file=book_output
)
if book_format == "mhtml":
return book.Base_convertHtmlToSingleFile(book_output, allow_script=True)
return book.Base_convertHtmlToSingleFile(book_output, allow_script=True)
# ============================= Format: pdf ====================================
if book_format == "pdf":
elif book_format == "pdf":
book_cover = book.WebPage_createBookCover(
book_theme=book_theme.get("theme"),
book_title=book_title,
......
......@@ -42,7 +42,7 @@ leaflet_format = kw.get('format') or 'html'
leaflet_display_svg = kw.get('display_svg') or "png"
leaflet_download = int(kw.get('document_download') or 0)
leaflet_save = int(kw.get('document_save') or 0)
leaflet_display_side = int(kw.get('display_side') or 1)
leaflet_display_side = int(kw.get('display_side') or 0)
override_leaflet_header_title = kw.get('override_leaflet_header_title')
override_source_person_title = kw.get('override_source_person_title', None)
......
......@@ -28,7 +28,6 @@ return context.Base_viewAsLetter(
format=format,
display_head=display_head,
display_svg=display_svg,
display_source_address=display_source_address,
override_source_organisation_title=override_source_organisation_title,
override_source_person_title=override_source_person_title,
override_destination_organisation_title=override_destination_organisation_title,
......
......@@ -50,7 +50,7 @@
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>format=None, display_source_address=None, display_head=None, display_svg=None, batch_mode=False, document_download=None, document_save=None, override_source_organisation_title=None,override_source_person_title=None,override_destination_organisation_title=None,override_destination_person_title=None,override_date=None,destination_position_in_letter = \'right\',display_sender_company_above_recipient=0,destination_position_padding_left=\'100px\',letter_header_margin_to_top=26,**kw</string> </value>
<value> <string>format=None, display_head=None, display_svg=None, batch_mode=False, document_download=None, document_save=None, override_source_organisation_title=None,override_source_person_title=None,override_destination_organisation_title=None,override_destination_person_title=None,override_date=None,destination_position_in_letter = \'right\',display_sender_company_above_recipient=0,destination_position_padding_left=\'100px\',letter_header_margin_to_top=26,**kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......
......@@ -105,13 +105,8 @@ def removeLineBreaks(my_content):
def splitMultipleDetails(my_content):
for slide in getSlideDetailsList(my_content):
detail_list = getDetailsList(slide)
detail_list_len = len(detail_list)
if detail_list_len > 1:
counter = 0
for detail in detail_list:
counter += 1
if counter < (detail_list_len):
my_content = my_content.replace(detail, ''.join([detail, details_separator]))
for detail in detail_list[:-1]:
my_content = my_content.replace(detail, ''.join([detail, details_separator]))
return my_content
#def removeSlidesWithoutDetailsFromNotes(my_content):
......@@ -143,11 +138,12 @@ def removeEmptyDetails(my_content):
return content
def addLastSlide(my_last_slide):
# XXXX This condition is not accurate
if my_last_slide.count("<div") != 2:
last_slide_relative_url = pref.getPreferredCorporateIdentityTemplateSlideLastSlideRelativeUrl() or None
last_slide_relative_url = pref.getPreferredCorporateIdentityTemplateSlideLastSlideRelativeUrl()
if last_slide_relative_url:
# try:
last_slide = doc.restrictedTraverse(last_slide_relative_url) or None
last_slide = doc.restrictedTraverse(last_slide_relative_url)
if last_slide is not None:
return last_slide.getTextContent()
#except AttributeError:
......@@ -183,8 +179,6 @@ if doc_is_slideshow is None:
doc_upgraded_content = setH1AndH2AsSlideHeaders(doc_upgraded_content)
doc_upgraded_content = removeLineBreaks(doc_upgraded_content)
doc_content = blank
last_slide_content = blank
section_start = '<section>'
details_start = '<details open="open">'
details_end = '</details>'
......@@ -204,6 +198,7 @@ if doc_is_slideshow is None:
# fake_slide_list will be <h1>,<content>,<h1>,<content> so we need to go
# over two items at a time
doc_slide_iter = iter(fake_slide_list)
doc_content = blank
for x in doc_slide_iter:
slide_header = x
......@@ -323,8 +318,8 @@ if getDetails(doc_content) > -1:
# XXX split content above 1600 chars into multiple details tags?
doc_content = doc_content.replace(slide, details)
# ======================== Format: html/mhtml ==================================
if doc_format == "html": #or doc_format == "mhtml":
# ======================== Format: html ==================================
if doc_format == "html":
doc_output = doc.WebPage_createSlideshow(
doc_format=doc_format,
doc_theme=doc_theme.get("theme"),
......@@ -343,25 +338,21 @@ if doc_format == "html": #or doc_format == "mhtml":
doc_content=doc_content
)
if doc_format == "html":
return doc.Base_finishWebPageCreation(
doc_download=doc_download,
doc_save=doc_save,
doc_version=doc_version,
doc_title=doc_title,
doc_relative_url=doc_relative_url,
doc_aggregate_list=doc_aggregate_list,
doc_language=doc_language,
doc_modification_date=doc_modification_date,
doc_reference=doc_reference,
doc_full_reference=doc_full_reference,
doc_html_file=doc_output
)
if doc_format == "mhtml":
context.REQUEST.RESPONSE.setHeader("Content-Type", "text/html;")
return doc.Base_convertHtmlToSingleFile(doc_output, allow_script=True)
return doc.Base_finishWebPageCreation(
doc_download=doc_download,
doc_save=doc_save,
doc_version=doc_version,
doc_title=doc_title,
doc_relative_url=doc_relative_url,
doc_aggregate_list=doc_aggregate_list,
doc_language=doc_language,
doc_modification_date=doc_modification_date,
doc_reference=doc_reference,
doc_full_reference=doc_full_reference,
doc_html_file=doc_output
)
# ============================= Format: pdf ====================================
# ============================= Format: pdf/mhtml ====================================
if doc_format == "pdf" or doc_format == "mhtml":
doc_slideshow_footer = doc.WebPage_createSlideshowFooter(
doc_format=doc_format,
......@@ -390,20 +381,9 @@ if doc_format == "pdf" or doc_format == "mhtml":
doc_css=doc_css,
doc_orientation="ci-orientation-portrait" if doc_display_notes else "ci-corientation-landscape"
)
# outputting just the content requires to drop wrapping <divs> (reveal/slides)
# and add extra css to recreate the same layout. so a separate output=content
# instead of defaulting to None
# doc_slideshow_content = doc.WebPage_createSlideshowContent(
# doc_format=doc_format,
# doc_theme=doc_theme.get("theme"),
# doc_title=doc_title,
# doc_language=doc_language,
# doc_template_css_url=doc_theme.get("template_css_url"),
# doc_theme_css_font_list=doc_theme.get("theme_css_font_list"),
# doc_theme_css_url=doc_theme.get("theme_css_url"),
# doc_content=doc_content
#)
if doc_display_notes:
doc_slideshow_notes = doc.WebPage_createSlideshowNotes(
doc_format=doc_format,
......
......@@ -78,7 +78,6 @@
<string>portal_skin</string>
<string>display_head</string>
<string>letter_header_margin_to_top</string>
<string>display_source_address</string>
<string>display_sender_company_above_recipient</string>
<string>display_svg</string>
<string>document_save</string>
......
......@@ -301,7 +301,7 @@
<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=Letter&amp;override_source_person_title=%s&amp;override_source_organisation_title=%s&amp;override_destination_person_title=%s&amp;override_destination_organisation_title=%s&amp;display_head=%s&amp;override_date=%s&amp;display_source_address=%s&amp;display_svg=%s&amp;destination_position_in_letter=%s&amp;display_sender_company_above_recipient=%s&amp;destination_position_padding_left=%s" name="default_version"></iframe>\' % (context.absolute_url(), context.REQUEST.get("override_source_person_title", ""), context.REQUEST.get("override_source_organisation_title", ""), context.REQUEST.get("override_destination_person_title", ""), context.REQUEST.get("override_destination_organisation_title", ""), context.REQUEST.get("display_head", 1), context.REQUEST.get("override_date", ""), context.REQUEST.get("display_source_address", 0), context.REQUEST.get("display_svg", "png"), context.REQUEST.get("destination_position_in_letter", "right"), context.REQUEST.get("display_sender_company_above_recipient", 0), context.REQUEST.get(\'destination_position_padding_left\', \'100px\'))
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=Letter&amp;override_source_person_title=%s&amp;override_source_organisation_title=%s&amp;override_destination_person_title=%s&amp;override_destination_organisation_title=%s&amp;display_head=%s&amp;override_date=%s&amp;display_svg=%s&amp;destination_position_in_letter=%s&amp;display_sender_company_above_recipient=%s&amp;destination_position_padding_left=%s" name="default_version"></iframe>\' % (context.absolute_url(), context.REQUEST.get("override_source_person_title", ""), context.REQUEST.get("override_source_organisation_title", ""), context.REQUEST.get("override_destination_person_title", ""), context.REQUEST.get("override_destination_organisation_title", ""), context.REQUEST.get("display_head", 1), context.REQUEST.get("override_date", ""), context.REQUEST.get("display_svg", "png"), context.REQUEST.get("destination_position_in_letter", "right"), context.REQUEST.get("display_sender_company_above_recipient", 0), context.REQUEST.get(\'destination_position_padding_left\', \'100px\'))
]]></string> </value>
</item>
......
......@@ -532,7 +532,7 @@ NOTE: logos will disappear in wkhtmltopdf if they go beyond the available space
.ci-book ul li,
.ci-book ol li {
padding-left: 16px;
text-indent: -24px;
/*text-indent: -24px;*/
}
.ci-book ul li:before {
content: "•";
......
......@@ -128,6 +128,7 @@ html{
font-size: small;
border-bottom: 1px solid black;
display: inline-block;
margin-left: -1mm;
}
/* === adress-right === */
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_count</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_mt_index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>_tree</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value> <string>602161ce4545becc5ab6757e7e5522f9</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/x-bmp</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>842</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_test_book_embed_report_bmp</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Image</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>595</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Length" module="BTrees.Length"/>
</pickle>
<pickle> <int>0</int> </pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_count</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_mt_index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>_tree</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value> <string>0ed6524c4084a10b5fce633ad75f16d2</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/x-bmp</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>842</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_test_book_reference_table_unescape_bmp</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Image</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>595</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Length" module="BTrees.Length"/>
</pickle>
<pickle> <int>0</int> </pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_count</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_mt_index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>_tree</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value> <string>36714bf753f927a01c4c631bdab7d825</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/x-bmp</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>595</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_test_convert_to_slideview_bmp</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Image</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>842</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Length" module="BTrees.Length"/>
</pickle>
<pickle> <int>0</int> </pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_count</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_mt_index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>_tree</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value> <string>852236dc9379bfd4f91445fd4d01dcea</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/x-bmp</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>595</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_test_last_view_bmp</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Image</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>842</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Length" module="BTrees.Length"/>
</pickle>
<pickle> <int>0</int> </pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_count</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_mt_index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>_tree</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value> <string>9e4f1c8416e0cfb1df66ad65f78166c9</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/x-bmp</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>842</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_test_leaflet_not_display_side_column_bmp</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Image</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>595</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Length" module="BTrees.Length"/>
</pickle>
<pickle> <int>0</int> </pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
......@@ -79,7 +79,7 @@
</item>
<item>
<key> <string>content_md5</string> </key>
<value> <string>d1251e10d5377c3998da9757888c27b8</string> </value>
<value> <string>854ac49c24a4c58b43ea3bc8c0d1bf62</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_count</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_mt_index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>_tree</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value> <string>616c0628cd7dc1debaed1d2558275fe3</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/x-bmp</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>842</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_test_letter_not_display_header_bmp</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Image</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>595</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Length" module="BTrees.Length"/>
</pickle>
<pickle> <int>0</int> </pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_count</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_mt_index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>_tree</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value> <string>8dd4ece0e5b0ba3adf78433664e341ca</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/x-bmp</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>595</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_test_presentaion_odp_slide_view_bmp</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Image</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>842</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Length" module="BTrees.Length"/>
</pickle>
<pickle> <int>0</int> </pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Image" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_count</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>_mt_index</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>_tree</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value> <string>8dd4ece0e5b0ba3adf78433664e341ca</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>image/x-bmp</string> </value>
</item>
<item>
<key> <string>height</string> </key>
<value> <int>595</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_test_presentaion_pptx_slide_view_bmp</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Image</string> </value>
</item>
<item>
<key> <string>width</string> </key>
<value> <int>842</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Length" module="BTrees.Length"/>
</pickle>
<pickle> <int>0</int> </pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="OOBTree" module="BTrees.OOBTree"/>
</pickle>
<pickle>
<none/>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Sale Opportunity" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_test_embed_sale_opportunity</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Sale Opportunity</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<h1>Reports</h1>
<p>
Embedding reports should work via links with a report name and subsequent parameters
specified. Reports are all custom, so if they don't exist, they will not be loaded.
</p>
<h2>Test back Reports</h2>
${WebPage_insertFollowUpCorporareIdentityTestReport}
<h2>Test Reports</h2>
<a href="sale_opportunity_module/template_test_embed_sale_opportunity?report=Base_generateCorporareIdentityTestReport&amp;test=23"></a>
<br/>
<p>
There should be reports embedded above.
</p>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Page" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>contributor/person_module/template_test_member</string>
<string>contributor/person_module/template_test_author</string>
<string>follow_up/sale_opportunity_module/template_test_embed_sale_opportunity</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Sample description</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_test_book_embed_reportdocument_html</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Page</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value> <string>Template Test Book.Embed.ReportDocument</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Template Test Book.Embed.ReportDocument</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>001</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -98,7 +98,7 @@
<section class="ci-book-table-of-content"><p class="ci-book-toc-faux-h1">Table of Contents</p><ol><li><div><a href="#introduction0_anchor">Introduction</div></a></li><li><div><a href="#synthese1_anchor">Synthese</div></a><ol><li><div><a href="#risks-and-measures2_anchor">Risks and measures</div></a><ol><li><div><a href="#risk-of-casualties-if-device-does-not-stop-and-destroys-itself3_anchor">Risk of casualties if device does not stop and destroys itself</div></a></li><li><div><a href="#risk-of-killing-birds-and-polluting-the-environment4_anchor">Risk of killing birds and polluting the environment</div></a></li><li><div><a href="#noise-and-vibration-levels5_anchor">Noise and vibration levels</div></a></li></ol></li></ol><li><div><a href="#reports6_anchor">Reports</div></a><ol><li><div><a href="#project-reports7_anchor">Project Reports</div></a></li><li><div><a href="#sale-order-reports8_anchor">Sale Order Reports</div></a></ol></ol></section>
<section>
......@@ -204,9 +204,9 @@
</tbody>
</table>
</section>
<h1><a name="introduction0_anchor"></a>Introduction<a class="custom-para" href=#introduction0_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h1>
<h1>Introduction</h1>
<h1><a name="synthese1_anchor"></a>Synthese<a class="custom-para" href=#synthese1_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h1>
<h1>Synthese</h1>
<p>This document is a high level overview measures taken by Foo for Bar project. </p>
<p>
The purpose of this document is to show possible dangers and measures being
......@@ -216,8 +216,8 @@ taken to prevent them from legal and ethics point of view.
<h2><a name="risks-and-measures2_anchor"></a>Risks and measures<a class="custom-para" href=#risks-and-measures2_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h2>
<h3><a name="risk-of-casualties-if-device-does-not-stop-and-destroys-itself3_anchor"></a>Risk of casualties if device does not stop and destroys itself<a class="custom-para" href=#risk-of-casualties-if-device-does-not-stop-and-destroys-itself3_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h3>
<h2>Risks and measures</h2>
<h3>Risk of casualties if device does not stop and destroys itself</h3>
<p>
When is it safe to turn off if we turn if off too early or are to risk-aversise,
economic losses of the device not working can be incurred. If on the other hand
......@@ -232,14 +232,14 @@ learning. Based on these findings another model / formula can be derived in
which we can calculate risk and evaluate costs of insurance which can cover
risk of casualties, et al.
</p>
<h3><a name="risk-of-killing-birds-and-polluting-the-environment4_anchor"></a>Risk of killing birds and polluting the environment<a class="custom-para" href=#risk-of-killing-birds-and-polluting-the-environment4_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h3>
<h3>Risk of killing birds and polluting the environment</h3>
<p>The software is set up on pre-existing devices which should have already
passed regulatory checks and certification concerning these risks. The use of
smart sensors technology in no way compromises security as the software
is solely responsible for shutting down and starting a device without
affects its normal operation nor its structure.
</p>
<h3><a name="noise-and-vibration-levels5_anchor"></a>Noise and vibration levels<a class="custom-para" href=#noise-and-vibration-levels5_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h3>
<h3>Noise and vibration levels</h3>
<p>
During operation, sound and vibration continue to be emitted into the
water body, potentially disturbing the communication and foraging behaviour
......@@ -315,15 +315,15 @@ which should not be touched.
web page, this time Google [<a href="https://www.google.com/" title="Google Website;Search;0;1">AD</a>], to
test whether the counter increments correctly.
</p>
<h1><a name="reports6_anchor"></a>Reports<a class="custom-para" href=#reports6_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h1>
<h1>Reports</h1>
<p>
Embedding reports should work via links with a report name and subsequent parameters
specified. Reports are all custom, so if they don't exist, they will not be loaded.
</p>
<h2><a name="project-reports7_anchor"></a>Project Reports<a class="custom-para" href=#project-reports7_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h2>
<h2>Project Reports</h2>
<a href="project_module/template_test_project?report=Base_generateLineBreakdownReport&amp;display_header=2">Line Breakdown Report</a>
<br/>
<h2><a name="sale-order-reports8_anchor"></a>Sale Order Reports<a class="custom-para" href=#sale-order-reports8_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h2>
<h2>Sale Order Reports</h2>
<a href="sale_order_module/template_test_sale_order?report=Base_generateCostEffortReport&amp;display_detail=detailed">Cost Effort Report</a>
<br/>
<a href="sale_order_module/template_test_sale_order?report=Base_generateDeliverableReport">Deliverable Report</a>
......
......@@ -98,10 +98,10 @@
<section class="ci-book-table-of-content"><p class="ci-book-toc-faux-h1">Table of Contents</p><ol><li><div><a href="#synthese0_anchor">Synthese</div></a><ol><li><div><a href="#risks-and-measures1_anchor">Risks and measures</div></a><ol><li><div><a href="#risk-of-casualties-if-device-does-not-stop-and-destroys-itself2_anchor">Risk of casualties if device does not stop and destroys itself</div></a></li><li><div><a href="#risk-of-killing-birds-and-polluting-the-environment3_anchor">Risk of killing birds and polluting the environment</div></a></li><li><div><a href="#noise-and-vibration-levels4_anchor">Noise and vibration levels</div></a></li></ol></li></ol><li><div><a href="#reports5_anchor">Reports</div></a><ol><li><div><a href="#project-reports6_anchor">Project Reports</div></a></li><li><div><a href="#sale-order-reports7_anchor">Sale Order Reports</div></a></li></ol><li><div><a href="#backcompat/edge-cases8_anchor">Backcompat/Edge Cases</div></a><ol><li><div><a href="#old-style-task/milestone-boxes9_anchor">Old style task/milestone boxes</div></a></li><li><div><a href="#code-boxes10_anchor">Code Boxes</div></a></li><li><div><a href="#blockquote11_anchor">Blockquote</div></a></li><li><div><a href="#awesome-long-urls-embedded-in-text12_anchor">Awesome Long Urls Embedded in Text</div></a></ol></ol></section>
<h1><a name="synthese0_anchor"></a>Synthese<a class="custom-para" href=#synthese0_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h1>
<h1>Synthese</h1>
<p>This document is a high level overview measures taken by Foo for Bar project. </p>
<p>
The purpose of this document is to show possible dangers and measures being
......@@ -111,8 +111,8 @@ taken to prevent them from legal and ethics point of view.
<h2><a name="risks-and-measures1_anchor"></a>Risks and measures<a class="custom-para" href=#risks-and-measures1_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h2>
<h3><a name="risk-of-casualties-if-device-does-not-stop-and-destroys-itself2_anchor"></a>Risk of casualties if device does not stop and destroys itself<a class="custom-para" href=#risk-of-casualties-if-device-does-not-stop-and-destroys-itself2_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h3>
<h2>Risks and measures</h2>
<h3>Risk of casualties if device does not stop and destroys itself</h3>
<p>
When is it safe to turn off if we turn if off too early or are to risk-aversise,
economic losses of the device not working can be incurred. If on the other hand
......@@ -127,14 +127,14 @@ learning. Based on these findings another model / formula can be derived in
which we can calculate risk and evaluate costs of insurance which can cover
risk of casualties, et al.
</p>
<h3><a name="risk-of-killing-birds-and-polluting-the-environment3_anchor"></a>Risk of killing birds and polluting the environment<a class="custom-para" href=#risk-of-killing-birds-and-polluting-the-environment3_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h3>
<h3>Risk of killing birds and polluting the environment</h3>
<p>The software is set up on pre-existing devices which should have already
passed regulatory checks and certification concerning these risks. The use of
smart sensors technology in no way compromises security as the software
is solely responsible for shutting down and starting a device without
affects its normal operation nor its structure.
</p>
<h3><a name="noise-and-vibration-levels4_anchor"></a>Noise and vibration levels<a class="custom-para" href=#noise-and-vibration-levels4_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h3>
<h3>Noise and vibration levels</h3>
<p>
During operation, sound and vibration continue to be emitted into the
water body, potentially disturbing the communication and foraging behaviour
......@@ -316,15 +316,15 @@ which should not be touched.
</tbody>
</table>
<h1><a name="reports5_anchor"></a>Reports<a class="custom-para" href=#reports5_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h1>
<h1>Reports</h1>
<p>
Embedding reports should work via links with a report name and subsequent parameters
specified. Reports are all custom, so if they don't exist, they will not be loaded.
</p>
<h2><a name="project-reports6_anchor"></a>Project Reports<a class="custom-para" href=#project-reports6_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h2>
<h2>Project Reports</h2>
<a href="project_module/template_test_project?report=Base_generateLineBreakdownReport&amp;display_header=2">Line Breakdown Report</a>
<br/>
<h2><a name="sale-order-reports7_anchor"></a>Sale Order Reports<a class="custom-para" href=#sale-order-reports7_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h2>
<h2>Sale Order Reports</h2>
<a href="sale_order_module/template_test_sale_order?report=Base_generateCostEffortReport&amp;display_detail=detailed">Cost Effort Report</a>
<br/>
<a href="sale_order_module/template_test_sale_order?report=Base_generateDeliverableReport">Deliverable Report</a>
......@@ -338,11 +338,11 @@ specified. Reports are all custom, so if they don't exist, they will not be load
<p>
There should be reports embedded above.
</p>
<h1><a name="backcompat/edge-cases8_anchor"></a>Backcompat/Edge Cases<a class="custom-para" href=#backcompat/edge-cases8_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h1>
<h1>Backcompat/Edge Cases</h1>
<p>Check old breakdown/milestones are also handled:</p>
<p>The recovery from backup is not automated for this stage, so after any important issue, BAM would make it&#39;s best effort to have the system running in a reasonable amount of time.</p>
<h2><a name="old-style-task/milestone-boxes9_anchor"></a>Old style task/milestone boxes<a class="custom-para" href=#old-style-task/milestone-boxes9_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h2>
<h2>Old style task/milestone boxes</h2>
<div class="ci-document-box-offer">
<div class="ci-document-box-id"><strong>ID</strong>: SO-XO.ABC.P-50.20</div>
......@@ -358,7 +358,7 @@ There should be reports embedded above.
<div class="ci-document-box-location"><strong>Location</strong>: Couscous</div>
</div>
<h2><a name="code-boxes10_anchor"></a>Code Boxes<a class="custom-para" href=#code-boxes10_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h2>
<h2>Code Boxes</h2>
<p>
You can use the above command to see whether Re6st is working. The output
should be similar to:</p><pre><code>● re6stnet.service - (null)
......@@ -378,7 +378,7 @@ There should be reports embedded above.
Mar 09 16:43:23 slapostest2 systemd[1]: Started (null).</code></pre>
<p>After this step Re6st is installed and the machine is accessable over IPv6.</p>
<h2><a name="blockquote11_anchor"></a>Blockquote<a class="custom-para" href=#blockquote11_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h2>
<h2>Blockquote</h2>
<blockquote>
<p>jio.get(&#39;image_module/2&quot;).push(function (image) { console.log(&quot;image : &quot;, image);}</p>
......@@ -387,7 +387,7 @@ There should be reports embedded above.
<p>image : Object {portal_type: &quot;Image Tile&quot;, title: &quot;Hot Springs, Arkansas&quot;, size: &quot;3489732&quot;, quality: &quot;high&quot;, product_line_list: [&quot;agriculture&quot;, &quot;forest&quot;], reference: &quot;8889-2223-238842&quot;}</p>
</blockquote>
<h2><a name="awesome-long-urls-embedded-in-text12_anchor"></a>Awesome Long Urls Embedded in Text<a class="custom-para" href=#awesome-long-urls-embedded-in-text12_anchor><span style="font-size:.75em;line-height:1em;padding-left:.5em;">&para;</span></a></h2>
<h2>Awesome Long Urls Embedded in Text</h2>
<p>
Hybrid application are web/HTML5 application wrapped with libraries supporting native
features. This approach is largely used theses days : in 2013, Gartner, already predicted that by
......
<h1>Introduction</h1>
${WebPage_insertTableOfReferences}
<table>
<thead>
<tr>
<th colspan="4">Some Table</th>
</tr>
<tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>123</td>
<td>456</td>
<td>Some text</td>
<td>More description</td>
</tr>
</tbody>
<caption>Table description &lt;abc&gt;</caption>
</table>
<p>There is more</p>
<table>
<thead>
<tr>
<th colspan="4">Some Table</th>
</tr>
<tr>
<th>A</th>
<th>B</th>
<th>C</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>123</td>
<td>456</td>
<td>Some text</td>
<td style="text-align: center">More description</td>
</tr>
</tbody>
<caption>Table description</caption>
</table>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Page" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>Template.Test.Book.ReferenceTable.Unescape</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_test_book_reference_table_unescape_html</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Page</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Template.Test.Book.ReferenceTable.Unescape</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value>
<none/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<h1>1</h1>
<div>TEST1</div>
<h1>2</h1>
<div>TEST2</div>
\ No newline at end of file
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Page" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>test.convert.to.slideview</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_test_convert_to_slideview</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Page</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Test Convert To SlideView</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value>
<none/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<section class="master">
<h1>Thank You</h1>
<details open="">
<p>For more information</p>
</details>
</section>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Page" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Add_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Change_local_roles_Permission</string> </key>
<value>
<tuple>
<string>Assignor</string>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>_Modify_portal_content_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Assignee</string>
<string>Assignor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>template.test.last.slide</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>template_test_last_slide_html</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Page</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Template.Test.Last.Slide</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value>
<none/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -50,9 +50,7 @@
<tr>
<td></td>
<td class="ci-letter-source">
</td>
<td class="ci-letter-source"></td>
<td></td>
</tr>
<tr>
......
......@@ -50,9 +50,7 @@
<tr>
<td></td>
<td class="ci-letter-source">
</td>
<td class="ci-letter-source"></td>
<td></td>
</tr>
<tr>
......
......@@ -50,9 +50,7 @@
<tr>
<td></td>
<td class="ci-letter-source">
</td>
<td class="ci-letter-source"></td>
<td></td>
</tr>
<tr>
......
......@@ -48,34 +48,6 @@
<table>
<tbody>
<tr>
<td></td>
<td class="ci-letter-source">
</td>
<td></td>
</tr>
<tr>
<td></td>
<td class="ci-letter-destination"
style="padding-left: 100px">
<span>Test Organisation</span>
<span>Test Recipient</span>
<span>Test Drive 123</span>
<span>12345 Test City</span>
<span> </span>
</td>
<td></td>
</tr>
</tbody>
</table>
</div>
......
<?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>**kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Base_generateCorporareIdentityTestReport</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Test Component" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>testCorporateIdentityMethod</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>test.erp5.testCorporateIdentityMethod</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Test Component</string> </value>
</item>
<item>
<key> <string>sid</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content_error_message</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>erp5</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary>
<item>
<key> <string>component_validation_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_log</string> </key>
<value>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>validate</string> </value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>validated</string> </value>
</item>
</dictionary>
</list>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
document_module/template_test_image_source_pdf
document_module/template_test_*
image_module/template_test_*
image_module/template_test_image*
organisation_module/template_test*
......
document_module/template_test_image_source_pdf
document_module/template_test_*
image_module/template_test_*
image_module/template_test_image*
organisation_module/template_test*
......@@ -11,6 +11,7 @@ portal_categories/group/template*
portal_tests/template_test_zuite
portal_tests/template_test_zuite/*
product_module/template_test_product
sale_opportunity_module/template_test_*
support_request_module/template_test_*
web_page_module/template_test_*
web_site_module/template_test_web_site
\ No newline at end of file
test.erp5.testCorporateIdentityTemplateList
test.erp5.testFunctionalCorporateIdentityTemplateList
\ No newline at end of file
test.erp5.testFunctionalCorporateIdentityTemplateList
test.erp5.testCorporateIdentityMethod
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment