From b4395139b1053032013c1d815be3a60eaf2963f0 Mon Sep 17 00:00:00 2001 From: Angie Byron Date: Sat, 20 Nov 2010 04:19:34 +0000 Subject: #969346 by merlinofchaos, sun: Fixed CTools AJAX regression: AJAX calls made with things that are not forms cannot use the throbber. --- misc/ajax.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'misc/ajax.js') diff --git a/misc/ajax.js b/misc/ajax.js index bee4e4282..0fda3eb45 100644 --- a/misc/ajax.js +++ b/misc/ajax.js @@ -37,6 +37,8 @@ Drupal.behaviors.AJAX = { // Bind AJAX behaviors to all items showing the class. $('.use-ajax:not(.ajax-processed)').addClass('ajax-processed').each(function () { var element_settings = {}; + // Clicked links look better with the throbber than the progress bar. + element_settings.progress = { 'type': 'throbber' }; // For anchor tags, these will go to the target of the anchor rather // than the usual location. @@ -146,6 +148,10 @@ Drupal.ajax = function (base, element, element_settings) { ajax.ajaxing = true; return ajax.beforeSubmit(form_values, element_settings, options); }, + beforeSend: function (xmlhttprequest) { + ajax.ajaxing = true; + return ajax.beforeSend(xmlhttprequest, ajax.options); + }, success: function (response, status) { // Sanity check for browser support (object expected). // When using iFrame uploads, responses must be returned as a string. @@ -213,7 +219,7 @@ Drupal.ajax = function (base, element, element_settings) { /** * Handler for the form serialization. * - * Runs before the beforeSubmit() handler (see below), and unlike that one, runs + * Runs before the beforeSend() handler (see below), and unlike that one, runs * before field data is collected. */ Drupal.ajax.prototype.beforeSerialize = function (element, options) { @@ -250,9 +256,17 @@ Drupal.ajax.prototype.beforeSerialize = function (element, options) { }; /** - * Handler for the form redirection submission. + * Modify form values prior to form submission. */ Drupal.ajax.prototype.beforeSubmit = function (form_values, element, options) { + // This function is left empty to make it simple to override for modules + // that wish to add functionality here. +} + +/** + * Prepare the AJAX request before it is sent. + */ +Drupal.ajax.prototype.beforeSend = function (xmlhttprequest, options) { // Disable the element that received the change. $(this.element).addClass('progress-disabled').attr('disabled', true); -- cgit v1.2.3