Index: openacs-4/packages/xowiki/www/resources/chat-skins/chat-classic.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/resources/chat-skins/Attic/chat-classic.js,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/xowiki/www/resources/chat-skins/chat-classic.js 25 Feb 2019 15:48:45 -0000 1.1.2.1 @@ -0,0 +1,183 @@ +// Javascript side of the Classic Chat skin + +var previous_user_id = ""; +var current_color = ""; + +// Full screen +function addFullScreenLink() { + + // Full screen trigger block + const triggerFSblock = document.createElement("div"); + triggerFSblock.className = 'xowiki-chat-trigger-fs-block'; + + // Full screen trigger + const triggerFSlink = document.createElement("a"); + triggerFSlink.className = 'xowiki-chat-trigger-fs-link'; + triggerFSlink.setAttribute("href", "#"); + + // Trigger icon + var triggerFSoff = ''; + var triggerFSon = ''; + triggerFSlink.innerHTML = triggerFSon; + + // Full screen when clicked + triggerFSlink.addEventListener("click", function(event) { + event.preventDefault(); + var chat = document.getElementById('xowiki-chat'); + var chatFS = document.getElementById('xowiki-chat-fs'); + if (chat != null) { + chat.id = 'xowiki-chat-fs'; + triggerFSlink.innerHTML = triggerFSoff; + document.body.style.overflow = "hidden"; + } else if (chatFS != null) { + chatFS.id = 'xowiki-chat'; + triggerFSlink.innerHTML = triggerFSon; + document.body.style.overflow = "scroll"; + } + // Scroll down the messages + var messages = document.getElementById('xowiki-chat-messages'); + messages.scrollTop = messages.scrollHeight; + }); + + // Add Full screen trigger to the chat + const formBlock = document.getElementById('xowiki-chat-messages-form-block'); + triggerFSblock.appendChild(triggerFSlink); + formBlock.appendChild(triggerFSblock); +} + +// Send link pic +function addSendPic() { + + var sendPic = ''; + var button = document.getElementById('xowiki-chat-send-button'); + + if (button != null) { + button.innerHTML = sendPic; + } +} + +// Render the message +function renderMessage(msg) { + var messages = document.getElementById('xowiki-chat-messages'); + var user = msg.user.replace(/\\'/g, "\""); + var message = createLink(msg.message); + var user_id = msg.user_id; + var my_user = document.getElementById('xowiki-my-user-id'); + if (my_user == null) { + my_user_id = ""; + } else { + my_user_id = my_user.innerText; + } + var color = msg.color; + + // User block + user_block = document.createElement('div'); + user_block.className = 'xowiki-chat-user-block'; + + // User link + a = document.createElement('a'); + a.href = '/shared/community-member?user%5fid=' + user_id; + a.target = '_blank'; + a.className = 'xowiki-chat-user-link'; + + // User name + span = document.createElement('span'); + span.textContent = user; + span.setAttribute("class", "xowiki-chat-user"); + span.setAttribute("style", "color:" + color); + a.appendChild(span); + user_block.appendChild(a); + previous_user_id = user_id; + current_color = color; + + messages.appendChild(user_block); + + message_block = document.createElement('div'); + if (user_id != my_user_id) { + message_block.className = 'xowiki-chat-message-block'; + } else { + message_block.className = 'xowiki-chat-message-block-me'; + } + + // Message body + span = document.createElement('span'); + span.innerHTML = message; + if (user_id != my_user_id) { + span.className = 'xowiki-chat-message'; + } else { + span.className = 'xowiki-chat-message-me'; + } + message_block.appendChild(span); + + // Timestamp + span = document.createElement('span'); + span.innerHTML = msg.timestamp; + if (user_id != my_user_id) { + span.className = 'xowiki-chat-timestamp'; + } else { + span.className = 'xowiki-chat-timestamp-me'; + } + message_block.appendChild(span); + + messages.appendChild(message_block); + + messages.scrollTop = messages.scrollHeight; + + // IE will lose focus on message send + document.getElementById('xowiki-chat-send').focus(); +} + +// Render the user in the user list +function renderUsers(msg) { + var users = document.getElementById('xowiki-chat-users'); + while (users.hasChildNodes()) { + users.removeChild(users.firstChild); + } + for (var i = 0; i < msg.message.length; i++) { + var user = msg.message[i].user.replace(/\\'/g, "\""); + var user_id = msg.message[i].user_id; + var color = msg.message[i].color; + + // User link + a = document.createElement('a'); + a.href = '/shared/community-member?user%5fid=' + user_id; + a.target = '_blank'; + a.className = 'xowiki-chat-user-link'; + + // User block + user_block = document.createElement('div'); + user_block.className = 'xowiki-chat-user-block'; + a.appendChild(user_block); + + // User picture + var show_avatar = document.getElementById('xowiki-chat-show-avatar'); + if (show_avatar != null) { + wrapper = document.createElement('div'); + wrapper.className = 'xowiki-chat-user-pic-wrap'; + img = document.createElement('img'); + img.setAttribute("src", "/shared/portrait-bits.tcl?user_id=" + user_id); + img.setAttribute("class", "xowiki-chat-user-pic"); + img.setAttribute("style", "border-color:" + color); + wrapper.appendChild(img); + user_block.appendChild(wrapper); + } + + // User name + span = document.createElement('span'); + span.textContent = user; + span.setAttribute("class", "xowiki-chat-user"); + span.setAttribute("style", "color:" + color); + user_block.appendChild(span); + + br = document.createElement('br'); + user_block.appendChild(br); + + // Timestamp + span = document.createElement('span'); + span.innerHTML = msg.message[i].timestamp; + span.className = 'xowiki-chat-timestamp'; + user_block.appendChild(span); + + users.appendChild(a); + } +}