Module:Copied/sandbox

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 content 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 [%s %s]",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 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 nominated for deletion",text,afd)

else

text = string.format("%s after being 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 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 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("%stalk, ", 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 nominated for deletion",text,afd)

else

text = string.format("%s after being 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("%sCategory:Wikipedia pages using merged-from template without oldid",text)

else

text = string.format("%sCategory: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 = '

\n\n
Merged pages:
%s
'

else

collapsedText = '

\n\n
Copied pages:
%s
'

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 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',

text = BannerText(args)

})

end

function p.main(frame)

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

local args = getArgs(frame)

return renderBanner(args)

end

return p