Initial commit, blog system works
This commit is contained in:
77
.lua/config.lua
Normal file
77
.lua/config.lua
Normal file
@@ -0,0 +1,77 @@
|
||||
-- config.lua — site configuration backed by the `settings` table.
|
||||
--
|
||||
-- Every value has a default here; anything set through the admin
|
||||
-- Settings page (stored in SQLite) overrides it. Reads go to the DB
|
||||
-- each time: redbean forks per request, so a module-level cache would
|
||||
-- go stale after the admin saves new settings.
|
||||
|
||||
local db = require "db"
|
||||
|
||||
local M = {}
|
||||
|
||||
M.DEFAULTS = {
|
||||
site_title = "btmx",
|
||||
site_tagline = "",
|
||||
site_author = "",
|
||||
-- Absolute URL of the deployed site, no trailing slash.
|
||||
-- Required for the Atom feed to produce valid absolute IDs/links.
|
||||
base_url = "http://localhost:8080",
|
||||
posts_per_page = "10",
|
||||
-- Feature flags ("1" = on). The wiki is parked by default:
|
||||
-- content is preserved in the DB but routes 404 and nav hides it.
|
||||
feature_wiki = "0",
|
||||
-- Markdown body of the /links page. Empty = page disabled and
|
||||
-- hidden from the nav. Edited at /edit/links.
|
||||
links_page = "",
|
||||
-- Up to four custom nav links (label + URL pairs). Empty = unused.
|
||||
nav_link1_label = "", nav_link1_url = "",
|
||||
nav_link2_label = "", nav_link2_url = "",
|
||||
nav_link3_label = "", nav_link3_url = "",
|
||||
nav_link4_label = "", nav_link4_url = "",
|
||||
-- Floating radio player (bottom-left). radio_url is an m3u playlist
|
||||
-- fetched server-side and offered as a channel list.
|
||||
radio_enabled = "0",
|
||||
radio_url = "",
|
||||
}
|
||||
|
||||
--- The custom nav links as a list of {label, url} pairs.
|
||||
function M.nav_links()
|
||||
local out = {}
|
||||
for n = 1, 4 do
|
||||
local label = M.get("nav_link" .. n .. "_label")
|
||||
local url = M.get("nav_link" .. n .. "_url")
|
||||
if label ~= "" and url ~= "" then
|
||||
out[#out + 1] = { label = label, url = url }
|
||||
end
|
||||
end
|
||||
return out
|
||||
end
|
||||
|
||||
--- Get a setting as a string, falling back to the default.
|
||||
function M.get(key)
|
||||
local v = db.get_setting(key)
|
||||
if v == nil or v == "" then return M.DEFAULTS[key] end
|
||||
return v
|
||||
end
|
||||
|
||||
--- Get a setting as a number (falls back to default, then 0).
|
||||
function M.get_number(key)
|
||||
return tonumber(M.get(key)) or tonumber(M.DEFAULTS[key]) or 0
|
||||
end
|
||||
|
||||
--- True when a feature flag is enabled.
|
||||
function M.enabled(key)
|
||||
return M.get(key) == "1"
|
||||
end
|
||||
|
||||
--- Persist a setting. Empty string clears the override (default applies).
|
||||
function M.set(key, value)
|
||||
db.set_setting(key, value or "")
|
||||
end
|
||||
|
||||
--- base_url with no trailing slash (for feed/link building).
|
||||
function M.base_url()
|
||||
return (M.get("base_url"):gsub("/+$", ""))
|
||||
end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user