From Wikipedia, the free encyclopedia

require('strict')



local p = {}



local getArgs = require('Module:Arguments').getArgs

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

local messageBox



local mboxText = "'''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 [[Wikipedia:Deletion policy|deletion policy]].''' <br />"

	.. " Please share your thoughts on the matter at '''[[Wikipedia:Redirects for discussion/Log/%s %s %s#%s|this redirect's entry]]''' on the [[Wikipedia:Redirects for discussion|Redirects for discussion]] page.<br />"

	.. "  '''Click on the link below''' to go to the current destination page.<br />"

	.. "<small>Please notify the good-faith creator and any main contributors of the redirect by placing <code>&#123;&#123;[[Wikipedia:Substitution|subst]]:[[Template:Rfd notice|Rfd notice]]&#124;%s&#125;&#125; &#126;&#126;&#126;&#126;</code> on their talk page.</small>"

local deleteReason = '[[Wikipedia:Redirects for discussion]] debate closed as delete'

local messageOnTransclusionsStandard = '&lsaquo;The template below is included via a redirect'

    .. ' (%s) that is under discussion. See [[Wikipedia:Redirects for discussion/Log/%s %s %s#%s|redirects for discussion]]'

    .. ' to help reach a consensus.&rsaquo;'

local messageOnTransclusionsTiny = '&lsaquo;[[Wikipedia:Redirects for discussion/Log/%s %s %s#%s|See RfD]]&rsaquo;'



local function makeTransclusionTag(args, redirect)

	local discussionPage = args1 and mw.text.trim(args1])

	if not discussionPage or discussionPage == '' then

		discussionPage = redirect

	end

	local visClasses = {

		'autoconfirmed'='autoconfirmed-show',

		'extendedconfirmed'='extendedconfirmed-show sysop-show'

	} -- More can be added if justified by situation

	local sizeAttrs = {

		'standard' = {

			'tags' = {'<div ', '</div>'},

			'style' = ' border-bottom: 1px solid #AAAAAA;',

			'message' = messageOnTransclusionsStandard:format(redirect, args.year, args.month, args.day, discussionPage)

		},

		'tiny' = {

			'tags' = {' <span ', '</span> '},

			'style' = '',

			'message' = messageOnTransclusionsTiny:format(args.year, args.month, args.day, discussionPage)

		}

	}

	local size = sizeAttrsargs.showontransclusion and args.showontransclusion or 'standard'

	local tags = sizeAttrssize]['tags'

	local visibility = visClassesargs.transclusiontagvisibility or ''

	local classes = 'class="boilerplate metadata plainlinks ' .. visibility .. '" '

	local id = 'id="rfd-t" '

	local style = 'style="background-color: transparent; padding: 0; font-size: xx-small; color: #000000;'

		.. 'text-align: left;' .. sizeAttrssize]['style' .. '" '

	return tags1 .. classes .. id .. style .. '>' .. sizeAttrssize]['message' .. tags2

end



local function makeRfdNotice(args)

	local currentTitle = mw.title.getCurrentTitle()

	if not messageBox then

		messageBox = require('Module:Message box')

	end

	local discussionPage = args1 and mw.text.trim(args1])

	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('[[Category:Redirects for discussion from %s %s|%s]][[Category:All redirects for discussion|%s]]', catMonth, catYear, currentTitle.text, currentTitle.text)

	else

		category = string.format('[[Category:Redirects for discussion|%s]][[Category:All redirects for discussion|%s]]', currentTitle.text, currentTitle.text)

	end

	if category then category = category..'[[Category:Temporary maintenance holdings]]' end

	return string.format('%s<span id="delete-reason" style="display: none;">%s</span>%s%s',

		messageBox.main('mbox', {

			type = 'delete',

			name = 'RfD',

			image = 'none',

			text = string.format(mboxText, args.year, args.month, args.day, discussionPage or currentTitle.prefixedText, mw.text.nowiki(currentTitle.prefixedText))

		}),

		mw.uri.encode(deleteReason),

		category,

		isError and '[[Category:RfD errors]]' or ''

	)

end



