Commit f82ce8c5 authored by Jérome Perrin's avatar Jérome Perrin

officejs_support_request_ui: use a custom header instead of a custom page

erp5_hal_json does not seem to allow using gadgets by page name,
anymore, so instead of using a custom "page template" gadget (
disclaimer: I have not really understood this fully at this point).

Instead of using a custom page gadget, just use a header gadget that
"extends" the default gadget but removes the add_url
No related merge requests found
......@@ -152,8 +152,8 @@ gadget_erp5_page_form.js\n
gadget_erp5_page_homepage.css\n
gadget_erp5_page_homepage.html\n
gadget_erp5_page_homepage.js\n
gadget_erp5_page_list.html\n
gadget_erp5_page_list.js\n
gadget_supportrequest_header.html\n
gadget_supportrequest_header.js\n
gadget_erp5_page_supportrequest_preference.html\n
gadget_erp5_page_supportrequest_preference.js\n
gadget_erp5_page_support_request_fast_view_dialog.html\n
......@@ -360,7 +360,7 @@ NETWORK:\n
</tuple>
<state>
<tuple>
<float>1536561148.11</float>
<float>1540870337.1</float>
<string>GMT+9</string>
</tuple>
</state>
......
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Support Request Header</title>
<!-- renderjs -->
<script src="rsvp.js" type="text/javascript"></script>
<script src="renderjs.js" type="text/javascript"></script>
<!-- custom script -->
<script src="gadget_supportrequest_header.js" type="text/javascript"></script>
</head>
<body>
<div data-gadget-url="gadget_erp5_header.html" data-gadget-scope="header" data-gadget-sandbox="public">
</body>
</html>
\ No newline at end of file
......@@ -16,7 +16,6 @@
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
......@@ -59,10 +58,15 @@
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>content_md5</string> </key>
<value>
......@@ -75,7 +79,7 @@
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>gadget_erp5_page_list.html</string> </value>
<value> <string>gadget_supportrequest_header.html</string> </value>
</item>
<item>
<key> <string>description</string> </key>
......@@ -85,7 +89,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget_supportrequest_pt_listpage_html</string> </value>
<value> <string>gadget_supportrequest_header_html</string> </value>
</item>
<item>
<key> <string>language</string> </key>
......@@ -103,7 +107,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Gadget Support Request List HTML</string> </value>
<value> <string>Gadget Support Request Header HTML</string> </value>
</item>
<item>
<key> <string>version</string> </key>
......@@ -167,7 +171,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>ERP5TypeTestCase</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -189,8 +193,8 @@
</tuple>
<state>
<tuple>
<float>1497910732.61</float>
<string>UTC</string>
<float>1540867849.08</float>
<string>GMT+9</string>
</tuple>
</state>
</object>
......@@ -220,7 +224,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>ERP5TypeTestCase</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -234,7 +238,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>961.303.21710.19063</string> </value>
<value> <string>971.18479.8827.61354</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -252,8 +256,8 @@
</tuple>
<state>
<tuple>
<float>1504275408.49</float>
<string>UTC</string>
<float>1540870432.58</float>
<string>GMT+9</string>
</tuple>
</state>
</object>
......@@ -279,7 +283,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>ERP5TypeTestCase</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -309,8 +313,8 @@
</tuple>
<state>
<tuple>
<float>1497909778.2</float>
<string>UTC</string>
<float>1540867644.05</float>
<string>GMT+9</string>
</tuple>
</state>
</object>
......
/*global window, rJS */
/*jslint nomen: true, indent: 2, maxerr: 3 */
(function (window, rJS) {
'use strict';
/**
* A gadget which embeds default header, but remove add button, because in the
* case of support request app, adding is done through fast input.
*/
var gadgetKlass = rJS(window)
.declareMethod('render', function (options) {
delete options.add_url;
return this.getDeclaredGadget('header').push(function (headerGadget) {
return headerGadget.render(options);
});
});
/**
* Delegate a method to embedded header gadget
* @param {string}methodName method name
*/
function delegateMethod(methodName) {
gadgetKlass.declareMethod(methodName, function () {
var methodArguments = arguments;
return this.getDeclaredGadget('header').push(function (headerGadget) {
return headerGadget[methodName].apply(headerGadget, methodArguments);
});
});
}
delegateMethod('notifyLoaded');
delegateMethod('notifyLoading');
delegateMethod('notifySubmitted');
delegateMethod('notifySubmitting');
delegateMethod('notifyError');
delegateMethod('notifyChange');
delegateMethod('setButtonTitle');
}(window, rJS));
\ No newline at end of file
......@@ -16,7 +16,6 @@
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
......@@ -59,7 +58,6 @@
<string>Associate</string>
<string>Auditor</string>
<string>Manager</string>
<string>Owner</string>
</tuple>
</value>
</item>
......@@ -75,7 +73,7 @@
</item>
<item>
<key> <string>default_reference</string> </key>
<value> <string>gadget_erp5_page_list.js</string> </value>
<value> <string>gadget_supportrequest_header.js</string> </value>
</item>
<item>
<key> <string>description</string> </key>
......@@ -85,7 +83,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>gadget_supportrequest_pt_listpage_js</string> </value>
<value> <string>gadget_supportrequest_header_js</string> </value>
</item>
<item>
<key> <string>language</string> </key>
......@@ -103,7 +101,7 @@
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Gadget Support Request List JS</string> </value>
<value> <string>Gadget Support Request Header JS</string> </value>
</item>
<item>
<key> <string>version</string> </key>
......@@ -167,7 +165,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>ERP5TypeTestCase</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -189,8 +187,8 @@
</tuple>
<state>
<tuple>
<float>1497910839.57</float>
<string>UTC</string>
<float>1540867895.46</float>
<string>GMT+9</string>
</tuple>
</state>
</object>
......@@ -220,7 +218,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>ERP5TypeTestCase</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -234,7 +232,7 @@
</item>
<item>
<key> <string>serial</string> </key>
<value> <string>961.303.21710.19063</string> </value>
<value> <string>971.18510.51356.54101</string> </value>
</item>
<item>
<key> <string>state</string> </key>
......@@ -252,8 +250,8 @@
</tuple>
<state>
<tuple>
<float>1504275382.57</float>
<string>UTC</string>
<float>1540870427.65</float>
<string>GMT+9</string>
</tuple>
</state>
</object>
......@@ -279,7 +277,7 @@
</item>
<item>
<key> <string>actor</string> </key>
<value> <string>zope</string> </value>
<value> <string>ERP5TypeTestCase</string> </value>
</item>
<item>
<key> <string>comment</string> </key>
......@@ -309,8 +307,8 @@
</tuple>
<state>
<tuple>
<float>1497909777.39</float>
<string>UTC</string>
<float>1540867824.38</float>
<string>GMT+9</string>
</tuple>
</state>
</object>
......
<!DOCTYPE html>
<html>
<!--
data-i18n=User
data-i18n=Language
-->
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width" />
<title>ERP5 Page Preferences</title>
<!-- renderjs -->
<script src="rsvp.js" type="text/javascript"></script>
<script src="renderjs.js" type="text/javascript"></script>
<!-- custom script -->
<script src="gadget_erp5_page_list.js" type="text/javascript"></script>
</head>
<body>
<form class="preference">
<button type="submit" class="ui-btn ui-btn-b ui-btn-inline
ui-icon-edit ui-btn-icon-right ui-screen-hidden"></button>
<div data-gadget-url="gadget_erp5_form.html"
data-gadget-scope="erp5_form"
data-gadget-sandbox="public">
</div>
</form>
</body>
</html>
\ No newline at end of file
/*global window, rJS, URI */
/*jslint nomen: true, indent: 2, maxerr: 3 */
(function (window, rJS, URI) {
"use strict";
function loadFormContent(gadget, result) {
var key;
if (gadget.state.options.form_content) {
for (key in result) {
if (result.hasOwnProperty(key)) {
if (gadget.state.options.form_content[result[key].key]) {
result[key].default = gadget.state.options.form_content[result[key].key];
}
}
}
}
}
rJS(window)
/////////////////////////////////////////////////////////////////
// Acquired methods
/////////////////////////////////////////////////////////////////
.declareAcquiredMethod("jio_getAttachment", "jio_getAttachment")
.declareAcquiredMethod("redirect", "redirect")
.declareAcquiredMethod("getUrlParameter", "getUrlParameter")
.declareAcquiredMethod("jio_allDocs", "jio_allDocs")
.declareAcquiredMethod("updatePanel", "updatePanel")
.declareAcquiredMethod("updateHeader", "updateHeader")
/////////////////////////////////////////////////////////////////
// declared methods
/////////////////////////////////////////////////////////////////
.allowPublicAcquisition("updateHeader", function (param_list) {
var param = param_list[0];
delete param.add_url;
delete param.actions_url;
delete param.cut_url;
delete param.jump_url;
delete param.export_url;
return this.updateHeader(param);
})
.allowPublicAcquisition("jio_allDocs", function (param_list) {
var gadget = this;
return gadget.jio_allDocs(param_list[0])
.push(function (result) {
var i;
if (result.data.rows.length) {
for (i = 0; i < result.data.rows.length; i += 1) {
loadFormContent(gadget, result.data.rows[i].value);
}
}
return result;
});
})
.allowPublicAcquisition('notifySubmit', function () {
return this.triggerSubmit();
})
.declareMethod('triggerSubmit', function () {
return this.getDeclaredGadget('fg')
.push(function (g) {
return g.triggerSubmit();
});
})
.declareMethod("render", function (options) {
var gadget = this,
view;
return gadget.getUrlParameter('view')
.push(function (result) {
view = result;
return gadget.jio_getAttachment(options.jio_key, view || "view")
})
.push(function (result) {
var uri;
if (!result._embedded) {
return gadget.jio_getAttachment(options.jio_key, "links")
.push(function (result2) {
return gadget.redirect({command: 'change', options: {
view: result2._links.view[0].href,
page: "list"
}});
});
}
uri = new URI(result._embedded._view._links.form_definition.href);
return gadget.jio_getAttachment(uri.segment(2), "view")
.push(function (erp5_form) {
var url = "gadget_erp5_pt_" + erp5_form.pt;
// XXX Hardcoded specific behaviour for form_view
if ((options.editable !== undefined) && (erp5_form.pt === "form_view")) {
url += "_editable";
}
url += ".html";
return gadget.changeState({
jio_key: options.jio_key,
options: options,
view: options.view,
url: url,
erp5_document: JSON.stringify(result),
erp5_form: JSON.stringify(erp5_form)
});
});
});
})
.onStateChange(function (modification_dict) {
var queue,
gadget = this,
options = this.state.options,
page_template_gadget,
clean_dom = modification_dict.hasOwnProperty('url');
if (clean_dom) {
queue = gadget.declareGadget(gadget.state.url, {scope: "fg"});
} else {
queue = gadget.getDeclaredGadget("fg");
}
return queue
.push(function (result) {
page_template_gadget = result;
var sub_options = options.fg || {},
erp5_document = JSON.parse(gadget.state.erp5_document),
erp5_form = JSON.parse(gadget.state.erp5_form);
loadFormContent(gadget, erp5_document._embedded._view);
sub_options.erp5_document = erp5_document;
sub_options.form_definition = erp5_form;
sub_options.view = options.view;
sub_options.action_view = options.action_view;
sub_options.jio_key = options.jio_key;
sub_options.editable = options.editable;
return page_template_gadget.render(sub_options);
})
.push(function () {
if (clean_dom) {
return page_template_gadget.getElement()
.push(function (fragment) {
var element = gadget.element;
// Clear first to DOM, append after to reduce flickering/manip
while (element.firstChild) {
element.removeChild(element.firstChild);
}
element.appendChild(fragment);
});
}
})
.push(function () {
var jio_key = gadget.state.options.jio_key;
/*jslint regexp: true*/
if (/^[^\/]+_module\/.+$/.test(jio_key)) {
/*jslint regexp: false*/
return gadget.updatePanel({
erp5_document: JSON.parse(gadget.state.erp5_document),
editable: gadget.state.options.editable
});
}
});
})
.allowPublicAcquisition("displayFormulatorValidationError", function (param_list) {
var erp5_document = JSON.parse(this.state.erp5_document);
erp5_document._embedded._view = param_list[0];
// Force refresh
erp5_document._now = Date.now();
return this.changeState({erp5_document: JSON.stringify(erp5_document)});
});
}(window, rJS, URI));
\ No newline at end of file
......@@ -348,9 +348,7 @@
</item>
<item>
<key> <string>configuration_header_gadget_url</string> </key>
<value>
<none/>
</value>
<value> <string>gadget_supportrequest_header.html</string> </value>
</item>
<item>
<key> <string>configuration_jio_gadget_url</string> </key>
......@@ -625,8 +623,8 @@
</tuple>
<state>
<tuple>
<float>1506518906.34</float>
<string>UTC</string>
<float>1540870022.36</float>
<string>GMT+9</string>
</tuple>
</state>
</object>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment