diff options
Diffstat (limited to 'strichliste.lua')
-rwxr-xr-x | strichliste.lua | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/strichliste.lua b/strichliste.lua index be31ed0..004d276 100755 --- a/strichliste.lua +++ b/strichliste.lua @@ -3,10 +3,12 @@ local function escape(s) return s:gsub("<", "<"):gsub("<", "<") end + local function urldecode(s) if s == nil then return nil end return s:gsub("+", " "):gsub("%%20", " ") end + local function urlencode(s) if s == nil then return nil end return s:gsub(" ", "%%20") @@ -90,7 +92,8 @@ local function respond(status, title, body) <body> <nav> <h2><a href="/">Strichliste v2</a></h2> - <span><a href="/?log">View Log</a></span> + <span><a href="/?log">Log</a></span> + <span><a href="/?products">Products</a></span> <span><a href="https://codeberg.org/metamuffin/strichliste">Source</a></span> </nav> ]], escape(title), stylesheet, script, config.head_extra or "")) @@ -136,6 +139,7 @@ local function read_log() return tonumber(time), username, tonumber(amount), comment end end + local function read_products() local log = io.open("products", "r") if log == nil then @@ -159,6 +163,7 @@ local function balances() end return users end + local function last_txns() local users = {} for time, username, _, _ in read_log() do @@ -338,6 +343,23 @@ local function r_create_user() return redirect(string.format("/%s", urlencode(username))) end +local function r_products() + respond(200, "Product List", function() + print("<h1>Product List</h1>") + print("<table><tr><th>Name</th><th>Price</th><th>Amount</th></tr>") + for barcode, price, name in read_products() do + print(string.format([[ + <tr><td>%s</td><td class="amount-%s">%.02f€</td><td>%s</td></tr> + ]], + name, + price >= 0 and "pos" or "neg", price / 100, + barcode + )) + end + print("</table>") + end) +end + local function extract_username() if path == nil then return respond_error("no path") @@ -350,7 +372,9 @@ local function extract_username() end if path == "/" then - if query.log then + if query.products then + return r_products() + elseif query.log then return r_log() elseif query.create_user then return r_create_user() |