Modul:Datei: Unterschied zwischen den Versionen

5.342 Bytes hinzugefügt ,  Mittwoch um 11:36
+ Wartungsmeldung Datei-Freiattribut-Fehler Straßen/Orts-Angabe
(Dateiinfo Bild-Unterschrift und Info-Box)
(+ Wartungsmeldung Datei-Freiattribut-Fehler Straßen/Orts-Angabe)
 
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 7: Zeile 7:
local lfd = require("Modul:LinkFormDatum")
local lfd = require("Modul:LinkFormDatum")
local wob = require("Modul:Wörterbuch")
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)
function p.Dateibox(frame)
Zeile 15: Zeile 31:
-- =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",["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"}}
-- =p.Dateibox{pargs={["fullpagename"]="Datei:test.jpg",["Attribut1"]="Gebäude",["Wert1"]="Wolfringstraße 1",["Attribut2"]="Gebäude",["Wert2"]="Königstraße 86"}}
local frame, pargs = dev.GetFrameAndParentArgs(frame)
local t = ""
local title = pargs["fullpagename"] or wik.fullpagename() -- pargs["fullpagename"] zum Testen/Debuggen
local t, v = "", ""
if wik.namespace() == "Datei" then
 
-- Tabellenkopf
local frame, pargs = dev.GetFrameAndParentArgs(frame)
t = t .. "<table class = \"wikitable\">"
local title = pargs["fullpagename"] or wik.fullpagename() -- pargs["fullpagename"] zum Testen/Debuggen
t = t .. "<th colspan = \"4\">" .. title .. "</th>"
local v = ""
 
-- Genre-Kategorien
-- Tabellenkopf
v = ""
t = t .. "<table class = \"wikitable\">"
for i, g in ipairs(str.splitAndStrip(pargs["Genre"], ";")) do
t = t .. "<th colspan = \"4\">" .. title .. "</th>"
if i > 1 then
v = v .. ", "
-- Genre-Kategorien
v = ""
for i, g in ipairs(str.splitAndStrip(pargs["Genre"], ";")) do
if i > 1 then
v = v .. ", "
end
v = 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
end
v = v .. "[[:Kategorie:" .. g .. "|" .. g .. "]]{{#set:Genre=" .. g .. "}}[[Kategorie:" .. g .. "]]"
if aw_fail then
end
mw.smw.set{["Wartungsmeldung"]="Datei-Freiattribut-Fehler"}
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
end
for a, w in pairs(aw) do
if aw_fail then
if a == "Gebäude" then -- zusätzlich Gebäude nach StraßeHnr suchen und hinzufügen
t = t .. "[[Kategorie:Freiattribut-Fehler]]"
local gebaeude_wert = {}
end
for _, e in ipairs(str.splitAndStrip(w, ";")) do -- direkt über Wertx angegebene Gebäude
for a, w in pairs(aw) do
gebaeude_wert[e] = true
if a == "Gebäude" then -- zusätzlich Gebäude nach StraßeHnr suchen und hinzufügen
end
local gebaeude_wert = {}
local gebaeude_query = {}
for _, e in ipairs(str.splitAndStrip(w, ";")) do -- direkt über Wertx angegebene Gebäude
for g, _ in pairs(gebaeude_wert) do -- über query ermittelte Gebäude
gebaeude_wert[e] = true
local q = "[[:+]][[Kategorie:Gebäude]]" ..
end
"[[StraßeHnr::" .. g .. "]]|?#-"
local gebaeude_query = {}
q = mw.smw.ask(q) or {}
for g, _ in pairs(gebaeude_wert) do -- über query ermittelte Gebäude
for _, qg in ipairs(q) do
local q = "[[:+]][[Kategorie:Gebäude]][[StraßeHnr::" .. g .. "]]|?#-"
qg = qg[1]
q = mw.smw.ask(q) or {}
if gebaeude_wert[qg] ~= true then -- nur, wenn nicht schon direkt angegeben (auch nil!)
for _, qg in ipairs(q) do
gebaeude_query[qg] = true
qg = qg[1]
end
if gebaeude_wert[qg] ~= true then -- nur, wenn nicht schon direkt angegeben (auch nil!)
end
gebaeude_query[qg] = true
end
v = "" -- jetzt den Anzeigetext zusammenbauen
for g, _ in pairs(gebaeude_wert) do -- erst die direkt angegebenen Gebäude
if v ~= "" then
v = v .. ", "
end
end
v = v .. "[[" .. a .. "::" .. g .. "]]"
end
end
end
local v_query = ""     -- dann die via query ermittelten Gebäude
v = "" -- jetzt den Anzeigetext zusammenbauen
for g, _ in pairs(gebaeude_query) do
for g, _ in pairs(gebaeude_wert) do -- erst die direkt angegebenen Gebäude
if v_query ~= "" then
if v ~= "" then
v_query = v_query .. ", "
v = v .. ", "
end
v_query = v_query .. "[[" .. a .. "::" .. g .. "]]"
end
end
v = v .. "[[" .. a .. "::" .. g .. "]]"
end
local v_query = ""     -- dann die via query ermittelten Gebäude
for g, _ in pairs(gebaeude_query) do
if v_query ~= "" then
if v_query ~= "" then
v_query = v_query .. ", "
v = v .. "<br>automatisch ermittelt über Straße/Hausnummer: " ..
v_query
end
end
v_query = v_query .. "[[" .. a .. "::" .. g .. "]]"
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
end
if v_query ~= "" then
t = t .. p.attrZeile(a, v)
v = v .. "<br>automatisch ermittelt über Straße/Hausnummer: " .. v_query
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", "ZeigeNichtInStraße"}, {"Ort", "ZeigeNichtInOrt"}} do
v = p.attrValList(a[1], pargs)
if v ~= "" then
t = t .. p.zeile("[[Attribut:" .. a[1] .. "|" .. wob.attrText(a[1]) .. "]]", v,
"ausgeblendet:", "[[" .. a[2] .. "::" .. (pargs[a[2]] or "Nein") .. "]]")
end
end
else
v = p.attrValList(a, {[a] = w})
end
end
t = t .. p.attrZeile(a, v)
end
-- Dateiart/Dateityp
 
