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

erp5_web_renderjs_ui: add search editor to make query

parent 577d848d
...@@ -321,21 +321,27 @@ def renderField(traversed_document, field, form_relative_url, value=None, meta_t ...@@ -321,21 +321,27 @@ def renderField(traversed_document, field, form_relative_url, value=None, meta_t
editable_column_list = field.get_value(\'editable_columns\')\n editable_column_list = field.get_value(\'editable_columns\')\n
\n \n
sort_column_list_tmp = field.get_value(\'sort_columns\')\n sort_column_list_tmp = field.get_value(\'sort_columns\')\n
search_column_list = field.get_value(\'search_columns\')\n search_column_list_tmp = field.get_value(\'search_columns\')\n
sort_column_list = []\n sort_column_list = []\n
\n search_column_list = []\n
#only get sortable column which is already displayed in listbox\n \n
#in legacy erp5 interface, all sortable columns are displayed\n #only get sortable&searchable column which is already displayed in listbox\n
#see https://git.erp5.org/gitweb/erp5.git/blob/HEAD:/product/ERP5Form/ListBox.py?js=1#l1004\n #see https://git.erp5.org/gitweb/erp5.git/blob/HEAD:/product/ERP5Form/ListBox.py?js=1#l1004\n
if sort_column_list_tmp:\n \n
sort_column_list = sort_column_list_tmp\n if search_column_list_tmp:\n
elif search_column_list:\n search_column_list = search_column_list_tmp\n
sort_column_list = search_column_list\n
else:\n else:\n
#find which column can be sorted\n
for grain in column_list:\n for grain in column_list:\n
if sql_catalog.isValidColumn(grain[0]):\n if sql_catalog.isValidColumn(grain[0]):\n
sort_column_list.append(grain)\n search_column_list.append(grain)\n
\n
\n
if sort_column_list_tmp:\n
sort_column_list = sort_column_list_tmp\n
else:\n
sort_column_list = search_column_list\n
\n
\n
\n \n
\n \n
# XXX \n # XXX \n
......
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
<value> <string encoding="cdata"><![CDATA[ <value> <string encoding="cdata"><![CDATA[
CACHE MANIFEST\n CACHE MANIFEST\n
# generated on Fri, 25 Nov 2015 10:00:00 +0000\n # generated on Mon, 30 Nov 2015 10:00:00 +0000\n
# XXX + fonts\n # XXX + fonts\n
# images/ajax-loader.gif\n # images/ajax-loader.gif\n
CACHE:\n CACHE:\n
...@@ -190,6 +190,8 @@ gadget_erp5_pt_form_view_editable.html\n ...@@ -190,6 +190,8 @@ gadget_erp5_pt_form_view_editable.html\n
gadget_erp5_pt_form_view_editable.js\n gadget_erp5_pt_form_view_editable.js\n
gadget_erp5_router.html\n gadget_erp5_router.html\n
gadget_erp5_router.js\n gadget_erp5_router.js\n
gadget_erp5_search_editor.html\n
gadget_erp5_search_editor.js\n
gadget_erp5_searchfield.html\n gadget_erp5_searchfield.html\n
gadget_erp5_searchfield.js\n gadget_erp5_searchfield.js\n
gadget_erp5_sort_editor.html\n gadget_erp5_sort_editor.html\n
...@@ -340,7 +342,7 @@ NETWORK:\n ...@@ -340,7 +342,7 @@ NETWORK:\n
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>947.22112.7095.5768</string> </value> <value> <string>947.22631.16141.50329</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -358,7 +360,7 @@ NETWORK:\n ...@@ -358,7 +360,7 @@ NETWORK:\n
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1448442318.38</float> <float>1448650222.45</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -1666,15 +1666,19 @@ html .ui-panel .ui-content-section .ui-controlgroup-controls > div:last-of-type ...@@ -1666,15 +1666,19 @@ html .ui-panel .ui-content-section .ui-controlgroup-controls > div:last-of-type
border-top-right-radius: 0;\n border-top-right-radius: 0;\n
border-top-color: transparent;\n border-top-color: transparent;\n
}\n }\n
\n
html .ui-panel .ui-content-section {\n
margin-top: 0;\n
}\n
/* XXX: not generic!!! */ \n /* XXX: not generic!!! */ \n
/* side by side buttons (normally this should be done by postion:abs, but requires another wrapper */\n /* side by side buttons (normally this should be done by postion:abs, but requires another wrapper */\n
html .ui-panel .ui-content-section .ui-controlgroup-controls > div:last-of-type {\n html .ui-panel .ui-content-section .ui-controlgroup-controls > div.ui-select:last-of-type {\n
display: inline-block;\n display: inline-block;\n
vertical-align: top;\n vertical-align: top;\n
width: 81.25%; /* BAD! use wrapper & position */\n width: 81.25%; /* BAD! use wrapper & position */\n
padding: 0;\n padding: 0;\n
}\n }\n
html .ui-panel .ui-content-section .ui-controlgroup-controls > div:last-of-type ~ button {\n html .ui-panel .ui-content-section .ui-controlgroup-controls > div.ui-select:last-of-type ~ button {\n
vertical-align: top;\n vertical-align: top;\n
display: inline-block;\n display: inline-block;\n
margin-left: -4px; /* to remove space between elements */\n margin-left: -4px; /* to remove space between elements */\n
...@@ -1684,12 +1688,12 @@ html .ui-panel .ui-content-section .ui-controlgroup-controls > div:last-of-type ...@@ -1684,12 +1688,12 @@ html .ui-panel .ui-content-section .ui-controlgroup-controls > div:last-of-type
border-top-color: transparent;\n border-top-color: transparent;\n
padding-bottom: .75em;\n padding-bottom: .75em;\n
}\n }\n
html .ui-panel .ui-content-section .ui-controlgroup-controls > div:last-of-type .ui-btn {\n html .ui-panel .ui-content-section .ui-controlgroup-controls > div.ui-select:last-of-type .ui-btn {\n
-webkit-border-bottom-right-radius: 0;\n -webkit-border-bottom-right-radius: 0;\n
border-bottom-right-radius: 0;\n border-bottom-right-radius: 0;\n
}\n }\n
/* element padding */\n /* element padding */\n
html .ui-panel .ui-content-section .ui-controlgroup-controls > div .ui-btn {\n html .ui-panel .ui-content-section .ui-controlgroup-controls > div.ui-select .ui-btn {\n
padding: 4px 0;\n padding: 4px 0;\n
}\n }\n
/* nasty padding */ \n /* nasty padding */ \n
...@@ -5198,7 +5202,7 @@ html .ui-panel .ui-content .ui-btn[class*="ui-icon-"]:after {\n ...@@ -5198,7 +5202,7 @@ html .ui-panel .ui-content .ui-btn[class*="ui-icon-"]:after {\n
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>947.4015.5592.23057</string> </value> <value> <string>947.25592.30077.20258</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -5216,7 +5220,7 @@ html .ui-panel .ui-content .ui-btn[class*="ui-icon-"]:after {\n ...@@ -5216,7 +5220,7 @@ html .ui-panel .ui-content .ui-btn[class*="ui-icon-"]:after {\n
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1447356677.5</float> <float>1448651090.87</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -281,6 +281,12 @@ ...@@ -281,6 +281,12 @@
});\n });\n
})\n })\n
.push(function (field_gadget) {\n .push(function (field_gadget) {\n
//XXXXX Hardcoded to get one listbox gadget\n
//pt form list gadget will get this listbox\'s info\n
//then pass to search field gadget\n
if (field_url === "gadget_erp5_field_listbox.html") {\n
form_gadget.props.listbox_gadget = field_gadget;\n
}\n
form_gadget.props.gadget_list.push(field_gadget);\n form_gadget.props.gadget_list.push(field_gadget);\n
var suboptions = options[renderered_field.key] || suboption_dict;\n var suboptions = options[renderered_field.key] || suboption_dict;\n
suboptions.field_json = renderered_field;\n suboptions.field_json = renderered_field;\n
...@@ -317,7 +323,14 @@ ...@@ -317,7 +323,14 @@
});\n });\n
})\n })\n
\n \n
\n .declareMethod("getListboxInfo", function () {\n
//XXXXX get listbox gadget\'s info\n
var gadget = this;\n
if (gadget.props.listbox_gadget) {\n
return gadget.props.listbox_gadget.getListboxInfo();\n
}\n
return {};\n
})\n
.declareMethod("getContent", function () {\n .declareMethod("getContent", function () {\n
var form_gadget = this,\n var form_gadget = this,\n
k,\n k,\n
...@@ -500,7 +513,7 @@ ...@@ -500,7 +513,7 @@
</item> </item>
<item> <item>
<key> <string>actor</string> </key> <key> <string>actor</string> </key>
<value> <string>xiaowu</string> </value> <value> <string>zope</string> </value>
</item> </item>
<item> <item>
<key> <string>comment</string> </key> <key> <string>comment</string> </key>
...@@ -514,7 +527,7 @@ ...@@ -514,7 +527,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>944.22467.53128.26641</string> </value> <value> <string>947.29788.20746.53162</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -532,8 +545,8 @@ ...@@ -532,8 +545,8 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1436753892.36</float> <float>1448902825.06</float>
<string>GMT+2</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
</object> </object>
......
...@@ -178,6 +178,18 @@ ...@@ -178,6 +178,18 @@
return false;\n return false;\n
});\n });\n
}\n }\n
\n
if (field_json.search_column_list.length) {\n
field_json.search_column_list = field_json.search_column_list.filter(function (n) {\n
for (i = 0; i < field_json.column_list.length; i += 1) {\n
if (field_json.column_list[i][0] === n[0] && field_json.column_list[i][1] === n[1]) {\n
return true;\n
}\n
}\n
return false;\n
});\n
}\n
field_json.search_column_list.push(["searchable_text", "Searchable Text"]);\n
thead.appendChild(tr);\n thead.appendChild(tr);\n
return new RSVP.Queue()\n return new RSVP.Queue()\n
.push(function () {\n .push(function () {\n
...@@ -217,6 +229,13 @@ ...@@ -217,6 +229,13 @@
document_table.innerHTML = my_translate_html;\n document_table.innerHTML = my_translate_html;\n
});\n });\n
})\n })\n
.declareMethod(\'getListboxInfo\', function () {\n
//XXXXX search column list is used for search editor to\n
//construct search panel\n
//hardcoded begin_from key to define search position\n
return { "search_column_list": this.props.field_json.search_column_list,\n
"begin_from": this.props.field_json.key + "_begin_from"};\n
})\n
\n \n
//////////////////////////////////////////////\n //////////////////////////////////////////////\n
// render the listbox in an asynchronous way\n // render the listbox in an asynchronous way\n
...@@ -661,7 +680,7 @@ ...@@ -661,7 +680,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>947.20698.10371.47530</string> </value> <value> <string>947.29639.47524.59016</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -679,7 +698,7 @@ ...@@ -679,7 +698,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1448443763.96</float> <float>1448903288.34</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -128,6 +128,12 @@ ...@@ -128,6 +128,12 @@
.declareAcquiredMethod("getUrlFor", "getUrlFor")\n .declareAcquiredMethod("getUrlFor", "getUrlFor")\n
.declareAcquiredMethod("redirect", "redirect")\n .declareAcquiredMethod("redirect", "redirect")\n
.declareAcquiredMethod("getUrlParameter", "getUrlParameter")\n .declareAcquiredMethod("getUrlParameter", "getUrlParameter")\n
.allowPublicAcquisition("getListboxInfo", function () {\n
return this.getDeclaredGadget("erp5_form")\n
.push(function(form_gadget) {\n
return form_gadget.getListboxInfo();\n
});\n
})\n
\n \n
/////////////////////////////////////////////////////////////////\n /////////////////////////////////////////////////////////////////\n
// declared methods\n // declared methods\n
...@@ -350,7 +356,7 @@ ...@@ -350,7 +356,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>947.22536.41002.36352</string> </value> <value> <string>947.25536.23903.53674</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -368,7 +374,7 @@ ...@@ -368,7 +374,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1448469230.79</float> <float>1448889486.07</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
<?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_search_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_searcheditor_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_search_editor.js"></script>\n
\n
\n
<script id="options-template" type="text/x-handlebars-template">\n
<select data-iconpos="left">\n
{{#each option}}\n
<option value="{{value}}" data-i18n="{{text}}">{{text}}</option> \n
{{/each}}\n
</select>\n
</script>\n
\n
\n
\n
<script id="filter-item-template" type="text/x-handlebars-template">\n
<div class="filter_item {{class_value}}" >\n
<select data-iconpos="left">\n
{{#each option}}\n
{{#equal value selected_option}}\n
<option selected="selected" data-i18n="{{text}}" value="{{value}}">{{text}}</option>\n
{{else}}\n
<option value="{{value}}" data-i18n="{{text}}">{{text}}</option> \n
{{/equal}}\n
{{/each}}\n
</select>\n
<select data-iconpos="left" >\n
{{#each operator_option}}\n
{{#equal value selected_option}}\n
<option selected="selected" data-i18n="{{text}}" value="{{value}}">{{text}}</option>\n
{{else}}\n
<option value="{{value}}" data-i18n="{{text}}">{{text}}</option> \n
{{/equal}}\n
{{/each}}\n
</select>\n
<div class="ui-controlgroup-controls">\n
<input type= "{{input_type}}" value="{{input_value}}"></input>\n
<button type="submit" class="ui-icon ui-btn ui-btn-inline ui-icon-delete ui-icon-shadow"></button>\n
</div>\n
</div>\n
\n
</script>\n
\n
\n
\n
\n
\n
\n
<script id="filter-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-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-body-c ui-content-section">\n
<fieldset class="ui-controlgroup ui-corner-all">\n
<div class="ui-controlgroup-controls">\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="on" checked="checked" name="heard_about" id="heard_about_a" class="and checkboxradio" data-cacheval="false" data-enhanced="true">\n
</div>\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="true" data-enhanced="true">\n
</div>\n
</div>\n
\n
</fieldset>\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-left ui-corner-all">Add Criteria</button>\n
</form>\n
</section>\n
</div>\n
</script>\n
\n
\n
</head>\n
<body>\n
<form class="filter_editor">\n
<div class="container"></div>\n
</form>\n
</body>\n
</html>
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Gadget Erp5 Search 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>1447863312.73</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>947.25389.31975.29218</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>1448651417.88</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>1447863285.72</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_search_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_searcheditor_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, maxlen: 100, nomen: true */\n
/*global window, document, rJS, RSVP, Handlebars, $, loopEventListener,\n
QueryFactory, SimpleQuery, ComplexQuery, Query*/\n
(function (window, document, rJS, RSVP, Handlebars, $, loopEventListener,\n
QueryFactory, SimpleQuery, ComplexQuery, Query) {\n
"use strict";\n
var gadget_klass = rJS(window),\n
filter_item_source = gadget_klass.__template_element\n
.getElementById("filter-item-template")\n
.innerHTML,\n
filter_item_template = Handlebars.compile(filter_item_source),\n
filter_source = gadget_klass.__template_element\n
.getElementById("filter-template")\n
.innerHTML,\n
filter_template = Handlebars.compile(filter_source),\n
\n
options_source = gadget_klass.__template_element\n
.getElementById("options-template")\n
.innerHTML,\n
options_template = Handlebars.compile(options_source);\n
\n
Handlebars.registerHelper(\'equal\', function (left_value,\n
right_value, options) {\n
if (arguments.length < 3) {\n
throw new Error("Handlebars Helper equal needs 2 parameters");\n
}\n
if (left_value !== right_value) {\n
return options.inverse(this);\n
}\n
return options.fn(this);\n
});\n
\n
//XXXXX\n
//define input\'s type according to column\'s value\n
//the way to determiner is not generic\n
function isNumericComparison(value) {\n
return value.indexOf(\'date\') !== -1 ||\n
value.indexOf(\'quantity\') !== -1 ||\n
value.indexOf(\'price\') !== -1;\n
}\n
\n
function createOptionsTemplate(gadget, value) {\n
var option = [],\n
tmp,\n
i;\n
if (value !== "searchable_text") {\n
if (isNumericComparison(value)) {\n
tmp = gadget.props.numeric;\n
} else {\n
tmp = gadget.props.other;\n
}\n
} else {\n
tmp = gadget.props.default;\n
}\n
for (i = 0; i < tmp.length; i += 1) {\n
option.push({\n
"text": tmp[i][0],\n
"value": tmp[i][1]\n
});\n
}\n
return gadget.translateHtml(options_template({option: option}));\n
}\n
\n
\n
\n
\n
function createFilterItemTemplate(gadget, class_value, filter_item) {\n
var column_list = gadget.props.search_column_list,\n
option = [],\n
tmp,\n
operator_option = [],\n
input_type = "text",\n
i;\n
\n
if (filter_item) {\n
if (isNumericComparison(filter_item.key)) {\n
tmp = gadget.props.numeric;\n
if (filter_item.key.indexOf("date") !== -1) {\n
input_type = "date";\n
} else {\n
input_type = "number";\n
}\n
} else {\n
tmp = gadget.props.other;\n
}\n
} else {\n
tmp = gadget.props.default;\n
filter_item = {};\n
}\n
\n
for (i = 0; i < tmp.length; i += 1) {\n
operator_option.push({\n
"text": tmp[i][0],\n
"value": tmp[i][1],\n
"selected_option": filter_item.operator\n
});\n
}\n
\n
for (i = 0; i < column_list.length; i += 1) {\n
option.push({\n
"text": column_list[i][1],\n
"value": column_list[i][0],\n
"selected_option": filter_item.key || "searchable_text"\n
});\n
}\n
return gadget.translateHtml(filter_item_template({\n
option: option,\n
operator_option: operator_option,\n
class_value: class_value,\n
input_value: filter_item.value,\n
input_type: input_type\n
}));\n
}\n
\n
\n
function listenToSelect(gadget, class_value) {\n
var list = [],\n
i,\n
filter_item_list =\n
gadget.props.element.querySelectorAll("." + class_value);\n
function createFunction(i) {\n
var select_list = filter_item_list[i].querySelectorAll("select"),\n
input = filter_item_list[i].querySelector("input");\n
return loopEventListener(\n
select_list[0],\n
"change",\n
false,\n
function (event) {\n
return new RSVP.Queue()\n
.push(function () {\n
return createOptionsTemplate(gadget, event.target.value);\n
})\n
.push(function (innerHTML) {\n
select_list[1].innerHTML = innerHTML;\n
$(select_list[1]).selectmenu(\'refresh\');\n
if (isNumericComparison(event.target.value)) {\n
if (event.target.value.indexOf("date") !== -1) {\n
input.setAttribute("type", "date");\n
} else {\n
input.setAttribute("type", "number");\n
}\n
} else {\n
input.setAttribute("type", "text");\n
}\n
});\n
}\n
);\n
}\n
for (i = 0; i < filter_item_list.length; i += 1) {\n
list.push(createFunction(i));\n
}\n
return RSVP.all(list);\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.numeric = [["Equals To", "="], ["Greater Than", ">"],\n
["Less Than", "<"], ["Not Greater Than", "<="],\n
["Not Less Than", ">="]];\n
g.props.other = [["Exact Match", "exacte_match"],\n
["keyword", "keyword"]];\n
g.props.default = [["Contain", "Contain"]];\n
});\n
})\n
\n
\n
\n
//////////////////////////////////////////////\n
// acquired method\n
//////////////////////////////////////////////\n
.declareAcquiredMethod("translateHtml", "translateHtml")\n
.declareAcquiredMethod("redirect", "redirect")\n
.declareAcquiredMethod("trigger", "trigger")\n
//////////////////////////////////////////////\n
// initialize the gadget content\n
//////////////////////////////////////////////\n
.declareMethod(\'render\', function (options) {\n
var gadget = this;\n
gadget.props.search_column_list = options.search_column_list;\n
gadget.props.begin_from = options.begin_from;\n
\n
gadget.props.extended_search = options.extended_search;\n
\n
return new RSVP.Queue()\n
.push(function () {\n
var tmp = filter_template();\n
return gadget.translateHtml(tmp);\n
})\n
.push(function (translated_html) {\n
var tmp = document.createElement("div");\n
tmp.innerHTML = translated_html;\n
gadget.props.element.querySelector(".container").appendChild(tmp);\n
});\n
})\n
//////////////////////////////////////////////\n
.declareService(function () {\n
var gadget = this,\n
i,\n
list = [],\n
or = gadget.props.element.querySelector(".or"),\n
and = gadget.props.element.querySelector(".and"),\n
container = gadget.props.element.querySelector(".filter_item_container"),\n
query_list;\n
if (gadget.props.extended_search) {\n
//string to query\n
query_list = QueryFactory.create(gadget.props.extended_search);\n
if (query_list.operator === "OR") {\n
or.checked = true;\n
and.checked = false;\n
or.parentElement.children[0].setAttribute("class",\n
"ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-on");\n
and.parentElement.children[0].setAttribute("class",\n
"ui-btn ui-corner-all ui-btn-inherit ui-btn-icon-left ui-radio-off");\n
}\n
\n
query_list = query_list.query_list || [query_list];\n
for (i = 0; i < query_list.length; i += 1) {\n
list.push(createFilterItemTemplate(gadget, "auto", query_list[i]));\n
}\n
return RSVP.Queue()\n
.push(function () {\n
return RSVP.all(list);\n
})\n
.push(function (all_result) {\n
var innerHTML = "",\n
select_list;\n
for (i = 0; i < all_result.length; i += 1) {\n
innerHTML += all_result[i];\n
}\n
container.innerHTML = innerHTML;\n
select_list = container.querySelectorAll("select");\n
for (i = 0; i < select_list.length; i += 1) {\n
$(select_list[i]).selectmenu();\n
}\n
return listenToSelect(gadget, "auto");\n
});\n
}\n
})\n
.declareService(function () {\n
var gadget = this,\n
container = gadget.props.element.querySelector(".filter_item_container");\n
return loopEventListener(\n
gadget.props.element.querySelector(".filter_editor"),\n
"submit",\n
false,\n
function () {\n
var focused = document.activeElement;\n
if (focused.nodeName === "BUTTON") {\n
container.removeChild(focused.parentElement.parentElement);\n
}\n
}\n
);\n
})\n
.declareService(function () {\n
var gadget = this;\n
return loopEventListener(\n
gadget.props.element.querySelector(".submit"),\n
"submit",\n
false,\n
function () {\n
var i,\n
simple_operator,\n
query,\n
key,\n
select_list,\n
simple_query_list = [],\n
complex_query,\n
select,\n
value,\n
options = {},\n
filter_item_list = gadget.props.element.querySelectorAll(".filter_item"),\n
and = gadget.props.element.querySelector(".and");\n
for (i = 0; i < filter_item_list.length; i += 1) {\n
select_list = filter_item_list[i].querySelectorAll("select");\n
value = filter_item_list[i].querySelector("input").value;\n
simple_operator = "";\n
select = select_list[1][select_list[1].selectedIndex].value;\n
if (select === "keyword") {\n
value = "%" + value + "%";\n
} else if (["", ">", "<", "<=", ">="].indexOf(select) !== -1) {\n
simple_operator = select;\n
}\n
\n
if (select_list[0][select_list[0].selectedIndex].value === "searchable_text") {\n
key = "";\n
} else {\n
key = select_list[0][select_list[0].selectedIndex].value;\n
}\n
\n
simple_query_list.push(new SimpleQuery(\n
{\n
key: key,\n
operator: simple_operator,\n
type: "simple",\n
value: value\n
}\n
));\n
}\n
\n
if (simple_query_list.length > 0) {\n
complex_query = new ComplexQuery({\n
operator: and.checked ? "AND" : "OR",\n
query_list: simple_query_list,\n
type: "complex"\n
});\n
//query to string\n
query = Query.objectToSearchText(complex_query);\n
} else {\n
query = "";\n
}\n
options.extended_search = query;\n
options[gadget.props.begin_from] = undefined;\n
return gadget.redirect(\n
{\n
command: \'store_and_change\',\n
options : options\n
}\n
);\n
}\n
);\n
})\n
.declareService(function () {\n
var gadget = this,\n
class_value = "add_after";\n
return loopEventListener(\n
gadget.props.element.querySelector(".plus"),\n
"submit",\n
false,\n
function () {\n
return new RSVP.Queue()\n
.push(function () {\n
return createFilterItemTemplate(gadget, class_value);\n
})\n
.push(function (template) {\n
var tmp = document.createElement("div"),\n
container = gadget.props.element.querySelector(".filter_item_container"),\n
select_list,\n
i;\n
tmp.innerHTML = template;\n
select_list = tmp.querySelectorAll("select");\n
for (i = 0; i < select_list.length; i += 1) {\n
$(select_list[i]).selectmenu();\n
}\n
container.appendChild(tmp.querySelector("div"));\n
return listenToSelect(gadget, class_value);\n
});\n
}\n
);\n
})\n
.declareService(function () {\n
var gadget = this;\n
return loopEventListener(\n
gadget.props.element.querySelector(".delete"),\n
"submit",\n
false,\n
function () {\n
return gadget.trigger();\n
}\n
);\n
});\n
\n
}(window, document, rJS, RSVP, Handlebars, $, loopEventListener,\n
QueryFactory, SimpleQuery, ComplexQuery, Query));
]]></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Gadget Erp5 Search 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>1447863363.66</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>947.29484.5127.28433</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>1448903443.33</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>1447863335.99</float>
<string>UTC</string>
</tuple>
</state>
</object>
</value>
</item>
</dictionary>
</list>
</tuple>
</pickle>
</record>
</ZopeData>
...@@ -120,21 +120,30 @@ ...@@ -120,21 +120,30 @@
<!-- custom script -->\n <!-- custom script -->\n
<script src="gadget_erp5_searchfield.js"></script>\n <script src="gadget_erp5_searchfield.js"></script>\n
\n \n
<!-- XXX widget-status is bad! -->\n <script id="panel-template" type="text/x-handlebars-template">\n
<script id="panel-template" type="text/x-handlebars-template">\n <div class="field_container">\n
<div class="center">\n <div class="ui-field-contain">\n
<div class="ui-field-contain">\n <div class="bottom">\n
<div class="ui-input-text ui-body-{{widget_theme}} ui-corner-all ui-shadow-inset ui-input-has-clear {{widget_status_class}}">\n <div class="ui-input-text ui-body-{{theme}} ui-input-has-icon ui-corner-all ui-shadow-inset ui-input-has-clear">\n
<input type="text" data-enhanced="true" value="{{widget_value}}" name="search" {{widget_status_attribute}} />\n <form class="save_form">\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 <input type="text" data-enhanced="true" value="{{widget_value}}" name="search" {{widget_status_attribute}} >\n
Submit<input data-enhanced="true" type="submit" data-i18n="[value]header-submit" value="Submit" {{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
</div>\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 </div>\n
</div>\n
</script>\n </script>\n
\n \n
</head>\n </head>\n
<body>\n <body>\n
<div class="save_form document_form"></div>\n <div class="save_form document_form"></div>\n
...@@ -262,7 +271,7 @@ ...@@ -262,7 +271,7 @@
</item> </item>
<item> <item>
<key> <string>actor</string> </key> <key> <string>actor</string> </key>
<value> <string>romain</string> </value> <value> <string>zope</string> </value>
</item> </item>
<item> <item>
<key> <string>comment</string> </key> <key> <string>comment</string> </key>
...@@ -276,7 +285,7 @@ ...@@ -276,7 +285,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>945.50880.23560.7150</string> </value> <value> <string>947.12457.22504.55808</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -294,8 +303,8 @@ ...@@ -294,8 +303,8 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1442998364.27</float> <float>1447863048.11</float>
<string>GMT</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
</object> </object>
......
...@@ -135,6 +135,8 @@ ...@@ -135,6 +135,8 @@
// acquired method\n // acquired method\n
//////////////////////////////////////////////\n //////////////////////////////////////////////\n
.declareAcquiredMethod("translateHtml", "translateHtml")\n .declareAcquiredMethod("translateHtml", "translateHtml")\n
.declareAcquiredMethod("renderEditorPanel", "renderEditorPanel")\n
.declareAcquiredMethod("getListboxInfo", "getListboxInfo")\n
\n \n
/////////////////////////////////////////////////////////////////\n /////////////////////////////////////////////////////////////////\n
// declared methods\n // declared methods\n
...@@ -150,7 +152,7 @@ ...@@ -150,7 +152,7 @@
append_class = " ui-disabled";\n append_class = " ui-disabled";\n
append_attribute = \' disabled="disabled\';\n append_attribute = \' disabled="disabled\';\n
}\n }\n
\n search_gadget.props.extended_search = option_dict.extended_search;\n
return new RSVP.Queue()\n return new RSVP.Queue()\n
.push(function () {\n .push(function () {\n
return search_gadget.translateHtml(panel_template({\n return search_gadget.translateHtml(panel_template({\n
...@@ -178,6 +180,30 @@ ...@@ -178,6 +180,30 @@
\n \n
result[input.getAttribute(\'name\')] = value;\n result[input.getAttribute(\'name\')] = value;\n
return result;\n return result;\n
})\n
.declareService(function () {\n
var gadget = this,\n
url,\n
options = {},\n
sort_form = gadget.props.element.querySelector(".filter_form");\n
return loopEventListener(\n
sort_form,\n
"submit",\n
false,\n
function () {\n
return new RSVP.Queue()\n
.push(function () {\n
return gadget.getListboxInfo();\n
})\n
.push(function (result) {\n
url = "gadget_erp5_search_editor.html";\n
options.extended_search = gadget.props.extended_search;\n
options.begin_from = result.begin_from;\n
options.search_column_list = result.search_column_list;\n
return gadget.renderEditorPanel(url, options);\n
});\n
}\n
);\n
});\n });\n
\n \n
}(window, rJS, RSVP, loopEventListener, Handlebars));</string> </value> }(window, rJS, RSVP, loopEventListener, Handlebars));</string> </value>
...@@ -315,7 +341,7 @@ ...@@ -315,7 +341,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>946.44927.40202.16725</string> </value> <value> <string>947.25574.60857.20718</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -333,7 +359,7 @@ ...@@ -333,7 +359,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1448467423.65</float> <float>1448889581.09</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
<?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
\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
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" />\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=\'Previous\']</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\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\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>//form[@class=\'plus\']</td>\n
<td></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[1]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[1]//select</td>\n
<td>index=0</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[1]//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
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[2]//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]//input</td>\n
<td>Title 2</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>waitForElementNotPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 2</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 8</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
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\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>check</td>\n
<td>//input[@class=\'or checkboxradio\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td>off</td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'filter_item_container\']</td>\n
<td></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
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
\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 2</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>focus</td>\n
<td>//div[@class="filter_item_container"]/div[2]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class="filter_item_container"]/div[2]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>focus</td>\n
<td>//div[@class="filter_item_container"]/div[1]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class="filter_item_container"]/div[1]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//a[@data-i18n="Previous"]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n="Previous"]</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>testComplexFilter</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
\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
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" />\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=\'Previous\']</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\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\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>//form[@class=\'plus\']</td>\n
<td></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[1]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[1]//select</td>\n
<td>index=0</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[1]//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>//a[@data-i18n=\'Previous\']</td>\n
<td></td>\n
</tr>\n
\n
\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
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\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\']</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[1]//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]//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>//a[@data-i18n=\'Previous\']</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
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>focus</td>\n
<td>//div[@class="filter_item_container"]/div[1]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class="filter_item_container"]/div[1]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//a[@data-i18n="Previous"]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n="Previous"]</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>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
\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
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" />\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
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Previous\']</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\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\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>//form[@class=\'plus\']</td>\n
<td></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[1]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[1]//select</td>\n
<td>index=0</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[1]//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
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[2]//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]//input</td>\n
<td>Title 2</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
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//a[@data-i18n=\'Previous\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Previous\']</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\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[2]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]//select</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>check</td>\n
<td>//input[@class=\'or checkboxradio\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td>off</td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'filter_item_container\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//a[@data-i18n=\'Previous\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Previous\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td>off</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
\n
<tr>\n
<td>focus</td>\n
<td>//div[@class="filter_item_container"]/div[2]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class="filter_item_container"]/div[2]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
\n
\n
<tr>\n
<td>focus</td>\n
<td>//div[@class="filter_item_container"]/div[1]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class="filter_item_container"]/div[1]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//a[@data-i18n="Previous"]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n="Previous"]</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>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
\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
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" />\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=\'Previous\']</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\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\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>//form[@class=\'plus\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\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>check</td>\n
<td>//input[@class=\'or checkboxradio\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td>off</td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class=\'filter_item_container\']</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'plus\']</td>\n
<td></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[1]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[1]//select</td>\n
<td>index=0</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[1]//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
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[2]//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]//input</td>\n
<td>Title 2</td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>focus</td>\n
<td>//div[@class="filter_item_container"]/div[2]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class="filter_item_container"]/div[2]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
\n
<tr>\n
<td>focus</td>\n
<td>//div[@class="filter_item_container"]/div[1]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class="filter_item_container"]/div[1]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>verifyElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]</td>\n
<td></td>\n
</tr>\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
\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
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" />\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=\'Previous\']</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\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>check</td>\n
<td>//input[@class=\'or checkboxradio\']</td>\n
<td>on</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
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'plus\']</td>\n
<td></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[1]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[1]//select</td>\n
<td>index=0</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[1]//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
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[2]//select</td>\n
<td>index=0</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[2]//input</td>\n
<td>1</td>\n
</tr>\n
\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>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[3]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[3]//select</td>\n
<td>index=0</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[3]//input</td>\n
<td>2</td>\n
</tr>\n
\n
\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>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[4]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[4]//select</td>\n
<td>index=0</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[4]//input</td>\n
<td>3</td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//a[@data-i18n="Previous"]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n="Previous"]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>link=Title 2</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
\n
<tr>\n
<td>click</td>\n
<td>//a[@data-i18n="Next"]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>link=Title 2</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>verifyElementPresent</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n="Previous"]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//a[@data-i18n="Previous"]</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 2</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>waitForElementPresent</td>\n
<td>//form[@class=\'filter_form\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[4]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>focus</td>\n
<td>//div[@class="filter_item_container"]/div[4]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class="filter_item_container"]/div[4]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[4]</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[3]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>focus</td>\n
<td>//div[@class="filter_item_container"]/div[3]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class="filter_item_container"]/div[3]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[3]</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>focus</td>\n
<td>//div[@class="filter_item_container"]/div[2]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class="filter_item_container"]/div[2]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[2]</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>focus</td>\n
<td>//div[@class="filter_item_container"]/div[1]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class="filter_item_container"]/div[1]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//a[@data-i18n="Previous"]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n="Previous"]</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>testFilterWithPager</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
\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
<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" />\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=\'Previous\']</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\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>verifyValue</td>\n
<td>//input[@class=\'and checkboxradio\']</td>\n
<td>on</td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'plus\']</td>\n
<td></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[1]//select</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>select</td>\n
<td>//div[@class="filter_item_container"]/div[1]//select</td>\n
<td>index=0</td>\n
</tr>\n
\n
<tr>\n
<td>type</td>\n
<td>//div[@class="filter_item_container"]/div[1]//input</td>\n
<td>0</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
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//a[@data-i18n="Previous"]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n="Previous"]</td>\n
<td></td>\n
</tr>\n
\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>click</td>\n
<td>link=Title 0</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Edit\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Next\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//a[@data-i18n=\'Next\']</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//a[@data-i18n = "Title 0"]</td>\n
<td></td>\n
</tr>\n
\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n=\'Foos\']</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//form[@class=\'filter_form\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'filter_form\']//input</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]</td>\n
<td></td>\n
</tr>\n
\n
\n
<tr>\n
<td>focus</td>\n
<td>//div[@class="filter_item_container"]/div[1]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//div[@class="filter_item_container"]/div[1]//button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//div[@class="filter_item_container"]/div[1]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>click</td>\n
<td>//form[@class=\'submit\']/button</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementNotPresent</td>\n
<td>//a[@data-i18n="Previous"]</td>\n
<td></td>\n
</tr>\n
\n
<tr>\n
<td>waitForElementPresent</td>\n
<td>//a[@data-i18n="Previous"]</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>testFilterWithPreviousNext</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