Jump to content
Wikipedia The Free Encyclopedia

Module:Copied/sandbox

From Wikipedia, the free encyclopedia
This is the module sandbox page for Module:Copied (diff).
Module documentation[view] [edit] [history] [purge]
Warning This Lua module is used on approximately 20,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them.
This module depends on the following other modules:

This module implements {{Copied }}. Please see the template page for documentation.

The above documentation is transcluded from Module:Copied/doc. (edit | history)
Editors can experiment in this module's sandbox (edit | diff) and testcases (create) pages.
Add categories to the /doc subpage. Subpages of this module.
 local MessageBox = require('Module:Message box')


 local p = {}

 local function singleText(args)
	local from_oldid = args["from_oldid"] or args["from_oldid1"] or ""
	local from = args["from"] or args["from1"] or ""
	local to = args["to"] or args["to1"] or ""
	local date = args["date"] or args["date1"] or ""
	local afd = args["afd"] or args["afd1"] or ""
	local merge = args["merge"] or args["merge1"] or ""
	local mergedFrom = args["mergedFrom"] or ""
	local text
	if (mergedFrom == 'yes') then
		text = "The contents of"
	else
		text = "Text and/or other creative content from" 
	end
	if not (from_oldid == "") then
		text = string.format("%s [%s this version] of", text, tostring(mw.uri.fullUrl(from, {oldid=from_oldid} )))
	end
	if from then
		text = string.format("%s <span class='plainlinks'>[%s %s]</span>",text, tostring(mw.uri.fullUrl(from, {redirect="no"} )), from)
	else
		text = text .. '[[]]'
	end
	if (merge == "yes") or (mergedFrom == "yes") or not (afd == "") then
		text = text .. " was [[Wikipedia:Merging|merged]] into"
	else 
		text = text .. " was copied or moved into"
	end 
	if (to == "") then --If no target given assume current page is the target
		if (mw.title.getCurrentTitle().nsText == "Talk") then
			text = string.format("%s [[%s]]",text,mw.title.getCurrentTitle().text) 
		else
			text = string.format("%s [[%s:%s]]",text,mw.title.getCurrentTitle().nsText,mw.title.getCurrentTitle().text)
		end
	else 
		text = string.format("%s [[%s]]",text,to)
	end 
	local diff = args["diff"] or args["diff1"]
	local to_diff = args["to_diff"] or args["to_diff1"]
	local to_oldid = args["to_oldid"] or args["to_oldid1"] 
	if (diff) then
		text = string.format("%s with [%s this edit]",text,diff)
	elseif (to_oldid or to_diff) then
		text = string.format("%s with [%s this edit]",text,tostring(mw.uri.fullUrl(to, {diff=to_diff or "next", oldid = to_oldid or "prev"} )))
	end
	if not (date == "") then
		text = string.format("%s on %s",text,date)
	end
	if not (afd == "") then
		if (mw.ustring.match(afd, "Wikipedia:", 1 )) then --If no venue is given add AfD prefix
			text = string.format("%s after being [[%s|nominated for deletion]]",text,afd)
		else
			text = string.format("%s after being [[Wikipedia:Articles for deletion/%s|nominated for deletion]]",text,afd)
		end
	end
	text = text .. "." -- Finish first sentence 
	text = string.format("%s The former page's [%s history] now serves to [[WP:Copying within Wikipedia|provide attribution]] for that content in the latter page, and it must not be deleted as long as the latter page exists.",text,tostring(mw.uri.fullUrl(from,{action="history"}) or ""))
	if (args["talk"] == 'yes' or (mergedFrom == 'yes' and args["talk"] ~= 'no')) then
		local fromTalk = string.format("%s:%s", "Talk", from)
		text = string.format("%s For the discussion at that location, see its [[%s|talk page]].", text, fromTalk)
	end
	return text
 end

 local function row(args, i)
	local text = ""
	local afd = args["afd" .. i]
	if (afd or args["merge" .. i] or args["mergedFrom"]) then
		text = string.format("%s\n*Merged",text)
	else 
		text = string.format("%s\n*Copied",text)
	end

	local from = args["from" .. i] or ""
	text = string.format("%s [%s %s] (",text,tostring(mw.uri.fullUrl(from, {redirect = "no"} )),from)

	local from_oldid = args["from_oldid" .. i]
	if (from_oldid) then
		text = string.format("%s[%s oldid], ",text,tostring(mw.uri.fullUrl(from, {oldid = from_oldid} )))
	end
	
	local talk = args["talk".. i] or ""
	if (talk == "yes" or (args["mergedFrom"] == 'yes' and talk ~= "no")) then
		text= string.format("%s[[%s:%s|talk]], ", text, "Talk", from)	
	end
	
	local to = args["to".. i] or ""
	if (to == "") then -- If no target given assume current page is the target
		if (mw.title.getCurrentTitle().nsText == "Talk") then
			to = string.format("%s",mw.title.getCurrentTitle().text)
		else
			to = string.format("%s:%s",mw.title.getCurrentTitle().nsText,mw.title.getCurrentTitle().text)
		end
	end 
	text = string.format("%s[%s history]) → [[%s]]",text,tostring(mw.uri.fullUrl(from, {action = "history"} )), to)
	
	local diff = args["diff" .. i]
	if (diff) then
		text = string.format("%s ([%s diff])",text,diff)
	elseif (args["to_oldid" .. i] or args["to_diff".. i]) then
		local to_diff = args["to_diff".. i] or "next"
		local to_oldid = args["to_oldid" .. i] or "prev"
		text = string.format("%s ([%s diff])",text,tostring(mw.uri.fullUrl(to, {diff=to_diff, oldid = to_oldid} )))
	end
	local date = args["date" .. i]
	if (date) then
		text = string.format("%s on %s",text,date)
	end

	if (afd) then
		if (mw.ustring.match(afd, "Wikipedia:", 1 )) then --If no venue is given add AfD prefix
			text = string.format("%s after being [[%s|nominated for deletion]]",text,afd)
		else
			text = string.format("%s after being [[Wikipedia:Articles for deletion/%s|nominated for deletion]]",text,afd)
		end
	end
	if (not (args["to_oldid" .. i] or args["to_diff".. i])) then
		if (args["mergedFrom"] == 'yes') then
			text = string.format("%s[[Category:Wikipedia pages using merged-from template without oldid]]",text)
		else
			text = string.format("%s[[Category:Wikipedia pages using copied template without oldid]]",text)
		end
	end
	
	return text
 end

 local function list(args)
	local text = ""
	local from1 = args["from1"]
	if (from1) then --Support from1 and from in case of multiple rows
		text = string.format("%s%s",text,row(args, 1))
	else
		text = string.format("%s%s",text,row(args, ""))
	end
	local i = 2
	while (args["from" .. i]) do
		text = string.format("%s%s",text,row(args, i))
		i = i + 1 --Check if from(i+1) exists
	end
	return text
 end
	
 local function multiText(args)
	local pageType
	if (mw.title.getCurrentTitle():inNamespace(1)) then
		pageType = "article"
	else
		pageType = "page"
	end
	
	local historyList = list(args)
	if (args["collapse"] == 'yes') then
		local collapsedText
		if (args["mergedFrom"] == 'yes') then
			collapsedText = '<table style="width:100%%; background: transparent;" class="mw-collapsible mw-collapsed">\n<tr><th>Merged pages:</th></tr>\n<tr><td> %s </td></tr></table>'
		else
			collapsedText = '<table style="width:100%%; background: transparent;" class="mw-collapsible mw-collapsed">\n<tr><th>Copied pages:</th></tr>\n<tr><td> %s </td></tr></table>'
		end
		historyList = string.format(collapsedText, historyList)
	end
 
 local mergedFrom
 local copies
 if (args["mergedFrom"]) then
 	mergedFrom = "merged into"
 	copies = "this page"
	else
		mergedFrom = "copied to or from"
		copies = "the copies"
	end
	local text = "Text has been %s this %s; see the list below. The source pages now serve to [[WP:Copying within Wikipedia|provide attribution]] for the content in the destination pages and must not be deleted as long as %s exist. For attribution and to access older versions of the copied text, please see the history links below. %s"
	text = string.format(text, mergedFrom, pageType, copies, historyList)
	return text
 end

 local function categories(args,multiUsed)
	local to_oldid = args["to_oldid"] or args["to_diff"] or args["diff"] or args["to_oldid1"] or args["to_diff1"] or args["diff1"]
	local from_oldid = args["from_oldid"] or args["from_oldid1"]
	local text = "[[Category:Wikipedia pages using copied template]]" 
	if ((not from_oldid) or (not to_oldid)) and not multiUsed then
		if (args["mergedFrom"] == 'yes') then
			text = text .. "[[Category:Wikipedia pages using merged-from template without oldid]]"
		else
			text = text .. "[[Category:Wikipedia pages using copied template without oldid]]"
		end
	end
	return text
 end

 local function BannerText(args)
	--Checks if there are multiple rows
	local text
	local from2 = args["from2"]
	if (from2) then
		text = multiText(args) .. categories(args,true)
	else
		text = singleText(args) .. categories(args,false)
	end
	return text
 end

 local function renderBanner(args)
	return MessageBox.main('tmbox', {
		class = "copiednotice",
		small = args["small"],
		image = '[[File:Splitsection.svg|frameless|upright=0.23|link=|alt=]]',
		text = BannerText(args)
	})
 end

 function p.main(frame)
	local getArgs = require('Module:Arguments').getArgs
	local args = getArgs(frame)
	return renderBanner(args)
 end

 return p

AltStyle によって変換されたページ (->オリジナル) /