Index: openacs-4/packages/xowiki/tcl/chat-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/chat-procs.tcl,v diff -u -N -r1.54.2.2 -r1.54.2.3 --- openacs-4/packages/xowiki/tcl/chat-procs.tcl 25 Feb 2019 15:35:44 -0000 1.54.2.2 +++ openacs-4/packages/xowiki/tcl/chat-procs.tcl 25 Feb 2019 15:48:45 -0000 1.54.2.3 @@ -516,7 +516,7 @@ template::head::add_javascript -src urn:ad:js:get-http-object -order 10 template::head::add_javascript -script "const linkRegex = \"${link_regex}\";" -order 19 template::head::add_javascript -src /resources/xowiki/chat-common.js -order 20 - template::head::add_javascript -src /resources/xowiki/chat-skins/chat-$skin-common.js -order 21 + template::head::add_javascript -src /resources/xowiki/chat-skins/chat-$skin.js -order 21 template::head::add_javascript -src $jspath -order 30 set send_url ${base_url}&m=add_msg&msg= Index: openacs-4/packages/xowiki/www/resources/chat-common.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/resources/Attic/chat-common.js,v diff -u -N -r1.10.2.2 -r1.10.2.3 --- openacs-4/packages/xowiki/www/resources/chat-common.js 25 Feb 2019 15:35:44 -0000 1.10.2.2 +++ openacs-4/packages/xowiki/www/resources/chat-common.js 25 Feb 2019 15:48:45 -0000 1.10.2.3 @@ -1,3 +1,5 @@ +// Common xowiki chat functions + // Send the message function chatSendMsg(send_url, handler) { var msgField = document.getElementById('xowiki-chat-send'); @@ -9,3 +11,23 @@ http_send.send(null); msgField.value = ''; } + +// Simple function to create links +function createLink(text) { + if (linkRegex != null) { + return text.replace(new RegExp(linkRegex,'g'), function(url) { + return '' + url + ''; + }) + } else { + return text; + } +} + +// Render the data, being a user or a message +function renderData(json) { + if (json.type == "message") { + renderMessage(json); + } else if (json.type == "users") { + renderUsers(json); + } +} Index: openacs-4/packages/xowiki/www/resources/chat-skins/chat-bubbles-common.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/resources/chat-skins/chat-bubbles-common.js,v diff -u -N --- openacs-4/packages/xowiki/www/resources/chat-skins/chat-bubbles-common.js 25 Feb 2019 15:35:44 -0000 1.3.2.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,265 +0,0 @@ -// Common xowiki chat functions, mainly for data rendering. - -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; - } -} - -// Simple function to create links -function createLink(text) { - if (linkRegex != null) { - return text.replace(new RegExp(linkRegex,'g'), function(url) { - return '' + url + ''; - }) - } else { - return text; - } -} - -// Render the data, being a user or a message -function renderData(json) { - if (json.type == "message") { - renderMessage(json); - } else if (json.type == "users") { - renderUsers(json); - } -} - -// 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; - - // Delete temporal terminator - var temp_terminator = document.getElementById('xowiki-chat-message-block-end-temp'); - if (temp_terminator != null) { - temp_terminator.parentNode.removeChild(temp_terminator); - } - - // If the user and the color changes, show the user info again - if (previous_user_id != user_id && current_color != color) { - - // Add terminator for the previous message block if exists - if (previous_user_id != "") { - if (previous_user_id == my_user_id) { - end_message = document.createElement('div'); - end_message.className = 'xowiki-chat-message-block-end-me'; - messages.appendChild(end_message); - } else { - end_message = document.createElement('div'); - end_message.className = 'xowiki-chat-message-block-end'; - messages.appendChild(end_message); - } - } - - // Show user name and pic only for others - if (user_id != my_user_id) { - - // User block - user_block = document.createElement('div'); - user_block.className = 'xowiki-chat-user-block'; - - // User picture - wrapper = document.createElement('div'); - wrapper.className = 'xowiki-chat-user-pic-wrap'; - var show_avatar = document.getElementById('xowiki-chat-show-avatar'); - if (show_avatar != null) { - img = document.createElement('img'); - img.src = '/shared/portrait-bits.tcl?user_id=' + user_id - img.className = 'xowiki-chat-user-pic'; - img.style = 'border-color:' + color; - wrapper.appendChild(img); - } - messages.appendChild(wrapper); - - // 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); - - } else { - - // Empty div to use as the dummy header - user_block = document.createElement('div'); - user_block.className = 'xowiki-chat-user-block-me'; - messages.appendChild(user_block); - previous_user_id = user_id; - current_color = color; - } - } - - 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); - - // Add temporal terminator for message block - if (user_id == my_user_id) { - end_message = document.createElement('div'); - end_message.className = 'xowiki-chat-message-block-end-me'; - end_message.id = 'xowiki-chat-message-block-end-temp'; - messages.appendChild(end_message); - } else { - end_message = document.createElement('div'); - end_message.className = 'xowiki-chat-message-block-end'; - end_message.id = 'xowiki-chat-message-block-end-temp'; - messages.appendChild(end_message); - } - - 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); - } -} Index: openacs-4/packages/xowiki/www/resources/chat-skins/chat-bubbles.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/resources/chat-skins/Attic/chat-bubbles.js,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/xowiki/www/resources/chat-skins/chat-bubbles.js 25 Feb 2019 15:48:45 -0000 1.1.2.1 @@ -0,0 +1,245 @@ +// Javascript side of the Bubbles 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; + + // Delete temporal terminator + var temp_terminator = document.getElementById('xowiki-chat-message-block-end-temp'); + if (temp_terminator != null) { + temp_terminator.parentNode.removeChild(temp_terminator); + } + + // If the user and the color changes, show the user info again + if (previous_user_id != user_id && current_color != color) { + + // Add terminator for the previous message block if exists + if (previous_user_id != "") { + if (previous_user_id == my_user_id) { + end_message = document.createElement('div'); + end_message.className = 'xowiki-chat-message-block-end-me'; + messages.appendChild(end_message); + } else { + end_message = document.createElement('div'); + end_message.className = 'xowiki-chat-message-block-end'; + messages.appendChild(end_message); + } + } + + // Show user name and pic only for others + if (user_id != my_user_id) { + + // User block + user_block = document.createElement('div'); + user_block.className = 'xowiki-chat-user-block'; + + // User picture + wrapper = document.createElement('div'); + wrapper.className = 'xowiki-chat-user-pic-wrap'; + var show_avatar = document.getElementById('xowiki-chat-show-avatar'); + if (show_avatar != null) { + img = document.createElement('img'); + img.src = '/shared/portrait-bits.tcl?user_id=' + user_id + img.className = 'xowiki-chat-user-pic'; + img.style = 'border-color:' + color; + wrapper.appendChild(img); + } + messages.appendChild(wrapper); + + // 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); + + } else { + + // Empty div to use as the dummy header + user_block = document.createElement('div'); + user_block.className = 'xowiki-chat-user-block-me'; + messages.appendChild(user_block); + previous_user_id = user_id; + current_color = color; + } + } + + 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); + + // Add temporal terminator for message block + if (user_id == my_user_id) { + end_message = document.createElement('div'); + end_message.className = 'xowiki-chat-message-block-end-me'; + end_message.id = 'xowiki-chat-message-block-end-temp'; + messages.appendChild(end_message); + } else { + end_message = document.createElement('div'); + end_message.className = 'xowiki-chat-message-block-end'; + end_message.id = 'xowiki-chat-message-block-end-temp'; + messages.appendChild(end_message); + } + + 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); + } +} Index: openacs-4/packages/xowiki/www/resources/chat-skins/chat-classic-common.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/resources/chat-skins/chat-classic-common.js,v diff -u -N --- openacs-4/packages/xowiki/www/resources/chat-skins/chat-classic-common.js 25 Feb 2019 15:35:44 -0000 1.3.2.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,203 +0,0 @@ -// Common xowiki chat functions, mainly for data rendering. - -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; - } -} - -// Simple function to create links -function createLink(text) { - if (linkRegex != null) { - return text.replace(new RegExp(linkRegex,'g'), function(url) { - return '' + url + ''; - }) - } else { - return text; - } -} - -// Render the data, being a user or a message -function renderData(json) { - if (json.type == "message") { - renderMessage(json); - } else if (json.type == "users") { - renderUsers(json); - } -} - -// 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); - } -} 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); + } +}