Module:Copied

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 <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
		to = ":" .. mw.title.getCurrentTitle().subjectPageTitle.fullText
	end
	text = string.format("%s [[%s]]", text, to)
	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 fromPage = mw.title.new(from)
		local fromTalk = fromPage and fromPage.talkPageTitle.fullText or "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
		local fromPage = mw.title.new(from)
		local fromTalk = fromPage and fromPage.talkPageTitle.fullText or "Talk:" .. from
		text = string.format("%s[[%s|talk]], ", text, fromTalk)
	end
	
	local to = args["to".. i] or ""
	if (to == "") then -- If no target given assume current page is the target
		to = ":" .. mw.title.getCurrentTitle().subjectPageTitle.fullText
	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; color: inherit;" 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; color: inherit;" 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)
	local image
	if args.mergedFrom then
		image = '[[File:Mergefrom.svg|frameless|50px|link=|alt=]]'
	else
		image = '[[File:Splitsection.svg|frameless|50px|link=|alt=]]'
	end
	return MessageBox.main('tmbox', {
		class = "copiednotice",
		small = args["small"],
		image = image,
		text = BannerText(args)
	})
end

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

return p

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.