Modul:Datei/Work: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| (66 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 117: | Zeile 117: | ||
-- Ort/Straße mit Ausblendung | -- Ort/Straße mit Ausblendung | ||
for _, a in ipairs | for _, a in ipairs{"Straße", "Ort"} do | ||
local zeige_nicht_attr = "ZeigeNichtIn" .. a | |||
v = pargs[a] or "" | |||
if v ~= "" then | if v ~= "" then | ||
t = t .. p.zeile("[[Attribut:" .. a | local zeige_nicht_val = pargs[zeige_nicht_attr] or "Nein" | ||
"ausgeblendet:", "[[" .. | local anmerkung = "" | ||
if not com.isTrue(zeige_nicht_val) then | |||
for _, o in ipairs(str.splitAndStrip(v, ";")) do | |||
local query = { | |||
"[[Seite::" .. o .. "]]" .. -- Lemma | |||
"[[Seite::" .. wik.fullpagename() .. "]]" .. -- Datei | |||
"[[" .. zeige_nicht_attr .. "::Ja]]", | |||
mainlabel = "-", "?#-", limit = 1} | |||
query = mw.smw.ask(query) | |||
if query ~= nil then | |||
anmerkung = | |||
"{{#if:{{" .. query[1][1] .. "}}| }}" .. -- dummy-include, um SDB-Update zu triggern | |||
"<sup>[[" .. query[1][1] .. "|*)]]</sup>" | |||
zeige_nicht_val = "Ja" | |||
break | |||
end | |||
end | |||
end | |||
t = t .. p.zeile( | |||
"[[Attribut:" .. a .. "|" .. wob.attrText(a) .. "]]", | |||
"[[" .. a .. "::" .. v .. "]]", | |||
"ausgeblendet:", | |||
"[[" .. zeige_nicht_attr .. "::" .. zeige_nicht_val .. "]]" .. anmerkung) | |||
mw.smw.set{[zeige_nicht_attr .. "Formulareintrag"] = (pargs[zeige_nicht_attr] or "Nein")} | |||
end | end | ||
end | end | ||
| Zeile 168: | Zeile 192: | ||
"</tr>" .. | "</tr>" .. | ||
"{{#set:Lizenz=" .. lizenz .. "}}" | "{{#set:Lizenz=" .. lizenz .. "}}" | ||
end | |||
if com.isEmpty(pargs["Lizenz"]) then | |||
mw.smw.set{["Wartungsmeldung"] = "Datei-Lizenz-Angabe fehlt"} | |||
end | end | ||
| Zeile 392: | Zeile 419: | ||
function p.FormularZeigeNichtDatei(zeige_nicht_in) | function p.FormularZeigeNichtDatei(zeige_nicht_in) | ||
local t = "" | local t = "" | ||
local spalten = 10 | local spalten = 10 -- Datei-Spalten im Formular | ||
local lemma = wik.subpagename() | local lemma = wik.subpagename() | ||
local zeige_nicht_in_attr = "ZeigeNichtIn" .. zeige_nicht_in -- ZeigeNichtInOrt/ZeigeNichtInStraße/.. | |||
local page_selector = | local page_selector = | ||
"[[Datei:+]]" .. | "[[Datei:+]]" .. | ||
"[[" .. zeige_nicht_in .. "::" .. lemma .. "]]" .. | "[[" .. zeige_nicht_in .. "::" .. lemma .. "]]" .. -- Ort/Straße/.. = Lemma | ||
"[[ | "[[" .. zeige_nicht_in_attr .. "Formulareintrag::!Ja]]" -- Formular-Eintrag von ZeigeNichtIn... | ||
-- Anzahl ermitteln und ausgeben | |||
local query = {page_selector, format = "count"} | local query = {page_selector, format = "count"} | ||
query = mw.smw.ask(query) | query = mw.smw.ask(query) | ||
t = t .. "<br><big><b>" .. query .. " Bilder gefunden</b></big><br>" | t = t .. "<br><big><b>" .. query .. " Bilder gefunden</b></big><br>" | ||
local query = { page_selector, "?#-", "?Erstellungsdatum#-F[Y]", | -- Dateiliste abfragen | ||
local query = {page_selector, | |||
"?#-", "?Erstellungsdatum#-F[Y]", | |||
sort = "Erstellungsdatum", order = "desc", | sort = "Erstellungsdatum", order = "desc", | ||
mainlabel = "-", limit = 10000} | mainlabel = "-", limit = 10000} | ||
query = mw.smw.ask(query) | query = mw.smw.ask(query) | ||
-- Formular-Tabelle aufbauen | |||
t = t .. | t = t .. | ||
"{{{for template|Datei/ | "{{{for template|Datei/" .. zeige_nicht_in_attr .. "/Work}}}\n" .. | ||
"<table class=\"formtable\">\n" | "<table class=\"formtable\">\n" | ||
local datei | local datei, jahr, jahrtext | ||
for i, d in ipairs(query) do | for i, d in ipairs(query) do -- d = Dateiname (mit Datei:) | ||
datei = string. | datei = string.sub(d[1], 7) -- Datei: abschneiden | ||
erstellungsjahr = d["Erstellungsdatum"] or 0 | erstellungsjahr = d["Erstellungsdatum"] or 0 -- Erstellungsdatum enthält nur Jahr. Siehe oben Format -F[Y] | ||
-- Jahres-Überschriften erstellen | |||
if erstellungsjahr ~= jahr then | if erstellungsjahr ~= jahr then | ||
jahr = erstellungsjahr | jahr = erstellungsjahr | ||
| Zeile 421: | Zeile 454: | ||
t = t .. | t = t .. | ||
"<tr>\n" .. | "<tr>\n" .. | ||
" <th colspan=" .. (spalten | " <th colspan=" .. (3 * spalten) .. " style=\"text-align:center; background-color:#D6EEEE;\">" .. | ||
"<big>" .. jahrtext .. "</big>" .. | "<big>" .. jahrtext .. "</big>" .. | ||
" </th>\n" .. | " </th>\n" .. | ||
"</tr>\n" | "</tr>\n" | ||
end | end | ||
-- Datei-Spalten erstellen, jeweils checkbox und kleiner Datei-Ansicht | |||
if (i - 1) % spalten == 0 then | if (i - 1) % spalten == 0 then | ||
t = t .. "<tr>\n" | t = t .. "<tr>\n" | ||
end | end | ||
t = t .. | t = t .. | ||
" <td>{{{field|" .. datei .. "|input type=checkbox}}}</td>\n" .. | " <td> </td>" .. | ||
"<td>{{{field|" .. datei .. "|input type=checkbox}}}</td>\n" .. | |||
" <td>[[Datei:" .. datei .. "|120x120px]]</td>\n" | " <td>[[Datei:" .. datei .. "|120x120px]]</td>\n" | ||
if (i - 1) % spalten == (spalten - 1) then | if (i - 1) % spalten == (spalten - 1) then | ||
| Zeile 444: | Zeile 479: | ||
local t = "" | local t = "" | ||
local lemma = wik.subpagename() | local lemma = wik.subpagename() | ||
local zeige_nicht_in = frame.args[1] | local zeige_nicht_in = frame.args[1] -- Straße, Ort oder ... | ||
local zeige_nicht_in_attr = "ZeigeNichtIn" .. zeige_nicht_in | |||
t = t .. | t = t .. | ||
"< | "<br>'''Hier können Sie per Formular die Dateien auswählen," .. | ||
"<gallery mode=\"packed\">\n" | "die im Artikel " .. lemma .. " nicht angezeigt werden sollen.'''" .. | ||
local | "<br><br>" .. | ||
for d, z in pairs(frame:getParent().args) do | "'''Es werden nicht angezeigt:'''\n" .. | ||
if z = | "<gallery mode=\"packed-hover\">\n" | ||
table.insert( | -- Liste nicht anzuzeigender Dateien erstellen und gleichzeitig Galerie zusammenbauen | ||
t = t .. d .. "\n" | local zeige_nicht_dateien = {} -- Datei-Liste | ||
for d, z in pairs(frame:getParent().args) do -- d = Dateiname (ohne Datei:) | |||
if com.isTrue(z) then -- z = Ja/Nein | |||
table.insert(zeige_nicht_dateien, "Datei:" .. d) | |||
t = t .. "Datei:" .. d .. -- Galerie-Eintrag (Datei) | |||
"|<small>[[:Datei:" .. d .. "|" .. d .. "]]</small>\n" -- Hoover-Text | |||
end | end | ||
end | end | ||
t = t .. "</gallery>\n" | t = t .. "</gallery>\n" | ||
t = t .. " | -- Formular setzen | ||
t = t .. frame:callParserFunction( | |||
"#default_form", "Datei/" .. zeige_nicht_in_attr .. "/Work") | |||
-- Attribute setzen, dass diese Dateien nicht angezeigt werden | |||
table.insert(zeige_nicht_dateien, lemma) -- Lemma muss auch in Attribut:Seite | |||
mw.smw.set{ | mw.smw.set{ | ||
[" | [zeige_nicht_in_attr] = "Ja", | ||
[ | [zeige_nicht_in] = lemma, -- Straße/Ort = Lemma | ||
[" | ["Seite"] = zeige_nicht_dateien} -- Seite = Liste der nicht anzuzeigenden Dateien | ||
return t | -- Wikitext Preprocess | ||
return frame:preprocess(t) | |||
end | end | ||
return p | return p | ||
Aktuelle Version vom 31. Januar 2026, 17:57 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Datei/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 lfd = require("Modul:LinkFormDatum")
local wob = require("Modul:Wörterbuch")
local kal = require("Modul:Kalender")
local license_url = {
-- Quelle: https://creativecommons.org/licenses/list.en
["CC BY 3.0"] = "https://creativecommons.org/licenses/by/3.0/de/deed.de",
["CC BY-NC 3.0"] = "https://creativecommons.org/licenses/by-nc/3.0/de/deed.de",
["CC BY-NC-ND 3.0"] = "https://creativecommons.org/licenses/by-nc-nd/3.0/de/deed.de",
["CC BY-NC-SA 3.0"] = "https://creativecommons.org/licenses/by-nc-sa/3.0/de/deed.de",
["CC BY-ND 3.0"] = "https://creativecommons.org/licenses/by-nd/3.0/de/deed.de",
["CC BY-SA 3.0"] = "https://creativecommons.org/licenses/by-sa/3.0/de/deed.de",
["CC BY 4.0"] = "https://creativecommons.org/licenses/by/4.0/deed.de",
["CC BY-NC 4.0"] = "https://creativecommons.org/licenses/by-nc/4.0/deed.de",
["CC BY-NC-ND 4.0"] = "https://creativecommons.org/licenses/by-nc-nd/4.0/deed.de",
["CC BY-NC-SA 4.0"] = "https://creativecommons.org/licenses/by-nc-sa/4.0/deed.de",
["CC BY-ND 4.0"] = "https://creativecommons.org/licenses/by-nd/4.0/deed.de",
["CC BY-SA 4.0"] = "https://creativecommons.org/licenses/by-sa/4.0/deed.de"}
function p.Dateibox(frame)
-- mw.log("Dateibox(frame)")
-- mw.logObject(frame, "frame")
-- Kommando-Zeile zum Debuggen:
-- =p.Dateibox{pargs={["fullpagename"]="Datei:test.jpg",["Genre"]="g1;g2",["Attribut1"]="a1",["Wert1"]="w1;w2"}}
-- =p.Dateibox{pargs={["fullpagename"]="Datei:test.jpg",["Beschreibung"]="Int. Tag gegen Gewalt an Frauen: Aktive vom ''Unabhängige Frauen Fürth e. V.'' an einem Infostand, Nov. 2019"}}
-- =p.Dateibox{pargs={["fullpagename"]="Datei:test.jpg",["Attribut1"]="Gebäude",["Wert1"]="Wolfringstraße 1",["Attribut2"]="Gebäude",["Wert2"]="Königstraße 86"}}
local t = ""
if wik.namespace() == "Datei" then
local frame, pargs = dev.GetFrameAndParentArgs(frame)
local title = pargs["fullpagename"] or wik.fullpagename() -- pargs["fullpagename"] zum Testen/Debuggen
local v = ""
-- Tabellenkopf
t = t .. "<table class = \"wikitable\">"
t = t .. "<th colspan = \"4\">" .. title .. "</th>"
-- Genre-Kategorien
v = ""
for _, g in ipairs(str.splitAndStrip(pargs["Genre"], ";")) do
v = str.appendWithComma(v,
"[[:Kategorie:" .. g .. "|" .. g .. "]]" ..
"{{#set:Genre=" .. g .. "}}[[Kategorie:" .. g .. "]]")
end
t = t .. p.attrZeile("Genre", v)
-- Freiattribute
local aw = {}
local aw_fail = false
for i = 1, 6 do
local a = pargs["Attribut" .. i] or ""
local w = pargs["Wert" .. i] or ""
if a ~= "" and w ~= "" then
aw[a] = (aw[a] or "") .. w .. ";" -- Werte zusammenführen
elseif a ~= "" or w ~= "" then
aw_fail = true
end
end
if aw_fail then
mw.smw.set{["Wartungsmeldung"]="Datei-Freiattribut-Fehler"}
end
for a, w in pairs(aw) do
if a == "Gebäude" then -- zusätzlich Gebäude nach StraßeHnr suchen und hinzufügen
local gebaeude_wert = {}
for _, e in ipairs(str.splitAndStrip(w, ";")) do -- direkt über Wertx angegebene Gebäude
gebaeude_wert[e] = true
end
local gebaeude_query = {}
for g, _ in pairs(gebaeude_wert) do -- über query ermittelte Gebäude
local q = "[[:+]][[Kategorie:Gebäude]]" ..
"[[StraßeHnr::" .. g .. "]]|?#-"
q = mw.smw.ask(q) or {}
for _, qg in ipairs(q) do
qg = qg[1]
if gebaeude_wert[qg] ~= true then -- nur, wenn nicht schon direkt angegeben (auch nil!)
gebaeude_query[qg] = true
end
end
end
v = "" -- jetzt den Anzeigetext zusammenbauen
for g, _ in pairs(gebaeude_wert) do -- erst die direkt angegebenen Gebäude
v = str.appendWithComma(v, "[[" .. a .. "::" .. g .. "]]")
end
local v_query = "" -- dann die via query ermittelten Gebäude
for g, _ in pairs(gebaeude_query) do
v_query = str.appendWithComma(v_query, "[[" .. a .. "::" .. g .. "]]")
end
if v_query ~= "" then
v = v .. "<br>automatisch ermittelt über Straße/Hausnummer: " ..
v_query
end
elseif a == "Straße" then -- Straße als Freiattribute wird zu pargs["Straße"] verschoben
mw.smw.set{["Wartungsmeldung"]="Datei-Freiattribut-Fehler Straßen-Angabe"}
pargs["Straße"] = (pargs["Straße"] or "") .. ";" .. w
v = ""
elseif a == "Ort" then -- Ort als Freiattribute wird zu pargs["Ort"] verschoben
mw.smw.set{["Wartungsmeldung"]="Datei-Freiattribut-Fehler Orts-Angabe"}
pargs["Ort"] = (pargs["Ort"] or "") .. ";" .. w
v = ""
else
v = p.attrValList(a, {[a] = w})
end
t = t .. p.attrZeile(a, v)
end
-- normale Zeilen
t = t .. p.attrZeile("Urheber", p.attrValList("Urheber", pargs),
nil, nil, "fileinfotpl_aut") -- mit Setzen der Medienbetracher-Tags
t = t .. p.attrZeile("Quellangaben", p.attrVal("Quellangaben", pargs))
-- Ort/Straße mit Ausblendung
for _, a in ipairs{"Straße", "Ort"} do
local zeige_nicht_attr = "ZeigeNichtIn" .. a
v = pargs[a] or ""
if v ~= "" then
local zeige_nicht_val = pargs[zeige_nicht_attr] or "Nein"
local anmerkung = ""
if not com.isTrue(zeige_nicht_val) then
for _, o in ipairs(str.splitAndStrip(v, ";")) do
local query = {
"[[Seite::" .. o .. "]]" .. -- Lemma
"[[Seite::" .. wik.fullpagename() .. "]]" .. -- Datei
"[[" .. zeige_nicht_attr .. "::Ja]]",
mainlabel = "-", "?#-", limit = 1}
query = mw.smw.ask(query)
if query ~= nil then
anmerkung =
"{{#if:{{" .. query[1][1] .. "}}| }}" .. -- dummy-include, um SDB-Update zu triggern
"<sup>[[" .. query[1][1] .. "|*)]]</sup>"
zeige_nicht_val = "Ja"
break
end
end
end
t = t .. p.zeile(
"[[Attribut:" .. a .. "|" .. wob.attrText(a) .. "]]",
"[[" .. a .. "::" .. v .. "]]",
"ausgeblendet:",
"[[" .. zeige_nicht_attr .. "::" .. zeige_nicht_val .. "]]" .. anmerkung)
mw.smw.set{[zeige_nicht_attr .. "Formulareintrag"] = (pargs[zeige_nicht_attr] or "Nein")}
end
end
-- Dateiart/Dateityp
local extension = p.getExtension(title)
local filekind = p.getFilekind(extension)
t = t .. p.attrZeile("Dateiart", "[[Dateiart::" .. filekind .. "]]",
"Dateityp", "[[Dateityp::" .. extension .. "]]")
-- Erstellungsdatum/ÜberDatum
local erstellungsdatum = pargs["Erstellungsdatum"] or ""
if erstellungsdatum ~= "" then
t = t .. p.attrZeile("Erstellungsdatum",
lfd.linkFormDate(erstellungsdatum,
"Erstellungsdatum", "Erstellungstag", "Erstellungsjahr"))
end
ueberdatum = pargs["ÜberDatum"] or ""
if ueberdatum ~= "" then
t = t .. p.attrZeile("ÜberDatum",
lfd.linkFormDate(ueberdatum, "ÜberDatum", "ÜberTag", "ÜberJahr"))
end
-- normale Zeilen
t = t .. p.attrZeile("Seitennummer", p.attrValList("Seitennummer", pargs))
t = t .. p.attrZeile("Signatur", p.attrVal("Signatur", pargs))
t = t .. p.attrZeile("Länge", p.attrVal("Länge", pargs))
-- Lizenz mit Setzen der Medienbetracher-Tags
local lizenz, is_cc_license =
p.ccLicenseCorrection(pargs["Lizenz"] or "") -- ggf. CC-Schreibeweise korrigieren
if not is_cc_license then
lizenz = p.nocNcLicenseCorrection(lizenz) -- ggf. NoC-NC 1.0 Schreibweise korrigieren
end
if not com.isEmpty(lizenz) then -- Spezial-Behandlung für Media Viewer
t = t ..
"<tr>" ..
"<td class=\"fileinfo-paramfield\">'''[[Attribut:Lizenz|Lizenz]]'''</td>" ..
"<td colspan = \"3\">" ..
"<span class=\"licensetpl\">" ..
"<span class=\"licensetpl_short\">" ..
lizenz ..
"</span>" ..
"</span>" ..
"</td>" ..
"</tr>" ..
"{{#set:Lizenz=" .. lizenz .. "}}"
end
if com.isEmpty(pargs["Lizenz"]) then
mw.smw.set{["Wartungsmeldung"] = "Datei-Lizenz-Angabe fehlt"}
end
-- normale Zeilen
t = t .. p.attrZeile("UploadCommons", p.attrVal("UploadCommons", pargs))
t = t .. p.attrZeile("Beschreibung", p.attrVal("Beschreibung", pargs),
nil, nil, "fileinfotpl_desc") -- mit Setzen der Medienbetracher-Tags
-- Dateiinfo erstellen
local dateiinfo, infotext = "", ""
if not com.isEmpty(pargs["Beschreibung"]) then -- Beschreibung
dateiinfo = dateiinfo ..
wik.wikiTextLimit(pargs["Beschreibung"], 100) -- max. Zeichenanzahl Bild-Unterschrift
if mw.ustring.len(dateiinfo) ~=
mw.ustring.len(pargs["Beschreibung"]) then
dateiinfo = dateiinfo .. " ..."
infotext = infotext .. pargs["Beschreibung"]
end
end
local urheber = str.splitAndStrip(pargs["Urheber"] or "", ";") -- Urheber
if #urheber > 0 then
for u = 1, #urheber do
if wik.pageExists(urheber[u]) then
urheber[u] = "[[" .. urheber[u] .. "]]"
end
end
if infotext ~= "" then
infotext = infotext .. "<br>"
end
infotext = infotext .. wob.attrText("Urheber") .. ": " ..
table.concat(urheber, ", ")
end
for _, d in ipairs{"Erstellungsdatum", "ÜberDatum"} do -- Erstellungsdatum, ÜberDatum
date = pargs[d] or ""
if date ~= "" then
if infotext ~= "" then
infotext = infotext .. "<br>"
end
end
end
if not com.isEmpty(lizenz) then -- Lizenz
if infotext ~= "" then
infotext = infotext .. "<br>"
end
infotext = infotext .. wob.attrText("Lizenz") .. ": " .. lizenz
end
if infotext ~= "" then
if dateiinfo ~= "" then
dateiinfo = dateiinfo .. " "
end
dateiinfo = dateiinfo .. "{{#info:" .. infotext .. "|note}}"
end
if dateiinfo ~= "" then
t = t .. p.zeile("[[Attribut:Dateiinfo|Dateiinfo]] '''<br>" ..
"(Bild-Unterschrift und Info-Box,<br>automatisch erstellt)''' ",
"[[Dateiinfo::" .. dateiinfo .. "]]")
end
-- Quellangaben plus Hinweis als Medienbetrachter-Zeile
t = t .. p.zeile("Medienbetrachter-Zeile'''<br>(automatisch erstellt)''' ",
(pargs["Quellangaben"] or "") ..
" ▽ mehr Infos ▽", nil, nil, "fileinfotpl_src")
--[[ funktioniert nicht
if is_cc_license then
t = t ..
"<tr>" ..
"<td class=\"fileinfo-paramfield\">'''Lizenz-URL'''<br>(automatisch erstellt)</td>" ..
"<td colspan = \"3\">" ..
"<span class=\"licensetpl\">" ..
"<span class=\"licensetpl_link\">" ..
license_url[lizenz] ..
"</span>" ..
"</span>" ..
"</td>" ..
"</tr>"
end ]]
-- Erstellungsdatum ISO-Notation für Media Viewer
if erstellungsdatum ~= "" then
t = t .. p.zeile("Erstellungsdatum,<br>'''(ISO-Notation automatisch erstellt)''' ",
kal.date2ISO(erstellungsdatum), nil, nil, "fileinfotpl_date")
end
-- Tabellenende mit sem. Browsen und Bilder-Suche
t = t .. p.zeile("[[Bild:IconSearch.svg|16px|Semantisches Browsen|link=Spezial:Durchsuchen/{{FULLPAGENAME}}]]",
"[[Spezial:Durchsuchen/{{FULLPAGENAME}}|Semantisches Browsen]] / " ..
"{{#queryformlink:form=Abfrage Bilder|link text=Bilder-Suche}}")
t = t .. "</table>"
-- Seite setzen
t = t .. "{{#set:Seite=" .. wik.fullpagename() .. "}}"
-- mw.logObject(t, "t")
t = frame:preprocess(t)
end -- if wik.namespace() == "Datei" then
-- mw.logObject(t, "t")
return t
end
function p.getExtension(filename)
local extension = filename:match("^.+%.([^%.]+)$")
return mw.ustring.lower(extension)
end
function p.getFilekind(filetype)
local t = {
["Bild"] = {"webp", "png", "gif", "jpg", "jpeg", "svg"},
["Dokument"] = {"pdf"},
["Audio"] = {"mp3", "ogg", "oga", "flac", "opus", "wav"},
["Midi"] = {"midi", "mid"},
["Video"] = {"webm", "mp4", "m4v", "ogv", "mpg", "mpeg"},
["3D-Modell"] = {"obj", "glb", "gltf"},
}
for key, values in pairs(t) do
for _, value in ipairs(values) do
if value == filetype then
return key -- Bricht beide Schleifen ab und gibt den Key zurück
end
end
end
return "" -- Gib leeren String zurück, wenn nichts gefunden wurde
end
function p.attrVal(a, pargs) -- Wert zu Attribut wandeln
local t = ""
local v = pargs[a] or ""
if v ~= "" then
t = t .. "[[" .. a .. "::" .. v .. "]]"
end
return t
end
function p.attrValList(a, pargs) -- Werteliste zu Attributen wandeln
local t = ""
local l = str.splitAndStrip(pargs[a] or "", ";")
for _, v in ipairs(l) do
t = str.appendWithComma(t, "[[" .. a .. "::" .. v .. "]]")
end
return t
end
function p.attrZeile(a1, v1, a2, v2, id1) -- Tabellenzeile mit max. 2 Attributen
local t = ""
if v1 ~= "" then
a1 = "[[Attribut:" .. a1 .. "|" .. wob.attrText(a1) .. "]]"
if a2 ~= nil and v2 ~= nil and v2 ~= "" then
a2 = "[[Attribut:" .. a2 .. "|" .. wob.attrText(a2) .. "]]"
end
t = t .. p.zeile(a1, v1, a2, v2, id1)
end
return t
end
function p.zeile(a1, v1, a2, v2, id1) -- Tabellenzeile mit max. 2x2 Einträgen
local t = ""
if v1 ~= "" then
t = t .. "<tr>"
if id1 == nil then
t = t .. "<td>'''" .. a1 .. "'''</td>"
else
t = t .. "<td id=\"" .. id1 .. "\" class=\"fileinfo-paramfield\">'''" .. a1 .. "'''</td>"
end
if a2 == nil or v2 == nil or v2 == "" then
t = t .. "<td colspan = \"3\">" .. v1 .. "</td>"
else
t = t .. "<td>" .. v1 .. "</td>"
t = t .. "<td>'''" .. a2 .. "'''</td>"
t = t .. "<td>" .. v2 .. "</td>"
end
t = t .. "</tr>"
end
return t
end
function p.ccLicenseCorrection(lic_text) -- Schreibweise CC-Lizenzen korrigieren
local lic_text_fixed = string.upper(lic_text)
local is_cc_license = false
if string.sub(lic_text_fixed, 1, 3) == "CC " or -- Beginn mit "CC " or "CC-"?
string.sub(lic_text_fixed, 1, 3) == "CC-" then
is_cc_license = true
if string.sub(lic_text_fixed, 3, 3) == "-" then -- Bindestrich hinter "CC" entfernen
lic_text_fixed = "CC " .. string.sub(lic_text_fixed, 4)
end
local version_hyphen_start, version_hyphen_end = -- Bindestrich vor Version entfernen
string.find(lic_text_fixed,"-%d")
if version_hyphen_start ~= nil then
lic_text_fixed =
string.sub(lic_text_fixed, 1, version_hyphen_start - 1) ..
" " .. string.sub(lic_text_fixed, version_hyphen_start + 1)
end
else
lic_text_fixed = lic_text
end
return lic_text_fixed, is_cc_license
end
function p.nocNcLicenseCorrection(lic_text) -- Schreibweise NoC-NC 1.0 Lizenz korrigieren
local lic_text_fixed = lic_text
if string.upper(lic_text) == "NOC-NC-1.0" or
string.upper(lic_text) == "NOC-NC 1.0" then
lic_text_fixed = "NoC-NC 1.0"
end
return lic_text_fixed
end
function p.LicenseCorrection(frame) -- Schreibweise CC- und NoC-NC 1.0 Lizenz korrigieren
local lizenz = frame.args["Lizenz"] or ""
lizenz = p.ccLicenseCorrection(lizenz)
lizenz = p.nocNcLicenseCorrection(lizenz)
return lizenz
end
function p.FormularZeigeNichtInStrasse()
return p.FormularZeigeNichtDatei("Straße")
end
function p.FormularZeigeNichtInOrt()
return p.FormularZeigeNichtDatei("Ort")
end
function p.FormularZeigeNichtDatei(zeige_nicht_in)
local t = ""
local spalten = 10 -- Datei-Spalten im Formular
local lemma = wik.subpagename()
local zeige_nicht_in_attr = "ZeigeNichtIn" .. zeige_nicht_in -- ZeigeNichtInOrt/ZeigeNichtInStraße/..
local page_selector =
"[[Datei:+]]" ..
"[[" .. zeige_nicht_in .. "::" .. lemma .. "]]" .. -- Ort/Straße/.. = Lemma
"[[" .. zeige_nicht_in_attr .. "Formulareintrag::!Ja]]" -- Formular-Eintrag von ZeigeNichtIn...
-- Anzahl ermitteln und ausgeben
local query = {page_selector, format = "count"}
query = mw.smw.ask(query)
t = t .. "<br><big><b>" .. query .. " Bilder gefunden</b></big><br>"
-- Dateiliste abfragen
local query = {page_selector,
"?#-", "?Erstellungsdatum#-F[Y]",
sort = "Erstellungsdatum", order = "desc",
mainlabel = "-", limit = 10000}
query = mw.smw.ask(query)
-- Formular-Tabelle aufbauen
t = t ..
"{{{for template|Datei/" .. zeige_nicht_in_attr .. "/Work}}}\n" ..
"<table class=\"formtable\">\n"
local datei, jahr, jahrtext
for i, d in ipairs(query) do -- d = Dateiname (mit Datei:)
datei = string.sub(d[1], 7) -- Datei: abschneiden
erstellungsjahr = d["Erstellungsdatum"] or 0 -- Erstellungsdatum enthält nur Jahr. Siehe oben Format -F[Y]
-- Jahres-Überschriften erstellen
if erstellungsjahr ~= jahr then
jahr = erstellungsjahr
if erstellungsjahr ~= 0 then
jahrtext = jahr
else
jahrtext = "Ohne Erstellungsdatum"
end
t = t ..
"<tr>\n" ..
" <th colspan=" .. (3 * spalten) .. " style=\"text-align:center; background-color:#D6EEEE;\">" ..
"<big>" .. jahrtext .. "</big>" ..
" </th>\n" ..
"</tr>\n"
end
-- Datei-Spalten erstellen, jeweils checkbox und kleiner Datei-Ansicht
if (i - 1) % spalten == 0 then
t = t .. "<tr>\n"
end
t = t ..
" <td> </td>" ..
"<td>{{{field|" .. datei .. "|input type=checkbox}}}</td>\n" ..
" <td>[[Datei:" .. datei .. "|120x120px]]</td>\n"
if (i - 1) % spalten == (spalten - 1) then
t = t .. "</tr>\n"
end
end
t = t .. "</table>\n"
t = t .. "{{{end template}}}\n"
return t
end
function p.ZeigeNichtDatei(frame)
local t = ""
local lemma = wik.subpagename()
local zeige_nicht_in = frame.args[1] -- Straße, Ort oder ...
local zeige_nicht_in_attr = "ZeigeNichtIn" .. zeige_nicht_in
t = t ..
"<br>'''Hier können Sie per Formular die Dateien auswählen," ..
"die im Artikel " .. lemma .. " nicht angezeigt werden sollen.'''" ..
"<br><br>" ..
"'''Es werden nicht angezeigt:'''\n" ..
"<gallery mode=\"packed-hover\">\n"
-- Liste nicht anzuzeigender Dateien erstellen und gleichzeitig Galerie zusammenbauen
local zeige_nicht_dateien = {} -- Datei-Liste
for d, z in pairs(frame:getParent().args) do -- d = Dateiname (ohne Datei:)
if com.isTrue(z) then -- z = Ja/Nein
table.insert(zeige_nicht_dateien, "Datei:" .. d)
t = t .. "Datei:" .. d .. -- Galerie-Eintrag (Datei)
"|<small>[[:Datei:" .. d .. "|" .. d .. "]]</small>\n" -- Hoover-Text
end
end
t = t .. "</gallery>\n"
-- Formular setzen
t = t .. frame:callParserFunction(
"#default_form", "Datei/" .. zeige_nicht_in_attr .. "/Work")
-- Attribute setzen, dass diese Dateien nicht angezeigt werden
table.insert(zeige_nicht_dateien, lemma) -- Lemma muss auch in Attribut:Seite
mw.smw.set{
[zeige_nicht_in_attr] = "Ja",
[zeige_nicht_in] = lemma, -- Straße/Ort = Lemma
["Seite"] = zeige_nicht_dateien} -- Seite = Liste der nicht anzuzeigenden Dateien
-- Wikitext Preprocess
return frame:preprocess(t)
end
return p