From f71b934ce6686a1e9f83c5b73f5e828cd3475ab6 Mon Sep 17 00:00:00 2001 From: Nicolas Lempereur Date: Tue, 29 May 2018 17:08:22 +0200 Subject: [FIX] website_event: unblock button when no reserve The website_event_questions override EventRegistrationForm's method on_click and expects the returns is a deferred. This commit provides a deferred in all instances avoiding an error. Also what was done in e9454e79 and enables back the Register Now button if no ticket was selected. opw-1850527 In 11.0, this change e9454e79 solved the use case of: - opening the registration of a ticket - discard => the page must be reloaded to register a ticket A new report is that since 9.0, if we try to register 0 ticket we would also have to reload the page. This commit backports e9454e79 and solves the 0 ticket registration. Also if website_event_questions was installed there was an error preventing an error message to be displayed. saas-15 version of 9.0's #24966 opw-1851622 closes #24967 --- addons/website_event/static/src/js/website_event.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'addons/website_event/static/src/js') diff --git a/addons/website_event/static/src/js/website_event.js b/addons/website_event/static/src/js/website_event.js index 9d588065d44..74bfb9b980c 100644 --- a/addons/website_event/static/src/js/website_event.js +++ b/addons/website_event/static/src/js/website_event.js @@ -1,9 +1,12 @@ odoo.define('website_event.website_event', function (require) { var ajax = require('web.ajax'); +var core = require('web.core'); var Widget = require('web.Widget'); var web_editor_base = require('web_editor.base') +var _t = core._t; + // Catch registration form event, because of JS for attendee details var EventRegistrationForm = Widget.extend({ start: function() { @@ -13,7 +16,6 @@ var EventRegistrationForm = Widget.extend({ .off('click') .removeClass('a-submit') .click(function (ev) { - $(this).attr('disabled', true); self.on_click(ev); }); }); @@ -23,23 +25,28 @@ var EventRegistrationForm = Widget.extend({ ev.preventDefault(); ev.stopPropagation(); var $form = $(ev.currentTarget).closest('form'); + var $button = $(ev.currentTarget).closest('[type="submit"]'); var post = {}; + $('#registration_form table').siblings('.alert').remove(); $("#registration_form select").each(function() { post[$(this).attr('name')] = $(this).val(); }); var tickets_ordered = _.some(_.map(post, function(value, key) { return parseInt(value) })); if (! tickets_ordered) { - return $('#registration_form table').after( - '
Please select at least one ticket.
' - ); + $('
') + .text(_t('Please select at least one ticket.')) + .insertAfter('#registration_form table'); + return $.Deferred(); } else { + $button.attr('disabled', true); return ajax.jsonRpc($form.attr('action'), 'call', post).then(function (modal) { var $modal = $(modal); $modal.find('.modal-body > div').removeClass('container'); // retrocompatibility - REMOVE ME in master / saas-19 - $modal.after($form).modal(); + $modal.insertAfter($form).modal(); $modal.on('click', '.js_goto_event', function () { $modal.modal('hide'); + $button.prop('disabled', false); }); }); } -- cgit v1.2.3