diff options
Diffstat (limited to 'core/misc/dialog/dialog.ajax.js')
-rw-r--r-- | core/misc/dialog/dialog.ajax.js | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/core/misc/dialog/dialog.ajax.js b/core/misc/dialog/dialog.ajax.js index 3f01d4939496..7445a261e062 100644 --- a/core/misc/dialog/dialog.ajax.js +++ b/core/misc/dialog/dialog.ajax.js @@ -15,6 +15,7 @@ } var $dialog = $context.closest('.ui-dialog-content'); + if ($dialog.length) { if ($dialog.dialog('option', 'drupalAutoButtons')) { $dialog.trigger('dialogButtonsChange'); @@ -26,7 +27,7 @@ var originalClose = settings.dialog.close; settings.dialog.close = function (event) { - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } @@ -38,10 +39,12 @@ var buttons = []; var $buttons = $dialog.find('.form-actions input[type=submit], .form-actions a.button'); $buttons.each(function () { - var $originalButton = $(this).css({ display: 'none' }); + var $originalButton = $(this).css({ + display: 'none' + }); buttons.push({ text: $originalButton.html() || $originalButton.attr('value'), - class: $originalButton.attr('class'), + "class": $originalButton.attr('class'), click: function click(e) { if ($originalButton.is('a')) { $originalButton[0].click(); @@ -60,9 +63,11 @@ if (!response.selector) { return false; } + var $dialog = $(response.selector); + if (!$dialog.length) { - $dialog = $('<div id="' + response.selector.replace(/^#/, '') + '" class="ui-front"/>').appendTo('body'); + $dialog = $("<div id=\"".concat(response.selector.replace(/^#/, ''), "\" class=\"ui-front\"/>")).appendTo('body'); } if (!ajax.wrapper) { @@ -82,9 +87,9 @@ var buttons = Drupal.behaviors.dialog.prepareDialogButtons($dialog); $dialog.dialog('option', 'buttons', buttons); }); - response.dialogOptions = response.dialogOptions || {}; var dialog = Drupal.dialog($dialog.get(0), response.dialogOptions); + if (response.dialogOptions.modal) { dialog.showModal(); } else { @@ -96,8 +101,10 @@ Drupal.AjaxCommands.prototype.closeDialog = function (ajax, response, status) { var $dialog = $(response.selector); + if ($dialog.length) { Drupal.dialog($dialog.get(0)).close(); + if (!response.persist) { $dialog.remove(); } @@ -108,6 +115,7 @@ Drupal.AjaxCommands.prototype.setDialogOption = function (ajax, response, status) { var $dialog = $(response.selector); + if ($dialog.length) { $dialog.dialog('option', response.optionName, response.optionValue); } @@ -120,7 +128,6 @@ e.stopPropagation(); }); }); - $(window).on('dialog:beforeclose', function (e, dialog, $element) { $element.off('.dialog'); }); |