diff --git a/js/battle.js b/js/battle.js index bbccd44bc..85c6a220c 100644 --- a/js/battle.js +++ b/js/battle.js @@ -4652,9 +4652,9 @@ function Battle(frame, logFrame, noPreload) { args.shift(); var message = args.join('|'); if (message.substr(0,2) === '//') { - self.log('
' + Tools.escapeHTML(name) + ': ' + Tools.parseMessage(message.substr(1)) + '
', preempt); + self.log('
' + Tools.escapeHTML(name) + ': ' + Tools.parseMessage(message.substr(1), name) + '
', preempt); } else if (message.substr(0,4).toLowerCase() === '/me ') { - self.log('
' + Tools.escapeHTML(name) + ' ' + Tools.parseMessage(message.substr(4)) + '
', preempt); + self.log('
' + Tools.escapeHTML(name) + ' ' + Tools.parseMessage(message.substr(4), name) + '
', preempt); } else if (message.substr(0,14).toLowerCase() === '/data-pokemon ') { self.log('
', preempt); } else if (message.substr(0,11).toLowerCase() === '/data-item ') { @@ -4664,7 +4664,7 @@ function Battle(frame, logFrame, noPreload) { } else if (message.substr(0,11).toLowerCase() === '/data-move ') { self.log('
', preempt); } else { - self.log('
' + Tools.escapeHTML(name) + ': ' + Tools.parseMessage(message) + '
', preempt); + self.log('
' + Tools.escapeHTML(name) + ': ' + Tools.parseMessage(message, name) + '
', preempt); } break; case 'chatmsg': @@ -4680,7 +4680,7 @@ function Battle(frame, logFrame, noPreload) { self.log('
' + Tools.sanitizeHTML(list) + '
', preempt); break; case 'pm': - self.log('
' + Tools.escapeHTML(args[1]) + ': (Private to ' + Tools.escapeHTML(args[3]) + ') ' + Tools.parseMessage(args[4]) + ''); + self.log('
' + Tools.escapeHTML(args[1]) + ': (Private to ' + Tools.escapeHTML(args[3]) + ') ' + Tools.parseMessage(args[4], args[1]) + ''); break; case 'askreg': self.log('
Register an account to protect your ladder rating!
'); diff --git a/js/battledata.js b/js/battledata.js index 897a1be5f..7e11101e8 100644 --- a/js/battledata.js +++ b/js/battledata.js @@ -297,7 +297,7 @@ var Tools = { return Tools.escapeHTML(formatid); }, - parseMessage: function(str) { + parseMessage: function(str, linkclass) { str = Tools.escapeHTML(str); // Don't format console commands (>>). if (str.substr(0, 8) === '>>') return str; @@ -337,8 +337,12 @@ var Tools = { onclick = 'if (window._gaq) _gaq.push([\'_trackEvent\', \'' + event + '\', \'' + Tools.escapeQuotes(fulluri) + '\']);'; } + if (linkclass) { + classbit = ' class="message-link-' + toId(linkclass) + '"'; + } return '' + uri + ''; + '" target="_blank" onclick="' + onclick + '"' + classbit + + '>' + uri + ''; }); // google [blah] // google[blah] diff --git a/js/client-chat.js b/js/client-chat.js index e53327903..32a0135e6 100644 --- a/js/client-chat.js +++ b/js/client-chat.js @@ -769,6 +769,14 @@ this.$chat.append('
' + Tools.sanitizeHTML(row.slice(1).join('|')) + '
'); break; + case 'unlink': + // note: this message has global effects, but it's handled here + // so that it can be included in the scrollback buffer. + $('.message-link-' + toId(row[1])).each(function() { + $(this).replaceWith($(this).html()); + }); + break; + case '': this.$chat.append('
' + Tools.escapeHTML(row.slice(1).join('|')) + '
'); break; @@ -916,30 +924,30 @@ if (name.charAt(0) !== ' ') clickableName = '' + Tools.escapeHTML(name.charAt(0)) + ''+clickableName; var self = this; var outputChat = function() { - self.$chat.append(chatDiv + timestamp + '' + clickableName + ': ' + Tools.parseMessage(message) + '
'); + self.$chat.append(chatDiv + timestamp + '' + clickableName + ': ' + Tools.parseMessage(message, name) + '
'); }; var showme = !((Tools.prefs('chatformatting') || {}).hideme); if (pm) { var pmuserid = toUserid(pm); var oName = pm; if (pmuserid === app.user.get('userid')) oName = name; - this.$chat.append('
' + timestamp + '' + clickableName + ': (Private to ' + Tools.escapeHTML(pm) + ') ' + Tools.parseMessage(message) + '
'); + this.$chat.append('
' + timestamp + '' + clickableName + ': (Private to ' + Tools.escapeHTML(pm) + ') ' + Tools.parseMessage(message, name) + '
'); } else if (message.substr(0,4) === '/me ') { message = message.substr(4); if (showme) { - this.$chat.append(chatDiv + timestamp + ' ' + clickableName + ' ' + Tools.parseMessage(message) + ''); + this.$chat.append(chatDiv + timestamp + ' ' + clickableName + ' ' + Tools.parseMessage(message, name) + ''); } else { outputChat(); } } else if (message.substr(0,5) === '/mee ') { message = message.substr(5); if (showme) { - this.$chat.append(chatDiv + timestamp + ' ' + clickableName + '' + Tools.parseMessage(message) + ''); + this.$chat.append(chatDiv + timestamp + ' ' + clickableName + '' + Tools.parseMessage(message, name) + ''); } else { outputChat(); } } else if (message.substr(0,10) === '/announce ') { - this.$chat.append(chatDiv + timestamp + '' + clickableName + ': ' + Tools.parseMessage(message.substr(10)) + ''); + this.$chat.append(chatDiv + timestamp + '' + clickableName + ': ' + Tools.parseMessage(message.substr(10), name) + ''); } else if (message.substr(0,6) === '/warn ') { app.addPopup(RulesPopup, {warning: message.substr(6)}); } else if (message.substr(0,14) === '/data-pokemon ') { diff --git a/js/client-mainmenu.js b/js/client-mainmenu.js index 80c51edab..f430003b0 100644 --- a/js/client-mainmenu.js +++ b/js/client-mainmenu.js @@ -93,15 +93,15 @@ if (name.substr(0, 1) !== ' ') clickableName = '' + Tools.escapeHTML(name.substr(0, 1)) + ''+clickableName; if (message.substr(0,4) === '/me ') { - $chat.append('
' + timestamp + ' ' + clickableName + ' ' + Tools.parseMessage(message.substr(4)) + '
'); + $chat.append('
' + timestamp + ' ' + clickableName + ' ' + Tools.parseMessage(message.substr(4), name) + '
'); } else if (message.substr(0,5) === '/mee ') { - $chat.append('
' + timestamp + ' ' + clickableName + '' + Tools.parseMessage(message.substr(5)) + '
'); + $chat.append('
' + timestamp + ' ' + clickableName + '' + Tools.parseMessage(message.substr(5), name) + '
'); } else if (message.substr(0,8) === '/invite ') { var roomid = toRoomid(message.substr(8)); $chat.append('
' + timestamp + '' + clickableName + ' invited you to join the room "'+roomid+'"
'); $chat.append('
'); } else if (message.substr(0,10) === '/announce ') { - $chat.append('
' + timestamp + '' + clickableName + ': ' + Tools.parseMessage(message.substr(10)) + '
'); + $chat.append('
' + timestamp + '' + clickableName + ': ' + Tools.parseMessage(message.substr(10), name) + '
'); } else if (message.substr(0,14) === '/data-pokemon ') { $chat.append('
    '+Chart.pokemonRow(Tools.getTemplate(message.substr(14)),'',{})+'
'); } else if (message.substr(0,11) === '/data-item ') { @@ -113,7 +113,7 @@ } else { // Normal chat message. if (message.substr(0,2) === '//') message = message.substr(1); - $chat.append('
' + timestamp + '' + clickableName + ': ' + Tools.parseMessage(message) + '
'); + $chat.append('
' + timestamp + '' + clickableName + ': ' + Tools.parseMessage(message, name) + '
'); } if (autoscroll) {