diff --git a/modules/data/webadmin/files/webadmin.css b/modules/data/webadmin/files/webadmin.css index 772f01cc..3fa3fa84 100644 --- a/modules/data/webadmin/files/webadmin.css +++ b/modules/data/webadmin/files/webadmin.css @@ -12,4 +12,12 @@ table .sorted::after { } table .reverse-sorted::after { content:" ▴"; -} \ No newline at end of file +} + +.ctcpreplies_row_request { + width: 100px; +} +.ctcpreplies_row_response { + width: 400px; +} + diff --git a/modules/data/webadmin/files/webadmin.js b/modules/data/webadmin/files/webadmin.js index 59f2f4bb..74b2c6db 100644 --- a/modules/data/webadmin/files/webadmin.js +++ b/modules/data/webadmin/files/webadmin.js @@ -137,28 +137,89 @@ function serverlist_init($) { $("#servers_tbody").append(row); } - var servers_text = $("#servers_text").val(); - // Parse it - $.each(servers_text.split("\n"), function(i, line) { - if (line.length == 0) return; - line = line.split(" "); - var host = line[0]; - var port = line[1] || "6667"; - var pass = line[2] || ""; - var ssl; - if (port.match(/^\+/)) { - ssl = true; - port = port.substr(1); - } else { - ssl = false; - } - add_row(host, port, ssl, pass); - }); - $("#servers_add").click(function() { - add_row("", 6697, true, ""); - // Not serializing, because empty host doesn't emit anything anyway - }); + (function() { + var servers_text = $("#servers_text").val(); + // Parse it + $.each(servers_text.split("\n"), function(i, line) { + if (line.length == 0) return; + line = line.split(" "); + var host = line[0]; + var port = line[1] || "6667"; + var pass = line[2] || ""; + var ssl; + if (port.match(/^\+/)) { + ssl = true; + port = port.substr(1); + } else { + ssl = false; + } + add_row(host, port, ssl, pass); + }); + $("#servers_add").click(function() { + add_row("", 6697, true, ""); + // Not serializing, because empty host doesn't emit anything anyway + }); - $("#servers_plain").hide(); - $("#servers_js").show(); + $("#servers_plain").hide(); + $("#servers_js").show(); + })(); +} + +function ctcpreplies_init($) { + function serialize() { + var text = ""; + $("#ctcpreplies_tbody > tr").each(function() { + var request = $(".ctcpreplies_row_request", $(this)).val(); + var response = $(".ctcpreplies_row_response", $(this)).val(); + if (request.length == 0) return; + text += request; + text += " "; + text += response; + text += "\n"; + }); + $("#ctcpreplies_text").val(text); + } + function add_row(request, response) { + var row = $(""); + function delete_row() { + row.remove(); + serialize(); + } + row.append( + $("").append($("").val(request) + .addClass("ctcpreplies_row_request") + .attr({"type":"text","list":"ctcpreplies_list"})), + $("").append($("").val(response) + .addClass("ctcpreplies_row_response") + .attr({"type":"text","placeholder":"Empty value means this CTCP request will be ignored"})), + $("").append($("").val("X") + .attr({"type":"button"}).click(delete_row)) + ); + $("input", row).change(serialize); + $("#ctcpreplies_tbody").append(row); + } + + (function() { + var replies_text = $("#ctcpreplies_text").val(); + $.each(replies_text.split("\n"), function(i, line) { + if (line.length == 0) return; + var space = line.indexOf(" "); + var request; + var response; + if (space == -1) { + request = line; + response = ""; + } else { + request = line.substr(0, space); + response = line.substr(space + 1); + } + add_row(request, response); + }); + $("#ctcpreplies_add").click(function() { + add_row("", ""); + }); + + $("#ctcpreplies_plain").hide(); + $("#ctcpreplies_js").show(); + })(); } diff --git a/modules/data/webadmin/tmpl/add_edit_network.tmpl b/modules/data/webadmin/tmpl/add_edit_network.tmpl index 26382f2a..7eeb504d 100644 --- a/modules/data/webadmin/tmpl/add_edit_network.tmpl +++ b/modules/data/webadmin/tmpl/add_edit_network.tmpl @@ -92,8 +92,7 @@ - - + diff --git a/modules/data/webadmin/tmpl/add_edit_user.tmpl b/modules/data/webadmin/tmpl/add_edit_user.tmpl index a1c6b871..8ef07756 100644 --- a/modules/data/webadmin/tmpl/add_edit_user.tmpl +++ b/modules/data/webadmin/tmpl/add_edit_user.tmpl @@ -309,13 +309,44 @@ -
+ +
CTCP Replies:
-

One reply per line. Example: TIME Buy a watch!
+ + +
Skin: