diff options
Diffstat (limited to 'abrechenbarkeit.lua')
-rwxr-xr-x | abrechenbarkeit.lua | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/abrechenbarkeit.lua b/abrechenbarkeit.lua index f02e888..12514d2 100755 --- a/abrechenbarkeit.lua +++ b/abrechenbarkeit.lua @@ -532,6 +532,8 @@ end local function r_users(show_special) return respond(200, "Abrechenbarkeit", function() + local users = get_active_users() + if not show_special then print(format([[ <form action="/" method="GET" id="user_creation"> @@ -541,9 +543,39 @@ local function r_users(show_special) <input type="submit" value="{+index.form.create_user.submit}" class="button amount-ntr" /> </form> ]])) + + -- get first letters + local firstletters = {} + local function contains(char) + for _, firstchar in ipairs(firstletters) do + if firstchar == char then + return true + end + end + + return false + end + + for _, user in ipairs(users) do + user.firstchar = user.name:sub(1,1):lower() + if user.firstchar ~= "@" and not contains(user.firstchar) then + table.insert(firstletters, user.firstchar) + end + end + + table.sort(firstletters) + + print(format([[<section class="firstletterlist"><h3>{+users.filter}</h3><ul>]])) + for k, letter in ipairs(firstletters) do + print(format([[<li><a href="?users&prefix={letter}">{letter}</a></li>]], { + letter = letter, + })) + end + print([[</ul></section>]]) end print([[<div class="userlist"></div>]]) -- for printing print([[<ul class="userlist">]]) + local show_user = function(user) local is_spu = user.name:sub(1, 1) == "@" local filter_out = query.prefix ~= nil and user.name:sub(1,1):lower() ~= query.prefix @@ -566,7 +598,7 @@ local function r_users(show_special) end print("</ul>") print(format([[<details><summary>{+users.inactive_list}</summary><ul class="userlist">]])) - for _, user in ipairs(get_active_users()) do + for _, user in ipairs(users) do if user.time <= inactive_cutoff then show_user(user) end end print([[</ul></details>]]) |