From 8d1998dd8e04b0916b5adec3f928a58afb366661 Mon Sep 17 00:00:00 2001
From: Ere Maijala <ere.maijala@helsinki.fi>
Date: Thu, 25 Feb 2016 11:06:01 +0200
Subject: [PATCH] Fix AJAX fail handlers to not cause JS errors if responseJSON
 is not defined.

---
 themes/bootstrap3/js/check_item_statuses.js | 5 +++--
 themes/bootstrap3/js/openurl.js             | 6 +++---
 themes/bootstrap3/js/record.js              | 2 +-
 3 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/themes/bootstrap3/js/check_item_statuses.js b/themes/bootstrap3/js/check_item_statuses.js
index 0aeec0d860a..04dec21f4a7 100644
--- a/themes/bootstrap3/js/check_item_statuses.js
+++ b/themes/bootstrap3/js/check_item_statuses.js
@@ -80,9 +80,10 @@ function checkItemStatuses() {
     $(".ajax-availability").removeClass('ajax-availability');
   })
   .fail(function(response, textStatus) {
-    if (textStatus == "abort") { return; }
+    $('.ajax-availability').empty();
+    if (textStatus == 'abort' || typeof response.responseJSON === 'undefined') { return; }
     // display the error message on each of the ajax status place holder
-    $(".ajax-availability").empty().append(response.responseJSON.data).addClass('text-danger');
+    $('.ajax-availability').append(response.responseJSON.data).addClass('text-danger');
   });
 }
 
diff --git a/themes/bootstrap3/js/openurl.js b/themes/bootstrap3/js/openurl.js
index 638c6373b5a..88f50d1dbd4 100644
--- a/themes/bootstrap3/js/openurl.js
+++ b/themes/bootstrap3/js/openurl.js
@@ -11,9 +11,9 @@ function loadResolverLinks($target, openUrl, searchClassId) {
     $target.removeClass('ajax_availability').empty().append(response.data);
   })
   .fail(function(response, textStatus) {
-    if (textStatus == "abort") { return; }
-    $target.removeClass('ajax_availability').addClass('text-danger')
-      .empty().append(response.responseJSON.data);
+    $target.removeClass('ajax_availability').addClass('text-danger').empty();
+    if (textStatus == 'abort' || typeof response.responseJSON === 'undefined') { return; }
+    $target.append(response.responseJSON.data);
   });
 }
 
diff --git a/themes/bootstrap3/js/record.js b/themes/bootstrap3/js/record.js
index b57f6b22fa9..6ed8710bde7 100644
--- a/themes/bootstrap3/js/record.js
+++ b/themes/bootstrap3/js/record.js
@@ -96,7 +96,7 @@ function registerAjaxCommentRecord() {
       $(form).find('input[type="submit"]').button('loading');
     })
     .fail(function(response, textStatus) {
-      if (textStatus == "abort") { return; }
+      if (textStatus == 'abort' || typeof response.responseJSON === 'undefined') { return; }
       Lightbox.displayError(response.responseJSON.data);
     });
     return false;
-- 
GitLab