Modul:Bild: Unterschied zwischen den Versionen

Aus FürthWiki

4.171 Bytes hinzugefügt ,  Donnerstag um 17:16
fix GalerieBilderAusblendungTabelle()
(+ Debug)
(fix GalerieBilderAusblendungTabelle())
 
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 6: Zeile 6:
local wik = require("Modul:Wiki")
local wik = require("Modul:Wiki")
local smw = require("Modul:SMW")
local smw = require("Modul:SMW")
local htm = require("Modul:HTML")
local kal = require("Modul:Kalender")


local n_bilder_limit = 200
local n_bilder_limit = 200
local abfrage = "Abfrage Bilder" -- Formular/Vorlage-Seitenname ggf. mit "/Work"
local abfrage = "Abfrage Bilder" -- Formular/Vorlage-Seitenname ggf. mit "/Work"
p.gba_basepagename = "FürthWiki:Galerie-Bilder-Ausblendung"


function p.Galerie(frame)
function p.Galerie(frame)
-- mw.log("Galerie(frame)")
-- mw.log("Galerie(frame)")
-- mw.logObject(frame, "frame")
-- mw.logObject(frame.args, "frame.args")
-- Kommando-Zeile zum Debuggen:
-- Kommando-Zeile zum Debuggen:
-- frame=mw.getCurrentFrame(); frame.args={["attr"]="Person;Straße",["val"]="Karl Rothammel;Erlanger Straße",["attr_zeige_nicht"]="ZN",["sort"]="Seite",["order"]="asc"}; print(p.Galerie(frame))
-- frame=mw.getCurrentFrame(); frame.args={["pagename"]="Wolfringstraße";["attr"]="Person;Straße",["val"]="Karl Rothammel;Erlanger Straße",["attr_zeige_nicht"]="ZeigeNichtInStraße;ZeigeNichtInOrt",["sort"]="Seite",["order"]="asc"}; print(p.Galerie(frame))
local t = ""
local t = ""
local pagename = frame.args["pagename"] or wik.pagename() -- args.pagename zum Debuggen
-- Argumente holen und ggf. default setzen
-- Argumente holen und ggf. default setzen
local args = wik.getArgs(frame.args, {"attr", "val", "attr_zeige_nicht", "sort", "order"})
local args = wik.getArgs(frame.args, {"attr", "val", "attr_zeige_nicht", "sort", "order"})
args.sort = args.sort or "Erstellungsdatum, Seite"
args.sort = args.sort or "Erstellungsdatum, Seite"
args.order = args.order or "desc, asc"
args.order = args.order or "desc, asc"
-- Seiten-Selektor
local selector = ""
local pagename = wik.pagename()
args.attr = str.splitAndStrip(args.attr, ";")
args.attr = str.splitAndStrip(args.attr, ";")
args.val = str.splitAndStrip(args.val or "", ";")
args.val = str.splitAndStrip(args.val or "", ";")
for i = 1, #args.attr do -- default pagename setzen, wenn val nicht angegeben
args.val[i] = args.val[i] or pagename
end
args.attr_zeige_nicht = str.splitAndStrip(args.attr_zeige_nicht or "", ";")
args.attr_zeige_nicht = str.splitAndStrip(args.attr_zeige_nicht or "", ";")
for i, a in ipairs(args.attr) do
-- Galerie-Bilder-Ausblendung-Seite ermitteln
args.val[i] = args.val[i] or pagename
local gba_pagename = p.gba_basepagename .. "/" .. pagename
if selector ~= "" then
if not wik.pageExists(gba_pagename) then
selector = selector .. " OR "
gba_pagename = nil
end
end
selector = selector ..  
-- Bilder-Seiten-Selektor zusammenbauen
"[[Datei:+]][[Kategorie:Bilder]]" ..
local selector = ""
"[[" .. a .. "::" .. args.val[i] .. "]]"
if gba_pagename ~= nil then
if args.attr_zeige_nicht[i] ~= nil then
selector = selector .. "[[-has subobject::" ..
selector = selector .. "[[" .. args.attr_zeige_nicht[i] .. "::!Ja]]"
gba_pagename .. "]]"
else
for i, a in ipairs(args.attr) do
if selector ~= "" then
selector = selector .. " OR "
end
selector = selector ..  
"[[Datei:+]][[Kategorie:Bilder]]" ..
"[[" .. a .. "::" .. args.val[i] .. "]]"
a = args.attr_zeige_nicht[i]
if a ~= nil then
selector = selector .. "[[" .. a .. "::!Ja]]"
end
end
end
end
end
-- mw.logObject(selector, "selector")


