22.736
Bearbeitungen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| (33 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 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" | ||
local galerie_bilder_ausblendung_basepagemame = | |||
"FürthWiki:Galerie-Bilder-Ausblendung" | |||
function p.Galerie(frame) | function p.Galerie(frame) | ||
-- mw.log("Galerie(frame)") | |||
-- mw.logObject(frame.args, "frame.args") | |||
-- Kommando-Zeile zum Debuggen: | -- Kommando-Zeile zum Debuggen: | ||
-- frame=mw.getCurrentFrame(); frame.args={[" | -- 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 " | args.sort = args.sort or "Erstellungsdatum, Seite" | ||
args.order = args.order or "desc, asc" | args.order = args.order or "desc, asc" | ||
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 "", ";") | ||
-- Galerie-Bilder-Ausblendung-Seite ermitteln | |||
local galerie_bilder_ausblendung_pagemame = | |||
galerie_bilder_ausblendung_basepagemame .. "/" .. pagename | |||
if not wik.pageExists(galerie_bilder_ausblendung_pagemame) then | |||
local | galerie_bilder_ausblendung_pagemame = nil | ||
end | end | ||
-- Bilder-Seiten-Selektor zusammenbauen | -- Bilder-Seiten-Selektor zusammenbauen | ||
local selector = "" | local selector = "" | ||
for i, a in ipairs(args. | 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 .. | selector = selector .. | ||
"[[Datei:+]][[Kategorie:Bilder]]" .. | "[[Datei:+]][[Kategorie:Bilder]]" .. | ||
"[[" .. | "[[" .. a .. "::" .. args.val[i] .. "]]" | ||
a = args.attr_zeige_nicht[i] | |||
if a ~= nil then | if a ~= nil then | ||
selector = selector .. "[[" .. a .. "::!Ja]]" | selector = selector .. "[[" .. a .. "::!Ja]]" | ||
| Zeile 58: | Zeile 56: | ||
end | end | ||
end | end | ||
-- Bilder-Anzahl | -- Bilder-Anzahl | ||
local n_bilder = mw.smw.ask(selector .. "|format=count") | local n_bilder = mw.smw.ask(selector .. "|format=count") | ||
t = t .. "{{#set:Bilderanzahl=" .. n_bilder .. "}}" | t = t .. "{{#set:Bilderanzahl=" .. n_bilder .. "}}" | ||
if n_bilder == 0 then | if n_bilder == 0 then | ||
| Zeile 94: | Zeile 90: | ||
"&" .. abfrage .. "[attr_op]=oder" .. | "&" .. abfrage .. "[attr_op]=oder" .. | ||
"&_run}}" | "&_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 | -- Bilder-Galerie und Abfrage-Links | ||
| Zeile 116: | Zeile 121: | ||
"|?Seite" .. | "|?Seite" .. | ||
"|?Seite.Dateiinfo" .. | "|?Seite.Dateiinfo" .. | ||
"|sort=" .. args.sort .. | "|sort=" .. args.sort .. | ||
"|order=" .. args.order .. | "|order=" .. args.order .. | ||
| Zeile 135: | Zeile 139: | ||
end -- if n_bilder == 0 then ... else ... | end -- if n_bilder == 0 then ... else ... | ||
-- mw.logObject(t, "t") | |||
t = frame:preprocess(t) | t = frame:preprocess(t) | ||
return t | return t | ||
| Zeile 241: | Zeile 245: | ||
end | end | ||
t = frame:preprocess(t) | 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 | return t | ||
end | end | ||
return p | return p | ||