1
0
mirror of https://github.com/sys4-fr/server-nalc.git synced 2024-11-14 14:30:34 +01:00
server-nalc/mods/wiki/plugin_forum.lua
2014-12-11 18:53:00 +01:00

84 lines
1.9 KiB
Lua
Executable File

--os.mkdir(WP.."/plugins")
--os.mkdir(WP.."/plugins/ml")
local posts = { }
local player_states = { }
local BACKLOG = 5
local function get_player_state(name)
if not player_states[name] then
player_states[name] = { }
end
return player_states[name]
end
wikilib.register_plugin({
regex = "^/ml/.*",
description = "Mailing List",
load_page = function(entry, player) --> text, allow_save
local state = get_player_state(player)
local what = entry:match("^/ml/(.*)")
if not what then
what = "recent"
end
what = what:lower()
if what == "recent" then
local text = "Recent Posts:\n\n"
for i = #posts - BACKLOG, #posts do
local p = posts[i]
if p then
local nl = ((p.text:sub(-1) == "\n") and "" or "\n")
text = (text
.. "[/ml/"..i.."] "
.. p.who..":\n"
.. p.text..nl
.. "\n"
)
end
end
text = text.."\n * [/ml/Post] a new message"
text = text.."\n * Back to [Main]"
return text, false
elseif what:match("[0-9]+") then
local n = tonumber(what)
local text
if posts[n] then
local nl = ((posts[n].text:sub(-1) == "\n") and "" or "\n")
text = ("Post #"..n.." "
.. posts[n].who..": [:"..posts[n].who..":profile]\n"
.. posts[n].text..nl
.. "\n"
)
else
text = "No such post.\n\n"
end
text = text.."\n * [/ml/Post] a new message"
text = text.."\n * View [/ml/Recent] messages"
text = text.."\n * Back to [Main]"
return text, false
elseif what == "post" then
return "Subject:\n\n<Edit this message and save to post>", true
end
return "Wrong request.", false
end,
save_page = function(entry, player, text) --> bool
local state = get_player_state(player)
local what = entry:match("^/ml/(.*)")
if not what then
what = "post"
end
what = what:lower()
if what == "post" then
posts[#posts + 1] = {
who = player,
text = text,
}
return "/ml/recent"
end
return true
end,
})