diff --git a/public/src/ajaxify.js b/public/src/ajaxify.js index 98efc424f1..608e0a6cda 100644 --- a/public/src/ajaxify.js +++ b/public/src/ajaxify.js @@ -4,13 +4,14 @@ var ajaxify = ajaxify || {}; $(document).ready(function() { - /*global app, templates, utils, socket, config, RELATIVE_PATH*/ + /*global app, templates, socket, config, RELATIVE_PATH*/ - var location = document.location || window.location, - rootUrl = location.protocol + '//' + (location.hostname || location.host) + (location.port ? ':' + location.port : ''), - apiXHR = null, + var location = document.location || window.location; + var rootUrl = location.protocol + '//' + (location.hostname || location.host) + (location.port ? ':' + location.port : ''); + var apiXHR = null; - translator; + var translator; + var retry = true; // Dumb hack to fool ajaxify into thinking translator is still a global // When ajaxify is migrated to a require.js module, then this can be merged into the "define" call @@ -63,7 +64,7 @@ $(document).ready(function() { if (err) { return onAjaxError(err, url, callback, quiet); } - + retry = true; app.template = data.template.name; require(['translator'], function(translator) { @@ -107,19 +108,23 @@ $(document).ready(function() { }; function onAjaxError(err, url, callback, quiet) { - var data = err.data, - textStatus = err.textStatus; + var data = err.data; + var textStatus = err.textStatus; if (data) { var status = parseInt(data.status, 10); if (status === 403 || status === 404 || status === 500 || status === 502 || status === 503) { + if (status === 502 && retry) { + retry = false; + return ajaxify.go(url, callback, quiet); + } if (status === 502) { status = 500; } if (data.responseJSON) { data.responseJSON.config = config; } - + $('#footer, #content').removeClass('hide').addClass('ajaxifying'); return renderTemplate(url, status.toString(), data.responseJSON || {}, callback); } else if (status === 401) {