Sari la conținut

Modul:Disambiguation

require('strict')

local p = {}

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

function p._disambiguation(argsWithBlanks)
	local args = {}
	for k, v in pairs(argsWithBlanks) do
		if k == 'categories' or v ~= '' then
			args[k] = v
		end
	end
	
	local current_title = mw.title.getCurrentTitle()
	local namespace = args.namespace or current_title.nsText
	local title = args.title or current_title.text
	local shared = yesno(args.shared)
	
	args.title = nil
	args.shared = nil
	
	-- info text
	local infoword1 = 'lucrări'
	local infoword2 = 'titlu'
	
	if namespace == 'Autor' then
		infoword1 = 'autori'
		infoword2 = 'nume'
	elseif namespace == 'Portal' then
		infoword1 = 'portaluri'
		infoword2 = 'subiect'
	end
	
	local info = tostring(mw.html.create('p'):css({['font-style'] = 'italic'}):wikitext(table.concat({
		'Aceasta este o pagină de [[w:Wikipedia:Dezambiguizare|dezambiguizare]]. Mai jos puteți găsi o listă de ',
		infoword1,
		' care au același ',
		infoword2,
		'. Dacă o [[Special:Whatlinkshere/',
		current_title.fullText,
		'|legătură dintr-un articol]] v-a adus aici, vă rugăm să mergeți înapoi și să reparați legătura astfel încât să ducă direct către pagina menită.'
	})))
	if args.note then
		args.note = info .. '<p>' .. args.note .. '</p>'
	else
		args.note = info
	end
	
	-- categories
	local categories = args.category or args.category
	local cat = 'Pagini de dezambiguizare pentru spațiul ' ..namespace
	args.category = nil
	args.categories = nil
	
	-- header
	local disambig_text = ' <span style="font-weight:normal;">(disambiguation)</span>'
	
	local postheader = tostring(mw.html.create('div'):addClass('subNote'):css({['margin'] = '4px auto 4px auto'}):wikitext(
		tostring(mw.html.create('span'):attr('id', 'nofooter'):wikitext(
			args.intro
			or 'Prin „' .. tostring(mw.html.create('span'):css({['font-weight'] = 'bold', ['font-style'] = 'italic'}):wikitext(title)) .. '” se poate face referire la:'
		))
	))
	
	args.disambiguation = true
	
	local header
	if namespace == 'Autor' then
		args.firstname = title .. disambig_text
		args.use_initials = false
		args.description = args.notes
		args.nocat = true
		header = require('Module:Author')._author(args)
	elseif namespace == 'Portal' then
		args.title = title .. disambig_text
		args.class = 'none'
		args.nocat = true
		args.reviewed = 'n/a'
		header = require('Module:Portal header')._portal_header(args)
	elseif namespace == '' or namespace == 'Format' then
		args.pretitle = 'Lucrări'
		if shared then
			args.pretitle = 'Lucrări și pagini din alte spații de nume'
		end
		args.pretitle = args.pretitle .. ' care se intitulează'
		
		args.title = title
		
		if shared and not current_title.isSubpage then
			-- should be redundant as attached to header
			args.notes = args.notes .. '[[Categorie:' .. 'Pagini de dezambiguizare unite' .. ']]'
		end
		
		args.header_class = 'ws-dynlayout-disable'
		
		header = require('Modul:Header')._header(args)
		
		cat = 'Pagini de dezambiguizare'
	else
		header = require('Module:Error')['error']({'Eroare în [[Modul:Disambiguation]]: {{[[Format:Dezambiguizare|dezambiguizare]]}} poate fi folosită doar în [[Ajutor:Spații de nume|spațiile de nume]] Principal, Autor și Portal'})
		postheader = ''
		cat = 'Pagini de dezambiguizare din spații de nume nevalide'
	end
	
	return header .. mw.getCurrentFrame():preprocess('__DISAMBIG__') .. postheader .. (categories or '[[Categorie:' .. cat .. ']]')
end

function p.disambiguation(frame)
	return p._disambiguation(getArgs(frame, {removeBlanks = false}))
end

return p