Commit 3e1c3ce2 authored by Romain Courteaud's avatar Romain Courteaud

[erp5_web_renderjs_ui] Simplify page template rendering

parent c9edbda4
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
<script src="URI.js" type="text/javascript"></script> <script src="URI.js" type="text/javascript"></script>
<!-- custom script --> <!-- custom script -->
<script src="gadget_global.js" type="text/javascript"></script>
<script src="gadget_erp5_global.js" type="text/javascript"></script> <script src="gadget_erp5_global.js" type="text/javascript"></script>
<script src="gadget_erp5_pt_form_dialog.js" type="text/javascript"></script> <script src="gadget_erp5_pt_form_dialog.js" type="text/javascript"></script>
...@@ -24,7 +23,7 @@ ...@@ -24,7 +23,7 @@
<!-- XXX action, method, fieldset --> <!-- XXX action, method, fieldset -->
<form class="dialog_form"> <form class="dialog_form">
<button type="submit" data-i18n="Submit" class="ui-btn ui-btn-b ui-btn-inline <button type="submit" class="ui-btn ui-btn-b ui-btn-inline
ui-icon-action ui-btn-icon-right ui-screen-hidden">Submit</button> ui-icon-action ui-btn-icon-right ui-screen-hidden">Submit</button>
<div data-gadget-url="gadget_erp5_form.html" <div data-gadget-url="gadget_erp5_form.html"
data-gadget-scope="erp5_form" data-gadget-scope="erp5_form"
......
...@@ -234,7 +234,7 @@ ...@@ -234,7 +234,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>946.44927.40202.16725</string> </value> <value> <string>954.5408.20833.21606</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -252,7 +252,7 @@ ...@@ -252,7 +252,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1460379182.94</float> <float>1475506475.74</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
/*jslint nomen: true, indent: 2, maxerr: 3 */ /*jslint nomen: true, indent: 2, maxerr: 3 */
/*global window, rJS, RSVP, URI, loopEventListener, document, calculatePageTitle */ /*global window, rJS, RSVP, URI, calculatePageTitle */
(function (window, rJS, RSVP, URI, loopEventListener, calculatePageTitle) { (function (window, rJS, RSVP, URI, calculatePageTitle) {
"use strict"; "use strict";
///////////////////////////////////////////////////////////////// rJS(window)
// Handlebars .setState({
///////////////////////////////////////////////////////////////// title: ""
// Precompile the templates while loading the first gadget instance
var gadget_klass = rJS(window);
gadget_klass
/////////////////////////////////////////////////////////////////
// ready
/////////////////////////////////////////////////////////////////
// Init local properties
.ready(function (g) {
g.props = {};
})
// Assign the element to a variable
.ready(function (g) {
return g.getElement()
.push(function (element) {
g.props.element = element;
});
}) })
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// acquisition // acquisition
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
...@@ -35,7 +16,7 @@ ...@@ -35,7 +16,7 @@
.declareAcquiredMethod("updateHeader", "updateHeader") .declareAcquiredMethod("updateHeader", "updateHeader")
.declareAcquiredMethod("notifySubmitting", "notifySubmitting") .declareAcquiredMethod("notifySubmitting", "notifySubmitting")
.declareAcquiredMethod("notifySubmitted", "notifySubmitted") .declareAcquiredMethod("notifySubmitted", "notifySubmitted")
.declareAcquiredMethod("translateHtml", "translateHtml") .declareAcquiredMethod("translate", "translate")
.declareAcquiredMethod("notifyChange", "notifyChange") .declareAcquiredMethod("notifyChange", "notifyChange")
.declareAcquiredMethod("displayFormulatorValidationError", .declareAcquiredMethod("displayFormulatorValidationError",
"displayFormulatorValidationError") "displayFormulatorValidationError")
...@@ -45,38 +26,39 @@ ...@@ -45,38 +26,39 @@
// declared methods // declared methods
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
.declareMethod('triggerSubmit', function () { .declareMethod('triggerSubmit', function () {
this.props.element.querySelector('button').click(); this.element.querySelector('button').click();
}) })
.declareMethod('render', function (options) {
var erp5_document = options.erp5_document,
form_options = options.erp5_form || {},
form_gadget = this;
form_gadget.props.id = options.jio_key; .declareMethod('render', function (options) {
form_gadget.props.view = options.view; var state_dict = {
form_gadget.props.editable = options.editable; id: options.jio_key,
form_gadget.props.action = erp5_document._embedded._view._actions.put; view: options.view,
form_gadget.props.form_id = erp5_document._embedded._view.form_id; editable: options.editable,
erp5_document: options.erp5_document,
return form_gadget.getDeclaredGadget("erp5_form") form_definition: options.form_definition,
erp5_form: options.erp5_form || {}
};
return this.changeState(state_dict);
})
.push(function (erp5_form) { .declareMethod('updateDOM', function () {
var title = options.form_definition.title, var form_gadget = this,
i,
icon, icon,
span = document.createElement("span"), selector = form_gadget.element.querySelector("h3"),
section = form_gadget.__element.querySelector("section"), title,
selector = form_gadget.__element.querySelector("h3"), i,
view_list = erp5_document._links.action_workflow || []; view_list = this.state.erp5_document._links.action_workflow || [];
title = this.state.form_definition.title;
for (i = 0; i < view_list.length; i += 1) { for (i = 0; i < view_list.length; i += 1) {
if (view_list[i].name === options.view) { if (view_list[i].name === this.state.view) {
title = view_list[i].title; title = view_list[i].title;
} }
} }
// XXX hardcoded... // XXX hardcoded...
switch (title) { switch (form_gadget.state.title) {
case "Create User": case "Create User":
icon = " ui-icon-user"; icon = " ui-icon-user";
break; break;
...@@ -93,44 +75,48 @@ ...@@ -93,44 +75,48 @@
icon = " ui-icon-random"; icon = " ui-icon-random";
break; break;
} }
span.className = "ui-icon ui-icon-custom" + icon;
span.textContent = "\u00A0";
selector.appendChild(span);
selector.appendChild(document.createTextNode(title));
selector.setAttribute("data-i18n", "[last]" + title);
// <span class="ui-icon ui-icon-custom ui-icon-random">&nbsp;</span> // Calculate the h3 properties
form_options.erp5_document = options.erp5_document; return form_gadget.translate(title)
form_options.form_definition = options.form_definition; .push(function (translated_title) {
form_options.view = options.view; selector.textContent = "\u00A0" + translated_title;
selector.className = "ui-content-title ui-body-c ui-icon ui-icon-custom" + icon;
return new RSVP.Queue() // Render the erp5_from
.push(function () { return form_gadget.getDeclaredGadget("erp5_form");
return form_gadget.translateHtml(section.innerHTML); })
.push(function (erp5_form) {
var form_options = form_gadget.state.erp5_form;
// <span class="ui-icon ui-icon-custom ui-icon-random">&nbsp;</span>
form_options.erp5_document = form_gadget.state.erp5_document;
form_options.form_definition = form_gadget.state.form_definition;
form_options.view = form_gadget.state.view;
return erp5_form.render(form_options);
}) })
.push(function (my_translation_html) { .push(function () {
section.innerHTML = my_translation_html; // Render the headers
return RSVP.all([ return RSVP.all([
erp5_form.render(form_options),
form_gadget.getUrlFor({command: 'change', options: {page: undefined, view: undefined}}), form_gadget.getUrlFor({command: 'change', options: {page: undefined, view: undefined}}),
calculatePageTitle(form_gadget, options.erp5_document) calculatePageTitle(form_gadget, form_gadget.state.erp5_document)
]); ]);
}) })
.push(function (all_result) { .push(function (all_result) {
return form_gadget.updateHeader({ return form_gadget.updateHeader({
cancel_url: all_result[1], cancel_url: all_result[0],
page_title: all_result[2], page_title: all_result[1],
submit_action: true submit_action: true
}); });
}); });
});
}) })
.declareService(function () { .onEvent('submit', function () {
var form_gadget = this; var form_gadget = this,
action = this.state.erp5_document._embedded._view._actions.put,
form_id = this.state.erp5_document._embedded._view.form_id,
redirect_to_parent;
function formSubmit() {
return form_gadget.notifySubmitting() return form_gadget.notifySubmitting()
.push(function () { .push(function () {
return form_gadget.getDeclaredGadget("erp5_form"); return form_gadget.getDeclaredGadget("erp5_form");
...@@ -142,13 +128,12 @@ ...@@ -142,13 +128,12 @@
var data = {}, var data = {},
key; key;
data[form_gadget.props.form_id.key] = data[form_id.key] = form_id['default'];
form_gadget.props.form_id['default'];
// XXX Hardcoded // XXX Hardcoded
data.dialog_id = form_gadget.props.form_id['default']; data.dialog_id = form_id['default'];
data.dialog_method = form_gadget.props.action.action; data.dialog_method = action.action;
//XXX hack for redirect, difined in form //XXX hack for redirect, difined in form
form_gadget.props.redirect_to_parent = content_dict.field_your_redirect_to_parent; redirect_to_parent = content_dict.field_your_redirect_to_parent;
for (key in content_dict) { for (key in content_dict) {
if (content_dict.hasOwnProperty(key)) { if (content_dict.hasOwnProperty(key)) {
data[key] = content_dict[key]; data[key] = content_dict[key];
...@@ -156,8 +141,8 @@ ...@@ -156,8 +141,8 @@
} }
return form_gadget.jio_putAttachment( return form_gadget.jio_putAttachment(
form_gadget.props.id, form_gadget.state.id,
form_gadget.props.action.href, action.href,
data data
); );
...@@ -168,7 +153,7 @@ ...@@ -168,7 +153,7 @@
list = []; list = [];
list.push(form_gadget.notifySubmitted()); list.push(form_gadget.notifySubmitted());
if (form_gadget.props.redirect_to_parent) { if (redirect_to_parent) {
list.push(form_gadget.redirect({command: 'history_previous'})); list.push(form_gadget.redirect({command: 'history_previous'}));
} else { } else {
if (location === undefined || location === null) { if (location === undefined || location === null) {
...@@ -176,11 +161,11 @@ ...@@ -176,11 +161,11 @@
list.push(form_gadget.redirect({command: 'change', options: {view: "view", page: undefined}})); list.push(form_gadget.redirect({command: 'change', options: {view: "view", page: undefined}}));
} else { } else {
jio_key = new URI(location).segment(2); jio_key = new URI(location).segment(2);
if (form_gadget.props.id === jio_key) { if (form_gadget.state.id === jio_key) {
// Do not update navigation history if dialog redirect to the same document // Do not update navigation history if dialog redirect to the same document
list.push(form_gadget.redirect({command: 'change', options: {jio_key: jio_key, editable: form_gadget.props.editable}})); list.push(form_gadget.redirect({command: 'change', options: {jio_key: jio_key, editable: form_gadget.state.editable}}));
} else { } else {
list.push(form_gadget.redirect({command: 'push_history', options: {jio_key: jio_key, editable: form_gadget.props.editable}})); list.push(form_gadget.redirect({command: 'push_history', options: {jio_key: jio_key, editable: form_gadget.state.editable}}));
} }
} }
} }
...@@ -198,15 +183,8 @@ ...@@ -198,15 +183,8 @@
} }
throw error; throw error;
}); });
}
// Listen to form submit }, false, true);
return loopEventListener(
form_gadget.props.element.querySelector('form'),
'submit',
false,
formSubmit
);
});
}(window, rJS, RSVP, URI, loopEventListener, calculatePageTitle)); }(window, rJS, RSVP, URI, calculatePageTitle));
\ No newline at end of file \ No newline at end of file
...@@ -230,7 +230,7 @@ ...@@ -230,7 +230,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>950.30388.38115.23432</string> </value> <value> <string>954.5593.38130.32665</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -248,7 +248,7 @@ ...@@ -248,7 +248,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1460476265.13</float> <float>1474544293.54</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
<script src="renderjs.js" type="text/javascript"></script> <script src="renderjs.js" type="text/javascript"></script>
<!-- custom script --> <!-- custom script -->
<script src="gadget_global.js" type="text/javascript"></script>
<script src="gadget_erp5_global.js" type="text/javascript"></script> <script src="gadget_erp5_global.js" type="text/javascript"></script>
<script src="gadget_erp5_pt_form_list.js" type="text/javascript"></script> <script src="gadget_erp5_pt_form_list.js" type="text/javascript"></script>
...@@ -19,7 +18,7 @@ ...@@ -19,7 +18,7 @@
<!-- XXX action, method, fieldset --> <!-- XXX action, method, fieldset -->
<form class="dialog_form"> <form class="dialog_form">
<button type="submit" data-i18n="Submit" class="ui-btn ui-btn-b ui-btn-inline <button type="submit" class="ui-btn ui-btn-b ui-btn-inline
ui-icon-action ui-btn-icon-right ui-screen-hidden">Submit</button> ui-icon-action ui-btn-icon-right ui-screen-hidden">Submit</button>
<div data-gadget-url="gadget_erp5_searchfield.html" <div data-gadget-url="gadget_erp5_searchfield.html"
......
...@@ -234,7 +234,7 @@ ...@@ -234,7 +234,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>946.44927.40202.16725</string> </value> <value> <string>954.5635.22528.56337</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -252,7 +252,7 @@ ...@@ -252,7 +252,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1460379295.13</float> <float>1475506438.63</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
/*global window, rJS, RSVP, loopEventListener, calculatePageTitle */ /*global window, rJS, RSVP, calculatePageTitle */
/*jslint nomen: true, indent: 2, maxerr: 3 */ /*jslint nomen: true, indent: 2, maxerr: 3 */
(function (window, rJS, RSVP, loopEventListener, calculatePageTitle) { (function (window, rJS, RSVP, calculatePageTitle) {
"use strict"; "use strict";
rJS(window) rJS(window)
/////////////////////////////////////////////////////////////////
// ready
/////////////////////////////////////////////////////////////////
// Init local properties
.ready(function (g) {
g.props = {};
})
// Assign the element to a variable
.ready(function (g) {
return g.getElement()
.push(function (element) {
g.props.element = element;
});
})
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// Acquired methods // Acquired methods
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
...@@ -33,67 +17,94 @@ ...@@ -33,67 +17,94 @@
// declared methods // declared methods
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
.declareMethod('render', function (options) { .declareMethod('render', function (options) {
var gadget = this, var gadget = this;
form_options = options.erp5_form || {}, return gadget.getUrlParameter('extended_search')
search_options = {}; .push(function (extended_search) {
var state_dict = {
id: options.jio_key,
view: options.view,
editable: options.editable,
erp5_document: options.erp5_document,
form_definition: options.form_definition,
erp5_form: options.erp5_form || {},
extended_search: extended_search
};
return gadget.changeState(state_dict);
});
})
.declareMethod('updateDOM', function () {
var form_gadget = this;
// render the erp5 form
return form_gadget.getDeclaredGadget("erp5_form")
.push(function (erp5_form) {
var form_options = form_gadget.state.erp5_form;
form_options.erp5_document = form_gadget.state.erp5_document;
form_options.form_definition = form_gadget.state.form_definition;
form_options.view = form_gadget.state.view;
form_options.erp5_document = options.erp5_document; // XXX Hardcoded for listbox's hide functionality
form_options.form_definition = options.form_definition; form_options.form_definition.hide_enabled = true;
form_options.view = options.view;
// XXX not generic, fix later
if (form_gadget.state.extended_search) {
form_options.form_definition.extended_search = form_gadget.state.extended_search;
}
return new RSVP.Queue() return erp5_form.render(form_options);
})
// render the search field
.push(function () { .push(function () {
return gadget.getUrlParameter('extended_search'); return form_gadget.getDeclaredGadget("erp5_searchfield");
}) })
.push(function (extended_search) { .push(function (search_gadget) {
var search_options = {};
// XXX not generic, fix later // XXX not generic, fix later
if (extended_search) { if (form_gadget.state.extended_search) {
form_options.form_definition.extended_search = extended_search; search_options.extended_search = form_gadget.state.extended_search;
search_options.extended_search = extended_search;
} }
// XXX Hardcoded for listbox's hide functionality return search_gadget.render(search_options);
form_options.form_definition.hide_enabled = true; })
var new_content_action = options.erp5_document._links.action_object_new_content_action;
// render the header
.push(function () {
var new_content_action = form_gadget.state.erp5_document._links.action_object_new_content_action;
if (new_content_action !== undefined) { if (new_content_action !== undefined) {
new_content_action = gadget.getUrlFor({command: 'change', options: {view: new_content_action.href, editable: true}}); new_content_action = form_gadget.getUrlFor({command: 'change', options: {view: new_content_action.href, editable: true}});
} else { } else {
new_content_action = ""; new_content_action = "";
} }
return RSVP.all([ return RSVP.all([
gadget.getDeclaredGadget("erp5_searchfield"),
gadget.getDeclaredGadget("erp5_form"),
new_content_action, new_content_action,
gadget.getUrlFor({command: 'change', options: {page: "action"}}), form_gadget.getUrlFor({command: 'change', options: {page: "action"}}),
gadget.getUrlFor({command: 'display', options: {}}), form_gadget.getUrlFor({command: 'display', options: {}}),
calculatePageTitle(gadget, options.erp5_document) calculatePageTitle(form_gadget, form_gadget.state.erp5_document)
]); ]);
}) })
.push(function (all_gadget) { .push(function (all_gadget) {
return RSVP.all([ return form_gadget.updateHeader({
all_gadget[0].render(search_options),
all_gadget[1].render(form_options),
gadget.updateHeader({
panel_action: true, panel_action: true,
jump_url: "", jump_url: "",
cut_url: "", cut_url: "",
add_url: all_gadget[2], add_url: all_gadget[0],
actions_url: all_gadget[3], actions_url: all_gadget[1],
export_url: "", export_url: "",
page_title: all_gadget[5], page_title: all_gadget[3],
front_url: all_gadget[4], front_url: all_gadget[2],
filter_action: true filter_action: true
}) });
]);
}); });
}) })
.declareMethod('triggerSubmit', function () { .declareMethod('triggerSubmit', function () {
var gadget = this, var gadget = this,
extended_search = '', extended_search = '';
options = {};
return gadget.getDeclaredGadget("erp5_searchfield") return gadget.getDeclaredGadget("erp5_searchfield")
.push(function (search_gadget) { .push(function (search_gadget) {
return search_gadget.getContent(); return search_gadget.getContent();
...@@ -107,18 +118,17 @@ ...@@ -107,18 +118,17 @@
return form_gadget.getListboxInfo(); return form_gadget.getListboxInfo();
}) })
.push(function (result) { .push(function (result) {
var url = "gadget_erp5_search_editor.html"; return gadget.renderEditorPanel("gadget_erp5_search_editor.html", {
options.extended_search = extended_search; extended_search: extended_search,
options.begin_from = result.begin_from; begin_from: result.begin_from,
options.search_column_list = result.search_column_list; search_column_list: result.search_column_list
return gadget.renderEditorPanel(url, options); });
}); });
}) })
.declareService(function () { .onEvent('submit', function () {
var gadget = this; var gadget = this;
function formSubmit() {
return gadget.getDeclaredGadget("erp5_searchfield") return gadget.getDeclaredGadget("erp5_searchfield")
.push(function (search_gadget) { .push(function (search_gadget) {
return search_gadget.getContent(); return search_gadget.getContent();
...@@ -134,16 +144,10 @@ ...@@ -134,16 +144,10 @@
} else { } else {
options.extended_search = undefined; options.extended_search = undefined;
} }
return gadget.redirect({command: 'store_and_change', options: options}); return gadget.redirect({command: 'store_and_change', options: options});
}); });
}
// Listen to form submit
return loopEventListener(
gadget.props.element.querySelector('form'),
'submit',
false,
formSubmit
);
});
}(window, rJS, RSVP, loopEventListener, calculatePageTitle)); }, false, true);
\ No newline at end of file
}(window, rJS, RSVP, calculatePageTitle));
\ No newline at end of file
...@@ -230,7 +230,7 @@ ...@@ -230,7 +230,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>950.28943.57832.60535</string> </value> <value> <string>954.5675.50023.58965</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -248,7 +248,7 @@ ...@@ -248,7 +248,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1460389440.4</float> <float>1474549231.17</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -8,10 +8,8 @@ ...@@ -8,10 +8,8 @@
<!-- renderjs --> <!-- renderjs -->
<script src="rsvp.js" type="text/javascript"></script> <script src="rsvp.js" type="text/javascript"></script>
<script src="renderjs.js" type="text/javascript"></script> <script src="renderjs.js" type="text/javascript"></script>
<script src="URI.js" type="text/javascript"></script>
<!-- custom script --> <!-- custom script -->
<script src="gadget_global.js" type="text/javascript"></script>
<script src="gadget_erp5_global.js" type="text/javascript"></script> <script src="gadget_erp5_global.js" type="text/javascript"></script>
<script src="gadget_erp5_pt_form_view_editable.js" type="text/javascript"></script> <script src="gadget_erp5_pt_form_view_editable.js" type="text/javascript"></script>
......
...@@ -234,7 +234,7 @@ ...@@ -234,7 +234,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>946.44927.40202.16725</string> </value> <value> <string>952.64761.25287.18397</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -252,7 +252,7 @@ ...@@ -252,7 +252,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1460379409.72</float> <float>1475506409.12</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
/*global window, rJS, RSVP, loopEventListener, document, calculatePageTitle */ /*global window, rJS, RSVP, calculatePageTitle */
/*jslint nomen: true, indent: 2, maxerr: 3 */ /*jslint nomen: true, indent: 2, maxerr: 3 */
(function (window, rJS, RSVP, loopEventListener, calculatePageTitle) { (function (window, rJS, RSVP, calculatePageTitle) {
"use strict"; "use strict";
rJS(window) rJS(window)
/////////////////////////////////////////////////////////////////
// ready
/////////////////////////////////////////////////////////////////
// Init local properties
.ready(function (g) {
g.props = {};
})
// Assign the element to a variable
.ready(function (g) {
return g.getElement()
.push(function (element) {
g.props.element = element;
});
})
.declareAcquiredMethod("jio_putAttachment", "jio_putAttachment") .declareAcquiredMethod("jio_putAttachment", "jio_putAttachment")
.declareAcquiredMethod("translateHtml", "translateHtml")
.declareAcquiredMethod("getUrlFor", "getUrlFor") .declareAcquiredMethod("getUrlFor", "getUrlFor")
.declareAcquiredMethod("redirect", "redirect") .declareAcquiredMethod("redirect", "redirect")
.declareAcquiredMethod("updateHeader", "updateHeader") .declareAcquiredMethod("updateHeader", "updateHeader")
...@@ -35,86 +19,89 @@ ...@@ -35,86 +19,89 @@
// declared methods // declared methods
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
.declareMethod('triggerSubmit', function () { .declareMethod('triggerSubmit', function () {
this.props.element.querySelector('button').click(); this.element.querySelector('button').click();
}) })
.declareMethod('render', function (options) {
var erp5_document = options.erp5_document,
form_gadget = this,
action_dict = erp5_document._embedded._view._actions;
form_gadget.props.id = options.jio_key; .declareMethod('render', function (options) {
form_gadget.props.view = options.view; var state_dict = {
form_gadget.props.form_id = erp5_document._embedded._view.form_id; id: options.jio_key,
view: options.view,
editable: options.editable,
erp5_document: options.erp5_document,
form_definition: options.form_definition,
erp5_form: options.erp5_form || {}
};
return this.changeState(state_dict);
})
if (action_dict !== undefined) { .declareMethod('updateDOM', function () {
form_gadget.props.action = erp5_document._embedded._view._actions.put; var form_gadget = this;
}
// render the erp5 form
return form_gadget.getDeclaredGadget("erp5_form") return form_gadget.getDeclaredGadget("erp5_form")
.push(function (erp5_form) { .push(function (erp5_form) {
var form_options = options.erp5_form || {}, var form_options = form_gadget.state.erp5_form;
new_content_action,
delete_action; form_options.erp5_document = form_gadget.state.erp5_document;
form_options.form_definition = form_gadget.state.form_definition;
form_options.view = form_gadget.state.view;
return erp5_form.render(form_options);
})
// render the header
.push(function () {
var new_content_action = form_gadget.state.erp5_document._links.action_object_new_content_action,
delete_action = form_gadget.state.erp5_document._links.action_object_delete_action,
save_action = false;
form_options.erp5_document = options.erp5_document; if (form_gadget.state.erp5_document._embedded._view._actions !== undefined) {
form_options.form_definition = options.form_definition; if (form_gadget.state.erp5_document._embedded._view._actions.put !== undefined) {
form_options.view = options.view; save_action = true;
}
}
new_content_action = options.erp5_document._links.action_object_new_content_action;
if (new_content_action !== undefined) { if (new_content_action !== undefined) {
new_content_action = form_gadget.getUrlFor({command: 'change', options: {view: new_content_action.href, editable: true}}); new_content_action = form_gadget.getUrlFor({command: 'change', options: {view: new_content_action.href, editable: true}});
} else { } else {
new_content_action = ""; new_content_action = "";
} }
delete_action = options.erp5_document._links.action_object_delete_action;
if (delete_action !== undefined) { if (delete_action !== undefined) {
delete_action = form_gadget.getUrlFor({command: 'change', options: {view: delete_action.href, editable: undefined}}); delete_action = form_gadget.getUrlFor({command: 'change', options: {view: delete_action.href, editable: undefined}});
} else { } else {
delete_action = ""; delete_action = "";
} }
return RSVP.all([ return RSVP.all([
erp5_form.render(form_options),
form_gadget.getUrlFor({command: 'change', options: {page: "tab"}}), form_gadget.getUrlFor({command: 'change', options: {page: "tab"}}),
form_gadget.getUrlFor({command: 'change', options: {page: "action", editable: true}}), form_gadget.getUrlFor({command: 'change', options: {page: "action", editable: true}}),
new_content_action, new_content_action,
form_gadget.getUrlFor({command: 'history_previous'}), form_gadget.getUrlFor({command: 'history_previous'}),
delete_action, delete_action,
calculatePageTitle(form_gadget, options.erp5_document) save_action,
calculatePageTitle(form_gadget, form_gadget.state.erp5_document)
]); ]);
}) })
.push(function (all_result) { .push(function (all_result) {
var header_dict = { return form_gadget.updateHeader({
tab_url: all_result[1], tab_url: all_result[0],
actions_url: all_result[2], actions_url: all_result[1],
add_url: all_result[3], add_url: all_result[2],
selection_url: all_result[4], selection_url: all_result[3],
delete_url: all_result[5], delete_url: all_result[4],
cut_url: "", cut_url: "",
page_title: all_result[6] page_title: all_result[6],
}; save_action: all_result[5]
if (form_gadget.props.action !== undefined) { });
header_dict.save_action = true;
}
return form_gadget.updateHeader(header_dict);
}); });
}) })
.onEvent('submit', function () {
var form_gadget = this,
erp5_form,
form_id = this.state.erp5_document._embedded._view.form_id,
action = form_gadget.state.erp5_document._embedded._view._actions.put;
.declareService(function () {
////////////////////////////////////
// Form submit listening
////////////////////////////////////
var form_gadget = this;
function formSubmit() {
var erp5_form;
if (form_gadget.props.action === undefined) {
// If not action is defined on form, do nothing
return;
}
return form_gadget.getDeclaredGadget("erp5_form") return form_gadget.getDeclaredGadget("erp5_form")
.push(function (gadget) { .push(function (gadget) {
erp5_form = gadget; erp5_form = gadget;
...@@ -125,14 +112,13 @@ ...@@ -125,14 +112,13 @@
return erp5_form.getContent() return erp5_form.getContent()
.push(function (data) { .push(function (data) {
data[form_gadget.props.form_id.key] = data[form_id.key] = form_id['default'];
form_gadget.props.form_id['default'];
return RSVP.all([ return RSVP.all([
form_gadget.notifySubmitting(), form_gadget.notifySubmitting(),
form_gadget.jio_putAttachment( form_gadget.jio_putAttachment(
form_gadget.props.id, form_gadget.state.id,
form_gadget.props.action.href, action.href,
data data
) )
]); ]);
...@@ -155,15 +141,7 @@ ...@@ -155,15 +141,7 @@
}); });
} }
}); });
}
// Listen to form submit }, false, true);
return loopEventListener(
form_gadget.props.element.querySelector('form'),
'submit',
false,
formSubmit
);
});
}(window, rJS, RSVP, loopEventListener, calculatePageTitle)); }(window, rJS, RSVP, calculatePageTitle));
\ No newline at end of file \ No newline at end of file
...@@ -230,7 +230,7 @@ ...@@ -230,7 +230,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>950.28778.40365.28040</string> </value> <value> <string>954.5631.5200.57036</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -248,7 +248,7 @@ ...@@ -248,7 +248,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1460380770.14</float> <float>1474549439.64</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -8,10 +8,8 @@ ...@@ -8,10 +8,8 @@
<!-- renderjs --> <!-- renderjs -->
<script src="rsvp.js" type="text/javascript"></script> <script src="rsvp.js" type="text/javascript"></script>
<script src="renderjs.js" type="text/javascript"></script> <script src="renderjs.js" type="text/javascript"></script>
<script src="URI.js" type="text/javascript"></script>
<!-- custom script --> <!-- custom script -->
<script src="gadget_global.js" type="text/javascript"></script>
<script src="gadget_erp5_global.js" type="text/javascript"></script> <script src="gadget_erp5_global.js" type="text/javascript"></script>
<script src="gadget_erp5_pt_form_view.js" type="text/javascript"></script> <script src="gadget_erp5_pt_form_view.js" type="text/javascript"></script>
......
...@@ -234,7 +234,7 @@ ...@@ -234,7 +234,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>946.44927.40202.16725</string> </value> <value> <string>954.23068.50721.21589</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -252,7 +252,7 @@ ...@@ -252,7 +252,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1460379399.92</float> <float>1475506379.44</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
...@@ -3,18 +3,7 @@ ...@@ -3,18 +3,7 @@
(function (window, rJS, RSVP, calculatePageTitle) { (function (window, rJS, RSVP, calculatePageTitle) {
"use strict"; "use strict";
// Precompile the templates while loading the first gadget instance rJS(window)
var gadget_klass = rJS(window);
gadget_klass
/////////////////////////////////////////////////////////////////
// ready
/////////////////////////////////////////////////////////////////
// Init local properties
.ready(function (g) {
g.props = {};
})
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
// Acquired methods // Acquired methods
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
...@@ -25,11 +14,25 @@ ...@@ -25,11 +14,25 @@
// declared methods // declared methods
///////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////
.declareMethod('render', function (options) { .declareMethod('render', function (options) {
var state_dict = {
id: options.jio_key,
view: options.view,
editable: options.editable,
erp5_document: options.erp5_document,
form_definition: options.form_definition,
erp5_form: options.erp5_form || {}
};
return this.changeState(state_dict);
})
.declareMethod('updateDOM', function () {
var gadget = this; var gadget = this;
// render the erp5 form
return this.getDeclaredGadget("erp5_form") return this.getDeclaredGadget("erp5_form")
.push(function (form_gadget) { .push(function (erp5_form) {
var form_options = options.erp5_form || {}, var form_options = gadget.state.erp5_form,
rendered_form = options.erp5_document._embedded._view, rendered_form = gadget.state.erp5_document._embedded._view,
rendered_field, rendered_field,
key; key;
...@@ -46,32 +49,35 @@ ...@@ -46,32 +49,35 @@
} }
} }
form_options.erp5_document = options.erp5_document; form_options.erp5_document = gadget.state.erp5_document;
form_options.form_definition = options.form_definition; form_options.form_definition = gadget.state.form_definition;
form_options.view = options.view; form_options.view = gadget.state.view;
return erp5_form.render(form_options);
})
// render the header
.push(function () {
return RSVP.all([ return RSVP.all([
form_gadget.render(form_options),
gadget.getUrlFor({command: 'change', options: {editable: true}}), gadget.getUrlFor({command: 'change', options: {editable: true}}),
gadget.getUrlFor({command: 'change', options: {page: "action"}}), gadget.getUrlFor({command: 'change', options: {page: "action"}}),
gadget.getUrlFor({command: 'history_previous'}), gadget.getUrlFor({command: 'history_previous'}),
gadget.getUrlFor({command: 'selection_previous'}), gadget.getUrlFor({command: 'selection_previous'}),
gadget.getUrlFor({command: 'selection_next'}), gadget.getUrlFor({command: 'selection_next'}),
gadget.getUrlFor({command: 'change', options: {page: "tab"}}), gadget.getUrlFor({command: 'change', options: {page: "tab"}}),
calculatePageTitle(gadget, options.erp5_document) calculatePageTitle(gadget, gadget.state.erp5_document)
]); ]);
}) })
.push(function (all_result) { .push(function (all_result) {
return gadget.updateHeader({ return gadget.updateHeader({
edit_url: all_result[1], edit_url: all_result[0],
actions_url: all_result[2], actions_url: all_result[1],
selection_url: all_result[3], selection_url: all_result[2],
previous_url: all_result[4], previous_url: all_result[3],
next_url: all_result[5], next_url: all_result[4],
tab_url: all_result[6], tab_url: all_result[5],
export_url: "", export_url: "",
page_title: all_result[7] page_title: all_result[6]
}); });
}); });
}); });
......
...@@ -230,7 +230,7 @@ ...@@ -230,7 +230,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>952.13100.46637.65024</string> </value> <value> <string>954.5630.32927.153</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -248,7 +248,7 @@ ...@@ -248,7 +248,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1467219125.65</float> <float>1474546509.43</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
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