Skip to content

Claude/wordpress open data wizard mm oel#4

Merged
daimpad merged 4 commits intomainfrom
claude/wordpress-open-data-wizard-MmOEL
Apr 21, 2026
Merged

Claude/wordpress open data wizard mm oel#4
daimpad merged 4 commits intomainfrom
claude/wordpress-open-data-wizard-MmOEL

Conversation

@daimpad
Copy link
Copy Markdown
Owner

@daimpad daimpad commented Apr 21, 2026

No description provided.

claude added 4 commits April 21, 2026 12:05
Priorität 1 — Bugfixes & Sicherheit:
- Zeitzone: current_time() statt gmdate() für _odw_modified (class-fields.php)
- Sortierbare Spalte Thema: pre_get_posts Hook mit meta_key/meta_value (class-admin.php)
- $_GET Sanitization: wp_unslash() + sanitize_text_field() konsequent, absint() für post_id (class-admin.php, class-validation.php)
- Byte-Size Validierung: is_numeric() + >= 0 Prüfung vor JSON-LD Ausgabe (class-fields.php)

Priorität 2 — Code-Qualität:
- License Single Source of Truth: ODW_Fields::get_license_label() eingeführt (class-fields.php, class-admin.php)
- sessionStorage: try/catch Wrapper + post_id-spezifischer Key odw_active_tab_<id> (wizard-tabs.js)
- MutationObserver: disconnect() via beforeunload Event (wizard-tabs.js)
- Transient-TTL: 60s → 300s für Validierungsnotices (class-validation.php)
- Carbon Fields Boot: try/catch um boot() mit Admin-Notice bei Fehler (open-data-wizard.php)

Priorität 2 — Activation/Deactivation:
- register_activation_hook: CPT registrieren, Rewrite Rules flush, Capabilities setzen
- register_deactivation_hook: Rewrite Rules flush
- uninstall.php: Opt-in Datenlöschung (odw_delete_data_on_uninstall Option)

Priorität 3 — Features:
- REST API Transient-Cache: 5 Minuten TTL, Cache-Invalidierung bei save_post/trash, X-ODW-Cache Header (class-rest-api.php)
- Capability manage_open_data: Administrator und Editor erhalten die Capability bei Aktivierung
- Filter-Hooks: odw_license_options, odw_theme_options, odw_dataset_jsonld, odw_catalog_title (class-fields.php, class-rest-api.php)
- Admin Help Tabs: DCAT-AP Feldbeschreibungen + Harvest-Endpoint Doku auf Edit-Screen (class-admin.php)
- CSS Custom Properties: --odw-color-* Variablen statt Hard-coded Hex-Werte (admin.css)

https://claude.ai/code/session_013ma6QYffgnE2eKgDfh1Qgn
Validierungslogik zentralisiert (4.2):
- ODW_Fields::get_required_fields() als zentrale Pflichtfeld-Registry
- class-validation.php iteriert über Registry statt Felder doppelt zu pflegen
- get_field_value() vereinfacht: CF-Key-Parameter entfernt

Content Negotiation ?format= (3.3):
- ?format=jsonld (Standard) → application/ld+json
- ?format=json → application/json
- An beiden Endpoints /catalog und /datasets/<id> verfügbar
- Grundlage für spätere Turtle/RDF-XML Unterstützung

PHPStan + WordPress Coding Standards + CI (4.1):
- phpstan.neon: Level 6 Analyse inkl. szepeviktor/phpstan-wordpress Stubs
- composer.json: require-dev mit phpstan, wpcs, phpunit, wp_mock
- phpunit.xml: PHPUnit Konfiguration für tests/ Verzeichnis
- tests/bootstrap.php: WP_Mock Bootstrap + Konstanten-Definitionen
- tests/test-fields.php: Tests für ODW_Fields (license options, labels, format MIME)
- .github/workflows/ci.yml: PHPCS + PHPStan + PHPUnit auf PHP 8.1/8.2/8.3

Dokumentation (4.4):
- CHANGELOG.md: Vollständiges Changelog für v1.0.0, v1.1.0, v1.2.0
- README.md: ?format= Parameter, korrekte Filter-Hook-Namen, Dev-Tools Sektion,
  aktualisierte Dateistruktur, Deinstallations-Anleitung, Lizenz korrigiert auf GPL-2.0

https://claude.ai/code/session_013ma6QYffgnE2eKgDfh1Qgn
…tändigt

- is_valid_url() Methode: filter_var(FILTER_VALIDATE_URL) + Schema-Whitelist
  (http, https, ftp, ftps) blockt javascript:, data: und andere unsichere Schemes
- has_valid_distribution() prüft nun URLs aus CF compact input UND bestehenden Meta-Werten
- Schließt den letzten offenen Punkt aus Plan-Eintrag 1.2

https://claude.ai/code/session_013ma6QYffgnE2eKgDfh1Qgn
Neues Scoring-System (0–100 Punkte, 3 Levels) bewertet die DCAT-AP
Metadaten-Vollständigkeit automatisch nach jedem Speichern.

- class-quality.php: 10 Indikatoren in 3 Gruppen (Pflicht 55 Pkt.,
  Empfohlen 40 Pkt., Optional 5 Pkt.); Persistenz in 4 Meta-Keys;
  odw:qualityScore via odw_dataset_jsonld Filter in JSON-LD
- class-admin.php: Qualitätsspalte mit farbigem Badge, sortierbar
  nach _odw_quality_score (meta_value_num); Meta-Box mit Gauge,
  Level-Badge und gruppierter Indikator-Tabelle
- class-rest-api.php: odw:-Namespace in JSONLD_CONTEXT ergänzt
- admin.css: --odw-color-quality-* Custom Properties; Badge, Gauge
  und Tabellen-Komponenten für Listenansicht und Edit-Screen

https://claude.ai/code/session_013ma6QYffgnE2eKgDfh1Qgn
@daimpad daimpad merged commit d6af647 into main Apr 21, 2026
0 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants