Modulo:Informkesto
Dokumentado por ĉi tiu modulo povas esti kreata ĉe Modulo:Informkesto/dokumentado
-- 2024-05-02
-- Jen modulo por krei informkestojn aŭ/kaj informkestajn partojn
-- Atentu, ke la plej multaj funkcioj ankoraŭ ne estis testitaj!
-- importu modulojn
local bildoj = require ("Modulo:InfoboxImage")
local kontrasto = require ("Modulo:Color contrast")
local wikidata = require ("Modulo:Wikidata")
local p = {}
-- tabelliniaj funkcioj
-- tabela kaplinio
-- titolo - teksto por la titola linio
-- fono - fona koloro
-- v - varianto
-- wd - ĉu Vikidatuma ero?
function p.tabelkapo(titolo, fono, v, wd, klaso)
if v == "caption" then
-- por la html-etikedo "caption"
local colspan ='2'
local tabelkapo = mw.html.create('caption')
:attr({colspan = colspan})
:css(style)
:wikitext(text)
:done()
return tostring(tabelkapo)
else
-- por la html-etikedoj "tr" kaj "th"
-- kaplinio
if klaso ~= "" and klaso ~= nil and type(klaso) == "string" then
klaso = "kaplinio mapo" .. klaso
else
klaso = "kaplinio mapo"
end
if wd == "jes" then
klaso = klaso .. " wikidata-content"
end
local tabelkapo = mw.html.create('tr')
-- kaplinia ĉelo
local kapchelo = tabelkapo:tag('th')
:addClass(klaso)
:attr('colspan','2')
:css('color','#000')
:css('background-color',fono)
:css('text-align','center')
:wikitext(titolo)
:done()
:newline()
return tostring(tabelkapo)
end
end
-- tabela subtitilo
function p.tabelsubtitolo(titolo, fono)
if titolo == nil then
titolo = ""
end
local subtitolo1 = mw.html.create('tr')
if fono ~= "" and fono ~= nil then
local titol1chelo = subtitolo1:tag('th')
:css('background-color', fono)
:css('border-top','1px solid ' .. fono)
:css('border-bottom','1px solid ' .. fono)
:css('text-align','center')
:attr('colspan','2')
:wikitext(titolo)
:done()
:newline()
return tostring(subtitolo1)
else
local titol1chelo = subtitolo1:tag('th')
:css('text-align','center')
:attr('colspan','2')
:wikitext(titolo)
:done()
:newline()
return tostring(subtitolo1)
end
end
-- bilda ĉelo por unuopa bildo
function p.unuopabildo(bildo, wd)
if bildo == nil then
bildo = ""
end
if wd == "jes" then
wd = "wikidata-content"
else
wd = ""
end
local bildo1 = mw.html.create("tr")
local bildchelo = bildo1:tag("td")
:addClass(wd)
:attr('colspan','2')
:css('font-size','smaller')
:css('text-align','center')
:wikitext(bildo)
return tostring(bildo1)
end
-- bilda ĉelo por duopa bildo
function p.duopajbildoj(bildo1, bildo2, priskribo1, priskribo2, wd, wd2)
if bildo1 == nil then
bildo1 = ""
end
if bildo2 == nil then
bildo2 = ""
end
local tabelo = mw.html.create('')
local bildoj = tabelo:tag("tr")
local klaso1 = ""
local klaso2 = ""
if wd == 1 or wd == 2 then
klaso1 = "wikidata-content"
end
local bildchelo = bildoj:tag("td")
:addClass(klaso1)
:css('font-size','smaller')
:css('text-align','center')
:wikitext(bildo1)
if wd2 == 1 or wd2 == 2 then
klaso2 = "wikidata-content"
end
local bildchelo = bildoj:tag("td")
:addClass(klaso2)
:css('font-size','smaller')
:css('text-align','center')
:wikitext(bildo2)
if (priskribo1 ~= "" and priskribo1 ~= nil) or (priskribo2 ~= "" and priskribo2 ~= nil) then
local priskriboj = tabelo:tag("tr")
if priskribo1 == nil then
priskribo1 = ""
end
if wd == 2 then
klaso1 = "wikidata-content"
else
klaso1 = ""
end
local priskribochelo = priskriboj:tag("td")
:addClass(klaso1)
:css('font-size','smaller')
:css('text-align','center')
:wikitext(priskribo1)
if priskribo2 == nil then
priskribo2 = ""
end
if wd2 == 2 then
klaso2 = "wikidata-content"
else
klaso2 = ""
end
local priskribochelo = priskriboj:tag("td")
:addClass(klaso2)
:css('font-size','smaller')
:css('text-align','center')
:wikitext(priskribo2)
return tostring(tabelo)
end
return tostring(tabelo)
end
-- helpaj funkcioj sen ŝablonoj
-- c1 - enhavo de ĉelo 1
-- c2 - enhavo de ĉelo 2
-- wd - ĉu datoj el Vikidatuma ero
function p.aldonulinion (c1, c2, wd, v)
--local tabellinio = mw.html.create("tr")
local tabellinio = mw.html.create('tr')
local etikedo = "th"
if v == "td" then
etikedo = v
end
local chelo1 = tabellinio:tag(etikedo)
:css('text-align','left')
:wikitext(c1)
:done()
if wd == "jes" then
wd = "wikidata-content"
else
wd = ""
end
local chelo2 = tabellinio:tag('td')
:addClass(wd)
:wikitext(c2)
:done()
:newline()
return tostring(tabellinio)
end
function p.linivarianto(c1,c2,wd)
if c1 ~= "" and c1 ~= nil and c2 ~= "" and c2 ~= nil then
if mw.ustring.sub(c1,1,3) == " - " then
--wd estos aranĝata poste
aldonulinion(c1,c2,wd,"td")
else
aldonulinion(c1,c2,wd)
end
end
end
-- unuopa ĉelo
-- c - enhavo de la ĉelo
-- v - varianto de ĉelo
-- wd - ĉu datoj el Vikidatuma ero
function p.aldonuchelon (c, v, wd)
local t = ""
if v == "titolo" then
t = "th"
else
t = "td"
end
local tabellinio = mw.html.create('tr')
if wd == "jes" then
wd = "wikidata-content"
else
wd = ""
end
local chelo = tabellinio:tag(t)
:addClass(wd)
:attr('colspan','2')
:css('text-align','center')
:wikitext(c)
:done()
:newline()
return tostring(tabellinio)
end
-- helpa funkcio por redono de kolorkodoj
local function koloroj (kodo)
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="Informkesto/koloro",
args ={
kodo
}
}
return n
end
-- helpa funkcio por rigardo en tekstoĉenon
local function lin_mald (teksto, longo)
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="Lin mald",
args ={
teksto, longo
}
}
return n
end
-- helpa funkcio por rigardo en tekstoĉenon
local function lin_serchi (teksto, longo)
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="Lin serĉi",
args ={
teksto, longo
}
}
return n
end
-- helpa funkcio por rigardo en tekstoĉenon
local function lin_sub (teksto, komenco, longo)
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="Lin sub",
args ={
teksto, komenco, longo
}
}
return n
end
-- helpa funkcio por kontrasto
local function kolorkontrasta_rilatumo (teksto, fono)
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="Kolorkontrasta rilatumo",
args ={
teksto, fono
}
}
return n
end
-- helpa funkcio por la fonaj kaj malfonaj koloroj
local function fono_malfono(koloro, fono, malfono, kruda)
teksto = ""
if koloro ~= "" and koloro ~= nil and (fono == "" or fono == nil) then
local testo = lin_mald(koloro,17)
if testo == "background-color:" then
return koloro
else
testo = lin_mald(koloro,5)
local testo2 = lin_mald(koloro,1)
if (testo == "#" or testo2 == "#") and kruda ~= "jes" then
teksto = teksto .. ' background-color:' .. koloro .. '; '
return teksto
elseif (testo == "#" or testo2 == "#") and kruda == "jes" then
teksto = teksto .. ' ' .. koloro .. '; '
return teksto
end
end
local k = koloroj(koloro)
if k ~= "" and k ~= nil and kruda ~= "jes" then
teksto = teksto .. ' background-color:' .. k .. '; '
elseif k ~= "" and k ~= nil and kruda == "jes" then
teksto = teksto .. ' ' .. k .. '; '
end
if koloro == "13" and (malfono == "" or malfono == nil) then
teksto = teksto .. ' color:white; '
end
else
if fono ~= "" and fono ~= nil then
local testo = lin_mald(fono,17)
if testo == "background-color:" then
local p = lin_sub(fono,17)
local testo2 = lin_serchi(p,"color:")
if testo2 ~= "-1" then
malfono = ""
end
teksto = teksto .. fono
else
teksto = teksto .. ' background-color:' .. fono .. '; '
end
end
if malfono ~= "" and malfono ~= nil then
if fono ~= "" and fono ~= nil then
local testo = kolorkontrasta_rilatumo(malfono,fono)
if testo == "?" then
malfono = "black"
end
end
teksto = teksto .. ' color:' .. malfono .. '; '
end
end
return teksto
end
-- alvoko de {{ŝanĝu ŝablonon}}
local function changetemplate (shablono,fono,malfono,klaso,stiloj,tekstokoloro)
local frame = mw.getCurrentFrame()
local n = frame:expandTemplate {
title="ŝanĝu ŝablonon",
args = {
["ŝablono"] = shablono,
fonkoloro = fono,
tekstokoloro = malfono,
klaso = klaso,
stiloj = stiloj,
tekstokoloro = tekstokoloro
}
}
return n
end
-- helpa funkcio pri kolortransdono el ŝablonoj
function kolorilo(koloro)
local k = "#"
--local sercho = mw.ustring.find( koloro, k)
local t = "#"
local nova = mw.ustring.gsub( koloro, k, t )
return nova
end
-- jen piedlinio kun triopo de centraj ligiloj kaj dekstra ligilo kun bildeto
-- fakte estas {{ŝanĝu ŝablonon}}
-- c - enhavo de la ĉelo, fakte la nomo de ŝablono, kutime informkesto, al kies paĝo konduku la tri ligiloj
-- koloro1 - fonkoloro de la kestero
-- koloro2 - tekstokoloro
-- klaso - por la interna th/td-etikedo
-- stilo - por la interna div-etikedo
-- bla - rubo el la testoj
-- v - varianto de ĉelo
-- kolumnoj - nombro de kolumnoj, defaŭlte 2
-- klaso2 - por la interna th/td-etikedo, defaŭlte "shangu-shablonon"
-- ligilaro(teksto,"","",klaso,f,f)
function p._ligilaro (c, koloro1, koloro2, koloro3, klaso, stilo, bla, v, kolumnoj, klaso2, linio_alteco, vikidatumo)
local t = ""
local k = (klaso or "") .. ' ' .. (klaso2 or "infoboximage")
local base = mw.title.getCurrentTitle().baseText
if base ~= "Ŝanĝu ŝablonon" then
k = "shangu-shablonon " .. k
end
-- kutima difino de ŝtopado (angle padding)
local padding = "0 0.2em 0.2em 0.2em"
if v == "titolo" then
t = "th"
elseif v == "linio" then
t = "td"
-- sub linio la supra ŝtopado estu la sama kiel ĉiuj aliflankaj
padding = "0.2em"
elseif v == "taksokesto" then
t = "td"
-- en taksokesto (taksonomia informkesto) la supra ŝtopado estu for
padding = "0"
else
t = "td"
end
if stilo == nil then
stilo = ""
end
-- defaŭlta fonkoloro
if koloro1 == "" or koloro1 == nil then
koloro1 = "#ecf9ed" -- "#e0e0e0"
else
koloro1 = kolorilo(koloro1)
end
-- defaŭlta tekstokoloro
if koloro2 == "" or koloro2 == nil then
koloro2 = "black"
else
koloro2 = kolorilo(koloro2)
end
-- defaŭlta kadrokoloro
if koloro3 == "" or koloro3 == nil then
koloro3 = "#a2a9b1"
else
koloro3 = kolorilo(koloro3)
end
-- se koloroj havas tro malaltan kontraston, korektu la tekstokoloron
local testo = kolorkontrasta_rilatumo(koloro2,koloro1)
testo = tonumber(testo)
if type(testo) == 'number' and testo < 4.5 then
koloro2 = "white"
end
local k2 = kolumnoj
local k2testo = tonumber(k2)
if (k2 == "" or k2 == nil) or type(k2testo) ~= "number" then
k2 = "2"
end
local ligilo = ""
currentTitle = mw.title.getCurrentTitle()
local ns = currentTitle.namespace
if ns == 0 and vikidatumo == "jes" then
ligilo = wikidata.pageId({args = {} }) or ""
if ligilo then
ligilo = "[[Dosiero:Wikidata-logo.svg|15px|left|link=:d:" .. ligilo .. "]]"
end
end
local tabellinio = mw.html.create('tr')
local chelo = tabellinio:tag(t)
:addClass(k)
:attr('colspan',k2)
:css('text-align','center')
:css('padding',padding)
if linio_alteco ~= "" and linio_alteco ~= nil then
chelo:css('line-height', linio_alteco)
end
-- difino de ligilo al rilata projektopaĝo
local informo = "Projekto:Ŝablonoj"
local testo = lin_serchi(c,'Informkesto')
if testo == "-1" then
informo = 'Projekto:Ŝablonoj'
elseif testo == "1" then
informo = "Vikipedio:Informkestoj"
end
-- ĉirkaŭanta kesto <div> kun dekstre metata bildeto kun ligilo al antaŭe difinita projektopaĝo
local div = chelo:tag('div')
:addClass('noprint toccolours')
:css('border','2px solid ' .. koloro3)
:css('padding','5px')
-- truko pro strangaĵoj en kelkaj helpaj ŝablnoj por fervojlinioj -- 2021-05-04
local testo = lin_mald(koloro1,17)
if testo == "background-color:" then
-- denove forigi la komencan kodopecon, por ke poste Lua denove aldonu ĝin. kio estas logiko?
koloro1 = mw.ustring.gsub( koloro1, "background%-color%:", "" )
div:css('background-color',koloro1)
else
div:css('background-color',koloro1)
end
div:css('color',koloro2)
--:css(stilo)
if stilo ~= nil and stilo ~= "" then
div:attr('style',stilo)
end
div:css('font-size','xx-small')
:css('font-weight','normal')
--:css('width','97%')
if ligilo ~= "" and ligilo ~= nil then
div:wikitext(ligilo)
end
div:wikitext('[[Dosiero:Information_icon.svg|15px|right|link=' .. informo .. ']]')
-- defaŭltaj tekstoj de la ligiloj
local vidu = "v"
local diskutu = "d"
local redaktu = "r"
-- traktado de stiloj resp. CSS
if koloro2 ~= "black" then
vidu = '<span style="color:' .. koloro2 .. '">' .. vidu .. '</span>'
diskutu = '<span style="color:' .. koloro2 .. '">' .. diskutu .. '</span>'
redaktu = '<span style="color:' .. koloro2 .. '">' .. redaktu .. '</span>'
elseif stilo ~= "" then
vidu = '<span style="' .. stilo .. ';border:0;">' .. vidu .. '</span>'
diskutu = '<span style="' .. stilo .. ';border:0;">' .. diskutu .. '</span>'
redaktu = '<span style="' .. stilo .. ';border:0;">' .. redaktu .. '</span>'
end
-- kodigo de [{{fullurl:{{ns:10}}:{{{1}}}|action=edit} per Lua. Vidu ankaŭ [[Helpo:Lua/Ligiloj]], kvankam tie temas pri artikola historio.
local uri = mw.uri.fullUrl( 'Ŝablono:' .. c, "action=edit" )
local r = string.format( "[%s " .. redaktu .. "]", tostring( uri ) )
-- kunmetado de la triopa ligilaro en ĉirkaŭanta <span>
local span = div:tag('span')
:addClass('noprint plainlinksneverexpand')
:css('text-align','center')
:wikitext('[[Ŝablono:'.. c ..'|' .. vidu .. ']]')
:wikitext(' • ')
:wikitext('[[Ŝablono-Diskuto:'.. c ..'|' .. diskutu .. ']]')
:wikitext(' • ')
:wikitext(r)
:done()
return tostring(tabellinio)
end
-- jen memstare vokebla varianto de la antaŭa funkcio
function p.ligilaro(frame)
-- This function builds the infobox used by the {{informkesto}} template.
if not getArgs then
getArgs = require("Module:Arguments").getArgs
end
--local args = getArgs(frame, {wrappers = "Template:Babel"})
-- post modifo de {{ŝanĝu ŝablonon}} la sekva estos denove ŝanĝenda!
local args = getArgs(frame, {removeBlanks = false, wrappers = {"Ŝablono:Ŝanĝu ŝablonon/provejo","Ŝablono:Ŝanĝu ŝablonon"}})
-- parametroj
local c = args["ŝablono"]
local koloro1 = args["fono"] or args["fonkoloro"]
local koloro2 = args["malfono"] or args["tekstokoloro"]
local koloro3 = args["kadro"] or args["kadrokoloro"]
local klaso = args["klaso"]
local klaso2 = args["klaso2"]
local stilo = args["stilo"]
local v = args["v"] or args["varianto"]
local kolumnoj = args["kolumnoj"] or "2"
local linio_alteco = args["linio-alteco"]
local vikidatumo = args["vikidatumoj"]
if c ~= "" and c ~= nil then
return p._ligilaro (c, koloro1, koloro2, koloro3, klaso, stilo, bla, v, kolumnoj, klaso2, linio_alteco, vikidatumo)
else
return '<span class="error">Vi forgesis difini nomon de ŝablono!</span>'
end
end
-- Lua-versio de {{Informkesto}}
function p.kesto(frame)
-- This function builds the infobox used by the {{informkesto}} template.
if not getArgs then
getArgs = require("Module:Arguments").getArgs
end
--local args = getArgs(frame, {wrappers = "Template:Babel"})
local args = getArgs(frame, {removeBlanks = false, wrappers = {"Ŝablono:Informkesto/+/provejo","Ŝablono:Informkesto/+"}})
local bildo = args["bildo"]
local teksto = args["teksto"]
local etikedo = args["etikedo"]
local klaso = args["klaso"]
local klaso2 = args["klaso2"]
local mikro = args["mikro"]
local fono = args["fono"]
local malfono = args["malfono"]
local kadro = args["kadro"] or args["kadrokoloro"]
local kapkadro = args["kapkadro"] or args["kapkadrokoloro"]
local piedkadro = args["piedkadro"] or args["piedkadrokoloro"]
local koloro = args["koloro"] or "5"
local koloro_alt = args["koloro alt"]
local stilo = args["stilo"] or "1"
local bildo_grando = args["bildo-grando"]
local shablononomo = args["ŝablononomo"] or args["ŝablono-nomo"]
local kolumnoj = args["kolumnoj"]
local linisalto = args["linisalto"]
local largho = args["larĝo"]
local kesta_klaso = args["kesta klaso"] or ""
local css_stiloj = args["style"] or args["css-stiloj"] or ""
local subshablono = args["subŝablono"]
-- parametroj por la titola linio
local titola_koloro = args["titola koloro"] or "6"
local titola_stilo = args["titola stilo"] or ""
local titola_klaso = args["titola klaso"] or "io"
local tekstogrando = args["tekstogrando"] or '150%'
local subshablona_klaso = args["subŝablona klaso"]
local teksto_poz = args["tekstopozicio"] or "center"
if teksto_poz == "" then
teksto_poz = "center"
end
local s = ""
if linisalto == "jes" then
s = "\n"
end
local tabelo = ""
if teksto ~="" and teksto ~= nil and (bildo == "" or bildo == nil) and etikedo~="--tabelo--" and etikedo~="--komenco--" then
tabelo = s .. "|-"
if etikedo == "" then
tabelo = tabelo .. "\n" .. '| colspan="2" style="text-align:' .. teksto_poz .. '"'
if klaso ~= "" and klaso ~= nil then
tabelo = tabelo .. ' class="' .. klaso .. '" '
end
tabelo = tabelo .. '| ' .. teksto
return tabelo
elseif etikedo == "-" or etikedo == "bildo" then
if klaso ~= "" and klaso ~= nil then
tabelo = tabelo .. ' class="' .. klaso .. '" '
end
tabelo = tabelo .. "\n"
tabelo = tabelo .. '! colspan="2" '
tabelo = tabelo .. 'style="text-align:' .. teksto_poz .. ';'
local f = fono_malfono(koloro,fono,malfono)
if f ~= "" and f ~= nil then
tabelo = tabelo .. f
else
if koloro_alt ~= "" and koloro_alt ~= nil then
tabelo = tabelo .. 'background-color:' .. koloro_alt .. '; '
local testo = kolorkontrasta_rilatumo('black',koloro_alt)
testo = tonumber(testo)
if type(testo) == "number" and testo < 4.5 then
tabelo = tabelo .. 'color: white;'
end
end
end
if kadro ~= "" and kadro ~= nil then
tabelo = tabelo .. 'border:2px solid ' .. kadro .. '; '
end
tabelo = tabelo .. '"' .. '| ' .. teksto
return tabelo
-- aldono kompare al al ĝisnuna ŝablono {{informkesto/+}}
elseif (etikedo == "ŝŝ" or etikedo == "--piedlinio--" or etikedo == "--ligilaro--") and (subshablono == "" or subshablono == nil) then
local f = fono_malfono(koloro,fono,malfono)
local shablono = ""
local linio_alteco = args["linio-alteco"]
if f ~= "" and f ~= nil then
-- tabelo = tabelo .. f
-- shablono = changetemplate(teksto,"","",klaso,f,"inherit !important")
--shablono = changetemplate(teksto,"","",klaso,f,f)
shablono = p._ligilaro(teksto,"","",piedkadro,klaso,f,f,"",kolumnoj, klaso2, linio_alteco)
else
if koloro_alt ~= "" and koloro_alt ~= nil then
-- tabelo = tabelo .. 'background-color:' .. koloro_alt .. '; '
-- shablono = changetemplate(teksto,koloro_alt,"",klaso,"","")
shablono = p._ligilaro(teksto,koloro_alt,"",piedkadro,klaso,"","","",kolumnoj, klaso2, linio_alteco)
end
end
tabelo = tabelo .. '\n' .. shablono
return tabelo
-- aldono kompare al la ĝisnuna ŝablono {{informkesto/+}}, normala uzo
elseif (etikedo == "--kaplinio--" or etikedo == "--titolo--") and (subshablono == "" or subshablono == nil) then
tabelo = tabelo .. ' style="font-size:110%; text-align:' .. teksto_poz .. '"\n'
tabelo = tabelo .. '! colspan="2" '
tabelo = tabelo .. ' style="'
local tkoloro = koloroj(titola_koloro)
tabelo = tabelo .. 'background-color:' .. tkoloro .. '; '
tabelo = tabelo .. 'padding-left:0.5em; padding-right:0.5em;'
local f = fono_malfono(koloro,fono,malfono)
if f ~= "" and f ~= nil then
tabelo = tabelo .. f
end
if kapkadro ~= "" and kapkadro ~= nil then
tabelo = tabelo .. "border:2px solid " .. kapkadro .. '; '
end
tabelo = tabelo .. titola_stilo .. '" '
tabelo = tabelo .. 'class="kaplinio ' .. titola_klaso
tabelo = tabelo .. '" ' .. '| ' .. teksto
return tabelo
-- aldono kompare al la ĝisnuna ŝablono {{informkesto/+}}, subŝablona uzo
elseif (etikedo == "--kaplinio--" or etikedo == "--titolo--") and subshablono ~= "" and subshablono ~= nil then
tabelo = tabelo .. '\n! colspan="2" style="text-align:' .. teksto_poz .. '; background-color:'
if fono ~= "" and fono ~= nil then
tabelo = tabelo .. fono
else
tabelo = tabelo .. '#ddd; '
end
if malfono ~= "" and malfono ~= nil then
tabelo = tabelo .. 'color:' .. malfono .. '; '
end
if kapkadro ~= "" and kapkadro ~= nil then
tabelo = tabelo .. "border:2px solid " .. kapkadro .. '; '
end
tabelo = tabelo .. 'font-size:' .. tekstogrando .. '; '
tabelo = tabelo .. 'line-height:1.5;" '
if subshablona_klaso ~= "" and subshablona_klaso ~= nil then
tabelo = tabelo .. 'class="' .. subshablona_klaso .. '"'
end
tabelo = tabelo .. ' | ' .. subshablono
return tabelo
elseif etikedo == "+" then
tabelo = tabelo .. 'style="background-color:transparent;"'
if klaso ~= "" and klaso ~= nil then
tabelo = tabelo .. ' class="' .. klaso .. '" '
end
tabelo = tabelo .. "\n"
tabelo = tabelo .. '! colspan="2" '
tabelo = tabelo .. 'style="text-align: center; '
if koloro_alt ~= "" and koloro_alt ~= nil then
tabelo = tabelo .. 'background-color:' .. koloro_alt .. '; '
end
tabelo = tabelo .. '" '
tabelo = tabelo .. '| \n'
tabelo = tabelo .. '{| '
local kl = 'class="'
if stilo == "2" then
kl = kl .. 'toccolours '
elseif stilo == "3" then
kl = kl .. 'prettytable '
elseif stilo == "" or stilo == nil or stilo == "1" then
kl = kl .. 'infobox '
else
-- ĉe iuj sensencaj valoroj tamen funkciu la defaŭlta "1"
kl = kl .. 'infobox '
end
kl = kl .. 'collapsible collapsed"'
tabelo = tabelo .. kl
tabelo = tabelo .. ' width=100%\n'
tabelo = tabelo .. '|-\n'
tabelo = tabelo .. '! colspan="2" '
tabelo = tabelo .. 'style="text-align:' .. teksto_poz .. '; '
local f = fono_malfono(koloro,fono,malfono)
if f ~= "" and f ~= nil then
tabelo = tabelo .. f
end
local truko = '<div style="float:left; width:6em;text-align:left;"> </div>'
tabelo = tabelo .. '"' .. '| ' .. truko .. teksto
return tabelo
elseif etikedo == "*" then
tabelo = tabelo .. '\n|}\n'
return tabelo
elseif etikedo == "nenio" then
return ""
elseif etikedo == "enhavo" then
tabelo = tabelo .. '\n! colspan="2" style="background-color:transparent;'
if klaso ~="" and klaso ~= nil then
tabelo = tabelo .. ' class="' .. klaso .. '" '
end
tabelo = tabelo .. '| \n' .. teksto
return tabelo
elseif etikedo ~= nil then
tabelo = tabelo .. '\n!'
local st = ""
if stilo == 2 then
st = ' style="vertical-align:top; '
end
if kadro ~= "" and kadro ~= nil and stilo ~= 2 then
st = st .. ' style="border:2px solid ' .. kadro .. ';" '
elseif kadro ~= "" and kadro ~= nil and stilo == 2 then
st = st .. 'border:' .. kadro .. ';" '
else
st = st .. '" '
end
tabelo = tabelo .. st
local k1 = ""
if klaso ~= "" and klaso ~= nil then
k1 = ' class="' .. klaso .. '" '
end
tabelo = tabelo .. k1
if st ~= "" or k1 ~= "" then
tabelo = tabelo .. ' | '
end
tabelo = tabelo .. etikedo .. '\n'
tabelo = tabelo .. '| ' .. st .. k1
if st ~= "" or k1 ~= "" then
tabelo = tabelo .. ' | '
end
local m1 = ""
local m2 = ""
if mikro ~= "" and mikro ~= nil then
m1 = '<span class="' .. mikro .. '">'
m2 = '</span>'
end
tabelo = tabelo .. m1 .. teksto .. m2
return tabelo
end
elseif bildo ~= "" and bildo ~= nil and etikedo == "bildo" then
tabelo = s .. "|-"
tabelo = tabelo .. '\n! colspan="2" style="text-align:' .. teksto_poz .. '; background-color:'
if fono ~= "" and fono ~= nil then
tabelo = tabelo .. fono .. '; '
else
tabelo = tabelo .. '#f2f2f4; '
end
if klaso ~= "" and klaso ~= nil then
tabelo = tabelo .. ' class="' .. klaso .. '" '
end
tabelo = tabelo .. '|'
-- bilda modulo
local b = bildoj.InfoboxImage({args={image=bildo,size=bildo_grando,sizedefault="120px",sizedefault="frameless",suppressplaceholder="yes",center="yes", alt=teksto} })
if b ~= nil then
tabelo = tabelo .. b
end
if teksto ~= "" and teksto ~= nil then
tabelo = tabelo .. '<div>' .. teksto .. '</div>'
end
return tabelo
-- aldono kompare al la ĝisnuna ŝablono {{informkesto/+}}
elseif (etikedo == "--tabelo--" or etikedo == "--komenco--") and (subshablono == "" or subshablono == nil) then
tabelo = s .. '{| '
local kl = 'class="'
if stilo == "2" then
kl = kl .. 'toccolours ' .. kesta_klaso
elseif stilo == "3" then
kl = kl .. 'prettytable ' .. kesta_klaso
elseif stilo == "" or stilo == nil or stilo == "1" then
kl = kl .. 'infobox ' .. kesta_klaso
else
-- ĉe iuj sensencaj valoroj tamen funkciu la defaŭlta "1"
kl = kl .. 'infobox ' .. kesta_klaso
end
tabelo = tabelo .. kl
tabelo = tabelo .. '" style="'
if stilo == "2" or stilo == "3" then
tabelo = tabelo .. 'float:right; clear:right; margin-left:1em;'
end
tabelo = tabelo .. 'font-size:90%; text-align:left;'
if css_stiloj ~= "" then
tabelo = tabelo .. css_stiloj
end
if largho ~= "" and largho ~= nil then
tabelo = tabelo .. 'width:' .. largho .. '\n'
else
tabelo = tabelo .. 'min-width:190px; max-width:260px; width:30%;\n'
end
return tabelo
elseif etikedo == "*" and (bildo == "" or bildo == nil) then
tabelo = tabelo .. '\n|-\n'
tabelo = tabelo .. '|}'
return tabelo
end
end
-- Lua-versio de {{Informkesto}}. sed fakte uzata de alia modulo per helpo de la ŝablono {{informkesto/+/html}}
function p.kesto_html(frame)
-- This function builds the infobox used by the {{informkesto}} template.
if not getArgs then
getArgs = require("Module:Arguments").getArgs
end
--local args = getArgs(frame, {wrappers = "Template:Babel"})
local args = getArgs(frame, {removeBlanks = false, wrappers = {"Ŝablono:Informkesto/+/html","Ŝablono:Informkesto/+"}})
local bildo = args["bildo"]
local teksto = args["teksto"]
local etikedo = args["etikedo"]
local klaso = args["klaso"]
local klaso2 = args["klaso2"]
local mikro = args["mikro"]
local fono = args["fono"]
local malfono = args["malfono"]
local kadro = args["kadro"] or args["kadrokoloro"]
local kapkadro = args["kapkadro"] or args["kapkadrokoloro"]
local piedkadro = args["piedkadro"] or args["piedkadrokoloro"]
local koloro = args["koloro"] or "5"
local koloro_alt = args["koloro alt"]
local stilo = args["stilo"] or "1"
local bildo_grando = args["bildo-grando"]
local shablononomo = args["ŝablononomo"] or args["ŝablono-nomo"]
local kolumnoj = args["kolumnoj"]
local linisalto = args["linisalto"]
local largho = args["larĝo"]
local kesta_klaso = args["kesta klaso"] or ""
local css_stiloj = args["style"] or args["css-stiloj"] or ""
local subshablono = args["subŝablono"]
-- parametroj por la titola linio
local titola_koloro = args["titola koloro"] or "6"
local titola_stilo = args["titola stilo"] or ""
local titola_klaso = args["titola klaso"] or "io"
local tekstogrando = args["tekstogrando"] or '150%'
local skribogrando = args["skribogrando"] or '100%'
local tiparapezo = args["tipara pezo"]
local subshablona_klaso = args["subŝablona klaso"]
local shtopado = args["ŝtopado"]
local s = ""
if linisalto == "jes" then
s = "\n"
end
local tabelo = ""
if teksto ~="" and teksto ~= nil and (bildo == "" or bildo == nil) and etikedo~="--tabelo--" and etikedo~="--komenco--" then
if etikedo == "+" then
tabelo = s .. "<tr "
elseif etikedo == "*" then
tabelo = s .. "</tr "
else
tabelo = mw.html.create("tr") -- s .. "|-"
--tabelo = s .. "|-"
end
if etikedo == "" then
local chelo = tabelo:tag("td")
chelo:attr("colspan","2")
chelo:css("text-align","center")
-- tabelo = tabelo .. "\n" .. '| colspan="2" style="text-align:center;"'
if klaso ~= "" and klaso ~= nil then
chelo:addClass(klaso)
-- tabelo = tabelo .. ' class="' .. klaso .. '" '
end
chelo:wikitext(teksto)
--tabelo = tabelo .. '| ' .. teksto
return tostring(tabelo)
elseif etikedo == "-" or etikedo == "bildo" then
if klaso ~= "" and klaso ~= nil then
tabelo:addClass(klaso)
-- tabelo = tabelo .. ' class="' .. klaso .. '" '
end
-- tabelo = tabelo .. "\n"
local chelo = tabelo:tag("th")
chelo:attr("colspan","2")
-- tabelo = tabelo .. '! colspan="2" '
chelo:css("text-align","center")
-- tabelo = tabelo .. 'style="text-align:center; '
local f = fono_malfono(koloro,fono,malfono)
if f ~= "" and f ~= nil then
chelo:attr("style",f)
chelo:css("text-align","center")
-- tabelo = tabelo .. f
else
if koloro_alt ~= "" and koloro_alt ~= nil then
chelo:css("background-color",koloro_alt)
-- tabelo = tabelo .. 'background-color:' .. koloro_alt .. '; '
local testo = kolorkontrasta_rilatumo('black',koloro_alt)
testo = tonumber(testo)
if type(testo) == "number" and testo < 4.5 then
chelo:css("color","white")
--tabelo = tabelo .. 'color: white;'
end
end
end
chelo:wikitext(teksto)
--tabelo = tabelo .. '"' .. '| ' .. teksto
return tostring(tabelo)
-- aldono kompare al al ĝisnuna ŝablono {{informkesto/+}}
elseif (etikedo == "ŝŝ" or etikedo == "--piedlinio--" or etikedo == "--ligilaro--") and (subshablono == "" or subshablono == nil) then
local f = fono_malfono(koloro,fono,malfono)
local shablono = ""
local linio_alteco = args["linio-alteco"]
if f ~= "" and f ~= nil then
-- tabelo = tabelo .. f
-- shablono = changetemplate(teksto,"","",klaso,f,"inherit !important")
--shablono = changetemplate(teksto,"","",klaso,f,f)
shablono = p._ligilaro(teksto,"","",piedkadro,klaso,f,f,"",kolumnoj, klaso2, linio_alteco)
else
if koloro_alt ~= "" and koloro_alt ~= nil then
-- tabelo = tabelo .. 'background-color:' .. koloro_alt .. '; '
-- shablono = changetemplate(teksto,koloro_alt,"",klaso,"","")
shablono = p._ligilaro(teksto,koloro_alt,"",piedkadro,klaso,"","","",kolumnoj, klaso2, linio_alteco)
end
end
tabelo:wikitext(shablono)
--tabelo = tabelo .. '\n' .. shablono
return tostring(tabelo)
-- aldono kompare al la ĝisnuna ŝablono {{informkesto/+}}, normala uzo
elseif (etikedo == "--kaplinio--" or etikedo == "--titolo--") and (subshablono == "" or subshablono == nil) then
tabelo:css("font-size","110%")
tabelo:css("text-align","center")
-- tabelo = tabelo .. ' style="font-size:110%; text-align:center;"\n'
local chelo = tabelo:tag("th")
chelo:attr("colspan","2")
-- tabelo = tabelo .. '! colspan="2" '
-- tabelo = tabelo .. ' style="'
local tkoloro = koloroj(titola_koloro)
chelo:css("background-color",tkoloro)
-- tabelo = tabelo .. 'background-color:' .. tkoloro .. '; '
chelo:css("padding-left","0.5em")
chelo:css("padding-right","0.5em")
-- tabelo = tabelo .. 'padding-left:0.5em; padding-right:0.5em;'
local f = fono_malfono(koloro,fono,malfono)
if f ~= "" and f ~= nil then
-- tabelo = tabelo .. f
end
if kapkadro ~= "" and kapkadro ~= nil then
chelo:css('border',kapkadro)
end
-- tabelo = tabelo .. titola_stilo .. '" '
chelo:addClass("kaplinio")
chelo:addClass(titola_klaso)
-- tabelo = tabelo .. 'class="kaplinio ' .. titola_klaso
chelo:wikitext(teksto)
-- tabelo = tabelo .. '" ' .. '| ' .. teksto
return tostring(tabelo)
-- aldono kompare al la ĝisnuna ŝablono {{informkesto/+}}, subŝablona uzo
elseif (etikedo == "--kaplinio--" or etikedo == "--titolo--") and subshablono ~= "" and subshablono ~= nil then
local chelo = tabelo:tag("th")
chelo:attr("colspan","2")
chelo:css("text-align","center")
-- tabelo = tabelo .. '\n! colspan="2" style="text-align:center; background-color:'
if fono ~= "" and fono ~= nil then
chelo:css("background-color",fono)
-- tabelo = tabelo .. fono
else
chelo:css("background-color","#ddd")
-- tabelo = tabelo .. '#ddd; '
end
if malfono ~= "" and malfono ~= nil then
chelo:css("color",malfono)
-- tabelo = tabelo .. 'color:' .. malfono .. '; '
end
if kapkadro ~= "" and kapkadro ~= nil then
chelo:css('border',kapkadro)
end
chelo:css("font-size",tekstogrando)
-- tabelo = tabelo .. 'font-size:' .. tekstogrando .. '; '
chelo:css("line-height","1.5")
-- tabelo = tabelo .. 'line-height:1.5;" '
if subshablona_klaso ~= "" and subshablona_klaso ~= nil then
chelo:addClass(subshablona_klaso)
-- tabelo = tabelo .. 'class="' .. subshablona_klaso .. '"'
end
tabelo:wikitext(subshablono)
-- tabelo = tabelo .. ' | ' .. subshablono
return tostring(tabelo)
elseif etikedo == "+" then
tabelo = tabelo .. 'style="background-color:transparent;"'
if klaso ~= "" and klaso ~= nil then
tabelo = tabelo .. ' class="' .. klaso .. '" '
end
tabelo = tabelo .. ">"
--tabelo = tabelo .. "\n"
tabelo = tabelo .. '<th colspan="2" '
--tabelo = tabelo .. '! colspan="2" '
tabelo = tabelo .. 'style="text-align:center; '
-- por la ŝablono {{informkesto geografiaĵo}}, ĉar alie la maldekstra ŝtopado estas pli larĝa ol la dekstra.
if shtopado ~= "" and shtopado ~= nil then
tabelo = tabelo .. 'padding: ' .. shtopado .. '; '
end
-- por malaperigi la strangan "grasan tekston" en aliaj informkestoj
if skribogrando ~= "" and skribogrando ~= nil then
tabelo = tabelo .. 'font-size: ' .. skribogrando .. '; '
end
if tiparapezo ~= "" and tiparapezo ~= nil then
tabelo = tabelo .. 'font-weight: ' .. tiparapezo .. '; '
end
if koloro_alt ~= "" and koloro_alt ~= nil then
tabelo = tabelo .. 'background-color:' .. koloro_alt .. '; '
end
tabelo = tabelo .. '" '
tabelo = tabelo .. '>'
--tabelo = tabelo .. '| \n'
tabelo = tabelo .. '<table '
-- tabelo = tabelo .. '{| '
local kl = 'class="'
if stilo == "2" then
kl = kl .. 'toccolours '
elseif stilo == "3" then
kl = kl .. 'prettytable '
elseif stilo == "" or stilo == nil or stilo == "1" then
kl = kl .. 'infobox '
else
-- ĉe iuj sensencaj valoroj tamen funkciu la defaŭlta "1"
kl = kl .. 'infobox '
end
kl = kl .. 'collapsible collapsed"'
tabelo = tabelo .. kl
tabelo = tabelo .. ' width=100% style="padding:0;">'
--tabelo = tabelo .. ' width=100%\n'
tabelo = tabelo .. '<tr>'
--tabelo = tabelo .. '|-\n'
tabelo = tabelo .. '<th colspan="2" '
--tabelo = tabelo .. '! colspan="2" '
tabelo = tabelo .. 'style="text-align:center; '
local f = fono_malfono(koloro,fono,malfono)
if f ~= "" and f ~= nil then
tabelo = tabelo .. f
end
-- por truke ebligi, ke la teksto restas pli malpli centra. alie la ligilo por kaŝado ŝovas ĝin maldekstren.
local truko = '<div style="float:left; width:6em;text-align:left;"> </div>'
tabelo = tabelo .. '"' .. '> ' .. truko .. teksto
-- tabelo = tabelo .. '"' .. '| ' .. teksto
tabelo = tabelo .. '</th></tr>'
return tabelo
elseif etikedo == "*" then
tabelo = '</table>' .. tabelo .. '>'
--tabelo = tabelo .. '\n|}\n'
return tabelo
elseif etikedo == "nenio" then
return ""
elseif etikedo == "enhavo" then
tabelo:attr("colspan","2")
tabelo:css("background-color","transparent")
-- tabelo = tabelo .. '\n! colspan="2" style="background-color:transparent;'
if klaso ~="" and klaso ~= nil then
tabelo:addClass(klaso)
--tabelo = tabelo .. ' class="' .. klaso .. '" '
end
tabelo:wikitext(teksto)
--tabelo = tabelo .. '| \n' .. teksto
return tostring(tabelo)
elseif etikedo ~= nil then
local chelo1 = tabelo:tag("th")
-- tabelo = tabelo .. '\n!'
local st = ""
if stilo == 2 then
chelo1:css("vertical-align","top")
--st = ' style="vertical-align:top;" '
end
if kadro ~= "" and kadro ~= nil then
chelo1:css("border",kadro)
end
-- tabelo = tabelo .. st
local k1 = ""
if klaso ~= "" and klaso ~= nil then
chelo1:addClass(klaso)
-- k1 = ' class="' .. klaso .. '" '
end
-- tabelo = tabelo .. k1
if st ~= "" or k1 ~= "" then
-- tabelo = tabelo .. ' | '
end
chelo1:wikitext(etikedo)
-- tabelo = tabelo .. etikedo .. '\n'
-- tabelo = tabelo .. '| ' .. st .. k1
local chelo2 = tabelo:tag("td")
if st ~= "" or k1 ~= "" then
-- tabelo = tabelo .. ' | '
end
local m1 = ""
local m2 = ""
local span = chelo2:tag("span")
if mikro ~= "" and mikro ~= nil then
span:addClass(mikro)
-- m1 = '<span class="' .. mikro .. '">'
-- m2 = '</span>'
span:wikitext(teksto)
else
chelo2:wikitext(teksto)
end
-- tabelo = tabelo .. m1 .. teksto .. m2
return tostring(tabelo)
end
elseif bildo ~= "" and bildo ~= nil and etikedo == "bildo" then
tabelo = mw.html.create("tr")
--tabelo = s .. "|-"
local chelo = tabelo:tag("th")
chelo:attr("colspan","2")
chelo:css("text-align","center")
-- tabelo = tabelo .. '\n! colspan="2" style="text-align:center; background-color:'
if fono ~= "" and fono ~= nil then
chelo:css("background-color",fono)
-- tabelo = tabelo .. fono .. '; '
else
chelo:css("background-color","#f2f2f4")
-- tabelo = tabelo .. '#f2f2f4; '
end
if klaso ~= "" and klaso ~= nil then
chelo:addClass(klaso)
-- tabelo = tabelo .. ' class="' .. klaso .. '" '
end
-- tabelo = tabelo .. '|'
-- bilda modulo
local b = bildoj.InfoboxImage({args={image=bildo,size=bildo_grando,sizedefault="120px",sizedefault="frameless",suppressplaceholder="yes",center="yes", alt=teksto} })
if b ~= nil then
chelo:wikitext(b)
-- tabelo = tabelo .. b
end
if teksto ~= "" and teksto ~= nil then
local priskribo = chelo:tag("div")
priskribo:wikitext(teksto)
-- tabelo = tabelo .. '<div>' .. teksto .. '</div>'
end
return tostring(tabelo)
-- aldono kompare al la ĝisnuna ŝablono {{informkesto/+}}
elseif (etikedo == "--tabelo--" or etikedo == "--komenco--") and (subshablono == "" or subshablono == nil) then
tabelo = s .. '{| '
local kl = 'class="'
if stilo == "2" then
kl = kl .. 'toccolours ' .. kesta_klaso
elseif stilo == "3" then
kl = kl .. 'prettytable ' .. kesta_klaso
elseif stilo == "" or stilo == nil or stilo == "1" then
kl = kl .. 'infobox ' .. kesta_klaso
else
-- ĉe iuj sensencaj valoroj tamen funkciu la defaŭlta "1"
kl = kl .. 'infobox ' .. kesta_klaso
end
tabelo = tabelo .. kl
tabelo = tabelo .. '" style="'
if stilo == "2" or stilo == "3" then
tabelo = tabelo .. 'float:right; clear:right; margin-left:1em;'
end
tabelo = tabelo .. 'font-size:90%; text-align:left;'
if css_stiloj ~= "" then
tabelo = tabelo .. css_stiloj
end
if largho ~= "" and largho ~= nil then
tabelo = tabelo .. 'width:' .. largho .. '\n'
else
tabelo = tabelo .. 'min-width:190px; max-width:260px; width:30%;\n'
end
return tabelo
elseif etikedo == "*" and (bildo == "" or bildo == nil) then
-- tabelo = tabelo .. '|-\n'
tabelo = tabelo .. '</table></tr>'
-- tabelo = tabelo .. '|}'
return tabelo
end
end
-- por tri koloroj
function p.koloroj(frame)
-- This function builds the colors for some templates and modules.
if not getArgs then
getArgs = require("Module:Arguments").getArgs
end
--local args = getArgs(frame, {wrappers = "Template:Babel"})
local args = getArgs(frame, {wrappers = {"Ŝablono:Informkesto/provejo","Ŝablono:Informkesto","Ŝablono:Informkesto fervojlinio"}})
local koloro=args['koloro']
local fono=args['fono']
local malfono=args['malfono']
local kruda=args['kruda']
return fono_malfono(koloro, fono, malfono, kruda)
end
return p