Modul:Quickbar Ort

Aus Wikivoyage
Zur Navigation springen Zur Suche springen
Template-info.png Dokumentation für das Modul Quickbar Ort[Ansicht] [Bearbeiten] [Versionsgeschichte] [Aktualisieren]

Dieses Modul enthält Funktionen für die Vorlage für {{Quickbar Ort}}.

Allgemein gültige Parameter

Die allgemein gültigen Parameter kann man sowohl innerhalb der Vorlage in der Parserfunktion invoke benutzen, als auch innerhalb des Artikels der Vorlage selbst übergeben. Der Paramter, der bei der Einbindung der Vorlage benutzt wird, hat dabei Vorrang. So kann man bestimmte Funktionalitäten für den generellen Gebrauch der Vorlage aktivieren (über invoke) und im Einzelfall im Artikel abschalten (bei der Verwendung der Vorlage).

  • |ignore_errors= auf 1 oder true gesetzt, werden die Ausgabe der Fehlermeldungen der Funktionen unterdrückt. Standardmäßig werden die Fehler angezeigt.
  • |no_category= auf 1 oder true gesetzt, werden die Artikel bei Fehlermeldungen des Moduls einer Fehlerkategorie zugeordnet. Standardmäßig werden Fehlermeldungen in die Kategorie Fehlerberichte des Moduls Quickbar Ort eingefügt. Wurden unbekannte Parameter verwendet landen die Artikel zusätzlich in der Kategorie Vorlagen mit unbekannten Parametern.
  • |error_category= gibt den Namen einer Fehlerkategorie an, in der der Artikel bei auftretenden Fehlern einsortiert wird. Standardmäßig ist das Fehlerberichte des Moduls Quickbar Ort.

Submodule

Verwendete Module

  • Modul:Check2 – enthält Routinen zur Parameterprüfung und Fehlergenerierung. Für die Parameterprüfung benötigt das aktuelle Modul Informationen über die erlaubten Parameter einer Funktionen. Diese wird im Regelfall über das Submodul Modul:Quickbar Ort/Params bereitgestellt.
  • Modul:Wikidata2 – enthält eine Reihe von Routinen zur Einbindung von Daten von Wikidata
  • Modul:Quickbar2 – Bibliothek mit den Basisroutinen zur Erstellung von Quickbars
  • Modul:Yesno – Hilfsmodul zur Auswertung von Ja/Nein-Werten. Es wertet Angaben wie ja, no oder 1 als boolsche Werte aus
  • Modul:LinkPhone – Wird bei Bedarf eingebunden, um die Telefonnummer der Touristeninformation zu formatieren

Verwandte Module

Verwendung

  • Quickbar Ort – Die Vorlage dient zur Ausgabe von Kurzdaten für Städte, Großstädte oder Kleinstädte. Die Anzeige erfolgt als umflossene Box am rechten Rand, die Box ist 300px breit. Alle angezeigten Infos sind optional und zum großen Teil in der Lage, ihre Werte auch von Wikidata zu beziehen.

Funktionen

Die Verwendung des Moduls mit Beispielen kannst du auch auf der Testseite Wikivoyage:Wikidata/Test Modul:Wikidata2 näher studieren.

  • qb-ort – Die einzige Funktion des Moduls erzeugt eine Infobox für Orte. Die Parameter sind identisch mit der entsprechenden Vorlage {{Quickbar Ort}} und auch dort dokumentiert.

Benötigte weitere Module

Dieses Modul benötigt folgende weitere Module: Check2 • LinkPhone • Quickbar2 • Wikidata2 • Yesno
Hinweise
local qbCheck	= require('Modul:Check2')
local qb		= require('Modul:Quickbar2')
local wd		= require('Modul:Wikidata2')
local yesno		= require('Modul:Yesno')

local cfgParams		= mw.loadData('Modul:Quickbar Ort/Params')
local cfgLocmaps	= mw.loadData('Modul:Quickbar Ort/Locmaps')

-- Auswertung und Prüfung von übergebenen Parametern
local function qbOrtGetParameter ( Frame, Params, Parameter )
	local argsParent = Frame:getParent().args
	local argsFrame = Frame.args
	for key,value in pairs ( argsParent ) do
		argsParent[mw.ustring.lower(tostring(key))] = value
	end
	for key,value in pairs ( argsFrame ) do
		argsFrame[mw.ustring.lower(tostring(key))] = value
	end
	return argsParent[Parameter] or argsFrame[Parameter] or Params[Parameter]
