Modul:Unesco

Aus Wikivoyage
Template-info.png Dokumentation für das Modul Unesco[Ansicht] [Bearbeiten] [Versionsgeschichte] [Aktualisieren]

Verwendung

Dieses Modul dient dazu, auf Wikidata Länder- und Kontinent-Informationen von Artikeln auf Wikidata einzusammeln und Links und Kategorien für UNESCO-Vorlagen zu erstellen.

Versionsbezeichnung auf Wikidata: 2021-04-08 Ok!

Funktionen

function unesco.getImage( file, size, text, country, continent )

Die Funktion liefert die Wikisyntax eines beschrifteten und verlinkten Unesco-Bilds. Sie wird üblicherweise in Lua-Modulen aufgerufen.

  • file: Dateiname ohne Namensraum.
  • size: Bildbreite in Pixeln, ohne „px“.
  • text: Alternativer Tooltip-Text. nil bedeutet kein Text.
  • country: Ländername in der Wiki-Sprache.
  • continent: Kontinentname in der Wiki-Sprache.
function unesco.unesco( frame )

Diese Funktion liefert ein Indikator-Bild mit einen Link auf den passenden Wikivoyage-Welterbe-Artikel und eine passende Kategorie für den Artikel, in welchem das Modul aufgerufen wird. Die Funktion wird von der Vorlage {{Unesco}} aufgerufen. Die möglichen Parameter sind in der genannten Vorlage beschrieben.

function unesco.getArticleFromWD( frame, catArray )

Diese Funktion liefert den passenden Wikivoyage-Welterbe-Artikel zum Objekt, in dem es aufgerufen wird. Da Wikidata im Regelfall bei Orten Land und Kontinent gepflegt hat, wurde auf eine optionale Parameterübergabe verzichtet. Werden keine Daten gefunden, wird einfach der Welterebe-Hauptartikel ausgegeben. Da das Ergebnis auch in Bildern eingebunden werden kann, wird das Ergebnis ohne Wikisyntax (eckige Klammern) geliefert.

Der erste Parameter ist ein frame-Objekt oder nil. Die Funktion kann somit sowohl in Vorlageaufrufen oder in Lua-Modulen benutzt werden. Das frame-Objekt selbst wird nicht genutzt. Der zweite Parameter ist eine Tabelle zur Aufnahme verwendeter Wikidata-Properties und wird nur in Lua-Modulen verwendet.

Einbindung in anderen Modulen

Dieses Modul wird nicht in anderen Modulen verwendet.

Verwendung in anderen Vorlagen

  • {{Unesco}} – Diese Vorlage dient dazu, eine Ortschaft als Unesco-Welterbe auszuweisen. Es liefert ein Indicator-Bild und eine Kategorie.
  • {{Symbol Unesco}} – gibt ein UNESCO-Symbol aus. Das Symbol verlinkt zusätzlich auf einen passenden Welterbe-Artikel auf Wikivoyage.

Benötigte weitere Module

Dieses Modul benötigt folgende weitere Module: Unesco/i18n • Wikidata utilities • Yesno
Hinweise
-- documentation
local Unesco = {
	suite  = 'Unesco',
	serial = '2021-04-08',
--	item   = 58187612
}

-- module import
require( 'Module:No globals' )
local ui = require( 'Module:Unesco/i18n' )
local wu = require( 'Module:Wikidata utilities' )
local yn = require( 'Module:Yesno' )

-- module variable and administration
local un = {
	moduleInterface = Unesco
}

-- getting id and label
-- in case of the country itself P17 is set, too
local function getId( id, property, label )
	if id ~= '' then
		id = wu.getId( id, property )
		if id ~= '' then
			label = label ~= '' and label or mw.wikibase.label( id ) or ''
		end
	end
	return id, label
end

-- short names for article anchors
local function getShortCountryName( name )
	local n = ui.shortNames[ name ] or name or ''
	return n ~= '' and '#' .. n or ''
end

local function getParam( args, key )
	return args[ ui.params[ key ] ] or args[ key ] or ''
end

-- create image with link and title
function un.getImage( file, size, text, country, continent )
	local title = ui.imgTitles[ continent ]
	if title then
		title = ( text or title ) .. '|link=' .. ui.articles[ continent ]
			.. getShortCountryName( country )
	else
		title = ( text or ui.imgTitles.default ) .. '|link=' .. ui.articles.default
	end
	return mw.ustring.format( ui.strings.img, file, size, title )
end

-- getting linked Unesco image for instance for indicators
function un.unesco( frame )
	local args     = frame:getParent().args
	for key, value in pairs( frame.args ) do
		if not args[ key ] then
			args[ key ] = value
		end
	end

	args.id        = args.id or mw.wikibase.getEntityIdForCurrentPage() or '' -- article id
	args.continent = getParam( args, 'continent' )
	args.country   = getParam( args, 'country' )
	args.image     = getParam( args, 'image' )
	args.size      = getParam( args, 'size' )
	args.text      = getParam( args, 'text' )
	args.noCateg   = yn( getParam( args, 'noCateg' ), false )

	if args.image ~= '' then
		-- delete namespace
		for i = 1, #ui.strings.fileNS, 1 do
			args.image = mw.ustring.gsub( args.image, '^' .. ui.strings.fileNS[ i ] .. ':', '' )
		end
	end
	if args.image == '' then
		args.image = ui.defaults.image
	end
	if args.size ~= '' then
		args.size, _ = mw.ustring.gsub( args.size, 'px', '' )
	end
	args.size = tonumber( args.size ) or ui.defaults.size
	if args.text == '' then
		args.text = nil
	end

	local cat, id, img
	local ns = mw.title.getCurrentTitle().namespace

	id, args.country = getId( args.id, 'P17', args.country )
	_, args.continent = getId( id, 'P30', args.continent )

	img = un.getImage( args.image, args.size, args.text, args.country,
		args.continent )

	if ns ~= 10 and ns ~= 828 then
		if args.country ~= '' and not args.noCateg then
			cat = ui.categories[ args.country ]
			if not cat then
				cat = mw.ustring.format( ui.strings.isIn, args.country )
			end
			img = img .. mw.ustring.format( ui.strings.category, cat )
		end
		return img .. wu.getCategories( ui.strings.properties )
	end
	return img
end

-- getting Unesco heritage article name from Wikidata
function un.getArticleFromWD( frame )
	local article = ui.articles.default
	local id = mw.wikibase.getEntityIdForCurrentPage() or '', country, continent

	if id ~= '' then
		id, country = getId( id, 'P17', '' )
		_, continent = getId( id, 'P30', '' )

		if continent ~= '' and ui.articles[ continent ] then
			article = ui.articles[ continent ] .. getShortCountryName( country )
		end
	end
	return article
end

return un