A few tweaks, cleanup

This commit is contained in:
calzoneman 2013-11-18 11:11:00 -06:00
parent 0e95ef2aa4
commit b250f3c64b
2 changed files with 41 additions and 201 deletions

View File

@ -99,13 +99,14 @@ var handlers = {
var handlerList = []; var handlerList = [];
for (var key in handlers) { for (var key in handlers) {
handlerList.push({ handlerList.push({
// match /command followed by a space or end of string
re: new RegExp("^\\/" + key + "(?:\\s|$)"), re: new RegExp("^\\/" + key + "(?:\\s|$)"),
fn: handlers[key] fn: handlers[key]
}); });
} }
function handle(chan, user, msg, meta) { function handle(chan, user, msg, meta) {
// Special case // Special case because the drink command can vary
var m = msg.match(/^\/d(-?[0-9]*)(?:\s|$)(.*)/); var m = msg.match(/^\/d(-?[0-9]*)(?:\s|$)(.*)/);
if (m) { if (m) {
handleDrink(chan, user, m[1], m[2], meta); handleDrink(chan, user, m[1], m[2], meta);
@ -155,101 +156,12 @@ function handleDrink(chan, user, count, msg, meta) {
chan.sendMessage(user, msg, meta); chan.sendMessage(user, msg, meta);
} }
function handleOld(chan, user, msg, data) {
if(msg.indexOf("/me ") == 0)
chan.sendMessage(user.name, msg.substring(4), "action", data);
else if(msg.indexOf("/sp ") == 0)
chan.sendMessage(user.name, msg.substring(4), "spoiler", data);
else if(msg.indexOf("/say ") == 0) {
if(user.rank >= 1.5) {
chan.sendMessage(user.name, msg.substring(5), "shout", data);
}
}
else if(msg.indexOf("/afk") == 0) {
user.setAFK(!user.meta.afk);
}
else if(msg.indexOf("/m ") == 0) {
if(user.rank >= 2) {
chan.chainMessage(user, msg.substring(3), {modflair: user.rank})
}
}
else if(msg.indexOf("/a ") == 0) {
if(user.rank >= 255) {
var flair = {
superadminflair: {
labelclass: "label-important",
icon: "icon-globe"
}
};
var args = msg.substring(3).split(" ");
var cargs = [];
for(var i = 0; i < args.length; i++) {
var a = args[i];
if(a.indexOf("!icon-") == 0)
flair.superadminflair.icon = a.substring(1);
else if(a.indexOf("!label-") == 0)
flair.superadminflair.labelclass = a.substring(1);
else {
cargs.push(a);
}
}
chan.chainMessage(user, cargs.join(" "), flair);
}
}
else if(msg.indexOf("/mute ") == 0) {
handleMute(chan, user, msg.substring(6).split(" "));
}
else if(msg.indexOf("/smute ") == 0) {
handleShadowMute(chan, user, msg.substring(7).split(" "));
}
else if(msg.indexOf("/unmute ") == 0) {
handleUnmute(chan, user, msg.substring(8).split(" "));
}
else if(msg.indexOf("/kick ") == 0) {
handleKick(chan, user, msg.substring(6).split(" "));
}
else if(msg.indexOf("/ban ") == 0) {
handleBan(chan, user, msg.substring(5).split(" "));
}
else if(msg.indexOf("/ipban ") == 0) {
handleIPBan(chan, user, msg.substring(7).split(" "));
}
else if(msg.indexOf("/unban ") == 0) {
handleUnban(chan, user, msg.substring(7).split(" "));
}
else if(msg.indexOf("/poll ") == 0) {
handlePoll(chan, user, msg.substring(6), false);
}
else if(msg.indexOf("/hpoll ") == 0) {
handlePoll(chan, user, msg.substring(6), true);
}
else if(msg.indexOf("/d") == 0 && msg.length > 2 &&
msg[2].match(/[-0-9 ]/)) {
if(msg[2] == "-") {
if(msg.length == 3)
return;
if(!msg[3].match(/[0-9]/))
return;
}
handleDrink(chan, user, msg.substring(2), data);
}
else if(msg.indexOf("/clear") == 0) {
handleClear(chan, user);
}
else if(msg.indexOf("/clean ") == 0) {
handleClean(chan, user, msg.substring(7));
}
else if(msg.indexOf("/cleantitle ") == 0) {
handleCleanTitle(chan, user, msg.substring(12));
}
}
function handleShadowMute(chan, user, args) { function handleShadowMute(chan, user, args) {
if (chan.hasPermission(user, "mute") && args.length > 0) { if (chan.hasPermission(user, "mute") && args.length > 0) {
args[0] = args[0].toLowerCase(); args[0] = args[0].toLowerCase();
var person = false; var person = false;
for (var i = 0; i < chan.users.length; i++) { for (var i = 0; i < chan.users.length; i++) {
if(chan.users[i].name.toLowerCase() == args[0]) { if (chan.users[i].name.toLowerCase() === args[0]) {
person = chan.users[i]; person = chan.users[i];
break; break;
} }
@ -262,6 +174,7 @@ function handleShadowMute(chan, user, args) {
}); });
return; return;
} }
/* Reset a previous regular mute */ /* Reset a previous regular mute */
if (chan.mutedUsers.contains(person.name.toLowerCase())) { if (chan.mutedUsers.contains(person.name.toLowerCase())) {
chan.mutedUsers.remove(person.name.toLowerCase()); chan.mutedUsers.remove(person.name.toLowerCase());
@ -280,7 +193,7 @@ function handleShadowMute(chan, user, args) {
var pkt = { var pkt = {
username: "[server]", username: "[server]",
msg: user.name + " shadow muted " + args[0], msg: user.name + " shadow muted " + args[0],
addClass: "server-whisper", meta: { addClass: "server-whisper" },
time: Date.now() time: Date.now()
}; };
chan.users.forEach(function (u) { chan.users.forEach(function (u) {
@ -416,32 +329,6 @@ function handlePoll(chan, user, msg, hidden) {
} }
} }
/*
function handleDrink(chan, user, msg, data) {
if(!chan.hasPermission(user, "drink")) {
return;
}
var count = msg.split(" ")[0];
msg = msg.substring(count.length + 1);
if(count == "")
count = 1;
else
count = parseInt(count);
chan.drinks += count;
chan.broadcastDrinks();
if(count < 0 && msg.trim() == "") {
return;
}
msg = msg + " drink!";
if(count != 1)
msg += " (x" + count + ")";
chan.sendMessage(user.name, msg, "drink", data);
}
*/
function handleClear(chan, user) { function handleClear(chan, user) {
if (user.rank < 2) { if (user.rank < 2) {
return; return;

View File

@ -1442,22 +1442,27 @@ function sendVideoUpdate() {
/* chat */ /* chat */
function formatChatMessage(data) { function formatChatMessage(data) {
// Phase 1: Determine whether to show the username or not
var skip = data.username === LASTCHATNAME; var skip = data.username === LASTCHATNAME;
if (data.meta.forceShowName) { if(data.meta.addClass === "server-whisper")
skip = false;
}
if(data.msgclass == "server-whisper")
skip = true; skip = true;
// Prevent impersonation by abuse of the bold filter // Prevent impersonation by abuse of the bold filter
if(data.msg.match(/^\s*<strong>\w+\s*:\s*<\/strong>\s*/)) if(data.msg.match(/^\s*<strong>\w+\s*:\s*<\/strong>\s*/))
skip = false; skip = false;
if (data.meta.forceShowName)
skip = false;
LASTCHATNAME = data.username; LASTCHATNAME = data.username;
LASTCHATTIME = data.time; LASTCHATTIME = data.time;
var div = $("<div/>"); var div = $("<div/>");
/* drink is a special case because the entire container gets the class, not
just the message */
if (data.meta.addClass === "drink") { if (data.meta.addClass === "drink") {
div.addClass("drink"); div.addClass("drink");
data.meta.addClass = ""; data.meta.addClass = "";
} }
// Add timestamps (unless disabled)
if (USEROPTS.show_timestamps) { if (USEROPTS.show_timestamps) {
var time = $("<span/>").addClass("timestamp").appendTo(div); var time = $("<span/>").addClass("timestamp").appendTo(div);
var timestamp = new Date(data.time).toTimeString().split(" ")[0]; var timestamp = new Date(data.time).toTimeString().split(" ")[0];
@ -1468,6 +1473,7 @@ function formatChatMessage(data) {
} }
} }
// Add username
var name = $("<span/>"); var name = $("<span/>");
if (!skip) { if (!skip) {
name.appendTo(div); name.appendTo(div);
@ -1487,9 +1493,11 @@ function formatChatMessage(data) {
.prependTo(name); .prependTo(name);
} }
// Add the message itself
var message = $("<span/>").appendTo(div); var message = $("<span/>").appendTo(div);
message[0].innerHTML = data.msg; message[0].innerHTML = data.msg;
// For /me the username is part of the message
if (data.meta.action) { if (data.meta.action) {
name.remove(); name.remove();
message[0].innerHTML = data.username + " " + data.msg; message[0].innerHTML = data.username + " " + data.msg;
@ -1500,68 +1508,13 @@ function formatChatMessage(data) {
return div; return div;
} }
function oldFormatChatMessage(data) {
var skip = data.username == LASTCHATNAME;
if(data.msgclass == "drink" || data.msgclass == "shout") {
skip = false;
}
if(data.superadminflair)
skip = false;
if(data.msgclass == "server-whisper")
skip = true;
// Prevent impersonation by abuse of the bold filter
if(data.msg.match(/^\s*<strong>\w+\s*:\s*<\/strong>\s*/))
skip = false;
LASTCHATNAME = data.username;
LASTCHATTIME = data.time;
var div = $("<div/>");
if(USEROPTS.show_timestamps) {
var time = $("<span/>").addClass("timestamp").appendTo(div);
var timestamp = new Date(data.time).toTimeString().split(" ")[0];
time.text("["+timestamp+"] ");
if(data.msgclass == "shout" || data.msgclass == "server-whisper")
time.addClass(data.msgclass);
}
var name = $("<span/>");
if(!skip) {
name.appendTo(div);
}
$("<strong/>").addClass("username").text(data.username + ": ").appendTo(name);
var message = $("<span/>").appendTo(div);
message[0].innerHTML = data.msg;
if(data.modflair) {
name.addClass(getNameColor(data.modflair));
}
if(data.superadminflair) {
name.addClass("label")
.addClass(data.superadminflair.labelclass);
$("<i/>").addClass(data.superadminflair.icon)
.addClass("icon-white")
.prependTo(name);
}
if(data.msgclass == "action") {
name.remove();
message.addClass("action");
message[0].innerHTML = data.username + " " + data.msg;
}
else if(data.msgclass == "drink") {
div.addClass("drink");
}
else if(data.msgclass == "shout") {
message.addClass("shout");
name.addClass("shout");
}
else {
message.addClass(data.msgclass);
}
return div;
}
function addChatMessage(data) { function addChatMessage(data) {
if(IGNORED.indexOf(data.username) != -1) { if(IGNORED.indexOf(data.username) !== -1) {
return; return;
} }
var div = formatChatMessage(data); var div = formatChatMessage(data);
// Incoming: a bunch of crap for the feature where if you hover over
// a message, it highlights messages from that user
div.data("sender", data.username); div.data("sender", data.username);
div.appendTo($("#messagebuffer")); div.appendTo($("#messagebuffer"));
div.mouseover(function() { div.mouseover(function() {