var latest_post_id = 0;
var oldest_post_id = 0;
live_scroll_position = 0;
var mediations = [];
function validate_textarea(txt) {
return (txt.search(/[^\n\s]/)!=-1);
}
function clearLoadingMediationCommentSignal(mediation) {
jQuery(".loading-mediation-comment").filter("#" + mediation).removeClass("loading-signal-error");
jQuery(".loading-mediation-comment").filter("#" + mediation).removeClass("loading-signal-done");
}
function clearLoadingMessageSignal() {
jQuery("#loading-message").removeClass("loading-signal-error");
jQuery("#loading-message").removeClass("loading-signal-done");
}
function clearLoadingMediationSignal() {
jQuery("#loading-mediation").removeClass("loading-signal-error");
jQuery("#loading-mediation").removeClass("loading-signal-done");
}
function toogle_mediation_comments(mediation) {
jQuery("#mediation-comment-list-" + mediation ).toggle();
jQuery("#mediation-comment-form-" + mediation ).toggle();
}
function new_mediation_comment(button, mediation) {
if (!validate_textarea(jQuery("#mediation-comment-form-" + mediation + " textarea").val())) {
return false;
}
for (var i = 0; i < mediations.length; i++) {
mediation_id = mediations[i][0];
if (mediation_id == mediation) {
interval_id = mediations[i][1];
clearInterval( interval_id );
break;
}
}
mediations.splice(i, 1);
var form = jQuery(button).parents("form");
jQuery("#mediation-comment-form-" + mediation + " .submit").attr("disabled", true);
jQuery("body").addClass("loading");
jQuery(".loading-mediation-comment").filter("#" + mediation).addClass("loading-signal-processing");
jQuery.post(form.attr("action"), form.serialize(), function(data) {
jQuery(".loading-mediation-comment").filter("#" + mediation).removeClass("loading-signal-processing");
if (data.ok) {
jQuery("#mediation-comment-form-" + mediation + " textarea").val('');
jQuery(".loading-mediation-comment").filter("#" + mediation).addClass("loading-signal-done");
jQuery("body").removeClass("loading");
jQuery("#mediation-comment-form-" + mediation + " .submit").attr("disabled", false);
update_mediation_comments(mediation, false);
setTimeout(function(){
clearLoadingMediationCommentSignal(mediation);
}, 3000);
mediations.push( [ mediation, setInterval(function() { update_mediation_comments(mediation, false)}, 5000) ] );
}
else {
jQuery(".loading-mediation-comment").filter("#" + mediation).addClass("loading-signal-error");
jQuery("body").removeClass("loading");
jQuery("#mediation-comment-form-" + mediation + " .submit").attr("disabled", false);
setTimeout(function(){
clearLoadingMediationCommentSignal(mediation);
}, 3000);
mediations.push( [ mediation, setInterval(function() { update_mediation_comments(mediation, false)}, 5000) ] );
}
}, 'json');
}
function new_message(button) {
if (!validate_textarea(jQuery(".hub .form-message #message_body").val())) {
return false;
}
var form = jQuery(button).parents("form");
jQuery(".hub .form-message .submit").attr("disabled", true);
jQuery("body").addClass("loading");
jQuery("#loading-message").addClass("loading-signal-processing");
jQuery.post(form.attr("action"), form.serialize(), function(data) {
jQuery("#loading-message").removeClass("loading-signal-processing");
if (data.ok) {
jQuery(".hub .form-message #message_body").val('');
jQuery("#loading-message").addClass("loading-signal-done");
jQuery("body").removeClass("loading");
jQuery(".hub .form-message .submit").attr("disabled", false);
update_live_stream(false);
setTimeout(clearLoadingMessageSignal, 3000);
}
else {
jQuery("#loading-message").addClass("loading-signal-error");
jQuery("body").removeClass("loading");
jQuery(".hub .form-message .submit").attr("disabled", false);
setTimeout(clearLoadingMessageSignal, 3000);
}
}, 'json');
}
function new_mediation(button) {
if (!validate_textarea(tinymce.get('article_body').getContent(''))) {
return false;
}
var form = jQuery(button).parents("form");
jQuery(".hub .form-mediation .submit").attr("disabled", true);
jQuery("body").addClass("loading");
jQuery("#loading-mediation").addClass("loading-signal-processing");
tinymce.triggerSave();
jQuery.post(form.attr("action"), form.serialize(), function(data) {
jQuery("#loading-mediation").removeClass("loading-signal-processing");
if (data.ok) {
jQuery("#loading-mediation").addClass("loading-signal-done");
jQuery("body").removeClass("loading");
jQuery(".hub .form-mediation .submit").attr("disabled", false);
tinymce.get('article_body').setContent('');
update_mediations();
setTimeout(clearLoadingMediationSignal, 3000);
}
else {
jQuery("#loading-mediation").addClass("loading-signal-error");
jQuery("body").removeClass("loading");
jQuery(".hub .form-mediation .submit").attr("disabled", false);
setTimeout(clearLoadingMediationSignal, 3000);
}
}, 'json');
}
function promote_user(mediation, user_id) {
if (confirm(DEFAULT_PROMOTE_QUESTION)) {
var hub_id = jQuery(".hub").attr('id');
jQuery.ajax({
url: '/plugin/community_hub/public/promote_user',
type: 'get',
dataType: 'json',
data: { user: user_id, hub: hub_id },
success: function(data) {
jQuery(".promote a").filter("#" + mediation).replaceWith( '
' );
},
error: function(ajax, stat, errorThrown) {
}
});
}
}
function pin_message(post_id) {
if (confirm(DEFAULT_PIN_QUESTION)) {
var hub_id = jQuery(".hub").attr('id');
jQuery.ajax({
url: '/plugin/community_hub/public/pin_message',
type: 'get',
dataType: 'json',
data: { message: post_id, hub: hub_id },
success: function(data) {
jQuery(".pin a").filter("#" + post_id).replaceWith( '
' );
},
error: function(ajax, stat, errorThrown) {
}
});
}
}
function update_mediation_comments(mediation, recursive) {
if (jQuery("#right-tab.show").size() != 0) {
if (jQuery(".hub #mediation-comment-list-" + mediation).css('display') != "none") {
var hub_id = jQuery(".hub").attr('id');
if (jQuery("#mediation-comment-list-" + mediation + " li").first().length == 0) {
var latest_post_id = 0;
}
else {
var latest_post_id = jQuery("#mediation-comment-list-" + mediation + " li.mediation-comment").last().attr('id');
}
jQuery.ajax({
url: '/plugin/community_hub/public/newer_mediation_comment',
type: 'get',
data: { latest_post: latest_post_id, mediation: mediation },
success: function(data) {
if (data.trim().length > 0) {
jQuery("#mediation-comment-list-" + mediation + "").append(data);
jQuery("#mediation-comment-total-" + mediation).html(jQuery("#mediation-comment-list-" + mediation + " li.mediation-comment").size());
}
},
error: function(ajax, stat, errorThrown) {
}
});
}
}
if (recursive) {
setTimeout(function() {
update_mediation_comments(mediation, true);
}, 5000);
}
}
function update_mediations() {
if (jQuery("#right-tab.show").size() != 0) {
var hub_id = jQuery(".hub").attr('id');
if (jQuery("#mediation-posts li").first().length == 0) {
var latest_post_id = 0;
}
else {
var latest_post_id = jQuery("#mediation-posts li").first().attr('id');
}
jQuery.ajax({
url: '/plugin/community_hub/public/newer_articles',
type: 'get',
data: { latest_post: latest_post_id, hub: hub_id },
success: function(data) {
if (data.trim().length > 0) {
jQuery("#mediation-posts").prepend(data);
}
},
error: function(ajax, stat, errorThrown) {
}
});
}
setTimeout(update_mediations, 10000);
}
function update_live_stream(recursive) {
if (jQuery("#left-tab.show").size() != 0) {
var hub_id = jQuery(".hub").attr('id');
if (jQuery("#live-posts li").first().length == 0) {
var latest_post_id = 0;
}
else {
var latest_post_id = jQuery("#live-posts li").first().attr('id');
}
jQuery.ajax({
url: '/plugin/community_hub/public/newer_comments',
type: 'get',
data: { latest_post: latest_post_id, hub: hub_id },
success: function(data) {
if (data.trim().length > 0) {
jQuery("#live-posts").prepend(data);
if (jQuery("#auto_scrolling").attr('checked')) {
jQuery("#live-posts").scrollTop(0);
}
else {
jQuery("#live-posts").scrollTop(live_scroll_position);
}
if (first_hub_load) {
jQuery("body").removeClass("loading");
first_hub_load = false;
}
}
},
error: function(ajax, stat, errorThrown) {
}
});
}
if (recursive) {
setTimeout(function() {
update_live_stream(true);
}, 5000);
}
}
function hub_left_tab_click() {
jQuery("#right-tab").removeClass('show');
jQuery("#right-tab").addClass('hide');
jQuery("#left-tab").removeClass('hide');
jQuery("#left-tab").addClass('show');
}
function hub_right_tab_click() {
jQuery("#left-tab").removeClass('show');
jQuery("#left-tab").addClass('hide');
jQuery("#right-tab").removeClass('hide');
jQuery("#right-tab").addClass('show');
jQuery(".hub #right-tab.show h1.live").click(hub_left_tab_click);
}
first_hub_load = true;
jQuery(document).ready(function() {
jQuery("#live-posts").scroll(function() {
live_scroll_position = jQuery("#live-posts").scrollTop();
});
jQuery(".hub #left-tab.show h1.mediation").click(hub_right_tab_click);
jQuery("body").addClass("loading");
update_live_stream(true);
update_mediations();
});