From cf7535facb85ed57a8f6aa1723b013a30aef6775 Mon Sep 17 00:00:00 2001 From: Sven Franck <sven.franck@nexedi.com> Date: Wed, 8 Apr 2015 13:12:17 +0000 Subject: [PATCH] erp5_web_eproject: add website, bt5 specific front and panel gadgets --- .../gadget_e5g_eproject_page_front_html.xml | 345 ++++++++++ .../gadget_e5g_eproject_page_front_js.xml | 436 +++++++++++++ .../gadget_e5g_eproject_panel_html.xml | 406 ++++++++++++ .../gadget_e5g_eproject_panel_js.xml | 500 +++++++++++++++ .../web_site_module/e5g_eproject.xml | 602 ++++++++++++++++++ .../web_site_module/e5g_eproject/hateoas.xml | 313 +++++++++ 6 files changed, 2602 insertions(+) create mode 100644 bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_page_front_html.xml create mode 100644 bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_page_front_js.xml create mode 100644 bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_panel_html.xml create mode 100644 bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_panel_js.xml create mode 100644 bt5/erp5_web_eproject/PathTemplateItem/web_site_module/e5g_eproject.xml create mode 100644 bt5/erp5_web_eproject/PathTemplateItem/web_site_module/e5g_eproject/hateoas.xml diff --git a/bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_page_front_html.xml b/bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_page_front_html.xml new file mode 100644 index 0000000000..6871fb2090 --- /dev/null +++ b/bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_page_front_html.xml @@ -0,0 +1,345 @@ +<?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>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>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_e5g_eproject_page_front.html</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>gadget_e5g_eproject_page_front_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>E-Procurement Frontpage</title>\n +\n + <!-- renderjs -->\n + <script src="rsvp.js" type="text/javascript"></script>\n + <script src="renderjs.js" type="text/javascript"></script>\n +\n + <!-- custom script -->\n + <script src="gadget_e5g_eproject_page_front.js" type="text/javascript"></script>\n +\n + </head>\n + <body></body>\n +</html> + +]]></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Gadget E5G Eproject Frontpage</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</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>sven</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>1427379173.58</float> + <string>GMT</string> + </tuple> + </state> + </object> + </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>published</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>sven</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>942.5686.61187.33177</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>1428415528.2</float> + <string>GMT</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> <string>detect_converted_file</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>sven</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>converted</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>1427379121.44</float> + <string>GMT</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_page_front_js.xml b/bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_page_front_js.xml new file mode 100644 index 0000000000..6852c6e7ea --- /dev/null +++ b/bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_page_front_js.xml @@ -0,0 +1,436 @@ +<?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>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>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_e5g_eproject_page_front.js</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>gadget_e5g_eproject_page_front_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[ + +/*global window, rJS */\n +/*jslint nomen: true, indent: 2, maxerr: 3 */\n +(function (window, rJS, RSVP) {\n + "use strict";\n +\n +\n + /////////////////////////////////////////////////////////////////\n + // api\n + /////////////////////////////////////////////////////////////////\n +\n + // temporary options:\n + // gadget_href [string] url of gadget to load into a cell\n + // gadget_portal_link [string] portal type url (to avoid fetching)\n + // gadget_query [object] query parameters for data to display\n + // gadegt_title [string] title for listbox\n + // gadget_portal [string] portal type to link to\n +\n + var HARDCODED_GRID_LIST = [\n + [{\n + "gadget_href": "gadget_erp5_field_listbox_widget.html",\n + "gadget_portal_link": "#jio_key=project_module&view=view",\n + "gadget_title": "Projects",\n + "gadget_portal": "Project",\n + "gadget_query": {\n + "query": \'portal_type: "Project"\',\n + "select_list": ["title"],\n + "limit": [0, 5]\n + }\n + }, {\n + "gadget_href": "gadget_erp5_field_listbox_widget.html",\n + "gadget_portal_link": "#jio_key=task_module&view=view",\n + "gadget_title": "Tasks",\n + "gadget_portal": "Task",\n + "gadget_query": {\n + "query": \'portal_type: "Task"\',\n + "select_list": ["title"],\n + "limit": [0, 5]\n + }\n + }]\n + ];\n +\n + /////////////////////////////////////////////////////////////////\n + // some methods\n + /////////////////////////////////////////////////////////////////\n +\n + /////////////////////////////////////////////////////////////////\n + // RJS\n + /////////////////////////////////////////////////////////////////\n +\n + rJS(window)\n + \n + /////////////////////////////////////////////////////////////////\n + // ready\n + /////////////////////////////////////////////////////////////////\n + /////////////////////////////////////////////////////////////////\n + // ready\n + /////////////////////////////////////////////////////////////////\n + .ready(function (my_gadget) {\n + my_gadget.property_dict = {};\n + })\n + \n + .ready(function (my_gadget) {\n + return my_gadget.getElement()\n + .push(function (my_element) {\n + my_gadget.property_dict.element = my_element;\n + });\n + })\n +\n + /////////////////////////////////////////////////////////////////\n + // published methods\n + /////////////////////////////////////////////////////////////////\n +\n + /////////////////////////////////////////////////////////////////\n + // acquired methods\n + /////////////////////////////////////////////////////////////////\n +\n + /////////////////////////////////////////////////////////////////\n + // published methods\n + /////////////////////////////////////////////////////////////////\n + \n + /////////////////////////////////////////////////////////////////\n + // declared methods\n + /////////////////////////////////////////////////////////////////\n + \n + /////////////////////////////////////////////////////////////////\n + // declared service\n + /////////////////////////////////////////////////////////////////\n + .declareMethod("render", function (my_option_dict) {\n + var gadget = this;\n + return new RSVP.Queue()\n + .push(function () {\n + return gadget.declareGadget("gadget_erp5_grid.html", {\n + "scope": "grid"\n + });\n + })\n + .push(function () {\n + return gadget.getDeclaredGadget("grid");\n + })\n + .push(function (my_grid_gadget) {\n + return my_grid_gadget.render({"layout": HARDCODED_GRID_LIST});\n + })\n + .push(function (my_content_gadget) {\n + gadget.property_dict.element.appendChild(\n + my_content_gadget.property_dict.element\n + );\n + });\n + });\n + \n +\n +}(window, rJS, RSVP));\n +\n + + +]]></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Gadget E5G Eproject Frontpage 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</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>sven</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>1427379242.1</float> + <string>GMT</string> + </tuple> + </state> + </object> + </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>published</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>sven</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>942.11653.29366.8516</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>1428413212.46</float> + <string>GMT</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> <string>detect_converted_file</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>sven</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>converted</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>1427379219.09</float> + <string>GMT</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_panel_html.xml b/bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_panel_html.xml new file mode 100644 index 0000000000..5a9013890b --- /dev/null +++ b/bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_panel_html.xml @@ -0,0 +1,406 @@ +<?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>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>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_e5g_eproject_panel.html</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>gadget_e5g_eproject_panel_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 http-equiv="Content-type" content="text/html; charset=utf-8" />\n + <meta name="viewport" content="width=device-width, user-scalable=no" />\n + <title>E5G Ehr Custom Panel</title>\n +\n + <!-- renderjs -->\n + <script src="rsvp.js" type="text/javascript"></script>\n + <script src="renderjs.js" type="text/javascript"></script>\n + <script src="handlebars.js" type="text/javascript"></script>\n + <script src="gadget_global.js" type="text/javascript"></script>\n + <script src="jquery.js" type="text/javascript"></script>\n + <script src="jquerymobile.js" type="text/javascript"></script>\n +\n + <script id="panel-template-header" type="text/x-handlebars-template">\n + <div data-role="header" class="ui-bar-inherit">\n + <div class="ui-controlgroup ui-controlgroup-horizontal ui-btn-left">\n + <div class="ui-controlgroup-controls">\n + <form action="#" method="post">\n + <input type="submit" data-i18n="[value]Close" data-icon="delete" data-iconpos="notext" value="Close" />\n + </form>\n + </div>\n + </div>\n + <img class="ui-title" alt="ERP5" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJcAAAA/CAMAAADaDqrIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEM5NUE4MzQ5NjQxMUUzOUZEQUU2NUY1RTI1RjdCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEM5NUE4NDQ5NjQxMUUzOUZEQUU2NUY1RTI1RjdCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwQzk1QTgxNDk2NDExRTM5RkRBRTY1RjVFMjVGN0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwQzk1QTgyNDk2NDExRTM5RkRBRTY1RjVFMjVGN0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+J9MJsAAAAwBQTFRF///////M//+Z//9m//8z//8A/8z//8zM/8yZ/8xm/8wz/8wA/5n//5nM/5mZ/5lm/5kz/5kA/2b//2bM/2aZ/2Zm/2Yz/2YA/zP//zPM/zOZ/zNm/zMz/zMA/wD//wDM/wCZ/wBm/wAz/wAAzP//zP/MzP+ZzP9mzP8zzP8AzMz/zMzMzMyZzMxmzMwzzMwAzJn/zJnMzJmZzJlmzJkzzJkAzGb/zGbMzGaZzGZmzGYzzGYAzDP/zDPMzDOZzDNmzDMzzDMAzAD/zADMzACZzABmzAAzzAAAmf//mf/Mmf+Zmf9mmf8zmf8Amcz/mczMmcyZmcxmmcwzmcwAmZn/mZnMmZmZmZlmmZkzmZkAmWb/mWbMmWaZmWZmmWYzmWYAmTP/mTPMmTOZmTNmmTMzmTMAmQD/mQDMmQCZmQBmmQAzmQAAZv//Zv/MZv+ZZv9mZv8zZv8AZsz/ZszMZsyZZsxmZswzZswAZpn/ZpnMZpmZZplmZpkzZpkAZmb/ZmbMZmaZZmZmZmYzZmYAZjP/ZjPMZjOZZjNmZjMzZjMAZgD/ZgDMZgCZZgBmZgAzZgAAM///M//MM/+ZM/9mM/8zM/8AM8z/M8zMM8yZM8xmM8wzM8wAM5n/M5nMM5mZM5lmM5kzM5kAM2b/M2bMM2aZM2ZmM2YzM2YAMzP/MzPMMzOZMzNmMzMzMzMAMwD/MwDMMwCZMwBmMwAzMwAAAP//AP/MAP+ZAP9mAP8zAP8AAMz/AMzMAMyZAMxmAMwzAMwAAJn/AJnMAJmZAJlmAJkzAJkAAGb/AGbMAGaZAGZmAGYzAGYAADP/ADPMADOZADNmADMzADMAAAD/AADMAACZAABmAAAzAAAAHHa7K3/AOojESZHJWZvNaKTSd63Whrbblb/fpMjks9Howtrt4e320uTx8Pb6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdfKHSQAAAOh0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ALItoLoAAAJkSURBVHja7NlZsqsgEABQ979C5kGGddxo4os0Q8BAynoFn0nUU23TNGRB9xzLdE3XdE3XdP2fLnIzF2VSrsYvC72HizAh9eZ5DVuOl15S4/jWwC+kDC8HPzCSJVHcRY8QXV2PwQuujUYTsYrvYlBv1yKLrsXHsPghnvR3Lazoip/JKuwpF8sm6/bY01Ow9CBlTXi53PNoRcUktEZT1NV1PIPnXAjtMJIMlzerFIzU1dVWF7aPj3Tetae4gjdxktG2et/qQjJ4kZFrv6ED4bK4eR1qduHzvEi4+PbGwD0EGu9CQQLFrv1F4jBc6BcuW3YhkPiPX1hOfxQvnHfh0HVMRqc4HuqiQf5k3mO6dq1s8Hx0H/Le5kq9YaNcxAcrZLpOvAv+ClcgNcZFtnrucd5Fwx4mXj0drnbBYXMuJmFDAV3Uhm4qlbHh3ddOrmholHNxFTVC+xTl2mf6pI4uVe4LwSp0DPGOmh/hAnM94bKZjkHlWuiLeV+cTab4luMKk82wy/Px2fLJskvKUk03hRf9RZ0wiYiZ4uVwVwTb9E71y0XboTYXGuTaa33Y47W5zBjXM3P11y7TfR2ycFdxyaW7uwSc5m0un9ix91m3TWJfW+1ijfW+wcVAfjS5dOP62LyvZZdcLHnA1MkFAtbgwq+Vm47po8OA1buwyy/a1ec5urzveAes2sV8kfW963mFaHNhlT0b6+Yi5+StchH1CtaK0ThXELDPLiyOPZHldzm/J1z9O/B14g7/K+DtkP7U8ivSeD4xaPCTSQvy+YIfubZWzRgtRe1iMP+3mq7pmq7p6jv+BBgAPrgi/TzwWzkAAAAASUVORK5CYII="/>\n + <div class="ui-controlgroup ui-controlgroup-horizontal ui-btn-right">\n + <div class="ui-controlgroup-controls">\n + <a href="#" class="ui-btn ui-btn-icon-notext ui-icon-home" data-i18n="Home">Home</a>\n + </div>\n + </div>\n + </div>\n + </script>\n +\n + <script id="panel-template-body" type="text/x-handlebars-template">\n + <div class="ui-content">\n + <ul data-role="listview" class="ui-listview" data-enhanced="true">\n + <li class="ui-first-child"><a href="#jio_key=project_module&view=view" class="ui-btn ui-btn-icon-left ui-icon-list-ul" data-i18n="Projects">Projects</a></li>\n + <li><a href="#jio_key=task_module&view=view" class="ui-btn ui-btn-icon-left ui-icon-tasks" data-i18n="Tasks">Tasks</a></li>\n + <li><a class="ui-btn ui-btn-icon-left ui-icon-clipboard" data-i18n="Worklists">Worklists</a></li>\n + <li><a href="{{history_href}}" class="ui-btn ui-btn-icon-left ui-icon-history" data-i18n="History">History</a></li>\n + <li><a class="ui-btn ui-btn-icon-left ui-icon-gear" data-i18n="Preference">Preferences</a></li>\n + {{#if language_list}}\n + <li data-role="collapsible" data-enhanced="true" data-collapsed="true" data-collapsed-icon="comment-o" class="ui-collapsible ui-collapsible-collapsed">\n + <h4 class="ui-collapsible-heading ui-collapsible-heading-collapsed ui-li-divider ui-li-has-icon">\n + <a class="ui-collapsible-heading-toggle ui-icon-comment-o ui-btn-icon-left ui-btn-inherit" href="#" data-i18n="[last]Languages">\n + <span data-i18n="Click to expand content" class="ui-collapsible-heading-status"></span>Languages\n + </a>\n + </h4>\n + <div class="ui-collapsible-content ui-collapsible-content-collapsed" aria-hidden="true">\n + <fieldset data-role="controlgroup">\n + {{#each document_list}}\n + <form method="POST" action="">\n + <div class="ui-btn ui-input-btn ui-corner-all ui-shadow ui-btn-icon-right ui-icon-carat-r" data-i18n="[node]{{lang}}">\n + \n + <input type="submit" data-enhanced="true" name="lang" id="lang-{{count}}" value="{{lang}}" />\n + </div>\n + <label class="ui-hidden-accessible" for="lang-{{count}}" data-i18n="{{lang}}"></label>\n + </form>\n + {{/each}}\n + </fieldset>\n + </div>\n + </li>\n + {{/if}}\n + <li class="ui-last-child"><a class="ui-btn ui-btn-icon-left ui-icon-power-off" data-i18n="Logout">Logout</a></li>\n + </ul>\n + </div>\n + </script>\n +\n + <!-- custom script -->\n + <script src="gadget_e5g_eproject_panel.js" type="text/javascript"></script>\n +\n + </head>\n + <body>\n +\n + <div class="jqm-navmenu-panel"></div>\n + \n + </body>\n +</html> + +]]></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Gadget E5G Eproject Panel</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</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>sven</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>1428488257.59</float> + <string>GMT</string> + </tuple> + </state> + </object> + </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>published</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>sven</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>942.12905.63699.52377</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>1428488346.88</float> + <string>GMT</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> <string>detect_converted_file</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>sven</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>converted</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>1428488244.57</float> + <string>GMT</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_panel_js.xml b/bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_panel_js.xml new file mode 100644 index 0000000000..a93490a1be --- /dev/null +++ b/bt5/erp5_web_eproject/PathTemplateItem/web_page_module/gadget_e5g_eproject_panel_js.xml @@ -0,0 +1,500 @@ +<?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>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>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_e5g_eproject_panel.js</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>gadget_e5g_eproject_panel_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 */\n +(function (window, rJS, Handlebars, $, RSVP, loopEventListener) {\n + "use strict";\n +\n + /////////////////////////////////////////////////////////////////\n + // temlates\n + /////////////////////////////////////////////////////////////////\n + // Precompile templates while loading the first gadget instance\n + var gadget_klass = rJS(window),\n + source_header = gadget_klass.__template_element\n + .getElementById("panel-template-header")\n + .innerHTML,\n + panel_template_header = Handlebars.compile(source_header),\n + source_body = gadget_klass.__template_element\n + .getElementById("panel-template-body")\n + .innerHTML,\n + panel_template_body = Handlebars.compile(source_body);\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("changeLanguage", "changeLanguage")\n + .declareAcquiredMethod("getLanguageList", "getLanguageList")\n + .declareAcquiredMethod(\n + "whoWantToDisplayThisFrontPage",\n + "whoWantToDisplayThisFrontPage"\n + )\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: "left",\n + theme: "d"\n + // animate: false\n + });\n + })\n +\n + .ready(function (g) {\n + return new RSVP.Queue()\n + .push(function () {\n + return RSVP.all([\n + g.whoWantToDisplayThisFrontPage("front"),\n + g.whoWantToDisplayThisFrontPage("history"),\n + g.getLanguageList()\n + ]);\n + })\n + .push(function (all_result) {\n + var raw_language_list = JSON.parse(all_result[2]),\n + len = raw_language_list.length,\n + i,\n + i_len,\n + language_list,\n + tmp;\n +\n + // XXX: Customize panel header!\n + tmp = panel_template_header();\n +\n + // languages\n + if (len > 0) {\n + language_list = [];\n + for (i = 0, i_len = len; i < i_len; i += 1) {\n + language_list.push({"count": i, "lang": language_list[i]});\n + }\n + }\n +\n + tmp += panel_template_body({\n + "module_href": all_result[0],\n + "history_href": all_result[1],\n + "language_list": language_list\n + });\n + return tmp;\n + })\n + .push(function (my_translated_or_plain_html) {\n + g.props.jelement.html(my_translated_or_plain_html);\n + g.props.jelement.trigger("create");\n + });\n + })\n +\n + /////////////////////////////////////////////////////////////////\n + // declared methods\n + /////////////////////////////////////////////////////////////////\n + .declareMethod(\'toggle\', function () {\n + this.props.jelement.panel("toggle");\n + })\n +\n + .declareMethod(\'render\', function () {\n + var panel_gadget = this;\n +\n + if (panel_gadget.props.set_search === true) {\n + return panel_gadget;\n + }\n +\n + return new RSVP.Queue()\n + .push(function () {\n + return panel_gadget.declareGadget("gadget_erp5_searchfield.html", {"scope": "search"});\n + })\n + .push(function (my_search_gadget) {\n + var parent_node, search_option_dict = {};\n +\n + panel_gadget.props.set_search = true;\n +\n + // XXX disable for now\n + search_option_dict.disabled = true;\n + search_option_dict.theme = "d";\n + search_option_dict.extended_search = "";\n + parent_node = panel_gadget.__element.querySelector(".ui-content");\n +\n + parent_node.insertBefore(my_search_gadget.__element, parent_node.firstChild);\n + return my_search_gadget.render(search_option_dict);\n + })\n + .push(function () {\n + return panel_gadget;\n + });\n + })\n +\n + /////////////////////////////////////////////////////////////////\n + // declared services\n + /////////////////////////////////////////////////////////////////\n + .declareService(function () {\n + var panel_gadget,\n + form_list,\n + event_list,\n + handler,\n + i,\n + len;\n +\n + function translate(my_event) {\n + return panel_gadget.changeLanguage(my_event.target.lang.value);\n + }\n +\n + function formSubmit() {\n + panel_gadget.toggle();\n + }\n +\n + panel_gadget = this;\n + form_list = panel_gadget.props.element.querySelectorAll(\'form\');\n + event_list = [];\n + handler = [formSubmit];\n +\n + // XXX: not robust - Will break when search field is active\n + for (i = 0, len = form_list.length; i < len; i += 1) {\n + event_list[i] = loopEventListener(\n + form_list[i],\n + \'submit\',\n + false,\n + handler[i] || translate\n + );\n + }\n +\n + return new RSVP.Queue()\n + .push(function () {\n + return RSVP.all(event_list);\n + });\n + });\n +\n +}(window, rJS, Handlebars, jQuery, RSVP, loopEventListener)); + +]]></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Gadget E5G Eproject Panel 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</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>sven</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>1428487373.54</float> + <string>GMT</string> + </tuple> + </state> + </object> + </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>published</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>sven</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>942.12890.13377.61832</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>1428487366.64</float> + <string>GMT</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> <string>detect_converted_file</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>sven</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>converted</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>1428487332.24</float> + <string>GMT</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_web_eproject/PathTemplateItem/web_site_module/e5g_eproject.xml b/bt5/erp5_web_eproject/PathTemplateItem/web_site_module/e5g_eproject.xml new file mode 100644 index 0000000000..f650adecda --- /dev/null +++ b/bt5/erp5_web_eproject/PathTemplateItem/web_site_module/e5g_eproject.xml @@ -0,0 +1,602 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Web Site" 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>Authenticated</string> + <string>Author</string> + <string>Manager</string> + <string>Member</string> + <string>Owner</string> + <string>Reviewer</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Add_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Add_portal_folders_Permission</string> </key> + <value> + <tuple> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Copy_or_Move_Permission</string> </key> + <value> + <tuple> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Delete_objects_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>Authenticated</string> + <string>Author</string> + <string>Manager</string> + <string>Member</string> + <string>Owner</string> + <string>Reviewer</string> + </tuple> + </value> + </item> + <item> + <key> <string>__before_publishing_traverse__</string> </key> + <value> + <object> + <klass> + <global name="MultiHook" module="ZPublisher.BeforeTraverse"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_defined_in_class</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>_hookname</string> </key> + <value> <string>__before_publishing_traverse__</string> </value> + </item> + <item> + <key> <string>_list</string> </key> + <value> + <list> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </list> + </value> + </item> + <item> + <key> <string>_prior</string> </key> + <value> + <none/> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>__before_traverse__</string> </key> + <value> + <dictionary> + <item> + <key> + <tuple> + <int>99</int> + <string>ERP5 Web Site/bug_tracker</string> + </tuple> + </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + <item> + <key> + <tuple> + <int>99</int> + <string>ERP5 Web Site/e5g_eproject</string> + </tuple> + </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> + <tuple> + <int>99</int> + <string>ERP5 Web Site/renderjs_runner</string> + </tuple> + </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>_count</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent> + </value> + </item> + <item> + <key> <string>_identity_criterion</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAY=</string> </persistent> + </value> + </item> + <item> + <key> <string>_local_properties</string> </key> + <value> + <tuple> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>frontpage_gadget_url</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>string</string> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>configuration_frontpage_gadget_url</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>string</string> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>configuration_application_title</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>string</string> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>configuration_hateoas_url</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>string</string> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>configuration_view_action_category</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>string</string> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>configuration_default_view_action_reference</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>string</string> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>configuration_panel_gadget_url</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>string</string> </value> + </item> + </dictionary> + </tuple> + </value> + </item> + <item> + <key> <string>_mt_index</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAc=</string> </persistent> + </value> + </item> + <item> + <key> <string>_range_criterion</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAg=</string> </persistent> + </value> + </item> + <item> + <key> <string>_tree</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAk=</string> </persistent> + </value> + </item> + <item> + <key> <string>available_language</string> </key> + <value> + <tuple> + <string>en</string> + </tuple> + </value> + </item> + <item> + <key> <string>categories</string> </key> + <value> + <tuple> + <string>aggregate/web_page_module/rjs_gadget_erp5_html</string> + </tuple> + </value> + </item> + <item> + <key> <string>configuration_application_title</string> </key> + <value> <string>E-Project</string> </value> + </item> + <item> + <key> <string>configuration_default_view_action_reference</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>configuration_frontpage_gadget_url</string> </key> + <value> <string>gadget_e5g_eproject_page_front.html</string> </value> + </item> + <item> + <key> <string>configuration_hateoas_url</string> </key> + <value> <string>hateoas/</string> </value> + </item> + <item> + <key> <string>configuration_panel_gadget_url</string> </key> + <value> <string>gadget_e5g_eproject_panel.html</string> </value> + </item> + <item> + <key> <string>configuration_view_action_category</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>container_layout</string> </key> + <value> <string>WebSection_renderDefaultPageAsGadget</string> </value> + </item> + <item> + <key> <string>content_layout</string> </key> + <value> <string>WebSection_renderDefaultPageAsGadget</string> </value> + </item> + <item> + <key> <string>custom_render_method_id</string> </key> + <value> <string>WebSection_renderDefaultPageAsGadget</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>frontpage_gadget_url</string> </key> + <value> <string>gadget_woelfel_pt_frontpage.html</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>e5g_eproject</string> </value> + </item> + <item> + <key> <string>layout_configuration_form_id</string> </key> + <value> <string>WebSection_viewHateoasPreference</string> </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Web Site</string> </value> + </item> + <item> + <key> <string>short_title</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>skin_selection_name</string> </key> + <value> <string>RJS</string> </value> + </item> + <item> + <key> <string>static_language_selection</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>E-Project</string> </value> + </item> + <item> + <key> <string>visible</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>workflow_history</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAo=</string> </persistent> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="WebSiteTraversalHook" module="Products.ERP5.Document.WebSite"/> + </pickle> + <pickle> + <dictionary/> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="WebSiteTraversalHook" module="Products.ERP5.Document.WebSite"/> + </pickle> + <pickle> + <dictionary/> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="WebSiteTraversalHook" module="Products.ERP5.Document.WebSite"/> + </pickle> + <pickle> + <dictionary/> + </pickle> + </record> + <record id="5" aka="AAAAAAAAAAU="> + <pickle> + <global name="Length" module="BTrees.Length"/> + </pickle> + <pickle> <int>0</int> </pickle> + </record> + <record id="6" aka="AAAAAAAAAAY="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="7" aka="AAAAAAAAAAc="> + <pickle> + <global name="OOBTree" module="BTrees.OOBTree"/> + </pickle> + <pickle> + <none/> + </pickle> + </record> + <record id="8" aka="AAAAAAAAAAg="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="9" aka="AAAAAAAAAAk="> + <pickle> + <global name="OOBTree" module="BTrees.OOBTree"/> + </pickle> + <pickle> + <none/> + </pickle> + </record> + <record id="10" aka="AAAAAAAAAAo="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary> + <item> + <key> <string>category_publication_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAs=</string> </persistent> + </value> + </item> + <item> + <key> <string>edit_workflow</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAw=</string> </persistent> + </value> + </item> + </dictionary> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="11" aka="AAAAAAAAAAs="> + <pickle> + <global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> + </pickle> + <pickle> + <tuple> + <none/> + <list> + <dictionary> + <item> + <key> <string>action</string> </key> + <value> <string>publish</string> </value> + </item> + <item> + <key> <string>actor</string> </key> + <value> <string>sven</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>1427379026.63</float> + <string>GMT</string> + </tuple> + </state> + </object> + </value> + </item> + <item> + <key> <string>validation_state</string> </key> + <value> <string>published</string> </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> + <record id="12" aka="AAAAAAAAAAw="> + <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>sven</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>941.59995.33320.40157</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>1428485698.2</float> + <string>GMT</string> + </tuple> + </state> + </object> + </value> + </item> + </dictionary> + </list> + </tuple> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_web_eproject/PathTemplateItem/web_site_module/e5g_eproject/hateoas.xml b/bt5/erp5_web_eproject/PathTemplateItem/web_site_module/e5g_eproject/hateoas.xml new file mode 100644 index 0000000000..2b0b1798fe --- /dev/null +++ b/bt5/erp5_web_eproject/PathTemplateItem/web_site_module/e5g_eproject/hateoas.xml @@ -0,0 +1,313 @@ +<?xml version="1.0"?> +<ZopeData> + <record id="1" aka="AAAAAAAAAAE="> + <pickle> + <global name="Web Section" module="erp5.portal_type"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>_Add_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Add_portal_folders_Permission</string> </key> + <value> + <tuple> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Copy_or_Move_Permission</string> </key> + <value> + <tuple> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Delete_objects_Permission</string> </key> + <value> + <tuple> + <string>Assignor</string> + <string>Manager</string> + </tuple> + </value> + </item> + <item> + <key> <string>_Modify_portal_content_Permission</string> </key> + <value> + <tuple> + <string>Assignee</string> + <string>Assignor</string> + <string>Manager</string> + <string>Owner</string> + </tuple> + </value> + </item> + <item> + <key> <string>__before_publishing_traverse__</string> </key> + <value> + <object> + <klass> + <global name="MultiHook" module="ZPublisher.BeforeTraverse"/> + </klass> + <tuple/> + <state> + <dictionary> + <item> + <key> <string>_defined_in_class</string> </key> + <value> <int>1</int> </value> + </item> + <item> + <key> <string>_hookname</string> </key> + <value> <string>__before_publishing_traverse__</string> </value> + </item> + <item> + <key> <string>_list</string> </key> + <value> + <list> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </list> + </value> + </item> + <item> + <key> <string>_prior</string> </key> + <value> + <none/> + </value> + </item> + </dictionary> + </state> + </object> + </value> + </item> + <item> + <key> <string>__before_traverse__</string> </key> + <value> + <dictionary> + <item> + <key> + <tuple> + <int>99</int> + <string>ERP5 Web Section/hateoas</string> + </tuple> + </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> + </value> + </item> + </dictionary> + </value> + </item> + <item> + <key> <string>_identity_criterion</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> + </value> + </item> + <item> + <key> <string>_local_properties</string> </key> + <value> + <tuple> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>default_view_action_reference</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>string</string> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>view_action_category</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>string</string> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>frontpage_gadget</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>string</string> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>frontpage_gadget_url</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>string</string> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>configuration_frontpage_gadget_url</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>string</string> </value> + </item> + </dictionary> + <dictionary> + <item> + <key> <string>id</string> </key> + <value> <string>configuration_application_title</string> </value> + </item> + <item> + <key> <string>type</string> </key> + <value> <string>string</string> </value> + </item> + </dictionary> + </tuple> + </value> + </item> + <item> + <key> <string>_range_criterion</string> </key> + <value> + <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent> + </value> + </item> + <item> + <key> <string>configuration_application_title</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>configuration_frontpage_gadget_url</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>container_layout</string> </key> + <value> <string>ERP5Document_getHateoas</string> </value> + </item> + <item> + <key> <string>content_layout</string> </key> + <value> <string>ERP5Document_getHateoas</string> </value> + </item> + <item> + <key> <string>custom_render_method_id</string> </key> + <value> <string>ERP5Document_getHateoas</string> </value> + </item> + <item> + <key> <string>default_view_action_reference</string> </key> + <value> <string>view</string> </value> + </item> + <item> + <key> <string>description</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>empty_criterion_valid</string> </key> + <value> <int>0</int> </value> + </item> + <item> + <key> <string>frontpage_gadget</string> </key> + <value> <string>gadget_woelfel_pt_frontpage.html</string> </value> + </item> + <item> + <key> <string>frontpage_gadget_url</string> </key> + <value> <string>gadget_woelfel_pt_frontpage.html</string> </value> + </item> + <item> + <key> <string>id</string> </key> + <value> <string>hateoas</string> </value> + </item> + <item> + <key> <string>layout_configuration_form_id</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>portal_type</string> </key> + <value> <string>Web Section</string> </value> + </item> + <item> + <key> <string>short_title</string> </key> + <value> + <none/> + </value> + </item> + <item> + <key> <string>skin_selection_name</string> </key> + <value> <string>HalRestricted</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Restricted Hateoas</string> </value> + </item> + <item> + <key> <string>view_action_category</string> </key> + <value> <string>object_view</string> </value> + </item> + <item> + <key> <string>visible</string> </key> + <value> <int>1</int> </value> + </item> + </dictionary> + </pickle> + </record> + <record id="2" aka="AAAAAAAAAAI="> + <pickle> + <global name="WebSectionTraversalHook" module="Products.ERP5.Document.WebSection"/> + </pickle> + <pickle> + <dictionary/> + </pickle> + </record> + <record id="3" aka="AAAAAAAAAAM="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> + <record id="4" aka="AAAAAAAAAAQ="> + <pickle> + <global name="PersistentMapping" module="Persistence.mapping"/> + </pickle> + <pickle> + <dictionary> + <item> + <key> <string>data</string> </key> + <value> + <dictionary/> + </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> -- 2.30.9