From 248ee476fddb4edd378f0555aaf19ab4c3b964ae Mon Sep 17 00:00:00 2001 From: "Lopes Marc (loma)" Date: Thu, 27 Jul 2023 11:36:09 +0000 Subject: [PATCH] [FIX] website_slides: create new sections only once MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug to reproduce ---------------- - Log in as admin - Go to the frontend page of a course - Click on 'Add Section' - Fill the form (name input) - Press 'Enter' or click on save button x times x sections with the same name will be created Specifications -------------- Prevent the 'Add section' form being submitted multiple times in a row. task-3432418 closes odoo/odoo#131107 X-original-commit: a91a60b4be5b2f606d20fbe574625b85e43407f6 Signed-off-by: Warnon Aurélien (awa) --- .../static/src/js/slides_category_add.js | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/addons/website_slides/static/src/js/slides_category_add.js b/addons/website_slides/static/src/js/slides_category_add.js index 1ea78569023..e7b7f59b1cc 100644 --- a/addons/website_slides/static/src/js/slides_category_add.js +++ b/addons/website_slides/static/src/js/slides_category_add.js @@ -6,6 +6,10 @@ import { _t } from "@web/legacy/js/services/core"; var CategoryAddDialog = Dialog.extend({ template: 'slides.category.add', + events: Object.assign( + { "submit form#slide_category_add_form": "_onClickFormSubmit" }, + Dialog.events + ), /** * @override @@ -16,8 +20,8 @@ var CategoryAddDialog = Dialog.extend({ size: 'medium', buttons: [{ text: _t('Save'), - classes: 'btn-primary', - click: this._onClickFormSubmit.bind(this) + classes: 'btn-primary o_js_website_slides_add_category_btn', + click: this._onClickFormSubmit.bind(this), }, { text: _t('Back'), close: true @@ -37,10 +41,24 @@ var CategoryAddDialog = Dialog.extend({ return $form[0].checkValidity(); }, + //-------------------------------------------------------------------------- + // Handlers + //-------------------------------------------------------------------------- + + /** + * Handle form submission on click button or press ENTER key. Prevent multiple submissions + * @private + * @param {Event} ev + */ _onClickFormSubmit: function (ev) { - var $form = this.$('#slide_category_add_form'); - if (this._formValidate($form)) { - $form.submit(); + ev.preventDefault(); + const form = document.getElementById("slide_category_add_form"); + if (!form.classList.contains("o_js_website_slides_form_submitted")) { + if (this._formValidate($(form))) { + form.classList.add("o_js_website_slides_form_submitted"); + document.querySelector("button.o_js_website_slides_add_category_btn").disabled = true; + form.submit(); + } } }, });