Zum Inhalt springen

Modul:Unesco

Aus Wikivoyage
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: 2023-02-19 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 = '2023-02-19',
--	item   = 12345678
}

-- module import
-- require( 'strict' )
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
}

-- get parameter value
local function getParam( args, key )
	return args[ ui.params[ key ] ] or args[ key ]
end

-- get 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

-- get article name and image title
local function getArticle( id, country, continent )
	if id == '' then
		id = mw.wikibase.getEntityIdForCurrentPage() or '' -- article id
	end
	id, country = getId( id, ui.properties.country, country )

	country = ui.aliases[ country ] or country or ''
	if country == '' then
		return ui.articles.default, ui.titles.default, ''
	end

	local article = ui.exceptions[ country ] or
		ui.strings.title:format( country )

	-- try to get country article
	local title = mw.title.new( article )
	if title and title.exists then
		return article, article, country
	end

	-- try to get the continent article
	if continent == '' then
		id, continent = getId( id, ui.properties.continent, continent )
	end
	article = ui.articles[ continent ]
	if article then
		return article .. '#' .. country, ui.titles[ continent ], country
	end

	return ui.articles.default, ui.titles.default, country
end

-- create image with link and title
function un.getImage( file, size, text, id, country, continent )
	local link, title, country = getArticle( id, country, continent )
	return mw.ustring.format( ui.strings.img, file, size, link, text or title ),
		country
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        = getParam( args, 'id' ) or ''
	args.continent = getParam( args, 'continent' ) or ''
	args.country   = getParam( args, 'country' ) or ''
	args.image     = getParam( args, 'image' ) or ui.defaults.image
	args.size      = string.gsub( getParam( args, 'size' ) or '', 'px', '' )
	args.text      = getParam( args, 'text' )
	args.noCateg   = yn( getParam( args, 'noCateg' ) or '', 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
	args.size = tonumber( args.size ) or ui.defaults.size
	args.image, args.country = un.getImage( args.image, args.size, args.text,
		args.id, args.country, args.continent )

	-- add categories
	local cat = ''
	local ns = mw.title.getCurrentTitle().namespace
	if ns ~= 10 and ns ~= 828 then
		cat = wu.getCategories( ui.strings.properties )
		if args.country ~= '' and not args.noCateg then
			cat = cat .. mw.ustring.format( ui.strings.category,
				ui.categories[ args.country ] or
				mw.ustring.format( ui.strings.isIn, args.country ) )
		end
	end
	return args.image .. cat
end

-- getting Unesco heritage article name from Wikidata
function un.getArticleFromWD( frame )
	return getArticle( '', '', '' )
end

return un