Add MOTD and chat filter interface

This commit is contained in:
calzoneman 2013-04-01 16:02:09 -05:00
parent a0c26ee0e5
commit fab4039fc1
9 changed files with 192 additions and 30 deletions

View file

@ -124,3 +124,7 @@
.nick-highlight {
background-color: #ddffdd;
}
#motdtext {
width: 100%;
}

View file

@ -26,6 +26,19 @@ function initCallbacks() {
showAnnouncement(data.title, data.text);
});
socket.on("updateMotd", function(data) {
$("#motdtext").val(data.motd);
if(data.motd != "")
$("#motd").parent().css("display", "");
else
$("#motd").parent().css("display", "none");
$("#motd")[0].innerHTML = data.html;
});
socket.on("chatFilters", function(data) {
updateChatFilters(data.filters);
});
socket.on("registerChannel", function(data) {
if(data.success) {
$("#chregnotice").remove();

View file

@ -278,18 +278,47 @@ $("#opt_submit").click(function() {
socket.emit("channelOpts", opts);
});
$("#updatemotd").click(function() {
var motd = $("#motdtext").val();
socket.emit("updateMotd", {
motd: motd
});
});
$("#show_chancontrols").click(function() {
$("#show_chancontrols").parent().addClass("active");
$("#show_banlist").parent().removeClass("active");
$("#banlist").hide();
$("#show_motdeditor").parent().removeClass("active");
$("#show_filtereditor").parent().removeClass("active");
$("#show_chancontrols").parent().addClass("active");
$(".modonly").hide();
$("#chancontrols").show();
});
$("#show_banlist").click(function() {
$("#show_chancontrols").parent().removeClass("active");
$("#show_motdeditor").parent().removeClass("active");
$("#show_filtereditor").parent().removeClass("active");
$("#show_banlist").parent().addClass("active");
$(".modonly").hide();
$("#banlist").show();
$("#chancontrols").hide();
});
$("#show_motdeditor").click(function() {
$("#show_chancontrols").parent().removeClass("active");
$("#show_banlist").parent().removeClass("active");
$("#show_filtereditor").parent().removeClass("active");
$("#show_motdeditor").parent().addClass("active");
$(".modonly").hide();
$("#motdeditor").show();
});
$("#show_filtereditor").click(function() {
$("#show_chancontrols").parent().removeClass("active");
$("#show_banlist").parent().removeClass("active");
$("#show_motdeditor").parent().removeClass("active");
$("#show_filtereditor").parent().addClass("active");
$(".modonly").hide();
$("#filtereditor").show();
});
function searchLibrary() {

View file

@ -675,6 +675,62 @@ function updateBanlist(entries) {
}
}
function updateChatFilters(entries) {
var tbl = $("#filtereditor table");
if(tbl.children().length > 1) {
$(tbl.children()[1]).remove();
}
for(var i = 0; i < entries.length; i++) {
var tr = $("<tr/>").appendTo(tbl);
var remove = $("<button/>").addClass("btn btn-mini btn-danger")
.appendTo($("<td/>").appendTo(tr));
$("<i/>").addClass("icon-remove-circle").appendTo(remove);
var regex = $("<code/>").text(entries[i][0])
.appendTo($("<td/>").appendTo(tr));
var replace = $("<code/>").text(entries[i][1])
.appendTo($("<td/>").appendTo(tr));
var activetd = $("<td/>").appendTo(tr);
var active = $("<input/>").attr("type", "checkbox")
.prop("checked", entries[i][2]).appendTo(activetd);
var remcallback = (function(filter) { return function() {
socket.emit("chatFilter", {
cmd: "remove",
filter: filter
});
} })(entries[i]);
remove.click(remcallback);
var actcallback = (function(filter) { return function() {
filter[2] = active.prop("checked");
socket.emit("chatFilter", {
cmd: "update",
filter: filter
});
} })(entries[i]);
active.click(actcallback);
}
var newfilt = $("<tr/>").appendTo(tbl);
$("<td/>").appendTo(newfilt);
var regex = $("<input/>").attr("type", "text")
.appendTo($("<td/>").appendTo(newfilt));
var replace = $("<input/>").attr("type", "text")
.appendTo($("<td/>").appendTo(newfilt));
var add = $("<button/>").addClass("btn btn-primary")
.text("Add Filter")
.appendTo($("<td/>").appendTo(newfilt));
var cback = (function(regex, replace) { return function() {
if(regex.val() && replace.val()) {
socket.emit("chatFilter", {
cmd: "update",
filter: [regex.val(), replace.val(), true]
});
}
} })(regex, replace);
add.click(cback);
}
function handleRankChange() {
rebuildPlaylist();
if(RANK >= Rank.Moderator || LEADER) {