Home
Random
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Request redirect
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
-- This module implements [[Template:Request redirect]]. local p, templates = {}, {} -------------------------------------------------------------------------------- -- Templates -- -- These are templates used in the module's output. The templates use two -- different kinds of parameter. Parameters that look like ${parameter} will be -- replaced with the corresponding value from a data table. Parameters that -- look like ${@TEMPLATE_NAME} will be replaced recursively by other templates -- in the templates table. This helps to reduce duplication of template code -- while also avoiding tricky conditional logic inside templates. -- -- Templates can contain arbitrary wikitext; wikitext will be expanded on -- transclusion, and left as-is on substitution. -------------------------------------------------------------------------------- templates.HEADING = '== Redirect request: [[:${title}]] ==' templates.BODY = [=[ * Target of redirect: [[:${target}]] * Reason: ${reason} * Source (if applicable): ${source} ~~~~]=] templates.OPEN_REQUEST = [=[ ${@HEADING} ${@BODY}]=] templates.CLOSED_REQUEST = [=[ ${@HEADING} {{afc-c|d}} ${@BODY} ${afcredirect} <small>(Automatically declined)</small> {{afc-c|b}}]=] templates.REQUEST_WITH_ERROR = [=[ ${@HEADING} ${@BODY} {{error|Error: ${errormsg}}}<!--subst:afc redirect|${closereason}-->]=] -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- -- Substitutes parameters like ${parameter} and ${@TEMPLATE_NAME}. Templates -- are transcluded recursively. local function substituteParameters(template, data) local content = templates[template] if not content then error(string.format( "the template '%s' does not exist", tostring(template) )) end content = content:gsub('${(@?)([a-zA-Z_]+)}', function (at, param) if at == '@' then return substituteParameters(param, data) else return data[param] or '' end end) return content end -- Expand a template, substituting parameters and expanding wikitext as -- appropriate. local function expand(template, data, frame) frame = frame or mw.getCurrentFrame() local content = substituteParameters(template, data) if mw.isSubsting() then return content else return frame:preprocess(content) end end -- Finds a page's status. This can be either: -- * "noinput" - for missing user input -- * "invalid" - for invalid titles (e.g. page names containing the "|" symbol) -- * "missing" - valid titles that don't exist -- * "exists" - valid titles that exist local function getPageStatus(page) if not page then return 'noinput' end local title = mw.title.new(page) if not title then return 'invalid' elseif title.exists then return 'exists' else return 'missing' end end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- function p._main(args, frame) frame = frame or mw.getCurrentFrame() local data = {} data.title = args.title or args[1] data.target = args.target or args[2] data.reason = args.reason or args[3] data.source = args.source or args[4] -- Check parameters for errors. local titleStatus = getPageStatus(data.title) local targetStatus = getPageStatus(data.target) local closeReason if titleStatus == 'invalid' then closeReason = 'notitle' data.errormsg = string.format( '"%s" is an invalid title.', data.title ) elseif targetStatus == 'invalid' then closeReason = 'notarget' data.errormsg = string.format( '"%s" is an invalid title.', data.target ) elseif titleStatus == 'exists' then if targetStatus == 'exists' then closeReason = 'exist' data.errormsg = string.format( '[[:%s]] already exists on Wikipedia.', data.title ) elseif targetStatus == 'missing' then -- Assume the user got the pages the wrong way round. data.title, data.target = data.target, data.title else -- targetStatus == 'noinput' closeReason = 'notitle' data.errormsg = 'You have not specified the title of the redirect that you want created.' end elseif titleStatus == 'missing' then -- If targetStatus == 'exists' the submission is good and we don't need -- to do anything. if targetStatus == 'missing' then closeReason = 'notarget' data.errormsg = string.format( "Redirect target [[:%s]] doesn't exist.", data.target ) elseif targetStatus == 'noinput' then closeReason = 'notarget' data.errormsg = 'Redirect target was not specified.' end else -- titleStatus == 'noinput' if targetStatus == 'exists' then closeReason = 'notitle' data.errormsg = 'You have not specified the title of the redirect that you want created.' elseif targetStatus == 'missing' then closeReason = 'notarget' data.errormsg = string.format( "Redirect target [[:%s]] doesn't exist.", data.target ) else -- targetStatus == 'noinput' closeReason = 'blank' data.errormsg = 'We cannot accept empty submissions.' end end -- Find the template we need, and expand {{Afc redirect}} if it is needed. local template if closeReason and args.close then template = 'CLOSED_REQUEST' data.afcredirect = frame:expandTemplate{ title = 'afc redirect', args = {closeReason} } elseif closeReason then template = 'REQUEST_WITH_ERROR' else template = 'OPEN_REQUEST' end -- Return the template with parameters substituted. return expand(template, data, frame) end function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Request redirect' }) return p._main(args, frame) end return p
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Request redirect/doc
(
edit
)