var new_posts = []; //Store the new posts ids
var new_answers = {};
var locale = navigator.language || navigator.userLanguage;
/*
*
* Defining action of the form to make a post in forum
*
*/
$(document).ready(function (){
var frm = $('#form_post');
frm.submit(function () {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
dataType: 'json',
success: function (data) {
if ($("#load_more_posts").length == 0) {
$("#posts_list").append(data.html);
} else {
$("#load_more_posts").before(data.html);
}
new_posts.push(data.new_id);
frm[0].reset();
},
error: function(data) {
console.log(frm.serialize());
console.log('Error');
}
});
return false;
});
});
/*
*
* Function to load create forum's form
*
*/
function createForum(url, topic) {
$.ajax({
url: url,
data: {'topic': topic},
success: function(data) {
$(".forum_form").html(data);
$("#id_topic").val(topic);
setForumCreateFormSubmit(topic);
}
});
$("#createForum").modal();
}
/*
*
* Function to set the forum's create form submit function
*
*/
function setForumCreateFormSubmit(topic) {
$('.date-picker').datepicker({
language: locale,
startDate: "dateToday"
});
var frm = $('#forum_create');
frm.submit(function () {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
dataType: "json",
success: function (data) {
$(".topic_" + topic).find('.foruns_list').append("
"+data.name+"");
alertify.success(data.message);
$("#createForum").modal('hide');
},
error: function(data) {
$(".forum_form").html(data.responseText);
setForumCreateFormSubmit(topic);
}
});
return false;
});
}
/*
*
* Function to load edit forum's form and set the submit function
*
*/
function editForum(url, forum, success_message) {
$.ajax({
url: url,
data: {'pk': forum},
success: function(data) {
$(".forum_form").html(data);
setForumUpdateFormSubmit(success_message);
}
});
$("#editForum").modal();
}
/*
*
* Function to set the forum's update form submit function
*
*/
function setForumUpdateFormSubmit(success_message) {
$('.date-picker').datepicker({
language: locale,
startDate: "dateToday"
});
var frm = $('#forum_create');
frm.submit(function () {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (data) {
$('.forum_view').html(data);
alertify.success(success_message);
$("#editForum").modal('hide');
},
error: function(data) {
$(".forum_form").html(data.responseText);
setForumUpdateFormSubmit(success_message);
}
});
return false;
});
}
/*
*
* Function to delete a forum
*
*/
function delete_forum(url, forum, message, return_url) {
alertify.confirm(message, function(){
var csrftoken = Cookies.get('csrftoken');
$.ajax({
method: 'post',
beforeSend: function (request) {
request.setRequestHeader('X-CSRFToken', csrftoken);
},
url: url,
success: function(data) {
alertify.alert('Amadeus', data, function(){
window.location.href = return_url;
});
}
});
});
}
/*
*
* Function to load form to edit post
*
*/
function edit_post(url, post_id, success_message) {
$.ajax({
url: url,
success: function(data) {
$("#post_"+post_id).find(".post_content").hide();
$("#post_"+post_id).find(".post_content").after(data);
var frm = $("#post_"+post_id).find(".edit_post_form");
frm.submit(function () {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (data) {
alertify.success(success_message);
$("#post_"+post_id).parent().after(data.html);
frm.parent().parent().remove();
},
error: function(data) {
console.log(frm.serialize());
console.log('Error');
}
});
return false;
});
}
});
}
/*
*
* Function to cancel post edition
*
*/
function cancelEditPost(post_id) {
$("#post_"+post_id).find(".post_content").show();
$("#post_"+post_id).find(".edit_post_form").remove();
}
/*
*
* Function to delete a post
*
*/
function delete_post(url, post) {
var csrftoken = Cookies.get('csrftoken');
$.ajax({
method: 'post',
beforeSend: function (request) {
request.setRequestHeader('X-CSRFToken', csrftoken);
},
url: url,
success: function(data) {
alertify.success(data);
$("#post_"+post).remove();
}
});
}
/*
*
* Function to load more posts
*
*/
function load_more_posts(pageNum, numberPages, url) {
// Remove button from the template
$("#load_more_posts").remove();
// Check if page is equal to the number of pages
if (pageNum == numberPages) {
return false
}
pageNum += 1;
var showing = new_posts.join(',');
// Show loader
$("#loading_posts").show();
// Configure the url we're about to hit
setTimeout(function (){
$.ajax({
url: url,
data: {'page': pageNum, 'showing': showing},
dataType: 'json',
success: function(data) {
$("#loading_posts").hide();
var child = $("#posts_list").find(".new_post:first");
if (child.length == 0) {
$("#posts_list").append(data.html);
} else {
child.before(data.html);
}
if (data.page != data.num_pages) {
$("#posts_list").append('' + data.btn_text + '');
}
},
error: function(data) {
console.log(data);
console.log('Error');
}
});
}, 1000)
};
/*
*
* Function to load answer post form and set the submit function
*
*/
function answer(id, url) {
$.ajax({
url: url,
success: function(data) {
$("#post_"+id).find(".answer_post").html(data);
$("#post_"+id).find("#id_post").val(id);
var frm = $("#post_"+id).find(".answer_post_form");
frm.submit(function () {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
dataType: 'json',
success: function (data) {
$("#post_"+id).find(".answer_post").hide();
if ($("#post_"+id).find(".load_more_answers").length == 0) {
$("#post_"+id).find(".answer_list").append(data.html);
} else {
$("#post_"+id).find(".load_more_answers").before(data.html);
}
if (typeof(new_answers[id]) == 'undefined') {
new_answers[id] = [];
}
new_answers[id].push(data.new_id);
},
error: function(data) {
console.log(frm.serialize());
console.log('Error');
}
});
return false;
});
}
});
$("#post_"+id).find(".answer_post").show();
}
/*
*
* Function to load form to edit post answer
*
*/
function edit_post_answer(url, answer_id, success_message) {
$.ajax({
url: url,
success: function(data) {
$("#answer_"+answer_id).find(".post_answer_content").hide();
$("#answer_"+answer_id).find(".post_answer_content").after(data);
var frm = $("#answer_"+answer_id).find(".answer_post_form");
frm.submit(function () {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (data) {
alertify.success(success_message);
$("#answer_"+answer_id).parent().after(data.html);
frm.parent().parent().remove();
},
error: function(data) {
console.log(frm.serialize());
console.log('Error');
}
});
return false;
});
}
});
}
/*
*
* Function to cancel post answer edition
*
*/
function cancelEditPostAnswer(answer_id) {
$("#answer_"+answer_id).find(".post_answer_content").show();
$("#answer_"+answer_id).find(".answer_post_form").remove();
}
/*
*
* Function to delete an answer
*
*/
function delete_answer(url, answer, message) {
alertify.confirm(message, function(){
var csrftoken = Cookies.get('csrftoken');
$.ajax({
method: 'post',
beforeSend: function (request) {
request.setRequestHeader('X-CSRFToken', csrftoken);
},
url: url,
success: function(data) {
alertify.alert('Amadeus', data, function(){
$("#answer_"+answer).remove();
});
}
});
});
}
/*
*
* Function to load more answers of a post
*
*/
function load_more_answers(post_id, pageNum, numberPages, url) {
// Remove button from the template
$("#post_"+post_id).find(".load_more_answers").remove();
// Check if page is equal to the number of pages
if (pageNum == numberPages) {
return false
}
pageNum += 1;
var showing;
if (typeof(new_answers[post_id]) == 'undefined') {
showing = "";
} else {
showing = new_answers[post_id].join(',');
}
// Show loader
$("#post_"+post_id).find(".loading_answers").show();
// Configure the url we're about to hit
setTimeout(function (){
$.ajax({
url: url,
data: {'page_answer': pageNum, 'showing_ans': showing},
dataType: 'json',
success: function(data) {
$("#post_"+post_id).find(".loading_answers").hide();
var child = $("#post_"+post_id).find(".answer_list").find(".new_answer:first");
if (child.length == 0) {
$("#post_"+post_id).find(".answer_list").append(data.html);
} else {
child.before(data.html);
}
if (data.page != data.num_pages) {
$("#post_"+post_id).find(".answer_list").append('' + data.btn_text + '');
}
}
});
}, 1000)
};