Files
zulip/zephyr/static/js/setup.js
Zev Benjamin 9d27878abf Destroy spinners with a new abstraction instead of hiding them
If you create a spinner in a hidden element and then show the
element, the spinner is placed differently than if you had created
the spinner while the element was visible.  This commit makes it so
that we never create spinners while their parent is hidden.

(imported from commit a21e68976d70fcceece30ee35f5e7cf6f9490497)
2013-01-16 14:45:23 -05:00

44 lines
1.6 KiB
JavaScript

// Miscellaneous early setup.
// This is the first of our Javascript files to be included.
var templates = {};
var csrf_token;
$(function () {
// Display loading indicator. This disappears after the first
// get_updates completes.
if (have_initial_messages) {
util.make_spinner($('#page_loading_indicator'), 'Loading...');
}
// Compile Handlebars templates.
$.each(['message', 'subscription',
'userinfo_popover_title', 'userinfo_popover_content',
'timeinfo_popover_content', 'invite_subscription'],
function (index, name) {
templates[name] = Handlebars.compile($('#template_'+name).html());
}
);
// This requires that we used Django's {% csrf_token %} somewhere on the page.
csrf_token = $('input[name="csrfmiddlewaretoken"]').attr('value');
$.ajaxSetup({
beforeSend: function (xhr, settings) {
if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
// Only send the token to relative URLs i.e. locally.
xhr.setRequestHeader("X-CSRFToken", csrf_token);
}
}
});
// For some reason, jQuery wants this to be attached to an element.
$('body').ajaxError(function (event, xhr) {
if (xhr.status === 401) {
// We got logged out somehow, perhaps from another window or a session timeout.
// We could display an error message, but jumping right to the login page seems
// smoother and conveys the same information.
window.location.replace('/accounts/login');
}
});
});