-- Bilder-Anzahl
-- Bilder-Anzahl
Zeile 46: Zeile 59:
t = t .. "{{#set:Bilderanzahl=" .. n_bilder .. "}}"
t = t .. "{{#set:Bilderanzahl=" .. n_bilder .. "}}"
if n_bilder == 0 then
if n_bilder == 0 then
t = t ..
mw.smw.set{["Wartungsmeldung"]="Bilder-Galerie leer"}
-- "Keine Bilder gefunden" ..
"[[Kategorie:Hat leere Bilder-Galerie]]"
else
else
-- Abfrage-Link-Teile
-- Abfrage-Link-Teile
local queryformlink_part1 =
local queryformlink_part1 = -- to do: sehr umständlich umgesetzt. Besser mit table arbeiten
"{{#queryformlink:" ..
"{{#queryformlink:" ..
"form=" .. abfrage ..
"form=" .. abfrage ..
Zeile 78: Zeile 88:
"&" .. abfrage .. "[attr_op]=oder" ..
"&" .. abfrage .. "[attr_op]=oder" ..
"&_run}}"
"&_run}}"
-- Bilder ausblenden Link
if wik.pageExists(gba_pagename) then
t = t .. "<div style=\"float:right\"><small>" ..
"<nowiki>[</nowiki>[[" .. gba_pagename ..
"|Bilder ausblenden]]<nowiki>]</nowiki> " ..
"(" .. n_bilder .. " vorhanden)" ..
"</small></div>"
end


-- Bilder-Galerie und Abfrage-Links
-- Bilder-Galerie und Abfrage-Links
Zeile 86: Zeile 105:
queryformlink_part2 .. "Galerie" .. -- format
queryformlink_part2 .. "Galerie" .. -- format
queryformlink_part3 .. "1" .. -- erstes Bild
queryformlink_part3 .. "1" .. -- erstes Bild
queryformlink_part4 .. n_bilder_limit ..
queryformlink_part4 .. n_bilder_limit .. -- Bilderanzahl
queryformlink_part5 .. " / " ..
queryformlink_part5 .. " / " ..
queryformlink_part1 .. "Tabelle" .. -- link text
queryformlink_part1 .. "Tabelle" .. -- link text
queryformlink_part2 .. "Tabelle" .. -- format
queryformlink_part2 .. "Tabelle" .. -- format
queryformlink_part3 .. "1" .. -- erstes Bild
queryformlink_part3 .. "1" .. -- erstes Bild
queryformlink_part4 .. n_bilder_limit ..
queryformlink_part4 .. n_bilder_limit .. -- Bilderanzahl
queryformlink_part5 ..
queryformlink_part5 ..
" anzeigen, sortieren und filtern'''"
" anzeigen, sortieren und filtern'''"
Zeile 97: Zeile 116:
t = t .. -- die eigentliche Galerie
t = t .. -- die eigentliche Galerie
"{{#ask:" .. selector ..  
"{{#ask:" .. selector ..  
"|?Dateiinfo" ..
"|mainlabel=-" ..
"|?Seite" ..
"|?Seite.Dateiinfo" ..
"|sort=" .. args.sort ..
"|sort=" .. args.sort ..
"|order=" .. args.order ..
"|order=" .. args.order ..
Zeile 108: Zeile 129:
queryformlink_part1 .. "... weitere Bilder anzeigen" .. -- link text
queryformlink_part1 .. "... weitere Bilder anzeigen" .. -- link text
queryformlink_part2 .. "Galerie" .. -- format
queryformlink_part2 .. "Galerie" .. -- format
queryformlink_part3 .. (1) .. -- erstes Bild
queryformlink_part3 .. "1" .. -- erstes Bild
queryformlink_part4 .. 500 ..
queryformlink_part4 .. "500" .. -- Bilderanzahl
queryformlink_part5 ..
queryformlink_part5
"[[Kategorie:Hat volle Bilder-Galerie]]"
mw.smw.set{["Wartungsmeldung"]="Bilder-Galerie übervoll"}
end
end


end -- if n_bilder == 0 then ... else ...
end -- if n_bilder == 0 then ... else ...
-- Attribute setzen
local galerie_attribut = {}
for i, a in ipairs(args.attr) do
galerie_attribut[i] = "Attribut:" .. a
end
mw.smw.set{["GalerieAttribut"] = galerie_attribut}


-- mw.logObject(t, "t")
-- mw.logObject(t, "t")
Zeile 122: Zeile 150:


