Modul:RegionList
Erscheinungsbild
Dokumentation für das Modul RegionList[Ansicht] [Bearbeiten] [Versionsgeschichte] [ ]
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