Module:RfD

require('Module:No globals')

local p = {}

local getTargetFromText = require('Module:Redirect').getTargetFromText local messageBox

local mboxText = "%s'''The purpose of this redirect is currently being discussed by the Wikipedia community." .. " The outcome of the discussion may result in a change of this page, or possibly its deletion in accordance with Wikipedia's deletion policy.''' " .. " Please share your thoughts on the matter at this redirect's entry on the Redirects for discussion page. " .. " Click on the link below to go to the current destination page. " .. " Please notify the good-faith creator and any main contributors of the redirect by placing  on their talk page. " local errorMessage = ' Error: Unable to determine the redirect\'s target. If this page is a soft redirect, then this error can be ignored. Otherwise, please make sure that the instructions for placing this tag were followed correctly, in particular that the redirect\'s old content was passed in the  parameter. ' local deleteReason = 'Redirects for discussion debate closed as delete' local messageOnTransclusions = '&lsaquo;The template' .. ' below is included via a redirect (%s) that has been nominated for discussion. '   .. 'See redirects for discussion to help reach a consensus' .. ' on what to do.&rsaquo; ' local function makeRfdNotice(args) local currentTitle = mw.title.getCurrentTitle if not messageBox then messageBox = require('Module:Message box') end local discussionPage = args[1] and mw.text.trim(args[1]) if discussionPage == '' then discussionPage = nil end local target = getTargetFromText(args.content) local isError = not target or not mw.title.new(target) local category if args.category then category = args.category elseif args.timestamp then -- Extract stable year and month from timestamp; args.month and args.year can change if the discussion is relisted (see Special:Diff/896302321) local lang = mw.language.getContentLanguage local catMonth = lang:formatDate('F', args.timestamp) local catYear = lang:formatDate('Y', args.timestamp) category = string.format('', catMonth, catYear, currentTitle.text, currentTitle.text) else category = string.format('', currentTitle.text, currentTitle.text) end if category then category = category..'' end return string.format('%s %s %s%s',		messageBox.main('mbox', { type = 'delete', name = 'RfD', image = 'none', text = string.format(mboxText, isError and errorMessage or '', args.year, args.month, args.day, discussionPage or currentTitle.prefixedText, mw.text.nowiki(currentTitle.prefixedText)) }),		mw.uri.encode(deleteReason),		category,		isError and  or 	) end

p[''] = function(frame) local args = frame.args if not args.content or mw.text.trim(args.content) == '' then return ' Error: No content was provided. The original text of the page (the #REDIRECT line and any templates) must be placed inside of the content parameter. '	end local pframe = frame:getParent if pframe:preprocess(' 1 ') == '1' then -- We're being transcluded, so display the content of our target. local target = getTargetFromText(args.content) if target then target = mw.title.new(target) end local redirect = pframe:getTitle if target and not target.isRedirect and target ~= redirect then -- We should actually be calling expandTemplate on the grandparent rather than on the parent, but we can't do that yet -- Since we don't have grandparent access, though, it means the thing we're calling doesn't either, so it doesn't really matter yet local parsedTarget = pframe:expandTemplate{title = ':' .. target.prefixedText, args = pframe.args} if frame.args.showontransclusion and not mw.isSubsting then local discussionPage = args[1] and mw.text.trim(args[1]) if not discussionPage or discussionPage == '' then discussionPage = redirect end return messageOnTransclusions:format(redirect, args.year, args.month, args.day, discussionPage) .. parsedTarget else return parsedTarget end end end -- We're not being transcluded, or we can't figure out how to display our target. -- Display the RfD banner. return makeRfdNotice(frame.args) .. '\n' .. frame.args.content end

local substText = "" local dateText = 'month = %B\n|day = %e\n|year = %Y\n|time = %R\n|timestamp = %Y%m%d%H%M%S'

-- called during subst when the template is initially placed on the page function p.main(frame) local titleText local pframe = frame:getParent local pargs = pframe.args local Date if pargs.days then Date = os.date(dateText, os.time - 86400*pargs.days) else Date = os.date(dateText) end local retval = string.format(substText, pargs.FULLPAGENAME or pargs[1] or , pargs.showontransclusion and '|showontransclusion=1' or , Date, pframe:getTitle == mw.title.getCurrentTitle.prefixedText and '|category=' or , pargs.content or ) if mw.isSubsting then return retval else return frame:expandTemplate{title = 'Template:Error:must be substituted', args = {'rfd'}} .. frame:preprocess(retval) end end

return p