diff --git a/www/assets/js/util.js b/www/assets/js/util.js
index aa5e6555..e9f062cb 100644
--- a/www/assets/js/util.js
+++ b/www/assets/js/util.js
@@ -1821,10 +1821,19 @@ function formatCSChatFilterList() {
var entries = tbl.data("entries") || [];
entries.forEach(function (f) {
var tr = $("
").appendTo(tbl);
+ var controlgroup = $("").addClass("btn-group")
+ .appendTo($(" | ").appendTo(tr));
var control = $("").addClass("btn btn-xs btn-default")
.attr("title", "Edit this filter")
- .appendTo($(" | ").appendTo(tr));
+ .appendTo(controlgroup);
$("").addClass("glyphicon glyphicon-list").appendTo(control);
+ var del = $("").addClass("btn btn-xs btn-danger")
+ .appendTo(controlgroup);
+ $("").addClass("glyphicon glyphicon-trash").appendTo(del);
+ del.click(function () {
+ socket.emit("removeFilter", f);
+ socket.emit("requestChatFilters");
+ });
var name = $("").text(f.name).appendTo($(" | ").appendTo(tr));
var activetd = $(" | ").appendTo(tr);
var active = $("").attr("type", "checkbox")
@@ -1835,8 +1844,22 @@ function formatCSChatFilterList() {
socket.emit("updateFilter", f);
});
+ var reset = function () {
+ control.data("editor") && control.data("editor").remove();
+ control.data("editor", null);
+ control.parent().find(".btn-success").remove();
+ var tbody = $(tbl.children()[1]);
+ if (tbody.find(".filter-edit-row").length === 0) {
+ tbody.sortable("enable");
+ }
+ };
+
control.click(function () {
- var tr2 = $("
").insertAfter(tr);
+ if (control.data("editor")) {
+ return reset();
+ }
+ $(tbl.children()[1]).sortable("disable");
+ var tr2 = $("
").insertAfter(tr).addClass("filter-edit-row");
var wrap = $(" | ").attr("colspan", "3").appendTo(tr2);
var form = $("").addClass("form-inline").attr("role", "form")
.attr("action", "javascript:void(0)")
@@ -1859,11 +1882,31 @@ function formatCSChatFilterList() {
var checkwrap = $("").addClass("checkbox").appendTo(form);
var checklbl = $("").text("Filter Links").appendTo(checkwrap);
- $("").attr("type", "checkbox").prependTo(checklbl);
+ var filterlinks = $("").attr("type", "checkbox")
+ .prependTo(checklbl)
+ .prop("checked", f.filterlinks);
var save = $("").addClass("btn btn-xs btn-success")
+ .attr("title", "Save changes")
.insertAfter(control);
- $("").addClass("glyphicon glyphicon-save").appendTo(save);
+ $("").addClass("glyphicon glyphicon-floppy-save").appendTo(save);
+ save.click(function () {
+ f.source = regex.val();
+ f.flags = flags.val();
+ f.replace = replace.val();
+ f.filterlinks = filterlinks.prop("checked");
+ try {
+ new RegExp(f.source, f.flags);
+ } catch (e) {
+ alert("Invalid regex: " + e);
+ }
+
+ socket.emit("updateFilter", f);
+ reset();
+ socket.emit("requestChatFilters");
+ });
+
+ control.data("editor", tr2);
});
});
$(tbl.children()[1]).sortable({