Initial commit

This commit is contained in:
2013-08-07 14:11:17 +02:00
commit 5fd2896407
545 changed files with 12528 additions and 0 deletions

784
masks/chat.html Normal file
View File

@@ -0,0 +1,784 @@
<div id="chat">
<div class="h1_wrap" id="chat_title">
<h1 class="round"><span>Chat</span></h1>
</div>
<div id="chat_chan">
<p class="tab_bar"><span id="join_chan" class="round_top clickable"></span></p>
</div>
<div id="sidebar">
<div class="sidebar_box round">
<div id="connected_users_title" class="sidebar_box_title round_top clickable">Connect&eacute;s</div>
<div id="connected_users" class="sidebar_box_content"></div>
</div>
<div class="sidebar_box round">
<div class="sidebar_box_title round_top clickable round">Aide</div>
<div id="help_open" class="sidebar_box_content help_paperclip clickable hide"></div>
</div>
</div>
<div id="chat_room" class="round">
<div id="chat_container">
<div class="scrollbar"><div class="track round"><div class="thumb round clickable"><div class="end round clickable"></div></div></div></div>
<div id="chat_messages_box">
<div id="chat_messages"></div>
</div>
</div>
<div id="chat_input" class="tiny_round">
<form id="chat_form" name="chat_form">
<input type="text" id="message" name="message" value="" maxlength="500" />
<input type="hidden" id="chan" name="chan" value="" maxlength="50" />
</form>
</div>
</div>
<div id="template" class="hide">
<div id="help" class="help tiny_round">
<p class="title">Manuel d'utilisation<span id="close_help" class="clickable">x</span></p>
<p class="subtitle"><span>Message</span></p>
<p class="item"><span class="key">Echap</span>Supprime le texte en cours de rédaction</p>
<p class="item"><span class="key">Fl&egrave;che haut</span>R&eacute;p&egrave;te dernier message envoyé</p>
<p class="item"><span class="key">@X Y</span>Vous dites Y &agrave; X (pseudo de Y en rouge)</p>
<p class="item"><span class="key">/me X</span>Votre_pseudo X. Utile lorsque vous voulez parler de vous à la 3ème personne. Par exemple : /me se touche la nouille au taff</p>
<p class="item"><span class="key">/mail X Y</span>Vous envoyez à X un email contenant Y (adresse professionel)</p>
<p class="item">
<span class="key">Tab</span>
Chaque hit pré-remplie le message en faisant défiler la liste des connectés.
Il est possible d'écrire la/les premières lettres afin de faire commencer le défilement aux pseudos commençant par ces lettre-ci.
Le fonctionnement demeure le même si l'on fait précéder le pseudo par @
</p>
<p class="subtitle"><span>Chans</span></p>
<p class="item">Les chans sont divisés en trois catégories : les chans privés (PM, pour deux personnes seulement), les chans entreprise (pour toutes les personnes d'une même entreprise) et les autres (chans publiques)</p>
<p class="item"><span class="key">/join #X</span>Vous rejoignez le chan X (si autorisé)</p>
<p class="item"><span class="key">/pm #X</span>Vous rejoignez le chan privé (vous et X)</p>
<p class="item"><span class="key">/quit #X</span>Vous quittez le chan X</p>
<p class="item"><span class="key">/chans</span>Liste des chans publiques disponibles (aussi accessible via /channels et /list)</p>
<p class="subtitle"><span>Options</span></p>
<p class="item"><span class="key">/nick X</span>Vous changez votre peudo en X</p>
<p class="item"><span class="key">/mission X</span>Vous changez votre affectation de mission</p>
<p class="subtitle"><span>Broutilles</span></p>
<p class="item"><span class="key">/9gag X</span>Vous postez le lien 9gag X (URL) dans le chat (utilisable comme proxy)</p>
<p class="item"><span class="key">/img X</span>Vous postez l'image X (URL) dans le chat (utilisable comme proxy)</p>
<p class="item"><span class="key">/now</span>Horloge parlante</p>
<p class="item"><span class="key">/like</span>Vous plussoyez</p>
<p class="item"><span class="key">/slap X</span>Vous foutez une grosse tarte &agrave; X</p>
<p class="item"><span class="key">/bs X</span>Vous bitch-slappez X</p>
<p class="item"><span class="key">/kick X</span>Vous mettez un coup de pied au cul &agrave; X</p>
<p class="item"><span class="key">/mean</span>Vous dites une insulte au hasard</p>
</div>
</div>
</div>
<script type="text/javascript">
databap.pageInit = function()
{
//Page constant
databap.consts.chanPrefix = 'chan_';
databap.consts.chanQuitPrefix = 'quit_chan_';
databap.consts.chanUnreadPrefix = 'unread_chan_';
//Page variables
databap.tmp('sending_msg', 'boolean');
databap.initVar('unread_msg', 'object');
//Main elements
$MsgInput = databap.getMainElem('#message');
$MsgInputBox = databap.getMainElem('#chat_input');
//Bind message box key events
databap.getMainElem('#chat_form').submit(function(e){e.preventDefault();});
$MsgInput.bind('keydown', function(e){if(e.which == 9)e.preventDefault();});
$MsgInput.keyup(function(event){add_message(event);});
//Loading the chat
databap.vars.last_message_id = '0';
oScrollbar = $('#chat_container').tinyscrollbar({viewport:'#chat_messages_box', overview:'#chat_messages'});
//Loading Chans
setChanButton();
databap.vars.chans_list[databap.consts.all_chan_id] = databap.consts.all_chan_text;
databap.vars.unread_msg[databap.consts.all_chan_text] = 0;
joinChan(databap.consts.default_chan, true);
//window focus
//databap.onMouveEnter = function(){if(databap.vars.inputFocus){onPageFocus();}else{$MsgInput.focus();}};
//databap.onMouveLeave = function(){$MsgInput.focus();onPageBlur();};
$(window).focus(onPageFocus);
$(window).blur(onPageBlur);
//$(window).focus(function(){debug('focus');}).blur(function(){debug('blur');});
//Message Input Focus
//$MsgInput.focus(function(){onPageFocus();databap.vars.inputFocus=true;});
//$MsgInput.blur(function(){onPageBlur();databap.vars.inputFocus=false;});
$MsgInput.focus();
//databap.onKeyDown = function(e){if(!databap.vars.inputFocus)$MsgInput.focus();};
//On resize
//databap.resetSize = function(){databap.getMainElem('#chat_messages_box').height(databap.getMainElem('#sidebar').outerHeight());};
databap.onResize = function()
{
databap.$main.css('overflow', 'hidden');
//debug('chat page resize triggered');
var $cb = databap.getMainElem('#chat_messages_box');
var iMaxHeight = databap.consts.pageMaxHeight - 15 - ($('#chat_title').outerHeight(true) + $('#chat_chan').outerHeight(true) + $('#chat_room').outerHeight(true) - $('#chat_messages_box').outerHeight(true));
if($cb.height() != iMaxHeight)
{
//$cb.animate({height: maxHeight}, 400, function(){oScrollbar.tinyscrollbar_update('bottom');resizing=false;});
$cb.height(iMaxHeight);
oScrollbar.tinyscrollbar_update('bottom');
}
};
//Disconnect from the chat
databap.onQuit = function()
{
//databap.getSyncInfo('disconnect_chat');
databap.vars.chans_list = {};
if(typeof oChatTimer != "undefined") clearTimeout(oChatTimer);
if(typeof oUserTimer != "undefined") clearTimeout(oUserTimer);
};
//Sidebar
databap.getMainElem('.sidebar_box_title').click
(
function()
{
$(this).toggleClass('round')
.closest('.sidebar_box').find('.sidebar_box_content').toggle('fast', function(){databap.resizeMain('true');});
}
);
//Help
databap.getMainElem('#help_open').click(displayHelp);
//Init's end
databap.setInitEnd(true);
};
function onPageFocus()
{
databap.vars.focus=true;
//iUnreadMessages -= databap.vars.unread_msg[currentChan()];
//databap.setTitle();
//debug('focused '+databap.vars.focus);
switchChan();
}
function onPageBlur()
{
databap.vars.focus = false;
//debug('blured '+databap.vars.focus);
}
function setChanButton()
{
var sAddChanText = '+';
$JoinButton = $('#join_chan');
if($JoinButton.text() == sAddChanText)
{
$JoinButton
.addClass('active')
.empty()
.append($('<span>#<input type="text" id="input_chan" class="round" /></span>'))
.find('#input_chan').focus().keyup
(
function(e)
{
if(e.keyCode == 13)
{
setChanButton();
joinChan($(this).val());
}
}
);
}
else $JoinButton
.empty()
.text(sAddChanText)
.removeClass('active')
.click(function(){setChanButton();});
}
function getChanKeyName(sChanName)
{
var sChanKeyName = false;
//$.each(databap.vars.chans_list, function(sConnChanKeyName, sConnChanName){if(sConnChanName==sChanName) sChanKeyName=sConnChanKeyName;});
for(var i in databap.vars.chans_list) {if(databap.vars.chans_list[i]==sChanName){sChanKeyName=i;break;}}
return sChanKeyName;
}
function getChanName(sChanKeyName)
{
return (typeof databap.vars.chans_list[sChanKeyName] == 'undefined')?false:databap.vars.chans_list[sChanKeyName];
}
function joinPmChan()
{
var iTargetId = $(this).attr('id');
if(iTargetId!=databap.vars.user_id)
{
var sPmChan = (databap.vars.user_id < iTargetId)?databap.vars.user_id+databap.consts.pm_separator+iTargetId:iTargetId+databap.consts.pm_separator+databap.vars.user_id;
joinChan(sPmChan, false, [iTargetId]);
}
}
function joinChan(sChanName, bFirstConn, asAttendees, bSwitchOnJoin)
{
bFirstConn = bFirstConn || false;
asAttendees = asAttendees || [];
bSwitchOnJoin = (typeof bSwitchOnJoin === 'undefined')?true:bSwitchOnJoin;
var sChanName = ucwords(sChanName);
if(sChanName!='')
{
//Join for the first time
if(!getChanKeyName(sChanName))
{
//Check accessibility & bring back messages
databap.getInfo
(
'join_chan',
function(result)
{
//Add to channels list
var sConnectedChanKeyName = '';
$.each
(
result.channels,
function(iChanId, sReturnedChanName)
{
//Add tab if not already there
if(!getChanName(iChanId)) addChanTab(iChanId, sReturnedChanName, result.channel_tab_names[iChanId], !bSwitchOnJoin);
}
);
//Full reload of messages
refresh_chat(true);
//Switch to the right chan
switchChan(bSwitchOnJoin?result.current_chan_id:null);
},
{chan:sChanName, first_conn:(bFirstConn?1:0), attendees:asAttendees},
'json',
function()
{
databap.addFailIcon('Chan non autorisé');
},
true
);
}
else
{
//Switch to the right chan
switchChan(bSwitchOnJoin?getChanKeyName(sChanName):null);
}
}
//Focus input bar
$('#message').focus();
}
function currentChan(sChanName)
{
return (!sChanName)?$('#chan').val():$('#chan').val(sChanName).val();
}
function switchChan(sChanKeyName)
{
var sChanName = currentChan(getChanName(sChanKeyName));
sChanKeyName = sChanKeyName || getChanKeyName(sChanName);
//Unread msg
if(databap.vars.focus)
{
databap.vars.unread_msg[sChanName] = 0;
databap.vars.unread_msg[databap.consts.all_chan_text] = 0;
}
syncUnreadMsg();
//Switch current channel button to active
$('#chat_chan').find('span[id^="'+databap.consts.chanPrefix+'"]').removeClass('active').addClass('clickable');
$('#'+databap.consts.chanPrefix+sChanKeyName).addClass('active').removeClass('clickable');
//Show current channel messages
databap.getMainElem('#chat_messages').find('p').hide();
databap.getMainElem('#chat_messages').find('p.class_'+sChanKeyName+', p.class_'+databap.consts.all_chan_id).show();
oScrollbar.tinyscrollbar_update('bottom');
//Show Current channel members
databap.getMainElem('#connected_users').find('p').hide();
databap.getMainElem('#connected_users').find('p.class_'+sChanKeyName).show();
}
function syncUnreadMsg()
{
//Global unread messages
var iCountUnread = 0;
$.each
(
databap.vars.unread_msg,
function(sChanName, iUnreadMsg)
{
iCountUnread += iUnreadMsg;
}
);
databap.setTitle((iCountUnread>0)?iCountUnread+' msg':'');
//Chan unread messages
var sChanUnreadId = '';
var sUnreadText = '';
iCountUnread = 0;
$.each
(
databap.vars.chans_list,
function(sChanKeyName, sChanName)
{
sChanUnreadId = databap.consts.chanUnreadPrefix+sChanKeyName;
iCountUnread = databap.vars.unread_msg[sChanName];
sUnreadText = (iCountUnread > 0 && sChanName != currentChan())?'('+iCountUnread+')':'';
databap.getMainElem('#'+sChanUnreadId).text(sUnreadText);
}
);
}
function addChanTab(sChanKeyName, sChanName, sChanTabName, bLightUp)
{
//Add channel to list
sChanTabName = sChanTabName || sChanName;
databap.vars.chans_list[sChanKeyName] = sChanName;
databap.vars.unread_msg[sChanName] = 0;
//Add channel tab
var sChanId = databap.consts.chanPrefix+sChanKeyName;
if(!$('#'+sChanId).length)
{
//Prepare clickable chan button
var sChanQuitId = databap.consts.chanQuitPrefix+sChanKeyName;
var sChanUnreadId = databap.consts.chanUnreadPrefix+sChanKeyName;
var $ChanButton = $('<span id="'+sChanId+'" class="chan clickable round_top'+(bLightUp?' light_up':'')+'">#</span>')
.click(function(){$(this).removeClass('light_up');joinChan(databap.vars.chans_list[$(this).attr('id').substr(databap.consts.chanPrefix.length)]);})
.append('<span class="chan_title">'+sChanTabName+'</span>')
.append('<span class="chan_unread" id="'+sChanUnreadId+'"></span>')
.append($('<a id="'+sChanQuitId+'" class="quit_chan clickable">x</a>').click(function(e){e.stopPropagation();quitChan($(this).attr('id').substr(databap.consts.chanQuitPrefix.length));}));
//Add channel tab name and bind delete button
$('#join_chan').before($ChanButton);
}
}
function quitChan(sChanKeyName)
{
var sChanName = databap.vars.chans_list[sChanKeyName];
if(typeof sChanName != 'undefined' && Object.keys(databap.vars.chans_list).length > 1)
{
//delete on server
databap.getInfo
(
'quit_chan',
function(result){},
{chan:sChanName},
'text',
function(textStatus)
{
debug('Error chat.html quit channel');
databap.showError(textStatus);
}
);
//Delete tab
$('#'+databap.consts.chanPrefix+sChanKeyName).fadeOut('fast', function(){$(this).remove();});
//Delete from list
delete databap.vars.chans_list[sChanKeyName];
//Switch back to another chan
if(sChanName == currentChan()) switchChan(Object.keys(databap.vars.chans_list)[1]);
//Delete messages
databap.getMainElem('#chat_messages').find('p.class_'+sChanKeyName).remove();
}
else databap.addFailIcon('Ceci est le dernier chan');
}
function add_message(e)
{
switch(e.keyCode)
{
case 13 : //enter
$this = databap.getMainElem('#message');
var chat_message = $this.val();
if(chat_message.substr(0, 7) == '/join #') joinChan(chat_message.substr(7));
else if(chat_message.substr(0, 7) == '/quit #') quitChan(getChanKeyName(chat_message.substr(7)));
else if(chat_message == '/help') displayHelp();
else if(chat_message != '' && databap.tmp('sending_msg') == false) //send
{
databap.tmp('sending_msg', true);
//debug(databap.tmp('sending_msg'));
databap.saveForm
(
'add_message',
databap.getMainElem('#chat_form'),
function(id)
{
databap.tmp('sending_msg', false);
//debug(databap.tmp('sending_msg'));
refresh_chat();
},
true
);
}
databap.vars.prev_chat_value = chat_message;
$this.val('');
break;
case 27 : //echap
databap.getMainElem('#message').val('');
break;
case 38 : //arrow up
$this = databap.getMainElem('#message');
var chat_message = $this.val();
if(chat_message=='' && typeof databap.vars.prev_chat_value !== 'undefined' && databap.vars.prev_chat_value!='')
{
$this.val(databap.vars.prev_chat_value);
}
break;
case 40 : //arrow down
$this = databap.getMainElem('#message');
var chat_message = $this.val();
if(typeof databap.vars.prev_chat_value !== 'undefined' && databap.vars.prev_chat_value==chat_message)
{
$this.val('');
}
break;
case 9 : //tab
//Init
$this = databap.getMainElem('#message');
var chat_message = $.trim($this.val());
if(!e.altKey && chat_message.length>0)
{
var user_name = "";
var index = 0;
//Finding last word
var last_word = (chat_message.lastIndexOf(" ")==-1)?chat_message:chat_message.substr(chat_message.lastIndexOf(" ") + 1);
if(last_word.substr(0, 1)=='@') last_word = last_word.substr(1);
var last_word_len = last_word.length;
var approx_nick = last_word.toLowerCase();
//Tabbing through positive results
var existing_nick = false;
var userIndex = $.inArray(last_word, users_list);
if(userIndex==-1)
{
//Recording first search keyword
//debug('buffering approx nick : "'+last_word+'"');
prev_approx_nick = approx_nick;
prev_approx_nick_len = last_word_len;
userIndex = users_list.length - 1;
}
else existing_nick = true;
//debug('last word : "'+last_word+'"');
//debug('existing_nick : '+existing_nick);
//Next nickname in the list
index = (userIndex+1)%users_list.length;
count = 0;
//loop on the nickname list
while(count<users_list.length)
{
//debug('index: '+index);
var nick = users_list[index];
var lower_nick = nick.toLowerCase();
if
(
!existing_nick && lower_nick.substr(0, last_word_len) == approx_nick ||
existing_nick && lower_nick.substr(0, prev_approx_nick_len) == prev_approx_nick
)
{
user_name = nick;
break;
}
index = (index+1)%users_list.length;
count++;
}
//debug('chat message : '+chat_message);
if(user_name!='') $this.val(chat_message.substr(0, chat_message.length - last_word_len)+user_name+' ');
}
break;
/*default:debug(e.keyCode);break;*/
/*
default:
$this = databap.getMainElem('#message');
$copy = databap.getMainElem('#copy_message');
$copy.text($this.val());
var maxSize = databap.getMainElem('#chat_input').width() - 16;
var iInputSize = $copy.width();
if(iInputSize < 100)
{
$this.width(100);
}
else if(iInputSize > maxSize)
{
$this.width(maxSize);
}
else
{
$this.width(iInputSize);
}
*/
}
}
function refresh_chat(bReset)
{
var bReset = (typeof bReset != 'undefined' && bReset == true);
if(typeof oChatTimer != "undefined") clearTimeout(oChatTimer);
if(databap.vars.current_page == databap.pages.chat)
{
if(!databap.vars.loading)
{
if(bReset)
{
databap.vars.last_message_id = 0;
databap.getMainElem('#chat_messages').empty();
}
databap.getInfo
(
'messages',
function(result)
{
var prevLastMsgId = databap.vars.last_message_id;
updateUsersList = false;
databap.resetIcon();
if(databap.vars.last_message_id < result.last_message_id || bReset)
{
//Update last read message id
databap.vars.last_message_id = Math.max(result.last_message_id, prevLastMsgId);
//Display messages
$.each
(
result.messages,
function(id_message, message_info)
{
addMessage(message_info, bReset);
if(!bReset && message_info.msg_class!='C' /* && message_info.id_user!=databap.vars.user_id */)
{
databap.vars.unread_msg[getChanName(message_info.id_chan)]++;
}
}
);
//Nicknames changes
if(updateUsersList === true || prevLastMsgId == 0)
{
oScrollbar.tinyscrollbar_update('bottom');
refresh_users();
updateUsersList = false;
}
else switchChan();
}
},
{message_id:databap.vars.last_message_id},
'json',
function(textStatus)
{
debug('Error chat.html 155');
databap.showError(textStatus);
}
);
oChatTimer = setTimeout(refresh_chat, databap.vars.focus?2000:5000);
}
else
{
oChatTimer = setTimeout(function(){refresh_chat(bReset);}, 500);
}
}
}
function addMessage(message_info, bReset)
{
var sChanKeyName = message_info.id_chan;
var msg_body = '';
switch(message_info.msg_class)
{
case 'U':
msg_body = '<a class="user clickable" title="Ecrire un PM &agrave; '+message_info.nickname+'">'+message_info.nickname+'</a><span class="console">&gt;</span><span class="text">'+message_info.message+'</span>';
break;
case 'A':
var url = databap.getCodeLink(message_info.message);
msg_body = '<span class="text">'+message_info.nickname+' a ajout&eacute; un nouveau code : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
break;
case 'E':
var url = databap.getCodeLink(message_info.message);
msg_body = '<span class="text">'+message_info.nickname+' a modifi&eacute; le code <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
break;
case 'PA':
var url = databap.getProcLink(message_info.message);
msg_body = '<span class="text">'+message_info.nickname+' a ajout&eacute; une nouvelle proc&eacute;dure : <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
break;
case 'PE':
var url = databap.getProcLink(message_info.message);
msg_body = '<span class="text">'+message_info.nickname+' a modifi&eacute; la proc&eacute;dure <a href="'+url+'" target="_blank">'+message_info.description+'</a></span>';
break;
case 'M':
msg_body = '<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>';
break;
case 'P':
slicePos = message_info.message.indexOf(' ');
msgTargetUser = message_info.message.substr(1, slicePos - 1);
var msg = message_info.message.slice(slicePos + 1);
msg_body = '<a class="user clickable" title="Ecrire un PM &agrave; '+message_info.nickname+'">'+message_info.nickname+'</a><span class="console"> <span class="highlight">&#64;'+msgTargetUser+'</span>&gt;</span><span class="text">'+msg+'</span>';
break;
case 'N':
msg_body = '<span class="text">'+message_info.message+' ('+message_info.name+')</span>';
updateUsersList = true;
break;
case 'C':
updateUsersList = true;
msg_body = '<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>';
break;
case 'I':
var msg = '<a href="'+message_info.message[3]+'" target="_blank"><img src="'+message_info.message[0]+'" width="'+message_info.message[1]+'" height="'+message_info.message[2]+'" class="proxy"></a>';
msg_body = '<a class="user clickable" title="Ecrire un PM &agrave; '+message_info.nickname+'">'+message_info.nickname+'</a><span class="console">&gt;</span><span class="text">'+msg+'</span>';
break;
case '9':
var msg = '<a href="'+message_info.message.url+'" target="_blank" title="'+message_info.message.title+'"><img src="'+message_info.message.url_img+'" width="'+message_info.message.width+'" height="'+message_info.message.height+'" class="proxy" /></a>';
msg_body = '<a class="user clickable" title="Ecrire un PM &agrave; '+message_info.nickname+'">'+message_info.nickname+'</a><span class="console">&gt;</span><span class="text">'+msg+'</span>';
break;
case 'R':
if(!bReset)
{
msg_body = '<span class="text action">'+message_info.message+'</span>';
setTimeout('databap.goTo(databap.vars.current_page);', databap.consts.reboot_delay*1000);
}
break;
case 'V':
if(!bReset) joinChan(sChanKeyName, false, [], false);
break;
case 'B':
msg_body = '<span class="text action">Nouvel article sur le blog BI de SAP : <a href="'+message_info.message.link_art+'" target="_blank">'+message_info.message.title+'</a> ';
msg_body+= 'par <a title="Lien vers la page de l\'auteur" href="'+message_info.message.link_auth+'" target="_blank">'+message_info.message.name+'</a> ('+message_info.message.date+')'+'</span>';
break;
case 'S':
updateUsersList = true;
msg_body = '<span class="text action">'+message_info.nickname+' '+message_info.message+'</span>';
break;
}
if(msg_body != '')
{
$Message = $('<p class="'+message_info.msg_class+' class_'+sChanKeyName+' hide round_right"></p>').append('<span class="time">'+message_info.time+'</span>', msg_body);
$Message.find('.chan_link').click(function(){joinChan($(this).find('.chan_text').text());});
$Message.find('.user').click(setPm);
databap.getMainElem('#chat_messages').append($Message);
}
}
function refresh_users()
{
if(typeof oUserTimer != "undefined") clearTimeout(oUserTimer);
if(databap.vars.current_page == databap.pages.chat)
{
var delay = databap.consts.keep_alive / 10; //seconds
databap.getInfo
(
'connected_users',
function(result)
{
//empty current users list
databap.getMainElem('#connected_users').empty();
users_list = [];
$.each
(
result,
function(sChankeyName, chan_info)
{
$.each
(
chan_info,
function(id_user, user_info)
{
var sNickName = user_info.nickname.replace('"', '\'');
users_list.push(sNickName);
var afk = (user_info.afk=='1')?'<img src="'+databap.consts.app_image_folder+'afk.png" class="afk" />':'';
var profileLink = databap.getExternalLink('profil', user_info.id_user);
var user = '<p class="class_'+sChankeyName+'">'
+'<a href="'+profileLink+'" title="Lien vers le profil de '+user_info.name+' ('+user_info.company+')" target="_blank"><img src="'+databap.consts.app_image_folder+user_info.logo+'" style="vertical-align:middle" />'+afk+'</a>'
+'<a class="connectedUser clickable '+sNickName+'" id="'+user_info.id_user+'" title="Mission actuelle : '+user_info.status+'">'+sNickName+'</a>'
+'</p>';
$user = $(user).css("visibility", "hidden");
$user.find('.connectedUser').click(joinPmChan);
databap.getMainElem('#connected_users').append($user);
}
);
}
);
//Resize Nickname
var iMaxSize = 126 - 24 - 5; //boxSize - imageSize - marginLeftSize
$.each
(
users_list,
function(user_id, user)
{
databap.getMainElem('.'+user).each(function()
{
$nick = $(this);
while($nick.width() > iMaxSize)
{
sNickName = $nick.text();
$nick.text(sNickName.substr(0, sNickName.length - 1));
}
$nick.parent().css("visibility", "visible");
});
}
);
switchChan();
},
{},
'json',
function(textStatus)
{
delay = 10;
}
);
//re-scheddule
oUserTimer = setTimeout(refresh_users, delay*1000);
}
}
function setPm()
{
var name = $(this).text();
//PM
var msg='';
var prevMsg = databap.getMainElem('#message').val();
if(prevMsg.substr(0, 1) == '@')
{
msg = prevMsg.substr(prevMsg.indexOf(' ')+1);
}
else
{
msg = prevMsg;
}
databap.getMainElem('#message').val('@'+name+' '+msg).focus();
}
function displayHelp()
{
//Get template
$Help = $('#help').clone().attr('id', 'help_'+Math.floor((Math.random()*1000)));
//Visible on all channels
$Help.find('p').addClass('class_'+databap.consts.all_chan_id);
$Help.appendTo('#chat_messages').slideDown('fast', function(){oScrollbar.tinyscrollbar_update('bottom');});
//Close button activation
$Help.find('#close_help').click(function(){$(this).closest('.help').slideUp('fast', function(){oScrollbar.tinyscrollbar_update('bottom');});});
}
</script>