Make CTCP replies editor in webadmin more fancy when JS is enabled.

This commit is contained in:
Alexey Sokolov
2015-06-04 21:39:37 +01:00
parent 8552ca0ff9
commit f8f097a5db
4 changed files with 127 additions and 28 deletions
+9 -1
View File
@@ -12,4 +12,12 @@ table .sorted::after {
}
table .reverse-sorted::after {
content:" ▴";
}
}
.ctcpreplies_row_request {
width: 100px;
}
.ctcpreplies_row_response {
width: 400px;
}
+84 -23
View File
@@ -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 = $("<tr/>");
function delete_row() {
row.remove();
serialize();
}
row.append(
$("<td/>").append($("<input/>").val(request)
.addClass("ctcpreplies_row_request")
.attr({"type":"text","list":"ctcpreplies_list"})),
$("<td/>").append($("<input/>").val(response)
.addClass("ctcpreplies_row_response")
.attr({"type":"text","placeholder":"Empty value means this CTCP request will be ignored"})),
$("<td/>").append($("<input/>").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();
})();
}
@@ -92,8 +92,7 @@
<th/>
</tr>
</thead>
<tbody id="servers_tbody">
</tbody>
<tbody id="servers_tbody"/>
</table>
<input type="button" value="Add" id="servers_add"/>
</div>
+33 -2
View File
@@ -309,13 +309,44 @@
<input type="number" name="maxquerybuffers" value="<? VAR MaxQueryBuffers ?>" class="third" min="0"
title="Maximum number of query buffers. 0 is unlimited."/>
</div>
<div class="subsection half">
<div class="subsection half" id="ctcpreplies_plain">
<div class="inputlabel">CTCP Replies:</div>
<div><textarea name="ctcpreplies" cols="70" rows="3"><? LOOP CTCPLoop ?><? VAR CTCP ?>
<div><textarea name="ctcpreplies" cols="70" rows="3" id="ctcpreplies_text"><? LOOP CTCPLoop ?><? VAR CTCP ?>
<? ENDLOOP ?>
</textarea></div>
<br /><span class="info">One reply per line. Example: TIME Buy a watch!</span>
</div>
<div class="subsection" id="ctcpreplies_js" style="display:none">
<div>CTCP Replies:</div>
<div>
<table style="width:100%">
<thead>
<tr>
<th>Request</th>
<th>Response</th>
<th/>
</tr>
</thead>
<tbody id="ctcpreplies_tbody"/>
</table>
<input type="button" value="Add" id="ctcpreplies_add"/>
<datalist id="ctcpreplies_list">
<option value="PING"/>
<option value="FINGER"/>
<option value="CLIENTINFO"/>
<option value="USERINFO"/>
<option value="VERSION"/>
<option value="SOURCE"/>
<option value="TIME"/>
<option value="PAGE"/>
<option value="DCC"/>
<option value="UPTIME"/>
</datalist>
</div>
</div>
<script type="text/javascript">ctcpreplies_init(jQuery);</script>
<div class="subsection">
<div class="inputlabel">Skin:</div>