local extension = p.getExtension(title)
-- normale Zeilen
local filekind = p.getFilekind(extension)
t = t .. p.attrZeile("Urheber", p.attrValList("Urheber", pargs))
t = t .. p.attrZeile("Dateiart", "[[Dateiart::" .. filekind .. "]]",  
t = t .. p.attrZeile("Quellangaben", p.attrVal("Quellangaben", pargs))
"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))


-- Ort/Straße mit Ausblendung
-- Lizenz mit Setzen der Medienbetracher-Tags
for _, a in ipairs{{"Straße", "ZeigeNichtInStraße"}, {"Ort", "ZeigeNichtInOrt"}} do
local lizenz, is_cc_license =
v = p.attrValList(a[1], pargs)
p.ccLicenseCorrection(pargs["Lizenz"] or "") -- ggf. CC-Schreibeweise korrigieren
if v ~= "" then
if not is_cc_license then
t = t .. p.zeile("[[Attribut:" .. a[1] .. "|" .. wob.attr_text(a[1]) .. "]]", v, "ausgeblendet:",
lizenz = p.nocNcLicenseCorrection(lizenz) -- ggf. NoC-NC 1.0 Schreibweise korrigieren
"[[" .. a[2] .. "::" .. (pargs[a[2]] or "Nein") .. "]]")
end
end
end
if not com.isEmpty(lizenz) then -- Spezial-Behandlung für Media Viewer
 
t = t ..
-- Dateiart/Dateityp
"<tr>" ..
local extension = p.getExtension(title)
"<td class=\"fileinfo-paramfield\">'''[[Attribut:Lizenz|Lizenz]]'''</td>" ..
local filekind = p.getFilekind(extension)
"<td colspan = \"3\">" ..
t = t .. p.attrZeile("Dateiart", "[[Dateiart::" .. filekind .. "]]",
"<span class=\"licensetpl\">" ..
"Dateityp", "[[Dateityp::" .. extension .. "]]")
"<span class=\"licensetpl_short\">" ..
 
lizenz ..
-- Erstellungsdatum/ÜberDatum
"</span>" ..
for _, d in ipairs{
"</span>" ..
{"Erstellungsdatum", "Erstellungstag", "Erstellungsjahr"},
"</td>" ..
{"ÜberDatum", "ÜberTag", "ÜberJahr"}} do
"</tr>" ..
local date = pargs[d[1]] or ""
"{{#set:Lizenz=" .. lizenz .. "}}"
if date ~= "" then
t = t .. p.attrZeile(d[1], lfd.linkFormDate(date, d[1], d[2], d[3]))
end
end
end


-- normale Zeilen
-- normale Zeilen
t = t .. p.attrZeile("Seitennummer", p.attrValList("Seitennummer", pargs))
t = t .. p.attrZeile("UploadCommons", p.attrVal("UploadCommons", pargs))
t = t .. p.attrZeile("Signatur", p.attrVal("Signatur", pargs))
t = t .. p.attrZeile("Beschreibung", p.attrVal("Beschreibung", pargs),
t = t .. p.attrZeile("Länge", p.attrVal("Länge", pargs))
nil, nil, "fileinfotpl_desc") -- mit Setzen der Medienbetracher-Tags
t = t .. p.attrZeile("Lizenz", p.attrVal("Lizenz", pargs))
t = t .. p.attrZeile("UploadCommons", p.attrVal("UploadCommons", pargs))
-- Dateiinfo erstellen
t = t .. p.attrZeile("Beschreibung", p.attrVal("Beschreibung", pargs))
local dateiinfo, infotext = "", ""
 
if not com.isEmpty(pargs["Beschreibung"]) then -- Beschreibung
-- Dateiinfo erstellen
dateiinfo = dateiinfo ..
local dateiinfo, infotext = "", ""
wik.wikiTextLimit(pargs["Beschreibung"], 100) -- max. Zeichenanzahl Bild-Unterschrift
if not com.isEmpty(pargs["Beschreibung"]) then -- Beschreibung
if mw.ustring.len(dateiinfo) ~=
dateiinfo = dateiinfo .. wik.wikiTextLimit(pargs["Beschreibung"], 100) -- max. Zeichenanzahl Bild-Unterschrift
mw.ustring.len(pargs["Beschreibung"]) then
if mw.ustring.len(dateiinfo) ~= mw.ustring.len(pargs["Beschreibung"]) then
dateiinfo = dateiinfo .. " ..."
dateiinfo = dateiinfo .. " ..."
infotext = infotext .. pargs["Beschreibung"]
infotext = infotext .. pargs["Beschreibung"]
end
end
end
end
local urheber = str.splitAndStrip(pargs["Urheber"] or "", ";") -- Urheber
local urheber = str.splitAndStrip(pargs["Urheber"] or "", ";") -- Urheber
if #urheber > 0 then
if #urheber > 0 then
for u = 1, #urheber do
for u = 1, #urheber do
if wik.pageExists(urheber[u]) then
if wik.pageExists(urheber[u]) then
urheber[u] = "[[" .. urheber[u] .. "]]"
urheber[u] = "[[" .. urheber[u] .. "]]"
end
end
if infotext ~= "" then
infotext = infotext .. "<br>"
end
end
infotext = infotext .. wob.attrText("Urheber") .. ": " ..
table.concat(urheber, ", ")
end
end
if infotext ~= "" then
for _, d in ipairs{"Erstellungsdatum", "ÜberDatum"} do -- Erstellungsdatum, ÜberDatum
infotext = infotext .. "<br>"
date = pargs[d] or ""
if date ~= "" then
if infotext ~= "" then
infotext = infotext .. "<br>"
end
end
end
end
infotext = infotext .. wob.attr_text("Urheber") .. ": " .. table.concat(urheber, ", ")
if not com.isEmpty(lizenz) then -- Lizenz
end
for _, d in ipairs{"Erstellungsdatum", "ÜberDatum"} do -- Erstellungsdatum, ÜberDatum
date = pargs[d] or ""
if date ~= "" then
if infotext ~= "" then
if infotext ~= "" then
infotext = infotext .. "<br>"
infotext = infotext .. "<br>"
end
end
infotext = infotext .. wob.attr_text(d) .. ": " .. lfd.linkFormDate(date)
infotext = infotext .. wob.attrText("Lizenz") .. ": " .. lizenz
end
end
end
if not com.isEmpty(pargs["Lizenz"]) then -- Lizenz
if infotext ~= "" then
if infotext ~= "" then
infotext = infotext .. "<br>"
if dateiinfo ~= "" then
dateiinfo = dateiinfo .. " "
end
dateiinfo = dateiinfo .. "{{#info:" .. infotext .. "|note}}"
end
end
infotext = infotext .. wob.attr_text("Lizenz") .. ": " .. pargs["Lizenz"]
end
if infotext ~= "" then
if dateiinfo ~= "" then
if dateiinfo ~= "" then
dateiinfo = dateiinfo .. " "
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 "") ..
"&nbsp; &#x25BD; mehr Infos &#x25BD;", 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
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


