aboutsummaryrefslogtreecommitdiff
path: root/abrechenbarkeit.lua
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-11-09 00:35:52 +0100
committermetamuffin <metamuffin@disroot.org>2024-11-09 00:39:33 +0100
commitd04dbb8a4f28b5fbfd221d47fbdb52fc9f9b9c80 (patch)
tree5ea8adff37cb714c73879327c82af4332ca62ada /abrechenbarkeit.lua
parentf5a045dc96b3ff500047dc20d7180c1ec7cbe1da (diff)
downloadabrechenbarkeit-d04dbb8a4f28b5fbfd221d47fbdb52fc9f9b9c80.tar
abrechenbarkeit-d04dbb8a4f28b5fbfd221d47fbdb52fc9f9b9c80.tar.bz2
abrechenbarkeit-d04dbb8a4f28b5fbfd221d47fbdb52fc9f9b9c80.tar.zst
add spus view
Diffstat (limited to 'abrechenbarkeit.lua')
-rwxr-xr-xabrechenbarkeit.lua45
1 files changed, 32 insertions, 13 deletions
diff --git a/abrechenbarkeit.lua b/abrechenbarkeit.lua
index 26fcfac..fe3c781 100755
--- a/abrechenbarkeit.lua
+++ b/abrechenbarkeit.lua
@@ -200,8 +200,10 @@ local function respond(status, title, body)
</svg>
{+appname}
</a>
- <a href="/?log">{+log}</a>
+ <a href="/?users">{+users}</a>
+ <a href="/?spus">{+spus}</a>
<a href="/?products">{+products}</a>
+ <a href="/?log">{+log}</a>
<a href="/?about">{+about}</a>
</nav>
]], {
@@ -211,7 +213,13 @@ local function respond(status, title, body)
script = script,
head_extra = config.head_extra or ""
}))
+ if config.header ~= nil then
+ print(config.header)
+ end
body()
+ if config.footer ~= nil then
+ print(config.footer)
+ end
print("</body></html>")
end
@@ -344,7 +352,7 @@ local function r_transaction_post()
return error_box("unknown product")
end
end
- user_src = user_src or "@global"
+ user_src = user_src or "@Potential"
if amount == nil then
return error_box("amount invalid")
end
@@ -383,12 +391,17 @@ local function r_user(username)
notif = r_transaction_post()
end
return respond(200, string.format("Abrechenbarheit: %s", username), function()
- print(format("<h1>{username}</h1>", { username = username }))
+ local is_special = username:sub(1, 1) == "@"
+ local username_display = username:gsub("@", "")
+ print(format(is_special and "<h1><i>{!username}</i></h1>" or "<h1>{!username}</h1>", { username = username_display }))
local balance = balances()[username]
local last_txn = last_txns()[username]
local new_user = balance == nil
balance = balance or 0
if notif then print(notif) end
+ if is_special then
+ print(format([[<div class="notif"><p><i>{+user.special}</i></p></div>]]))
+ end
if new_user then
print(format([[<div class="notif"><p><i>{+user.lazy_creation}</i></p></div>]]))
else
@@ -404,7 +417,7 @@ local function r_user(username)
for _, type in ipairs({ 1, -1 }) do
for _, amount in ipairs({ 50, 100, 150, 200, 500, 1000 }) do
local a = amount * type
- print(format([[<form action="" method="POST">
+ print(format([[<form action="" method="POST" class="{disable_class}">
<input type="text" name="user_dst" value="{!username}" hidden />
<input type="number" name="amount" value="{a_raw}" hidden />
<input type="text" name="comment" value="" hidden />
@@ -413,13 +426,14 @@ local function r_user(username)
username = username,
a_raw = a,
amount = format_amount(a),
- sign = a < 0 and "neg" or "pos"
+ sign = a < 0 and "neg" or "pos",
+ disable_class = is_special and "disabled" or ""
}))
end
end
print("</div>")
print(format([[
- <form class="transaction box backgroundbox" action="" method="POST">
+ <form class="transaction box backgroundbox {disable_class}" action="" method="POST">
<h3>{+user.form.transaction}</h3>
<input type="text" name="user_dst" value="{!username}" hidden />
<label for="amount">Amount (ct): </label>
@@ -428,7 +442,7 @@ local function r_user(username)
<input type="text" name="comment" id="comment" />
<input type="submit" value="{+user.form.transaction.submit}" class="amount-ntr button" />
</form>
- <form class="transaction box backgroundbox" action="" method="POST" id="buy_product">
+ <form class="transaction box backgroundbox {disable_class}" action="" method="POST" id="buy_product">
<h3>{+user.form.buy}</h3>
<input type="text" name="user_dst" value="{!username}" hidden />
<input type="text" name="negate_pcount" value="1" hidden />
@@ -438,7 +452,7 @@ local function r_user(username)
<input type="text" name="pcode" id="pcode" />
<input class="amount-neg button" type="submit" value="{+user.form.buy.submit}" />
</form>
- <form class="transaction box backgroundbox" action="" method="POST" id="buy_product">
+ <form class="transaction box backgroundbox {disable_class}" action="" method="POST" id="buy_product">
<h3>{+user.form.restock}</h3>
<input type="text" name="user_dst" value="{!username}" hidden />
<label for="pcount">{+field.count}: </label>
@@ -449,7 +463,7 @@ local function r_user(username)
<input type="text" name="pcode" id="pcode" />
<input type="submit" value="{+user.form.restock.submit}" class="button amount-pos" />
</form>
- ]], { username = username }))
+ ]], { username = username, disable_class = is_special and "disabled" or "" }))
print("</div>")
end)
end
@@ -520,7 +534,7 @@ local function r_log(filter)
end)
end
-local function r_index()
+local function r_users(show_special)
return respond(200, "Abrechenbarkeit", function()
print(format([[
<form action="/" method="GET" id="user_creation">
@@ -533,7 +547,8 @@ local function r_index()
print([[<div class="userlist"></div>]]) -- for printing
print([[<ul class="userlist">]])
for _, user in ipairs(get_active_users()) do
- if user.name:sub(1, 1) ~= "@" then
+ local is_spu = user.name:sub(1, 1) == "@"
+ if is_spu == show_special then
print(format([[<li>
<a href="/{username_url}">
<span class="name">{!username}</span>
@@ -541,7 +556,7 @@ local function r_index()
</a>
</li>]], {
username_url = urlencode(user.name),
- username = user.name,
+ username = user.name:gsub("@", ""),
balance = format_amount(user.balance, "span")
}))
end
@@ -696,8 +711,12 @@ if path == "/" then
return r_log()
elseif query.create_user then
return r_create_user()
+ elseif query.spus then
+ return r_users(true)
+ elseif query.users then
+ return r_users(false)
else
- return r_index()
+ return r_users(false)
end
else
local username = extract_username()