From d2a9980e74e44826b79b796df2dc81185fa5634d Mon Sep 17 00:00:00 2001 From: Romain Courteaud <romain@nexedi.com> Date: Fri, 1 Aug 2014 12:47:37 +0000 Subject: [PATCH] Add loginform when requested by ERP5 --- .../web_page_module/rjs_gadget_erp5_js.xml | 33 +++- .../rjs_gadget_erp5_pt_loginform_html.xml | 146 +++++++++++++++ .../rjs_gadget_erp5_pt_loginform_js.xml | 168 ++++++++++++++++++ bt5/erp5_web_renderjs_ui/bt/revision | 2 +- 4 files changed, 344 insertions(+), 5 deletions(-) create mode 100644 bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_loginform_html.xml create mode 100644 bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_loginform_js.xml 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 81752d78df..84a222c5b7 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 @@ -109,7 +109,7 @@ $.mobile.linkBindingEnabled = false;\n $.mobile.hashListeningEnabled = false;\n $.mobile.pushStateEnabled = false;\n - \n +\n /////////////////////////////////////////////////////////////////\n // Some functions\n /////////////////////////////////////////////////////////////////\n @@ -135,7 +135,21 @@ ]);\n });\n }\n - \n +\n + function renderLoginForm(gadget, options) {\n + document.querySelector("h1").textContent = "Login";\n +\n + return gadget.declareGadget("gadget_erp5_pt_loginform.html", {\n + scope: "login_gadget"\n + })\n + .push(function (sub_gadget) {\n + return RSVP.all([\n + sub_gadget.render(),\n + sub_gadget.getElement()\n + ]);\n + });\n + }\n +\n function renderJioDocument(gadget, options) {\n var sub_options;\n return gadget.getDeclaredGadget("jio_gadget")\n @@ -201,7 +215,7 @@ .ready(function (g) {\n g.props = {\n frontpage_gadget: "gadget_erp5_pt_frontpage.html",\n - hateoas_url: "https://softinst51669.host.vifib.net/erp5/web_site_module/hateoas/",\n + hateoas_url: "hateoas/",\n action_view: "action_object_view",\n default_view_reference: "view",\n };\n @@ -297,7 +311,13 @@ \n // $.mobile.loading(\'show\');\n if (options.jio_key === undefined) {\n - queue = renderFrontpage(gadget, options);\n + if (options.page === "login") {\n + queue = renderLoginForm(gadget, options);\n + } else if (options.page === undefined) {\n + queue = renderFrontpage(gadget, options);\n + } else {\n + throw new Error("Unknown page: " + options.page);\n + }\n } else {\n if (options.view === undefined) {\n // Redirect to the default view\n @@ -330,6 +350,11 @@ return $(element).trigger("create");\n })\n .push(undefined, function (error) {\n + if (error.status === 401) {\n + // Redirect to the login view\n + return gadget.aq_pleasePublishMyState({page: "login"})\n + .push(gadget.pleaseRedirectMyHash.bind(gadget));\n + }\n console.error(error);\n console.error(error.stack);\n // $.mobile.loading(\'hide\');\n diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_loginform_html.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_loginform_html.xml new file mode 100644 index 0000000000..30764d7c4a --- /dev/null +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_loginform_html.xml @@ -0,0 +1,146 @@ +<?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>Assignee</string> + <string>Assignor</string> + <string>Associate</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>Assignee</string> + <string>Assignor</string> + <string>Associate</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_pt_loginform.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_pt_loginform_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>ERP5 PT Loginpage</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_global.js" type="text/javascript"></script>\n + <script src="gadget_erp5_pt_loginform.js" type="text/javascript"></script>\n +\n + </head>\n + <body>\n +\n + <fieldset class="center">\n + <form class="login_form">\n + <input type="text" data-enhanced="true" value="" name="login" required="required" />\n + <input type="password" data-enhanced="true" value="" name="password" required="required" />\n + <input data-enhanced="true" type="submit" value="Login">\n + </form>\n + </fieldset>\n +\n + </body>\n +</html> + +]]></string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Gadget ERP5 Loginform</string> </value> + </item> + <item> + <key> <string>version</string> </key> + <value> <string>001</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_loginform_js.xml b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_loginform_js.xml new file mode 100644 index 0000000000..3daabf13d9 --- /dev/null +++ b/bt5/erp5_web_renderjs_ui/PathTemplateItem/web_page_module/rjs_gadget_erp5_pt_loginform_js.xml @@ -0,0 +1,168 @@ +<?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>Assignee</string> + <string>Assignor</string> + <string>Associate</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>Assignee</string> + <string>Assignor</string> + <string>Associate</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_pt_loginform.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_pt_loginform_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>/*global rJS, RSVP, Handlebars, initGadgetMixin */\n +/*jslint nomen: true */\n +(function (window, rJS, RSVP) {\n + "use strict";\n +\n + rJS(window)\n + /////////////////////////////////////////////////////////////////\n + // ready\n + /////////////////////////////////////////////////////////////////\n + // Init local properties\n + .ready(function (g) {\n + g.props = {};\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 + });\n + })\n +\n + /////////////////////////////////////////////////////////////////\n + // handle acquisition\n + /////////////////////////////////////////////////////////////////\n + .declareAcquiredMethod("pleaseRedirectMyHash", "pleaseRedirectMyHash")\n +\n + /////////////////////////////////////////////////////////////////\n + // declared methods\n + /////////////////////////////////////////////////////////////////\n + .declareMethod("render", function (options) {\n + return "ok";\n + })\n +\n + .declareService(function () {\n + var form_gadget = this;\n + // Listen to form submit\n + return new RSVP.Queue()\n + .push(function () {\n + return promiseEventListener(\n + form_gadget.props.element.querySelector(\'form\'),\n + \'submit\',\n + false\n + );\n + })\n + .push(function (evt) {\n + var form = evt.target,\n + login = form.elements[0].value,\n + passwd = form.elements[1].value;\n +\n + document.cookie = "__ac=" + window.btoa(login + ":" + passwd);\n + // XXX Hardcoded non generic redirection to the frontpage\n + return form_gadget.pleaseRedirectMyHash("#");\n +\n + });\n +\n + });\n +}(window, rJS, RSVP));</string> </value> + </item> + <item> + <key> <string>title</string> </key> + <value> <string>Gadget ERP5 Login JS</string> </value> + </item> + <item> + <key> <string>version</string> </key> + <value> <string>001</string> </value> + </item> + </dictionary> + </pickle> + </record> +</ZopeData> diff --git a/bt5/erp5_web_renderjs_ui/bt/revision b/bt5/erp5_web_renderjs_ui/bt/revision index 8e2afd3427..25bf17fc5a 100644 --- a/bt5/erp5_web_renderjs_ui/bt/revision +++ b/bt5/erp5_web_renderjs_ui/bt/revision @@ -1 +1 @@ -17 \ No newline at end of file +18 \ No newline at end of file -- 2.30.9