Skip to content

Commit

Permalink
js: Use a submit event's submitter property to identify the submit …
Browse files Browse the repository at this point in the history
…button
  • Loading branch information
nilmerg committed Nov 4, 2024
1 parent 48dcb05 commit eef276b
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 22 deletions.
32 changes: 20 additions & 12 deletions public/js/icinga/behavior/modal.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,31 +92,39 @@
* @returns {boolean}
*/
Modal.prototype.onFormSubmit = function(event) {
var _this = event.data.self;
var $form = $(event.currentTarget).closest('form');
var $modal = $form.closest('#modal');

var $button;
var $rememberedSubmittButton = $form.data('submitButton');
if (typeof $rememberedSubmittButton != 'undefined') {
if ($form.has($rememberedSubmittButton)) {
$button = $rememberedSubmittButton;
const _this = event.data.self;
const $form = $(event.currentTarget).closest('form');
const $modal = $form.closest('#modal');

let $button;
if (typeof event.originalEvent !== 'undefined'
&& typeof event.originalEvent.submitter !== 'undefined'
&& event.originalEvent.submitter !== null) {
$button = $(event.originalEvent.submitter);
}

// Safari fallback only
const $rememberedSubmitButton = $form.data('submitButton');
if (typeof $rememberedSubmitButton !== 'undefined') {
if (typeof $button === 'undefined' && $form.has($rememberedSubmitButton)) {
$button = $rememberedSubmitButton;
}

$form.removeData('submitButton');
}

let $autoSubmittedBy;
if (! $autoSubmittedBy && event.detail && event.detail.submittedBy) {
if (typeof event.detail !== 'undefined' && "submittedBy" in event.detail) {
$autoSubmittedBy = $(event.detail.submittedBy);
}

// Prevent our other JS from running
$modal[0].dataset.noIcingaAjax = '';

var req = _this.icinga.loader.submitForm($form, $autoSubmittedBy, $button);
const req = _this.icinga.loader.submitForm($form, $autoSubmittedBy, $button);
req.addToHistory = false;
req.done(function (data, textStatus, req) {
var title = req.getResponseHeader('X-Icinga-Title');
const title = req.getResponseHeader('X-Icinga-Title');
if (!! title) {
_this.setTitle($modal, decodeURIComponent(title).replace(/\s::\s.*/, ''));
}
Expand Down
28 changes: 18 additions & 10 deletions public/js/icinga/events.js
Original file line number Diff line number Diff line change
Expand Up @@ -200,26 +200,34 @@
*
*/
submitForm: function (event, $autoSubmittedBy) {
var _this = event.data.self;
const _this = event.data.self;

// .closest is not required unless subelements to trigger this
var $form = $(event.currentTarget).closest('form');
const $form = $(event.currentTarget).closest('form');

if ($form.closest('[data-no-icinga-ajax]').length > 0) {
return true;
}

var $button;
var $rememberedSubmittButton = $form.data('submitButton');
if (typeof $rememberedSubmittButton != 'undefined') {
if ($form.has($rememberedSubmittButton)) {
$button = $rememberedSubmittButton;

let $button;
if (typeof event.originalEvent !== 'undefined'
&& typeof event.originalEvent.submitter !== 'undefined'
&& event.originalEvent.submitter !== null) {
$button = $(event.originalEvent.submitter);
}

// Safari fallback only
const $rememberedSubmitButton = $form.data('submitButton');
if (typeof $rememberedSubmitButton !== 'undefined') {
if (typeof $button === 'undefined' && $form.has($rememberedSubmitButton)) {
$button = $rememberedSubmitButton;
}

$form.removeData('submitButton');
}

if (typeof $button === 'undefined') {
var $el;
let $el;

if (typeof event.originalEvent !== 'undefined'
&& typeof event.originalEvent.explicitOriginalTarget === 'object') { // Firefox
Expand All @@ -239,7 +247,7 @@
}
}

if (! $autoSubmittedBy && event.detail && event.detail.submittedBy) {
if (! $autoSubmittedBy && typeof event.detail !== 'undefined' && "submittedBy" in event.detail) {
$autoSubmittedBy = $(event.detail.submittedBy);
}

Expand Down

0 comments on commit eef276b

Please sign in to comment.