X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/78644811ca0c6042212788dc67add42bc41fb74c..ce89530aa0db752e169adb914938d7f5f9f0ed5a:/platforma/static/js/app.js diff --git a/platforma/static/js/app.js b/platforma/static/js/app.js index fde15393..e870a387 100644 --- a/platforma/static/js/app.js +++ b/platforma/static/js/app.js @@ -180,6 +180,59 @@ Editor.Object = Class.extend({ } }); +// Handle JSON error responses in uniform way +function parseXHRError(response) +{ + var message = ""; + var level = ""; + + try { + var json = $.evalJSON(response.responseText); + + if(json.reason == 'xml-parse-error') { + message = json.message.replace(/(line\s+)(\d+)(\s+)/i, + "$1$2$3"); + + message = message.replace(/(line\s+)(\d+)(\,\s*column\s+)(\d+)/i, + "$1$2$3$4"); + + level = "warning"; + } + else if(json.reason == 'xml-non-valid') { + message = json.message; + level = "warning"; + } + else { + message = json.message || json.reason || "Nieznany błąd :(("; + level = "error"; + } + } catch(e) { + // not a valid JSON response + message = response.statusText || 'Brak połączenia z serwerem'; + level = "error"; + } + + return {error_message: message, error_level: level}; +} + +function parseXHRResponse(xhr) { + var response = {} + + if(xhr.status >= 200 && xhr.status < 300) + { + response.success = true; + try { + response.data = $.evalJSON(xhr.responseText); + } catch(e) { + response.data = {}; + } + + return response; + } + + return parseXHRError(xhr); +} + Editor.Object._lastGuid = 0; -var panels = []; +var panels = []; \ No newline at end of file