Modul:Quickbar
Dokumentation für das Modul Quickbar[Ansicht] [Bearbeiten] [Versionsgeschichte] [ ]
Dieses Modul ist als Alpha eingestuft. Es ist in der Phase der Entwicklung und kann zu Testzwecken eingesetzt werden. Daten von anderen Autoren können eingegeben werden um festzustellen, ob Probleme auftauchen. Fehlermeldungen, Vorschläge und Wünsche können auf der Diskussionsseite vorgebracht werden. |
Hinweise
- Die obige Dokumentation wurde aus der Seite Modul:Quickbar/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
local yesno = require( 'Module:Yesno' )
local images = require( 'Module:GetImage' )
local locMap = require( 'Module:Location map' )
-- returns nil, if both values are equal, otherwise the value
-- similar to the SQL function nullif()
local function nilIf ( value, equalValue )
if ( value == nil ) then
return nil
elseif ( tostring ( value ) == tostring ( equalValue ) ) then
return nil
else
return value
end
end
-- returns the first value that is not nil
-- similar to the SQL function coalesce()
local function coalesce ( value1, value2, value3 )
return value1 or value2 or value3
end
-- lowering all parameters
local function lowerArgs( templateFrame )
local templateArgs = {}
for key,value in pairs ( templateFrame.args ) do
templateArgs[string.lower(key)] = value
end
for key,value in pairs ( templateFrame:getParent().args ) do
templateArgs[string.lower(key)] = value
end
return templateArgs
end
-- generiert Attibute für die Tabelle der Quickbar
local function theadAttr ( class, style )
local tableAttr = 'cellspacing="0" class="' .. class ..'"'
if coalesce ( style, '' ) ~= '' then tableAttr = tableAttr .. ' style="' .. style .. '"' end
return tableAttr
end
local quickbar = {}
-- erzeugt einen Überschrifteneintrag in der Quickbar
function quickbar.theader ( colSpan, text, rowClass )
local class = rowClass or ''
local tr = mw.html.create ( 'tr' )
tr:addClass( class )
tr:tag('td')
:attr('colspan', colSpan )
:addClass('voy-qb-header' )
:wikitext(text)
return tostring ( tr )
end
-- creates a row with a key column and up to three value columns
function quickbar.trItemTH ( className, text1, text2, text3, text4 )
local tr = mw.html.create ( 'tr' )
tr:addClass('voy-qb-item ' .. className )
:tag('th')
:addClass('voy-qb-item-key')
:wikitext(text1)
if ( nilIf ( text2, '' ) ~= nil ) then tr:tag('td'):addClass('voy-qb-item-value1'):wikitext(text2) end
if ( nilIf ( text3, '' ) ~= nil ) then tr:tag('td'):addClass('voy-qb-item-value2'):wikitext(text3) end
if ( nilIf ( text4, '' ) ~= nil and nilIf ( text3, '' ) ~= nil ) then tr:tag('td'):addClass('voy-qb-item-value3'):wikitext(text4) end
return tostring ( tr )
end
-- creates a row with an image
function quickbar.trImage ( className, imageFile, colSpan )
if coalesce ( imageFile, '' ) == '' then return '' end
local tr = mw.html.create ( 'tr' )
tr:addClass('voy-qb-item ' .. className )
:tag('td')
:attr('colspan', colSpan)
:addClass('voy-qb-imagecell')
:tag('div')
:addClass('voy-qb-image')
:wikitext(imageFile)
return tostring ( tr )
end
function quickbar.trTwoImages ( className, className1, className2, imageFile1, imageFile2, colSpan )
if ( not colSpan ) then colSpan = 2 end
local td1 = mw.html.create ( 'td' )
td1:addClass( className1 )
:tag('div')
:addClass('voy-qb-image')
:wikitext(imageFile1)
local td2 = mw.html.create ( 'td' )
td2:addClass( className2 )
:tag('div')
:addClass('voy-qb-image')
:wikitext(imageFile2)
local tr = mw.html.create ( 'tr' )
tr:addClass('voy-qb-item ' .. className )
:tag('td')
:attr('colspan', colSpan)
:addClass('voy-qb-imagecell')
:tag('table')
:addClass('voy-qb-twoimages')
:tag('tr')
:node(td1)
:node(td2)
return tostring ( tr )
end
function quickbar.locmap ( colSpan, map, rowClass )
local class = rowClass or ''
local tr = mw.html.create ( 'tr' )
tr:addClass('voy-qb-locmap '..class)
:tag('td')
:attr('colspan', colSpan)
:wikitext(locMap.locationMap(map))
return tostring ( tr )
end
function quickbar.hr ( colSpan, rowClass )
local class = rowClass or ''
local hr = mw.html.create ( 'tr' )
hr:addClass('voy-qb-line '..class)
:tag('td')
:attr('colspan', colSpan)
:tag('hr')
return tostring ( hr )
end
-- Functions te be usen in Templates
-- Creates the Attributes of a infobox table
-- used in Vorlage:Quickbar table begin
-- it creates the attributes only, because the templates creates just the opening tag
function quickbar.qb_table ( frame )
local args = lowerArgs ( frame )
local pos = coalesce ( nilIf ( args.pos, '' ), 'right' )
local classes = 'voy-qb ' .. coalesce ( args.tableclass, '' )
if pos == 'right' then classes = classes .. ' voy-qb-right' end
if pos == 'rechts' then classes = classes .. ' voy-qb-right' end
if pos == 'left' then classes = classes .. ' voy-qb-left' end
if pos == 'links' then classes = classes .. ' voy-qb-left' end
if yesno ( coalesce ( args.topborder, 'no' ), false ) then classes = classes .. ' voy-qb-topborder' end
return theadAttr ( classes, coalesce ( args["1"], '' ) )
end
-- adds a header row to the infobox
function quickbar.qb_header ( frame )
local args = lowerArgs ( frame )
return quickbar.theader (
coalesce ( args.colspan, '2' ),
coalesce ( args["1"], args.text, 'Titel' ),
coalesce ( args.rowclass, '' )
)
end
-- adds a row to the info box containing a key column and up to three value columns
function quickbar.qb_item ( frame )
local args = lowerArgs ( frame )
return quickbar.trItemTH (
coalesce ( args.rowclass, '' ),
coalesce ( args.heading, '' ),
coalesce ( args.value, '' ),
coalesce ( args.value2, '' ),
coalesce ( args.value3, '' )
)
end
-- adds a row with an immage an image and an optoinal heading
-- if no image is defined, Wikidata can optinally be used
function quickbar.qb_image( frame )
local args = lowerArgs ( frame )
local display = ''
local image = ''
-- is a heading defined?
if ( coalesce ( args.heading, '' ) ~= '' ) then
display = quickbar.theader (
coalesce ( args.colspan, '2' ),
coalesce ( args.heading, '' ),
coalesce ( args.rowclass, '' )
)
end
image = coalesce ( args.image, '' )
if image == '' then
local wdImage = coalesce ( images.GetImage().getImage ( args.id, coalesce ( args.wikidataproperty, 'P18' ) ), '' )
if wdImage ~= '' then
image = '[[File:' .. wdImage .. '|' .. coalesce ( args.wikidatafileparameter, '296px' ) .. ']]'
end
end
if image ~= '' then
return display .. quickbar.trImage (
coalesce ( args.rowclass, '' ),
image,
coalesce ( args.colspan, '2' )
)
else
return display
end
end
-- adds a horizonal line to separate entries visually
function quickbar.qb_line ( frame )
local args = lowerArgs ( frame )
return quickbar.hr ( coalesce ( args.colspan, '2' ), coalesce ( args.rowclass, '' ) )
end
return quickbar