Make server editor in webadmin more fancy, when JS is enabled

See #145
This commit is contained in:
Alexey Sokolov
2015-06-03 00:16:58 +01:00
parent a3ed8147d0
commit 477a9ddd5a
3 changed files with 99 additions and 11 deletions
+68 -1
View File
@@ -94,4 +94,71 @@ function make_sortable() {
for (var i = 0; i < tables.length; i++) {
make_sortable_table(tables[i]);
}
}
}
function serverlist_init($) {
function serialize() {
var text = "";
$("#servers_tbody > tr").each(function() {
var host = $(".servers_row_host", $(this)).val();
var port = $(".servers_row_port", $(this)).val();
var ssl = $(".servers_row_ssl", $(this)).is(":checked");
var pass = $(".servers_row_pass", $(this)).val();
if (host.length == 0) return;
text += host;
text += " ";
if (ssl) text += "+";
text += port;
text += " ";
text += pass;
text += "\n";
});
$("#servers_text").val(text);
}
function add_row(host, port, ssl, pass) {
var row = $("<tr/>");
function delete_row() {
row.remove();
serialize();
}
row.append(
$("<td/>").append($("<input/>").attr({"type":"text"})
.addClass("servers_row_host").val(host)),
$("<td/>").append($("<input/>").attr({"type":"number"})
.addClass("servers_row_port").val(port)),
$("<td/>").append($("<input/>").attr({"type":"checkbox"})
.addClass("servers_row_ssl").prop("checked", ssl)),
$("<td/>").append($("<input/>").attr({"type":"text"})
.addClass("servers_row_pass").val(pass)),
$("<td/>").append($("<input/>").attr({"type":"button"})
.val("X").click(delete_row))
);
$("input", row).change(serialize);
$("#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
});
$("#servers_plain").hide();
$("#servers_js").show();
}
@@ -72,13 +72,33 @@
<label for="doconnect_checkbox">Connect to IRC &amp; automatically re-connect</label></div>
</div>
<div class="subsection half">
<div class="subsection half" id="servers_plain">
<div class="inputlabel">Servers of this IRC network:</div>
<div><textarea name="servers" cols="70" rows="5"><? LOOP ServerLoop ?><? VAR Server ?>
<div><textarea name="servers" cols="70" rows="5" id="servers_text"><? LOOP ServerLoop ?><? VAR Server ?>
<? ENDLOOP ?>
</textarea></div>
<br /><span class="info">One server per line, "host [[+]port] [password]", + means SSL</span>
<br/><span class="info">One server per line, "host [[+]port] [password]", + means SSL</span>
</div>
<div class="subsection" id="servers_js" style="display:none">
<div>Servers of this IRC network:</div>
<div>
<table style="width:100%">
<thead>
<tr>
<th>Hostname</th>
<th>Port</th>
<th>SSL</th>
<th>Password</th>
<th/>
</tr>
</thead>
<tbody id="servers_tbody">
</tbody>
</table>
<input type="button" value="Add" id="servers_add"/>
</div>
</div>
<script type="text/javascript">serverlist_init(jQuery);</script>
<div class="subsection full">
<div class="inputlabel">Trusted SSL fingerprints of this IRC network:</div>