„Modul:Infobox” változatai közötti eltérés

A Wikipédiából, a szabad enciklopédiából
[ellenőrzött változat][ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
wd-entity paraméter koordinátáknál is
a Visszaállítottam a lap korábbi változatát Tacsipacsi (vita) szerkesztéséről JulesWinnfield-hu szerkesztésére
Címke: Visszaállítás
1. sor: 1. sor:
require"Modul:No globals"
require"Modul:No globals"
local getArgs = require"Modul:Arguments".getArgs
local getArgs = require"Modul:Arguments".getArgs
local wd = require"Modul:Wikidata"


local p = {}
local p = {}


p.row = function (args)
p["ország"] = function (frame)
args = getArgs(args)
local args = getArgs(frame, { wrappers = "Sablon:Infobox/Ország" })
if args[1] == "-" then
local val, label, group, undertag
val = args[1]
if not val then
return nil
return nil
end
end
local function countryRow(value)
if args[3] then
return tostring(mw.html.create"tr"
label = '[[' .. args[3] .. '|' .. args[2] .. ']]'
:tag"td"
else
:css("vertical-align", "top")
label = args[2]
:wikitext"'''Ország'''"
:done()
:tag"td"
:wikitext(value)
:allDone()
)
end
end
group = args['csoportazonosító']
local country, size = args[1], args[4]
if country then
undertag = not (not args['címke alatt'])
return countryRow(frame:expandTemplate{ title = "Zászló2", args = { country, size = size } })
local row = mw.html.create('tr')
if group then
row:addClass( 'csoport-' .. tostring(group) )
end
end
local labeltag = row:tag('td')
local item = mw.wikibase.getEntity()
if not item then
labeltag:addClass(undertag and 'cimkealatt' or 'cimke')
return nil
if not undertag then
labeltag:css('font-weight', 'bolder')
end
end
local countries = {}
labeltag:wikitext(label)
for _, s in ipairs(item:getBestStatements"P17") do
labeltag:done()
table.insert(countries, frame:expandTemplate{ title = "Zászló2", args = {
local valtag = row:tag('td')
wd.formatStatement(s, { link = "nem" }), size = size } })
valtag:wikitext(val)
end
valtag:done()
if #countries == 0 then
return tostring(row)
return nil
end
return countryRow(table.concat(countries, "<br>"))
end
end


p["ország"] = function (frame)
p["kép"] = function (frame)
local args = getArgs(frame, { wrappers = "Sablon:Infobox/Ország" })
local args = getArgs(frame, {wrappers = "Sablon:Infobox/Kép"})
local cdata = require('Modul:Country data').main
if args[1] == "-" then
if args[1] == "-" then
return nil
return nil
end
end
local filename, legend = args[1], args[3]
return p.row{
if not filename then
cdata{ [1] = args[1], ['size'] = args[4] },
local item = mw.wikibase.getEntity()
'Ország'
}
end

p.image = function (filename, legend, property, entityId)
if filename == '-' then
return nil, nil
end
if (not filename) and property then
local item = mw.wikibase.getEntity(entityId)
if not item then
if not item then
return nil, nil
return nil
end
end
local image = item:getBestStatements(string.upper(property))[1]
local image = item:getBestStatements(args["wd-property"])[1]
if image and image.mainsnak.snaktype == 'value' then
if image and image.mainsnak.snaktype == "value" then
filename = image.mainsnak.datavalue.value
filename = image.mainsnak.datavalue.value
legend = nil
legend = nil
if image.qualifiers and image.qualifiers.P2096 then
if image.qualifiers and image.qualifiers.P2096 then
for _, snak in ipairs(image.qualifiers.P2096) do
for _, snak in ipairs(image.qualifiers.P2096) do
if snak.snaktype == 'value' then
if snak.snaktype == "value" then
if snak.datavalue.value.language == 'hu' then
if snak.datavalue.value.language == "hu" then
legend = snak.datavalue.value.text
legend = snak.datavalue.value.text
elseif snak.datavalue.value.language == 'en' and not legend then
elseif snak.datavalue.value.language == "en" and not legend then
legend = snak.datavalue.value.text
legend = snak.datavalue.value.text
end
end
72. sor: 67. sor:
end
end
else
else
return nil, nil
return nil
end
end
return filename, legend
end

p["kép"] = function (frame)
local args = getArgs(frame, {wrappers = "Sablon:Infobox/Kép"})
local filename, legend = p.image(args[1], args[3], args["wd-property"], args["wd-entity"])
if not filename then
return nil
end
local filesize = args[2]
if not filesize then
local title = mw.title.new('Media:' .. filename)
if (
title and title.file.width and title.file.width < 250
and title.file.mimeType ~= 'image/svg' and title.file.mimeType ~= 'image/svg+xml'
) then
filesize = title.file.width
else
filesize = 250
end
end
filesize = tostring(filesize) .. 'px'
end
end
local link = "[[Fájl:" .. filename .. "|" .. filesize
local link = "[[Fájl:" .. filename .. "|" .. (args[2] or "250px")
if legend then
if legend then
link = link .. "|" .. legend
link = link .. "|" .. legend
161. sor: 134. sor:
return nil
return nil
end
end
return mw.getCurrentFrame():expandTemplate{title = 'Koord', args = coorArgs}
return frame:expandTemplate{title = 'Koord', args = coorArgs}
end
end


196. sor: 169. sor:
end
end
else
else
local item = mw.wikibase.getEntity(args['wd-entity'])
local item = mw.wikibase.getEntity()
if item and item.claims and item.claims.P625 then
if item and item.claims and item.claims.P625 then
mapArgs.lat = item.claims.P625[1].mainsnak.datavalue.value.latitude
mapArgs.lat = item.claims.P625[1].mainsnak.datavalue.value.latitude
249. sor: 222. sor:
end
end
if not args[1] or not args[5] then
if not args[1] or not args[5] then
local item = mw.wikibase.getEntity(args['wd-entity'])
local item = mw.wikibase.getEntity()
if item and item.claims and item.claims.P625 then
if item and item.claims and item.claims.P625 then
args.lat = item.claims.P625[1].mainsnak.datavalue.value.latitude
args.lat = item.claims.P625[1].mainsnak.datavalue.value.latitude

A lap 2018. augusztus 17., 12:48-kori változata

Infobox[mi ez?] • [dokumentáció: mutat, szerkeszt] • [tesztek: létrehozás]

A megvalósított sablonok dokumentációját lásd a Sablon:Infobox lapon.

require"Modul:No globals"
local getArgs = require"Modul:Arguments".getArgs
local wd = require"Modul:Wikidata"

local p = {}

p["ország"] = function (frame)
	local args = getArgs(frame, { wrappers = "Sablon:Infobox/Ország" })
	if args[1] == "-" then
		return nil
	end
	local function countryRow(value)
		return tostring(mw.html.create"tr"
			:tag"td"
			:css("vertical-align", "top")
			:wikitext"'''Ország'''"
			:done()
			:tag"td"
			:wikitext(value)
			:allDone()
		)
	end
	local country, size = args[1], args[4]
	if country then
		return countryRow(frame:expandTemplate{ title = "Zászló2", args = { country, size = size } })
	end
	local item = mw.wikibase.getEntity()
	if not item then
		return nil
	end
	local countries = {}
	for _, s in ipairs(item:getBestStatements"P17") do
		table.insert(countries, frame:expandTemplate{ title = "Zászló2", args = { 
			wd.formatStatement(s, { link = "nem" }), size = size } })
	end
	if #countries == 0 then
		return nil
	end
	return countryRow(table.concat(countries, "<br>"))
end

p["kép"] = function (frame)
	local args = getArgs(frame, {wrappers = "Sablon:Infobox/Kép"})
	if args[1] == "-" then
		return nil
	end
	local filename, legend = args[1], args[3]
	if not filename then
		local item = mw.wikibase.getEntity()
		if not item then
			return nil
		end
		local image = item:getBestStatements(args["wd-property"])[1]
		if image and image.mainsnak.snaktype == "value" then
			filename = image.mainsnak.datavalue.value
			legend = nil
			if image.qualifiers and image.qualifiers.P2096 then
				for _, snak in ipairs(image.qualifiers.P2096) do
					if snak.snaktype == "value" then
						if snak.datavalue.value.language == "hu" then
							legend = snak.datavalue.value.text
						elseif snak.datavalue.value.language == "en" and not legend then
							legend = snak.datavalue.value.text
						end
					end
				end
			end
		else
			return nil
		end
	end
	local link = "[[Fájl:" .. filename .. "|" .. (args[2] or "250px")
	if legend then
		link = link .. "|" .. legend
	end
	link = link .. "]]"
	local result = tostring(mw.html.create"tr"
		:tag"td"
		:attr("colspan", "2")
		:css("text-align", "center")
		:wikitext(link)
		:allDone()
	)
	if legend then
		result = result .. tostring(mw.html.create"tr"
			:tag"td"
			:attr("colspan", "2")
			:css("text-align", "center")
			:css("font-size", "92%")
			:wikitext(legend)
			:allDone()
		)
	end
	return result
end

local function coordRow(coordinatesLink)
	return '<tr><td colspan="2" style="text-align:center">' .. coordinatesLink .. '</td></tr>'
end

--[[
	Helyi értékű paramétereket átalakítja szám szerinti paraméterekké.
	Modul:Pozíciós térkép-ből is.
--]]
function p.coord(frame, args)
	local coorArgs = {args[9], display = args.display, format = 'dms'}
	if args[1] and args[5] then
		local hemisphereMultipliers = {
			longitude = { W = -1, w = -1, E = 1, e = 1, NY = -1, Ny = -1, ny = -1, K = 1, k = 1 },
			latitude = { S = -1, s = -1, N = 1, n = 1, D = -1, d = -1, ['É'] = 1, ['é'] = 1 }
		}
		table.insert(coorArgs, 1, hemisphereMultipliers.latitude[args[4]] and args[4] or 'N')
		table.insert(coorArgs, 2, hemisphereMultipliers.longitude[args[8]] and args[8] or 'E')
		table.insert(coorArgs, 1, args[1])
		table.insert(coorArgs, 3, args[5])
		if args[2] and args[6] then
			table.insert(coorArgs, 2, args[2])
			table.insert(coorArgs, 5, args[6])
			if args[3] and args[7] then
				table.insert(coorArgs, 3, args[3])
				table.insert(coorArgs, 7, args[7])
			end
		else
			if not args[4] or not args[8] then
				table.remove(coorArgs, 4)
				table.remove(coorArgs, 2)
			end
		end
	elseif args.lat and args.long then
		table.insert(coorArgs, 1, args.lat)
		table.insert(coorArgs, 2, args.long)
		coorArgs.precision = 'wikidata'
	else
		return nil
	end
	return frame:expandTemplate{title = 'Koord', args = coorArgs}
end

p["pozíciós térkép"] = function (frame)
	local args = getArgs(frame, {wrappers = "Sablon:Infobox/Pozíciós térkép"})
	if args[4] == '-' or args[8] == '-' then
		return nil
	end
	local mapArgs = {
		args[1],
		['felirat'] = "'''" .. (args[2] ~= '{{{név}}}' and args[2] or require'Modul:String'.simpletitle{args = {}}) .. "'''",
		['keret'] = 'none',
		['felirat pozíciója'] = args[3],
		['jel'] = args.jel or 'Green pog.svg',
		['felirat mérete'] = '100',
		['méret'] = '248',
		['igazítás'] = 'none',
		['térképtípus'] = args['térképtípus'],
		['meta'] = args.meta,
		['jel mérete'] = args['jel mérete']
	}
	if args[4] and args[8] then
		mapArgs['szélesség'] = args[7]
		mapArgs['hosszúság'] = args[11]
		mapArgs['szélességi fok'] = args[4]
		mapArgs['hosszúsági fok'] = args[8]
		if args[5] and args[9] then
			mapArgs['szélességi ívperc'] = args[5]
			mapArgs['hosszúsági ívperc'] = args[9]
			if args[6] and args[10] then
				mapArgs['szélességi ívmásodperc'] = args[6]
				mapArgs['hosszúsági ívmásodperc'] = args[10]
			end
		end
	else
		local item = mw.wikibase.getEntity()
		if item and item.claims and item.claims.P625 then
			mapArgs.lat = item.claims.P625[1].mainsnak.datavalue.value.latitude
			mapArgs.long = item.claims.P625[1].mainsnak.datavalue.value.longitude
		else
			return nil
		end
	end
	local result = {}
	local trackWikidata = false
	if not args[1] then
		if not args['koordinátakategória nélkül'] then
			table.insert(result, '[[Kategória:Koordináták térkép nélkül]]')
		end
	elseif args[1] ~= '-' then
		local title = mw.title.new('Sablon:Pozíciós térkép ' .. args[1])
		if title and title.exists then
			local success, map = pcall(require'Modul:Pozíciós térkép'.many, frame, mapArgs)
			if not success then
				map = '<strong class="error">' .. map .. '</strong>[[Kategória:Hibásan használt pozícióstérkép-sablonok]]'
			else
				trackWikidata = true
			end
			table.insert(result, '<tr><td colspan="2" align="center">' .. map .. '</td></tr>\n')
		else
			table.insert(result, '[[Kategória:Pozíciós térképet hiányoló lapok]]')
		end
	end

	if args['koordináta a térkép alatt'] then
		table.insert(result, coordRow(p.coord(frame, {args[4], args[5], args[6], args[7], 
			args[8], args[9], args[10], args[11], args.meta, display = args['koordináta a cím alatt'] and 'inline,title', 
			lat = mapArgs.lat, long = mapArgs.long})))
		trackWikidata = true
	elseif args['koordináta a cím alatt'] then
		table.insert(result, p.coord(frame, {args[4], args[5], args[6], args[7], 
			args[8], args[9], args[10], args[11], args.meta, display = 'title', 
			lat = mapArgs.lat, long = mapArgs.long}))
		trackWikidata = true
	end
	if trackWikidata and mapArgs.lat then
		table.insert(result, '[[Kategória:Wikidata koordinátákat használó lapok]]')
	end

	return table.concat(result)
end

p["koordináta"] = function (frame)
	local args = getArgs(frame, {wrappers = "Sablon:Infobox/Koordináta"})
	if args[1] == '-' or args[5] == '-' then
		return nil
	end
	if not args[1] or not args[5] then
		local item = mw.wikibase.getEntity()
		if item and item.claims and item.claims.P625 then
			args.lat = item.claims.P625[1].mainsnak.datavalue.value.latitude
			args.long = item.claims.P625[1].mainsnak.datavalue.value.longitude
		else
			return nil
		end
	end
	return coordRow(p.coord(frame, args))
end

return p