diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_filtereditor_html.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_filtereditor_html.xml new file mode 100644 index 0000000000000000000000000000000000000000..f3bc6ff67218af696327c67404c209a18437f9a8 --- /dev/null +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_filtereditor_html.xml @@ -0,0 +1,404 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Web Page" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Access_contents_information_Permission</string> </key> + <value> + <tuple> + <string>Anonymous</string> + <string>Assignee</string> + <string>Assignor</string> + <string>Associate</string> + <string>Auditor</string> + <string>Manager</string> + <string>Owner</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Add_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Assignee</string> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Change_local_roles_Permission</string> </key> + <value> + <tuple> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Modify_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Assignee</string> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_View_Permission</string> </key> + <value> + <tuple> + <string>Anonymous</string> + <string>Assignee</string> + <string>Assignor</string> + <string>Associate</string> + <string>Auditor</string> + <string>Manager</string> + <string>Owner</string> + </tuple> + </value> + </item> + <item> + <key> <string>content_md5</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>content_type</string> </key> + <value> <string>text/html</string> </value> + </item> + <item> + <key> <string>default_reference</string> </key> + <value> <string>gadget_erp5_filter_editor.html</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>rjs_gadget_erp5_filtereditor_html</string> </value> + </item> + <item> + <key> <string>language</string> </key> + <value> <string>en</string> </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Web Page</string> </value> + </item> + <item> + <key> <string>short_title</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>text_content</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +<!DOCTYPE html>\n +<html>\n + <head>\n + <meta charset="utf-8" />\n + <meta name="viewport" content="width=device-width, user-scalable=no" />\n + <title>ERP5 Filter Editor</title>\n +\n + <!-- renderjs -->\n + <script src="rsvp.js"></script>\n + <script src="renderjs.js"></script>\n + <script src="handlebars.js"></script>\n +\n + <!-- custom script -->\n + <script src="gadget_erp5_filter_editor.js"></script>\n + \n + <script id="option-template" type="text/x-handlebars-template">\n + <option value="{{value}}" data-i18n="{{text}}">{{text}}</option>\n + </script>\n +\n + <script id="selected-option-template" type="text/x-handlebars-template">\n + <option selected="selected" data-i18n="{{text}}" value="{{value}}">{{text}}</option>\n + </script>\n +\n + \n + <script id="option-template" type="text/x-handlebars-template">\n + <option value="{{value}}" data-i18n="{{text}}">{{text}}</option>\n + </script>\n + \n + <script id="selected-option-template" type="text/x-handlebars-template">\n + <option selected="selected" data-i18n="{{text}}" value="{{value}}">{{text}}</option>\n + </script>\n + \n + <script id="filter-template" type="text/x-handlebars-template">\n + <div class="header">\n + <form class="delete">\n + <button type="submit" class="close ui-btn-c ui-override-theme ui-btn ui-icon-delete ui-btn-icon-notext"></button>\n + </form>\n + <h1 data-i18n="Filter Editor">Filter Editor</h1>\n + \n + <form class="submit">\n + <button type="submit" class="submit ui-btn-c ui-override-theme ui-btn ui-icon-reorder ui-btn-icon-notext"></button>\n + </form>\n + </div>\n + \n + <div class="container">\n + <h1 data-i18n="Custom Filter">Custom Filter</h1>\n + \n + <fieldset data-role="ui_controlgroup">\n + <label for="radio-a">All criterions(AND)</label>\n + <input type="radio" name="radio_filter" id="radio_a" class="and" checked></input>\n + <label for="radio-b">At least one(OR)</label>\n + <input type="radio" name="radio_filter" id="radio_b" class="or"></input>\n + </fieldset>\n + <div class="filter_item_container">\n + <form class="plus">\n + <button type="submit" class="plus ui-btn-c ui-override-theme ui-btn ui-icon-plus ui-btn-icon-notext"></button>\n + </div>\n + </form>\n + </div>\n + \n + <div class="predefined_filter">\n + <h1 data-i18n="Predefined Filter">Predefined Filter</h1>\n + </div>\n +\n + </script>\n + \n + </head>\n + <body>\n + <div class="jqm-navmenu-panel"></div>\n + </body>\n +</html> + +]]></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Gadget Erp5 Filter Editor</string> </value> + </item> + <item> + <key> <string>version</string> </key> + <value> <string>001</string> </value> + </item> + <item> + <key> <string>workflow_history</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary> + <item> + <key> <string>document_publication_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>edit_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + <item> + <key> <string>processing_status_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> + </pickle> + <pickle> + <tuple> + <none/> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>publish_alive</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> + <global name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1439819451.71</float> + <string>UTC</string> + </tuple> + </state> + </object> + </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>published_alive</string> </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> + </pickle> + <pickle> + <tuple> + <none/> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>edit</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>serial</string> </key> + <value> <string>945.13851.42970.21913</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>1440425765.38</float> + <string>UTC</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> + </pickle> + <pickle> + <tuple> + <none/> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>external_processing_state</string> </key> + <value> <string>empty</string> </value> + </item> + <item> + <key> <string>serial</string> </key> + <value> <string>0.0.0.0</string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> + <global name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1439819302.25</float> + <string>UTC</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_filtereditor_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_filtereditor_js.xml new file mode 100644 index 0000000000000000000000000000000000000000..97b6de17274a5e0ce7d7b91339c1cb927c7cd153 --- /dev/null +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_filtereditor_js.xml @@ -0,0 +1,658 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Web Script" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Access_contents_information_Permission</string> </key> + <value> + <tuple> + <string>Anonymous</string> + <string>Assignee</string> + <string>Assignor</string> + <string>Associate</string> + <string>Auditor</string> + <string>Manager</string> + <string>Owner</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Add_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Assignee</string> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Change_local_roles_Permission</string> </key> + <value> + <tuple> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Modify_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Assignee</string> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_View_Permission</string> </key> + <value> + <tuple> + <string>Anonymous</string> + <string>Assignee</string> + <string>Assignor</string> + <string>Associate</string> + <string>Auditor</string> + <string>Manager</string> + <string>Owner</string> + </tuple> + </value> + </item> + <item> + <key> <string>content_md5</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>default_reference</string> </key> + <value> <string>gadget_erp5_filter_editor.js</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>rjs_gadget_erp5_filtereditor_js</string> </value> + </item> + <item> + <key> <string>language</string> </key> + <value> <string>en</string> </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Web Script</string> </value> + </item> + <item> + <key> <string>short_title</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>text_content</string> </key> + <value> <string encoding="cdata"><![CDATA[ + +/*jslint nomen: true, indent: 2, maxerr: 3 */\n +/*global window, rJS, Handlebars, jQuery, RSVP, loopEventListener, document */\n +(function (window, rJS, Handlebars, $, RSVP, loopEventListener) {\n + "use strict";\n +\n + /////////////////////////////////////////////////////////////////\n + // templates\n + /////////////////////////////////////////////////////////////////\n + // Precompile templates while loading the first gadget instance\n + var gadget_klass = rJS(window),\n + option_source = gadget_klass.__template_element\n + .getElementById("option-template")\n + .innerHTML,\n + option_template = Handlebars.compile(option_source),\n +\n + selected_option_source = gadget_klass.__template_element\n + .getElementById("selected-option-template")\n + .innerHTML,\n + selected_option_template = Handlebars.compile(selected_option_source),\n +\n + filter_source = gadget_klass.__template_element\n + .getElementById("filter-template")\n + .innerHTML,\n + filter_template = Handlebars.compile(filter_source);\n +\n +\n +\n + function submitFilterQuery(gadget) {\n + var i,\n + operator,\n + query = "",\n + value,\n + select,\n + filterforms = gadget.props.element.querySelectorAll(".filterForm"),\n + and = gadget.props.element.querySelector(".and");\n + operator = and.checked ? " AND " : " OR ";\n + for (i = 0; i < filterforms.length; i += 1) {\n + if (filterforms[i][3].value !== "") {\n + if (i !== 0) {\n + query += operator;\n + }\n + value = filterforms[i][3].value;\n + select = filterforms[i][2][filterforms[i][2].selectedIndex].value;\n + if (select === "keyword" && filterforms[i][1][filterforms[i][1].selectedIndex].value !== "Searchable Text") {\n + value = "%" + value + "%";\n + } else {\n + value = select + value;\n + }\n + if (filterforms[i][1][filterforms[i][1].selectedIndex].value === "Searchable Text") {\n + query += value;\n + } else {\n + query += filterforms[i][1][filterforms[i][1].selectedIndex].value + ":" + value;\n + }\n + }\n + }\n + return new RSVP.Queue()\n + .push(function () {\n + return gadget.pleasePublishMyState({\n + "extended_search": query\n + });\n + })\n + .push(function (url) {\n + gadget.props.jelement.panel("toggle");\n + return gadget.pleaseRedirectMyHash(url);\n + });\n + }\n +\n +\n +\n +\n +\n + function createFilterItem(gadget, select, input_value) {\n + var container = document.createElement("form"),\n + minus_button = document.createElement("input"),\n + select_reference = document.createElement("select"),\n + i,\n + tmp = "",\n + default_select = "Searchable Text",\n + select_options,\n + select_options_value,\n + options_map = {\n + "date_float": ["Equals To", "Greater Than", "Less Than", "Not Greater Than", "Not Less Than"],\n + "date_float_value": ["", ">", "<", "<=", ">="],\n + "searchable_text": ["Contain"],\n + "searchable_text_value": [""],\n + "other": ["Exact Match", "keyword"],\n + "other_value": ["", "keyword"]\n + },\n +\n + text = document.createElement("input"),\n + select_operator = document.createElement("select");\n +\n + container.appendChild(minus_button);\n + container.appendChild(select_reference);\n + container.appendChild(select_operator);\n + text.setAttribute("type", "text");\n + text.setAttribute("value", input_value || "");\n + minus_button.setAttribute("class", "minus_button");\n + minus_button.setAttribute("type", "button");\n + container.appendChild(text);\n + container.setAttribute("class", "filterForm");\n +\n +\n +\n +\n + function createSelectOperator(event) {\n + var html = "",\n + j;\n + if (event.target.value.indexOf(\'date\') !== -1 ||\n + event.target.value.indexOf(\'quantity\') !== -1 ||\n + event.target.value.indexOf(\'price\') !== -1) {\n + select_options = options_map.date_float;\n + select_options_value = options_map.date_float_value;\n + } else if (event.target.value === "Searchable Text") {\n + select_options = options_map.searchable_text;\n + select_options_value = options_map.searchable_text_value;\n + } else {\n + select_options = options_map.other;\n + select_options_value = options_map.other_value;\n + }\n +\n + for (j = 0; j < select_options.length; j += 1) {\n + html += option_template({\n + value: select_options_value[j],\n + text: select_options[j]\n + });\n + }\n + select_operator.innerHTML = html;\n + }\n +\n +\n + tmp = "";\n + tmp += option_template({\n + value: "Searchable Text",\n + text: "Searchable Text"\n + });\n + for (i = 0; i < gadget.props.options.length; i += 1) {\n + if (select === gadget.props.options[i][0]) {\n + default_select = gadget.props.options[i][1];\n + tmp += selected_option_template({\n + value: gadget.props.options[i][0],\n + text: gadget.props.options[i][1]\n + });\n + } else {\n + tmp += option_template({\n + value: gadget.props.options[i][0],\n + text: gadget.props.options[i][1]\n + });\n + }\n + }\n +\n + select_reference.innerHTML = tmp;\n +\n + createSelectOperator({"target": {"value": default_select}});\n + loopEventListener(\n + minus_button,\n + "click",\n + false,\n + function () {\n + container.parentElement.removeChild(container);\n + }\n + );\n + loopEventListener(\n + select_reference,\n + "change",\n + false,\n + createSelectOperator\n + );\n + loopEventListener(\n + container,\n + "submit",\n + false,\n + function () {\n + return submitFilterQuery(gadget);\n + }\n + );\n + return container;\n + }\n +\n +\n + gadget_klass\n + /////////////////////////////////////////////////////////////////\n + // ready\n + /////////////////////////////////////////////////////////////////\n + // Init local properties\n + .ready(function (g) {\n + g.props = {};\n + })\n +\n + //////////////////////////////////////////////\n + // acquired method\n + //////////////////////////////////////////////\n + .declareAcquiredMethod("translateHtml", "translateHtml")\n + .declareAcquiredMethod("whoWantToDisplayThisFrontPage", "whoWantToDisplayThisFrontPage")\n + .declareAcquiredMethod("pleasePublishMyState", "pleasePublishMyState")\n + .declareAcquiredMethod("pleaseRedirectMyHash", "pleaseRedirectMyHash")\n +\n + // Assign the element to a variable\n + .ready(function (g) {\n + return g.getElement()\n + .push(function (element) {\n + g.props.element = element;\n + g.props.jelement = $(element.querySelector("div"));\n + });\n + })\n +\n + .ready(function (g) {\n + g.props.jelement.panel({\n + display: "overlay",\n + position: "right",\n + theme: "c"\n + });\n + })\n +\n + .ready(function (g) {\n + return new RSVP.Queue()\n + .push(function () {\n + var tmp = filter_template();\n + return g.translateHtml(tmp);\n + })\n + .push(function (translated_html) {\n + g.props.jelement.html(translated_html);\n + g.props.jelement.trigger("create");\n + });\n + })\n +\n + /////////////////////////////////////////////////////////////////\n + // declared methods\n + /////////////////////////////////////////////////////////////////\n + .declareAcquiredMethod("jio_getAttachment", "jio_getAttachment")\n + .declareMethod(\'toggle\', function () {\n + var gadget = this,\n + options = gadget.props.options;\n + gadget.props.jelement.panel("toggle");\n + if (gadget.props.element.querySelector(".filterForm") === null || gadget.props.change) {\n + gadget.props.change = false;\n + return new RSVP.Queue()\n + .push(function () {\n + return gadget.jio_getAttachment({"_id": options.jio_key, "_attachment": options.view});\n + })\n + .push(function (result) {\n + gadget.props.options = result.data._embedded._view.listbox.column_list;\n + return createFilterItem(gadget);\n + })\n + .push(function (item) {\n + var container = gadget.props.element.querySelector(".filter_item_container");\n + container.insertBefore(item, container.lastChild);\n + });\n + }\n + })\n +\n + .declareMethod(\'render\', function (options) {\n + var container = this.props.element.querySelector(".filter_item_container"),\n + i,\n + gadget = this,\n + item,\n + select_list,\n + query;\n + while (container.firstChild !== container.lastChild) {\n + container.removeChild(container.firstChild);\n + }\n + this.props.options = options;\n + if (options.filterEditor !== undefined || options.pg !== undefined) {\n +\n + query = options.filterEditor ? options.filterEditor.extended_search : options.pg.fg.erp5_searchfield.extended_search;\n + return new RSVP.Queue()\n + .push(function () {\n + return gadget.jio_getAttachment({"_id": options.jio_key, "_attachment": options.view});\n + })\n + .push(function (result) {\n + gadget.props.options = result.data._embedded._view.listbox.column_list;\n + var query_list = query.split(" AND ");\n +\n + for (i = 0; i < query_list.length; i += 1) {\n + select_list = query_list[i].split(":");\n + if (select_list.length === 1) {\n + item = createFilterItem(gadget, "Searchable Text", query_list[i]);\n + } else {\n + item = createFilterItem(gadget, select_list[0], select_list[1]);\n + }\n + container.insertBefore(item, container.lastChild);\n + }\n + });\n + }\n +\n + })\n +\n + /////////////////////////////////////////////////////////////////\n + // declared services\n + /////////////////////////////////////////////////////////////////\n + .declareService(function () {\n + var gadget = this;\n + function closeFilterEditor() {\n + gadget.props.jelement.panel("toggle");\n + }\n + function plusItem() {\n + return new RSVP.Queue()\n + .push(function () {\n + return createFilterItem(gadget);\n + })\n + .push(function (item) {\n + var container = gadget.props.element.querySelector(".filter_item_container");\n + container.insertBefore(item, container.lastChild);\n + });\n + }\n +\n + loopEventListener(\n + gadget.props.element.querySelector(".plus"),\n + "submit",\n + false,\n + plusItem\n + );\n + loopEventListener(\n + gadget.props.element.querySelector(".delete"),\n + "submit",\n + false,\n + closeFilterEditor\n + );\n + loopEventListener(\n + gadget.props.element.querySelector(".submit"),\n + "submit",\n + false,\n + function () {\n + return submitFilterQuery(gadget);\n + }\n + );\n + });\n +\n +}(window, rJS, Handlebars, jQuery, RSVP, loopEventListener)); + +]]></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Gadget Erp5 Filter Editor JS</string> </value> + </item> + <item> + <key> <string>version</string> </key> + <value> <string>001</string> </value> + </item> + <item> + <key> <string>workflow_history</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary> + <item> + <key> <string>document_publication_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>edit_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + <item> + <key> <string>processing_status_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> + </pickle> + <pickle> + <tuple> + <none/> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>publish_alive</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>time</string> </key> + <value> + <object> + <klass> + <global name="DateTime" module="DateTime.DateTime"/> + </klass> + <tuple> + <none/> + </tuple> + <state> + <tuple> + <float>1439819594.24</float> + <string>UTC</string> + </tuple> + </state> + </object> + </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>published_alive</string> </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> + </pickle> + <pickle> + <tuple> + <none/> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>edit</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>zope</string> </value> + </item> + <item> + <key> <string>comment</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>error_message</string> </key> + <value> <string></string> </value> + </item> + <item> + <key> <string>serial</string> </key> + <value> <string>945.18296.32311.54766</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>1440435953.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>1439819567.59</float> + <string>UTC</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_html.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_html.xml index eace3ec54fc78d878a95270e66f2fe80b38407c2..d3239d65ceb0a52c64724f9458773a4103927010 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_html.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_html.xml @@ -158,6 +158,13 @@ data-gadget-scope="panel"\n data-gadget-sandbox="public"></div>\n \n + + + <div data-gadget-url="gadget_erp5_filter_editor.html"\n + data-gadget-scope="filterEditor"\n + data-gadget-sandbox="public"></div>\n + \n + <div role="main" class="ui-content gadget-content"></div>\n </div>\n \n @@ -303,7 +310,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>945.54056.18010.56797</string> </value> + <value> <string>945.18332.59164.9181</string> </value> </item> <item> <key> <string>state</string> </key> @@ -321,8 +328,8 @@ </tuple> <state> <tuple> - <float>1442581000.11</float> - <string>GMT</string> + <float>1440437597.42</float> + <string>UTC</string> </tuple> </state> </object> diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.xml index 5c7007e39eea426b7e715bde95241b0977ba241f..ee87abb4917aee6f926b075a3418dedd8e298de0 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_js.xml @@ -495,6 +495,9 @@ .allowPublicAcquisition(\'triggerPanel\', function () {\n return route(this, "panel", "toggle");\n })\n + .allowPublicAcquisition(\'triggerFilterEditor\', function () {\n + return route(this, "filterEditor", "toggle");\n + })\n \n .allowPublicAcquisition("jio_allDocs", function (param_list) {\n return callJioGadget(this, "allDocs", param_list);\n @@ -775,7 +778,7 @@ </item> <item> <key> <string>actor</string> </key> - <value> <string>romain</string> </value> + <value> <string>zope</string> </value> </item> <item> <key> <string>comment</string> </key> diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_listbox_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_listbox_js.xml index 746d62c2a6989661a1a87d4858b094b618561a82..a824b192a626acd788873794aa74a809992c28d3 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_listbox_js.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_listbox_js.xml @@ -214,7 +214,11 @@ \n if (url_query) {\n //query_string = field_json.column_list.reduce(buildQueryString, \' AND (\').replace(new RegExp("OR " + \'$\'), \')\');\n - query_string = \' AND \' + url_query;\n + if (field_json.list_method_template === undefined) {\n + query_string = \' AND \' + url_query;\n + } else {\n + query_string = url_query;\n + }\n }\n \n for (i = 0; i < field_json.column_list.length; i += 1) {\n @@ -604,7 +608,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>946.44927.40202.16725</string> </value> + <value> <string>945.18094.21629.29286</string> </value> </item> <item> <key> <string>state</string> </key> @@ -622,7 +626,7 @@ </tuple> <state> <tuple> - <float>1445939419.71</float> + <float>1440435604.51</float> <string>UTC</string> </tuple> </state> diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_formpage_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_formpage_js.xml index 0a8b1cdfc7a359261ec0a9b9ef29e2ad5d3a3e07..e6aa3cca208aa261b257703698b019d9d2b1e82e 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_formpage_js.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_formpage_js.xml @@ -171,7 +171,13 @@ });\n })\n .push(function (result) {\n - var sub_options = options.fg || {};\n + var sub_options = options.fg;\n + if (sub_options === undefined) {\n + sub_options = {};\n + if(options.filterEditor) {\n + sub_options.erp5_searchfield = options.filterEditor;\n + }\n + }\n sub_options.erp5_document = erp5_document;\n sub_options.form_definition = erp5_form;\n sub_options.view = options.view;\n @@ -317,7 +323,7 @@ </item> <item> <key> <string>actor</string> </key> - <value> <string>romain</string> </value> + <value> <string>zope</string> </value> </item> <item> <key> <string>comment</string> </key> @@ -331,7 +337,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>946.30055.63361.39150</string> </value> + <value> <string>945.12418.34036.47547</string> </value> </item> <item> <key> <string>state</string> </key> @@ -349,8 +355,8 @@ </tuple> <state> <tuple> - <float>1445267203.04</float> - <string>GMT</string> + <float>1440083034.81</float> + <string>UTC</string> </tuple> </state> </object> diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searchfield_html.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searchfield_html.xml index f1926bb7b497e923dadf54437f1e3cd193cc6ed5..569b617bcfe4608fbd96611d0ac096093dc7f387 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searchfield_html.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searchfield_html.xml @@ -120,24 +120,38 @@ <!-- custom script -->\n <script src="gadget_erp5_searchfield.js"></script>\n \n - <!-- XXX widget-status is bad! -->\n - <script id="panel-template" type="text/x-handlebars-template">\n - <div class="center">\n - <div class="ui-field-contain">\n - <div class="ui-input-text ui-body-{{widget_theme}} ui-corner-all ui-shadow-inset ui-input-has-clear {{widget_status_class}}">\n - <input type="text" data-enhanced="true" value="{{widget_value}}" name="search" {{widget_status_attribute}} />\n - <div class="ui-btn ui-input-clear ui-input-btn ui-corner-all ui-icon-search ui-btn-icon-notext" data-i18n="[node]header-submit">\n - Submit<input data-enhanced="true" type="submit" data-i18n="[value]header-submit" value="Submit" {{widget_status_attribute}} />\n + <script id="panel-template" type="text/x-handlebars-template">\n + <div class="field_container">\n + <div class="ui-field-contain">\n + <div class="css-compatability-helper">\n + <div class="ui-input-text ui-body-{{theme}} ui-input-has-icon ui-corner-all ui-shadow-inset ui-input-has-clear {{status_class}} {{css_class}}">\n + <form class="save_form document_form">\n + <input type="text" data-enhanced="true" value="{{widget_value}}" name="search" {{widget_status_attribute}} />\n + <div class="ui-btn ui-input-clear ui-input-btn ui-corner-all ui-icon-search ui-btn-icon-notext" data-i18n="[node]{{search_i18n}}">\n + {{search_i18n}}<input tabindex="-1" data-role="button" data-enhanced="true" type="submit" data-i18n="[value]{{search_i18n}}" value=" "/>\n + </div>\n + </form>\n </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 + \n + </form>\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 </script>\n +\n +\n +\n + \n \n </head>\n <body>\n - <div class="save_form document_form"></div>\n + <div class="container"></div>\n </body>\n </html> @@ -262,7 +276,7 @@ </item> <item> <key> <string>actor</string> </key> - <value> <string>romain</string> </value> + <value> <string>zope</string> </value> </item> <item> <key> <string>comment</string> </key> @@ -276,7 +290,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>945.50880.23560.7150</string> </value> + <value> <string>945.13789.16491.47428</string> </value> </item> <item> <key> <string>state</string> </key> @@ -294,8 +308,8 @@ </tuple> <state> <tuple> - <float>1442998364.27</float> - <string>GMT</string> + <float>1440168925.51</float> + <string>UTC</string> </tuple> </state> </object> diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searchfield_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searchfield_js.xml index c3d110322e56c9772943fd7e149d86254db28140..2be8188da7393df4e0a0d537481ca2df784deebc 100644 --- a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searchfield_js.xml +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_searchfield_js.xml @@ -135,7 +135,9 @@ // acquired method\n //////////////////////////////////////////////\n .declareAcquiredMethod("translateHtml", "translateHtml")\n -\n + .declareAcquiredMethod("pleasePublishMyState", "pleasePublishMyState")\n + .declareAcquiredMethod("pleaseRedirectMyHash", "pleaseRedirectMyHash")\n + .declareAcquiredMethod("triggerFilterEditor", "triggerFilterEditor")\n /////////////////////////////////////////////////////////////////\n // declared methods\n /////////////////////////////////////////////////////////////////\n @@ -161,7 +163,7 @@ }));\n })\n .push(function (my_translated_html) {\n - search_gadget.props.element.querySelector("div").innerHTML =\n + search_gadget.props.element.querySelector(".container").innerHTML =\n my_translated_html;\n return search_gadget;\n });\n @@ -173,6 +175,42 @@ \n result[input.getAttribute(\'name\')] = input.value;\n return result;\n + })\n +\n + .declareService(function () {\n + var gadget = this;\n +\n + function filterSubmit(evt) {\n + return gadget.triggerFilterEditor();\n + }\n +\n + function formSubmit(evt) {\n + return new RSVP.Queue()\n + .push(function () {\n + return gadget.getContent();\n + })\n + .push(function (data) {\n + return gadget.pleasePublishMyState({\n + "extended_search": data.search\n + });\n + })\n + .push(function (url) {\n + return gadget.pleaseRedirectMyHash(url);\n + });\n + }\n + // Listen to form submit\n + loopEventListener(\n + gadget.props.element.querySelector(\'.save_form\'),\n + \'submit\',\n + false,\n + formSubmit\n + );\n + loopEventListener(\n + gadget.props.element.querySelector(\'.filter_form\'),\n + \'submit\',\n + false,\n + filterSubmit\n + );\n });\n \n }(window, rJS, RSVP, loopEventListener, Handlebars));</string> </value> @@ -310,7 +348,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>945.61050.10650.48093</string> </value> + <value> <string>945.13775.30295.64870</string> </value> </item> <item> <key> <string>state</string> </key> @@ -328,8 +366,8 @@ </tuple> <state> <tuple> - <float>1445265843.55</float> - <string>GMT</string> + <float>1440164409.77</float> + <string>UTC</string> </tuple> </state> </object>