diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_nojqm_css.css b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_nojqm_css.css index 7c054160d029677f0c658e427f3db72671cdc096..eb8718dccc844de672cdc8d3d1e839db41b481f6 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_nojqm_css.css +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_nojqm_css.css @@ -1144,7 +1144,8 @@ div[data-gadget-scope='header'] .ui-header ul { .relation-input { display: flex; } -.relation-input a { +.relation-input a, +.relation-input button { width: 24pt; overflow: hidden; text-indent: -9999px; @@ -1153,7 +1154,8 @@ div[data-gadget-scope='header'] .ui-header ul { padding-top: 3pt; padding-bottom: 3pt; } -.relation-input a::before { +.relation-input a::before, +.relation-input button::before { float: left; text-indent: 0; margin-left: 6pt; diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_nojqm_css.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_nojqm_css.xml index ec49982abdf8c0df16e06e539db9568bef608ace..10b5df4dc7771ae9dad8bc35f2f81ff965124b93 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_nojqm_css.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_nojqm_css.xml @@ -228,7 +228,7 @@ </item> <item> <key> <string>actor</string> </key> - <value> <string>vincent</string> </value> + <value> <string>zope</string> </value> </item> <item> <key> <string>comment</string> </key> @@ -242,7 +242,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>964.8294.44761.42632</string> </value> + <value> <string>964.8273.15694.60620</string> </value> </item> <item> <key> <string>state</string> </key> @@ -260,7 +260,7 @@ </tuple> <state> <tuple> - <float>1513250374.08</float> + <float>1513255864.13</float> <string>UTC</string> </tuple> </state> diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_html.html b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_html.html index 66727e5110d6305f501d0f3da520501f326e02e6..ef9a0747d30a41cbfb7a58db9f66d559ab40c235 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_html.html +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_html.html @@ -23,7 +23,6 @@ <input type='search' title="{{title}}" name="{{name}}" id="{{name}}" autocomplete="off" data-enhanced="true" value="{{value}}" > <ul class="ui-listview ui-corner-all search_ul"></ul> </div> - <a href={{href}} tabindex="-1" class="{{class_name}}" >Jump to this document</a> </div> </script> diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_html.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_html.xml index c631b6ad6133178e1384e92142863bbe7695ebda..a22a4919ae24896573b1b5d1a6f2ee8b52c88755 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_html.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_html.xml @@ -234,7 +234,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>963.11788.48702.26146</string> </value> + <value> <string>964.6712.62509.9898</string> </value> </item> <item> <key> <string>state</string> </key> @@ -252,7 +252,7 @@ </tuple> <state> <tuple> - <float>1512750412.99</float> + <float>1513168443.82</float> <string>UTC</string> </tuple> </state> diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_js.js b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_js.js index 1079aa916b0c0c28b91ef39db0e688ff8281d015..41796a9f9da95b6c5fb9edd1b524e47ee35e8c5e 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_js.js +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_js.js @@ -1,7 +1,7 @@ /*jslint indent: 2, maxerr: 3, nomen: true, maxlen: 80 */ /*global window, rJS, RSVP, URI, Handlebars, - SimpleQuery, ComplexQuery, Query, QueryFactory*/ -(function (window, rJS, RSVP, URI, + SimpleQuery, ComplexQuery, Query, QueryFactory, document*/ +(function (window, rJS, RSVP, URI, document, SimpleQuery, ComplexQuery, Query, QueryFactory, Handlebars) { "use strict"; @@ -44,16 +44,67 @@ gadget.element.textContent = gadget.state.value_text; } - function displayEditableLink(gadget, class_name) { - return gadget.translateHtml(relation_input_template({ - href: "#", + function buildEditableInputHTML(gadget) { + gadget.element.innerHTML = relation_input_template({ value: gadget.state.value_text, title: gadget.state.title, - name: gadget.state.key, - class_name: class_name - })) - .push(function (html) { - gadget.element.innerHTML = html; + name: gadget.state.key + }); + } + + function createEditableLink(gadget, class_name) { + // Add an airplane link + var a = document.createElement('a'), + div = gadget.element.querySelector('input').parentElement; + a.setAttribute('tabindex', -1); + a.setAttribute('class', class_name); + a.textContent = 'Jump to this document'; + if (div.nextElementSibling !== null) { + div.parentElement.removeChild(div.nextElementSibling); + } + div.parentElement.appendChild(a); + } + + function createEditableButton(gadget, class_name) { + // Add a search button + var button = document.createElement('button'), + div = gadget.element.querySelector('input').parentElement; + button.setAttribute('tabindex', -1); + button.setAttribute('class', class_name); + button.setAttribute('type', 'button'); + if (div.nextElementSibling !== null) { + div.parentElement.removeChild(div.nextElementSibling); + } + div.parentElement.appendChild(button); + } + + function redirectToTheSearchListbox(gadget) { + return gadget.getFormContent({ + format: "json" + }) + .push(function (content) { + var input = gadget.element.querySelector('input'), + extended_search = ""; + if (input.value) { + extended_search = Query.objectToSearchText( + new SimpleQuery({ + key: gadget.state.catalog_index, + value: input.value + }) + ); + } + return gadget.redirect({ + command: 'index', + options: { + page: "relation_search", + url: gadget.state.url, + extended_search: extended_search, + view: gadget.state.view, + back_field: gadget.state.key, + relation_index: gadget.state.relation_index + }, + form_content: content + }); }); } @@ -85,8 +136,9 @@ view: options.view, url: options.url, allow_creation: options.allow_creation, - portal_types: options.portal_types, - translated_portal_types: options.translated_portal_types, + portal_types: JSON.stringify(options.portal_types), + translated_portal_types: + JSON.stringify(options.translated_portal_types), has_focus: false, relation_index: options.relation_index, value_relative_url: options.value_relative_url, @@ -121,7 +173,6 @@ .onStateChange(function (modification_dict) { var gadget = this, - queue = new RSVP.Queue(), value_text = gadget.state.value_text, // target_url, SEARCHING_CLASS_STR = "ui-btn ui-corner-all ui-btn-icon-notext" + @@ -130,6 +181,8 @@ "ui-icon-plane ui-shadow-inset ui-btn-inline", JUMP_OFF_CLASS_STR = "ui-btn ui-corner-all ui-btn-icon-notext " + "ui-icon-plane ui-shadow-inset ui-btn-inline ui-disabled", + SEARCH_CLASS_STR = "ui-btn ui-corner-all ui-btn-icon-notext " + + "ui-icon-search ui-shadow-inset ui-btn-inline", JUMP_ADD_CLASS_STR = "ui-btn ui-corner-all ui-btn-icon-notext " + "ui-icon-plus ui-shadow-inset ui-btn-inline ui-disabled", JUMP_UNKNOWN_CLASS_STR = "ui-btn ui-corner-all ui-btn-icon-notext " + @@ -145,12 +198,19 @@ if (modification_dict.hasOwnProperty('editable')) { // First display of the input - queue.push(function () { - return displayEditableLink(gadget, JUMP_UNKNOWN_CLASS_STR); - }); + buildEditableInputHTML(gadget); } - return queue + // Display the airplane link or the search button + if ((gadget.state.value_relative_url) || (gadget.state.value_text)) { + createEditableLink(gadget, JUMP_UNKNOWN_CLASS_STR); + } else { + gadget.element.querySelector(".search_ul").innerHTML = ""; + return createEditableButton(gadget, SEARCH_CLASS_STR); + } + + // Check if the airplane link has to be updated + return RSVP.Queue() .push(function () { var plane = gadget.element.querySelector("a"), ul = gadget.element.querySelector(".search_ul"), @@ -245,12 +305,17 @@ .push(function (result) { var list = [], i, - type = []; + type = [], + portal_types, + translated_portal_types; if (gadget.state.allow_creation) { - for (i = 0; i < gadget.state.portal_types.length; i += 1) { + portal_types = JSON.parse(gadget.state.portal_types); + translated_portal_types = + JSON.parse(gadget.state.translated_portal_types); + for (i = 0; i < portal_types.length; i += 1) { type.push({ - name: gadget.state.translated_portal_types[i], - value: gadget.state.portal_types[i] + name: translated_portal_types[i], + value: portal_types[i] }); } } @@ -304,6 +369,11 @@ data_explore, new_state = {}; + if (evt.target.tagName.toLowerCase() === 'button') { + // Go to the search listbox + return redirectToTheSearchListbox(gadget); + } + if (evt.target.tagName.toLowerCase() === 'li') { li = evt.target; data_relative_url = li.getAttribute("data-relative-url"); @@ -327,29 +397,7 @@ // Go to the search listbox if (data_explore) { - return gadget.getFormContent({ - format: "json" - }) - .push(function (content) { - var input = gadget.element.querySelector('input'); - return gadget.redirect({ - command: 'index', - options: { - page: "relation_search", - url: gadget.state.url, - extended_search: Query.objectToSearchText( - new SimpleQuery({ - key: gadget.state.catalog_index, - value: input.value - }) - ), - view: gadget.state.view, - back_field: gadget.state.key, - relation_index: gadget.state.relation_index - }, - form_content: content - }); - }); + return redirectToTheSearchListbox(gadget); } } }, false, false) @@ -398,5 +446,5 @@ }); }, true, false); -}(window, rJS, RSVP, URI, +}(window, rJS, RSVP, URI, document, SimpleQuery, ComplexQuery, Query, QueryFactory, Handlebars)); diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_js.xml index d4901cb5b36a5a88826ca4e350782a0768c512fe..0ed2ed06f0610fc37699b2ff5394657276aa38fb 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_js.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_relation_input_js.xml @@ -236,7 +236,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>958.2831.13618.12219</string> </value> + <value> <string>964.8568.54116.8601</string> </value> </item> <item> <key> <string>state</string> </key> @@ -254,7 +254,7 @@ </tuple> <state> <tuple> - <float>1489675175.72</float> + <float>1513266821.11</float> <string>UTC</string> </tuple> </state> diff --git a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/erp5css.less.txt b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/erp5css.less.txt index 173904cd918d80d967cd2729d765dcf15c22f435..951bb0ab50ad04b243cc307cc855af8b37af6254 100644 --- a/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/erp5css.less.txt +++ b/bt5/erp5_web_renderjs_ui/SkinTemplateItem/portal_skins/erp5_web_renderjs_ui/erp5css.less.txt @@ -1344,7 +1344,7 @@ div[data-gadget-scope='header'] .ui-header { **********************************************/ .relation-input { display: flex; - a { + a, button { .hide_text(@width: @quadruple-margin-size); &::before { diff --git a/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_relation_field_zuite/testMultiRelationFieldEmptySearchWithListbox.xml b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_relation_field_zuite/testMultiRelationFieldEmptySearchWithListbox.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b6bf1e62e774cb5c20fee79a20335de1bd9eed8 --- /dev/null +++ b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_relation_field_zuite/testMultiRelationFieldEmptySearchWithListbox.xml @@ -0,0 +1,58 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>text/html</string> </value> + </item> + <item> + <key> <string>expand</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>testMultiRelationFieldEmptySearchWithListbox</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> diff --git a/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_relation_field_zuite/testMultiRelationFieldEmptySearchWithListbox.zpt b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_relation_field_zuite/testMultiRelationFieldEmptySearchWithListbox.zpt new file mode 100644 index 0000000000000000000000000000000000000000..c35dafa35e23c152012d61a551677280758cab44 --- /dev/null +++ b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_relation_field_zuite/testMultiRelationFieldEmptySearchWithListbox.zpt @@ -0,0 +1,294 @@ +<html xmlns:tal="http://xml.zope.org/namespaces/tal" + xmlns:metal="http://xml.zope.org/namespaces/metal"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>Test RenderJS UI</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr> +</thead><tbody> +<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" /> + +<!-- Clean Up --> +<tr> + <td>open</td> + <td>${base_url}/foo_module/ListBoxZuite_reset</td> + <td></td> +</tr> +<tr> + <td>assertTextPresent</td> + <td>Reset Successfully.</td> + <td></td> +</tr> + +<!-- Initialize --> +<tr> + <td>open</td> + <td>${base_url}/web_site_module/renderjs_runner/#/foo_module</td> + <td></td> +</tr> +<tr> + <td>waitForElementPresent</td> + <td>//a[@data-i18n='Add']</td> + <td></td> +</tr> +<tr> + <td>click</td> + <td>link=Add</td> + <td></td> +</tr> + +<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/submit_dialog" /> + +<tr> + <td>waitForElementPresent</td> + <td>//a[@data-i18n='Views']</td> + <td></td> +</tr> +<tr> + <td>click</td> + <td>//a[@data-i18n='Views']</td> + <td></td> +</tr> + + +<tr> + <td>storeLocation</td> + <td>url</td> + <td></td> +</tr> + + +<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" /> + +<tr> + <td>open</td> + <td>${url}</td> + <td></td> +</tr> + + +<tr> + <td>waitForElementPresent</td> + <td>//a[@data-i18n='Relation Fields']</td> + <td></td> +</tr> + +<tr> + <td>click</td> + <td>//a[@data-i18n='Relation Fields']</td> + <td></td> +</tr> + +<tr> + <td>waitForElementPresent</td> + <td>//input[@name='field_my_foo_category_title']</td> + <td></td> +</tr> + +<tr> + <td>type</td> + <td>//input[@name='field_my_foo_category_title']</td> + <td>a1</td> +</tr> + +<tr> + <td>fireEvent</td> + <td>//input[@name='field_my_foo_category_title']</td> + <td>input</td> +</tr> + +<tr> + <td>waitForElementPresent</td> + <td>//li[@data-relative-url='portal_categories/foo_category/a/a1']</td> + <td></td> +</tr> + + +<tr> + <td>fireEvent</td> + <td>//input[@name='field_my_foo_category_title']</td> + <td>blur</td> +</tr> + +<tr> + <td>click</td> + <td>//li[@data-relative-url='portal_categories/foo_category/a/a1']</td> + <td></td> +</tr> + + + +<tr> + <td>waitForElementPresent</td> + <td>//div[@data-gadget-scope='field_my_bar_category_title_list']//fieldset[1]//input</td> + <td></td> +</tr> + + +<tr> + <td>type</td> + <td>//div[@data-gadget-scope='field_my_bar_category_title_list']//fieldset[1]//input</td> + <td>A New Foo</td> +</tr> + +<tr> + <td>fireEvent</td> + <td>//div[@data-gadget-scope='field_my_bar_category_title_list']//fieldset[1]//input</td> + <td>input</td> +</tr> + +<tr> + <td>waitForElementPresent</td> + <td>//li[@name="Foo"] + <td></td> +</tr> + + +<tr> + <td>fireEvent</td> + <td>//div[@data-gadget-scope='field_my_bar_category_title_list']//fieldset[1]//input</td> + <td>blur</td> +</tr> + +<tr> + <td>click</td> + <td>//li[@name="Foo"] + <td></td> +</tr> + + + + + + +<tr> + <td>waitForElementPresent</td> + <td>//div[@data-gadget-scope='field_my_bar_category_title_list']//fieldset[2]//input</td> + <td></td> +</tr> + + +<tr> + <td>verifyElementPresent</td> + <td>//div[@data-gadget-scope='field_my_bar_category_title_list']//fieldset[2]//input</td> + <td></td> +</tr> + + +<tr> + <td>type</td> + <td>//input[@name="field_my_title"]</td> + <td>TEST</td> +</tr> + + + +<tr> + <td>click</td> + <td>//input[@name="field_my_frozen"]</td> + <td></td> +</tr> + +<tr> + <td>assertChecked</td> + <td>//input[@name="field_my_frozen"]</td> + <td></td> +</tr> + +<tr> + <td colspan="3"><b>Click on the search button of the empty multi relation field</b></td> +</tr> +<tr> + <td>click</td> + <td>//div[@data-gadget-scope='field_my_bar_category_title_list']//fieldset[2]//button</td> + <td></td> +</tr> + +<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/triggle_filter_and" /> +<tal:block tal:define="filter_section_configuration python: {'index': 0}"> + <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/remove_filter_section" /> +</tal:block> +<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/submit_filter" /> + +<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded" /> +<tal:block tal:define="parsed_query python: ''; + search_query python: ''"> + <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/check_search_in_form_list" /> +</tal:block> + +<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_listbox_loaded" /> +<tr> + <td>click</td> + <td>//tbody/tr[1]//a</td> + <td></td> +</tr> + +<tr> + <td>waitForElementPresent</td> + <td>//button[@class="responsive ui-btn ui-icon-warning ui-btn-icon-left ui-first-child ui-last-child "]</td> + <td></td> +</tr> + + +<tr> + <td>verifyValue</td> + <td>//input[@name="field_my_title"]</td> + <td>TEST</td> +</tr> + + +<tr> + <td>assertChecked</td> + <td>//input[@name="field_my_frozen"]</td> + <td></td> +</tr> + + +<tr> + <td>verifyValue</td> + <td>//div[@data-gadget-scope='field_my_bar_category_title_list']//fieldset[1]//input</td> + <td>A New Foo</td> +</tr> + + + + + +<tr> + <td>verifyValue</td> + <td>//div[@data-gadget-scope='field_my_bar_category_title_list']//fieldset[2]//input</td> + <td>2</td> +</tr> + +<tr> + <td>verifyElementPresent</td> + <td>//div[@data-gadget-scope='field_my_bar_category_title_list']//fieldset[3]</td> + <td></td> +</tr> + +<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/save" /> + +<tr> + <td>verifyValue</td> + <td>//div[@data-gadget-scope='field_my_bar_category_title_list']//fieldset[1]//input</td> + <td>A New Foo</td> +</tr> + +<tr> + <td>verifyValue</td> + <td>//div[@data-gadget-scope='field_my_bar_category_title_list']//fieldset[2]//input</td> + <td>TEST</td> +</tr> + +<tr> + <td>verifyElementPresent</td> + <td>//div[@data-gadget-scope='field_my_bar_category_title_list']//fieldset[3]</td> + <td></td> +</tr> + +</tbody></table> +</body> +</html> \ No newline at end of file diff --git a/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_relation_field_zuite/testRelationFieldEmptySearchWithListbox.xml b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_relation_field_zuite/testRelationFieldEmptySearchWithListbox.xml new file mode 100644 index 0000000000000000000000000000000000000000..7c15c2f9cde38c262a9a5e5017e7a81d3720c0a3 --- /dev/null +++ b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_relation_field_zuite/testRelationFieldEmptySearchWithListbox.xml @@ -0,0 +1,58 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="ZopePageTemplate" module="Products.PageTemplates.ZopePageTemplate"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_bind_names</string> </key> + <value> + <object> + <klass> + <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_asgns</string> </key> + <value> + <dictionary> + <item> + <key> <string>name_subpath</string> </key> + <value> <string>traverse_subpath</string> </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>text/html</string> </value> + </item> + <item> + <key> <string>expand</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>testRelationFieldEmptySearchWithListbox</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> diff --git a/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_relation_field_zuite/testRelationFieldEmptySearchWithListbox.zpt b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_relation_field_zuite/testRelationFieldEmptySearchWithListbox.zpt new file mode 100644 index 0000000000000000000000000000000000000000..0fab5b9867ef01e810242daf12818c131e709808 --- /dev/null +++ b/bt5/erp5_web_renderjs_ui_test/PathTemplateItem/portal_tests/renderjs_ui_relation_field_zuite/testRelationFieldEmptySearchWithListbox.zpt @@ -0,0 +1,208 @@ +<html xmlns:tal="http://xml.zope.org/namespaces/tal" + xmlns:metal="http://xml.zope.org/namespaces/metal"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>Test RenderJS UI</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">Test RenderJS UI</td></tr> +</thead><tbody> +<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/init" /> + +<!-- Clean Up --> +<tr> + <td>open</td> + <td>${base_url}/foo_module/ListBoxZuite_reset</td> + <td></td> +</tr> +<tr> + <td>assertTextPresent</td> + <td>Reset Successfully.</td> + <td></td> +</tr> + +<!-- Initialize --> +<tr> + <td>open</td> + <td>${base_url}/web_site_module/renderjs_runner/#/foo_module</td> + <td></td> +</tr> +<tr> + <td>waitForElementPresent</td> + <td>//a[@data-i18n='Add']</td> + <td></td> +</tr> +<tr> + <td>click</td> + <td>link=Add</td> + <td></td> +</tr> + +<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/submit_dialog" /> + +<tr> + <td>waitForElementPresent</td> + <td>//a[@data-i18n="Views"]</td> + <td></td> +</tr> + + +<tr> + <td>click</td> + <td>//a[@data-i18n="Views"]</td> + <td></td> +</tr> + + +<tr> + <td>storeLocation</td> + <td>url</td> + <td></td> +</tr> + + +<tal:block metal:use-macro="here/Zuite_CommonTemplate/macros/wait_for_activities" /> + +<tr> + <td>open</td> + <td>${url}</td> + <td></td> +</tr> + + +<tr> + <td>waitForElementPresent</td> + <td>//a[@data-i18n="Relation Fields"]</td> + <td></td> +</tr> + + +<tr> + <td>click</td> + <td>//a[@data-i18n="Relation Fields"]</td> + <td></td> +</tr> + +<tr> + <td>waitForElementPresent</td> + <td>//input[@name="field_my_successor_title"]</td> + <td></td> +</tr> + + + +<tr> + <td>type</td> + <td>//input[@name='field_my_foo_category_title']</td> + <td>a1</td> +</tr> + +<tr> + <td>fireEvent</td> + <td>//input[@name='field_my_foo_category_title']</td> + <td>input</td> +</tr> + +<tr> + <td>waitForElementPresent</td> + <td>//li[@data-relative-url='portal_categories/foo_category/a/a1']</td> + <td></td> +</tr> + + +<tr> + <td>fireEvent</td> + <td>//input[@name='field_my_foo_category_title']</td> + <td>blur</td> +</tr> + +<tr> + <td>click</td> + <td>//li[@data-relative-url='portal_categories/foo_category/a/a1']</td> + <td></td> +</tr> + + +<tr> + <td>type</td> + <td>//input[@name="field_my_title"]</td> + <td>TEST</td> +</tr> + +<tr> + <td colspan="3"><b>Click on the search button of the empty relation field</b></td> +</tr> +<tr> + <td>click</td> + <td>//div[@data-gadget-scope="field_my_successor_title"]//button</td> + <td></td> +</tr> + +<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/triggle_filter_and" /> +<tal:block tal:define="filter_section_configuration python: {'index': 0}"> + <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/remove_filter_section" /> +</tal:block> +<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/submit_filter" /> + +<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/wait_for_content_loaded" /> +<tal:block tal:define="parsed_query python: ''; + search_query python: ''"> + <tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/check_search_in_form_list" /> +</tal:block> + +<tr> + <td>waitForElementPresent</td> + <td>//a[@data-i18n="Previous"]</td> + <td></td> +</tr> + +<tr> + <td>waitForElementPresent</td> + <td>//tbody/tr[1]</td> + <td></td> +</tr> + +<tr> + <td>click</td> + <td>//tbody/tr[1]//a</td> + <td></td> +</tr> + + +<tr> + <td>waitForElementPresent</td> + <td>//button[@class="responsive ui-btn ui-icon-warning ui-btn-icon-left ui-first-child ui-last-child "]</td> + <td></td> +</tr> + + +<tr> + <td>verifyValue</td> + <td>//input[@name="field_my_successor_title"]</td> + <td>2</td> +</tr> + +<tr> + <td>verifyValue</td> + <td>//input[@name="field_my_title"]</td> + <td>TEST</td> +</tr> + +<tal:block metal:use-macro="here/Zuite_CommonTemplateForRenderjsUi/macros/save" /> + +<tr> + <td>verifyValue</td> + <td>//input[@name="field_my_successor_title"]</td> + <td>TEST</td> +</tr> +<tr> + <td>verifyValue</td> + <td>//input[@name="field_my_title"]</td> + <td>TEST</td> +</tr> + +</tbody></table> +</body> +</html> \ No newline at end of file