end

local function imageAlternative ( imageWikiText )
	local tmpImage = mw.ustring.gsub ( imageWikiText, '|thumb|', '|' )
	tmpImage = mw.ustring.gsub ( tmpImage, '|thumb%]', ']' )
	tmpImage = mw.ustring.gsub ( tmpImage, '|mini|', '|' )
	tmpImage = mw.ustring.gsub ( tmpImage, '|miniatur|', '|' )
	tmpImage = mw.ustring.gsub ( tmpImage, '|mini%]', ']' )
	tmpImage = mw.ustring.gsub ( tmpImage, '|miniatur%]', ']' )
	if ( mw.ustring.gmatch ( tmpImage, '|%d+px' ) == nil ) then
		tmpImage = mw.ustring.gsub ( tmpImage , '%]', '|400px]' )
	end
	tmpImage = mw.ustring.gsub ( tmpImage, '|.*px|', '|400px|thumb|' )
	tmpImage = mw.ustring.gsub ( tmpImage, '|.*px%]', '|400px|thumb]' )
	tmpImage = mw.ustring.gsub ( tmpImage , '%]', '|class=noviewer]' )
	return tmpImage
end

local function checkMapObject(id)
	local region = require('Modul:Location map data ' .. id)
	if (region ~= nil) and (region.data ~= nil) then
		region.data['id'] = id
		return region
	else
		return nil
	end
end

local qbOrt = {}

