
![]() | Dieses Modul ist getestet und für den projektweiten Gebrauch geeignet. Es kann in Vorlagen benutzt und auf Hilfeseiten erläutert werden. Entwicklungen an dem Modul sollten auf RegionList/Test und die Anwendung auf der Spielwiese getestet werden, da wiederholte Trial-and-Error-Edits die Resourcen stark belasten können. |
Dieses Modul enthält Funktionen für die Vorlagen {{Region List}} und {{Region Item}}. Die Funktionen können nicht über <#invoke: …>
, sondern müssen über den entsprechenden Vorlagenaufruf aufgerufen werden. Die Dokumentation befindet sich in Wikivoyage:RegionList, die Stilvorlagen in Vorlage:Region List/styles.css und Vorlage:Region Item/styles.css.
Versionsbezeichnung auf Wikidata: 2024-09-14
Funktionen
Die Verwendung des Moduls mit Beispielen kann man unter {{Region List}} einsehen.
listItem
– Die Funktion formatiert einen einzelnen Listeneintrag.list
– Die Funktion erzeugt den Rahmen für eine Regionenliste und bindet ein Kartenbild ein.
Erzeugter HTML-Code
<div class="voy-regionListFrame voy-regionVersion1/voy-regionVersionX"> <div class="voy-regionListMap"> <div class="voy-regionList"> <div class="voy-regionHeader"> <div class="voy-regionName"> … <span class="voy-regionColon">:</span> <div class="voy-regionDescription"> </div> <div class="voy-regionItems"> </div> … </div>
Hinweise
- Die obige Dokumentation wurde aus der Seite Modul:RegionList/Doku eingefügt. (bearbeiten | Versionsgeschichte) Die Kategorien für dieses Modul sollten in der Dokumentation eingetragen werden. Die Interwiki-Links sollten auf Wikidata eingepflegt werden.
- Liste der Unterseiten
-- documentation local regionList = { suite = 'RegionList', serial = '2024-09-14', item = 91289446 } -- module import local yn = require( 'Module:Yesno' ) -- module variable local regList = { -- administration moduleInterface = regionList, categories = { withoutMap = '[[Category:Regionenlisten ohne Karte]]', unknownParams = '[[Category:Regionenlisten mit fehlerhaften Parametern]]' }, delimiter = " '''·''' ", itemParams = { color = { 'color', 'farbe', default = '#ff0000' }, -- red description = { 'description', 'beschreibung' }, name = { 'name', default = 'Name' }, noRegionLink = '', styles = { 'styles', 'stile' } }, listParams = { imagemap = '', map = { 'map', 'karte' }, mapLink = '', mapSize = { 'mapSize', 'größe', default = '300px' }, styles = { 'styles', 'stile' }, title = { 'title', 'titel', default = 'Regionenkarte' }, version = { 'version', default = '1' } } } local function checkParams( frameArgs, list ) local complete = {} local args = {} for key, value in pairs( list ) do if type( value ) == 'table' then for key2, value2 in ipairs( value ) do complete[ value2 ] = key args[ key ] = args[ key ] or frameArgs[ value2 ] end args[ key ] = args[ key ] or '' elseif value ~= '' then complete[ value ] = key args[ key ] = frameArgs[ value ] or '' else complete[ key ] = key args[ key ] = frameArgs[ key ] or '' end if args[ key ] == '' and type( value ) == 'table' and value.default then args[ key ] = value.default end end local ok = true for key, value in pairs( frameArgs ) do if tonumber( key ) then -- frameArgs[ key ] cannot be nil args[ key ] = mw.text.trim( frameArgs[ key ] ) elseif not complete[ key ] then ok = false end end return args, ok end function regList.listItem( frame ) local args, ok = checkParams( frame:getParent().args, regList.itemParams ) local errors = ok and '' or regList.categories.unknownParams if not yn( args.noRegionLink, false ) then args.name = '[[' .. args.name .. ']]' end if args.description ~= '' then args.name = args.name .. '<span class="voy-regionColon">: </span>' end -- create header local header = mw.html.create( 'div' ) :addClass( 'voy-regionHeader' ) :node( mw.html.create( 'div' ) :addClass( 'voy-regionName' ) :wikitext( args.name ) ) if args.description ~= '' then header:node( mw.html.create( 'div' ) :addClass( 'voy-regionDescription' ) :wikitext( args.description ) ) end -- create region frame and insert header local styles = 'border-left-color: ' .. args.color if args.styles ~= '' then styles = styles .. ';' .. args.styles end local region = mw.html.create( 'div' ) :addClass( 'voy-regionList' ) :cssText( styles ) :node( header ) -- insert region items local items = {} for key, value in ipairs( args ) do if value ~= '' then table.insert( items, '[[' .. value .. ']]' ) end end items = table.concat( items, regList.delimiter ) if items ~= '' then region:node( mw.html.create( 'div' ) :addClass( 'voy-regionItems' ) :wikitext( items ) ) end if items == '' and args.description == '' then region:addClass( 'voy-regionOnlyHeader' ) end return errors .. tostring( region ) end function regList.list( frame ) local args, ok = checkParams( frame:getParent().args, regList.listParams ) args.version = tonumber( args.version ) or 1 local errors = ok and '' or regList.categories.unknownParams if args.map == '' and args.imagemap == '' then errors = errors .. regList.categories.withoutMap end -- check map local map = '' local link = '' if args.imagemap == '' and args.map ~= '' then if args.mapLink ~= '' then link = '|link=' .. args.mapLink end map = mw.ustring.format( '[[File:%s|border|%s%s|class=notpageimage|%s]]', args.map, args.mapSize, link, args.title ) elseif args.imagemap ~= '' then map = args.imagemap end -- create region-list frame local list = mw.html.create( 'div' ) :attr( 'class', 'voy-regionListFrame' .. ( map ~= '' and '' or ' voy-regionListFrameWithoutMap' ) .. ' voy-regionVersion' .. args.version ) if args.styles ~= '' then list:cssText( args.styles ) end -- insert map if map ~= '' then list:node( mw.html.create( 'div' ) :addClass( 'voy-regionListMap' ) :wikitext( map ) ) end -- insert regions for key, value in ipairs( args ) do if value ~= '' then list:wikitext( frame:preprocess( value ) ) end end return errors .. tostring( list ) end return regList