in server/site/js/blocky.js [1939:1987]
function list_rules(state, json) {
let obj = document.getElementById('rules');
obj.innerHTML = ''; // clear object
if (json.rules && json.rules.length > 0) {
let div = _div();
div.inject(_hr());
let wheader = _h3({class:'subtitle'},"Current ban rules (%u):".format(json.rules.length));
div.inject(wheader);
let tbl = new HTML('table', { style: {fontSize: '0.8rem'}});
let tbh = new HTML('thead');
let tbody = new HTML('tbody');
tbh.inject(new HTML('tr', {}, [
new HTML('th', 'Ruleset'),
]));
tbl.inject(tbh);
div.inject(tbl);
for (var i = 0; i < json.rules.length; i++) {
let res = json.rules[i];
rule_json[res.rid] = res;
let innards = _div();
let form = _form({onsubmit: "add_rule('%s'); return false;".format(res.rid)});
create_rule_form(form, res.rid);
innards.inject(form);
let tr = new HTML('tr', {}, [
new HTML('td', {style: {padding: '5px'}}, [
_a({href: 'javascript:void();', onclick:"showrule('%s');".format(res.rid)}, _kbd(res.name)),
" ",
_a({style: {color: '#930', float: 'right'}, href: 'javascript:void();', onclick:"remove_rule('%s');".format(res.rid)}, "Remove ruleset"),
_div({id: res.rid, style: {margin: '6px', background: '#3692', border: '1.5px solid #3339', padding: '3px', display: 'none'}}, innards)
])
]);
tbody.inject(tr);
}
tbl.inject(tbody);
obj.inject(div);
obj.inject(_hr());
obj.inject(_h3("Create a new rule:"));
let form = _form({onsubmit: "add_rule('new'); return false;"});
create_rule_form(form, '');
obj.inject(form);
}
}