Modul:Briefspielnews: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(25 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 8: | Zeile 8: | ||
local y,m,d,h,i,s=str:match("(%d%d%d%d)-(%d?%d?)-(%d?%d?)T(%d?%d?):(%d?%d?):(%d?%d?)") | local y,m,d,h,i,s=str:match("(%d%d%d%d)-(%d?%d?)-(%d?%d?)T(%d?%d?):(%d?%d?):(%d?%d?)") | ||
return os.time({year=y,month=m,day=d,hour=h,min=i,sec=s}) | return os.time({year=y,month=m,day=d,hour=h,min=i,sec=s}) | ||
end | |||
--Hole Details zu einer Briefspielreihe | |||
function holeReihenDetails(reihe) | |||
local reihendetails=mw.smw.ask("{{#ask: [["..reihe.."]]" | |||
.."|?#-=Reihe" | |||
.."|?Kurzbeschreibung#" | |||
.."|?Wappen ist#" | |||
.."|?Reihenautoren" | |||
.."|limit=1" | |||
.."|offset=0" | |||
.."|searchlabel=") | |||
if reihendetails==nil then | |||
return { | |||
[1]={ | |||
["Kurzbeschreibung"]="", | |||
["Reihe"]=reihe, | |||
["Reihenautoren"]="", | |||
["Wappen ist"]="Datei:Wappen blanko.svg" | |||
} | |||
} | |||
end | |||
if reihendetails[1]["Kurzbeschreibung"]==nil then | |||
reihendetails[1]["Kurzbeschreibung"]="" | |||
end | |||
if reihendetails[1]["Reihe"]==nil then | |||
reihendetails[1]["Reihe"]=reihe | |||
end | |||
if reihendetails[1]["Reihenautoren"]==nil then | |||
reihendetails[1]["Reihenautoren"]="" | |||
end | |||
if reihendetails[1]["Wappen ist"]==nil then | |||
reihendetails[1]["Wappen ist"]="Datei:Wappen blanko.svg" | |||
end | |||
return reihendetails | |||
end | end | ||
Zeile 62: | Zeile 97: | ||
--Gebe die Reihen aus | --Gebe die Reihen aus | ||
for r,rei in spairs(reihe,sortReihe) do | for r,rei in spairs(reihe,sortReihe) do | ||
local reihendetails=holeReihenDetails(r.." — Briefspielreihe") | |||
local rdiff=os.difftime(now,rei["Reihedatum"])/86400 | local rdiff=os.difftime(now,rei["Reihedatum"])/86400 | ||
local rclass="dunkel" | local rclass="dunkel" | ||
Zeile 67: | Zeile 103: | ||
rclass="hell" | rclass="hell" | ||
end | end | ||
result=result.."\n{| class=\"tabellehuebsch\" style=\"width:100%\" class=\"mw-collapsible mw-collapsed\"" | result=result.."\n{| class=\"tabellehuebsch\" style=\"width:100%;border-collapse:collapse\" class=\"mw-collapsible mw-collapsed\"" | ||
result=result.."\n|- class=\""..rclass.."\"" | result=result.."\n|- class=\""..rclass.."\"" | ||
result=result.."\n!style=\"width:10%;text-align:left\"|"..os.date("%Y-%m-%d",rei["Reihedatum"]) | result=result.."\n! style=\"width:5%;text-align:center;border-top:1px solid gray\"|[["..reihendetails[1]["Wappen ist"].."|x30px|link=]]" | ||
result=result.."\n! | result=result.."\n! style=\"width:10%;text-align:left;border-top:1px solid gray\"|"..os.date("%Y-%m-%d",rei["Reihedatum"]) | ||
result=result.."\n! style=\"width:20%;text-align:left;border-top:1px solid gray\"|[["..r.." — Briefspielreihe|"..r.."]]" | |||
result=result.."\n! style=\"width:40%;text-align:left;border-top:1px solid gray\"|"..reihendetails[1]["Kurzbeschreibung"] | |||
result=result.."\n! style=\"width:25%;text-align:left;border-top:1px solid gray;\"|"..reihendetails[1]["Reihenautoren"] | |||
for k,kap in spairs(rei["Kapitel"]) do | for k,kap in spairs(rei["Kapitel"]) do | ||
local diff=os.difftime(now,kap["Datum"])/86400 | local diff=os.difftime(now,kap["Datum"])/86400 | ||
Zeile 82: | Zeile 121: | ||
end | end | ||
result=result.."\n|- class=\""..class.."\"" | result=result.."\n|- class=\""..class.."\"" | ||
result=result.."\n|style=\"width: | result=result.."\n|style=\"width:5%;\"| " | ||
result=result.."\n|style=\"width:20% | result=result.."\n|style=\"width:10%\"|"..os.date("%Y-%m-%d",kap["Datum"]) | ||
result=result.."\n|style=\"width: | result=result.."\n|style=\"width:20%\"|[["..kap["Kapitel"].."|"..kap["Kapitelname ist"].."]]" | ||
result=result.."\n|style=\"width:65%\" colspan=\"2\"|"..kurzbeschreibung | |||
end | end | ||
result=result.."\n|}" | result=result.."\n|}" |
Aktuelle Version vom 8. Oktober 2024, 04:57 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Briefspielnews/Doku erstellt werden
require("Modul:Hilfsfunktionen") require("Modul:Text") local p = {} --wandelt ein ISO-Datum in ein Time-Object um function parseISO(str) local y,m,d,h,i,s=str:match("(%d%d%d%d)-(%d?%d?)-(%d?%d?)T(%d?%d?):(%d?%d?):(%d?%d?)") return os.time({year=y,month=m,day=d,hour=h,min=i,sec=s}) end --Hole Details zu einer Briefspielreihe function holeReihenDetails(reihe) local reihendetails=mw.smw.ask("{{#ask: [["..reihe.."]]" .."|?#-=Reihe" .."|?Kurzbeschreibung#" .."|?Wappen ist#" .."|?Reihenautoren" .."|limit=1" .."|offset=0" .."|searchlabel=") if reihendetails==nil then return { [1]={ ["Kurzbeschreibung"]="", ["Reihe"]=reihe, ["Reihenautoren"]="", ["Wappen ist"]="Datei:Wappen blanko.svg" } } end if reihendetails[1]["Kurzbeschreibung"]==nil then reihendetails[1]["Kurzbeschreibung"]="" end if reihendetails[1]["Reihe"]==nil then reihendetails[1]["Reihe"]=reihe end if reihendetails[1]["Reihenautoren"]==nil then reihendetails[1]["Reihenautoren"]="" end if reihendetails[1]["Wappen ist"]==nil then reihendetails[1]["Wappen ist"]="Datei:Wappen blanko.svg" end return reihendetails end --Hole die anzahl neuesten Kapitel neuer als alter function holeKapitel(anzahl,alter) local alternum=tonumber(alter) local mindat=os.time(); mindat=mindat-86400*alternum; local kapitel=mw.smw.ask("{{#ask: [[-has subobject::+]] [[Kapiteldatum::>"..os.date("%Y-%m-%d",mindat).."]]" .."|?#-=Kapitel" .."|?Kurzbeschreibung#" .."|?Kapitelname ist" .."|?Reihe ist" .."|?Kapiteldatum#ISO" .."|limit="..anzahl .."|order=desc" .."|sort=Kapiteldatum" .."|offset=0" .."|searchlabel=") if kapitel==nil then return {} end return kapitel end --Sortierfunktion für die Reihen function sortReihe(t,a,b) return t[b]["Reihedatum"]<t[a]["Reihedatum"] end --Formatierung der Ausgabe function ausgabe(kapitel,alter,highlight) local alternum=tonumber(alter) local highlightnum=tonumber(highlight) local result="" local now=os.time() local reihe={} --Teile die Kapitel auf die Reihen auf for k,kap in spairs(kapitel) do kap["Datum"]=parseISO(kap["Kapiteldatum"]) local r=kap["Reihe ist"] if reihe[r]==nil then reihe[r]={} reihe[r]["Kapitel"]={} reihe[r]["Reihedatum"]=kap["Datum"] end table.insert(reihe[r]["Kapitel"],kap) if kap["Datum"]>reihe[r]["Reihedatum"] then reihe[r]["Reihedatum"]=kap["Datum"] end end --Gebe die Reihen aus for r,rei in spairs(reihe,sortReihe) do local reihendetails=holeReihenDetails(r.." — Briefspielreihe") local rdiff=os.difftime(now,rei["Reihedatum"])/86400 local rclass="dunkel" if rdiff>highlightnum then rclass="hell" end result=result.."\n{| class=\"tabellehuebsch\" style=\"width:100%;border-collapse:collapse\" class=\"mw-collapsible mw-collapsed\"" result=result.."\n|- class=\""..rclass.."\"" result=result.."\n! style=\"width:5%;text-align:center;border-top:1px solid gray\"|[["..reihendetails[1]["Wappen ist"].."|x30px|link=]]" result=result.."\n! style=\"width:10%;text-align:left;border-top:1px solid gray\"|"..os.date("%Y-%m-%d",rei["Reihedatum"]) result=result.."\n! style=\"width:20%;text-align:left;border-top:1px solid gray\"|[["..r.." — Briefspielreihe|"..r.."]]" result=result.."\n! style=\"width:40%;text-align:left;border-top:1px solid gray\"|"..reihendetails[1]["Kurzbeschreibung"] result=result.."\n! style=\"width:25%;text-align:left;border-top:1px solid gray;\"|"..reihendetails[1]["Reihenautoren"] for k,kap in spairs(rei["Kapitel"]) do local diff=os.difftime(now,kap["Datum"])/86400 local kurzbeschreibung=kap["Kurzbeschreibung"] if kurzbeschreibung==nil then kurzbeschreibung="" end local class="dunkel" if diff>highlightnum then class="hell" end result=result.."\n|- class=\""..class.."\"" result=result.."\n|style=\"width:5%;\"| " result=result.."\n|style=\"width:10%\"|"..os.date("%Y-%m-%d",kap["Datum"]) result=result.."\n|style=\"width:20%\"|[["..kap["Kapitel"].."|"..kap["Kapitelname ist"].."]]" result=result.."\n|style=\"width:65%\" colspan=\"2\"|"..kurzbeschreibung end result=result.."\n|}" end return result end --Aufzurufende Funktion function p.news(frame) local anzahl=robusttrim(frame.args[1]) if(anzahl=='') then anzahl='10' end local alter=robusttrim(frame.args[2]) if(alter=='') then anzahl='7' end local highlight=robusttrim(frame.args[3]) if(highlight=='') then anzahl='30' end local kapitel=holeKapitel(anzahl,alter) return ausgabe(kapitel,alter,highlight) end return p