|
|
| Zeile 1: |
Zeile 1: |
| p = {} | | p = {} |
| | |
| local com = require("Modul:Common") | | local com = require("Modul:Common") |
| local dev = require("Modul:Development") | | local dev = require("Modul:Development") |
| Zeile 9: |
Zeile 10: |
| local lfd = require("Modul:LinkFormDatum") | | local lfd = require("Modul:LinkFormDatum") |
|
| |
|
| local attr_text_anzeige = { | | local fab_zeilen = require("Modul:Faktenbox/Zeilen") |
| ["AbweichendeNamensform"] = "Abw. Namen",
| |
| ["AngebotVegetarisch"] = "Vegetarische Speisen",
| |
| ["Ausfuehrung"] = "Ausführung",
| |
| ["BestandArchivFuerthWiki"] = "Bestand Archiv FürthWiki",
| |
| ["BietetKartenzahlung"] = "Kartenzahlung möglich",
| |
| ["DenkmalstatusBesteht"] = "Denkmalstatus besteht",
| |
| ["GastroBetreiber"] = "Betreiber",
| |
| ["GastroGenre"] = "Genre",
| |
| ["GewässerlängeStadtgebiet"] = "Länge im Stadtgebiet",
| |
| ["Gewässermündung"] = "Mündung bzw. Austritt aus Stadtgebiet",
| |
| ["Gewässerquelle"] = "Quelle bzw. Eintritt ins Stadtgebiet",
| |
| ["GewässerRegimetyp"] = "Wasserführung",
| |
| ["Gewässerstatus"] = "Status/Lage",
| |
| ["Gewässerstellung"] = "Stellung",
| |
| ["Gewässerursprung"] = "Ursprung",
| |
| ["HatAußenplätze"] = "Außenplätze vorhanden",
| |
| ["HatFassbier"] = "Fassbier-Ausschank",
| |
| ["HatNebenraum"] = "Nebenraum vorhanden",
| |
| ["ISBNnr"] = "ISBN-Nr.",
| |
| ["IstBarrierefrei"] = "Barrierefrei",
| |
| ["Nachfolger"] = "nachher dort",
| |
| ["PLZ"] = "Postleitzahl",
| |
| ["StatistischerBezirk"] = "Statistischer Bezirk",
| |
| ["StatistischerDistrikt"] = "Statistischer Distrikt",
| |
| ["TeilDesAreals"] = "Teil des Areals",
| |
| ["TeilDesEnsembles"] = "Teil des Ensembles",
| |
| ["TeilDesGebäudeKomplexes"] = "Teil des Gebäude-Komplexes",
| |
| ["Vorgänger"] = "vorher dort"
| |
| }
| |
|
| |
|
| function p.Faktenbox(frame) | | function p.Faktenbox(frame) |
| Zeile 238: |
Zeile 210: |
| end | | end |
|
| |
|
| function p.zeileKategorieSeite(fbdata, kindex) | | -- wrapper für functions von Modul:Faktenbox/Zeilen |
| -- mw.log("zeileKategorieSeite(fbdata, " .. (kindex or 1) .. ")")
| | function p.zeileKategorieSeite(fbdata, kindex) return fab_zeilen.zeileKategorieSeite_(fbdata, kindex) end |
| -- mw.logObject(fbdata)
| | function p.zeileStrasseHnr(fbdata) return fab_zeilen.zeileStrasseHnr_(fbdata) end |
| -- Konsolenzeile zum Debuggen:
| | function p.zeileAktenNr(fbdata) return fab_zeilen.zeileAktenNr_(fbdata) end |
| -- =p.zeileKategorieSeite({pagename="fpn",kategorie={"kat1","kat2"},klasse={"kla1","kla2"}}, 2)
| | function p.zeileGeoDaten(fbdata) return fab_zeilen.zeileGeoDaten_(fbdata) end |
| local t = ""
| | function p.zeileDatum(args) return fab_zeilen.zeileDatum_(args) end |
| t = t .. "<dt>[[:Kategorie:" .. fbdata.kategorie[kindex or 1] .. "|" .. fbdata.klasse[kindex or 1] .. "]]</dt>"
| | function p.zeile(args) return fab_zeilen.zeile_(args) end |
| if wik.pageexists("Kategorie:" .. fbdata.pagename) then
| |
| t = t .. "<dd>[[:Kategorie:" .. fbdata.pagename .. "|" .. fbdata.pagename .. "]]{{#set:Seite=" .. fbdata.pagename .. "}}</dd>"
| |
| else
| |
| t = t .. "<dd>[[Seite::" .. fbdata.pagename .. "]]</dd>"
| |
| end
| |
| -- mw.log("t = " .. t)
| |
| return t
| |
| end
| |
| | |
| function p.zeileStrasseHnr(fbdata) | |
| -- mw.log("zeileStrasseHnr(fbdata)")
| |
| -- mw.logObject(fbdata.strasse_hnr)
| |
| -- Konsolenzeile zum Debuggen:
| |
| -- =p.zeileStrasseHnr{strasse_hnr={strasse={{name="Erlanger Straße",hausnummer={"11", "13"}},{name="XY Straße",hausnummer={}}},anzahlGebaeude=3}}
| |
| local t = ""
| |
| for is, sh in ipairs(fbdata.strasse_hnr.strasse) do -- Straßen/Hausnummer-Kombis durchiterieren
| |
| t = t .. "<dt>"
| |
| if is > 1 then
| |
| t = t .. is .. ". " -- Numerierungsanzeige "2., "3." usw.
| |
| else
| |
| is = "" -- keine 1, aber 2, 3, ... für weitere Verwendung
| |
| end
| |
| t = t .. "[[Attribut:Straße" .. is .. "|Straße]]"
| |
| if #sh.hausnummer > 0 then
| |
| t = t .. " / " .. "[[Attribut:Hausnummer" .. is .. "|Hausnummer]]" -- nur wenn Hausnummern vorhanden
| |
| end
| |
| t = t .. "</dt><dd>[[Straße" .. is .. "::" .. sh.name .. "]]"
| |
| for ih, h in ipairs(sh.hausnummer) do -- Hausnummern durchiterieren
| |
| local strasse_hnr_ = sh.name .. " " .. h
| |
| if ih > 1 then
| |
| t = t .. "," -- Kommas davor ab 2. Hausnummer
| |
| end
| |
| if wik.pageexists(strasse_hnr_) then -- Link, wenn Seite vorhanden
| |
| t = t .. " [[" .. strasse_hnr_ .. "|" .. h .. "]]"
| |
| else
| |
| t = t .. " " .. h
| |
| end
| |
| t = t .. "{{#set:Hausnummer" .. is .. "=" .. h .. "|StraßeHnr=" .. strasse_hnr_ .. "}}" | |
| end
| |
| t = t .. "</dd>"
| |
| end
| |
| t = t .. "{{#set:AnzahlGebäude=" .. fbdata.strasse_hnr.anzahlGebaeude .. "}}"
| |
| -- mw.log("t = " .. t)
| |
| return t
| |
| end
| |
| | |
| function p.zeileAktenNr(fbdata) | |
| -- mw.log("zeileAktenNr(fbdata)")
| |
| -- mw.logObject(fbdata.pargs)
| |
| -- Konsolenzeile zum Debuggen:
| |
| -- =p.zeileAktenNr{pargs={AktenNr="D-5-63-000-1464"}}
| |
| local t = ""
| |
| local aktennr = str.splitAndStrip(fbdata.pargs["AktenNr"] or "", ";")
| |
| if #aktennr > 0 then
| |
| t = t .. "<dt>" .. "[[Attribut:AktenNr|Akten-Nr.]]</dt><dd>"
| |
| for i, a in ipairs(aktennr) do
| |
| if i > 1 then
| |
| t = t .. ",<br>" | |
| end
| |
| local p = que.getPages("[[:+]][[AktenNr::" .. a .. "]]", true)
| |
| if #p > 1 then
| |
| t = t .. "{{#queryformlink:form=Abfrage Denkmalschutz|link text=[[AktenNr::" .. a .. "]]|query string=Abfrage Denkmalschutz[AktenNr]=" .. a .. "&_run}}"
| |
| else
| |
| t = t .. "[[AktenNr::" .. a .. "]]"
| |
| end
| |
| t = t .. " (" .. #p .. ")" -- Anzahl der Artikel mit dieser Akten-Nr. in Klammern
| |
| end
| |
| t = t .. "</dd>"
| |
| end
| |
| -- mw.log("t=" .. t)
| |
| return t
| |
| end
| |
| | |
| function p.zeileGeoDaten(fbdata) | |
| -- mw.log("zeileGeoDaten()")
| |
| -- mw.logObject(fbdata)
| |
| -- Konsolenzeile zum Debuggen:
| |
| -- fbdata=p.fbdata{pargs={}}; fbdata.fullpagename="Isaak-Loewi-Straße 1, 3, 5, 7, 9, Liesl-Kießling-Straße 16"; print(p.zeileGeoDaten(fbdata))
| |
| local t = ""
| |
| local geokoordinate = que.getValues(fbdata.fullpagename, "Geokoordinate", true)
| |
| local geojson = que.getValues(fbdata.fullpagename, "GeoJson", true)
| |
| mw.logObject(geojson)
| |
| if #geokoordinate > 0 or #geojson > 0 then
| |
| t = t .. "<dt>[[Attribut:Geokoordinate|Geo-Daten]]</dt><dd>"
| |
| local first = true
| |
| for _, g in ipairs(geokoordinate) do
| |
| if first then | |
| first = false
| |
| else
| |
| t = t .. ",<br>"
| |
| end
| |
| t = t .. geo.osmLink(fbdata.frame, g)
| |
| end
| |
| if #geojson > 0 then
| |
| if not first then
| |
| t = t .. ",<br>"
| |
| end | |
| t = t .. "[[" .. geojson[1] .. "|GeoJson-Karte]]"
| |
| end
| |
| t = t .. "</dd>"
| |
| end
| |
| -- mw.log("t = " .. t)
| |
| return t
| |
| end
| |
| | |
| function p.zeileDatum(args) | |
| -- mw.log("zeileDatum(args)")
| |
| -- mw.logObject(args)
| |
| -- Konsolenzeile zum Debuggen:
| |
| -- =p.zeileDatum{attr_date="Weihedatum",date="1959/11/15",attr_day="Weihetag",attr_year="Weihejahr"}
| |
| local t = ""
| |
| local date = str.strip(args.date or "")
| |
| if date ~= "" then
| |
| t = t .. "<dt>" .. "[[Attribut:" .. args.attr_date .. "|" .. (args.attr_text or args.attr_date) .. "]]</dt><dd>"
| |
| t = t .. lfd.linkFormDate(date, args.attr_date, args.attr_day, args.attr_year)
| |
| t = t .. "</dd>"
| |
| end
| |
| -- mw.log("t = " .. t)
| |
| return t
| |
| end | |
| | |
| function p.zeile(args) | |
| -- mw.log("zeile(args)")
| |
| -- mw.logObject(args)
| |
| -- Konsolenzeile zum Debuggen:
| |
| -- =p.zeile{attr_name="Vorgänger",attr_text="t",fbdata={pargs={["Vorgänger"]="; v11 , V12 ; v13 (a(b))"}},attr_val="; v1 ; v2, v3 (a(b))",val_prefix="pre",val_postfix="post",exclude_bracket_values=true,delimiter=","}
| |
| local t = ""
| |
| -- Attribut-Name/Wert aufbereiten (splitten, in table umwandeln)
| |
| local attr_name = args.attr_name
| |
| local attr_val = args.attr_val or args.fbdata.pargs[attr_name] or {}
| |
| if type(attr_val) ~= "table" then -- Liste in table umwandeln/zerteilen
| |
| if args.delimiter ~= nil then
| |
| attr_val = str.splitAndStrip(attr_val, args.delimiter or ";")
| |
| elseif attr_val ~= "" then
| |
| attr_val = { attr_val }
| |
| else
| |
| attr_val = {}
| |
| end
| |
| end
| |
| -- Zeile zusammenbauen
| |
| if #attr_val > 0 then
| |
| -- Attribut-Text ermitteln und in Zeile übernehmen
| |
| local attr_text = args.attr_text or attr_text_anzeige[attr_name] or attr_name
| |
| if #attr_val > 1 then
| |
| attr_text = mez.mehrzahl(attr_text) -- Mehrzahl
| |
| end
| |
| t = t .. "<dt>" .. "[[Attribut:" .. attr_name .. "|" .. attr_text .. "]]</dt>"
| |
| -- Attribut-Werte in Zeile übernehmen
| |
| t = t .. "<dd>"
| |
| if args.val_prefix ~= nil then
| |
| t = t .. args.val_prefix .. " " -- Prefix
| |
| end
| |
| for idx, val in ipairs(attr_val) do -- Werte-Liste
| |
| if idx > 1 then
| |
| t = t .. ", " -- Listen-Kommata
| |
| end
| |
| if mw.smw.getPropertyType(attr_name) == "_wpg" then -- Seiten-Attribute Spezialbehandlung
| |
| t = t .. p.setPageAttr(attr_name, val)
| |
| else -- alle anderen Attribut-Datentypen
| |
| local val_pre_bracket, val_post_bracket = "", ""
| |
| if com.isTrue(args.exclude_bracket_values) then -- Klammer-Text separieren (kein Attribut-Wert)
| |
| val_pre_bracket, val, val_post_bracket = str.bracketSplitAndStrip(val) -- nach Klammern suchen und aufteilen
| |
| end
| |
| if val_pre_bracket ~= "" then
| |
| t = t .. val_pre_bracket .. " "
| |
| end
| |
| t = t .. "[[" .. attr_name .. "::" .. val .. "]]"
| |
| if val_post_bracket ~= "" then
| |
| t = t .. " " .. val_post_bracket
| |
| end
| |
| end
| |
| end
| |
| if args.val_postfix ~= nil then
| |
| t = t .. " " .. args.val_postfix -- Postfix
| |
| end
| |
| t = t .. "</dd>"
| |
| end
| |
| -- mw.log("t = " .. t)
| |
| return t
| |
| end | |
|
| |
|
| function p.faktenboxSemantikBrowsen(fbdata) | | function p.faktenboxSemantikBrowsen(fbdata) |
| Zeile 523: |
Zeile 315: |
| -- mw.logObject(fbdata) | | -- mw.logObject(fbdata) |
| return fbdata | | return fbdata |
| end
| |
|
| |
| function p.setPageAttr(name, val)
| |
| local t = ""
| |
| if string.find(val, "[#=<>%[%]%|%{%}]") ~= nil then -- problematische Wikitext/HTML-Inhalte vorhanden?
| |
| t = val .. "{{#set:" .. name .. "=" .. val .. "}}" -- ==> kein Link, sondern nur Attribut versteckt setzen
| |
| elseif wik.pageexists(val) then -- eine vorhandene Seite regulär setzen
| |
| t = "[[" .. name .. "::" .. val .. "]]"
| |
| else
| |
| val_pre_bracket, val_without_bracket, val_post_bracket = str.bracketSplitAndStrip(val) -- nach Klammern suchen und aufteilen
| |
| if not wik.pageexists(val_without_bracket) then -- Seite auch ohne Klammern nicht vorhanden?
| |
| t = val .. "{{#set:" .. name .. "=" .. val .. "}}" -- ==> kein Link, sondern nur Attribut versteckt setzen
| |
| else
| |
| if val_pre_bracket ~= "" then -- Klammer-Text vor eigentlicher Seite
| |
| t = t .. val_pre_bracket .. " "
| |
| end
| |
| t = t .. "[[" .. name .. "::" .. val_without_bracket .. "]]" -- das eigentliche Attribut-Setzen
| |
| if val_post_bracket ~= "" then -- Klammer-Text nach eigentlicher Seite
| |
| t = t .. " " .. val_post_bracket
| |
| end
| |
| end
| |
| end
| |
| return t
| |
| end | | end |
|
| |
|
| return p | | return p |