Sari la conținut

Modul:Translation license

--[=[
Implementează [[Format:Licență traducere]]
]=]

local p = {} --p stands for package

local getArgs = require('Modul:Arguments').getArgs
local yesno = require('Modul:Yesno')

local license_scope = require('Modul:License_scope')._license_scope
local categoryHandler = require('Modul:Category handler').main

local namespace = mw.title.getCurrentTitle().nsText

function p._license_collapsible_container(args)
	-- license table
	local tag_table = mw.html.create('table'):addClass('mw-collapsible-content wst-license-tags')
	for k = 1, #args, 2 do
		tag_table:tag('tr')
			:tag('th'):attr('scope', 'row'):wikitext(args[k])
			:tag('td'):wikitext(args[k + 1])
	end
	
	-- license container
	local frame = mw.getCurrentFrame()
	local container_begin = frame:expandTemplate {
		['title'] = 'Început casetă licență',
		['args'] = {
			['imagini'] = args.imagini or args.images,
			['mesaj'] = args.mesaj or args.message
		}
	}
	local container_end = frame:expandTemplate {
		['title'] = 'Sfârșit casetă licență'
	}
	
	return container_begin .. tostring(tag_table) .. container_end
end

function p.license_collapsible_container(frame)
	return p._license_collapsible_container(getArgs(frame))
end

function p._no_license(args)
	local scope = args.scope or 'content'
	
	local p1 = mw.html.create('p'):tag('b'):wikitext('Această pagină nu oferă informații despre licență pentru ' .. scope .. '.')
	local p2 = mw.html.create('p'):css({['font-size'] = '83%'}):wikitext('Paginile fără informații despre licență pot fi nominalizate pentru ștergere. Dacă doriți să ajutați, consultați [[Wikisource:Drepturi de autor]] sau [[' .. tostring(mw.title.getCurrentTitle().talkPageTitle) .. '|lăsați un comentariu]].')
	
	local frame = mw.getCurrentFrame()
	return frame:expandTemplate {
		['title'] = 'licență',
		['args'] = {
			['imagine'] = 'Ambox_warning_pn.svg',
			['clasă'] = 'warningLicenseContainer',
			['text'] = tostring(p1) .. tostring(p2) .. (args.category or args.categorie or '')
		}
	}
end

function p.no_license(frame)
	return p._no_license(getArgs(frame))
end

function p._translation_license(args)
	local frame = mw.getCurrentFrame()
	
	local original = args.original
	local translation = args.translation or args.traducere
	
	local trans_ns = namespace == "Traducere" or namespace == "Discuție Traducere"
	if not translation and trans_ns then
		translation = frame:expandTemplate {
			['titlu'] = 'GFDL/CC-BY-SA-4.0'
		}
	end
	
	-- images in title
	local images
	if not (original and translation) then
		images = '[[File:Copyright.svg|20px|link=]][[File:Achtung.svg|20px|link=]]'
	end
	
	-- text in title
	local message = args.message or args.mesaj
	if not message then
		message = license_scope() .. " o traducere și i se aplică drepturi de autor în mod separat "
		if namespace == "Autor" or namespace == "Discuție Autor" then
			message = message .. "de restul conținutului original atribuit acestui autor."
		elseif namespace == "Fișier" or namespace == "Discuție Fișier" then
			message = message .. "de protecțiile aplicabile sursei originale."
		else
			message = message .. "de protecțiile aplicabile conținutului original."
		end
	end
	
	-- license tags
	if not original then
		original = p._no_license({
			['scope'] = 'original content',
			['cateogry'] = categoryHandler{
				['main'] = '[[Categorie:Lucrări fără format de licență]]',
				['author'] = '[[Categorie:Pagini de autor fără format de licență]]',
				['file'] = '[[Categorie:Fișiere fără format de licență]]',
    		}
		})
	end
	
	if not translation then
		local category
		local noCatNamespaces = {
			['Ajutor'] = true,
			['Discuție Ajutor'] = true,
			['Format'] = true,
			['Discuție Format'] = true,
			['Wikisource'] = true,
			['Discuție Wikisource'] = true,
			['Categorie'] = true,
			['Discuție Categorie'] = true,
			['Modul'] = true,
			['Discuție Modul'] = true
		}
		if not noCatNamespaces[namespace] then
			category = '[[Categorie:Traduceri fără format de licență]]'
		end
		translation = p._no_license({
			['scope'] = 'translation',
			['category'] = category
		})
	end
	
	return p._license_collapsible_container({
		['images'] = images,
		['message'] = message,
		[1] = 'Original:',
		[2] = original,
		[3] = 'Traducere:',
		[4] = translation
	})
end

function p.translation_license(frame)
	return p._translation_license(getArgs(frame))
end

return p