p'' = function(frame)

	local args = getArgs(frame)

	if not args.content or mw.text.trim(args.content) == '' then

		return '<span class="error">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.[[Category:RfD errors]]</span>'

	end

	local pframe = frame:getParent()

	if pframe:preprocess('<includeonly>1</includeonly>') == '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

				return makeTransclusionTag(args, redirect) .. parsedTarget

			else

				return parsedTarget

			end

		end

	end

	-- We're not being transcluded, or we can't figure out how to display our target.

	-- Check if we can find the target.

	local target = getTargetFromText(args.content)

	messageBox = require('Module:Message box')

	local redirbox

	if target then -- target isn't nil

		local firstChar = string.sub(target, 1, 1)

		if firstChar ~= ":" then

			target = ":" .. target

		end

		redirbox = messageBox.main('mbox', {

			type = 'notice',

			name = 'RedirectBox',

			image = '[[File:Symbol redirect blue.svg|40px]]',

			text = "'''This title is currently a redirect ''' to [[" .. target .. "]]; click there to go to the current target. The full content of this redirect page, including all [[Wikipedia:Categorizing redirects|redirect categories]], is displayed below."

		})

	mw.log(target)

	else

		redirbox = messageBox.main('mbox', {

			type = 'notice',

			name = 'RedirectBox',

			image = '[[File:Symbol redirect vote 4.svg|40px]]',

			text = "'''This redirect's target could not be determined.''' This page may be a [[Wikipedia:Soft redirect|soft redirect]], or not a redirect at all. The content of the page is displayed below."

		})

	end

	-- Display the RfD banner.

	return makeRfdNotice(frame.args) .. '\n' .. redirbox .. frame.args.content

end



local substText = "{{<includeonly>safesubst:</includeonly>#invoke:RfD||%s%s|%s%s\n"

	.. "<!-- The above content is generated by {{subst:rfd}}. -->\n<!-- End of RFD message. Don't edit anything above here. Feel free to edit below here, but do NOT change the redirect's target. -->|content=\n%s\n"

	.. "<!-- Don't add anything after this line unless you're drafting a disambiguation page or article to replace the redirect. -->\n}}"

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 pargs = getArgs(frame)

	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 pargs1 or '', pargs.showontransclusion and '|showontransclusion=1' or '', Date, frame:getParent():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
From Wikipedia, the free encyclopedia

require('strict')



local p = {}



local getArgs = require('Module:Arguments').getArgs

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

local messageBox



local mboxText = "'''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 [[Wikipedia:Deletion policy|deletion policy]].''' <br />"

	.. " Please share your thoughts on the matter at '''[[Wikipedia:Redirects for discussion/Log/%s %s %s#%s|this redirect's entry]]''' on the [[Wikipedia:Redirects for discussion|Redirects for discussion]] page.<br />"

	.. "  '''Click on the link below''' to go to the current destination page.<br />"

	.. "<small>Please notify the good-faith creator and any main contributors of the redirect by placing <code>&#123;&#123;[[Wikipedia:Substitution|subst]]:[[Template:Rfd notice|Rfd notice]]&#124;%s&#125;&#125; &#126;&#126;&#126;&#126;</code> on their talk page.</small>"

local deleteReason = '[[Wikipedia:Redirects for discussion]] debate closed as delete'

local messageOnTransclusionsStandard = '&lsaquo;The template below is included via a redirect'

    .. ' (%s) that is under discussion. See [[Wikipedia:Redirects for discussion/Log/%s %s %s#%s|redirects for discussion]]'

    .. ' to help reach a consensus.&rsaquo;'

local messageOnTransclusionsTiny = '&lsaquo;[[Wikipedia:Redirects for discussion/Log/%s %s %s#%s|See RfD]]&rsaquo;'



