v2.0.9
LrMediaWiki2 – SDC-Erweiterungen (Cammello-Angleichung) + Sicherheits-/Robustheits-Fixes
Version 2.0.9 (Juli 2026)
Korrekturen nach Praxistest von 2.0.8 – Umbau auf ausschließlich in dieser
Lightroom-Installation NACHWEISLICH funktionierende Bindings:
- Suchergebnisse wieder sichtbar. Befund: push_buttons mit GEBUNDENEM
Titel aktualisieren nicht (im Basis-Plugin existieren gebundene Titel nur
auf static_text), undvisibleauf Zeilen-Containern wird ignoriert –
deshalb blieben die Treffer-Buttons unsichtbar. Neu: Treffer erscheinen im
Dropdown mit gebundenen Items (dieser Mechanismus hat in 2.0.7
nachweislich funktioniert), der erste Treffer ist vorausgewählt, und
„⬅ Übernehmen" (statischer Titel, bewiesen) übernimmt – der Normalfall
bleibt also EIN Klick, wie gewünscht. Ein direkter Klick auf einen
Listeneintrag ist im LrView-SDK nicht zuverlässig abbildbar: es gibt kein
Listen-Control, der Auswahl-Observer war nachweislich unzuverlässig
(2.0.7) und gebundene Button-Titel nachweislich unsichtbar (2.0.8). - Leere Sprachzeilen ausgeblendet:
visibleist jetzt auf den
FELDERN der Caption-Zeilen gebunden statt (nur) auf der Zeile –
Zeilen-Container haben laut SDK-Doku keine eigenen
Nicht-Layout-Properties. VERIFY: Control-Level-visible ist in dieser
Installation noch ungetestet; falls die leeren Zeilen weiterhin sichtbar
sind, ist der Fallback, alle 12 Zeilen fest anzuzeigen und ➕ zu
entfernen – bitte Rückmeldung.
Version 2.0.8 (Juli 2026)
- Suchergebnisse als klickbare Liste im Dialog (statt Dropdown): Nach
0,6 s Tippruhe erscheinen bis zu 5 Treffer als Buttons direkt unter dem
Suchfeld („Label – Beschreibung (QID)"); ein Klick übernimmt. Kein
✚-Button, kein Dropdown, kein Auswahl-Observer mehr – der unzuverlässige
Klick-Observer aus 2.0.7 ist ersetzt. (Ein popup_menu lässt sich per SDK
nicht programmatisch aufklappen; die offene Button-Liste ist das
gewünschte Verhalten.) - Kommentare jetzt sichtbar: Ein Klick auf ein Suchergebnis trägt
Q640 # Harald Krichelins Feld ein; die Zeile landet 1:1 als
depicts=…im Wikitext-Feld. Im Export-Dialog sind die Defaults
jetzt kommentiert (Q73566113 # copyrighted,Q18199165 # CC BY-SA 4.0)
und die Lizenz-Auswahl zeigtQ18199165 # CC BY-SA 4.0/
Q6938433 # CC0. Der Export streift# …weiterhin vor dem Upload ab. - Farbliche Hervorhebung entfernt (LrColor/text_color raus).
- Sprachen als freie ISO-Code-Felder: Die ersten 4 Slots sind mit
en/de/fr/it vorbelegt; „➕ Sprache" blendet einen leeren Slot ein,
der Code wird von Hand eingetragen (12 Slots gesamt). Geparste Captions
in weiteren Sprachen werden automatisch auf die Slots verteilt
(alphabetisch); bei mehr als 12 Sprachen bleiben überzählige
caption_XX=-Zeilen verlustfrei erhalten (Überlauf-Logik, getestet).
Ungültige Codes (< 2 Buchstaben, Leerzeichen) werden beim Speichern
verworfen statt kaputte Labels hochzuladen.
Datei ToolEditSdc.lua wurde komplett neu geschrieben. VERIFY in Lightroom:
push_button mit GEBUNDENEM title (die Treffer-Buttons) – erstmals in diesem
Plugin verwendet; falls die Titel nicht aktualisieren, bitte melden.
Version 2.0.7 (Juli 2026)
- QID-Labels in zartem Blau. Per-Feld-Hintergrundfarben sind im
Lightroom-SDK nicht möglich (background_colorexistiert nur auf
scrolled_view, Min. 80 px Höhe + Scrollbalken). Stattdessen sind die
Label-Texte der QID-Felder (Depicts, Created during) in einem dezenten
Blau (LrColor(0.25, 0.45, 0.75)) – so sind die Wikidata-Felder
visuell sofort erkennbar. - ➕ Sprache fügt jetzt über die initialen 4 hinaus bis zu 12 Sprachen
hinzu (en/de/fr/it/es/nl/pl/ru/zh/pt/ja/uk). Captions in weiteren
Sprachen bleiben verlustfrei im Wikitext-Feld. - Klick auf Suchergebnis übernimmt direkt (kein ✚-Button mehr). Ein
Observer auf der Dropdown-Auswahl feuert automatisch; ein Guard-Flag
verhindert, dass die programmatische Befüllung mit Suchergebnissen
bereits einen Eintrag hinzufügt. - QID-Kommentare: Ein Suchergebnis wird als
Q640 # Harald Krichel
eingetragen; bei manueller Eingabe kann manQ18199165 # CC BY-SA 4.0
schreiben. Der Export streift den# …-Teil beim Splitten/Normalisieren
sauber ab (Depicts-Loop, normalizeSdcQid für Batch-Felder). Kommentare
werden indescription_allgespeichert und round-trippen verlustfrei.
Auch im Export-Dialog (Creator, Copyright, License, Created during) kann
man jetztQ640 # Nameeintippen.
Version 2.0.6 (Juli 2026)
- Verteilen-Haken: Merge statt Ersetzen, standardmäßig gesetzt. Beim
Übertragen auf die Auswahl werden fehlende QIDs ergänzt; eigene Depicts der
Fotos bleiben erhalten. Die Duplikaterkennung greift auch über alte
Komma-Listen (Randfall vom Test gefangen: vorher hätteQ1, Q2+Q2ein
Duplikat erzeugt). - Upload-Format verifiziert: Der Export erzeugt bereits eine separate
P180-Aussage pro QID (per Test gegen den JSON-Aufbau bestätigt); die
Semikolon-/Komma-Liste ist nur das Eingabeformat und wird vor dem Upload
gesplittet. Keine Änderung nötig. - Layout: QID-Feld und Suchfeld je in einer Zeile; das Ergebnis-Dropdown
nutzt darunter die volle Breite (Depicts und Created-during). - Nur noch 5 Sprachen im Caption-Dropdown (en, de, fr, it, es; 4 sichtbar,
➕ blendet die fünfte ein). Captions in anderen Sprachen bleiben verlustfrei
im Wikitext-Feld und werden beim Export weiterhin publiziert. - Neuer Button „⬇ Captions → Wikitext": übernimmt alle gefüllten Captions
als{{lang|1=…}}-Blöcke an den Anfang des Wikitext-Felds (idempotent:
identische Blöcke und doppelte Sprachen werden übersprungen); die Captions
selbst bleiben unverändert als SDC-Labels erhalten. - Umbenennung: „Description (all)" heißt jetzt überall „Wikitext" –
Set-Titel „LrMediaWiki – Wikitext", Feld-Label, Menüpunkt („🔁 Description
fields ↔ Wikitext"), Tooltips, Übersetzung. Die Feld-IDdescription_all
bleibt unverändert (kein Schema-Bump, keine Datenmigration, macOS-Kürzel
für den SDC-Editor unberührt).
Version 2.0.5 (Juli 2026)
SDC-Editor (ToolEditSdc.lua) komplett überarbeitet:
- Live-Suche bei Eingabe: Suchfeld für Depicts UND Created-during – die
Wikidata-Suche startet automatisch nach 0,6 s Tippruhe (Debounce per
Generations-Zähler; ein neuer Tastendruck bricht die alte Abfrage ab).
Ergebnisse erscheinen in einem Dropdown im selben Dialog (kein
verschachtelter Modal mehr); „✚"-Button übernimmt die Auswahl. - Semikolon statt Komma als Depicts-Trennzeichen (Semikolon ist
eindeutiger in Titeln mit Komma). Der Export (MediaWikiInterface.lua)
akzeptiert jetzt beides – Komma und Semikolon – damit bestehende
describes=-Zeilen weiter funktionieren. - Created-during mit eigener Suchzeile (Dropdown + ✚) – gleiche
Live-Suche wie Depicts, schreibt eine einzelne QID.
Zu verifizieren in Lightroom: addObserver auf Property-Table-Felder und
items = bind(…) für dynamisch befüllte popup_menus sind Standard-SDK, aber
in diesem Plugin erstmals verwendet. Falls das Dropdown nicht aktualisiert
wird, Fallback: die Observer-Zeilen entfernen und stattdessen den alten
Button-getriebenen Ablauf beibehalten (sag Bescheid).
Version 2.0.4 (Juli 2026)
SDC-Editor leichter erreichbar: „🏷️ Edit Structured Data (SDC)" und der
Konverter stehen jetzt zusätzlich unter Bibliothek → Zusatzmoduloptionen
(LrLibraryMenuItems) – im Bibliothek-Modul ein Menü näher an der
Metadatenarbeit. Für Ein-Tasten-Zugriff auf dem Mac: Systemeinstellungen →
Tastatur → Tastaturkurzbefehle → App-Kurzbefehle → „+", App „Adobe Lightroom
Classic", als Menütitel exakt „🏷️ Edit Structured Data (SDC)" einfügen
(am besten kopieren, wegen des Emojis) und ein Kürzel vergeben. Die Titel in
beiden Menüs sind absichtlich identisch, damit das Kürzel unabhängig vom Menü
dasselbe Skript startet.
Version 2.0.3 (Juli 2026)
Wikidata-Namenssuche im SDC-Editor wieder eingebaut (war in einer früheren
Runde auf Wunsch entfernt worden): Unter dem Depicts-Feld gibt es wieder
Suchfeld + „🔍 Suchen". Die Suche nutzt wbsearchentities (öffentlich, ohne
Login, Sprache de, max. 10 Treffer); die Auswahl erfolgt in einem
Treffer-Dialog („Label – Beschreibung (QID)"), die QID wird ans Depicts-Feld
angehängt (dedupliziert, q→Q normalisiert). Zu verifizieren in Lightroom: der
Treffer-Dialog öffnet als verschachteltes Modal über dem Tool-Dialog – falls
das klemmt, Umbau auf eine Ergebnisliste im selben Dialog. Das manuelle
Depicts-Feld funktioniert unabhängig davon.
Version 2.0.2 (Juli 2026)
- Doppelte „Farbmarkierung beim Export" entfernt (Zusatzmodul-Manager):
Die Zeile existierte zweimal – einmal korrekt als popup_menu mit
übersetzbaren Farbnamen, einmal als combo_box mit rohen englischen Werten
(und einemnilals erstem Item, das in Lua das Array kappt). Das Duplikat
ist entfernt; die Farbnamen sind jetzt übersetzt. - Farbmarkierung zusätzlich im Export-Dialog (Sektion Login/Einstellungen,
unter dem API-Pfad). Gleiche globale Einstellung wie im Zusatzmodul-Manager
(eine Quelle: Plug-in-Preferences; geladen in startDialog, gespeichert in
endDialog). - Set „Description (all)" auf das eine Feld reduziert (25 Zeilen hoch) –
Captions/SDC stecken im Wikitext bzw. werden extern erstellt und
eingefügt. - Deutsche Übersetzungen ergänzt (TranslatedStrings_de.txt, ~28 neue
Einträge): SDC-Export-Sektion, Seitenleisten-Felder inkl. Tooltips,
Farbnamen, HTTPS-/Galerie-Meldungen, „Beschreibung (gesamt)". Nebenbei
drei vorbestehende Formatdefekte repariert (Trailing-Komma nach dem
schließenden Anführungszeichen in Zeilen 78/191/192 – solche Zeilen werden
je nach Parser ignoriert). Hinweis: „Stellt dar (P180)" ggf. an die
bevorzugte Commons-Terminologie anpassen. Die Dialoge der neuen Tools sind
direkt deutsch beschriftet. - ToolEditSdc repariert („We can only wait from within a task"): Das Tool
las Foto-Metadaten außerhalb eines Tasks (Menü-Skripte laufen auf dem
UI-Thread). Der gesamte Ablauf läuft jetzt in einem Async-Task; der Dialog
aus dem Task heraus ist das etablierte Muster des Plugins
(MediaWikiInterface.prompt).
Version 2.0.1 (Juli 2026)
Versionspolitik ab jetzt: die dritte Stelle (Revision) steigt bei jeder
gelieferten Änderung; die zweite Stelle nur auf ausdrücklichen Wunsch.
(Nebenbefund behoben: Info.lua enthielt ZWEI VERSION-Einträge – Lua behält
still den letzten; das tote Duplikat ist entfernt.)
Seitenleiste: Depicts (P180) und darunter Created during (P10408) sind
jetzt in den Metadaten-Sets sichtbar (die Felder existierten seit Schema 11,
standen aber in keinem Set – Sets bestimmen die Anzeige, nicht der Provider).
Neu dazu die Einzelfelder Description (en) / Description (de)
(Schema 11 → 12).
Neues Set „LrMediaWiki – Description (all)": eigene Ansicht für das
All-in-one-Wikitext-Feld (15 Zeilen) + Caption/Depicts/Created-during/
Categories. description_all ist aus den Sets „Information" und
„Information (de)" ausgelagert; dort stehen jetzt die Einzelfelder.
Konvertierung: Das Lightroom-SDK bietet KEINEN Hook beim Umschalten des
Metadaten-Dropdowns (Tagsets sind rein statische Definitionen aus id/title/
items). Automatisches Konvertieren „beim Umschalten" ist daher nicht möglich.
Stattdessen:
- Menü-Tool „🔁 Description fields ↔ Description (all)" (Datei →
Zusatzmoduloptionen): konvertiert die Auswahl in beide Richtungen mit
Move-Semantik. Konfliktschutz: anders belegte Ziele werden übersprungen und
gezählt, nichts wird überschrieben; identische Werte werden dedupliziert.
Verschachtelte Templates in Beschreibungen ({{w|…}} u. ä.) werden korrekt
balanciert geparst. - Export-Merge als Sicherheitsnetz: Beim Export werden gefüllte
Einzelfelder automatisch als{{en|1=…}}/{{de|1=…}}in die
Wikitext-Beschreibung eingemischt (mit Duplikatschutz). Beide Darstellungen
sind beim Export also immer gleichwertig – auch ohne das Tool.
Bereinigt: „Information (de)" referenzierte sechs Felder, die es im
Provider nicht mehr gibt (source, author, date, otherVersions,
templates, alt-description_de) – ersetzt durch existierende Felder.
Per-Foto source/author/date wären zudem semantisch falsch (sie landeten in
|description=); falls du echte Per-Foto-Overrides dafür willst, geht das
sauber nur als neue key=value-Tags plus Exporter-Support – auf Zuruf.
Diese sechs Dateien ersetzen die gleichnamigen Dateien in deinem Plugin-Ordner
mediawiki.lrdevplugin/. Alle wurden mit luac5.1 -p (Lua 5.1, wie im
Lightroom-SDK) syntaxgeprüft; die reine String-/Logik-Teile sind zusätzlich mit
automatisierten Tests abgesichert (inkl. JSON-Escaping-Tests gegen die echte
gebündelte JSON.lua). Das GUI-/Laufzeitverhalten in Lightroom konnte nicht
getestet werden – siehe „Bitte prüfen".
Audit-Fixes (Sicherheit/Robustheit, Juli 2026)
- Passwort/Tokens nicht mehr im Logfile (MediaWikiApi): Request-Body- und
Response-Traces maskierenpassword/lgpassword/token/logintoken/
lgtokensowie…token="…"-Werte. Vorher stand das Klartext-Passwort bei
aktiviertem Logging inDocuments/LrMediaWikiLogger.log(upstream sogar so
dokumentiert). Alte Logdatei löschen! - wbeditentity-JSON via JSON:encode statt String-Konkatenation: Captions
mit",\oder Steuerzeichen konnten das JSON brechen oder Struktur
injizieren. Leere Teile werden weggelassen (kein[]fürlabels). - Galerie-Überschreib-Schutz: Ein Lesefehler (z. B. HTTP 429 direkt nach
dem Batch) wurde bisher als „Seite existiert nicht" gewertet → die
bestehende Galerie-Seite wurde komplett ersetzt. Jetzt wird nur bei 404 neu
angelegt, sonst übersprungen (Bezel-Hinweis + Trace). - Passwort nicht mehr in Export-Presets:
passwordist kein
exportPresetField mehr; beim Speichern eines Presets landete es sonst im
Klartext auf der Platte. Alte Presets ggf. neu speichern/löschen. - HTTPS-Zwang:
http://-API-Pfade werden vor dem Login abgelehnt. - badtoken-Retry für den Multipart-Upload (verhindert Batch-Abbruch bei
abgelaufenem CSRF-Token). - Rename-Upload-Fehler nicht mehr verschluckt (Rückgabewert der Rekursion
wird propagiert). - Platzhalter-Prüfung: Whitelist üblicher Tags (
<sub>,<ref>,
<gallery>…), prüft alle Vorkommen; vorher brach ein legitimes<sub>den
ganzen Export ab. - Artwork-/Object-photo-Platzhalter repariert (
<artArtist>usw. wurden
durch eine Tabellen-Neuzuweisung verworfen). - Galerie-Namensextraktion: das zu
\x01 95pverstümmelte französische
„ à " wurde durch die korrekte UTF-8-Sequenz (\195\160) ersetzt. - Search&Replace-Tools: Nutzereingabe wird jetzt literal behandelt
(ToolSearchAndReplaceMetadata.lua,ToolSearchAndReplaceFilename.lua).
Vorher wurde die Eingabe als Lua-Pattern interpretiert: Suchtexte, die auf
%enden (z. B. „50%") oder ein unbalanciertes[enthalten, warfen einen
Laufzeitfehler mitten im Batch;( ) . * + - ? ^ $änderten still die
Semantik (z. B. fand „(Test)" das Literal nie). Zusätzlich: Guard gegen
leeren Suchstring (hätte den Ersatz zwischen jedes Zeichen eingefügt). - Weitere Korrekturen in den S&R-Tools: Metadata-Tool: tote, doppelt
fehlerhafte Hilfsfunktion entfernt. Filename-Tool: Bindungs-Tippfehler
replacStrkorrigiert; Dateiendung wird jetzt korrekt abgetrennt (vorher
starr letzte 4 Zeichen – falsch bei.jpeg/.tiff/ohne Endung); eine
Katalog-Write-Transaktion für den ganzen Batch statt eine pro Foto
(schneller, ein Undo-Schritt).
Installation
Dateien nach mediawiki.lrdevplugin/ kopieren (vorhandene überschreiben),
Lightroom neu starten bzw. das Plugin im Zusatzmodul-Manager neu laden.
Weil MediaWikiMetadataProvider.lua jetzt schemaVersion = 11 hat (vorher 10)
und zwei neue Felder enthält, registriert Lightroom diese beim Neuladen.
Die neuen Felder findest du in der Metadaten-Seitenleiste, indem du oben im
Panel das Metadaten-Set „LrMediaWiki" auswählst (bzw. über „Customize" die
Felder einblendest). In der Standard-Ansicht erscheinen Plugin-Felder nicht
automatisch – das ist normales Lightroom-Verhalten, bitte verifizieren.
Geänderte Dateien
MediaWikiMetadataProvider.lua (Seitenleisten-Felder)
- Zwei neue Per-Foto-Felder in der Metadaten-Seitenleiste:
Depicts (P180) (kommagetrennte QIDs) und Created during (P10408) (eine QID). schemaVersionvon 10 auf 11 erhöht.
MediaWikiExportServiceProvider.lua
- Liest die neuen Seitenleisten-Felder
depicts/created_duringpro Foto. - Vorrang-Reihenfolge: Seitenleisten-Feld →
description_all-Zeile →
Batch-Default aus dem Export-Dialog. (Ein gefülltes Seitenleisten-Feld
gewinnt.) - Batch-Sektion „Structured Data (SDC)" (creator/copyright/license/created_during)
wie zuvor; „hat SDC?"-Check erkennt beliebigecaption_XX-Sprachen.
MediaWikiInterface.lua
created_during(P10408) wird extrahiert und als Claim gesetzt.- Captions dynamisch: beliebige
caption_XX-Sprachen (inkl. Subtags wie
zh-hant) werden extrahiert und als SDC-Label publiziert.
MediaWikiApi.lua
wbEditEntitynormalisiert QID-Werte (trim +q640→Q640) und überspringt
fehlerhafte Werte, statt bei einem ungültigen Wert den ganzen Request
abzubrechen.
ToolEditSdc.lua
- Wikidata-Suche vollständig entfernt (Suchfeld, Button, HTTP-/JSON-Code,
zugehörige Imports). - Weiterhin vorhanden: pseudodynamische Captions, ein manuelles Depicts-Feld,
Created-during, Freitextfeld. (Siehe offene Frage unten.)
Info.lua
- Registriert das Tool im Extras-Menü (unverändert gegenüber vorher).
Offene Frage (bewusst nicht ohne Rückfrage geändert)
depicts und created_during existieren jetzt sowohl in der
Seitenleiste als auch im Modal-Tool. Beim Export gewinnt das
Seitenleisten-Feld. Ob die beiden Felder aus dem Modal-Tool ganz entfernt
werden sollen (dann bleibt es ein reines Captions-/Freitext-Werkzeug), ist noch
offen.
Bitte in Lightroom prüfen (remote nicht testbar)
- Dass die neuen Metadatenfelder nach dem
schemaVersion-Bump korrekt
erscheinen (Metadaten-Set „LrMediaWiki" wählen). Ich bin nicht sicher, ob dein
Lightroom bei einem reinen Feld-Zuwachs ohneupdateFromEarlierSchemaVersion
eine Warnung zeigt – bitte einmal testen. Bestehende Daten sollten erhalten
bleiben. - Das Ein-/Ausblenden der Caption-Zeilen per gebundenem
visible(Fallback:
visible-Zeile entfernen, dann alle Slots dauerhaft sichtbar). - Dass verwendete Label-Sprachcodes gültige Wikibase-Codes sind – ein
ungültiger Code ließe denwbeditentity-Call scheitern. - Passwortfeld nach Fix 4: Beim Öffnen des Export-Dialogs muss das
gespeicherte Passwort (aus LrPasswords via startDialog) wieder im Feld
erscheinen und der Export funktionieren. Das ist die erwartete Mechanik,
aber in LR ungetestet. - Nur-Claims-Upload (Foto ohne Captions, nur depicts/created_during):
einmal live prüfen, dasswbeditentitydasdata-JSON ohnelabels-Teil
akzeptiert.
Nicht unabhängig verifiziert
Q18199165 = CC BY-SA 4.0,Q6938433 = CC0,Q73566113(Copyright-Default)
stammen aus deinem Cammello-Stand, nicht aus eigener Prüfung.
P10408 = created duringist gegen Wikidata verifiziert.