comparison src/theme.js.luan @ 0:8f4df159f06b

start public repo
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 11 Jul 2025 20:57:49 -0600
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:8f4df159f06b
1 local Luan = require "luan:Luan.luan"
2 local error = Luan.error
3 local pairs = Luan.pairs or error()
4 local stringify = Luan.stringify or error()
5 local String = require "luan:String.luan"
6 local trim = String.trim or error()
7 local Table = require "luan:Table.luan"
8 local is_empty = Table.is_empty or error()
9 local Time = require "luan:Time.luan"
10 local time_now = Time.now or error()
11 local Io = require "luan:Io.luan"
12 local Http = require "luan:http/Http.luan"
13 local User = require "site:/lib/User.luan"
14 local Shared = require "site:/lib/Shared.luan"
15 local fields = Shared.theme_fields or error()
16 local compressed = Shared.compressed or error()
17 local Db = require "site:/lib/Db.luan"
18 local run_in_transaction = Db.run_in_transaction or error()
19 local Logging = require "luan:logging/Logging.luan"
20 local logger = Logging.logger "theme.js"
21
22
23 return function()
24 local user = User.current() or error()
25 local data = {}
26 for f in pairs(fields) do
27 local v = Http.request.parameters[f] or error()
28 v = trim(v)
29 if v ~= "" then
30 data[f] = v
31 end
32 end
33 run_in_transaction( function()
34 user = user.reload()
35 if is_empty(data) then
36 user.theme_data = nil
37 user.theme_date = nil
38 else
39 user.theme_data = stringify(data,compressed)
40 user.theme_date = time_now()
41 end
42 user.save()
43 end )
44 Io.stdout = Http.response.text_writer()
45 %>
46 location = '/<%=user.name%>?saved';
47 <%
48 end