Modul:Bild: Unterschied zwischen den Versionen
(Neuanlage mit Galerie()) |
(Abfrage(frame) selector1, selector2 com.isEmpty(pargs["attrvalx"])) |
||
| (15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
local p = {} | local p = {} | ||
local com = require("Modul:Common") | |||
local dev = require("Modul:Development") | |||
local str = require("Modul:String") | |||
local wik = require("Modul:Wiki") | local wik = require("Modul:Wiki") | ||
local que = require("Modul:Queries") | |||
local n_bilder_limit = 200 | |||
local abfrage = "Abfrage Bilder" -- Formular/Vorlage-Seitenname ggf. mit "/Work" | |||
function p.Galerie(frame) | function p.Galerie(frame) | ||
| Zeile 7: | Zeile 14: | ||
-- mw.logObject(frame, "frame") | -- mw.logObject(frame, "frame") | ||
-- Kommando-Zeile zum Debuggen: | -- Kommando-Zeile zum Debuggen: | ||
-- =p.Galerie() | -- 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)) | ||
local t = "" | local t = "" | ||
local args = wik.getArgs(frame.args, {"attr", "val"}) | |||
-- 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" | |||
-- Seiten-Selektor | -- Seiten-Selektor | ||
local selector = "[[Datei:+]][[Kategorie:Bilder]]" | local selector = "" | ||
local pagename = wik.pagename() | |||
args.attr = str.splitAndStrip(args.attr, ";") | |||
args.val = str.splitAndStrip(args.val or "", ";") | |||
args.attr_zeige_nicht = str.splitAndStrip(args.attr_zeige_nicht or "", ";") | |||
for i, a in ipairs(args.attr) do | |||
args.val[i] = args.val[i] or pagename | |||
if selector ~= "" then | |||
selector = selector .. " OR " | |||
end | |||
selector = selector .. | |||
"[[Datei:+]][[Kategorie:Bilder]]" .. | |||
"[[" .. a .. "::" .. args.val[i] .. "]]" | |||
if args.attr_zeige_nicht[i] ~= nil then | |||
selector = selector .. "[[" .. args.attr_zeige_nicht[i] .. "::!Ja]]" | |||
end | |||
end | end | ||
-- mw.logObject(selector, "selector") | |||
-- Bilder-Anzahl | -- Bilder-Anzahl | ||
| Zeile 22: | Zeile 47: | ||
if n_bilder == 0 then | if n_bilder == 0 then | ||
t = t .. | t = t .. | ||
-- "Keine Bilder gefunden" .. | |||
"[[Kategorie:Seiten mit leeren Bilder-Galerien]]" | "[[Kategorie:Seiten mit leeren Bilder-Galerien]]" | ||
else | else | ||
-- Abfrage- | -- Abfrage-Link-Teile | ||
local queryformlink_part1 = | local queryformlink_part1 = | ||
"{{#queryformlink:" .. | "{{#queryformlink:" .. | ||
"form= | "form=" .. abfrage .. | ||
"|link text=" | "|link text=" | ||
local queryformlink_part2 = | local queryformlink_part2 = | ||
"|query string= | "|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 = | local queryformlink_part3 = | ||
"& | "&" .. abfrage .. "[bild1]=" | ||
"& | local queryformlink_part4 = | ||
"&" .. abfrage .. "[limit]=" | |||
local queryformlink_part5 = | |||
"&" .. abfrage .. "[chron_order]=absteigend" .. | |||
"&" .. abfrage .. "[attr_op]=oder" .. | |||
"&_run}}" | "&_run}}" | ||
-- Bilder-Galerie und Abfrage-Links | -- Bilder-Galerie und Abfrage-Links | ||
t = t .. | t = t .. | ||
"'''Bilder als " .. | |||
queryformlink_part1 .. "Galerie" .. -- link text | |||
queryformlink_part2 .. "Galerie" .. -- format | |||
queryformlink_part3 .. "1" .. -- erstes Bild | |||
queryformlink_part4 .. n_bilder_limit .. | |||
queryformlink_part5 .. " / " .. | |||
queryformlink_part1 .. "Tabelle" .. -- link text | |||
queryformlink_part2 .. "Tabelle" .. -- format | |||
queryformlink_part3 .. "1" .. -- erstes Bild | |||
queryformlink_part4 .. n_bilder_limit .. | |||
queryformlink_part5 .. | |||
" anzeigen, sortieren und filtern'''".. | |||
"{{#ask:" .. selector .. | "{{#ask:" .. selector .. | ||
"|?Dateiinfo" .. | "|?Dateiinfo" .. | ||
"|sort= | "|sort=" .. args.sort .. | ||
"|order= | "|order=" .. args.order .. | ||
"|format=gallery" .. | "|format=gallery" .. | ||
"|limit= | "|limit=" .. n_bilder_limit .. | ||
"|searchlabel=" .. | "|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 .. | |||
queryformlink_part5 .. | |||
"[[Kategorie:Seiten mit vollen Bilder-Galerien]]" | |||
end | |||
end -- if n_bilder == 0 then ... else ... | end -- if n_bilder == 0 then ... else ... | ||
| Zeile 66: | Zeile 115: | ||
-- mw.logObject(t, "t") | -- mw.logObject(t, "t") | ||
t = frame:preprocess(t) | t = frame:preprocess(t) | ||
return t | |||
end | |||
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 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::<=" .. que.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::<=" .. que.dateLastDayCompleter(pargs["Über Datum bis"]) .. "]]" | |||
end | |||
if not com.isEmpty(pargs["Straße"]) then | |||
selector = selector .. "[[Straße::" .. que.uniFilter(pargs["Straße"]) .. "]]" | |||
end | |||
if not com.isEmpty(pargs["Ort"]) then | |||
selector = selector .. "[[Ort::" .. que.uniFilter(pargs["Ort"]) .. "]]" | |||
end | |||
if not com.isEmpty(pargs["Urheber"]) then | |||
selector = selector .. "[[Urheber::" .. que.uniFilter(pargs["Urheber"]) .. "]]" | |||
end | |||
if not com.isEmpty(pargs["Quellangaben"]) then | |||
selector = selector .. "[[Quellangaben::" .. que.uniFilter(pargs["Quellangaben"]) .. "]]" | |||
end | |||
if not com.isEmpty(pargs["Lizenz"]) then | |||
selector = selector .. "[[Lizenz::" .. que.uniFilter(pargs["Lizenz"]) .. "]]" | |||
end | |||
if not com.isEmpty(pargs["Signatur"]) then | |||
selector = selector .. "[[Signatur::" .. que.uniFilter(pargs["Signatur"]) .. "]]" | |||
end | |||
local selector1, selector2 = "", "" | |||
if not com.isEmpty(pargs["attrname1"]) and not com.isEmpty(pargs["attrval1"]) then | |||
selector1 = "[[" .. pargs["attrname1"] .. "::" .. que.uniFilter(pargs["attrval1"]) .. "]]" | |||
end | |||
if not com.isEmpty(pargs["attrname2"]) and not com.isEmpty(pargs["attrval2"]) then | |||
selector2 = "[[" .. pargs["attrname2"] .. "::" .. que.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 | |||
t = t .. | |||
"{{#ask:" .. selector .. | |||
"|sort=Erstellungsjahr,Seite" | |||
if pargs["chron_order"] == "aufsteigend" then | |||
t = t .. "|order=asc,asc" | |||
else | |||
t = t .. "|order=desc,asc" | |||
end | |||
if pargs["format"] == "Tabelle" then | |||
t = t .. | |||
"|?Beschreibung|?Ort|?Straße|?Erstellungstag|?Erstellungsjahr|?Urheber|?Quellangaben|?Lizenz|?Signatur" .. | |||
"|mainlabel=Bild" .. | |||
"|format=table" | |||
else | |||
t = t .. | |||
"|?Dateiinfo" .. | |||
"|link=all" .. | |||
"|format=gallery" .. | |||
"|searchlabel=" -- erstmal kein "... weitere Ergebnisse anzeigen" => to do | |||
end | |||
if not com.isEmpty(pargs["limit"]) then | |||
t = t .. "|limit=" .. pargs["limit"] | |||
end | |||
if not com.isEmpty(pargs["bild1"]) then | |||
t = t .. "|offset=" .. ((tonumber(pargs["bild1"]) or 1) - 1) | |||
end | |||
t = t .. "}}" | |||
end | |||
-- t = t .. "<nowiki>" .. t .. "</nowiki>" | |||
-- mw.logObject(t, "t") | -- mw.logObject(t, "t") | ||
t = frame:preprocess(t) | |||
return t | return t | ||
end | end | ||
return p | return p | ||
Aktuelle Version vom 2. Dezember 2025, 11:27 Uhr
Seiten-Übersicht
| Hauptseite | Unterseiten | ||
|---|---|---|---|
| Allgemein | |||
| Faktenbox | Vorlagen | ||
| Formulare |
|
||
| Module | |||
| Abfrage | Vorlagen |
| |
| Formulare |
| ||
| Sonstige | |||
Galerie()
Diese Funktion fügt via der {{Bilder dies...}}-Vorlagen, der {{Werke dies...}}-Vorlagen oder der {{Galerie|...}}-Vorlage alle zugehörigen Bilder in eine Artikelseite ein.
| Parameter | Überschrift rechts |
|---|---|
| attr | (Frei-)Attribut-Name |
| val | Attribut-Wert (optional, default ist {{PAGENAME}})
|
| attr_zeige_nicht | Zeige-Nicht-Attribut-Name |
| sort | Sortier-Attribut der ask-Abfrage (optional, default ist Erstellungsdatum)
|
| order | Sortier-Reihenfolge der ask-Abfrage (optional, default ist desc)
|
Bilder diese... Seiten
- Bilder dieser Broschüre
- Bilder dieser Brücke
- Bilder dieser Einrichtung
- Bilder dieser Gaststätte
- Bilder dieser Grünanlage
- Bilder dieser Musikgruppe
- Bilder dieser Partei
- Bilder dieser Person
- Bilder dieser Schule
- Bilder dieser Straße
- Bilder dieser Veranstaltung
- Bilder dieser Zeitung
- Bilder dieses Areals
- Bilder dieses Artikels
- Bilder dieses Buches
- Bilder dieses Ereignisses
- Bilder dieses Gebäudes
- Bilder dieses Gewässers
- Bilder dieses Jahres
- Bilder dieses Kunstwerkes
- Bilder dieses Künstlers
- Bilder dieses Ortes
- Bilder dieses Tieres
- Bilder dieses Unternehmens
- Bilder dieses Vereins
- Bilder dieses Verkehrsmittels
- Bilder dieses Wappens
Werke diese... Seiten
- Nicht alle davon sind eine Bilder-Galerie!
Siehe auch
local p = {}
local com = require("Modul:Common")
local dev = require("Modul:Development")
local str = require("Modul:String")
local wik = require("Modul:Wiki")
local que = require("Modul:Queries")
local n_bilder_limit = 200
local abfrage = "Abfrage Bilder" -- Formular/Vorlage-Seitenname ggf. mit "/Work"
function p.Galerie(frame)
-- mw.log("Galerie(frame)")
-- mw.logObject(frame, "frame")
-- 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))
local t = ""
-- 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"
-- Seiten-Selektor
local selector = ""
local pagename = wik.pagename()
args.attr = str.splitAndStrip(args.attr, ";")
args.val = str.splitAndStrip(args.val or "", ";")
args.attr_zeige_nicht = str.splitAndStrip(args.attr_zeige_nicht or "", ";")
for i, a in ipairs(args.attr) do
args.val[i] = args.val[i] or pagename
if selector ~= "" then
selector = selector .. " OR "
end
selector = selector ..
"[[Datei:+]][[Kategorie:Bilder]]" ..
"[[" .. a .. "::" .. args.val[i] .. "]]"
if args.attr_zeige_nicht[i] ~= nil then
selector = selector .. "[[" .. args.attr_zeige_nicht[i] .. "::!Ja]]"
end
end
-- mw.logObject(selector, "selector")
-- Bilder-Anzahl
local n_bilder = mw.smw.ask(selector .. "|format=count")
t = t .. "{{#set:Bilderanzahl=" .. n_bilder .. "}}"
if n_bilder == 0 then
t = t ..
-- "Keine Bilder gefunden" ..
"[[Kategorie:Seiten mit leeren Bilder-Galerien]]"
else
-- Abfrage-Link-Teile
local queryformlink_part1 =
"{{#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-Galerie und Abfrage-Links
t = t ..
"'''Bilder als " ..
queryformlink_part1 .. "Galerie" .. -- link text
queryformlink_part2 .. "Galerie" .. -- format
queryformlink_part3 .. "1" .. -- erstes Bild
queryformlink_part4 .. n_bilder_limit ..
queryformlink_part5 .. " / " ..
queryformlink_part1 .. "Tabelle" .. -- link text
queryformlink_part2 .. "Tabelle" .. -- format
queryformlink_part3 .. "1" .. -- erstes Bild
queryformlink_part4 .. n_bilder_limit ..
queryformlink_part5 ..
" anzeigen, sortieren und filtern'''"..
"{{#ask:" .. selector ..
"|?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 ..
queryformlink_part5 ..
"[[Kategorie:Seiten mit vollen Bilder-Galerien]]"
end
end -- if n_bilder == 0 then ... else ...
-- mw.logObject(t, "t")
t = frame:preprocess(t)
return t
end
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 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::<=" .. que.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::<=" .. que.dateLastDayCompleter(pargs["Über Datum bis"]) .. "]]"
end
if not com.isEmpty(pargs["Straße"]) then
selector = selector .. "[[Straße::" .. que.uniFilter(pargs["Straße"]) .. "]]"
end
if not com.isEmpty(pargs["Ort"]) then
selector = selector .. "[[Ort::" .. que.uniFilter(pargs["Ort"]) .. "]]"
end
if not com.isEmpty(pargs["Urheber"]) then
selector = selector .. "[[Urheber::" .. que.uniFilter(pargs["Urheber"]) .. "]]"
end
if not com.isEmpty(pargs["Quellangaben"]) then
selector = selector .. "[[Quellangaben::" .. que.uniFilter(pargs["Quellangaben"]) .. "]]"
end
if not com.isEmpty(pargs["Lizenz"]) then
selector = selector .. "[[Lizenz::" .. que.uniFilter(pargs["Lizenz"]) .. "]]"
end
if not com.isEmpty(pargs["Signatur"]) then
selector = selector .. "[[Signatur::" .. que.uniFilter(pargs["Signatur"]) .. "]]"
end
local selector1, selector2 = "", ""
if not com.isEmpty(pargs["attrname1"]) and not com.isEmpty(pargs["attrval1"]) then
selector1 = "[[" .. pargs["attrname1"] .. "::" .. que.uniFilter(pargs["attrval1"]) .. "]]"
end
if not com.isEmpty(pargs["attrname2"]) and not com.isEmpty(pargs["attrval2"]) then
selector2 = "[[" .. pargs["attrname2"] .. "::" .. que.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
t = t ..
"{{#ask:" .. selector ..
"|sort=Erstellungsjahr,Seite"
if pargs["chron_order"] == "aufsteigend" then
t = t .. "|order=asc,asc"
else
t = t .. "|order=desc,asc"
end
if pargs["format"] == "Tabelle" then
t = t ..
"|?Beschreibung|?Ort|?Straße|?Erstellungstag|?Erstellungsjahr|?Urheber|?Quellangaben|?Lizenz|?Signatur" ..
"|mainlabel=Bild" ..
"|format=table"
else
t = t ..
"|?Dateiinfo" ..
"|link=all" ..
"|format=gallery" ..
"|searchlabel=" -- erstmal kein "... weitere Ergebnisse anzeigen" => to do
end
if not com.isEmpty(pargs["limit"]) then
t = t .. "|limit=" .. pargs["limit"]
end
if not com.isEmpty(pargs["bild1"]) then
t = t .. "|offset=" .. ((tonumber(pargs["bild1"]) or 1) - 1)
end
t = t .. "}}"
end
-- t = t .. "<nowiki>" .. t .. "</nowiki>"
-- mw.logObject(t, "t")
t = frame:preprocess(t)
return t
end
return p