zulip/zephyr/static/js/setup.js

45 lines
1.8 KiB
JavaScript

// Miscellaneous early setup.
// This is the first of our Javascript files to be included.
var loading_spinner;
var templates = {};
$(function () {
// Display loading indicator. This disappears after the first
// get_updates completes.
if (have_initial_messages) {
loading_spinner = new Spinner().spin($('#loading_spinner')[0]);
} else {
$('#loading_indicator').hide();
}
// Compile Handlebars templates.
templates.message = Handlebars.compile($("#template_message").html());
templates.subscription = Handlebars.compile($("#template_subscription").html());
templates.userinfo_popover_title = Handlebars.compile($("#template_userinfo_popover_title").html());
templates.userinfo_popover_content = Handlebars.compile($("#template_userinfo_popover_content").html());
});
$.ajaxSetup({
beforeSend: function (xhr, settings) {
function getCookie(name) {
var i, cookies, cookieValue = null;
if (document.cookie && document.cookie !== '') {
cookies = document.cookie.split(';');
for (i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
// Only send the token to relative URLs i.e. locally.
xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
}
}
});