$(function () {
|
|
var default_error_message = 'Server error, please try again later.';
|
|
|
|
$.ajaxSetup({
|
|
beforeSend: function (xhr, settings) {
|
|
if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
|
|
xhr.setRequestHeader('X-CSRFToken', csrf_token);
|
|
}
|
|
}
|
|
});
|
|
|
|
$(document).ajaxError(function (event, request, settings) {
|
|
var message = null;
|
|
if (request.responseJSON && request.responseJSON.hasOwnProperty('message')) {
|
|
message = request.responseJSON.message;
|
|
} else if (request.responseText) {
|
|
var IS_JSON = true;
|
|
try {
|
|
var data = JSON.parse(request.responseText);
|
|
}
|
|
catch (err) {
|
|
IS_JSON = false;
|
|
}
|
|
if (IS_JSON && data !== undefined && data.hasOwnProperty('message')) {
|
|
message = JSON.parse(request.responseText).message;
|
|
} else {
|
|
message = default_error_message;
|
|
}
|
|
} else {
|
|
message = default_error_message;
|
|
}
|
|
toast(message, 'error');
|
|
});
|
|
|
|
var flash = null;
|
|
|
|
function toast(body, category) {
|
|
clearTimeout(flash);
|
|
var $toast = $('#toast');
|
|
if (category === 'error') {
|
|
$toast.css('background-color', 'red')
|
|
} else {
|
|
$toast.css('background-color', '#333')
|
|
}
|
|
$toast.text(body).fadeIn();
|
|
flash = setTimeout(function () {
|
|
$toast.fadeOut();
|
|
}, 3000);
|
|
}
|
|
|
|
var hover_timer = null;
|
|
|
|
function show_profile_popover(e) {
|
|
var $el = $(e.target);
|
|
|
|
hover_timer = setTimeout(function () {
|
|
hover_timer = null;
|
|
$.ajax({
|
|
type: 'GET',
|
|
url: $el.data('href'),
|
|
success: function (data) {
|
|
$el.popover({
|
|
html: true,
|
|
content: data,
|
|
trigger: 'manual',
|
|
animation: false
|
|
});
|
|
$el.popover('show');
|
|
$('.popover').on('mouseleave', function () {
|
|
setTimeout(function () {
|
|
$el.popover('hide');
|
|
}, 200);
|
|
});
|
|
}
|
|
});
|
|
}, 500);
|
|
}
|
|
|
|
function hide_profile_popover(e) {
|
|
var $el = $(e.target);
|
|
|
|
if (hover_timer) {
|
|
clearTimeout(hover_timer);
|
|
hover_timer = null;
|
|
} else {
|
|
setTimeout(function () {
|
|
if (!$('.popover:hover').length) {
|
|
$el.popover('hide');
|
|
}
|
|
}, 200);
|
|
}
|
|
}
|
|
|
|
function update_followers_count(id) {
|
|
var $el = $('#followers-count-' + id);
|
|
$.ajax({
|
|
type: 'GET',
|
|
url: $el.data('href'),
|
|
success: function (data) {
|
|
$el.text(data.count);
|
|
}
|
|
});
|
|
}
|
|
|
|
function update_collectors_count(id) {
|
|
$.ajax({
|
|
type: 'GET',
|
|
url: $('#collectors-count-' + id).data('href'),
|
|
success: function (data) {
|
|
console.log(data);
|
|
$('#collectors-count-' + id).text(data.count);
|
|
}
|
|
});
|
|
}
|
|
|
|
function update_notifications_count() {
|
|
var $el = $('#notification-badge');
|
|
$.ajax({
|
|
type: 'GET',
|
|
url: $el.data('href'),
|
|
success: function (data) {
|
|
if (data.count === 0) {
|
|
$('#notification-badge').hide();
|
|
} else {
|
|
$el.show();
|
|
$el.text(data.count)
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function follow(e) {
|
|
var $el = $(e.target);
|
|
var id = $el.data('id');
|
|
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: $el.data('href'),
|
|
success: function (data) {
|
|
$el.prev().show();
|
|
$el.hide();
|
|
update_followers_count(id);
|
|
toast(data.message);
|
|
}
|
|
});
|
|
}
|
|
|
|
function unfollow(e) {
|
|
var $el = $(e.target);
|
|
var id = $el.data('id');
|
|
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: $el.data('href'),
|
|
success: function (data) {
|
|
$el.next().show();
|
|
$el.hide();
|
|
update_followers_count(id);
|
|
toast(data.message);
|
|
}
|
|
});
|
|
}
|
|
|
|
function collect(e) {
|
|
var $el = $(e.target).data('href') ? $(e.target) : $(e.target).parent('.collect-btn');
|
|
var id = $el.data('id');
|
|
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: $el.data('href'),
|
|
success: function (data) {
|
|
$el.prev().show();
|
|
$el.hide();
|
|
update_collectors_count(id);
|
|
toast(data.message);
|
|
}
|
|
});
|
|
}
|
|
|
|
function uncollect(e) {
|
|
var $el = $(e.target).data('href') ? $(e.target) : $(e.target).parent('.uncollect-btn');
|
|
var id = $el.data('id');
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: $el.data('href'),
|
|
success: function (data) {
|
|
$el.next().show();
|
|
$el.hide();
|
|
update_collectors_count(id);
|
|
toast(data.message);
|
|
}
|
|
});
|
|
}
|
|
|
|
$('.profile-popover').hover(show_profile_popover.bind(this), hide_profile_popover.bind(this));
|
|
$(document).on('click', '.follow-btn', follow.bind(this));
|
|
$(document).on('click', '.unfollow-btn', unfollow.bind(this));
|
|
$(document).on('click', '.collect-btn', collect.bind(this));
|
|
$(document).on('click', '.uncollect-btn', uncollect.bind(this));
|
|
|
|
// hide or show tag edit form
|
|
$('#tag-btn').click(function () {
|
|
$('#tags').hide();
|
|
$('#tag-form').show();
|
|
});
|
|
$('#cancel-tag').click(function () {
|
|
$('#tag-form').hide();
|
|
$('#tags').show();
|
|
});
|
|
// hide or show description edit form
|
|
$('#description-btn').click(function () {
|
|
$('#description').hide();
|
|
$('#description-form').show();
|
|
});
|
|
$('#cancel-description').click(function () {
|
|
$('#description-form').hide();
|
|
$('#description').show();
|
|
});
|
|
// delete confirm modal
|
|
$('#confirm-delete').on('show.bs.modal', function (e) {
|
|
$('.delete-form').attr('action', $(e.relatedTarget).data('href'));
|
|
});
|
|
|
|
if (is_authenticated) {
|
|
setInterval(update_notifications_count, 30000);
|
|
}
|
|
|
|
$("[data-toggle='tooltip']").tooltip({title: moment($(this).data('timestamp')).format('lll')})
|
|
|
|
});
|