From c27a8897b8ef1b13332aaea590cd9ac1d3c51cc3 Mon Sep 17 00:00:00 2001
From: Claude
Date: Tue, 11 Aug 2026 20:06:53 +0000
Subject: [PATCH 1/2] feat: Ablaufgrafik mit korrekten DCAT-Begriffen (v2.40.0)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Neue Grafik assets/images/ODW-Ablauf.svg — „Vom Formular ins Datenportal"
in drei Schritten: Formular ausfüllen, DCAT-AP.de-Metadaten erzeugen,
Portale ernten den Katalog ab. Eingebunden im README unter „Die Idee" und
auf der Einstiegsseite im Backend.
Die Vorlage zeigte teils erfundene Begriffe (dct:filleout, dct:snapet,
dct:name). Die Grafik nennt jetzt ausschließlich Eigenschaften, die das
Plugin tatsächlich ausgibt — dcat:Catalog, dct:title, dct:publisher,
foaf:name, dcat:dataset, dct:description, dcat:distribution — jeweils
gegen class-fields.php und class-rest-api.php geprüft.
Als SVG umgesetzt: Text bleibt Text, mit / für Screenreader,
im Repository statt an einer Attachment-URL. Bei 900 px (README) und
760 px (Einstiegsseite) im Browser gerendert und geprüft.
Der neue Alternativtext ist in .pot/.po ergänzt und die .mo neu kompiliert.
https://claude.ai/code/session_01JB1xUQM892bVZ4Yv3MZjvq
---
CHANGELOG.md | 22 +++++
README.md | 6 +-
assets/images/ODW-Ablauf.svg | 135 ++++++++++++++++++++++++++++
includes/class-admin.php | 14 +++
languages/open-data-wizard-en_US.mo | Bin 67334 -> 67547 bytes
languages/open-data-wizard-en_US.po | 3 +
languages/open-data-wizard.pot | 3 +
open-data-wizard.php | 4 +-
8 files changed, 184 insertions(+), 3 deletions(-)
create mode 100644 assets/images/ODW-Ablauf.svg
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 64cfe73..b15b659 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,28 @@ und dieses Projekt folgt [Semantic Versioning](https://semver.org/spec/v2.0.0.ht
---
+## [2.40.0] — 2026-08-11
+
+Eine Ablaufgrafik, die erklärt, was das Plugin eigentlich tut.
+
+### ✨ Added
+- **`assets/images/ODW-Ablauf.svg`** — „Vom Formular ins Datenportal" in drei Schritten:
+ Formular ausfüllen → DCAT-AP.de-Metadaten erzeugen → Portale ernten den Katalog ab.
+ Eingebunden im README (unter „Die Idee") und auf der Einstiegsseite im Backend.
+
+### ℹ️ Zwei Entscheidungen dahinter
+- **Nur Begriffe, die das Plugin auch wirklich ausgibt.** Die Vorlage zeigte unter anderem
+ `dct:filleout`, `dct:snapet` und `dct:name` — die ersten beiden existieren im Vokabular
+ nicht, und der Herausgebername ist `foaf:name`, nicht `dct:name`. Die Grafik zeigt jetzt
+ `dcat:Catalog`, `dct:title`, `dct:publisher`, `foaf:name`, `dcat:dataset`, `dct:description`
+ und `dcat:distribution` — jeder Begriff gegen `class-fields.php` und `class-rest-api.php`
+ geprüft. Eine Erklärgrafik mit erfundenen Fachbegriffen erklärt das Falsche.
+- **SVG statt Rasterbild.** Text bleibt Text: scharf auf jedem Bildschirm, durchsuchbar, und
+ mit ``/`` auch für Screenreader beschrieben. Die Datei ist rund 7 KB groß und
+ liegt im Repository statt an einer Attachment-URL — sie funktioniert damit auch im Fork.
+
+---
+
## [2.39.1] — 2026-08-10
Wartungs-Release. **Am Plugin selbst ändert sich nichts** — keine Änderung an PHP, CSS oder
diff --git a/README.md b/README.md
index c1d21a8..a9044be 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
-
+
@@ -54,6 +54,10 @@ Open-Data-Portale binden diese URL als Harvest-Quelle ein und holen sich die Met
Der entscheidende Unterschied: **Die Daten bleiben bei der Organisation. Der Katalog kommt zu ihr.** Es wandern ausschließlich *Metadaten* — die Beschreibung der Daten — zum Portal, nie die Daten selbst. Und dieselben Metadaten lassen sich an beliebig viele Portale gleichzeitig ausliefern, ohne sie mehrfach zu pflegen.
+
+
+
+
---
## Was ist DCAT-AP?
diff --git a/assets/images/ODW-Ablauf.svg b/assets/images/ODW-Ablauf.svg
new file mode 100644
index 0000000..64b21b6
--- /dev/null
+++ b/assets/images/ODW-Ablauf.svg
@@ -0,0 +1,135 @@
+
diff --git a/includes/class-admin.php b/includes/class-admin.php
index de46b0a..d4678b0 100644
--- a/includes/class-admin.php
+++ b/includes/class-admin.php
@@ -757,6 +757,12 @@ class="odw-page-logo"
+
+
@@ -826,6 +832,14 @@ class="odw-page-logo"
font-size: 15px;
color: var(--odw-color-text, #1d2327);
}
+ /* Die Grafik trägt ihren eigenen dunklen Hintergrund und soll die
+ volle Breite der Textspalte nutzen, ohne sie zu sprengen. */
+ .odw-introduction-figure {
+ display: block;
+ width: 100%;
+ height: auto;
+ margin: 24px 0 8px;
+ }
34D#$y2tSqLlTK0f=m+GA%>6yi6M!(hBhQB6+_JtAt4DOhSHvmqCH$wO^wnz
zbfCtfrD|+wDOy@Jm(tR~P>#8%`}=3TpU=Jh^z^%)wcovlXFcmpI5XyyIXAbA`+|R&
zMTUPSl`f193HuK<_AH0_kD9fNTU2H|Y1h#z7j{1lV$DmKB02F8@bo{odCHt}%O
z`17y_F2_K;gMQ3!e4~x&M@J~?gI6#d=VLAW1by*GY=f6D1S4XM*@i9geY}esu_)G<
z=9t{jn5H-d6L1^0z+3nnMzf11%x^~0(9Yh+@wf$*x(1Ey#EGbkbVMH<;>077vCJGS
zkGrud9(MfM@g8dDK5;gagRnaBE9jm{V-XEb!MHf+RP2m=$GnYN`8Sw|rOC4P&@k>A7U-GuZ4v+v!6#{81W0JS{vGo{72AuosMoE#(aQU*?sc2AN`p<
z5Ko~}`4>iFZB~+wg__g`XbS0FR*te1a-2pKkWKs;D>=b=GyTH?~E6zsUJ~HI~#2axu&S48ziCYziaN$bUAC
z5p-yx6Ijl}n9HaYUw?@+BGy6sfnT~^Km>XcN1+C6gq5)?#^NB1!MUjCcA+x5AC-YW
zP|uZh_ptZ22{xo79hI7CcpRUhc6PicKPRw$FIy{1QK{XF?eGv*MPD9P@ww0kb5Jj;
zLe$aD#nQL~tD$?h^T7#JDxYBs41U?Z*?OQdGXb@u8K_KbMNM!3HNi3T#cQY?K0tl1
zN*{hgVg%}F2B3~451GnsCevt6#~IWYEBCc4i$P7)9`!y*$1EIyTF7y9;WMm>u70*A
z+M{-sikc`BwUBXG9jBpg!wL-1{Xa;fF&)2P3#`_kA4Hgj!|?%fTxRe9`-{dl)LCCg
z)yO}nV)P$qCkRCqa{}r}+M*WF0|PM=^}R`o-8AOX2*QuB2JS_z^dh?OF=~gQgX}$T
zgL+@|Ll;g(Rr4y;&TpU=P&&iDDSgpJTpiWl5?f&hbZelgG$!F{Ou)#&_RRWYH1Sf@
zPQJ!1cpjC3d6{#->ERTn$7Z~kV;At&2z#%;MBR?tsM>gfI(yGtTSGN4
zlDNB@hN^!8Dm9x>Rl6I@;BnL!Phv3M#7gL$XEPCmsl@Tf1u|1mnLLmDGG%UKTdbFF
zYa|C*tJ#9upgWAW%3T`Ks1-$wq7bnY>iXTpD17D^HQE+qcMPL{9O{L$5M%HsN8bWt
zn8PF@7sRYa%Eow&u@1*;y8lOM?B#>c3z-xrjdeQZFD^kZ
zT!mWjTGY;Vq6-gW1-y>h$lq8VBgZ@UzcGzh=tx0N{0gJ-DC+F~Mjc6+3AU&Lky9{@
zuq7@>)y!E`k={hTn*AA6*ReXrVq?^EgD?RLaRT*c);kZ>nP?~Kff^ti+u~?!ikneq
z`#aXerx=JX?rsPsU;uVUWoEe3KMq~Q^Bp&%#{U7`|3l+E4ed1NReSBmpjNsJwewA=
zsxL+@q||FR