function qbOrt.qb_ort ( qbFrame )
	
	local templateArgs	= qbFrame:getParent().args 
	local invokeArgs	  = qbFrame.args
	
	local display	= ''
	local categories = ''
	local errorStr	= ''
	if ( not wd.hasEntity() ) then errorStr = '[[Kategorie:Artikel ohne Objekt auf Wikidata]]' end
	local fileCheck	= ''
	local qbTitle	= ''
	
	local itemParameter	= ''
	local itemValue		= ''
	
	local qbAuto = yesno ( tostring ( qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'auto' ) ), false )
	
	local qbID = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'id' )
	local qbIDText = qbID
	if ( qbIDText == 'self' ) then qbID = wd.EntityId() end
	
	local qbTyp = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'typ' )
	local qbStaatOK = yesno ( qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'staatok' ) )
	local qbNamen = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'namen' )
	
	local qbLogo = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'logo' )
	if ( yesno ( qbLogo ) ) then qbLogo = '' end
	local logoProp  = wd.getProperty ( wd.getBestStatement( qbIDText, 'P154' ).statement, 'Quickbar Logo' )

	local qbImage = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'bild' )
	if ( yesno ( qbImage ) ) then qbImage = '' end
	local imgProp = wd.getProperty ( wd.getBestStatement( qbIDText, 'P18' ).statement, 'Quickbar Bild' )

	local qbDomain = wd.getDomain(qbIDText):sub(2)
	if ( qbDomain == '' ) then 
		qbDomain = 'unknown-tld' 
	else
		categories = categories .. '[[Kategorie:Seiten, die die Wikidata-Eigenschaft P17 benutzen]]'
	end
	display = display .. '<div class="qbRightDiv"><table cellspacing="0" class="qb qb-ort qb-'..qbDomain..'">'
	local displayItem = false

	local provinceItem = wd.getProvince ( qbID )
	
	-- Logo
	-- Airports only
	if ( qbTyp == 'flughafen' ) then
		if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'logo' ) or qbAuto ) then
			local qbImage = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'logo' )
			display = display .. qb.createEntryImage ( 
				qbLogo, 
				logoProp, 
				qbIDText,
				'P154',
				'carousel-1', 
				'Logo', 
				'Artikel ohne Logo auf Wikidata', 
				'Artikel ohne Logo in der Quickbar' 
			)
		end
	end
	
	-- Bild
	-- All Quickbars
	if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'bild' ) or qbAuto ) then
		local qbImage = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'bild' )
		display = display .. qb.createEntryImage ( 
			qbImage, 
			imgProp, 
			qbIDText,
			'P18',
			'carousel-1', 
			'Bild', 
			'Artikel ohne Bild auf Wikidata', 
			'Artikel ohne Bild in der Quickbar' 
		)
	end
	
	-- Überschrift
	-- All Quickbars
	if ( qbNamen == '' ) then
		qbTitle = wd.getLabel(qbID).label
	else
		qbTitle = qbNamen
	end
	if ( qbTitle == '' ) then qbTitle = 'Kurzinfos' end
	display = display .. qb.theader ( 2, qbTitle )

	-- Provinz
	-- Towns and villages only
	if ( qbTyp == 'ort' ) then
		if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'provinz' ) or qbAuto ) then
			itemParameter = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'provinz' )
			if ( yesno ( itemParameter, true ) ) then
				if ( yesno ( itemParameter ) ) then itemParameter = '' end			
				if ( itemParameter == '' ) then
					if ( qbIDText ~= '' ) then
						if ( provinceItem.errCode == 1 ) then
							categories = categories .. '[[Kategorie:Seiten, die die Wikidata-Eigenschaft P131 benutzen]]'
							display = display .. qb.trItemTH ( 'qb-province carousel-2', provinceItem.provinceLabel, '<span class="wikidata-content">' .. provinceItem.provinceLink .. '</span>' )
							if ( provinceItem.errTxtShort ~= '' and not qbStaatOK ) then
								display = display .. qb.trSingleTD ( 'qb-wd-comment', provinceItem.errTxtShort )
							end
						end
						if ( provinceItem.errCode == 0 or provinceItem.errCode == 2 ) then
							display = display .. qb.trItemTH ( 'qb-province carousel-2', provinceItem.provinceLabel, provinceItem.provinceLink )
							display = display .. qb.trSingleTD ( 'qb-wd-comment', provinceItem.errTxtShort )
						end
						if ( provinceItem.errCode == 3 ) then
							display = display .. qb.trItemTH ( 'qbEmpty qb-province carousel-2', provinceItem.provinceLabel, '<em>unbekannt</em>' )
							display = display .. qb.trSingleTD ( 'qb-wd-comment', provinceItem.errTxtShort )
						end
						if ( provinceItem.errCode == 4 ) then
							display = display .. qb.trItemTH ( 'qbEmpty qb-province carousel-2', provinceItem.provinceLabel, '<em>unbekannt</em>' )
							display = display .. qb.trSingleTD ( 'qb-wd-comment', provinceItem.errTxtShort )
						end
						displayItem = true
					end
				else
					local itemParameter2 = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'provinzlabel' )
					if ( itemParameter2 ~= '' ) then 
						display = display .. qb.trItemTH ( 'qb-province carousel-2', itemParameter2, itemParameter )
					elseif ( provinceItem.provinceLabel ~= '' ) then 
						display = display .. qb.trItemTH ( 'qb-province carousel-2', provinceItem.provinceLabel, itemParameter )
					else
						display = display .. qb.trItemTH ( 'qb-province carousel-2', 'Provinz', itemParameter )
					end
					displayItem = true
				end
		  end
		end
	end

	-- Population
	-- Towns and villages only
	if ( qbTyp == 'ort' ) then
		if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'einwohner' ) or qbAuto ) then
			local population = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'einwohner' )
			if ( yesno ( population, true ) ) then
				if ( yesno ( population ) ) then population = '' end
				display = display .. qb.createEntryQuantity ( 
				population, 
				wd.getProperty ( wd.getBestStatement( qbIDText, 'P1082' ).statement ), 
				qbIDText, 
				'P1082',
				'Quickbar Einwohner',
				'qb-population carousel-2', 
				'Einwohner', 
				'Artikel ohne Einwohnerzahl auf Wikidata', 
				'Artikel mit abweichender Einwohnerzahl auf Wikidata',
				'Artikel mit identischer Einwohnerzahl auf Wikidata'
				)
			end
		end
	end
	
	-- Altitude
	-- Towns and airports
	if ( qbTyp == 'ort' or qbTyp == 'flughafen' ) then
		if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'höhe' ) or qbAuto ) then
		local hoehe = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'höhe' )
		if ( yesno ( hoehe, true ) ) then
			if ( yesno ( hoehe ) ) then hoehe = '' end
			display = display .. qb.createEntryQuantity ( 
			hoehe, 
			wd.getProperty ( wd.getBestStatement( qbIDText, 'P2044' ).statement, 'Quickbar Höhe' ), 
			qbIDText, 
			'P2044',
			'Quickbar Höhe',
			'qb-altitude carousel-2', 
			'Höhe', 
			'Artikel ohne Höhe auf Wikidata', 
			'Artikel mit abweichender Höhe auf Wikidata',
			'Artikel mit identischer Höhe auf Wikidata'
			)
			end
		end
	end
	
	-- Zeitzone
	-- Towns and airports
	if ( qbTyp == 'ort' or qbTyp == 'flughafen' ) then
		if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'zeitzone' ) or qbAuto ) then
		local zeitzone = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'zeitzone' )
			if ( yesno ( zeitzone, true ) ) then
				if ( yesno ( zeitzone ) ) then zeitzone = '' end
				display = display .. qb.createEntry ( 
				zeitzone, 
				wd.getProperty ( wd.getBestStatement( qbIDText, 'P421' ).statement, 'Quickbar Zeitzone' ),
				qbIDText,
				'P421',
				'qb-timezone carousel-2', 
				'Zeitzone',
				'Artikel ohne Zeitzone auf Wikidata', 
				nil,
				'Artikel mit identischer Zeitzone auf Wikidata'
				)
			end
		end
	end
	
	-- Tourist information
	-- Towns and villages only
	if ( qbTyp == 'ort' ) then
		local showTouriInfo = false
		local showTouriInfoError = false
		
		local displayTouriInfoWeb = ''
		local displayTouriInfoTel = ''
		local displayTouriInfoError = ''
		
		local touriInfoID = ''
		local i
		local statements
		
		-- TouriInfo abfragen
		local wdTouriInfo = wd.getBestStatement ( qbIDText, 'P2872' )

		-- keine Touriinfo auf WD hinterlegt
		if ( wdTouriInfo.errCode == 0 ) then
			displayTouriInfoError = displayTouriInfoError .. qb.trSingleTD ( 'qb-wd-comment', 'keine Touristinfo auf Wikidata: [[File:View-so edit simple.svg|15px|link=wikidata:' .. qbIDText .. '|class=noviewer|Touristeninfo nachtragen]]' )
			displayTouriInfoError = displayTouriInfoError .. '[[Kategorie:Artikel ohne Touristeninformation auf Wikidata]]'
			showTouriInfoError = true
		end
		if ( wdTouriInfo.errCode == 2 ) then
			displayTouriInfoError = displayTouriInfoError .. qb.trSingleTD ( 'qb-wd-comment', 'kein Objekt auf Wikidata: ([https://www.wikidata.org/w/index.php?search=&title=Special%3ASearch&go=Seite Suchen und Anlegen])' )
			showTouriInfoError = true
		end
		if ( wdTouriInfo.errCode == 1 ) then
			-- touriInfoID = wd.getProperty ( wdTouriInfo.statement, 'ID' )
			-- getting only the first id
			statements = wdTouriInfo.statement
			for i = 1, #statements, 1 do
				if ( statements[i].mainsnak.snaktype == 'value' ) and ( touriInfoID == '' ) then
					touriInfoID = statements[i].mainsnak.datavalue.value.id
				end
			end
			-- Category for using Property P2872
			categories = categories .. '[[Kategorie:Seiten, die die Wikidata-Eigenschaft P2872 benutzen]]'
		end
		
		-- Prüfen, TouriInfoWeb ob gewollt oder nicht
		if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'touriinfoweb' ) or qbAuto ) then
			local touriInfoWeb = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'touriinfoweb' )
			if ( yesno ( touriInfoWeb, true ) ) then
				if ( yesno ( touriInfoWeb ) ) then touriInfoWeb = '' end
				-- TouriInfoWeb gewünscht
				if ( touriInfoWeb == '' ) then
					-- Daten von WD, wenn vorhanden
					if ( touriInfoID ~= '' ) then
						local wdTouriInfoWeb = wd.getBestStatement ( touriInfoID, 'P856' )
						if ( wdTouriInfoWeb.errCode == 0 ) then
							displayTouriInfoError = displayTouriInfoError .. qb.trSingleTD ( 'qb-wd-comment', 'keine Webseite auf Wikidata: [[File:View-so edit simple.svg|15px|link=wikidata:' .. touriInfoID .. '|class=noviewer|Webseite nachtragen]]' )
							end
							if ( wdTouriInfoWeb.errCode == 1 ) then
								displayTouriInfoWeb = wd.getProperty ( wdTouriInfoWeb.statement, 'P856-link+site-WD' )
							end
						end
					else
					-- Daten lokal
					displayTouriInfoWeb = touriInfoWeb
				end
				showTouriInfo = true
			end
		end

		-- Prüfen, ob TouriInfoTel gewollt oder nicht
		if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'touriinfotel' ) or qbAuto ) then
			local touriInfoTel = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'touriinfotel' )
			  if ( yesno ( touriInfoTel, true ) ) then
				  if ( yesno ( touriInfoTel ) ) then touriInfoTel = '' end
				  -- Modul LinkPhone einbinden
				local lp = require('Modul:LinkPhone')
				-- TouriInfoTel gewünscht
				if ( touriInfoTel == '' ) then
					-- Daten von WD, wenn vorhanden
					if ( touriInfoID ~= '' ) then
						local wdTouriInfoTel = wd.getBestStatement ( touriInfoID, 'P1329' )
						if ( wdTouriInfoTel.errCode == 0 ) then
							displayTouriInfoError = displayTouriInfoError .. qb.trSingleTD ( 'qb-wd-comment', 'keine Telefonnummer auf Wikidata: [[File:View-so edit simple.svg|15px|link=wikidata:' .. touriInfoID .. '|class=noviewer|Telefonnummer nachtragen]]' )
						end
						if ( wdTouriInfoTel.errCode == 1 ) then
							displayTouriInfoTel = 
							'<span class="wikidata-content">' .. 
							lp.linkPhoneNumberSet( { ['phone'] = wd.getProperty ( wdTouriInfoTel.statement ), ['format'] = 'true' } ) .. 
							'</span>'
						end
					end	
				else
					-- Daten lokal
					displayTouriInfoTel = lp.linkPhoneNumberSet( { ['phone'] = touriInfoTel } )
				end
				showTouriInfo = true
			end
		end

		-- Touriinfo ausgeben
		if ( displayTouriInfoWeb ~= '' and displayTouriInfoTel ~= '' ) then
			display = display .. qb.trItemTH ( 'qb-tourist-info carousel-2', 'Tourist-Info', displayTouriInfoTel .. '<br />' .. displayTouriInfoWeb )
			displayItem = true
		elseif ( displayTouriInfoWeb ~= '' and displayTouriInfoTel == '' ) then
			display = display .. qb.trItemTH ( 'qb-tourist-info-web carousel-2', 'Tourist-Info Web', displayTouriInfoWeb )
			displayItem = true
		elseif ( displayTouriInfoWeb == '' and displayTouriInfoTel ~= '' ) then
			display = display .. qb.trItemTH ( 'qb-tourist-info-tel carousel-2', 'Tourist-Info Tel', displayTouriInfoTel )
			displayItem = true
		end
		
		if showTouriInfoError then
			display = display .. displayTouriInfoError
		end
		
		display = display
	end
	
	-- Area
	-- Airports only
	-- commented out due to discussion in the Lounge
	--[[
	if ( qbTyp == 'flughafen' ) then
		if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'fläche' ) or qbAuto ) then
		local flaeche = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'fläche' )
		if ( yesno ( flaeche, true ) ) then
			if ( yesno ( flaeche ) ) then flaeche = '' end
			display = display .. qb.createEntryQuantity ( 
			flaeche, 
			wd.getProperty ( wd.getBestStatement( qbIDText, 'P2046' ).statement ), 
			qbIDText, 
			'P2046',
			'Quickbar Fläche',
			'qb-area carousel-2', 
			'Fläche', 
			'Artikel ohne Fläche auf Wikidata', 
			'Artikel mit abweichender Fläche auf Wikidata',
			'Artikel mit identischer Fläche auf Wikidata'
			)
			end
		end
	end
	]]

	-- IATA-Code
	-- Airports only
	if ( qbTyp == 'flughafen' ) then
		if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'iata' ) or qbAuto ) then
		local iata = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'iata' )
		if ( yesno ( iata, true ) ) then
			if ( yesno ( iata ) ) then iata = '' end
			display = display .. qb.createEntryQuantity ( 
			iata, 
			wd.getProperty ( wd.getBestStatement( qbIDText, 'P238' ).statement ), 
			qbIDText, 
			'P238',
			'',
			'qb-iata carousel-2', 
			'IATA-Code', 
			'Artikel ohne IATA auf Wikidata', 
			'Artikel mit abweichendem IATA-Code auf Wikidata',
			'Artikel mit identischem IATA-Code auf Wikidata'
			)
			end
		end
	end

	-- ICAO-Code
	-- Airports only
	if ( qbTyp == 'flughafen' ) then
		if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'icao' ) or qbAuto ) then
		local icao = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'icao' )
		if ( yesno ( icao, true ) ) then
			if ( yesno ( icao ) ) then icao = '' end
			display = display .. qb.createEntryQuantity ( 
			icao, 
			wd.getProperty ( wd.getBestStatement( qbIDText, 'P239' ).statement ), 
			qbIDText, 
			'P239',
			'',
			'qb-icao carousel-2', 
			'ICAO-Code', 
			'Artikel ohne ICAO auf Wikidata', 
			'Artikel mit abweichendem ICAO-Code auf Wikidata',
			'Artikel mit identischem ICAO-Code auf Wikidata'
			)
			end
		end
	end

	-- Terminals
	-- Airports only
	if ( qbTyp == 'flughafen' ) then
		if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'terminals' )) then
			local terminals = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'terminals' )
			if ( yesno ( terminals, true ) and terminals ~= '') then
				display = display .. qb.trItemTH ( 'qb-terminals carousel-2', 'Terminals', terminals )
			end
		end
	end
	
	-- Passengers
	-- Airports only
	if ( qbTyp == 'flughafen' ) then
		if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'passagiere' )) then
			local passagiere = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'passagiere' )
			if ( yesno ( passagiere, true ) and passagiere ~= '') then
				display = display .. qb.trItemTH ( 'qb-passengers carousel-2', 'Passagiere', passagiere )
			end
		end
	end
	
	-- Airfreight
	-- Airports only
	-- commented out due to discussion in the Lounge
	--[[
	if ( qbTyp == 'flughafen' ) then
		if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'luftfracht' )) then
			local luftfracht = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'luftfracht' )
			if ( yesno ( luftfracht, true ) and luftfracht ~= '') then
				display = display .. qb.trItemTH ( 'qb-airfreight carousel-2', 'Luftfracht', luftfracht )
			end
		end
	end
	]]

	-- Position map
	itemParameter = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'lage' )
	qbLaenge = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'länge' )
	qbLaenge = qbLaenge:gsub ( ",", "." )
	qbBreite = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'breite' )
	qbBreite = qbBreite:gsub ( ",", "." )
	if ( itemParameter == '' ) then
		-- if ( qbCheck._isParamUsed ( qbFrame:getParent().args, 'karte' ) or qbAuto ) then
		itemParameter = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'karte' )
		if ( itemParameter == '' ) then
			itemParameter = mw.ustring.lower ( provinceItem.provinceCode )
			if ( qbDomain ~= 'unknown-tld' and qbDomain ~= '' ) then
				if ( cfgLocmaps.LocMapLevel[qbDomain] ~= nil ) then
					if ( provinceItem.errCode == 1 ) then
						
						-- No error occured when determining the province
						if ( qbTyp ~= 'flughafen' and cfgLocmaps.LocMapLevel[qbDomain][1] == 'province' and cfgLocmaps.LocMapLevel[qbDomain][2] ~= provinceItem.provinceID ) then
							
							-- This country requires province maps and the determined province differs from the country
							if ( itemParameter ~= '' ) then
								-- WD usage category
								categories = categories .. '[[Kategorie:Seiten, die die Wikidata-Eigenschaft P300 benutzen]]'
								
								-- Province was determined, and map parameter is available: showing the map
								if ( cfgLocmaps.LocMapNoProvince[itemParameter] ~= nil ) then
									itemParameter = cfgLocmaps.LocMapNoProvince[itemParameter]
								end
								local success, mData = pcall(checkMapObject, itemParameter)
								if not success then
									itemParameter = qbDomain
									errorStr = errorStr .. '[[Kategorie:Provinz ohne Location map]]'
							    end
							else
								-- no province code determined: using country map and displaying a comment (Wikidata Tools)
								itemParameter = qbDomain
								display = display .. qb.trSingleTD ( 'qb-wd-comment carousel-3', 'kein ISO 3166-2 Code für' .. provinceItem.provinceCode .. ' auf Wikidata: [[File:View-so edit simple.svg|15px|link=wikidata:' .. provinceItem.provinceID .. '|class=noviewer|ISO 3166-2 Code nachtragen]]' )
								errorStr = errorStr .. '[[Kategorie:Provinz ohne ISO 3166-2 Code auf Wikidata]]'
							end
						else
							-- This country requires province maps and the determined province differs from the country
							-- e.g.: Germany: Cities of Hamburg and Berlin do not belong to a German state
							-- Displaying a row when debugging: display = display .. qb.trSingleTD ( 'qb-tourist-info-debug', 'Provinzcode 2', itemParameter )
							
							-- Using country map
							itemParameter = qbDomain
						end
					else
						
						-- An error occured when determining the province
						-- displaying the country map
						itemParameter = qbDomain
						
					end
				else
					if ( cfgLocmaps.ForceProvinceMap[itemParameter] ~= nil ) then
						itemParameter = cfgLocmaps.ForceProvinceMap[itemParameter]
						local success, mData = pcall(checkMapObject, itemParameter)
						if not success then
							itemParameter = qbDomain
							errorStr = errorStr .. '[[Kategorie:Provinz ohne Location map]]'
					    end
					else
						itemParameter = qbDomain
					end
				end
			else 
				itemParameter = mw.ustring.gsub ( qbDomain, 'unknown-tld', '' )
			end
		end
		if ( itemParameter ~= '' ) then
			local mapCoord = wd.getCoordinates ( qbID )
			if ( mapCoord.errCode == 1 ) then
				categories = categories .. '[[Kategorie:Seiten, die die Wikidata-Eigenschaft P625 benutzen]]'
			end
			if ( qbLaenge ~= '' and qbBreite ~= '' ) then
				mapCoord = {
					["errCode"] = 1,
					["lat"] = tonumber ( qbBreite ),
					["long"] = tonumber ( qbLaenge )
				}
			end
			if ( mapCoord.errCode == 1 ) then
				if displayItem then display = display .. qb.theader ( 2, 'Lage', 'carousel-3' ) end
				locMapArgs = 
					{ args = 
						{  map = itemParameter, 
							lat = mapCoord.lat, 
							long = mapCoord.long, 
							maptype = qbOrtGetParameter ( qbFrame, cfgParams["qb_ort"], 'kartentyp' ), 
							-- label = '<b>' .. mw.text.trim(mw.ustring.gsub(wd.getLabel(qbID).label, '%s%(.*%)', '' )) .. '</b>' } } Label nicht benutzen, sondern eigenen Seitennamen
							label = '<b>' .. mw.text.trim(mw.ustring.gsub(wd.getSiteLink(qbID).sitelink, '%s%(.*%)', '' )) .. '</b>' } }
				display = display ..  qb.locmap ( '2' , locMapArgs, 'carousel-3' )
			else
				-- errorStr = errorStr .. qbCheck._error ('Koordinate(n) vergessen. Bitte auf [[:wikidata:' .. qbIDText .. '|Wikidata]] nachtragen (lokale Koordinaten werden nicht mehr unterstützt).[[Kategorie:Quickbars ohne Koordinaten]]', 'Quickbar Ort' )
				errorStr = errorStr .. '[[Kategorie:Quickbars ohne Koordinaten]]'
			end
		else		  
			errorStr = errorStr .. qbCheck._error ( 'Parameter <span style="font-weight: bold; font-style:italic">Karte</span> benutzt, aber kein Kartenkürzel angegeben und keine TLD-Info auf Wikidata verfügbar (kein Staat angegeben, in dem der Ort liegt)', 'Quickbar Ort' )
		end
		-- end
	elseif ( itemParameter == 'nein' ) then
		-- nüscht
	else
		-- Der Datei-Check wird hier nicht benutzt, da man auch Vorlagen angeben kann. Speziell Vorlagen, die das Imagemap-Tag benutzen, lassen sich sonst nicht einbinden.
		display = display .. qb.trImage ( 'qb_image qb-pos-image carousel-3', itemParameter )  
	end

	display = display .. '</table></div>'
	return categories .. errorStr .. qbCheck._testParams ( qbFrame:getParent().args, cfgParams["qb_ort"], 'Quickbar Ort' ) .. display
end

return qbOrt