summaryrefslogtreecommitdiff
path: root/addons/website/static/src/js/utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/website/static/src/js/utils.js')
-rw-r--r--addons/website/static/src/js/utils.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/addons/website/static/src/js/utils.js b/addons/website/static/src/js/utils.js
index 7947eb6f93c..2544f4347fc 100644
--- a/addons/website/static/src/js/utils.js
+++ b/addons/website/static/src/js/utils.js
@@ -227,11 +227,44 @@ function websiteDomain(self) {
return ['|', ['website_id', '=', false], ['website_id', '=', websiteID]];
}
+function sendRequest(route, params) {
+ function _addInput(form, name, value) {
+ let param = document.createElement('input');
+ param.setAttribute('type', 'hidden');
+ param.setAttribute('name', name);
+ param.setAttribute('value', value);
+ form.appendChild(param);
+ }
+
+ let form = document.createElement('form');
+ form.setAttribute('action', route);
+ form.setAttribute('method', params.method || 'POST');
+
+ if (core.csrf_token) {
+ _addInput(form, 'csrf_token', core.csrf_token);
+ }
+
+ for (const key in params) {
+ const value = params[key];
+ if (Array.isArray(value) && value.length) {
+ for (const val of value) {
+ _addInput(form, key, val);
+ }
+ } else {
+ _addInput(form, key, value);
+ }
+ }
+
+ document.body.appendChild(form);
+ form.submit();
+}
+
return {
loadAnchors: loadAnchors,
autocompleteWithPages: autocompleteWithPages,
onceAllImagesLoaded: onceAllImagesLoaded,
prompt: prompt,
+ sendRequest: sendRequest,
websiteDomain: websiteDomain,
};
});