function p.Abfrage(frame)
function p.Abfrage(frame)
-- mw.log("Abfrage(frame)")
-- mw.logObject(Abfrage, "frame")
-- Kommando-Zeile zum Debuggen:
-- p.Galerie{pargs={["attr"]="Person;Straße",["val"]="Karl Rothammel;Erlanger Straße",["attr_zeige_nicht"]="ZN",["sort"]="Seite",["chron_order"]="absteigend"}}
local t = ""
local t = ""
local frame, pargs = dev.GetFrameAndParentArgs(frame)
local frame, pargs = dev.GetFrameAndParentArgs(frame)


Zeile 136: Zeile 159:
end
end
if not com.isEmpty(pargs["Erstellungsdatum bis"]) then
if not com.isEmpty(pargs["Erstellungsdatum bis"]) then
selector = selector .. "[[Erstellungsdatum::<=" .. smw.dateLastDayCompleter(pargs["Erstellungsdatum bis"]) .. "]]"
selector = selector .. "[[Erstellungsdatum::<=" .. kal.dateLastDayCompleter(pargs["Erstellungsdatum bis"]) .. "]]"
end
end
if not com.isEmpty(pargs["Über Datum von"]) then
if not com.isEmpty(pargs["Über Datum von"]) then
Zeile 142: Zeile 165:
end
end
if not com.isEmpty(pargs["Über Datum bis"]) then
if not com.isEmpty(pargs["Über Datum bis"]) then
selector = selector .. "[[ÜberDatum::<=" .. smw.dateLastDayCompleter(pargs["Über Datum bis"]) .. "]]"
selector = selector .. "[[ÜberDatum::<=" .. kal.dateLastDayCompleter(pargs["Über Datum bis"]) .. "]]"
end
end
if not com.isEmpty(pargs["Straße"]) then
if not com.isEmpty(pargs["Straße"]) then
Zeile 164: Zeile 187:
if not com.isEmpty(pargs["Beschreibung"]) then
if not com.isEmpty(pargs["Beschreibung"]) then
selector = selector .. "[[Beschreibung::" .. smw.uniFilter(pargs["Beschreibung"]) .. "]]"
selector = selector .. "[[Beschreibung::" .. smw.uniFilter(pargs["Beschreibung"]) .. "]]"
end
if not com.isEmpty(pargs["Dateiname"]) then
selector = selector .. "[[Seite::" .. smw.uniFilter(pargs["Dateiname"]) .. "]]"
end
end
if not com.isEmpty(pargs["Genre"]) then
if not com.isEmpty(pargs["Genre"]) then
Zeile 197: Zeile 223:


-- Die eigentliche Ergebnis-Anzeige
-- Die eigentliche Ergebnis-Anzeige
t = t ..
local args = {selector}
"{{#ask:" .. selector ..
args["sort"] = "Erstellungsjahr,Seite"
"|sort=Erstellungsjahr,Seite"
if pargs["chron_order"] == "aufsteigend" then
if pargs["chron_order"] == "aufsteigend" then
t = t .. "|order=asc,asc"
args["order"] = "asc,asc"
else
else
t = t .. "|order=desc,asc"
args["order"] = "desc,asc"
end
end
if pargs["format"] == "Tabelle" then
if pargs["format"] == "Tabelle" then
t = t ..
for _, a in ipairs{"Beschreibung", "Ort", "Straße",
"|?Beschreibung|?Ort|?Straße|?Erstellungstag|?Erstellungsjahr|?Urheber|?Quellangaben|?Lizenz|?Signatur" ..
"Erstellungstag", "Erstellungsjahr", "Urheber",
"|mainlabel=Bild" ..
"Quellangaben", "Lizenz", "Signatur"} do
"|format=table"
table.insert(args, "?" .. a)
end
args["mainlabel"] = "Bild"
args["format"] = "table"
else
else
t = t ..
table.insert(args, "?Dateiinfo")
"|?Dateiinfo" ..
args["format"] = "gallery"
"|link=all" ..
args["searchlabel"] = "" -- erstmal kein "... weitere Ergebnisse anzeigen" => to do
"|format=gallery" ..
"|searchlabel=" -- erstmal kein "... weitere Ergebnisse anzeigen" => to do
end
if not com.isEmpty(pargs["limit"]) then
t = t .. "|limit=" .. pargs["limit"]
end
end
args["limit"] = pargs["limit"]
if not com.isEmpty(pargs["bild1"]) then
if not com.isEmpty(pargs["bild1"]) then
t = t .. "|offset=" .. ((tonumber(pargs["bild1"]) or 1) - 1)
args["offset"] = ((tonumber(pargs["bild1"]) or 1) - 1)
end
end
t = t .. "}}"
t = t .. frame:callParserFunction("#ask", args)
end
end


