Work on channel settings
This commit is contained in:
parent
8aa92f73ec
commit
24781df78f
8 changed files with 187 additions and 168 deletions
|
|
@ -235,155 +235,9 @@ Callbacks = {
|
|||
},
|
||||
|
||||
chatFilters: function(entries) {
|
||||
var tbl = $("#filteredit table");
|
||||
if(!tbl.hasClass("table")) {
|
||||
setTimeout(function() {
|
||||
Callbacks.chatFilters(entries);
|
||||
}, 100);
|
||||
return;
|
||||
}
|
||||
tbl.find(".filter-row").remove();
|
||||
for(var i = 0; i < entries.length; i++) {
|
||||
var f = entries[i];
|
||||
var tr = $("<tr/>").appendTo(tbl).addClass("filter-row");
|
||||
var remove = $("<button/>").addClass("btn btn-xs btn-danger")
|
||||
.appendTo($("<td/>").appendTo(tr));
|
||||
$("<span/>").addClass("glyphicon glyphicon-trash").appendTo(remove);
|
||||
var name = $("<code/>").text(f.name)
|
||||
.appendTo($("<td/>").appendTo(tr));
|
||||
var regex = $("<code/>").text(f.source)
|
||||
.appendTo($("<td/>").appendTo(tr));
|
||||
var flags = $("<code/>").text(f.flags)
|
||||
.appendTo($("<td/>").appendTo(tr));
|
||||
var replace = $("<code/>").text(f.replace)
|
||||
.appendTo($("<td/>").appendTo(tr));
|
||||
var linktd = $("<td/>").appendTo(tr);
|
||||
var link = $("<input/>").attr("type", "checkbox")
|
||||
.prop("checked", f.filterlinks).appendTo(linktd);
|
||||
var activetd = $("<td/>").appendTo(tr);
|
||||
var active = $("<input/>").attr("type", "checkbox")
|
||||
.prop("checked", f.active).appendTo(activetd);
|
||||
(function(f) {
|
||||
regex.click(function() {
|
||||
if(this.find(".filter-regex-edit").length > 0)
|
||||
return;
|
||||
var r = this.text();
|
||||
this.text("");
|
||||
var edit = $("<input/>").addClass("form-control filter-regex-edit")
|
||||
.attr("type", "text")
|
||||
.css("font-family", "Monospace")
|
||||
.attr("placeholder", r)
|
||||
.val(r)
|
||||
.appendTo(this)
|
||||
.focus();
|
||||
|
||||
function save() {
|
||||
var r = this.val();
|
||||
var r2 = r;
|
||||
if(r.trim() == "")
|
||||
r = this.attr("placeholder");
|
||||
this.parent().text(r);
|
||||
f.source = r;
|
||||
socket.emit("updateFilter", f);
|
||||
}
|
||||
edit.blur(save.bind(edit));
|
||||
edit.keydown(function(ev) {
|
||||
if(ev.keyCode == 13)
|
||||
save.bind(edit)();
|
||||
});
|
||||
}.bind(regex));
|
||||
flags.click(function() {
|
||||
if(this.find(".filter-flags-edit").length > 0)
|
||||
return;
|
||||
var r = this.text();
|
||||
this.text("");
|
||||
var edit = $("<input/>").attr("type", "text")
|
||||
.css("font-family", "Monospace")
|
||||
.attr("placeholder", r)
|
||||
.val(r)
|
||||
.addClass("form-control filter-flags-edit")
|
||||
.appendTo(this)
|
||||
.focus();
|
||||
|
||||
function save() {
|
||||
var r = this.val();
|
||||
var r2 = r;
|
||||
if(r.trim() == "")
|
||||
r = this.attr("placeholder");
|
||||
this.parent().text(r);
|
||||
f.flags = r;
|
||||
socket.emit("updateFilter", f);
|
||||
}
|
||||
edit.blur(save.bind(edit));
|
||||
edit.keydown(function(ev) {
|
||||
if(ev.keyCode == 13)
|
||||
save.bind(edit)();
|
||||
});
|
||||
}.bind(flags));
|
||||
replace.click(function() {
|
||||
if(this.find(".filter-replace-edit").length > 0)
|
||||
return;
|
||||
var r = this.text();
|
||||
this.text("");
|
||||
var edit = $("<input/>").attr("type", "text")
|
||||
.css("font-family", "Monospace")
|
||||
.attr("placeholder", r)
|
||||
.val(r)
|
||||
.addClass("form-control filter-replace-edit")
|
||||
.appendTo(this)
|
||||
.focus();
|
||||
|
||||
function save() {
|
||||
var r = this.val();
|
||||
var r2 = r;
|
||||
if(r.trim() == "")
|
||||
r = this.attr("placeholder");
|
||||
this.parent().text(r);
|
||||
f.replace = r;
|
||||
socket.emit("updateFilter", f);
|
||||
}
|
||||
edit.blur(save.bind(edit));
|
||||
edit.keydown(function(ev) {
|
||||
if(ev.keyCode == 13)
|
||||
save.bind(edit)();
|
||||
});
|
||||
}.bind(replace));
|
||||
|
||||
remove.click(function() {
|
||||
socket.emit("removeFilter", f);
|
||||
});
|
||||
|
||||
active.click(function() {
|
||||
// Apparently when you check a checkbox, its value is changed
|
||||
// before this callback. When you uncheck it, its value is not
|
||||
// changed before this callback
|
||||
// [](/amgic)
|
||||
var enabled = active.prop("checked");
|
||||
f.active = (f.active == enabled) ? !enabled : enabled;
|
||||
socket.emit("updateFilter", f);
|
||||
});
|
||||
link.click(function() {
|
||||
var enabled = link.prop("checked");
|
||||
f.filterlinks = (f.filterlinks == enabled) ? !enabled : enabled;
|
||||
socket.emit("updateFilter", f);
|
||||
});
|
||||
})(f);
|
||||
}
|
||||
|
||||
$(tbl.children()[1]).sortable({
|
||||
start: function(ev, ui) {
|
||||
FILTER_FROM = ui.item.prevAll().length;
|
||||
},
|
||||
update: function(ev, ui) {
|
||||
FILTER_TO = ui.item.prevAll().length;
|
||||
if(FILTER_TO != FILTER_FROM) {
|
||||
socket.emit("moveFilter", {
|
||||
from: FILTER_FROM,
|
||||
to: FILTER_TO
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
var tbl = $("#cs-chatfilters table");
|
||||
tbl.data("entries", entries);
|
||||
formatCSChatFilterList();
|
||||
},
|
||||
|
||||
channelOpts: function(opts) {
|
||||
|
|
|
|||
|
|
@ -466,6 +466,8 @@ $("#cs-chanranks-owner").click(chanrankSubmit.bind(this, 4));
|
|||
["#showmediaurl", "#showsearch", "#showcustomembed"].forEach(function (id) {
|
||||
$(id).click(function () {
|
||||
$(".plcontrol-collapse").collapse("hide");
|
||||
$("#plcontrol button").button("hide");
|
||||
$(id).button("toggle");
|
||||
});
|
||||
});
|
||||
$(".plcontrol-collapse").collapse();
|
||||
|
|
@ -493,7 +495,47 @@ $(".cs-textbox").keyup(function () {
|
|||
}
|
||||
|
||||
var data = {};
|
||||
data[key] = value;
|
||||
if (key.match(/chat_antiflood_(burst|sustained)/)) {
|
||||
data = {
|
||||
chat_antiflood_params: {
|
||||
burst: $("#cs-chat_antiflood_burst").val(),
|
||||
sustained: $("#cs-chat_antiflood_sustained").val()
|
||||
}
|
||||
};
|
||||
} else {
|
||||
data[key] = value;
|
||||
}
|
||||
socket.emit("setOptions", data);
|
||||
}, 1000);
|
||||
});
|
||||
|
||||
$("#chanlog_refresh").click(function () {
|
||||
socket.emit("readChanLog");
|
||||
});
|
||||
|
||||
$("#cs-chanlog input[type='checkbox']").change(function () {
|
||||
var id = $(this).attr("id");
|
||||
if (id !== "filter_all" && $(this).prop("checked")) {
|
||||
$("#filter_all").prop("checked", false);
|
||||
}
|
||||
|
||||
filterChannelLog();
|
||||
});
|
||||
|
||||
$("#cs-motdsubmit").click(function () {
|
||||
socket.emit("setMotd", {
|
||||
motd: $("#cs-motdtext").val()
|
||||
});
|
||||
});
|
||||
|
||||
$("#cs-csssubmit").click(function () {
|
||||
socket.emit("setChannelCSS", {
|
||||
css: $("#cs-csstext").val()
|
||||
});
|
||||
});
|
||||
|
||||
$("#cs-jssubmit").click(function () {
|
||||
socket.emit("setChannelJS", {
|
||||
js: $("#cs-jstext").val()
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -739,11 +739,10 @@ function handleModPermissions() {
|
|||
$("#cs-externalcss").attr("disabled", CLIENT.rank < 3);
|
||||
$("#cs-externaljs").val(CHANNEL.opts.externaljs);
|
||||
$("#cs-externaljs").attr("disabled", CLIENT.rank < 3);
|
||||
/* TODO FIX */
|
||||
$("#opt_chat_antiflood").prop("checked", CHANNEL.opts.chat_antiflood);
|
||||
$("#cs-chat_antiflood").prop("checked", CHANNEL.opts.chat_antiflood);
|
||||
if ("chat_antiflood_params" in CHANNEL.opts) {
|
||||
$("#opt_chat_antiflood_burst").val(CHANNEL.opts.chat_antiflood_params.burst);
|
||||
$("#opt_chat_antiflood_sustained").val(CHANNEL.opts.chat_antiflood_params.sustained);
|
||||
$("#cs-chat_antiflood_burst").val(CHANNEL.opts.chat_antiflood_params.burst);
|
||||
$("#cs-chat_antiflood_sustained").val(CHANNEL.opts.chat_antiflood_params.sustained);
|
||||
}
|
||||
$("#cs-show_public").prop("checked", CHANNEL.opts.show_public);
|
||||
$("#cs-show_public").attr("disabled", CLIENT.rank < 3);
|
||||
|
|
@ -1814,3 +1813,71 @@ function formatCSBanlist() {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
function formatCSChatFilterList() {
|
||||
var tbl = $("#cs-chatfilters table");
|
||||
tbl.find("tbody").remove();
|
||||
tbl.find(".ui-sortable").remove();
|
||||
var entries = tbl.data("entries") || [];
|
||||
entries.forEach(function (f) {
|
||||
var tr = $("<tr/>").appendTo(tbl);
|
||||
var control = $("<button/>").addClass("btn btn-xs btn-default")
|
||||
.attr("title", "Edit this filter")
|
||||
.appendTo($("<td/>").appendTo(tr));
|
||||
$("<span/>").addClass("glyphicon glyphicon-list").appendTo(control);
|
||||
var name = $("<code/>").text(f.name).appendTo($("<td/>").appendTo(tr));
|
||||
var activetd = $("<td/>").appendTo(tr);
|
||||
var active = $("<input/>").attr("type", "checkbox")
|
||||
.prop("checked", f.active)
|
||||
.appendTo(activetd)
|
||||
.change(function () {
|
||||
f.active = $(this).prop("checked");
|
||||
socket.emit("updateFilter", f);
|
||||
});
|
||||
|
||||
control.click(function () {
|
||||
var tr2 = $("<tr/>").insertAfter(tr);
|
||||
var wrap = $("<td/>").attr("colspan", "3").appendTo(tr2);
|
||||
var form = $("<form/>").addClass("form-inline").attr("role", "form")
|
||||
.attr("action", "javascript:void(0)")
|
||||
.appendTo(wrap);
|
||||
var addTextbox = function (placeholder) {
|
||||
var div = $("<div/>").addClass("form-group").appendTo(form)
|
||||
.css("margin-right", "10px")
|
||||
.css("max-width", "25%");
|
||||
var input = $("<input/>").addClass("form-control")
|
||||
.attr("type", "text")
|
||||
.attr("placeholder", placeholder)
|
||||
.attr("title", placeholder)
|
||||
.appendTo(div);
|
||||
return input;
|
||||
};
|
||||
|
||||
var regex = addTextbox("Filter regex").val(f.source);
|
||||
var flags = addTextbox("Regex flags").val(f.flags);
|
||||
var replace = addTextbox("Replacement text").val(f.replace);
|
||||
|
||||
var checkwrap = $("<div/>").addClass("checkbox").appendTo(form);
|
||||
var checklbl = $("<label/>").text("Filter Links").appendTo(checkwrap);
|
||||
$("<input/>").attr("type", "checkbox").prependTo(checklbl);
|
||||
|
||||
var save = $("<button/>").addClass("btn btn-xs btn-success")
|
||||
.insertAfter(control);
|
||||
$("<span/>").addClass("glyphicon glyphicon-save").appendTo(save);
|
||||
});
|
||||
});
|
||||
$(tbl.children()[1]).sortable({
|
||||
start: function(ev, ui) {
|
||||
FILTER_FROM = ui.item.prevAll().length;
|
||||
},
|
||||
update: function(ev, ui) {
|
||||
FILTER_TO = ui.item.prevAll().length;
|
||||
if(FILTER_TO != FILTER_FROM) {
|
||||
socket.emit("moveFilter", {
|
||||
from: FILTER_FROM,
|
||||
to: FILTER_TO
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue