? ajax-error.patch Index: feedback.css =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/feedback/feedback.css,v retrieving revision 1.4.2.1 diff -u -p -r1.4.2.1 feedback.css --- feedback.css 8 Jan 2010 16:55:07 -0000 1.4.2.1 +++ feedback.css 31 Dec 2010 01:45:29 -0000 @@ -68,6 +68,9 @@ width: 200px; } #block-feedback-form #feedback-throbber { + min-height: 20px; +} +* html #block-feedback-form #feedback-throbber { height: 20px; } #block-feedback-form .throbbing { @@ -77,3 +80,6 @@ background-color: #fff; margin: 0; } +#block-feedback-form #feedback-error-message { + color: #ff0000; +} Index: feedback.js =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/feedback/feedback.js,v retrieving revision 1.3.2.2 diff -u -p -r1.3.2.2 feedback.js --- feedback.js 8 Jan 2010 22:21:11 -0000 1.3.2.2 +++ feedback.js 31 Dec 2010 01:45:29 -0000 @@ -55,25 +55,43 @@ Drupal.feedbackFormToggle = function ($b }; /** - * Collapse or uncollapse the feedback form block. + * Submit the feedback form. */ Drupal.feedbackFormSubmit = function ($form) { - $.post($form.get(0).action, $form.serialize(), function (data) { - // Collapse the form. - $('#block-feedback-form').find('.feedback-link').click(); - // Display status message. - $form.parent().parent().append('
' + data.message + '
'); - // Reset form values. - $(':input[name="message"]', $form).val(''); - $('#feedback-throbber', $form).removeClass('throbbing'); - $('#feedback-submit', $form).show(); - // Blend out status message. - window.setTimeout(function () { - $('#feedback-status-message').fadeOut('slow', function () { - $(this).remove(); - }); - }, 3000); - }, 'json'); + $.ajax({ + url: $form.get(0).action, + type: 'POST', + data: $form.serialize(), + success: function (data) { + // Collapse the form. + $('#block-feedback-form').find('.feedback-link').click(); + // Display status message. + $form.parent().parent().append('
' + data.message + '
'); + // Reset form values. + $(':input[name="message"]', $form).val(''); + Drupal.feedbackFormReset($form); + // Blend out status message. + window.setTimeout(function () { + $('#feedback-status-message').fadeOut('slow', function () { + $(this).remove(); + }); + }, 3000); + }, + error: function () { + Drupal.feedbackFormReset($form); + // Display error message. + $("#feedback-throbber").prepend('
' + Drupal.t("An error occurred.") + '
'); + }, + dataType: 'json' + }); return false; }; +/** + * Reset the feedback form. + */ +Drupal.feedbackFormReset = function ($form) { + $("#feedback-error-message").remove(); + $('#feedback-throbber', $form).removeClass('throbbing'); + $('#feedback-submit', $form).show(); +}