t = t .. "<br>" .. (pargs["Erstellungsdatum bis"] or "") .. "<br>"
t = frame:preprocess(t)
return t
end
 
function p.GalerieBilderAusblendungTabelle(frame)
t = ""
-- Seiten mit übervollen Bilder-Galerien abfragen
local query = {"[[:+]][[Bilderanzahl::>" .. (n_bilder_limit + 1 ) .."]]",
"?#-", "?Bilderanzahl", "?KlassenName", "?Kategorie#-",
"?GalerieAttribut#-",
mainlabel = "-", sort = "Bilderanzahl", order = "desc", limit = 200}
uebervolle_seiten = mw.smw.ask(query) or {}
-- Unterseiten
query = {"[[Seite::~" .. p.gba_basepagename .. "/*]]",
"?#-", limit = 10000, mainlabel = "-"}
query = mw.smw.ask(query) or {}
for _, q in ipairs(query) do
q = string.sub(q[1], #p.gba_basepagename + 2)
local query2 = {"[[" .. q .."]]" ..
"[[Bilderanzahl::<" .. n_bilder_limit .."]]",
"?Bilderanzahl", "?KlassenName", "?Kategorie#-", "?GalerieAttribut#-"}
query2 = mw.smw.ask(query2)
if query2 ~= nil then
table.insert(uebervolle_seiten, {q,
["Bilderanzahl"] = query2[1]["Bilderanzahl"],
["KlassenName"] = query2[1]["KlassenName"],
["Kategorie"] = query2[1]["Kategorie"],
["GalerieAttribut"] = query2[1]["GalerieAttribut"]})
end
end
-- Tabelle zusammenbauen
if #uebervolle_seiten == 0 then
t = t .. "'''Es wurden keine Seiten gefunden'''\n"
else
t = t .. "'''" .. #uebervolle_seiten .. " Seiten gefunden'''\n"
local hidden_categories = wik.getHiddenCategories()
t = t .. htm.tableHeader{
"Seite", "Bilderanzahl", "Klasse<sup>1)</sup>",
"Galerie-Attribute<sup>2)</sup>", "Kategorien", "Bilder ausblenden"}
for _, u in ipairs(uebervolle_seiten) do
local lemma = u[1]
-- KlassenName
local klassen = u["KlassenName"] or {}
if type(klassen) ~= "table" then
klassen = {klassen}
end
klassen = table.concat(klassen, ", ")
-- Kategorie
local kategorien = u["Kategorie"] or {}
if type(kategorien) ~= "table" then
kategorien = {kategorien}
end
local kategorien_tmp = {}
for _, k in ipairs(kategorien) do
if not hidden_categories[k] then
k = "[[:" .. k .. "|" .. string.sub(k, 11) .. "]]"
table.insert(kategorien_tmp, k)
end
end
kategorien = table.concat(kategorien_tmp, ", ")
-- GalerieAttribut
local galerie_attr = u["GalerieAttribut"] or {}
if type(galerie_attr) ~= "table" then
galerie_attr = {galerie_attr}
end
local galerie_attr_tmp = {}
for _, g in ipairs(galerie_attr) do
g = "[[:" .. g .. "|" .. string.sub(g, 10) .. "]]"
table.insert(galerie_attr_tmp, g)
end
galerie_attr = table.concat(galerie_attr_tmp, ", ")
local gba_link =
"[[" .. p.gba_basepagename .. "/" .. lemma .. "|Hier]]"
t = t .. htm.tableLine{"[[" .. lemma .. "]]",
{u["Bilderanzahl"], td_args = "style=\"text-align: center;\""},
{klassen, td_args = "style=\"text-align: center;\""},
{galerie_attr, td_args = "style=\"text-align: center;\""},
kategorien,
{gba_link, td_args = "style=\"text-align: center;\""}}
end
t = t .. htm.tableFooter()
t = t .. "'''Anmerkungen:'''\n"
t = t .. ": 1) Entspricht <code><nowiki>{{...}}</nowiki></code>\n"
t = t .. ": 2) Entspricht <code><nowiki>{{Bilder dies...}}</nowiki></code>\n"
end


-- t = t .. "<nowiki>" .. t .. "</nowiki>"
-- mw.logObject(t, "t")
t = frame:preprocess(t)
t = frame:preprocess(t)
return t
return t