local function makeTransclusionTag(args, redirect)

	local discussionPage = args1 and mw.text.trim(args1])

	if not discussionPage or discussionPage == '' then

		discussionPage = redirect

	end

	local visClasses = {

		'autoconfirmed'='autoconfirmed-show',

		'extendedconfirmed'='extendedconfirmed-show sysop-show'

	} -- More can be added if justified by situation

	local sizeAttrs = {

		'standard' = {

			'tags' = {'<div ', '</div>'},

			'style' = ' border-bottom: 1px solid #AAAAAA;',

			'message' = messageOnTransclusionsStandard:format(redirect, args.year, args.month, args.day, discussionPage)

		},

		'tiny' = {

			'tags' = {' <span ', '</span> '},

			'style' = '',

			'message' = messageOnTransclusionsTiny:format(args.year, args.month, args.day, discussionPage)

		}

	}

	local size = sizeAttrsargs.showontransclusion and args.showontransclusion or 'standard'

	local tags = sizeAttrssize]['tags'

	local visibility = visClassesargs.transclusiontagvisibility or ''

	local classes = 'class="boilerplate metadata plainlinks ' .. visibility .. '" '

	local id = 'id="rfd-t" '

	local style = 'style="background-color: transparent; padding: 0; font-size: xx-small; color: #000000;'

		.. 'text-align: left;' .. sizeAttrssize]['style' .. '" '

	return tags1 .. classes .. id .. style .. '>' .. sizeAttrssize]['message' .. tags2

end



local function makeRfdNotice(args)

	local currentTitle = mw.title.getCurrentTitle()

	if not messageBox then

		messageBox = require('Module:Message box')

	end

	local discussionPage = args1 and mw.text.trim(args1])

	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('[[Category:Redirects for discussion from %s %s|%s]][[Category:All redirects for discussion|%s]]', catMonth, catYear, currentTitle.text, currentTitle.text)

	else

		category = string.format('[[Category:Redirects for discussion|%s]][[Category:All redirects for discussion|%s]]', currentTitle.text, currentTitle.text)

	end

	if category then category = category..'[[Category:Temporary maintenance holdings]]' end

	return string.format('%s<span id="delete-reason" style="display: none;">%s</span>%s%s',

		messageBox.main('mbox', {

			type = 'delete',

			name = 'RfD',

			image = 'none',

			text = string.format(mboxText, args.year, args.month, args.day, discussionPage or currentTitle.prefixedText, mw.text.nowiki(currentTitle.prefixedText))

		}),

		mw.uri.encode(deleteReason),

		category,

		isError and '[[Category:RfD errors]]' or ''

	)

end



p'' = function(frame)

	local args = getArgs(frame)

	if not args.content or mw.text.trim(args.content) == '' then

		return '<span class="error">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.[[Category:RfD errors]]</span>'

	end

	local pframe = frame:getParent()

	if pframe:preprocess('<includeonly>1</includeonly>') == '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

				return makeTransclusionTag(args, redirect) .. parsedTarget

			else

				return parsedTarget

			end

		end

	end

	-- We're not being transcluded, or we can't figure out how to display our target.

	-- Check if we can find the target.

	local target = getTargetFromText(args.content)

	messageBox = require('Module:Message box')

	local redirbox

	if target then -- target isn't nil

		local firstChar = string.sub(target, 1, 1)

		if firstChar ~= ":" then

			target = ":" .. target

		end

		redirbox = messageBox.main('mbox', {

			type = 'notice',

			name = 'RedirectBox',

			image = '[[File:Symbol redirect blue.svg|40px]]',

			text = "'''This title is currently a redirect ''' to [[" .. target .. "]]; click there to go to the current target. The full content of this redirect page, including all [[Wikipedia:Categorizing redirects|redirect categories]], is displayed below."

		})

	mw.log(target)

	else

		redirbox = messageBox.main('mbox', {

			type = 'notice',

			name = 'RedirectBox',

			image = '[[File:Symbol redirect vote 4.svg|40px]]',

			text = "'''This redirect's target could not be determined.''' This page may be a [[Wikipedia:Soft redirect|soft redirect]], or not a redirect at all. The content of the page is displayed below."

		})

	end

	-- Display the RfD banner.

	return makeRfdNotice(frame.args) .. '\n' .. redirbox .. frame.args.content

end



local substText = "{{<includeonly>safesubst:</includeonly>#invoke:RfD||%s%s|%s%s\n"

	.. "<!-- The above content is generated by {{subst:rfd}}. -->\n<!-- End of RFD message. Don't edit anything above here. Feel free to edit below here, but do NOT change the redirect's target. -->|content=\n%s\n"

	.. "<!-- Don't add anything after this line unless you're drafting a disambiguation page or article to replace the redirect. -->\n}}"

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 pargs = getArgs(frame)

	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 pargs1 or '', pargs.showontransclusion and '|showontransclusion=1' or '', Date, frame:getParent():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

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook