Module:User:Kai/sandbox: Difference between revisionsGive feedback
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 20: | Line 20: | ||
local parent = frame:getParent() | local parent = frame:getParent() | ||
local args = parent and parent.args or frame.args | local args = parent and parent.args or frame.args | ||
return p._main( | return p._main(args) | ||
end | end | ||
function p._main( | function p._main(args) | ||
local feedback = args.feedback or "No feedback provided" | local feedback = args.feedback or "No feedback provided" | ||
local user = args.user or "Anonymous" | local user = args.user or "Anonymous" | ||
| Line 30: | Line 30: | ||
local currentPage = mw.title.getCurrentTitle().fullText | local currentPage = mw.title.getCurrentTitle().fullText | ||
-- Write to Bucket database | -- Write directly to the Bucket database | ||
if mw.ext and mw.ext.bucket then | |||
mw.ext.bucket('feedback').put({ | |||
page = currentPage, | |||
user = user, | |||
status = statusStr, | |||
feedback = feedback | |||
}) | |||
end | |||
-- HTML | -- Build HTML display | ||
local root = mw.html.create('div') | local root = mw.html.create('div') | ||
:addClass('feedback-box') | :addClass('feedback-box') | ||
| Line 73: | Line 73: | ||
local category = resolved and '[[Category:Resolved Feedback]]' or '[[Category:Unresolved Feedback]]' | local category = resolved and '[[Category:Resolved Feedback]]' or '[[Category:Unresolved Feedback]]' | ||
return | return tostring(root) .. category | ||
end | end | ||
return p | return p | ||
Revision as of 20:51, 27 August 2026
Documentation for this module may be created at Module:User:Kai/sandbox/doc
local p = {}
local function isTruthy(v)
if v == nil then
return false
end
v = mw.text.trim(tostring(v)):lower()
return v ~= '' and v ~= '0' and v ~= 'false' and v ~= 'no' and v ~= 'off'
end
local function formatUser(user)
user = mw.text.trim(tostring(user or ''))
if user == '' or user:lower() == 'anonymous' then
return 'Anonymous'
end
return string.format('[[User:%s|%s]]', user, user)
end
function p.main(frame)
local parent = frame:getParent()
local args = parent and parent.args or frame.args
return p._main(args)
end
function p._main(args)
local feedback = args.feedback or "No feedback provided"
local user = args.user or "Anonymous"
local resolved = isTruthy(args.resolved)
local statusStr = resolved and 'resolved' or 'unresolved'
local currentPage = mw.title.getCurrentTitle().fullText
-- Write directly to the Bucket database
if mw.ext and mw.ext.bucket then
mw.ext.bucket('feedback').put({
page = currentPage,
user = user,
status = statusStr,
feedback = feedback
})
end
-- Build HTML display
local root = mw.html.create('div')
:addClass('feedback-box')
:addClass(resolved and 'feedback-box--resolved' or 'feedback-box--unresolved')
local meta = root:tag('div')
:addClass('feedback-meta')
meta:tag('span')
:addClass('feedback-user')
:wikitext(formatUser(user))
meta:tag('span')
:addClass('feedback-separator')
:wikitext(' • ')
meta:tag('span')
:addClass('feedback-status')
:addClass(resolved and 'feedback-status--resolved' or 'feedback-status--unresolved')
:wikitext(resolved and 'Resolved' or 'Unresolved')
root:tag('div')
:addClass('feedback-body')
:wikitext(feedback)
if not resolved then
root:tag('div')
:addClass('feedback-instruction')
:wikitext('If this feedback has been resolved, edit this page and set <code>|resolved=true</code>.')
end
local category = resolved and '[[Category:Resolved Feedback]]' or '[[Category:Unresolved Feedback]]'
return tostring(root) .. category
end
return p