diff --git a/code/modules/goonchat/browserassets/js/browserOutput.js b/code/modules/goonchat/browserassets/js/browserOutput.js index 478ddcccdd..ba8e0b9dcf 100644 --- a/code/modules/goonchat/browserassets/js/browserOutput.js +++ b/code/modules/goonchat/browserassets/js/browserOutput.js @@ -198,7 +198,7 @@ function output(message, flag) { if (flag !== 'internal') opts.lastPang = Date.now(); - message = byondDecode(message) + message = byondDecode(message).trim(); //The behemoth of filter-code (for Admin message filters) //Note: This is proooobably hella inefficient @@ -296,27 +296,30 @@ function output(message, flag) { opts.messageCount--; //I guess the count should only ever equal the limit } + // Create the element - if combining is off, we use it, and if it's on, we + // might discard it bug need to check its text content. Some messages vary + // only in HTML markup, have the same text content, and should combine. + var entry = document.createElement('div'); + entry.innerHTML = message; + var trimmed_message = entry.textContent || entry.innerText || ""; + var handled = false; - var trimmed_message = message.trim() - var lastmessages = $messages.children('div.entry:last-child'); - if (opts.messageCombining && lastmessages.length && $last_message) - { - if($last_message == trimmed_message) - { - if(lastmessages.children('span.r').length) - { - var current_value = parseInt(lastmessages.children('span.r').text()) - lastmessages.children('span.r').text(current_value+1) + if (opts.messageCombining) { + var lastmessages = $messages.children('div.entry:last-child').last(); + if (lastmessages.length && $last_message && $last_message == trimmed_message) { + var badge = lastmessages.children('.r').last(); + if (badge.length) { + badge = badge.detach(); + badge.text(parseInt(badge.text()) + 1); + } else { + badge = $('', {'class': 'r', 'text': 2}); } - else - { - lastmessages.append($('', { 'class': 'r', 'text': 2})); - } - var insertedBadge = $(lastmessages).find('.r'); - insertedBadge.animate({ + lastmessages.html(message); + lastmessages.append(badge); + badge.animate({ "font-size": "0.9em" }, 100, function() { - insertedBadge.animate({ + badge.animate({ "font-size": "0.7em" }, 100); }); @@ -325,10 +328,8 @@ function output(message, flag) { } } - if(!handled) - { + if (!handled) { //Actually append the message - var entry = document.createElement('div'); entry.className = 'entry'; if (filteredOut) { @@ -337,7 +338,6 @@ function output(message, flag) { } $last_message = trimmed_message; - entry.innerHTML = trimmed_message; $messages[0].appendChild(entry); $(entry).find("img.icon").error(iconError); //Actually do the snap