summaryrefslogtreecommitdiff
path: root/addons/website/static/src/js/website.js
diff options
context:
space:
mode:
Diffstat (limited to 'addons/website/static/src/js/website.js')
-rw-r--r--addons/website/static/src/js/website.js50
1 files changed, 45 insertions, 5 deletions
diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js
index b1ba9b801fc..64767d95171 100644
--- a/addons/website/static/src/js/website.js
+++ b/addons/website/static/src/js/website.js
@@ -13,6 +13,31 @@
}, dict);
};
+ website.parseQS = function (qs) {
+ var match,
+ params = {},
+ pl = /\+/g, // Regex for replacing addition symbol with a space
+ search = /([^&=]+)=?([^&]*)/g;
+
+ while ((match = search.exec(qs))) {
+ var name = decodeURIComponent(match[1].replace(pl, " "));
+ var value = decodeURIComponent(match[2].replace(pl, " "));
+ params[name] = value;
+ }
+ return params;
+ };
+
+ var parsedSearch;
+ website.parseSearch = function () {
+ if (!parsedSearch) {
+ parsedSearch = website.parseQS(window.location.search.substring(1));
+ }
+ return parsedSearch;
+ };
+ website.parseHash = function () {
+ return website.parseQS(window.location.hash.substring(1));
+ };
+
/* ----- TEMPLATE LOADING ---- */
var templates_def = $.Deferred().resolve();
website.add_template_file = function(template) {
@@ -173,7 +198,7 @@
init: function() {}
}, options || {});
- var type = _.intersect(Object.keys(options), ['input', 'textarea', 'select']);
+ var type = _.intersection(Object.keys(options), ['input', 'textarea', 'select']);
type = type.length ? type[0] : 'text';
options.field_type = type;
options.field_name = options.field_name || options[type];
@@ -211,6 +236,7 @@
if (field.is('input[type="text"], select')) {
field.keypress(function (e) {
if (e.which == 13) {
+ e.preventDefault();
dialog.find('.btn-primary').trigger('click');
}
});
@@ -218,6 +244,21 @@
return def;
};
+ website.form = function (url, method, params) {
+ var form = document.createElement('form');
+ form.action = url;
+ form.method = method;
+ _.each(params, function (v, k) {
+ var param = document.createElement('input');
+ param.type = 'hidden';
+ param.name = k;
+ param.value = v;
+ form.appendChild(param);
+ });
+ document.body.appendChild(form);
+ form.submit();
+ };
+
dom_ready.then(function () {
/* ----- BOOTSTRAP STUFF ---- */
@@ -225,15 +266,14 @@
/* ----- PUBLISHING STUFF ---- */
$(document).on('click', '.js_publish_management .js_publish_btn', function () {
- var $data = $(this).parent(".js_publish_management");
- var self=this;
+ var $data = $(this).parents(".js_publish_management:first");
+ var self=this;
openerp.jsonRpc($data.data('controller') || '/website/publish', 'call', {'id': +$data.data('id'), 'object': $data.data('object')})
.then(function (result) {
$data.toggleClass("css_unpublished css_published");
- $(self).toggleClass("btn-success btn-danger");
$data.parents("[data-publish]").attr("data-publish", +result ? 'on' : 'off');
}).fail(function (err, data) {
- website.error(data, '/web#model='+$data.data('object')+'&id='+$data.data('id'));
+ website.error(data, '/web#return_label=Website&model='+$data.data('object')+'&id='+$data.data('id'));
});
});