Modul:Fejléc

Innen: kotta

A modult a Modul:Fejléc/doc lapon tudod dokumentálni

local p = {}
local getArgs = require( 'Modul:Arguments' ).getArgs

local function makeLink( str )
	if mw.title.new( str ) then -- valid title
		return string.format( '[[Szerző:%s|%s]]', str, str )
	else
		return str
	end
end

local function makeTable( args )
	local function getAuthors( parentNode )
		local i = ''
		if args.aut_np then
			i = args.aut_np
		elseif args.aut then
			i = string.format( 'szerző: %s', makeLink( args.aut ) )
		end
		if args.trans then
			if args.trans == '?' or mw.ustring.lower( args.trans ) == 'ismeretlen' then
				i = ( i ~= '' and i .. ', ' or '' ) .. 'ismeretlen fordító'
			--[=[ ilyen még nincs
			elseif mw.ustring.lower( args.trans ) == 'wikiforrás' then
				i = ( i ~= '' and i .. ', ' or '' ) .. 'fordította a [[Wikiforrás:Fordítások|Wikiforrás]]'
				if not mw.title.getCurrentTitle().isSubpage then
					i = i .. '[[Kategória:Wikiforrás-fordítások]]'
				end
			]=]
			else
				i = ( i ~= '' and i .. ', ' or '' ) .. string.format( 'fordító: %s', makeLink( args.trans ) )
			end
		end
		if i ~= '' then
			parentNode:tag( 'br' )
			parentNode:tag( 'i' ):wikitext( i )
		end
	end
	
	local header = mw.html.create( 'table' )
		:attr( 'id', 'fejsablon' )
		:addClass( 'fejsablon' )
		:tag( 'tr' )
	local prev = header:tag( 'td' ):addClass( 'fejsablon_elozo' )
	if args.prev then
		prev:tag( 'span' )
			:attr( 'id', 'fejsablonelozo' )
			:wikitext( '← ' .. args.prev )
	end
	local title = header:tag( 'td' ):addClass( 'fejsablon_cim' )
	title:tag( 'b' ):wikitext( args.tit or 'Címtelen' )
	getAuthors( title )
	if args.sect then
		title:tag( 'br' )
		title:wikitext( args.sect )
	end
	local next = header:tag( 'td' ):addClass( 'fejsablon_kovetkezo' )
	if args.next then
		next:tag( 'span' )
			:attr( 'id', 'fejsablonkovetkezo' )
			:wikitext( args.next .. ' →' )
	end
	return tostring( header:done() )
end

local function makeDiv( content )
	if content then
		content = mw.html.create( 'div' ):wikitext( content )
		return tostring( content:addClass( 'fejsablon_megjegyzes' ):tag( 'div' ):css( 'clear', 'both' ):allDone() )
	else
		return ''
	end
end

local function getCategories( args )
	local cats = {}
	
	local function mainCats()
		if args.nocat then
			return
		end
		local title = mw.title.getCurrentTitle()
		if title.namespace ~= 0 then
			return
		end
		if title.isSubpage then
			local root = title.rootPageTitle
			if root.exists then
				table.insert( cats, root.text )
			end
		else
			if args.aut and not args.aut_np and mw.title.new( args.aut ) then
				table.insert( cats, args.aut )
			end
			if args.trans and mw.title.new( args.trans ) then
				table.insert( cats, args.trans .. ' fordításai' )
			end
		end
	end

	local function trackingCats()
		if args.aut_np then
			table.insert( cats, 'A lapnélküli szerző paramétert használó lapok' )
		end
		if (args.aut and not mw.title.new( args.aut ) ) or (args.trans and not mw.title.new( args.trans ) ) then
			table.insert( cats, 'Linkfelismerést használó lapok' )
		end
	end
	
	if args.defsort then
		-- state stored, returns empty string; no need to add this to the table
		mw.getCurrentFrame():preprocess( string.format( '{{DEFAULTSORT:%s}}', args.defsort ) )
	end
	mainCats()
	trackingCats()
	local ret = {}
	for _, v in pairs( cats ) do
		table.insert( ret, string.format( '[[Kategória:%s]]', v ) )
	end
	ret = table.concat( ret, '\n' )
	if ret ~= '' then
		return '\n' .. ret
	else
		return ''
	end
end

function p.main( frame )
	local args = getArgs( frame )
	local args2 = {
		aut		= args[ 'szerző' ],
		aut_np	= args[ 'lapnélküli_szerző' ] or args[ 'lap nélküli szerző' ],
		trans	= args[ 'fordító' ],
		tit		= args[ 'cím' ],
		sect	= args[ 'szakasz' ],
		prev	= args[ 'előző' ],
		next	= args[ 'következő' ],
		note	= args[ 'megjegyzés' ],
		defsort	= args[ 'kulcs' ],
		nocat	= not not (args[ 'nekategorizálj' ] or args[ 'minta' ])
	}
	return makeTable( args2 ) .. makeDiv( args2.note ) .. getCategories( args2 )
end

return p