From b4ceafd6110100ea8dfccce6b7548f71af564b52 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 9 Jul 2026 22:18:31 +0000 Subject: [PATCH] feat: Add ZiviZ engagement-field classification (v2.19.0) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New optional autosuggest field "In welchem Engagementfeld ist die Organisation aktiv?" in step 1 (Grundlegende Informationen), backed by a bundled ZiviZ engagement-field vocabulary (config/vocabularies/engagementfeld.json, 16 SKOS concepts). The label→URI resolution reuses odw_resolve_vocab_uri(). - Emitted in JSON-LD as dct:subject; combined with a CESSDA topic, dct:subject becomes an array - Vocabulary passed to the generic data-odw-vocab autosuggest - Also listed in the frontend widget's "Alle Metadaten anzeigen" accordion - 5 new UI strings translated in en_US Version 2.19.0. Tests: 151 pass, PHPStan clean, PHPCS exit 0. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01JB1xUQM892bVZ4Yv3MZjvq --- CHANGELOG.md | 13 +++++ README.md | 2 +- config/vocabularies/engagementfeld.json | 66 ++++++++++++++++++++++++ includes/class-admin.php | 5 +- includes/class-fields.php | 25 +++++++-- includes/class-shortcode.php | 1 + languages/open-data-wizard-en_US.mo | Bin 50270 -> 51118 bytes languages/open-data-wizard-en_US.po | 15 ++++++ open-data-wizard.php | 4 +- 9 files changed, 121 insertions(+), 10 deletions(-) create mode 100644 config/vocabularies/engagementfeld.json diff --git a/CHANGELOG.md b/CHANGELOG.md index b21fcc5..525bc1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,19 @@ und dieses Projekt folgt [Semantic Versioning](https://semver.org/spec/v2.0.0.ht --- +## [2.19.0] — 2026-07-09 + +### ✨ Added — ZiviZ-Engagementfelder +- Neues **optionales** Auswahlfeld **„In welchem Engagementfeld ist die Organisation aktiv?"** im + Schritt „Grundlegende Informationen". Auto-Suggest aus dem gebündelten **ZiviZ-Engagementfeld- + Vokabular** (`config/vocabularies/engagementfeld.json`, 16 Felder — Soziale Dienste, Kultur, Sport, + Umwelt- und Naturschutz u. a.); die zugehörige `ziviz.de`-URI wird automatisch verwendet. +- Im JSON-LD als `dct:subject` ausgegeben — zusammen mit einer CESSDA-Klassifikation wird + `dct:subject` zu einem Array. +- Erscheint auch im Frontend-Widget-Accordion „Alle Metadaten anzeigen". + +--- + ## [2.18.0] — 2026-07-09 ### 💅 Changed — Download-Card (`[odw_dataset]`) neu gestaltet diff --git a/README.md b/README.md index 3483be4..fa42be1 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ![PHP Version](https://img.shields.io/badge/PHP-%3E%3D%208.1-8892BF?style=flat-square&logo=php&logoColor=white) ![WordPress](https://img.shields.io/badge/WordPress-compatible-21759B?style=flat-square&logo=wordpress&logoColor=white) ![DCAT-AP](https://img.shields.io/badge/DCAT--AP-3.0-brightgreen?style=flat-square) -![Version](https://img.shields.io/badge/Version-2.18.0-brightgreen?style=flat-square) +![Version](https://img.shields.io/badge/Version-2.19.0-brightgreen?style=flat-square) ![PRs Welcome](https://img.shields.io/badge/PRs-willkommen-brightgreen?style=flat-square) 📖 [Dokumentation](DOCUMENTATION.md) · 📐 [Technische Spezifikation](TECHNICAL-SPEC.md) · 📝 [Changelog](CHANGELOG.md) · 🛡️ [Security](SECURITY.md) · ⚖️ [Lizenz](LICENSE) diff --git a/config/vocabularies/engagementfeld.json b/config/vocabularies/engagementfeld.json new file mode 100644 index 0000000..1356bf4 --- /dev/null +++ b/config/vocabularies/engagementfeld.json @@ -0,0 +1,66 @@ +[ + { + "value": "https://ziviz.de/def/engagementfeld/bevoelkerungsUNDkatastrophenschutz", + "label": "Bevölkerungs- und Katastrophenschutz" + }, + { + "value": "https://ziviz.de/def/engagementfeld/bildungUNDerziehung", + "label": "Bildung und Erziehung" + }, + { + "value": "https://ziviz.de/def/engagementfeld/buergerUNDverbraucherinteressen", + "label": "Bürger- und Verbraucherinteressen" + }, + { + "value": "https://ziviz.de/def/engagementfeld/freizeitUNDgeselligkeit", + "label": "Freizeit und Geselligkeit" + }, + { + "value": "https://ziviz.de/def/engagementfeld/gemeinschaftlicheversorgungsaufgaben", + "label": "Gemeinschaftliche Versorgungsaufgaben" + }, + { + "value": "https://ziviz.de/def/engagementfeld/gesundheitswesen", + "label": "Gesundheitswesen" + }, + { + "value": "https://ziviz.de/def/engagementfeld/internationalesolidaritaet", + "label": "Internationale Solidarität" + }, + { + "value": "https://ziviz.de/def/engagementfeld/kirchenUNDreligioesevereinigungen", + "label": "Kirchen und religiöse Vereinigungen" + }, + { + "value": "https://ziviz.de/def/engagementfeld/kultur", + "label": "Kultur" + }, + { + "value": "https://ziviz.de/def/engagementfeld/medien", + "label": "Medien" + }, + { + "value": "https://ziviz.de/def/engagementfeld/sozialedienste", + "label": "Soziale Dienste" + }, + { + "value": "https://ziviz.de/def/engagementfeld/sport", + "label": "Sport" + }, + { + "value": "https://ziviz.de/def/engagementfeld/umweltUNDnaturschutz", + "label": "Umwelt- und Naturschutz" + }, + { + "value": "https://ziviz.de/def/engagementfeld/wirtschaftsverbaendeUNDberufsorganisationen", + "label": "Wirtschaftsverbände und Berufsorganisationen" + }, + { + "value": "https://ziviz.de/def/engagementfeld/wissenschaftUNDforschung", + "label": "Wissenschaft und Forschung" + }, + { + "value": "https://ziviz.de/def/engagementfeld/sonstiges", + "label": "Sonstiges" + } +] diff --git a/includes/class-admin.php b/includes/class-admin.php index d82387a..9b5d4ef 100644 --- a/includes/class-admin.php +++ b/includes/class-admin.php @@ -372,8 +372,9 @@ public static function enqueue_assets( string $hook ): void { 'cessdaOptions' => $cessda_options, 'spatialOptions' => $spatial_options, 'vocabularies' => array( - 'contributors' => ODW_Fields::load_vocabulary( 'contributors' ), - 'data-theme' => ODW_Fields::load_vocabulary( 'data-theme' ), + 'contributors' => ODW_Fields::load_vocabulary( 'contributors' ), + 'data-theme' => ODW_Fields::load_vocabulary( 'data-theme' ), + 'engagementfeld' => ODW_Fields::load_vocabulary( 'engagementfeld' ), ), 'cessdaWidget' => array( 'label' => __( 'CESSDA Themenklassifikation', 'open-data-wizard' ), diff --git a/includes/class-fields.php b/includes/class-fields.php index 9d7776d..9e27cce 100644 --- a/includes/class-fields.php +++ b/includes/class-fields.php @@ -74,6 +74,11 @@ private static function register_required_fields(): void { ->set_attribute( 'data-odw-backing', 'cessda' ) ->set_help_text( __( 'CESSDA THEMENKLASSIFIKATION (dct:subject)', 'open-data-wizard' ) . "\n\n" . __( 'Aus dem CESSDA Controlled Vocabulary (Version 4.2.3, Deutsch). Beispiel: Volkszählungen, Migration, Wirtschaftspolitik', 'open-data-wizard' ) ), + Field::make( 'text', 'odw_engagementfeld', __( 'In welchem Engagementfeld ist die Organisation aktiv?', 'open-data-wizard' ) ) + ->set_attribute( 'data-odw-vocab', 'engagementfeld' ) + ->set_attribute( 'placeholder', __( 'Engagementfeld eintippen oder auswählen…', 'open-data-wizard' ) ) + ->set_help_text( __( 'ENGAGEMENTFELD (ZiviZ, dct:subject)', 'open-data-wizard' ) . "\n\n" . __( 'Optional: Ordnen Sie den Datensatz einem Engagementfeld der Zivilgesellschaft nach dem ZiviZ-Vokabular zu. Feld aus der Liste wählen — die zugehörige URI wird automatisch verwendet. Beispiel: Kultur, Sport, Umwelt- und Naturschutz.', 'open-data-wizard' ) ), + Field::make( 'textarea', 'odw_description', __( 'Worum geht es in diesem Datensatz?', 'open-data-wizard' ) ) ->set_required( true ) ->set_rows( 5 ) @@ -1299,6 +1304,7 @@ function odw_build_dataset_jsonld( int $post_id ): ?array { $dist_attribution = (string) carbon_get_post_meta( $post_id, 'odw_attribution_text' ); $dist_availability = (string) carbon_get_post_meta( $post_id, 'odw_availability' ); $cessda_topic = (string) carbon_get_post_meta( $post_id, 'odw_cessda_topic' ); + $engagementfeld = (string) carbon_get_post_meta( $post_id, 'odw_engagementfeld' ); // Extended DCAT-AP fields (Tab 4). $landing_page = (string) carbon_get_post_meta( $post_id, 'odw_landing_page' ); @@ -1410,12 +1416,21 @@ static function ( $kw ) use ( $lang_tag ) { $dataset['dcat:theme'] = $themes; } + // Thematic classifications are attached via the standard DCAT-AP subject + // property. CESSDA topic and ZiviZ engagement field both map to dct:subject; + // when both are present, dct:subject becomes an array. + $subjects = array(); if ( ! empty( $cessda_topic ) ) { - // CESSDA Topic Classification concept attached via the standard DCAT-AP - // subject property. Emitting an undeclared `cessda:` prefix would produce - // invalid JSON-LD; `dct:subject` is the conformant predicate and is - // already part of the @context. - $dataset['dct:subject'] = array( '@id' => odw_sanitize_jsonld_id( (string) $cessda_topic ) ); + $subjects[] = array( '@id' => odw_sanitize_jsonld_id( (string) $cessda_topic ) ); + } + if ( ! empty( $engagementfeld ) ) { + $engagement_uri = odw_resolve_vocab_uri( $engagementfeld, 'engagementfeld' ); + if ( '' !== $engagement_uri ) { + $subjects[] = array( '@id' => odw_sanitize_jsonld_id( $engagement_uri ) ); + } + } + if ( ! empty( $subjects ) ) { + $dataset['dct:subject'] = 1 === count( $subjects ) ? $subjects[0] : $subjects; } if ( ! empty( $issued ) ) { diff --git a/includes/class-shortcode.php b/includes/class-shortcode.php index 5fb30cc..2f078c9 100644 --- a/includes/class-shortcode.php +++ b/includes/class-shortcode.php @@ -248,6 +248,7 @@ private static function collect_metadata_rows( int $post_id, string $license_lab $add( __( 'Beschreibung', 'open-data-wizard' ), self::meta( $post_id, 'odw_description' ) ); $add( __( 'Thema', 'open-data-wizard' ), self::meta( $post_id, 'odw_theme' ) ); $add( __( 'CESSDA-Themenfeld', 'open-data-wizard' ), self::meta( $post_id, 'odw_cessda_topic' ), true ); + $add( __( 'Engagementfeld', 'open-data-wizard' ), self::meta( $post_id, 'odw_engagementfeld' ) ); $add( __( 'Sprache', 'open-data-wizard' ), self::meta( $post_id, 'odw_language' ), true ); $keywords = array_filter( array_map( 'trim', explode( "\n", self::meta( $post_id, 'odw_keywords' ) ) ) ); diff --git a/languages/open-data-wizard-en_US.mo b/languages/open-data-wizard-en_US.mo index 8bc337a684a490890425d540417a857780dac2b6..2ff09a8aec39b54fc30b0c172ed4a98a311b1610 100644 GIT binary patch delta 9086 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 diff --git a/languages/open-data-wizard-en_US.po b/languages/open-data-wizard-en_US.po index 796b80e..e56678e 100644 --- a/languages/open-data-wizard-en_US.po +++ b/languages/open-data-wizard-en_US.po @@ -474,6 +474,9 @@ msgstr "Email address for inquiries." msgid "EIGENE LIZENZ-URI" msgstr "CUSTOM LICENSE URI" +msgid "ENGAGEMENTFELD (ZiviZ, dct:subject)" +msgstr "FIELD OF ENGAGEMENT (ZiviZ, dct:subject)" + msgid "ERSTELLER (dct:creator)" msgstr "CREATOR (dct:creator)" @@ -519,6 +522,12 @@ msgstr "Recommended fields" msgid "Energie" msgstr "Energy" +msgid "Engagementfeld" +msgstr "Field of engagement" + +msgid "Engagementfeld eintippen oder auswählen…" +msgstr "Type or select a field of engagement…" + msgid "Englisch (EN)" msgstr "English (EN)" @@ -681,6 +690,9 @@ msgstr "Insert into dataset" msgid "In welche Kategorie gehört dieser Datensatz?" msgstr "Which category does this dataset belong to?" +msgid "In welchem Engagementfeld ist die Organisation aktiv?" +msgstr "In which field of engagement is the organization active?" + msgid "In welchem Format ist die Datei?" msgstr "What format is the file in?" @@ -969,6 +981,9 @@ msgstr "Open data platforms can add this URL as a harvest source and collect the msgid "Optional ein weiteres Thema aus der offiziellen EU-Themenliste (ergänzt die Kategorie aus Tab 1)." msgstr "Optionally an additional theme from the official EU theme list (supplements the category from tab 1)." +msgid "Optional: Ordnen Sie den Datensatz einem Engagementfeld der Zivilgesellschaft nach dem ZiviZ-Vokabular zu. Feld aus der Liste wählen — die zugehörige URI wird automatisch verwendet. Beispiel: Kultur, Sport, Umwelt- und Naturschutz." +msgstr "Optional: assign the dataset to a civil-society field of engagement from the ZiviZ vocabulary. Pick one from the list — the matching URI is used automatically. Example: Culture, Sports, Environmental and nature protection." + msgid "Optionale Angaben" msgstr "Optional details" diff --git a/open-data-wizard.php b/open-data-wizard.php index d8332ae..9a44bbb 100644 --- a/open-data-wizard.php +++ b/open-data-wizard.php @@ -3,7 +3,7 @@ * Plugin Name: Open Data Wizard * Plugin URI: https://github.com/daimpad/OpenDataWizard * Description: DCAT-AP 3.0 konforme Open Data Metadatenverwaltung für WordPress. Bereitstellung als maschinenlesbarer JSON-LD-Endpoint für offene Daten. - * Version: 2.18.0 + * Version: 2.19.0 * Requires at least: 6.4 * Requires PHP: 8.1 * Author: nozilla @@ -26,7 +26,7 @@ exit; } -define( 'ODW_VERSION', '2.18.0' ); +define( 'ODW_VERSION', '2.19.0' ); define( 'ODW_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); define( 'ODW_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); define( 'ODW_PLUGIN_FILE', __FILE__ );