Modul:Bild/Work: Unterschied zwischen den Versionen
Aus FürthWiki
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| (17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 92: | Zeile 92: | ||
-- Bilder ausblenden Link | -- Bilder ausblenden Link | ||
if wik.pageExists(galerie_bilder_ausblendung_pagemame) then | |||
t = t .. "<div style=\"float:right\"><small>" .. | |||
"<nowiki>[</nowiki>[[" .. galerie_bilder_ausblendung_pagemame .. | |||
"|Bilder ausblenden]]<nowiki>]</nowiki> " .. | |||
"(" .. n_bilder .. " vorhanden)" .. | |||
"</small></div>" | |||
end | |||
-- Bilder-Galerie und Abfrage-Links | -- Bilder-Galerie und Abfrage-Links | ||
| Zeile 249: | Zeile 249: | ||
end | end | ||
function p.GalerieBilderAusblendungTabelle( | function p.GalerieBilderAusblendungTabelle() | ||
t = "" | t = "" | ||
-- | -- Seiten mit übervollen Bilder-Galerien abfragen | ||
local query = {"[[:+]][[Bilderanzahl::> | local query = {"[[:+]][[Bilderanzahl::>" .. (n_bilder_limit + 1 ) .."]]", | ||
"?#-", "?Bilderanzahl", "?KlassenName", "?Kategorie", | "?#-", "?Bilderanzahl", "?KlassenName", "?Kategorie#-", | ||
mainlabel = "-", sort = "Bilderanzahl", order = "desc", limit = 200} | mainlabel = "-", sort = "Bilderanzahl", order = "desc", limit = 200} | ||
uebervolle_seiten = mw.smw.ask(query) or {} | |||
-- Unterseiten | |||
query = {"[[Seite::~" .. galerie_bilder_ausblendung_basepagemame .. "/*]]", | |||
"?#-", limit = 10000, mainlabel = "-"} | |||
query = mw.smw.ask(query) or {} | query = mw.smw.ask(query) or {} | ||
if # | for _, q in ipairs(query) do | ||
t = t .. "'''Es wurden keine Seiten gefunden'''\n | q = string.sub(q[1], #galerie_bilder_ausblendung_basepagemame + 2) | ||
local query2 = {"[[" .. q .."]]" .. | |||
"[[Bilderanzahl::<" .. n_bilder_limit .."]]", | |||
"?Bilderanzahl", "?KlassenName", "?Kategorie#-"} | |||
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"]}) | |||
end | |||
end | |||
-- Tabelle zusammenbauen | |||
if #uebervolle_seiten == 0 then | |||
t = t .. "'''Es wurden keine Seiten gefunden'''\n" | |||
else | else | ||
t = t .. "'''" .. #uebervolle_seiten .. " Seiten gefunden'''\n" | |||
local hidden_categories = wik.getHiddenCategories() | |||
t = t .. htm.tableHeader{"Seite", "Bilderanzahl", "Klasse", "Kategorien", "Bilder ausblenden"} | t = t .. htm.tableHeader{"Seite", "Bilderanzahl", "Klasse", "Kategorien", "Bilder ausblenden"} | ||
for _, p in ipairs( | for _, p in ipairs(uebervolle_seiten) do | ||
t = t .. htm.tableLine{"[[" .. | local lemma = p[1] | ||
local klassen = p["KlassenName"] or {} | |||
if type(klassen) ~= "table" then | |||
klassen = {klassen} | |||
end | |||
klassen = table.concat(klassen, ", ") | |||
local kategorien = p["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, ", ") | |||
local gba_link = | |||
"[[" .. galerie_bilder_ausblendung_basepagemame .. "/" .. | |||
lemma .. "|Hier]]" | |||
t = t .. htm.tableLine{"[[" .. lemma .. "]]", | |||
{p["Bilderanzahl"], td_args = "style=\"text-align: center;\""}, | |||
{klassen, td_args = "style=\"text-align: center;\""}, | |||
kategorien, | |||
{gba_link, td_args = "style=\"text-align: center;\""}} | |||
end | end | ||
t = t .. htm.tableFooter() | t = t .. htm.tableFooter() | ||
Version vom 4. Februar 2026, 08:14 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Bild/Work/Doku erstellt werden
local p = {}
local com = require("Modul:Common")
local dev = require("Modul:Development")
local str = require("Modul:String")
local wik = require("Modul:Wiki")
local smw = require("Modul:SMW")
local htm = require("Modul:HTML")
local kal = require("Modul:Kalender")
local n_bilder_limit = 200
local abfrage = "Abfrage Bilder" -- Formular/Vorlage-Seitenname ggf. mit "/Work"
local galerie_bilder_ausblendung_basepagemame =
"FürthWiki:Galerie-Bilder-Ausblendung"
function p.Galerie(frame)
-- mw.log("Galerie(frame)")
-- mw.logObject(frame.args, "frame.args")
-- Kommando-Zeile zum Debuggen:
-- 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 pagename = frame.args["pagename"] or wik.pagename() -- args.pagename zum Debuggen
-- Argumente holen und ggf. default setzen
local args = wik.getArgs(frame.args, {"attr", "val", "attr_zeige_nicht", "sort", "order"})
args.sort = args.sort or "Erstellungsdatum, Seite"
args.order = args.order or "desc, asc"
args.attr = str.splitAndStrip(args.attr, ";")
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 "", ";")
-- Galerie-Bilder-Ausblendung-Seite ermitteln
local galerie_bilder_ausblendung_pagemame =
galerie_bilder_ausblendung_basepagemame .. "/" .. pagename
if not wik.pageExists(galerie_bilder_ausblendung_pagemame) then
galerie_bilder_ausblendung_pagemame = nil
end
-- Bilder-Seiten-Selektor zusammenbauen
local selector = ""
if galerie_bilder_ausblendung_pagemame ~= nil then
selector = selector .. "[[-has subobject::" ..
galerie_bilder_ausblendung_pagemame .. "]]"
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
-- Bilder-Anzahl
local n_bilder = mw.smw.ask(selector .. "|format=count")
t = t .. "{{#set:Bilderanzahl=" .. n_bilder .. "}}"
if n_bilder == 0 then
mw.smw.set{["Wartungsmeldung"]="Bilder-Galerie leer"}
else
-- Abfrage-Link-Teile
local queryformlink_part1 = -- to do: sehr umständlich umgesetzt. Besser mit table arbeiten
"{{#queryformlink:" ..
"form=" .. abfrage ..
"|link text="
local queryformlink_part2 =
"|query string="
for i, a in ipairs(args.attr) do
if a == "Straße" or a == "Ort" then
queryformlink_part2 = queryformlink_part2 ..
"&" .. abfrage .. "[" .. a .. "]=" .. args.val[i]
else
queryformlink_part2 = queryformlink_part2 ..
"&" .. abfrage .. "[attrname" .. i .. "]=" .. a ..
"&" .. abfrage .. "[attrval" .. i .. "]=" .. args.val[i]
end
end
queryformlink_part2 = queryformlink_part2 ..
"&" .. abfrage .. "[format]="
local queryformlink_part3 =
"&" .. abfrage .. "[bild1]="
local queryformlink_part4 =
"&" .. abfrage .. "[limit]="
local queryformlink_part5 =
"&" .. abfrage .. "[chron_order]=absteigend" ..
"&" .. abfrage .. "[attr_op]=oder" ..
"&_run}}"
-- Bilder ausblenden Link
if wik.pageExists(galerie_bilder_ausblendung_pagemame) then
t = t .. "<div style=\"float:right\"><small>" ..
"<nowiki>[</nowiki>[[" .. galerie_bilder_ausblendung_pagemame ..
"|Bilder ausblenden]]<nowiki>]</nowiki> " ..
"(" .. n_bilder .. " vorhanden)" ..
"</small></div>"
end
-- Bilder-Galerie und Abfrage-Links
if n_bilder >= 5 then
t = t ..
"'''Bilder als " ..
queryformlink_part1 .. "Galerie" .. -- link text
queryformlink_part2 .. "Galerie" .. -- format
queryformlink_part3 .. "1" .. -- erstes Bild
queryformlink_part4 .. n_bilder_limit .. -- Bilderanzahl
queryformlink_part5 .. " / " ..
queryformlink_part1 .. "Tabelle" .. -- link text
queryformlink_part2 .. "Tabelle" .. -- format
queryformlink_part3 .. "1" .. -- erstes Bild
queryformlink_part4 .. n_bilder_limit .. -- Bilderanzahl
queryformlink_part5 ..
" anzeigen, sortieren und filtern'''"
end
t = t .. -- die eigentliche Galerie
"{{#ask:" .. selector ..
"|mainlabel=-" ..
"|?Seite" ..
"|?Seite.Dateiinfo" ..
"|sort=" .. args.sort ..
"|order=" .. args.order ..
"|format=gallery" ..
"|limit=" .. n_bilder_limit ..
"|searchlabel=" ..
"}}"
if n_bilder > n_bilder_limit then
t = t ..
queryformlink_part1 .. "... weitere Bilder anzeigen" .. -- link text
queryformlink_part2 .. "Galerie" .. -- format
queryformlink_part3 .. "1" .. -- erstes Bild
queryformlink_part4 .. "500" .. -- Bilderanzahl
queryformlink_part5
mw.smw.set{["Wartungsmeldung"]="Bilder-Galerie übervoll"}
end
end -- if n_bilder == 0 then ... else ...
-- mw.logObject(t, "t")
t = frame:preprocess(t)
return t
end
function p.Abfrage(frame)
local t = ""
local frame, pargs = dev.GetFrameAndParentArgs(frame)
-- Selektor zusammenbauen
local selector = "[[Datei:+]][[Kategorie:Bilder]]"
if not com.isEmpty(pargs["Erstellungsdatum von"]) then
selector = selector .. "[[Erstellungsdatum::>=" .. pargs["Erstellungsdatum von"] .. "]]"
end
if not com.isEmpty(pargs["Erstellungsdatum bis"]) then
selector = selector .. "[[Erstellungsdatum::<=" .. kal.dateLastDayCompleter(pargs["Erstellungsdatum bis"]) .. "]]"
end
if not com.isEmpty(pargs["Über Datum von"]) then
selector = selector .. "[[ÜberDatum::>=" .. pargs["Über Datum von"] .. "]]"
end
if not com.isEmpty(pargs["Über Datum bis"]) then
selector = selector .. "[[ÜberDatum::<=" .. kal.dateLastDayCompleter(pargs["Über Datum bis"]) .. "]]"
end
if not com.isEmpty(pargs["Straße"]) then
selector = selector .. "[[Straße::" .. smw.uniFilter(pargs["Straße"]) .. "]]"
end
if not com.isEmpty(pargs["Ort"]) then
selector = selector .. "[[Ort::" .. smw.uniFilter(pargs["Ort"]) .. "]]"
end
if not com.isEmpty(pargs["Urheber"]) then
selector = selector .. "[[Urheber::" .. smw.uniFilter(pargs["Urheber"]) .. "]]"
end
if not com.isEmpty(pargs["Quellangaben"]) then
selector = selector .. "[[Quellangaben::" .. smw.uniFilter(pargs["Quellangaben"]) .. "]]"
end
if not com.isEmpty(pargs["Lizenz"]) then
selector = selector .. "[[Lizenz::" .. smw.uniFilter(pargs["Lizenz"]) .. "]]"
end
if not com.isEmpty(pargs["Signatur"]) then
selector = selector .. "[[Signatur::" .. smw.uniFilter(pargs["Signatur"]) .. "]]"
end
if not com.isEmpty(pargs["Beschreibung"]) then
selector = selector .. "[[Beschreibung::" .. smw.uniFilter(pargs["Beschreibung"]) .. "]]"
end
if not com.isEmpty(pargs["Dateiname"]) then
selector = selector .. "[[Seite::" .. smw.uniFilter(pargs["Dateiname"]) .. "]]"
end
if not com.isEmpty(pargs["Genre"]) then
selector = selector .. "[[Genre::" .. pargs["Genre"] .. "]]"
end
local selector1, selector2 = "", ""
if not com.isEmpty(pargs["attrname1"]) and not com.isEmpty(pargs["attrval1"]) then
selector1 = "[[" .. pargs["attrname1"] .. "::" .. smw.uniFilter(pargs["attrval1"]) .. "]]"
end
if not com.isEmpty(pargs["attrname2"]) and not com.isEmpty(pargs["attrval2"]) then
selector2 = "[[" .. pargs["attrname2"] .. "::" .. smw.uniFilter(pargs["attrval2"]) .. "]]"
end
if pargs["attr_op"] == "oder" and selector1 ~= "" and selector2 ~= "" then
selector = selector .. selector1 .. " OR " .. selector .. selector2
else
selector = selector .. selector1 .. selector2
end
-- Anzahl der Ergebnisse
n = mw.smw.ask(selector .. "|format=count")
t = t .. "'''Anzahl der Ergebnisse: " .. n .. "'''"
if n == 0 then
t = t .. "<br/>" ..
"Es konnten keine Bilder mit diesen Vorgaben gefunden werden."
else
if not com.isEmpty(pargs["limit"]) and n > tonumber(pargs["limit"]) then
local n_anzeige = n - (pargs["bild1"] or 1) + 1
if n_anzeige > tonumber(pargs["limit"]) then
n_anzeige = pargs["limit"]
end
t = t .. " (davon " .. n_anzeige .. " angezeigt)"
end
-- Die eigentliche Ergebnis-Anzeige
local args = {selector}
args["sort"] = "Erstellungsjahr,Seite"
if pargs["chron_order"] == "aufsteigend" then
args["order"] = "asc,asc"
else
args["order"] = "desc,asc"
end
if pargs["format"] == "Tabelle" then
for _, a in ipairs{"Beschreibung", "Ort", "Straße",
"Erstellungstag", "Erstellungsjahr", "Urheber",
"Quellangaben", "Lizenz", "Signatur"} do
table.insert(args, "?" .. a)
end
args["mainlabel"] = "Bild"
args["format"] = "table"
else
table.insert(args, "?Dateiinfo")
args["format"] = "gallery"
args["searchlabel"] = "" -- erstmal kein "... weitere Ergebnisse anzeigen" => to do
end
args["limit"] = pargs["limit"]
if not com.isEmpty(pargs["bild1"]) then
args["offset"] = ((tonumber(pargs["bild1"]) or 1) - 1)
end
t = t .. frame:callParserFunction("#ask", args)
end
t = frame:preprocess(t)
return t
end
function p.GalerieBilderAusblendungTabelle()
t = ""
-- Seiten mit übervollen Bilder-Galerien abfragen
local query = {"[[:+]][[Bilderanzahl::>" .. (n_bilder_limit + 1 ) .."]]",
"?#-", "?Bilderanzahl", "?KlassenName", "?Kategorie#-",
mainlabel = "-", sort = "Bilderanzahl", order = "desc", limit = 200}
uebervolle_seiten = mw.smw.ask(query) or {}
-- Unterseiten
query = {"[[Seite::~" .. galerie_bilder_ausblendung_basepagemame .. "/*]]",
"?#-", limit = 10000, mainlabel = "-"}
query = mw.smw.ask(query) or {}
for _, q in ipairs(query) do
q = string.sub(q[1], #galerie_bilder_ausblendung_basepagemame + 2)
local query2 = {"[[" .. q .."]]" ..
"[[Bilderanzahl::<" .. n_bilder_limit .."]]",
"?Bilderanzahl", "?KlassenName", "?Kategorie#-"}
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"]})
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", "Kategorien", "Bilder ausblenden"}
for _, p in ipairs(uebervolle_seiten) do
local lemma = p[1]
local klassen = p["KlassenName"] or {}
if type(klassen) ~= "table" then
klassen = {klassen}
end
klassen = table.concat(klassen, ", ")
local kategorien = p["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, ", ")
local gba_link =
"[[" .. galerie_bilder_ausblendung_basepagemame .. "/" ..
lemma .. "|Hier]]"
t = t .. htm.tableLine{"[[" .. lemma .. "]]",
{p["Bilderanzahl"], td_args = "style=\"text-align: center;\""},
{klassen, td_args = "style=\"text-align: center;\""},
kategorien,
{gba_link, td_args = "style=\"text-align: center;\""}}
end
t = t .. htm.tableFooter()
end
return t
end
return p