Mô đun: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 text = "Văn bản và/hoặc các sáng tạo nội dung từ" 
	if not (from_oldid == "") then
		text = string.format("%s %s phiên bản này của", text, tostring(mw.uri.fullUrl(from, {oldid=from_oldid} )))
	end
	text = string.format("%s %s",text,from)
	if (merge == "yes") or not (afd == "") then
		text = string.format("%s đã được hợp thành",text)
	else 
		text = string.format("%s đã được sao chép hoặc di chuyển sang",text) 
	end 
	if (merge == "yes") and (to == "") then
		text = string.format("%s %s:%s",text,mw.title.getCurrentTitle().nsText,mw.title.getCurrentTitle().text) --If no merge target given assume current page is the target
	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 với %s thay đổi này",text,diff)
	elseif (to_oldid or to_diff) then
	local to_diff2 = args"to_diff" or args"to_diff1" or "prev"
	local to_oldid2 = args"to_oldid" or args"to_oldid1" or ""
		text = string.format("%s với %s thay đổi này",text,tostring(mw.uri.fullUrl(to, {diff=to_diff or "prev", oldid = to_oldid or ""} )))
	end
	if not (date == "") then
		text = string.format("%s vào hồi %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 sau khi bị biểu quyết xóa",text,afd)
		else
			text = string.format("%s sau khi bị biểu quyết xóa",text,afd)
		end
	end
	text = string.format("%s.",text) -- Finish first sentance 
	text = string.format("%s %s Lịch sử trang cũ giờ đây phục vụ mục đích ghi công đóng góp tại trang sau, và không thể được xóa chừng nào trang sau còn tồn tại.",text,tostring(mw.uri.fullUrl(from,{action="history"}) or ""))
	return text
end
local function row(args, i)
	local text = ""
	local afd = args"afd" .. i
	if (afd or args"merge" .. i) 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 to = args"to".. i or ""
	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 "prev"
		local to_oldid = args"to_oldid" .. i or ""
		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
		text = string.format("%s",text)
	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 i > 0 do
		if (args"from" .. i) then 
			text = string.format("%s%s",text,row(args, i))
			i = i + 1 --Check if from(i+1) exist
		else
			i = - 1 --Break if fromi doesn't exist
		end
	end
	return text
end
	
local function multiText(args)
	local pageType
	if (mw.title.getCurrentTitle():inNamespace(0)) then
		pageType = "article"
	else
		pageType = "page"
	end
	
	local historyList = list(args)
	if (args"collapse" == 'yes') then
		local collapsedText = '\nCopied pages:\n %s '
		historyList = string.format(collapsedText, historyList)
	end
	local text = "Text has been copied to or from 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 so long as the copies exist. For attribution and to access older versions of the copied text, please see the history links below. %s"
	text = string.format(text, pageType, historyList)
	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)
	elseif (not from2) then
		text = singleText(args)
	end
	return text
end
local function renderBanner(args)
	return MessageBox.main('tmbox', {
		small = args"small",
		image = '50px',
		text = BannerText(args)
	})
end
local function categories(args)
	local to_oldid = args"to_oldid" or args"to_diff" or args"diff"
	local from_oldid = args"from_oldid"
	local text = "" 
	if ((not from_oldid) or (not to_oldid)) then
		text = string.format("%s",text)
	end
	return text
end
function p.main(frame)
	local getArgs = require('Module:Arguments').getArgs
	local args = getArgs(frame)
	return renderBanner(args) .. categories(args)
end
return p