3b3597aa1f
- Fixed js error on dashboard page if no cookie is found. - Use cookies only until end of session. For dashboard cookies use url /dashboard only. - Updated permission numbering of builtin groups and added can_use_chat permission. - Used minified version of jquery.cookie. - Added TODO comment for django session way from pull request.
112 lines
3.7 KiB
JavaScript
112 lines
3.7 KiB
JavaScript
// Functions for OpenSlides chatbox
|
|
$(function() {
|
|
// Chatbox is resizable on two sides (north and west) and
|
|
// one corner (nortwest)
|
|
$("div#chatbox").resizable({ handles: 'n, w, nw' });
|
|
});
|
|
|
|
$("#chatboxbutton").click(function(){
|
|
if ($(this).hasClass('active')) {
|
|
/* close chatbox */
|
|
$("#chatbox").addClass('hidden');
|
|
// Save new chatbox state in cookie
|
|
save_cookie(false);
|
|
} else {
|
|
/* open chatbox */
|
|
$("#chatbox").removeClass('hidden');
|
|
// Scroll chat content to end
|
|
$("#chatbox-text").scrollTop(10000);
|
|
// Set focus to input field
|
|
$("#chatbox-form-input").val('').focus();
|
|
// Save new chatbox state in cookie
|
|
save_cookie(true)
|
|
$.cookie('openslides-chatbox-new-message', 0, { path: "/"});
|
|
// Hide new message number
|
|
$("#newchatmessage").fadeOut();
|
|
}
|
|
});
|
|
|
|
$("#close-chatbox").click(function(){
|
|
$("#chatbox").addClass('hidden');
|
|
$("#chatboxbutton").removeClass('active');
|
|
// Save new chatbox state in cookie
|
|
save_cookie(false);
|
|
});
|
|
|
|
$("#chatbox").resize(function() {
|
|
// If resizing the chatbox window the chatbox text scrolls to latest message.
|
|
// Sets a minimum for width and height.
|
|
$("#chatbox-text").scrollTop(10000);
|
|
$("#chatbox").resizable( "option", "minWidth", 300 );
|
|
$("#chatbox").resizable( "option", "minHeight", 140 );
|
|
save_cookie(true);
|
|
});
|
|
|
|
|
|
// Save chatbox state in cookie.
|
|
// Parameter 'active': chatbox window is open (true) or closed (false).
|
|
function save_cookie(active) {
|
|
var status = {
|
|
'active': active,
|
|
'width': $("#chatbox").width(),
|
|
'height': $("#chatbox").height()
|
|
};
|
|
$.cookie('openslides-chatbox', JSON.stringify(status), { path: "/"});
|
|
}
|
|
|
|
$(document).ready(function(){
|
|
// Load chatbox state from cookie.
|
|
var cookie = $.cookie('openslides-chatbox');
|
|
if (cookie) {
|
|
var status = $.parseJSON(cookie);
|
|
if (status['active']) {
|
|
$("#chatbox").removeClass('hidden');
|
|
$("#chatboxbutton").addClass('active');
|
|
// Scroll chat content to end
|
|
$("#chatbox-text").scrollTop(10000);
|
|
// Set focus to input field
|
|
$('#chatbox-form-input').val('').focus();
|
|
}
|
|
if (status['width']) {
|
|
$("#chatbox").width(status['width']);
|
|
}
|
|
if (status['height']) {
|
|
$("#chatbox").height(status['height']);
|
|
}
|
|
}
|
|
|
|
// Load number of new messages from cookie
|
|
if ($.cookie('openslides-chatbox-new-message') > 0) {
|
|
$("#newchatmessage").html($.cookie('openslides-chatbox-new-message'));
|
|
$("#newchatmessage").show(0);
|
|
}
|
|
|
|
// Print chat messages into chatbox
|
|
function print_message_into_box(message) {
|
|
var chatcontent = $('#chatbox-text');
|
|
chatcontent.html(chatcontent.html() + '<br>' + message);
|
|
chatcontent.scrollTop(chatcontent.scrollTop() + 10000);
|
|
// if chatbox is hidden show number of new messages and save in cookie
|
|
if ($("#chatbox").hasClass('hidden')){
|
|
new_messages = parseInt($.cookie('openslides-chatbox-new-message')) + 1;
|
|
if (new_messages == 1)
|
|
$("#newchatmessage").fadeIn();
|
|
$("#newchatmessage").html(new_messages);
|
|
$.cookie('openslides-chatbox-new-message', new_messages, { path: "/"});
|
|
}
|
|
}
|
|
|
|
var connection = new SockJS('http://' + window.location.host + '/core/chatbox');
|
|
|
|
connection.onmessage = function(event) {
|
|
print_message_into_box(event.data);
|
|
};
|
|
|
|
$("#chatbox-form").submit(function(){
|
|
var message = $('#chatbox-form-input').val();
|
|
connection.send(message);
|
|
$('#chatbox-form-input').val('').focus();
|
|
return false;
|
|
});
|
|
});
|