Commit 17ccfaaf authored by Xiaowu Zhang's avatar Xiaowu Zhang Committed by Julien Muchembled

Revert all recent changes to erp5_hal_json_style & erp5_web_renderjs_ui(_test)...

Revert all recent changes to erp5_hal_json_style & erp5_web_renderjs_ui(_test) that were committed by mistake
parents a1485988 7950d24e
......@@ -73,14 +73,13 @@ return context.ERP5Document_getHateoas(\n
default_param_json=default_param_json,\n
form_relative_url=form_relative_url,\n
bulk_list=bulk_list,\n
sort_on=sort_on,\n
restricted=1\n
)\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>REQUEST=None, response=None, view=None, mode=\'root\', query=None, select_list=None, limit=10, form=None, relative_url=None, list_method=None, default_param_json=None, form_relative_url=None, bulk_list="[]", sort_on=None</string> </value>
<value> <string>REQUEST=None, response=None, view=None, mode=\'root\', query=None, select_list=None, limit=10, form=None, relative_url=None, list_method=None, default_param_json=None, form_relative_url=None, bulk_list="[]"</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......
......@@ -75,18 +75,18 @@ url_template_dict = {\n
"traverse_template": "%(root_url)s/%(script_id)s?mode=traverse" + \\\n
"{&relative_url,view}",\n
"search_template": "%(root_url)s/%(script_id)s?mode=search" + \\\n
"{&query,select_list*,limit*,sort_on*}",\n
"{&query,select_list*,limit*}",\n
"custom_search_template": "%(root_url)s/%(script_id)s?mode=search" + \\\n
"&relative_url=%(relative_url)s" \\\n
"&form_relative_url=%(form_relative_url)s" \\\n
"&list_method=%(list_method)s" \\\n
"&default_param_json=%(default_param_json)s" \\\n
"{&query,select_list*,limit*,sort_on*}",\n
"{&query,select_list*,limit*}",\n
"custom_search_template_no_editable": "%(root_url)s/%(script_id)s?mode=search" + \\\n
"&relative_url=%(relative_url)s" \\\n
"&list_method=%(list_method)s" \\\n
"&default_param_json=%(default_param_json)s" \\\n
"{&query,select_list*,limit*,sort_on*}",\n
"{&query,select_list*,limit*}",\n
"new_content_action": "%(root_url)s/%(script_id)s?mode=newContent",\n
"bulk_action": "%(root_url)s/%(script_id)s?mode=bulk",\n
# XXX View is set by default to empty\n
......@@ -98,16 +98,6 @@ url_template_dict = {\n
\n
default_document_uri_template = url_template_dict["jio_get_template"]\n
\n
def getAllSubCategoriesAsMap(root):\n
result = {}\n
sub_categories_list = root.objectValues()\n
if len(sub_categories_list) != 0:\n
for grain in sub_categories_list:\n
result[grain.getUid()] = {"sub_categories": getAllSubCategoriesAsMap(grain),\n
"title": grain.getTitle()}\n
\n
return result\n
\n
def getRealRelativeUrl(document):\n
return \'/\'.join(portal.portal_url.getRelativeContentPath(document))\n
\n
......@@ -387,14 +377,6 @@ def renderField(traversed_document, field, form_relative_url, value=None, meta_t
# line[title] = prop\n
# line["_relative_url"] = document.getRelativeUrl()\n
# line_list.append(line)\n
domain_tree_map = {} \n
domain_tree = field.get_value("domain_root_list")\n
for tree in domain_tree:\n
if hasattr(portal_categories, tree[0]):\n
domain_tree_map[portal_categories[tree[0]].getUid()] = {\n
"sub_categories":getAllSubCategoriesAsMap(portal_categories[tree[0]]),\n
"title": tree[1]\n
}\n
\n
result = {\n
"type": meta_type,\n
......@@ -410,7 +392,6 @@ def renderField(traversed_document, field, form_relative_url, value=None, meta_t
"portal_type": portal_types,\n
"lines": lines,\n
"default_params": default_params,\n
"domain_tree_map": domain_tree_map,\n
"list_method": list_method_name\n
}\n
if (list_method_custom is not None):\n
......@@ -579,7 +560,6 @@ def renderFormDefinition(form, response_dict):\n
\n
mime_type = \'application/hal+json\'\n
portal = context.getPortalObject()\n
portal_categories = portal.portal_categories\n
sql_catalog = portal.portal_catalog.getSQLCatalog()\n
\n
# Calculate the site root to prevent unexpected browsing\n
......@@ -921,18 +901,11 @@ def calculateHateoas(is_portal=None, is_site_root=None, traversed_document=None,
callable_list_method = portal.portal_catalog\n
else:\n
callable_list_method = getattr(traversed_document, list_method)\n
\n
tmp_sort_on = ()\n
if sort_on is not None:\n
for grain in sort_on:\n
if grain != "":\n
tmp_sort_on += (tuple([x for x in grain.split(",")]),)\n
\n
if query:\n
sql_list = callable_list_method(full_text=query, limit=limit, sort_on=tmp_sort_on, **catalog_kw)\n
sql_list = callable_list_method(full_text=query, limit=limit, **catalog_kw)\n
else:\n
sql_list = callable_list_method(limit=limit, sort_on=tmp_sort_on, **catalog_kw)\n
\n
sql_list = callable_list_method(limit=limit, **catalog_kw)\n
\n
result_list = []\n
\n
# if (select_list is None):\n
......@@ -1088,7 +1061,7 @@ else:\n
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>REQUEST=None, response=None, view=None, mode=\'root\', query=None, select_list=None, limit=10, form=None, relative_url=None, restricted=0, list_method=None, default_param_json=None, form_relative_url=None, bulk_list="[]", sort_on=()</string> </value>
<value> <string>REQUEST=None, response=None, view=None, mode=\'root\', query=None, select_list=None, limit=10, form=None, relative_url=None, restricted=0, list_method=None, default_param_json=None, form_relative_url=None, bulk_list="[]"</string> </value>
</item>
<item>
<key> <string>id</string> </key>
......
......@@ -348,7 +348,7 @@ class TestERP5Document_getHateoas_mode_root(ERP5HALJSONStyleSkinsMixin):
self.assertEqual(result_dict['_links']['type']['name'], document.getPortalType())
self.assertEqual(result_dict['_links']['raw_search']['href'],
"%s/web_site_module/hateoas/ERP5Document_getHateoas?mode=search{&query,select_list*,limit*,sort_on*}" % self.portal.absolute_url())
"%s/web_site_module/hateoas/ERP5Document_getHateoas?mode=search{&query,select_list*,limit*}" % self.portal.absolute_url())
self.assertEqual(result_dict['_links']['raw_search']['templated'], True)
self.assertEqual(result_dict['_links']['raw_search']['name'], "Raw Search")
......
<?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>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</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>
</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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</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>gadget_erp5_filter_editor.html</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>rjs_gadget_erp5_filtereditor_html</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </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>text_content</string> </key>
<value> <string encoding="cdata"><![CDATA[
<!DOCTYPE html>\n
<html>\n
<head>\n
<meta charset="utf-8" />\n
<meta name="viewport" content="width=device-width, user-scalable=no" />\n
<title>ERP5 Filter Editor</title>\n
\n
<!-- renderjs -->\n
<script src="rsvp.js"></script>\n
<script src="renderjs.js"></script>\n
<script src="handlebars.js"></script>\n
\n
<!-- custom script -->\n
<script src="gadget_erp5_filter_editor.js"></script>\n
\n
<script id="option-template" type="text/x-handlebars-template">\n
<option value="{{value}}" data-i18n="{{text}}">{{text}}</option>\n
</script>\n
\n
<script id="selected-option-template" type="text/x-handlebars-template">\n
<option selected="selected" data-i18n="{{text}}" value="{{value}}">{{text}}</option>\n
</script>\n
\n
\n
<script id="option-template" type="text/x-handlebars-template">\n
<option value="{{value}}" data-i18n="{{text}}">{{text}}</option>\n
</script>\n
\n
<script id="selected-option-template" type="text/x-handlebars-template">\n
<option selected="selected" data-i18n="{{text}}" value="{{value}}">{{text}}</option>\n
</script>\n
\n
\n
\n
\n
\n
<script id="filter-template" type="text/x-handlebars-template">\n
<div class="ui-panel-inner">\n
\n
<div data-role="header" role="banner" class="ui-header ui-bar-inherit">\n
<div class="ui-controlgroup ui-controlgroup-horizontal ui-btn-left">\n
<div class="ui-controlgroup-controls">\n
<form class="delete">\n
<button data-rel="close" type="submit" data-i18n="Close" class="close responsive ui-first-child ui-btn ui-btn-icon-left ui-icon-times">Close</button>\n
</form>\n
</div>\n
</div>\n
\n
<h1 class="ui-title" role="heading" data-i18n="Filter Editor" aria-level="1">Filter Editor</h1>\n
<div class="ui-controlgroup ui-controlgroup-horizontal ui-btn-right">\n
<div class="ui-controlgroup-controls">\n
<form class="submit">\n
<button data-rel="save" data-i18n="submit" type="submit" class="submit responsive ui-last-child ui-btn ui-btn-icon-left ui-icon-check">Submit</button>\n
</form>\n
</div>\n
</div>\n
</div>\n
\n
\n
<section class="ui-content-header-plain">\n
<h3 class="ui-content-title ui-body-c" data-i18n="Custom Filter">\n
<span class="ui-icon ui-icon-custom">&nbsp;</span>\n
Custom Filter\n
</h3>\n
</section>\n
<section class="ui-body-c ui-content-section">\n
<fieldset data-role="controlgroup" class="ui-controlgroup ui-corner-all">\n
\n
<div class="ui-radio">\n
<label class="ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-on" data-i18n="All criterions(AND)">All criterions(AND)</label>\n
<input type="radio" value="Off" name="heard_about" id="heard_about_a" class="and checkboxradio" data-cacheval="true" data-enhanced="true">\n
</div>\n
\n
<div class="ui-radio">\n
<label class="ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-off" data-i18n="At lease one(OR)">At lease one(OR)</label>\n
<input type="radio" value="Off" name="heard_about" id="heard_about_b" class="or checkboxradio" data-cacheval="false" data-enhanced="true">\n
</div>\n
\n
</fieldset>\n
\n
\n
<div class="filter_item_container">\n
</div>\n
<form class="plus">\n
<button type="submit" class="plus ui-btn-c ui-override-theme ui-btn ui-icon-plus ui-btn-icon-notext"></button>\n
</form>\n
</section>\n
\n
\n
\n
<section class="ui-content-header-plain">\n
<h3 class="ui-content-title ui-body-c" data-i18n="Predefined Filter">\n
<span class="ui-icon ui-icon-custom">&nbsp;</span>\n
Predefined Filter\n
</h3>\n
</section>\n
<section class="ui-body-c ui-content-section">\n
<div class="domain_tree_container">\n
</div>\n
</section>\n
</div>\n
</script>\n
\n
</head>\n
<body>\n
<div class="jqm-navmenu-panel"></div>\n
</body>\n
</html>
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Gadget Erp5 Filter Editor</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>001</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>processing_status_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="DateTime" module="DateTime.DateTime"/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>1439819451.71</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>edit</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>946.2931.62817.63914</string> </value>
</item>
<item>
<key> <string>state</string> </key>
<value> <string>current</string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="DateTime" module="DateTime.DateTime"/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>1443620387.19</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_processing_state</string> </key>
<value> <string>empty</string> </value>
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>0.0.0.0</string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="DateTime" module="DateTime.DateTime"/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>1439819302.25</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Script" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</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>
</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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>gadget_erp5_filter_editor.js</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>rjs_gadget_erp5_filtereditor_js</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Script</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string encoding="cdata"><![CDATA[
/*jslint nomen: true, indent: 2, maxerr: 3 */\n
/*global window, rJS, Handlebars, jQuery, RSVP, loopEventListener, document, QueryFactory,\n
SimpleQuery, ComplexQuery, Query*/\n
(function (window, rJS, Handlebars, $, RSVP, loopEventListener) {\n
"use strict";\n
/////////////////////////////////////////////////////////////////\n
// templates\n
/////////////////////////////////////////////////////////////////\n
// Precompile templates while loading the first gadget instance\n
var gadget_klass = rJS(window),\n
option_source = gadget_klass.__template_element\n
.getElementById("option-template")\n
.innerHTML,\n
option_template = Handlebars.compile(option_source),\n
\n
selected_option_source = gadget_klass.__template_element\n
.getElementById("selected-option-template")\n
.innerHTML,\n
selected_option_template = Handlebars.compile(selected_option_source),\n
\n
filter_source = gadget_klass.__template_element\n
.getElementById("filter-template")\n
.innerHTML,\n
filter_template = Handlebars.compile(filter_source);\n
\n
\n
\n
function submitFilterQuery(gadget) {\n
var i,\n
query = "",\n
value,\n
simple_operator = "",\n
key,\n
simple_query_list = [],\n
complex_query,\n
select,\n
domain_tree_query = "",\n
domain_tree_query_list = [],\n
options = gadget.props.options,\n
date_float_value = ["", ">", "<", "<=", ">="],\n
filterforms = gadget.props.element.querySelectorAll(".filterForm"),\n
and = gadget.props.element.querySelector(".and");\n
//when OR is selected, since OR with Related Query is not supported,\n
// see https://git.erp5.org/gitweb/erp5.git/blob/HEAD:/product/ZSQLCatalog/Query/ComplexQuery.py?js=1#l113\n
//convert OR to NOT with AND\n
//a + b = NOT ( NOT (a) AND NOT (b)) \n
//build simple&complex query\n
for (i = 0; i < filterforms.length; i += 1) {\n
value = filterforms[i][2].value;\n
if (value !== "") {\n
select = filterforms[i][1][filterforms[i][1].selectedIndex].value;\n
if (select === "keyword") {\n
value = "%" + value + "%";\n
} else if (date_float_value.indexOf(select) !== -1) {\n
simple_operator = select;\n
}\n
if (filterforms[i][0][filterforms[i][0].selectedIndex].value === "Searchable Text") {\n
key = "";\n
} else {\n
key = filterforms[i][0][filterforms[i][0].selectedIndex].value;\n
}\n
if (and.checked || filterforms.length === 1) {\n
simple_query_list.push(new SimpleQuery(\n
{\n
key: key,\n
operator: simple_operator,\n
type: "simple",\n
value: value\n
}\n
));\n
} else {\n
simple_query_list.push(new ComplexQuery(\n
{\n
operator: "NOT",\n
query_list: [new SimpleQuery(\n
{\n
key: key,\n
operator: simple_operator,\n
type: "simple",\n
value: value\n
}\n
)],\n
type: "complex"\n
}\n
));\n
}\n
}\n
}\n
\n
\n
\n
\n
if (gadget.props.tree_path[0] !== "--") {\n
for (i = 0; i < gadget.props.tree_path.length; i += 1) {\n
if (gadget.props.tree_path[i] !== "--") {\n
if (i === 0) {\n
domain_tree_query_list.push(new SimpleQuery(\n
{\n
key: "category.base_category_uid",\n
type: "simple",\n
value: gadget.props.tree_path[i]\n
}\n
));\n
} else {\n
domain_tree_query_list.push(new SimpleQuery(\n
{\n
key: "category.category_uid",\n
type: "simple",\n
value: gadget.props.tree_path[i]\n
}\n
));\n
}\n
}\n
}\n
}\n
\n
if (simple_query_list.length > 0) {\n
complex_query = new ComplexQuery({\n
operator: "AND",\n
query_list: simple_query_list,\n
type: "complex"\n
});\n
if (!and.checked && filterforms.length > 1) {\n
complex_query = new ComplexQuery({\n
operator: "NOT",\n
query_list: [complex_query],\n
type: "complex"\n
});\n
}\n
query = complex_query.toString();\n
}\n
\n
if (domain_tree_query_list.length > 0) {\n
domain_tree_query = new ComplexQuery({\n
operator: "AND",\n
query_list: domain_tree_query_list,\n
type: "complex"\n
});\n
domain_tree_query = Query.objectToSearchText(domain_tree_query);\n
}\n
\n
gadget.props.jelement.panel("toggle");\n
\n
return gadget.redirect({command: \'change\', options:{\n
"extended_search": query,\n
"domain_tree": domain_tree_query}});\n
\n
}\n
\n
\n
function createDomainTree(gadget, options_tree_map, selected_value) {\n
var select = document.createElement("select"),\n
div_container = document.createElement("div"),\n
domain_tree_map = gadget.props.domain_tree_map,\n
domain_tree_container = gadget.props.element.querySelector(".domain_tree_container"),\n
tmp = "",\n
key,\n
i;\n
if (selected_value === undefined) {\n
selected_value = "--";\n
}\n
if (options_tree_map) {\n
domain_tree_map = options_tree_map;\n
}\n
\n
function updateDomainTree(gadget, event) {\n
var domain_tree_list = domain_tree_container.querySelectorAll(\'.domain_tree\'),\n
update_domain_tree_map = gadget.props.domain_tree_map;\n
for (i = domain_tree_list.length - 1; i > 0; i -= 1) {\n
if (domain_tree_list[i] !== event.target.parentElement.parentElement.parentElement) {\n
gadget.props.tree_path.pop();\n
domain_tree_list[i].parentElement.removeChild(domain_tree_list[i]);\n
} else {\n
break;\n
}\n
}\n
gadget.props.tree_path[gadget.props.tree_path.length - 1] = event.target.value;\n
if (event.target.value !== \'--\') {\n
for (i = 0; i < gadget.props.tree_path.length; i += 1) {\n
update_domain_tree_map = update_domain_tree_map[gadget.props.tree_path[i]];\n
update_domain_tree_map = update_domain_tree_map.sub_categories;\n
}\n
if (Object.keys(update_domain_tree_map).length !== 0) {\n
createDomainTree(gadget, update_domain_tree_map);\n
}\n
}\n
}\n
\n
\n
tmp += option_template({\n
value: "--",\n
text: "--"\n
});\n
for (key in domain_tree_map) {\n
if (domain_tree_map.hasOwnProperty(key)) {\n
if (key === selected_value) {\n
tmp += selected_option_template({\n
value: key,\n
text: domain_tree_map[key].title\n
});\n
} else {\n
tmp += option_template({\n
value: key,\n
text: domain_tree_map[key].title\n
});\n
}\n
}\n
}\n
gadget.props.tree_path.push(selected_value);\n
select.setAttribute("class", "domain_tree_select");\n
select.innerHTML = tmp;\n
div_container.setAttribute("class", "domain_tree");\n
loopEventListener(\n
select,\n
"change",\n
false,\n
function (event) {\n
updateDomainTree(gadget, event);\n
}\n
);\n
div_container.appendChild(select);\n
domain_tree_container.appendChild(div_container);\n
$(select).selectmenu();\n
}\n
\n
\n
function createSelectOperator(type, operator) {\n
var html = "",\n
select_operator = document.createElement("select"),\n
select_options,\n
select_options_value,\n
options_map = {\n
"date_float": ["Equals To", "Greater Than", "Less Than", "Not Greater Than", "Not Less Than"],\n
"date_float_value": ["", ">", "<", "<=", ">="],\n
"searchable_text": ["Contain"],\n
"searchable_text_value": [""],\n
"other": ["Exact Match", "keyword"],\n
"other_value": ["", "keyword"]\n
},\n
j;\n
\n
if (type.indexOf(\'date\') !== -1 ||\n
type.indexOf(\'quantity\') !== -1 ||\n
type.indexOf(\'price\') !== -1) {\n
select_options = options_map.date_float;\n
select_options_value = options_map.date_float_value;\n
} else if (type === "Searchable Text") {\n
select_options = options_map.searchable_text;\n
select_options_value = options_map.searchable_text_value;\n
} else {\n
select_options = options_map.other;\n
select_options_value = options_map.other_value;\n
}\n
\n
for (j = 0; j < select_options.length; j += 1) {\n
if (operator === select_options_value[j]) {\n
html += selected_option_template({\n
value: select_options_value[j],\n
text: select_options[j]\n
});\n
} else {\n
html += option_template({\n
value: select_options_value[j],\n
text: select_options[j]\n
});\n
}\n
}\n
select_operator.innerHTML = html;\n
return select_operator;\n
}\n
\n
\n
function createFilterItem(gadget, simple_query) {\n
var div = document.createElement("div"),\n
container = document.createElement("form"),\n
minus_button = document.createElement("span"),\n
div_text = document.createElement("div"),\n
select_reference = document.createElement("select"),\n
i,\n
operator,\n
tmp = "",\n
default_select = "Searchable Text",\n
text = document.createElement("input");\n
\n
if (simple_query === undefined) {\n
simple_query = {};\n
}\n
\n
minus_button.setAttribute("class", "ui-icon ui-icon-delete ui-icon-shadow");\n
div_text.setAttribute("class", "ui-input-text ui-body-inherit ui-corner-all ui-shadow-inset");\n
\n
tmp = "";\n
tmp += option_template({\n
value: "Searchable Text",\n
text: "Searchable Text"\n
});\n
\n
for (i = 0; i < gadget.props.column_list.length; i += 1) {\n
if (simple_query.key === gadget.props.column_list[i][0]) {\n
default_select = gadget.props.column_list[i][0];\n
tmp += selected_option_template({\n
value: gadget.props.column_list[i][0],\n
text: gadget.props.column_list[i][1]\n
});\n
} else {\n
tmp += option_template({\n
value: gadget.props.column_list[i][0],\n
text: gadget.props.column_list[i][1]\n
});\n
}\n
}\n
select_reference.innerHTML = tmp;\n
if (simple_query.key && simple_query.key.indexOf(\'date\') !== -1) {\n
text.setAttribute("type", "date");\n
simple_query.value = simple_query.value ? simple_query.value.replace(/\\//g, "-") : "";\n
} else {\n
text.setAttribute("type", "text");\n
}\n
text.setAttribute("value", simple_query.value || "");\n
operator = createSelectOperator(default_select, simple_query.operator);\n
container.appendChild(select_reference);\n
container.appendChild(operator);\n
div_text.appendChild(text);\n
container.appendChild(div_text);\n
container.appendChild(minus_button);\n
container.setAttribute("class", "filterForm");\n
div.appendChild(container);\n
return div;\n
}\n
\n
\n
function createTranslatedItem(gadget, value) {\n
var container = gadget.props.element.querySelector(".filter_item_container"),\n
item = createFilterItem(gadget, value);\n
return new RSVP.Queue()\n
.push(function () {\n
return gadget.translateHtml(item.innerHTML);\n
})\n
.push(function (innerHTML) {\n
var select_list,\n
i;\n
item.innerHTML = innerHTML;\n
select_list = item.querySelectorAll("select");\n
for (i = 0; i < select_list.length; i += 1) {\n
$(select_list[i]).selectmenu();\n
}\n
container.insertBefore(item, container.lastChild);\n
\n
loopEventListener(\n
select_list[0],\n
"change",\n
false,\n
function (event) {\n
return new RSVP.Queue()\n
.push(function () {\n
var tmp = document.createElement("div");\n
tmp.appendChild(createSelectOperator(event.target.value));\n
if (event.target.value.indexOf(\'date\') !== -1) {\n
item.querySelector("input").setAttribute("type", "date");\n
} else {\n
item.querySelector("input").setAttribute("type", "text");\n
}\n
return gadget.translateHtml(tmp.innerHTML);\n
})\n
.push(function (innerHTML) {\n
select_list[1].innerHTML = innerHTML;\n
$(select_list[1]).selectmenu(\'refresh\');\n
});\n
}\n
);\n
loopEventListener(\n
item.querySelector(".filterForm"),\n
"submit",\n
false,\n
function () {\n
return submitFilterQuery(gadget);\n
}\n
);\n
\n
loopEventListener(\n
item.querySelector(".ui-icon-delete"),\n
"click",\n
false,\n
function () {\n
container.removeChild(item);\n
}\n
);\n
});\n
}\n
\n
gadget_klass\n
/////////////////////////////////////////////////////////////////\n
// ready\n
/////////////////////////////////////////////////////////////////\n
// Init local properties\n
.ready(function (g) {\n
g.props = {};\n
g.props.tree_path = [];\n
})\n
\n
//////////////////////////////////////////////\n
// acquired method\n
//////////////////////////////////////////////\n
.declareAcquiredMethod("translateHtml", "translateHtml")\n
.declareAcquiredMethod("redirect", "redirect")\n
.declareAcquiredMethod("jio_getAttachment", "jio_getAttachment")\n
// Assign the element to a variable\n
.ready(function (g) {\n
return g.getElement()\n
.push(function (element) {\n
g.props.element = element;\n
g.props.jelement = $(element.querySelector("div"));\n
});\n
})\n
\n
.ready(function (g) {\n
g.props.jelement.panel({\n
display: "overlay",\n
position: "right",\n
theme: "c"\n
});\n
})\n
\n
.ready(function (g) {\n
return new RSVP.Queue()\n
.push(function () {\n
var tmp = filter_template();\n
return g.translateHtml(tmp);\n
})\n
.push(function (translated_html) {\n
g.props.jelement.html(translated_html);\n
g.props.jelement.trigger("create");\n
});\n
})\n
\n
/////////////////////////////////////////////////////////////////\n
// declared methods\n
/////////////////////////////////////////////////////////////////\n
.declareMethod(\'toggle\', function () {\n
this.props.jelement.panel("toggle");\n
})\n
\n
.declareMethod(\'render\', function (options) {\n
var i,\n
gadget = this,\n
domain_tree,\n
and = gadget.props.element.querySelector(".and"),\n
or = gadget.props.element.querySelector(".or"),\n
query = "";\n
\n
\n
this.props.options = options;\n
gadget.props.tree_path = [];\n
query = options.form_definition.extended_search || "";\n
domain_tree = options.form_definition.domain_tree || "";\n
return new RSVP.Queue()\n
.push(function () {\n
return gadget.jio_getAttachment(options.jio_key, options.view);\n
})\n
.push(function (result) {\n
var query_list,\n
query_item_list,\n
queue = new RSVP.Queue(),\n
domain_tree_map = result._embedded._view.listbox.domain_tree_map,\n
domain_tree_query_list;\n
gadget.props.column_list = result._embedded._view.listbox.column_list;\n
gadget.props.domain_tree_map = result._embedded._view.listbox.domain_tree_map;\n
\n
if (domain_tree !== "") {\n
domain_tree_query_list = QueryFactory.create(domain_tree);\n
domain_tree_query_list = domain_tree_query_list.query_list || [domain_tree_query_list];\n
for (i = 0; i < domain_tree_query_list.length; i += 1) {\n
if (Object.keys(domain_tree_map).length !== 0) {\n
createDomainTree(gadget, domain_tree_map, domain_tree_query_list[i].value);\n
}\n
//if there has an error in uid\n
if (domain_tree_map[domain_tree_query_list[i].value] === undefined) {\n
domain_tree_map = {};\n
break;\n
}\n
domain_tree_map = domain_tree_map[domain_tree_query_list[i].value].sub_categories;\n
}\n
if (Object.keys(domain_tree_map).length !== 0) {\n
createDomainTree(gadget, domain_tree_map, "--");\n
}\n
} else {\n
createDomainTree(gadget);\n
}\n
\n
\n
\n
if (query !== "") {\n
query_list = QueryFactory.create(query);\n
if (query_list.operator === "OR" || query_list.operator === "NOT") {\n
or.checked = true;\n
or.parentElement.children[0].setAttribute("class", "ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-on");\n
} else {\n
and.checked = true;\n
and.parentElement.children[0].setAttribute("class", "ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-on");\n
}\n
//OR built by itself\n
if (or.checked && query_list.operator === "NOT") {\n
query_item_list = query_list.query_list[0].query_list || [];\n
} else {\n
query_item_list = query_list.query_list || [query_list];\n
}\n
for (i = 0; i < query_item_list.length; i += 1) {\n
if (or.checked && query_list.operator === "NOT") {\n
queue.push(createTranslatedItem(gadget, query_item_list[i].query_list[0]));\n
} else {\n
queue.push(createTranslatedItem(gadget, query_item_list[i]));\n
}\n
}\n
} else {\n
and.checked = true;\n
and.parentElement.children[0].setAttribute("class", "ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-on");\n
queue.push(createTranslatedItem(gadget));\n
}\n
return queue;\n
});\n
})\n
\n
/////////////////////////////////////////////////////////////////\n
// declared services\n
/////////////////////////////////////////////////////////////////\n
.declareService(function () {\n
var gadget = this;\n
function closeFilterEditor() {\n
gadget.props.jelement.panel("toggle");\n
}\n
\n
loopEventListener(\n
gadget.props.element.querySelector(".plus"),\n
"submit",\n
false,\n
function () {\n
return createTranslatedItem(gadget);\n
}\n
);\n
loopEventListener(\n
gadget.props.element.querySelector(".delete"),\n
"submit",\n
false,\n
closeFilterEditor\n
);\n
loopEventListener(\n
gadget.props.element.querySelector(".submit"),\n
"submit",\n
false,\n
function () {\n
return submitFilterQuery(gadget);\n
}\n
);\n
});\n
\n
}(window, rJS, Handlebars, jQuery, RSVP, loopEventListener));
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Gadget Erp5 Filter Editor JS</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>001</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>processing_status_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="DateTime" module="DateTime.DateTime"/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>1439819594.24</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>edit</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>946.46249.31868.4846</string> </value>
</item>
<item>
<key> <string>state</string> </key>
<value> <string>current</string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="DateTime" module="DateTime.DateTime"/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>1445963748.44</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_processing_state</string> </key>
<value> <string>empty</string> </value>
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>0.0.0.0</string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="DateTime" module="DateTime.DateTime"/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>1439819567.59</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
......@@ -211,10 +211,9 @@
form_gadget = this,\n
suboption_dict = {},\n
parent_element = document.createElement("div");\n
suboption_dict.jio_key = options.jio_key;\n
suboption_dict.view = options.view;\n
suboption_dict.begin_from = options.begin_from;\n
\n
delete options.erp5_document;\n
delete options.form_definition;\n
\n
// options = options.form_gadget || {};\n
form_gadget.state_parameter_dict = options.form_gadget || {};\n
......@@ -222,16 +221,6 @@
if (form_definition.extended_search) {\n
suboption_dict.extended_search = form_definition.extended_search;\n
}\n
if (form_definition.sort_list) {\n
suboption_dict.sort_list = form_definition.sort_list;\n
}\n
if (form_definition.hide_item) {\n
suboption_dict.hide_item = form_definition.hide_item;\n
}\n
\n
if (form_definition.domain_tree) {\n
suboption_dict.domain_tree = form_definition.domain_tree;\n
}\n
\n
form_gadget.props.gadget_list = [];\n
form_gadget.props.id = erp5_document._id;\n
......@@ -511,7 +500,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>xiaowu</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -525,7 +514,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>945.61367.58694.36949</string> </value>
<value> <string>944.22467.53128.26641</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -543,8 +532,8 @@
</tuple>
<state>
<tuple>
<float>1443103892.32</float>
<string>UTC</string>
<float>1436753892.36</float>
<string>GMT+2</string>
</tuple>
</state>
</object>
......
......@@ -158,7 +158,6 @@
data-gadget-scope="panel"\n
data-gadget-sandbox="public"></div>\n
\n
\n
<div role="main" class="ui-content gadget-content"></div>\n
</div>\n
\n
......@@ -290,7 +289,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>romain</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -304,7 +303,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>945.58421.9538.16332</string> </value>
<value> <string>945.54056.18010.56797</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -322,8 +321,8 @@
</tuple>
<state>
<tuple>
<float>1443017731.15</float>
<string>UTC</string>
<float>1442581000.11</float>
<string>GMT</string>
</tuple>
</state>
</object>
......
......@@ -495,6 +495,7 @@
.allowPublicAcquisition(\'triggerPanel\', function () {\n
return route(this, "panel", "toggle");\n
})\n
\n
.allowPublicAcquisition("jio_allDocs", function (param_list) {\n
return callJioGadget(this, "allDocs", param_list);\n
})\n
......@@ -774,7 +775,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>romain</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......
......@@ -120,26 +120,22 @@
\n
<!-- custom script -->\n
<script src="gadget_erp5_field_listbox.js" type="text/javascript"></script>\n
\n
\n
</head>\n
<body>\n
\n
<!-- XXX must set a theme here -->\n
<section class="document_table">\n
<div class="ui-table-header ui-header ui-bar-c ui-corner-all">\n
<div class="ui-controlgroup ui-controlgroup-horizontal ui-btn-left">\n
<div class="ui-controlgroup-controls">\n
<form class="hide_form">\n
<button data-rel="hide" type="submit" class="submit responsive ui-last-child ui-btn ui-icon-eye ui-btn-icon-left">Hide Rows</button>\n
</form>\n
<a data-i18n="hide" class="ui-responsive ui-btn ui-btn-icon-left ui-icon-eye ui-first-child ui-override-theme ui-disabled" href="#">Hide Rows</a>\n
</div>\n
</div>\n
<h1 data-i18n="selected" class="ui-title ui-override-theme">0 items selected</h1>\n
<div class="ui-controlgroup ui-controlgroup-horizontal ui-btn-right">\n
<div class="ui-controlgroup-controls">\n
<form class="sort_form">\n
<button data-rel="Sort" type="submit" class="submit responsive ui-last-child ui-btn ui-icon-sort-amount-desc ui-btn-icon-left">Sort</button>\n
</form>\n
<a data-i18n="sort" class="ui-responsive ui-btn ui-btn-icon-left ui-icon-sort-amount-desc ui-last-child ui-override-theme ui-disabled" href="#">Sort</a>\n
</div>\n
</div>\n
</div>\n
......@@ -273,7 +269,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>super_sven</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -287,7 +283,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>945.49220.61498.30600</string> </value>
<value> <string>939.51034.42464.64273</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -305,8 +301,8 @@
</tuple>
<state>
<tuple>
<float>1442307840.51</float>
<string>UTC</string>
<float>1419418783.77</float>
<string>GMT</string>
</tuple>
</state>
</object>
......
......@@ -108,11 +108,9 @@
<value> <string encoding="cdata"><![CDATA[
/*jslint indent: 2, maxerr: 3, nomen: true */\n
/*global window, document, rJS, URI, RSVP, UriTemplate, QueryFactory, loopEventListener, Query, SimpleQuery, ComplexQuery*/\n
/*global window, document, rJS, URI, RSVP, UriTemplate */\n
(function (window, document, rJS, URI, RSVP, UriTemplate) {\n
"use strict";\n
\n
\n
\n
rJS(window)\n
/////////////////////////////////////////////////////////////////\n
......@@ -133,7 +131,6 @@
g.props.element = element;\n
});\n
})\n
\n
\n
//////////////////////////////////////////////\n
// acquired method\n
......@@ -142,10 +139,7 @@
.declareAcquiredMethod("translateHtml", "translateHtml")\n
.declareAcquiredMethod("getUrlFor", "getUrlFor")\n
.declareAcquiredMethod("getUrlParameter", "getUrlParameter")\n
.declareAcquiredMethod("redirect", "redirect")\n
.declareAcquiredMethod("getFieldTypeGadgetUrl", "getFieldTypeGadgetUrl")\n
.declareAcquiredMethod("triggerSortEditor", "triggerSortEditor")\n
.declareAcquiredMethod("showQueryError", "showQueryError")\n
//////////////////////////////////////////////\n
// initialize the gadget content\n
//////////////////////////////////////////////\n
......@@ -156,24 +150,11 @@
tr = document.createElement("tr"),\n
document_table = gadget.props.element.querySelector(\'.document_table\'),\n
th,\n
tmp,\n
sort_list,\n
length_table = field_json.column_list.length,\n
j,\n
i;\n
\n
gadget.props.field_json = field_json;\n
gadget.props.extended_search = options.extended_search;\n
gadget.props.domain_tree = options.domain_tree;\n
gadget.props.jio_key = options.jio_key;\n
gadget.props.view = options.view;\n
gadget.props.hide_item = options.hide_item;\n
gadget.props.sort_list = [];\n
if (options.sort_list) {\n
sort_list = JSON.parse(options.sort_list);\n
gadget.props.sort_list = Object.keys(sort_list).map(function (key) {return sort_list[key]; });\n
}\n
\n
if (field_json.show_anchor) {\n
th = document.createElement("th");\n
th.textContent = "Jump";\n
......@@ -183,17 +164,6 @@
for (i = 0; i < length_table; i += 1) {\n
th = document.createElement("th");\n
th.textContent = field_json.column_list[i][1];\n
for (j = 0; j < gadget.props.sort_list.length; j += 1) {\n
tmp = gadget.props.sort_list[j].split(",");\n
if (tmp[0] === gadget.props.field_json.column_list[i][0]) {\n
if (tmp[1] === "ascending") {\n
th.setAttribute("class", "ui-icon-arrow-up");\n
} else {\n
th.setAttribute("class", "ui-icon-arrow-down");\n
}\n
break;\n
}\n
}\n
th.setAttribute("data-i18n", field_json.column_list[i][1]);\n
tr.appendChild(th);\n
}\n
......@@ -227,23 +197,13 @@
original_tfoot = props.element.querySelector(\'tfoot\'),\n
tbody = document.createElement("tbody"),\n
url_query = props.extended_search,\n
domain_tree = props.domain_tree,\n
domain_tree_query,\n
domain_tree_string,\n
domain_tree_query_list,\n
query_string = "",\n
lines = field_json.lines,\n
select_list = [],\n
dataset,\n
counter,\n
paging_info_counter,\n
hide_item = gadget.props.hide_item,\n
sort_list = gadget.props.sort_list || [],\n
i,\n
j,\n
list_method_promise = function () {\n
return gadget.jio_allDocs.apply(gadget, arguments);\n
};\n
i;\n
\n
if (field_json.query === undefined) {\n
original_tfoot.textContent = "Unsupported list method: \'" + field_json.list_method + "\'";\n
return;\n
......@@ -251,56 +211,22 @@
// function buildQueryString(previous, next) {\n
// return previous + next[0] + \':= "\' + url_query + \'" OR \';\n
// }\n
//rebuild query\n
\n
if (url_query) {\n
//query_string = field_json.column_list.reduce(buildQueryString, \' AND (\').replace(new RegExp("OR " + \'$\'), \')\');\n
if (field_json.list_method_template === undefined) {\n
query_string = \' AND \' + url_query;\n
} else {\n
query_string = url_query;\n
}\n
}\n
\n
if (domain_tree) {\n
domain_tree_query = QueryFactory.create(domain_tree);\n
if (domain_tree_query.query_list) {\n
domain_tree_query_list = [domain_tree_query.query_list[0], domain_tree_query.query_list[domain_tree_query.query_list.length - 1]];\n
domain_tree_query.query_list = domain_tree_query_list;\n
}\n
domain_tree_string = Query.objectToSearchText(domain_tree_query);\n
if (query_string !== "") {\n
query_string += \' AND \' + domain_tree_string;\n
} else if (field_json.list_method_template === undefined) {\n
query_string = \' AND \' + domain_tree_string;\n
} else {\n
query_string = domain_tree_string;\n
}\n
}\n
\n
\n
\n
if (hide_item) {\n
if (query_string !== "") {\n
query_string += \' AND \' + hide_item;\n
} else if (field_json.list_method_template === undefined) {\n
query_string = \' AND \' + hide_item;\n
} else {\n
query_string = hide_item;\n
}\n
query_string = \' AND \' + url_query;\n
}\n
\n
for (i = 0; i < field_json.column_list.length; i += 1) {\n
select_list.push(field_json.column_list[i][0]);\n
}\n
\n
select_list.push("uid");\n
return gadget.jio_allDocs({\n
// XXX Not jIO compatible, but until a better api is found...\n
"list_method_template": field_json.list_method_template,\n
"query": new URI(field_json.query).query(true).query + query_string,\n
"limit": [begin_from, lines + 1],\n
"select_list": select_list,\n
"sort_on": sort_list\n
"select_list": select_list\n
}).push(function (result) {\n
var promise_list = [result];\n
counter = Math.min(result.data.total_rows, lines);\n
......@@ -320,7 +246,8 @@
return RSVP.all(promise_list);\n
\n
}).push(function (result_list) {\n
var tr,\n
var j,\n
tr,\n
th,\n
a,\n
result = result_list[0],\n
......@@ -348,7 +275,6 @@
dataset = result;\n
for (i = 0; i < counter; i += 1) {\n
tr = document.createElement("tr");\n
tr.setAttribute("value", result.data.rows[i].value.uid);\n
tmp_url = result_list[i + 1];\n
\n
if (field_json.show_anchor) {\n
......@@ -418,7 +344,6 @@
prev_param[gadget.props.field_json.key + \'_begin_from\'] = begin_from - lines;\n
setNext();\n
}\n
\n
return RSVP.all([\n
gadget.getUrlFor({command: \'change\', options: prev_param}),\n
gadget.getUrlFor({command: \'change\', options: next_param})\n
......@@ -440,7 +365,6 @@
len;\n
\n
th.setAttribute("colspan", field_json.column_list.length);\n
th.setAttribute("class", "foot_colspan");\n
// NOTE: Romain: paging menu with 3+ buttons should have another class name (like ui-paging-grid)\n
paging_menu.className = "ui-controlgroup ui-controlgroup-horizontal ui-corner-all ui-paging-menu";\n
paging_wrap.className = "ui-controlgroup-controls";\n
......@@ -449,18 +373,18 @@
paging_prev.textContent = "Previous";\n
paging_prev.setAttribute("data-i18n", "Previous");\n
paging_prev.href = url_list[0];\n
paging_info.className = "paging_info ui-btn ui-disabled";\n
paging_info.className = "ui-btn ui-disabled";\n
if ((begin_from === 0) && (counter === 0)) {\n
paging_info.textContent = "No records";\n
paging_info.setAttribute("data-i18n", "No Records");\n
} else if ((dataset.data.rows.length <= lines) && (begin_from === 0)) {\n
paging_info.setAttribute("data-i18n", "[last]Record(s)");\n
paging_info_counter = "1 -" + counter;\n
paging_info.appendChild(document.createTextNode("Record(s) "));\n
paging_info.appendChild(document.createTextNode(counter));\n
paging_info.appendChild(document.createTextNode("Record(s)"));\n
} else {\n
paging_info.setAttribute("data-i18n", "[node]Record(s)");\n
paging_info.appendChild(document.createTextNode("Records "));\n
paging_info_counter = (((begin_from + lines) / lines - 1) * lines + 1) + " - " + (((begin_from + lines) / lines - 1) * lines + counter);\n
paging_info.appendChild(document.createTextNode((((begin_from + lines) / lines - 1) * lines + 1) + " - " + (((begin_from + lines) / lines - 1) * lines + counter)));\n
}\n
// paging_info.textContent = "Page " + ((begin_from + lines) / lines);\n
paging_next.className = "ui-btn ui-icon-carat-r ui-btn-icon-right responsive ui-last-child";\n
......@@ -485,140 +409,23 @@
fragment.appendChild(tbody);\n
fragment.appendChild(tfoot);\n
\n
for (len = table.children.length; len > 1; len -= 1) {\n
for (len = table.children.length; len > 0; len -= 1) {\n
table.removeChild(table.lastChild);\n
}\n
// NOTE: for passing translations, temp must contain a table\n
temp_table.appendChild(fragment);\n
temp.appendChild(temp_table);\n
table.appendChild(temp.querySelector("tbody"));\n
temp.appendChild(document.createElement("tbody"));\n
return gadget.translateHtml(temp.innerHTML);\n
return gadget.translateHtml(temp.querySelector("tfoot").innerHTML);\n
})\n
.push(function (my_translated_html) {\n
var temp = document.createElement("table");\n
var temp = document.createElement("tfoot");\n
temp.innerHTML = my_translated_html;\n
temp.querySelector(".paging_info").appendChild(document.createTextNode(paging_info_counter));\n
table.appendChild(temp.querySelector("tfoot"));\n
})\n
.fail(function (error) {\n
if (error.target && error.target.status === 500) {\n
return gadget.showQueryError(" Unsupported Query");\n
}\n
throw error;\n
table.appendChild(temp);\n
});\n
})\n
.declareService(function () {\n
var gadget = this,\n
sort_form = gadget.props.element.querySelector(".sort_form");\n
loopEventListener(\n
sort_form,\n
"submit",\n
false,\n
function () {\n
gadget.triggerSortEditor();\n
}\n
);\n
})\n
.declareService(function () {\n
var gadget = this,\n
selected_uid_query,\n
hide_form = gadget.props.element.querySelector(".hide_form");\n
/* hide form */\n
loopEventListener(\n
hide_form,\n
"submit",\n
false,\n
function () {\n
var tr_list = gadget.props.element.querySelector("tbody").querySelectorAll("tr"),\n
thead_tr = gadget.props.element.querySelector("thead").querySelector("tr"),\n
i,\n
th,\n
hide_form_elements,\n
all_hide_form_elements,\n
hide_submit_form = document.createElement("form"),\n
hide_show_all = document.createElement("button"),\n
query_list = [],\n
translate_div,\n
colspan = gadget.props.element.querySelector(".foot_colspan"),\n
checkbox;\n
all_hide_form_elements = gadget.props.element.querySelectorAll(".hide_form_element");\n
hide_form_elements = gadget.props.element.querySelectorAll(".hide_form_element:checked");\n
\n
if (all_hide_form_elements.length > 0) {\n
//if nothing is selected, show all\n
if (hide_form_elements.length === 0) {\n
colspan.setAttribute("colspan", parseInt(colspan.getAttribute("colspan"), 10) - 1);\n
return gadget.redirect({command: \'change\', options: {\n
"domain_tree": gadget.props.domain_tree || ""}});\n
}\n
\n
//all selected\n
//no need to submit\n
if (hide_form_elements.length + 1 === all_hide_form_elements.length) {\n
colspan.setAttribute("colspan", parseInt(colspan.getAttribute("colspan"), 10) - 1);\n
for (i = 0; i < all_hide_form_elements.length; i += 1) {\n
all_hide_form_elements[i].parentElement.removeChild(all_hide_form_elements[i]);\n
}\n
return;\n
}\n
\n
//a part is selected\n
for (i = 0; i < hide_form_elements.length; i += 1) {\n
query_list.push(new SimpleQuery({\n
key: "catalog.uid",\n
type: "simple",\n
value: hide_form_elements[i].parentElement.getAttribute("value")\n
}));\n
}\n
\n
selected_uid_query = new ComplexQuery({\n
operator: "OR",\n
query_list: query_list,\n
type: "complex"\n
});\n
\n
return gadget.redirect({command: \'change\', options: {\n
"hide_item": Query.objectToSearchText(selected_uid_query)}});\n
}\n
\n
hide_show_all.setAttribute("type", "submit");\n
hide_show_all.setAttribute("data-i18n", "Show All");\n
hide_show_all.className = "ui-btn responsive ui-last-child";\n
translate_div = document.createElement("div");\n
translate_div.appendChild(hide_show_all);\n
return new RSVP.Queue()\n
.push(function () {\n
return gadget.translateHtml(translate_div.innerHTML);\n
})\n
.push(function (innerHTML) {\n
translate_div.innerHTML = innerHTML;\n
hide_submit_form.innerHTML = innerHTML;\n
th = document.createElement("th");\n
colspan.setAttribute("colspan", parseInt(colspan.getAttribute("colspan"), 10) + 1);\n
th.setAttribute("class", "hide_form_element");\n
th.appendChild(hide_submit_form);\n
loopEventListener(\n
hide_submit_form,\n
"submit",\n
false,\n
function () {\n
return gadget.redirect({command: \'change\', options: {\n
"hide_item": ""}});\n
}\n
);\n
thead_tr.insertBefore(th, thead_tr.firstChild);\n
for (i = 0; i < tr_list.length; i += 1) {\n
checkbox = document.createElement("input");\n
checkbox.setAttribute("type", "checkbox");\n
checkbox.setAttribute("checked", true);\n
checkbox.setAttribute("class", "hide_form_element");\n
tr_list[i].insertBefore(checkbox, tr_list[i].firstChild);\n
}\n
});\n
}\n
);\n
})\n
.declareMethod("getContent", function () {\n
var form_gadget = this,\n
k,\n
......@@ -797,7 +604,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>946.46337.55165.55125</string> </value>
<value> <string>946.44927.40202.16725</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -815,7 +622,7 @@
</tuple>
<state>
<tuple>
<float>1445963866.42</float>
<float>1445939419.71</float>
<string>UTC</string>
</tuple>
</state>
......
......@@ -135,14 +135,6 @@
<div data-gadget-url="gadget_erp5_form.html"\n
data-gadget-scope="erp5_form"\n
data-gadget-sandbox="public"></div>\n
\n
<div data-gadget-url="gadget_erp5_filter_editor.html"\n
data-gadget-scope="filterEditor"\n
data-gadget-sandbox="public"></div>\n
\n
<div data-gadget-url="gadget_erp5_sort_editor.html"\n
data-gadget-scope="sortEditor"\n
data-gadget-sandbox="public"></div>\n
\n
</form>\n
\n
......@@ -270,7 +262,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>romain</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -284,7 +276,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>940.17393.53012.39048</string> </value>
<value> <string>945.61017.50891.24046</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -302,8 +294,8 @@
</tuple>
<state>
<tuple>
<float>1443017742.14</float>
<string>UTC</string>
<float>1442998685.54</float>
<string>GMT</string>
</tuple>
</state>
</object>
......
......@@ -132,38 +132,6 @@
/////////////////////////////////////////////////////////////////\n
// declared methods\n
/////////////////////////////////////////////////////////////////\n
.allowPublicAcquisition("triggerFilterEditor", function () {\n
var gadget = this;\n
return new RSVP.Queue()\n
.push(function () {\n
return gadget.getDeclaredGadget("filterEditor");\n
})\n
.push(function (filterEditor) {\n
return filterEditor.toggle();\n
});\n
})\n
.allowPublicAcquisition("triggerSortEditor", function () {\n
var gadget = this;\n
return new RSVP.Queue()\n
.push(function () {\n
return gadget.getDeclaredGadget("sortEditor");\n
})\n
.push(function (sortEditor) {\n
return sortEditor.toggle();\n
});\n
})\n
.allowPublicAcquisition("showQueryError", function (param) {\n
var gadget = this;\n
return new RSVP.Queue()\n
.push(function () {\n
return gadget.getDeclaredGadget("erp5_searchfield");\n
})\n
.push(function (searchField) {\n
return searchField.showQueryError(param);\n
});\n
})\n
\n
\n
.declareMethod(\'render\', function (options) {\n
var gadget = this,\n
form_options = options.erp5_form || {},\n
......@@ -171,27 +139,7 @@
\n
form_options.erp5_document = options.erp5_document;\n
form_options.form_definition = options.form_definition;\n
search_options.jio_key = options.jio_key;\n
// XXX not generic, fix later\n
if (options.extended_search) {\n
form_options.form_definition.extended_search = options.extended_search;\n
search_options.extended_search = options.extended_search;\n
}\n
if (options.sort_list) {\n
form_options.form_definition.sort_list = options.sort_list;\n
}\n
if (options.hide_item) {\n
form_options.form_definition.hide_item = options.hide_item;\n
search_options.hide_item = options.hide_item;\n
}\n
\n
if (options.domain_tree) {\n
form_options.form_definition.domain_tree = options.domain_tree;\n
search_options.domain_tree = options.domain_tree;\n
}\n
form_options.begin_from = options.begin_from;\n
form_options.view = options.view;\n
form_options.jio_key = options.jio_key;\n
\n
return new RSVP.Queue()\n
.push(function () {\n
......@@ -215,17 +163,13 @@
gadget.getDeclaredGadget("erp5_form"),\n
gadget.getUrlFor({command: \'change\', options: {page: "breadcrumb"}}),\n
new_content_action,\n
gadget.getUrlFor({command: \'change\', options: {page: "action"}}),\n
gadget.getDeclaredGadget("filterEditor"),\n
gadget.getDeclaredGadget("sortEditor")\n
gadget.getUrlFor({command: \'change\', options: {page: "action"}})\n
]);\n
})\n
.push(function (all_gadget) {\n
return RSVP.all([\n
all_gadget[0].render(search_options),\n
all_gadget[1].render(form_options),\n
all_gadget[5].render(form_options),\n
all_gadget[6].render(form_options),\n
gadget.updateHeader({\n
panel_action: true,\n
jump_url: "",\n
......@@ -398,7 +342,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>946.46100.61365.28740</string> </value>
<value> <string>946.44927.40202.16725</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -416,7 +360,7 @@
</tuple>
<state>
<tuple>
<float>1445950207.32</float>
<float>1445939450.54</float>
<string>UTC</string>
</tuple>
</state>
......
......@@ -171,12 +171,7 @@
});\n
})\n
.push(function (result) {\n
var sub_options = {};\n
sub_options.extended_search = options.extended_search;\n
sub_options.sort_list = options.sort_list;\n
sub_options.hide_item = options.hide_item;\n
sub_options.domain_tree = options.domain_tree;\n
sub_options.begin_from = options.begin_from;\n
var sub_options = options.fg || {};\n
sub_options.erp5_document = erp5_document;\n
sub_options.form_definition = erp5_form;\n
sub_options.view = options.view;\n
......@@ -322,7 +317,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>romain</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -336,7 +331,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>945.61210.379.61422</string> </value>
<value> <string>946.30055.63361.39150</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -354,8 +349,8 @@
</tuple>
<state>
<tuple>
<float>1443103808.81</float>
<string>UTC</string>
<float>1445267203.04</float>
<string>GMT</string>
</tuple>
</state>
</object>
......
......@@ -120,36 +120,24 @@
<!-- custom script -->\n
<script src="gadget_erp5_searchfield.js"></script>\n
\n
<script id="panel-template" type="text/x-handlebars-template">\n
<div class="field_container">\n
<div class="ui-field-contain">\n
<div class="bottom">\n
<div class="ui-input-text ui-body-{{theme}} ui-input-has-icon ui-corner-all ui-shadow-inset ui-input-has-clear">\n
<form class="save_form">\n
<input type="text" data-enhanced="true" value="{{widget_value}}" name="search" {{widget_status_attribute}} >\n
<div class="ui-btn ui-input-clear ui-input-btn ui-corner-all ui-icon-search ui-btn-icon-notext" data-i18n="[node]{{search_i18n}}">\n
{{search_i18n}}<input tabindex="-1" data-role="button" data-enhanced="true" type="submit" data-i18n="[value]{{search_i18n}}" value=" "/>\n
</div>\n
</form>\n
<!-- XXX widget-status is bad! -->\n
<script id="panel-template" type="text/x-handlebars-template">\n
<div class="center">\n
<div class="ui-field-contain">\n
<div class="ui-input-text ui-body-{{widget_theme}} ui-corner-all ui-shadow-inset ui-input-has-clear {{widget_status_class}}">\n
<input type="text" data-enhanced="true" value="{{widget_value}}" name="search" {{widget_status_attribute}} />\n
<div class="ui-btn ui-input-clear ui-input-btn ui-corner-all ui-icon-search ui-btn-icon-notext" data-i18n="[node]header-submit">\n
Submit<input data-enhanced="true" type="submit" data-i18n="[value]header-submit" value="Submit" {{widget_status_attribute}} />\n
</div>\n
<div class="ui-shadow-inset ui-btn ui-btn-inline ui-corner-all ui-btn-{{theme}} ui-btn-icon-notext ui-icon-filter ui-override-theme " >\n
<form class="filter_form">\n
<div class="ui-input-btn">\n
<input data-role="button" data-enhanced="true" type="submit" data-i18n="[value]" value=" ">\n
</div>\n
</form>\n
</div>\n
</div>\n
<a href="#" data-i18n="filter" class="ui-btn ui-btn-{{widget_theme}} ui-btn-icon-notext ui-icon-filter ui-override-theme ui-disabled">Filters</a>\n
</div>\n
</div>\n
</div>\n
</script>\n
\n
\n
\n
\n
\n
</head>\n
<body>\n
<div class="save_form document_form"></div>\n
</body>\n
</html>
......@@ -274,7 +262,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>romain</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -288,7 +276,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>946.47294.45750.61781</string> </value>
<value> <string>945.50880.23560.7150</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -306,8 +294,8 @@
</tuple>
<state>
<tuple>
<float>1446021106.86</float>
<string>UTC</string>
<float>1442998364.27</float>
<string>GMT</string>
</tuple>
</state>
</object>
......
......@@ -99,9 +99,7 @@
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string encoding="cdata"><![CDATA[
/*global window, rJS, RSVP, loopEventListener, Handlebars, QueryFactory, SimpleQuery, ComplexQuery, Query, document */\n
<value> <string>/*global window, rJS, RSVP, loopEventListener, Handlebars */\n
/*jslint nomen: true, indent: 2, maxerr: 3 */\n
(function (window, rJS, RSVP, loopEventListener, Handlebars) {\n
"use strict";\n
......@@ -137,153 +135,47 @@
// acquired method\n
//////////////////////////////////////////////\n
.declareAcquiredMethod("translateHtml", "translateHtml")\n
.declareAcquiredMethod("redirect", "redirect")\n
.declareAcquiredMethod("triggerFilterEditor", "triggerFilterEditor")\n
\n
/////////////////////////////////////////////////////////////////\n
// declared methods\n
/////////////////////////////////////////////////////////////////\n
.declareMethod(\'render\', function (option_dict) {\n
var append_attribute,\n
var append_class,\n
append_attribute,\n
placeholder = "",\n
value,\n
is_disabled = option_dict.disabled,\n
search_gadget = this;\n
search_gadget.props.jio_key = option_dict.jio_key;\n
\n
if (is_disabled) {\n
append_class = " ui-disabled";\n
append_attribute = \' disabled="disabled\';\n
}\n
value = option_dict.extended_search || "";\n
if (option_dict.domain_tree) {\n
value = (value === "" ? option_dict.domain_tree : value + " AND " + option_dict.domain_tree);\n
}\n
\n
if (option_dict.hide_item) {\n
value = (value === "" ? option_dict.hide_item : value + " AND " + option_dict.hide_item);\n
}\n
return new RSVP.Queue()\n
.push(function () {\n
return search_gadget.translateHtml(panel_template({\n
widget_value: value,\n
widget_value: option_dict.extended_search || placeholder,\n
widget_theme: option_dict.theme || "c",\n
widget_status_attribute: append_attribute || placeholder\n
widget_status_attribute: append_attribute || placeholder,\n
widget_status_class: append_class || placeholder\n
}));\n
})\n
.push(function (my_translated_html) {\n
var container = document.createElement("div");\n
container.setAttribute("class", "container");\n
container.innerHTML = my_translated_html;\n
search_gadget.props.element.appendChild(container);\n
search_gadget.props.element.querySelector("div").innerHTML =\n
my_translated_html;\n
return search_gadget;\n
});\n
})\n
.declareMethod("showQueryError", function (param) {\n
var input = this.props.element.querySelector(\'input[name="search"]\');\n
input.value += param;\n
})\n
\n
.declareMethod(\'getContent\', function () {\n
var input = this.props.element.querySelector(\'input\'),\n
result = {};\n
\n
result[input.getAttribute(\'name\')] = input.value;\n
return result;\n
})\n
\n
.declareService(function () {\n
var gadget = this,\n
i,\n
query_list,\n
domain_tree_list,\n
domain_tree_query,\n
tmp,\n
hide_query,\n
search_query;\n
\n
function filterSubmit() {\n
return gadget.triggerFilterEditor();\n
}\n
\n
function formSubmit() {\n
return new RSVP.Queue()\n
.push(function () {\n
return gadget.getContent();\n
})\n
.push(function (data) {\n
if (data.search) {\n
query_list = [];\n
domain_tree_list = [];\n
search_query = QueryFactory.create(data.search);\n
if (search_query instanceof SimpleQuery) {\n
tmp = [search_query];\n
} else {\n
tmp = search_query.query_list;\n
}\n
for (i = 0; i < tmp.length; i += 1) {\n
if (tmp[i] instanceof SimpleQuery) {\n
if (tmp[i].key !== "catalog.uid" && tmp[i].key.indexOf("category") === -1) {\n
query_list.push(tmp[i]);\n
} else if (tmp[i].key.indexOf("category") !== -1) {\n
domain_tree_list.push(tmp[i]);\n
} else {\n
hide_query = new ComplexQuery({\n
operator: "AND",\n
query_list: [tmp[i]],\n
type: "complex"\n
});\n
}\n
} else {\n
//only have one complex query\n
hide_query = search_query.query_list[i];\n
}\n
}\n
\n
if (domain_tree_list.length) {\n
domain_tree_query = new ComplexQuery({\n
operator: "AND",\n
query_list: domain_tree_list,\n
type: "complex"\n
});\n
}\n
return gadget.redirect({\n
command: \'change\',\n
options: {\n
"extended_search": Query.objectToSearchText(new ComplexQuery({\n
operator: search_query.operator || "AND",\n
query_list: query_list,\n
type: "complex"\n
})),\n
"domain_tree": domain_tree_query ? Query.objectToSearchText(domain_tree_query) : "",\n
"hide_item": hide_query ? Query.objectToSearchText(hide_query) : ""\n
}\n
});\n
}\n
return gadget.redirect({\n
command: \'change\',\n
options: {\n
"extended_search": "",\n
"domain_tree": "",\n
"hide_item": ""\n
}\n
});\n
});\n
}\n
// Listen to form submit\n
loopEventListener(\n
gadget.props.element.querySelector(\'.save_form\'),\n
\'submit\',\n
false,\n
formSubmit\n
);\n
\n
loopEventListener(\n
gadget.props.element.querySelector(\'.filter_form\'),\n
\'submit\',\n
false,\n
filterSubmit\n
);\n
});\n
\n
}(window, rJS, RSVP, loopEventListener, Handlebars));
]]></string> </value>
}(window, rJS, RSVP, loopEventListener, Handlebars));</string> </value>
</item>
<item>
<key> <string>title</string> </key>
......@@ -404,7 +296,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>romain</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -418,7 +310,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>946.47311.65417.26606</string> </value>
<value> <string>945.61050.10650.48093</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -436,8 +328,8 @@
</tuple>
<state>
<tuple>
<float>1446022123.95</float>
<string>UTC</string>
<float>1445265843.55</float>
<string>GMT</string>
</tuple>
</state>
</object>
......
<?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>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</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>
</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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</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>gadget_erp5_sort_editor.html</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>rjs_gadget_erp5_sorteditor_html</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </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>text_content</string> </key>
<value> <string encoding="cdata"><![CDATA[
<!DOCTYPE html>\n
<html>\n
<head>\n
<meta charset="utf-8" />\n
<meta name="viewport" content="width=device-width, user-scalable=no" />\n
<title>ERP5 Sort Editor</title>\n
\n
<!-- renderjs -->\n
<script src="rsvp.js"></script>\n
<script src="renderjs.js"></script>\n
<script src="handlebars.js"></script>\n
\n
<!-- custom script -->\n
<script src="gadget_erp5_sort_editor.js"></script>\n
\n
\n
\n
<script id="option-template" type="text/x-handlebars-template">\n
<option value="{{value}}" data-i18n="{{text}}">{{text}}</option>\n
</script>\n
\n
<script id="selected-option-template" type="text/x-handlebars-template">\n
<option selected="selected" data-i18n="{{text}}" value="{{value}}">{{text}}</option>\n
</script>\n
\n
<script id="sort-template" type="text/x-handlebars-template">\n
<div class="ui-panel-inner">\n
<div data-role="header" role="banner" class="ui-header ui-bar-inherit">\n
<div class="ui-controlgroup ui-controlgroup-horizontal ui-btn-left">\n
<div class="ui-controlgroup-controls">\n
<form class="delete">\n
<button data-i18n="Close" data-rel="close" type="submit" class="close responsive ui-first-child ui-btn ui-btn-icon-left ui-icon-times">Close</button>\n
</form>\n
</div>\n
</div>\n
\n
<h1 class="ui-title" role="heading" data-i18n="Sort Editor" aria-level="1">Sort Editor</h1>\n
<div class="ui-controlgroup ui-controlgroup-horizontal ui-btn-right">\n
<div class="ui-controlgroup-controls">\n
<form class="submit">\n
<button data-rel="save" data-i18n="Submit" type="submit" class="submit responsive ui-last-child ui-btn ui-btn-icon-left ui-icon-check">Submit</button>\n
</form>\n
</div>\n
</div>\n
</div>\n
<section class="ui-body-c ui-content-section">\n
<div class="sort_item_container">\n
</div>\n
<form class="plus">\n
<button type="submit" class="plus ui-btn-c ui-override-theme ui-btn ui-icon-plus ui-btn-icon-notext"></button>\n
</form>\n
</section>\n
</script>\n
</head>\n
<body>\n
<div class="jqm-navmenu-panel"></div>\n
</body>\n
</html>
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Gadget Erp5 Sort Editor</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>001</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>processing_status_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>test</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="DateTime" module="DateTime.DateTime"/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>1442288947.85</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>edit</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>946.5841.39273.59596</string> </value>
</item>
<item>
<key> <string>state</string> </key>
<value> <string>current</string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="DateTime" module="DateTime.DateTime"/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>1444813823.63</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>test</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_processing_state</string> </key>
<value> <string>empty</string> </value>
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>0.0.0.0</string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="DateTime" module="DateTime.DateTime"/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>1442288588.68</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Web Script" module="erp5.portal_type"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Access_contents_information_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</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>
</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>
</tuple>
</value>
</item>
<item>
<key> <string>_View_Permission</string> </key>
<value>
<tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>gadget_erp5_sort_editor.js</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>rjs_gadget_erp5_sorteditor_js</string> </value>
</item>
<item>
<key> <string>language</string> </key>
<value> <string>en</string> </value>
</item>
<item>
<key> <string>portal_type</string> </key>
<value> <string>Web Script</string> </value>
</item>
<item>
<key> <string>short_title</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>text_content</string> </key>
<value> <string encoding="cdata"><![CDATA[
/*jslint indent: 2, maxerr: 3, nomen: true */\n
/*global window, document, rJS, URI, RSVP, UriTemplate, Handlebars, $, loopEventListener*/\n
(function (window, document, rJS, RSVP) {\n
"use strict";\n
var gadget_klass = rJS(window),\n
option_source = gadget_klass.__template_element\n
.getElementById("option-template")\n
.innerHTML,\n
option_template = Handlebars.compile(option_source),\n
selected_option_source = gadget_klass.__template_element\n
.getElementById("selected-option-template")\n
.innerHTML,\n
selected_option_template = Handlebars.compile(selected_option_source),\n
sort_source = gadget_klass.__template_element\n
.getElementById("sort-template")\n
.innerHTML,\n
sort_template = Handlebars.compile(sort_source);\n
\n
\n
function createSortItem(gadget, sort_value) {\n
var div = document.createElement("div"),\n
container = document.createElement("form"),\n
minus_button = document.createElement("span"),\n
column_list = gadget.props.column_list,\n
select_reference = document.createElement("select"),\n
select_operator = document.createElement("select"),\n
sort_value_list = [],\n
i,\n
tmp = "";\n
if (sort_value) {\n
sort_value_list = sort_value.split(",");\n
}\n
minus_button.setAttribute("class", "ui-icon ui-icon-delete ui-icon-shadow");\n
container.appendChild(select_reference);\n
container.appendChild(select_operator);\n
container.appendChild(minus_button);\n
container.setAttribute("class", "sortForm");\n
div.appendChild(container);\n
for (i = 0; i < column_list.length; i += 1) {\n
if (column_list[i][0] === sort_value_list[0]) {\n
tmp += selected_option_template({\n
value: column_list[i][0],\n
text: column_list[i][1]\n
});\n
} else {\n
tmp += option_template({\n
value: column_list[i][0],\n
text: column_list[i][1]\n
});\n
}\n
}\n
select_reference.innerHTML = tmp;\n
tmp = "";\n
if (sort_value_list[1] === "ascending") {\n
tmp += selected_option_template({\n
value: "ascending",\n
text: "ascending"\n
});\n
} else {\n
tmp += option_template({\n
value: "ascending",\n
text: "ascending"\n
});\n
}\n
\n
if (sort_value_list[1] === "descending") {\n
tmp += selected_option_template({\n
value: "descending",\n
text: "descending"\n
});\n
} else {\n
tmp += option_template({\n
value: "descending",\n
text: "descending"\n
});\n
}\n
\n
select_operator.innerHTML = tmp;\n
\n
return div;\n
}\n
\n
function createTranslatedItem(gadget, key) {\n
var container = gadget.props.element.querySelector(".sort_item_container"),\n
sort_item = createSortItem(gadget, key);\n
return new RSVP.Queue()\n
.push(function () {\n
return gadget.translateHtml(sort_item.innerHTML);\n
})\n
.push(function (innerHTML) {\n
var select_list,\n
i;\n
sort_item.innerHTML = innerHTML;\n
select_list = sort_item.querySelectorAll("select");\n
for (i = 0; i < select_list.length; i += 1) {\n
$(select_list[i]).selectmenu();\n
}\n
container.insertBefore(sort_item, container.lastChild);\n
loopEventListener(\n
sort_item.querySelector(".ui-icon-delete"),\n
"click",\n
false,\n
function () {\n
container.removeChild(sort_item);\n
}\n
);\n
});\n
}\n
\n
\n
\n
rJS(window)\n
/////////////////////////////////////////////////////////////////\n
// ready\n
/////////////////////////////////////////////////////////////////\n
// Init local properties\n
.ready(function (g) {\n
g.props = {};\n
})\n
.ready(function (g) {\n
return g.getElement()\n
.push(function (element) {\n
g.props.element = element;\n
g.props.jelement = $(element.querySelector(".jqm-navmenu-panel"));\n
});\n
})\n
.ready(function (g) {\n
g.props.jelement.panel({\n
display: "overlay",\n
position: "right",\n
theme: "c"\n
});\n
})\n
.ready(function (g) {\n
return new RSVP.Queue()\n
.push(function () {\n
var tmp = sort_template();\n
return g.translateHtml(tmp);\n
})\n
.push(function (translated_html) {\n
g.props.jelement.html(translated_html);\n
g.props.jelement.trigger("create");\n
});\n
})\n
\n
\n
//////////////////////////////////////////////\n
// acquired method\n
//////////////////////////////////////////////\n
.declareAcquiredMethod("jio_getAttachment", "jio_getAttachment")\n
.declareAcquiredMethod("translateHtml", "translateHtml")\n
.declareAcquiredMethod("redirect", "redirect")\n
.declareMethod(\'toggle\', function () {\n
this.props.jelement.panel("toggle");\n
})\n
//////////////////////////////////////////////\n
// initialize the gadget content\n
//////////////////////////////////////////////\n
.declareMethod(\'render\', function (options) {\n
var gadget = this,\n
i,\n
sort_form_list;\n
sort_form_list = gadget.props.element.querySelectorAll(".sortForm");\n
for (i = 0; i < sort_form_list.length; i += 1) {\n
sort_form_list[i].parentElement.removeChild(sort_form_list[i]);\n
}\n
gadget.props.options = options;\n
\n
gadget.props.column_list = "";\n
return new RSVP.Queue()\n
.push(function () {\n
return gadget.jio_getAttachment(options.jio_key, options.view);\n
})\n
.push(function (result) {\n
var key,\n
sort_list = {},\n
queue = new RSVP.Queue();\n
if (options.form_definition.sort_list) {\n
sort_list = JSON.parse(options.form_definition.sort_list);\n
}\n
gadget.props.column_list = result._embedded._view.listbox.column_list;\n
for (key in sort_list) {\n
if (sort_list.hasOwnProperty(key)) {\n
if (sort_list[key] !== "") {\n
queue.push(createTranslatedItem(gadget, sort_list[key]));\n
}\n
}\n
}\n
return queue;\n
});\n
})\n
//////////////////////////////////////////////\n
.declareService(function () {\n
var gadget = this;\n
loopEventListener(\n
gadget.props.element.querySelector(".plus"),\n
"submit",\n
false,\n
function () {\n
return createTranslatedItem(gadget);\n
}\n
);\n
\n
loopEventListener(\n
gadget.props.element.querySelector(".delete"),\n
"submit",\n
false,\n
function () {\n
gadget.props.jelement.panel("toggle");\n
}\n
);\n
\n
loopEventListener(\n
gadget.props.element.querySelector(".submit"),\n
"submit",\n
false,\n
function () {\n
var sort_list = gadget.props.element.querySelectorAll(".sortForm"),\n
sort_query = {},\n
sort_item,\n
sort_item_query,\n
i;\n
for (i = 0; i < sort_list.length; i += 1) {\n
sort_item = sort_list[i];\n
sort_item_query = sort_item[0][sort_item[0].selectedIndex].value + "," + sort_item[1][sort_item[1].selectedIndex].value + ",";\n
sort_query[i] = sort_item_query;\n
}\n
sort_query[i] = "";\n
return new RSVP.Queue()\n
.push(function () {\n
gadget.props.jelement.panel("toggle");\n
return gadget.redirect({command: \'change\', options: {\n
"sort_list": JSON.stringify(sort_query)}});\n
});\n
}\n
);\n
});\n
\n
}(window, document, rJS, RSVP));
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Gadget Erp5 Sort Editor JS</string> </value>
</item>
<item>
<key> <string>version</string> </key>
<value> <string>001</string> </value>
</item>
<item>
<key> <string>workflow_history</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</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>
<item>
<key> <string>document_publication_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value>
</item>
<item>
<key> <string>edit_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item>
<item>
<key> <string>processing_status_workflow</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
</value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>publish_alive</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>test</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="DateTime" module="DateTime.DateTime"/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>1442289048.29</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
<item>
<key> <string>validation_state</string> </key>
<value> <string>published_alive</string> </value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value> <string>edit</string> </value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>946.46298.51121.25531</string> </value>
</item>
<item>
<key> <string>state</string> </key>
<value> <string>current</string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="DateTime" module="DateTime.DateTime"/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>1445963800.7</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
<record id="5" aka="AAAAAAAAAAU=">
<pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/>
</pickle>
<pickle>
<tuple>
<none/>
<list>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>test</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>error_message</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_processing_state</string> </key>
<value> <string>empty</string> </value>
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>0.0.0.0</string> </value>
</item>
<item>
<key> <string>time</string> </key>
<value>
<object>
<klass>
<global name="DateTime" module="DateTime.DateTime"/>
</klass>
<tuple>
<none/>
</tuple>
<state>
<tuple>
<float>1442289000.01</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
......@@ -9178,8 +9178,7 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
\n
ERP5Storage.prototype.hasCapacity = function (name) {\n
return ((name === "list") || (name === "query") ||\n
(name === "select") || (name === "limit") ||\n
(name === "sort"));\n
(name === "select") || (name === "limit"));\n
};\n
\n
ERP5Storage.prototype.buildQuery = function (options) {\n
......@@ -9197,8 +9196,7 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
query: options.query,\n
// XXX Force erp5 to return embedded document\n
select_list: options.select_list || ["title", "reference"],\n
limit: options.limit,\n
sort_on: options.sort_on\n
limit: options.limit\n
}),\n
"xhrFields": {\n
withCredentials: true\n
......@@ -10493,7 +10491,7 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>cedric.le.ninivin</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -10507,7 +10505,7 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>946.47484.49057.4949</string> </value>
<value> <string>946.20166.17792.35464</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -10525,7 +10523,7 @@ Query.searchTextToRegExp = searchTextToRegExp;\n
</tuple>
<state>
<tuple>
<float>1446033135.72</float>
<float>1444411451.33</float>
<string>UTC</string>
</tuple>
</state>
......
......@@ -151,12 +151,6 @@
<td></td>\n
</tr>\n
\n
<tr>\n
<td>pause</td>\n
<td>3000</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//a[@data-i18n=\'Tabs\']</td>\n
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>Test RenderJS UI</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr>\n
</thead><tbody>\n
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />\n
\n
<!-- Clean Up -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/bar_module/ListBoxZuite_reset</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Reset Successfully.</td>\n
<td></td>\n
</tr>\n
<!-- should create in new ui instead of using script -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/FooModule_createObjects</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Created Successfully.</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/Zuite_waitForActivities</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Done.</td>\n
<td></td>\n
</tr>\n
\n
\n
<!-- Initialize -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/web_site_module/renderjs_runner/</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Foos\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Foos</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Add\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filter_form\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']/div/input</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filterForm\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td>index=1</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div[3]//input</td>\n
<td>0</td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div/div/select</td>\n
<td>index=2</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div[3]//input</td>\n
<td>%l%</td>\n
</tr>\n
\n
<tr>\n
<td>pause</td>\n
<td>3000</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 8</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>link=Title 7</td>\n
<td></td>\n
</tr>\n
\n
\n
</tbody></table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testCustomSearch</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>Test RenderJS UI</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr>\n
</thead><tbody>\n
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />\n
\n
<!-- Clean Up -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/bar_module/ListBoxZuite_reset</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Reset Successfully.</td>\n
<td></td>\n
</tr>\n
<!-- should create in new ui instead of using script -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/FooModule_createObjects</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Created Successfully.</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/Zuite_waitForActivities</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Done.</td>\n
<td></td>\n
</tr>\n
\n
\n
<!-- Initialize -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/web_site_module/renderjs_runner/</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Foos\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Foos</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'sort_form\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'sort_form\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'plus\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>pause</td>\n
<td>3000</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/../form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'sort_item_container\']/div[1]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/../form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'sort_item_container\']/div[2]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class=\'sort_item_container\']/div[1]/form/div[2]/div/select</td>\n
<td>index=0</td>\n
</tr>\n
\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class=\'sort_item_container\']/div[2]/form/div[1]/div/select</td>\n
<td>index=1</td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>pause</td>\n
<td>3000</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/../../div/div[2]/div/form/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 9</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[1]/th[2]/a</td>\n
<td>Title 0</td>\n
</tr>\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[2]/th[2]/a</td>\n
<td>Title 1</td>\n
</tr>\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[3]/th[2]/a</td>\n
<td>Title 2</td>\n
</tr>\n
\n
</tbody></table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testCustomSort</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>Test RenderJS UI</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr>\n
</thead><tbody>\n
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />\n
\n
<!-- Clean Up -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/bar_module/ListBoxZuite_reset</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Reset Successfully.</td>\n
<td></td>\n
</tr>\n
<!-- should create in new ui instead of using script -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/FooModule_createObjects</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Created Successfully.</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/Zuite_waitForActivities</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Done.</td>\n
<td></td>\n
</tr>\n
\n
<!-- setting for doamin tree -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/FooModule_viewFooList/listbox/ListBox_setPropertyList?field_domain_tree=checked;field_domain_root_list=foo_category%7CFoo%20Category</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Set Successfully.</td>\n
<td></td>\n
</tr>\n
\n
\n
<!-- Initialize -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/web_site_module/renderjs_runner/</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Foos\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Foos</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'sort_form\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'sort_form\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'plus\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>pause</td>\n
<td>3000</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/../form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'sort_item_container\']/div[1]</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class=\'sort_item_container\']/div[1]/form/div[2]/div/select</td>\n
<td>index=0</td>\n
</tr>\n
\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/../../div/div[2]/div/form/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 9</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[1]/th[2]/a</td>\n
<td>Title 0</td>\n
</tr>\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[2]/th[2]/a</td>\n
<td>Title 1</td>\n
</tr>\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[3]/th[2]/a</td>\n
<td>Title 2</td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']/div/input</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'domain_tree_container\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class=\'domain_tree_container\']/div[1]/div/div/select</td>\n
<td>index=1</td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'domain_tree_container\']/div[2]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class=\'domain_tree_container\']/div[2]/div/div/select</td>\n
<td>index=2</td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 2</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 3</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>link=Title 1</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']/div/input</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'domain_tree_container\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class=\'domain_tree_container\']/div[3]/div/div/select</td>\n
<td>index=1</td>\n
</tr>\n
\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 3</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 3</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 7</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>link=Title 2</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
</tbody></table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testDomainTree</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -199,12 +199,6 @@
<td></td>\n
</tr>\n
\n
<tr>\n
<td>pause</td>\n
<td>3000</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//a[@data-i18n="Tabs"]</td>\n
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>Test RenderJS UI</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr>\n
</thead><tbody>\n
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />\n
\n
<!-- Clean Up -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/bar_module/ListBoxZuite_reset</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Reset Successfully.</td>\n
<td></td>\n
</tr>\n
<!-- should create in new ui instead of using script -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/FooModule_createObjects</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Created Successfully.</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/Zuite_waitForActivities</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Done.</td>\n
<td></td>\n
</tr>\n
\n
\n
<!-- Initialize -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/web_site_module/renderjs_runner/</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Foos\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Foos</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 9</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'hide_form\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>pause</td>\n
<td>3000</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'hide_form\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@class=\'hide_form_element\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//tbody/tr[1]/input[@type=\'checkbox\']</td>\n
<td>on</td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//tbody/tr[2]/input[@type=\'checkbox\']</td>\n
<td>on</td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//tbody/tr[3]/input[@type=\'checkbox\']</td>\n
<td>on</td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//tbody/tr[1]/input[@type=\'checkbox\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'hide_form\']/button</td>\n
<td></td>\n
</tr>\n
\n
<!-- reload page -->\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 7</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 8</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 8</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 7</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>link=Title 9</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'sort_form\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'sort_form\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'plus\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>pause</td>\n
<td>3000</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/../form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'sort_item_container\']/div[1]</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/../../div/div[2]/div/form/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 8</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 8</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[1]/th[2]/a</td>\n
<td>Title 7</td>\n
</tr>\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[2]/th[2]/a</td>\n
<td>Title 8</td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filter_form\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']/div/input</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filterForm\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td>index=1</td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td>index=1</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div[3]//input</td>\n
<td>7</td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 8</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 7</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 7</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>link=Title 8</td>\n
<td></td>\n
</tr>\n
\n
</tbody></table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testFilter</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>Test RenderJS UI</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr>\n
</thead><tbody>\n
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />\n
\n
<!-- Clean Up -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/bar_module/ListBoxZuite_reset</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Reset Successfully.</td>\n
<td></td>\n
</tr>\n
<!-- should create in new ui instead of using script -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/FooModule_createObjects</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Created Successfully.</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/Zuite_waitForActivities</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Done.</td>\n
<td></td>\n
</tr>\n
\n
\n
<!-- Initialize -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/web_site_module/renderjs_runner/</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Foos\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Foos</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Add\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filter_form\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']/div/input</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filterForm\']</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//input[@class=\'or checkboxradio\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td>index=1</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div[3]//input</td>\n
<td>0</td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div/div/select</td>\n
<td>index=1</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div[3]//input</td>\n
<td>1</td>\n
</tr>\n
\n
<tr>\n
<td>pause</td>\n
<td>3000</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 8</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']/div/input</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filterForm\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//input[@class=\'or checkboxradio\']</td>\n
<td>on</td>\n
</tr>\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td>id</td>\n
</tr>\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div[3]//input</td>\n
<td>0</td>\n
</tr>\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div/div/select</td>\n
<td>id</td>\n
</tr>\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div[3]//input</td>\n
<td>1</td>\n
</tr>\n
\n
\n
\n
</tbody></table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testFilterItemAutoBuild</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>Test RenderJS UI</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr>\n
</thead><tbody>\n
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />\n
\n
<!-- Clean Up -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/bar_module/ListBoxZuite_reset</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Reset Successfully.</td>\n
<td></td>\n
</tr>\n
<!-- should create in new ui instead of using script -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/FooModule_createObjects</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Created Successfully.</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/Zuite_waitForActivities</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Done.</td>\n
<td></td>\n
</tr>\n
\n
\n
<!-- Initialize -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/web_site_module/renderjs_runner/</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Foos\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Foos</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Add\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filter_form\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']/div/input</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filterForm\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//input[@class=\'or checkboxradio\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/span</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/span</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
\n
\n
</tbody></table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testFilterItemDelete</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>Test RenderJS UI</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr>\n
</thead><tbody>\n
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />\n
\n
<!-- Clean Up -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/bar_module/ListBoxZuite_reset</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Reset Successfully.</td>\n
<td></td>\n
</tr>\n
<!-- should create in new ui instead of using script -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/FooModule_createObjects</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Created Successfully.</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/Zuite_waitForActivities</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Done.</td>\n
<td></td>\n
</tr>\n
\n
\n
<!-- Initialize -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/web_site_module/renderjs_runner/</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Foos\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Foos</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'sort_form\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'sort_form\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'plus\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/../form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'sort_item_container\']/div[1]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/../../div/div[2]/div/form/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 9</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[1]/th[2]/a</td>\n
<td>Title 0</td>\n
</tr>\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[2]/th[2]/a</td>\n
<td>Title 1</td>\n
</tr>\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[3]/th[2]/a</td>\n
<td>Title 2</td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Next</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Next</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 3</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[1]/th[2]/a</td>\n
<td>Title 3</td>\n
</tr>\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[2]/th[2]/a</td>\n
<td>Title 4</td>\n
</tr>\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[3]/th[2]/a</td>\n
<td>Title 5</td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Next</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Next</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 3</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 6</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[1]/th[2]/a</td>\n
<td>Title 6</td>\n
</tr>\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[2]/th[2]/a</td>\n
<td>Title 7</td>\n
</tr>\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[3]/th[2]/a</td>\n
<td>Title 8</td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Previous</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Previous</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 6</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 3</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[1]/th[2]/a</td>\n
<td>Title 3</td>\n
</tr>\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[2]/th[2]/a</td>\n
<td>Title 4</td>\n
</tr>\n
\n
<tr>\n
<td>verifyText</td>\n
<td>//tbody/tr[3]/th[2]/a</td>\n
<td>Title 5</td>\n
</tr>\n
\n
</tbody></table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testPager</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>Test RenderJS UI</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr>\n
</thead><tbody>\n
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />\n
\n
<!-- Clean Up -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/bar_module/ListBoxZuite_reset</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Reset Successfully.</td>\n
<td></td>\n
</tr>\n
<!-- should create in new ui instead of using script -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/FooModule_createObjects</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Created Successfully.</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/Zuite_waitForActivities</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Done.</td>\n
<td></td>\n
</tr>\n
\n
\n
<!-- Initialize -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/web_site_module/renderjs_runner/</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Foos\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Foos</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Add\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filter_form\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']/div/input</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filterForm\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td>index=1</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div[3]//input</td>\n
<td>0</td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 8</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>link=Title 8</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']/div/input</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filterForm\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td>index=2</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div[3]//input</td>\n
<td>T%</td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 9</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 9</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 8</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 7</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
\n
</tbody></table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testQuickSearch</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>Test RenderJS UI</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr>\n
</thead><tbody>\n
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />\n
\n
<!-- Clean Up -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/bar_module/ListBoxZuite_reset</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Reset Successfully.</td>\n
<td></td>\n
</tr>\n
<!-- should create in new ui instead of using script -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/FooModule_createObjects</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Created Successfully.</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/Zuite_waitForActivities</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Done.</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<!-- Initialize -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/web_site_module/renderjs_runner/</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Foos\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Foos</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Add\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filter_form\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']/div/input</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filterForm\']</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//input[@class=\'or checkboxradio\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td>index=1</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div[3]//input</td>\n
<td>0</td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div/div/select</td>\n
<td>index=1</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div[3]//input</td>\n
<td>1</td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[3]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[3]/form/div/div/select</td>\n
<td>index=1</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[3]/form/div[3]//input</td>\n
<td>2</td>\n
</tr>\n
\n
<tr>\n
<td>pause</td>\n
<td>3000</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 8</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 1</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>link=Title 2</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>link=Title 7</td>\n
<td></td>\n
</tr>\n
\n
\n
</tbody></table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testSearchWithOr</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>Test RenderJS UI</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr>\n
</thead><tbody>\n
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />\n
\n
<!-- Clean Up -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/bar_module/ListBoxZuite_reset</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Reset Successfully.</td>\n
<td></td>\n
</tr>\n
<!-- should create in new ui instead of using script -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/FooModule_createObjects</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Created Successfully.</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/Zuite_waitForActivities</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Done.</td>\n
<td></td>\n
</tr>\n
\n
\n
<!-- Initialize -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/web_site_module/renderjs_runner/</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Foos\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Foos</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'sort_form\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'sort_form\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'plus\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>pause</td>\n
<td>3000</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/../form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'sort_item_container\']/div[1]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/../form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'sort_item_container\']/div[2]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class=\'sort_item_container\']/div[1]/form/div[2]/div/select</td>\n
<td>index=0</td>\n
</tr>\n
\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class=\'sort_item_container\']/div[2]/form/div[1]/div/select</td>\n
<td>index=1</td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>pause</td>\n
<td>3000</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/../../div/div[2]/div/form/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 9</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class=\'sort_item_container\']/div[1]/form/div[1]/div/select</td>\n
<td>id</td>\n
</tr>\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class=\'sort_item_container\']/div[1]/form/div[2]/div/select</td>\n
<td>ascending</td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class=\'sort_item_container\']/div[2]/form/div[1]/div/select</td>\n
<td>title</td>\n
</tr>\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class=\'sort_item_container\']/div[2]/form/div[2]/div/select</td>\n
<td>ascending</td>\n
</tr>\n
\n
\n
</tbody></table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testSortItemAutoBuild</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>Test RenderJS UI</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr>\n
</thead><tbody>\n
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />\n
\n
<!-- Clean Up -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/bar_module/ListBoxZuite_reset</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Reset Successfully.</td>\n
<td></td>\n
</tr>\n
<!-- should create in new ui instead of using script -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/FooModule_createObjects</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Created Successfully.</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/Zuite_waitForActivities</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Done.</td>\n
<td></td>\n
</tr>\n
\n
\n
<!-- Initialize -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/web_site_module/renderjs_runner/</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Foos\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Foos</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'sort_form\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'sort_form\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'plus\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>pause</td>\n
<td>3000</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/../form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'sort_item_container\']/div[1]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/../form[@class=\'plus\']/button</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'sort_item_container\']/div[2]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/div[2]/form/span</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class=\'sort_item_container\']/div[2]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class=\'sort_item_container\']/div[1]/form/span</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class=\'sort_item_container\']/div[1]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>//div[@class=\'sort_item_container\']/div[2]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>//div[@class=\'sort_item_container\']/div[2]</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
</tbody></table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testSortItemDelete</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_text</string> </key>
<value> <unicode encoding="cdata"><![CDATA[
<html xmlns:tal="http://xml.zope.org/namespaces/tal"\n
xmlns:metal="http://xml.zope.org/namespaces/metal">\n
<head>\n
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n
<title>Test RenderJS UI</title>\n
</head>\n
<body>\n
<table cellpadding="1" cellspacing="1" border="1">\n
<thead>\n
<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr>\n
</thead><tbody>\n
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" />\n
\n
<!-- Clean Up -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/bar_module/ListBoxZuite_reset</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Reset Successfully.</td>\n
<td></td>\n
</tr>\n
<!-- should create in new ui instead of using script -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/foo_module/FooModule_createObjects</td>\n
<td></td>\n
</tr>\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Created Successfully.</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>open</td>\n
<td>${base_url}/Zuite_waitForActivities</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>assertTextPresent</td>\n
<td>Done.</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
\n
<!-- Initialize -->\n
<tr>\n
<td>open</td>\n
<td>${base_url}/web_site_module/renderjs_runner/</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//h3[@data-i18n=\'Other\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Foos\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>link=Foos</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Add\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@name=\'search\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 8</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//input[@name=\'search\']</td>\n
<td>id: "9" AND title: "Title"</td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@name=\'search\']/../div/input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//input[@name=\'search\']/../div/input</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 8</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 9</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filter_form\']/div/input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']/div/input</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filterForm\']/</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td>on</td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td>id</td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div[3]//input</td>\n
<td>9</td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div/div/select</td>\n
<td>title</td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div[3]//input</td>\n
<td>Title</td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>type</td>\n
<td>//input[@name=\'search\']</td>\n
<td>id: "9" OR title: "Title"</td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@name=\'search\']/../div/input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//input[@name=\'search\']/../div/input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 9</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filter_form\']/div/input</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']/div/input</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filterForm\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//input[@class=\'or checkboxradio\']</td>\n
<td>on</td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div/div/select</td>\n
<td>id</td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class="filter_item_container"]/div[1]/form/div[3]//input</td>\n
<td>9</td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div/div/select</td>\n
<td>title</td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//div[@class="filter_item_container"]/div[2]/form/div[3]//input</td>\n
<td>Title</td>\n
</tr>\n
\n
\n
\n
</tbody></table>\n
</body>\n
</html>
]]></unicode> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>expand</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>testUserManuallyInputQuery</string> </value>
</item>
<item>
<key> <string>output_encoding</string> </key>
<value> <string>utf-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <unicode></unicode> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
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