-- Tabellenende mit sem. Browsen
-- Tabellenende mit sem. Browsen und Bilder-Suche
t = t .. p.zeile("[[Bild:IconSearch.svg|16px|semantisches Browsen|link=Spezial:Durchsuchen/{{FULLPAGENAME}}]]",
t = t .. p.zeile("[[Bild:IconSearch.svg|16px|Semantisches Browsen|link=Spezial:Durchsuchen/{{FULLPAGENAME}}]]",
"[[Spezial:Durchsuchen/{{FULLPAGENAME}}|semantisches Browsen]]")
"[[Spezial:Durchsuchen/{{FULLPAGENAME}}|Semantisches Browsen]] / " ..
t = t .. "</table>"
"{{#queryformlink:form=Abfrage Bilder|link text=Bilder-Suche}}")
t = t .. "</table>"
-- Seite setzen
t = t .. "{{#set:Seite=" .. wik.fullpagename() .. "}}"
-- Seite setzen
-- mw.logObject(t, "t")
t = t .. "{{#set:Seite=" .. wik.fullpagename() .. "}}"
t = frame:preprocess(t)
 
end -- if wik.namespace() == "Datei" then


-- mw.logObject(t, "t")
t = frame:preprocess(t)
-- mw.logObject(t, "t")
-- mw.logObject(t, "t")
return t
return t
Zeile 230: Zeile 322:
end
end
function p.attrZeile(a1, v1, a2, v2) -- Tabellenzeile mit max. 2 Attributen
function p.attrZeile(a1, v1, a2, v2, id1) -- Tabellenzeile mit max. 2 Attributen
local t = ""
local t = ""
if v1 ~= "" then
if v1 ~= "" then
a1 = "[[Attribut:" .. a1 .. "|" .. wob.attr_text(a1) .. "]]"
a1 = "[[Attribut:" .. a1 .. "|" .. wob.attrText(a1) .. "]]"
if a2 ~= nil and v2 ~= nil and v2 ~= "" then
if a2 ~= nil and v2 ~= nil and v2 ~= "" then
a2 = "[[Attribut:" .. a2 .. "|" .. wob.attr_text(a2) .. "]]"
a2 = "[[Attribut:" .. a2 .. "|" .. wob.attrText(a2) .. "]]"
end
end
t = t .. p.zeile(a1, v1, a2, v2)
t = t .. p.zeile(a1, v1, a2, v2, id1)
end
end
return t
return t
end
end


function p.zeile(a1, v1, a2, v2) -- Tabellenzeile mit max. 2x2 Einträgen
function p.zeile(a1, v1, a2, v2, id1) -- Tabellenzeile mit max. 2x2 Einträgen
local t = ""
local t = ""
if v1 ~= "" then
if v1 ~= "" then
t = t .. "<tr>"
t = t .. "<tr>"
t = t .. "<td>'''" .. a1 .. "'''</td>"
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
if a2 == nil or v2 == nil or v2 == "" then
t = t .. "<td colspan = \"3\">" .. v1 .. "</td>"
t = t .. "<td colspan = \"3\">" .. v1 .. "</td>"
Zeile 257: Zeile 353:
end
end
return t
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
end


return p
return p