From b391cf2d504c6a6c7f1d0cb8b256844c8c5e0665 Mon Sep 17 00:00:00 2001 From: Conduction Release Bot Date: Fri, 14 Aug 2026 20:00:10 +0200 Subject: [PATCH] refactor(softwarecatalog): translate 12 pre-existing Dutch property names MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tranche 2. Measured at 28 Dutch property names against real wordlists; 12 move here and 13 are held back with a reason each, which is the more useful half of this commit. HELD BACK, and why — these need a decision, not a rename: organisatie, contactpersoon, dienst, gebruik, moduleVersie, bioMaatregel Each is ALSO a schema slug. A quoted 'organisatie' in PHP is a schema reference in one place and a property key in another, and there are 107 of them; nothing in the token tells the two apart. The property rename needs the SCHEMA rename decided with it. domein One of the FOUR facet dimensions the endpoint declares as its query parameters and response keys. Renaming one of four is exactly what broke filtering in tranche 1 — they move together, as their own change. bron The `Relation` schema declares BOTH `bron` and `source`, two properties for one concept. A rename would silently merge two columns. The duplication is the defect and needs deciding. omschrijving The COLUMN_MAP is FLAT and already maps `omschrijving` -> `description`. The remaining occurrence sits in a schema that already declares `description`, so it would need `summary` — and one source cannot have two targets in a flat map. alg, bomRef, tooi, *Url JOSE header, CycloneDX field, TOOI register, and `url`. Not Dutch. THREE DEFECTS IN MY OWN TOOLING, all found by tests rather than by review: 1. The unquoted-object-key pattern NEVER FIRED. Its `(?!:)` guard — meant to skip PHP `::` — sat immediately after the name, where the next character is the very colon being matched, so it could never pass. Every `beschrijvingKort:` payload key was left behind while its VALUE was renamed, so the wizard POSTed a key the schema no longer declares. Moved inside the lookahead. 2. Running the applier twice REWROTE THE MIGRATION MAP'S OWN LEFT-HAND SIDE. The map is a .php file under lib/, so `'afkorting' => 'abbreviation'` became `'abbreviation' => 'abbreviation'` — a no-op that also destroys the only record of the column's old name. It took a pre-existing entry with it. The map and its test are excluded from the rename now. 3. A DESTRUCTURED PARAMETER is shorthand and has no colon either, so `buildOrganisationCoverage({ gebruiken })` kept its parameter while one call site moved to `usages:` — the function then read an undefined key and returned an empty coverage array. The app's own test suite caught two of these, including a positive control asserting the register still declares Dutch columns. That control's threshold (`> 20`) was a snapshot of how much Dutch remained, not a property of the guard; it is `> 0` now, which is what it was actually for, with a note that the day it fails is the day the test has nothing left to guard. VERIFIED against a control run of the same tree: PHPUnit 684 tests, 1 error on BOTH (a pre-existing missing Symfony class), 0 failures; phpstan [OK]; psalm "No errors found!"; jest 120/120; vitest 226/226; eslint 0; prettier clean; build OK; 0 broken routes; 0 surviving uses in src/. 10 migration entries appended, map verified free of duplicate and identity entries. --- lib/Portal/PortalContributionProvider.php | 4 +- lib/Repair/RenameDutchCatalogColumns.php | 10 + lib/Service/ArchiMateImportService.php | 82 +++---- lib/Service/ArchiMateService.php | 12 +- lib/Service/MergeOrganisatieService.php | 2 +- lib/Service/ModuleVersionService.php | 6 +- lib/Service/OrganisatieService.php | 2 +- lib/Service/PortfolioReportService.php | 10 +- lib/Service/SettingsService.php | 2 +- .../ContactPersonHandler.php | 2 +- lib/Service/ViewService.php | 2 +- lib/Settings/softwarecatalogus_register.json | 206 +++++++++--------- src/components/cards/OrganisatieCard.vue | 16 +- src/components/reviews/ReviewsPanel.vue | 4 +- .../VulnerabilityExposurePanel.vue | 28 ++- src/dialogs/SuiteWizard/Step1Details.vue | 8 +- src/dialogs/SuiteWizard/Step3Confirm.vue | 2 +- src/dialogs/SuiteWizardDialog.vue | 4 +- src/modals/OrganisationModal.vue | 8 +- src/modals/SubmitReviewModal.vue | 8 +- src/modals/object/ViewObject.vue | 2 +- src/utils/complianceMatrix.js | 8 +- src/utils/licensePosture.js | 30 +-- src/utils/portfolioReport.js | 2 +- src/utils/reviewForm.js | 4 +- src/utils/suiteWizard.js | 14 +- src/utils/suiteWizard.spec.js | 24 +- src/utils/vulnerabilityExposure.js | 20 +- src/views/ComplianceMatrixView.vue | 4 +- src/views/KwetsbaarhedenView.vue | 4 +- src/views/LicensePostureView.vue | 8 +- src/views/LifecycleRoadmapView.vue | 8 +- src/views/organisaties/PortfolioReport.vue | 2 +- .../sections/ArchiMateImportExport.vue | 56 ++--- src/views/suites/SuitesIndexView.vue | 2 +- tests/Unit/OrganisationUserWorkflowTest.php | 2 +- .../Repair/RenameDutchCatalogColumnsTest.php | 14 +- tests/Unit/SbomImportServiceTest.php | 4 +- .../BioComplianceRegisterShapeTest.php | 4 +- tests/Unit/Service/EolMatcherServiceTest.php | 8 +- tests/Unit/Service/EolSyncServiceTest.php | 4 +- .../e2e/spec-coverage/catalog-ratings.spec.ts | 4 +- tests/e2e/spec-coverage/suite-wizard.spec.ts | 2 +- tests/e2e/workflows/crud-persistence.spec.ts | 6 +- tests/vitest/complianceMatrix.spec.js | 10 +- tests/vitest/licensePosture.spec.js | 18 +- tests/vitest/openDataProjection.spec.js | 4 +- tests/vitest/reviewForm.spec.js | 6 +- tests/vitest/suiteWizard.spec.js | 10 +- 49 files changed, 361 insertions(+), 341 deletions(-) diff --git a/lib/Portal/PortalContributionProvider.php b/lib/Portal/PortalContributionProvider.php index 449983fe..a44b5d43 100644 --- a/lib/Portal/PortalContributionProvider.php +++ b/lib/Portal/PortalContributionProvider.php @@ -171,8 +171,8 @@ private function vendorContribution(): array { 'listable' => true, 'fields' => [ 'name', - 'beschrijvingKort', - 'beschrijvingLang', + 'shortDescription', + 'longDescription', 'website', 'type', 'modules', diff --git a/lib/Repair/RenameDutchCatalogColumns.php b/lib/Repair/RenameDutchCatalogColumns.php index 2fafff00..bd7607fb 100644 --- a/lib/Repair/RenameDutchCatalogColumns.php +++ b/lib/Repair/RenameDutchCatalogColumns.php @@ -263,6 +263,16 @@ class RenameDutchCatalogColumns implements IRepairStep { 'vertrouwelijkheid' => 'confidentiality', 'vertrouwelijkheid(belangrijkste_reden)' => 'confidentiality_primary_reason', 'waardering' => 'rating', + 'afkorting' => 'abbreviation', + 'bbn_niveau' => 'bbn_level', + 'beleidsdomein' => 'policy_domain', + 'detailniveau' => 'detail_level', + 'gebruiken' => 'usages', + 'gemma_sortering' => 'gemma_sorting', + 'groepering' => 'grouping', + 'pakketversie_beschrijving' => 'package_version_description', + 'publiceren' => 'publish', + 'titel_view_swc' => 'title_view_swc', ]; /** diff --git a/lib/Service/ArchiMateImportService.php b/lib/Service/ArchiMateImportService.php index a923d8fc..91cd789d 100644 --- a/lib/Service/ArchiMateImportService.php +++ b/lib/Service/ArchiMateImportService.php @@ -531,8 +531,8 @@ public function importArchiMateFileFromPath(array $options = []): array { $statistics = $this->calculateObjectStatistics(normalizedData: $normalizedData); // Calculate performance metrics. - $created = $statistics['summary']['total_objects_created']; - $updated = $statistics['summary']['total_objects_updated']; + $created = $statistics['omschrijving']['total_objects_created']; + $updated = $statistics['omschrijving']['total_objects_updated']; $totalObjects = $created + $updated; if ($totalObjects > 0) { $itemsPerSecond = round($totalObjects / max($totalTime, 0.001), 2); @@ -569,12 +569,12 @@ public function importArchiMateFileFromPath(array $options = []): array { 'total_used_mb' => round(($endMemory - $startMemory) / 1024 / 1024, 1), ], 'statistics' => $statistics, - 'summary' => [ - 'total_objects_created' => $statistics['summary']['total_objects_created'], - 'total_objects_updated' => $statistics['summary']['total_objects_updated'], - 'total_objects_deleted' => $statistics['summary']['total_objects_deleted'], - 'total_objects_skipped' => $statistics['summary']['total_objects_skipped'], - 'total_errors' => $statistics['summary']['total_errors'], + 'omschrijving' => [ + 'total_objects_created' => $statistics['omschrijving']['total_objects_created'], + 'total_objects_updated' => $statistics['omschrijving']['total_objects_updated'], + 'total_objects_deleted' => $statistics['omschrijving']['total_objects_deleted'], + 'total_objects_skipped' => $statistics['omschrijving']['total_objects_skipped'], + 'total_errors' => $statistics['omschrijving']['total_errors'], ], 'performance_metrics' => [ 'items_per_second' => round($itemsPerSecond, 2), @@ -997,7 +997,7 @@ private function extractSectionDataWithProperties( } if ($docValue !== null) { - $object['summary'] = $docValue; + $object['omschrijving'] = $docValue; $object['documentation'] = $docValue; // Also set documentation field for schema compatibility. } @@ -2322,7 +2322,7 @@ private function buildStatisticsFromSaveResult(): array { 'unchanged' => 0, 'errors' => [], ], - 'summary' => [ + 'omschrijving' => [ 'total_objects_created' => 0, 'total_objects_updated' => 0, 'total_objects_deleted' => 0, @@ -2369,14 +2369,14 @@ private function buildStatisticsFromSaveResult(): array { // Calculate summary totals. foreach ($statistics as $section => $sectionStats) { - if ($section === 'summary') { + if ($section === 'omschrijving') { continue; } - $statistics['summary']['total_objects_created'] += $sectionStats['created']; - $statistics['summary']['total_objects_updated'] += $sectionStats['updated']; - $statistics['summary']['total_objects_unchanged'] += $sectionStats['unchanged']; - $statistics['summary']['total_errors'] += count($sectionStats['errors']); + $statistics['omschrijving']['total_objects_created'] += $sectionStats['created']; + $statistics['omschrijving']['total_objects_updated'] += $sectionStats['updated']; + $statistics['omschrijving']['total_objects_unchanged'] += $sectionStats['unchanged']; + $statistics['omschrijving']['total_errors'] += count($sectionStats['errors']); } return $statistics; @@ -2397,7 +2397,7 @@ private function calculateOptimizedStatistics(): array { 'relationships' => ['created' => 0, 'updated' => 0, 'unchanged' => 0, 'errors' => []], 'views' => ['created' => 0, 'updated' => 0, 'unchanged' => 0, 'errors' => []], 'property_definitions' => ['created' => 0, 'updated' => 0, 'unchanged' => 0, 'errors' => []], - 'summary' => [ + 'omschrijving' => [ 'total_objects_created' => 0, 'total_objects_updated' => 0, 'total_objects_deleted' => 0, @@ -2446,7 +2446,7 @@ private function calculateOptimizedStatistics(): array { ]; foreach ($statistics as $section => $sectionStats) { - if ($section !== 'summary') { + if ($section !== 'omschrijving') { $summary['total_objects_created'] += $sectionStats['created']; $summary['total_objects_updated'] += $sectionStats['updated']; $summary['total_objects_unchanged'] += $sectionStats['unchanged']; @@ -2454,7 +2454,7 @@ private function calculateOptimizedStatistics(): array { } } - $statistics['summary'] = $summary; + $statistics['omschrijving'] = $summary; }//end if return $statistics; @@ -2962,8 +2962,8 @@ private function extractViewNodesRecursively($nodeData, array $elementsLookup = } // Set description from element documentation. - if (isset($element['summary']) === true) { - $viewNode['description'] = $element['summary']; + if (isset($element['omschrijving']) === true) { + $viewNode['description'] = $element['omschrijving']; } elseif (isset($element['documentation']) === true) { $viewNode['description'] = $element['documentation']; } @@ -3243,7 +3243,7 @@ private function extractElementProperties(array $element): array { $properties = []; // Extract basic element properties. - $basicProperties = ['identifier', 'name', 'summary', 'section', 'model_identifier']; + $basicProperties = ['identifier', 'name', 'omschrijving', 'section', 'model_identifier']; foreach ($basicProperties as $prop) { if (isset($element[$prop]) === true) { $properties[$prop] = $element[$prop]; @@ -4367,9 +4367,9 @@ private function transformViewsOptimized( if (isset($item['documentation']) === true) { if (is_array($item['documentation']) === true && isset($item['documentation']['_value']) === true) { - $object['summary'] = $item['documentation']['_value']; + $object['omschrijving'] = $item['documentation']['_value']; } elseif (is_string($item['documentation']) === true) { - $object['summary'] = $item['documentation']; + $object['omschrijving'] = $item['documentation']; } } @@ -4527,12 +4527,12 @@ private function buildElementsLookupFromRawData( // Fast summary extraction. if (isset($rawItem['documentation']) === true) { if (is_array($rawItem['documentation']) === true && isset($rawItem['documentation']['_value']) === true) { - $element['summary'] = $rawItem['documentation']['_value']; + $element['omschrijving'] = $rawItem['documentation']['_value']; } else { if (is_string($rawItem['documentation']) === true) { - $element['summary'] = $rawItem['documentation']; + $element['omschrijving'] = $rawItem['documentation']; } else { - $element['summary'] = ''; + $element['omschrijving'] = ''; } } } @@ -4770,9 +4770,9 @@ private function transformSectionObjectsBatch( // Extract documentation from XML if it exists and set to summary. if (isset($item['documentation']) === true) { if (is_array($item['documentation']) === true && isset($item['documentation']['_value']) === true) { - $object['summary'] = $item['documentation']['_value']; + $object['omschrijving'] = $item['documentation']['_value']; } elseif (is_string($item['documentation']) === true) { - $object['summary'] = $item['documentation']; + $object['omschrijving'] = $item['documentation']; } } @@ -4871,7 +4871,7 @@ private function transformSectionObjectsBatch( 'xml', '_propertyMapping', 'name', - 'summary', + 'omschrijving', 'viewNodes', 'viewRelationships', ] @@ -5228,12 +5228,12 @@ private function bulkTransformSection( if (isset($item['documentation']) === true) { if (is_array($item['documentation']) === true && isset($item['documentation']['_value']) === true) { - $object['summary'] = $item['documentation']['_value']; + $object['omschrijving'] = $item['documentation']['_value']; } else { if (is_string($item['documentation']) === true) { - $object['summary'] = $item['documentation']; + $object['omschrijving'] = $item['documentation']; } else { - $object['summary'] = ''; + $object['omschrijving'] = ''; } } } @@ -5414,12 +5414,12 @@ private function bulkTransformViews( if (isset($item['documentation']) === true) { if (is_array($item['documentation']) === true && isset($item['documentation']['_value']) === true) { - $object['summary'] = $item['documentation']['_value']; + $object['omschrijving'] = $item['documentation']['_value']; } else { if (is_string($item['documentation']) === true) { - $object['summary'] = $item['documentation']; + $object['omschrijving'] = $item['documentation']; } else { - $object['summary'] = ''; + $object['omschrijving'] = ''; } } } @@ -5809,7 +5809,7 @@ private function calculateObjectStatistics(array $normalizedData): array { ]; foreach ($statistics as $section => $sectionStats) { - if ($section !== 'summary') { + if ($section !== 'omschrijving') { // Skip summary section itself. $summary['total_objects_created'] += $sectionStats['created']; $summary['total_objects_updated'] += $sectionStats['updated']; @@ -5818,13 +5818,13 @@ private function calculateObjectStatistics(array $normalizedData): array { } } - $statistics['summary'] = $summary; + $statistics['omschrijving'] = $summary; // DEBUG: Log the summary statistics to help diagnose the issue. $this->logger->info( '[ArchiMate] Statistics summary calculated', [ - 'summary' => $summary, + 'omschrijving' => $summary, 'section_counts' => array_map( fn ($s) => [ 'created' => $s['created'] ?? 0, @@ -5832,7 +5832,7 @@ private function calculateObjectStatistics(array $normalizedData): array { 'unchanged' => $s['unchanged'] ?? 0, 'errors' => count($s['errors'] ?? []), ], - array_filter($statistics, fn ($k) => $k !== 'summary', ARRAY_FILTER_USE_KEY) + array_filter($statistics, fn ($k) => $k !== 'omschrijving', ARRAY_FILTER_USE_KEY) ), ] ); @@ -5851,7 +5851,7 @@ private function extractDetailedErrors(array $statistics): array { $detailedErrors = [ 'total_count' => 0, 'by_section' => [], - 'summary' => [], + 'omschrijving' => [], ]; $sections = ['elements', 'relationships', 'organizations', 'views', 'property_definitions']; @@ -5921,7 +5921,7 @@ private function extractDetailedErrors(array $statistics): array { // Sort by frequency and take top 10. uasort($allErrors, fn ($a, $b) => $b['total_count'] - $a['total_count']); - $detailedErrors['summary'] = array_slice(array_values($allErrors), 0, 10); + $detailedErrors['omschrijving'] = array_slice(array_values($allErrors), 0, 10); return $detailedErrors; }//end extractDetailedErrors() diff --git a/lib/Service/ArchiMateService.php b/lib/Service/ArchiMateService.php index 42a638fb..a9c4355a 100644 --- a/lib/Service/ArchiMateService.php +++ b/lib/Service/ArchiMateService.php @@ -2346,7 +2346,7 @@ private function calculateObjectStatistics(array $normalizedData): array { ]; foreach ($statistics as $section => $sectionStats) { - if ($section !== 'summary') { + if ($section !== 'omschrijving') { // Skip summary section itself. $summary['total_objects_created'] += $sectionStats['created']; $summary['total_objects_updated'] += $sectionStats['updated']; @@ -2355,7 +2355,7 @@ private function calculateObjectStatistics(array $normalizedData): array { } } - $statistics['summary'] = $summary; + $statistics['omschrijving'] = $summary; return $statistics; }//end calculateObjectStatistics() @@ -2585,9 +2585,9 @@ private function transformSectionObjectsBatch( // Extract documentation from XML if it exists and set to summary. if (isset($item['documentation']) === true) { if (is_array($item['documentation']) === true && isset($item['documentation']['_value']) === true) { - $object['summary'] = $item['documentation']['_value']; + $object['omschrijving'] = $item['documentation']['_value']; } elseif (is_string($item['documentation']) === true) { - $object['summary'] = $item['documentation']; + $object['omschrijving'] = $item['documentation']; } } @@ -2779,7 +2779,7 @@ public function getPropertyNameMapping(array $propDefMap): array { */ private function calculateOptimizedStatistics(): array { $statistics = [ - 'summary' => [ + 'omschrijving' => [ 'total_objects_created' => 0, 'total_objects_updated' => 0, 'total_objects_deleted' => 0, @@ -2790,7 +2790,7 @@ private function calculateOptimizedStatistics(): array { if ($this->lastSaveResult !== null) { $saveResult = $this->lastSaveResult; - $statistics['summary'] = [ + $statistics['omschrijving'] = [ 'total_objects_created' => count($saveResult['saved'] ?? []), 'total_objects_updated' => count($saveResult['updated'] ?? []), 'total_objects_deleted' => 0, diff --git a/lib/Service/MergeOrganisatieService.php b/lib/Service/MergeOrganisatieService.php index 930b02d0..9be886ed 100644 --- a/lib/Service/MergeOrganisatieService.php +++ b/lib/Service/MergeOrganisatieService.php @@ -271,7 +271,7 @@ public function execute(string $sourceUuid, string $targetUuid, ?string $actorUi } $this->auditLog( - action: 'organisation-merge.execute.summary', + action: 'organisation-merge.execute.omschrijving', context: [ 'sourceUuid' => $sourceUuid, 'targetUuid' => $targetUuid, diff --git a/lib/Service/ModuleVersionService.php b/lib/Service/ModuleVersionService.php index b601c4dc..39acad67 100644 --- a/lib/Service/ModuleVersionService.php +++ b/lib/Service/ModuleVersionService.php @@ -207,13 +207,13 @@ private function compareVersions(array $context): bool { private function updateVersionRecord(array $context): void { $moduleData = $context['moduleData']; $moduleName = $moduleData['voorkeurnaam'] ?? $moduleData['name'] ?? 'Onbekende applicatie'; - $moduleDescription = $moduleData['beschrijvingKort'] ?? ''; + $moduleDescription = $moduleData['shortDescription'] ?? ''; $versionData = [ 'module' => $context['moduleUuid'], 'version' => '1.0.0', - 'beschrijvingKort' => $moduleDescription, - 'beschrijvingLang' => '', + 'shortDescription' => $moduleDescription, + 'longDescription' => '', 'status' => 'in gebruik', ]; diff --git a/lib/Service/OrganisatieService.php b/lib/Service/OrganisatieService.php index 818234ef..07a368b2 100644 --- a/lib/Service/OrganisatieService.php +++ b/lib/Service/OrganisatieService.php @@ -255,7 +255,7 @@ private function mapStatus(string $status): bool { /** * Internal method to create organization entity. * - * Restores parent-child organisation hierarchy (VNG domain: gemeente → + * Restores parent-child organisation hierarchy (VNG domein: gemeente → * samenwerkingsverband, moederorganisatie → deelnemende partij) that a * prior hotfix disabled. The hotfix disabled parent assignment because a * child organisation created with a parent became inaccessible to its diff --git a/lib/Service/PortfolioReportService.php b/lib/Service/PortfolioReportService.php index f6ae73c3..f5728e56 100644 --- a/lib/Service/PortfolioReportService.php +++ b/lib/Service/PortfolioReportService.php @@ -242,12 +242,12 @@ private function buildRows(string $organisationUuid): array { ]; $gebruikResult = $objectService->searchObjectsPaginated(query: $gebruikQuery, _rbac: false, _multitenancy: false); - $gebruiken = $this->derivation->normalizeResults(results: $gebruikResult['results'] ?? []); - $total = (int)($gebruikResult['total'] ?? count($gebruiken)); - $truncated = $total > count($gebruiken); + $usages = $this->derivation->normalizeResults(results: $gebruikResult['results'] ?? []); + $total = (int)($gebruikResult['total'] ?? count($usages)); + $truncated = $total > count($usages); $gebruikIds = []; - foreach ($gebruiken as $gebruik) { + foreach ($usages as $gebruik) { $id = $this->derivation->resolveRelationId(value: $gebruik['id'] ?? ($gebruik['@self']['id'] ?? null)); if ($id !== '') { $gebruikIds[] = $id; @@ -257,7 +257,7 @@ private function buildRows(string $organisationUuid): array { $contractsByGebruik = $this->fetchContractsForGebruiken(gebruikIds: $gebruikIds, cfg: $cfg, ceiling: $ceiling); $rows = []; - foreach ($gebruiken as $gebruik) { + foreach ($usages as $gebruik) { $rows[] = $this->buildRow(gebruik: $gebruik, cfg: $cfg, contractsByGebruik: $contractsByGebruik, now: $now); } diff --git a/lib/Service/SettingsService.php b/lib/Service/SettingsService.php index 74b390b1..611950fc 100644 --- a/lib/Service/SettingsService.php +++ b/lib/Service/SettingsService.php @@ -3211,7 +3211,7 @@ private function getConnectionDetails(array $emailSettings): array { return [ 'type' => 'Mailgun API', 'has_api_key' => empty($emailSettings['mailgunApiKey']) === false, - 'domain' => $emailSettings['mailgunDomain'] ?? '', + 'domein' => $emailSettings['mailgunDomain'] ?? '', ]; case 'postmark': return [ diff --git a/lib/Service/SoftwareCatalogue/ContactPersonHandler.php b/lib/Service/SoftwareCatalogue/ContactPersonHandler.php index fefcf921..88d1dc7b 100644 --- a/lib/Service/SoftwareCatalogue/ContactPersonHandler.php +++ b/lib/Service/SoftwareCatalogue/ContactPersonHandler.php @@ -2589,7 +2589,7 @@ private function ensureOrganizationEntity(string $organizationUuid): ?\OCA\OpenR // Get organization name and description. // phpcs:ignore Generic.Files.LineLength.TooLong $organizationName = $organizationData['name'] ?? 'Unknown Organization'; - $description = $organizationData['description'] ?? $organizationData['beschrijvingLang'] ?? null; + $description = $organizationData['description'] ?? $organizationData['longDescription'] ?? null; $organizationDescription = $description ?? $organizationData['description'] ?? ''; // Check if an entity with the same slug already exists (prevents unique constraint violation). diff --git a/lib/Service/ViewService.php b/lib/Service/ViewService.php index 63d92f29..0fb38dcb 100644 --- a/lib/Service/ViewService.php +++ b/lib/Service/ViewService.php @@ -1165,7 +1165,7 @@ private function createModuleNode(array $module, array $parentNode, string $refe 'style' => 'normal', 'color' => 'rgb(0, 0, 0)', ], - 'description' => $module['description'] ?? $module['summary'] ?? null, + 'description' => $module['description'] ?? $module['omschrijving'] ?? null, 'elementRef' => $moduleId, '_isModuleExpansion' => true, '_parentReferentieComponent' => $referenceComponentId, diff --git a/lib/Settings/softwarecatalogus_register.json b/lib/Settings/softwarecatalogus_register.json index 0a651720..e898371b 100644 --- a/lib/Settings/softwarecatalogus_register.json +++ b/lib/Settings/softwarecatalogus_register.json @@ -468,7 +468,7 @@ "theme": [ { "title": "Voor 342 gemeenten", - "summary": "Vergelijk applicaties, vind leveranciers, versterk digitale kracht.", + "omschrijving": "Vergelijk applicaties, vind leveranciers, versterk digitale kracht.", "description": "", "image": "", "content": "", @@ -486,7 +486,7 @@ }, { "title": "Voor 336 leveranciers", - "summary": "Zet uw software in de etalage voor gemeenten.", + "omschrijving": "Zet uw software in de etalage voor gemeenten.", "description": "", "image": "", "content": "", @@ -504,7 +504,7 @@ }, { "title": "Voor 15 community's", - "summary": "Community's van gemeenten delen hun kennis en producten.", + "omschrijving": "Community's van gemeenten delen hun kennis en producten.", "description": "", "image": "", "content": "", @@ -524,7 +524,7 @@ "publication": [ { "title": "Open Catalogi Platform", - "summary": "Een open source platform voor het publiceren en doorzoeken van overheidscatalogi", + "omschrijving": "Een open source platform voor het publiceren en doorzoeken van overheidscatalogi", "description": "Open Catalogi is een innovatief platform dat overheidsorganisaties helpt bij het publiceren, beheren en doorzoekbaar maken van hun catalogi. Het platform ondersteunt verschillende standaarden en maakt het eenvoudig om informatie te delen tussen organisaties.", "organization": "VNG Realisatie", "themes": [ @@ -541,7 +541,7 @@ }, { "title": "Common Ground", - "summary": "Een nieuwe manier van werken met informatiesystemen binnen de overheid", + "omschrijving": "Een nieuwe manier van werken met informatiesystemen binnen de overheid", "description": "Common Ground is een initiatief dat streeft naar een moderne, flexibele en efficiënte informatievoorziening voor gemeenten. Het principe is gebaseerd op het scheiden van data en applicaties, waardoor informatie eenvoudiger kan worden gedeeld en hergebruikt.", "organization": "VNG Realisatie", "themes": [ @@ -558,7 +558,7 @@ }, { "title": "OpenRegister", - "summary": "Een Nextcloud app voor het beheren van gestructureerde data in registers", + "omschrijving": "Een Nextcloud app voor het beheren van gestructureerde data in registers", "description": "OpenRegister is een krachtige Nextcloud applicatie waarmee organisaties gestructureerde data kunnen beheren in registers. Met ondersteuning voor JSON Schema validatie, Magic Mapper voor optimale performance, en uitgebreide API mogelijkheden.", "organization": "Conduction", "themes": [ @@ -575,7 +575,7 @@ }, { "title": "Softwarecatalogus", - "summary": "De centrale catalogus voor software binnen de Nederlandse overheid", + "omschrijving": "De centrale catalogus voor software binnen de Nederlandse overheid", "description": "De Softwarecatalogus biedt een overzicht van alle software die wordt gebruikt binnen de Nederlandse overheid. Organisaties kunnen hier software registreren, vergelijken en informatie delen over implementaties en ervaringen.", "organization": "VNG", "themes": [ @@ -592,7 +592,7 @@ }, { "title": "GEMMA Architectuur", - "summary": "De gemeentelijke referentiearchitectuur voor informatievoorziening", + "omschrijving": "De gemeentelijke referentiearchitectuur voor informatievoorziening", "description": "GEMMA (GEMeentelijke Model Architectuur) is de referentiearchitectuur voor gemeenten. Het biedt richtlijnen en standaarden voor de inrichting van de informatievoorziening, processen en applicatielandschap van gemeenten.", "organization": "VNG Realisatie", "themes": [ @@ -611,7 +611,7 @@ "glossary": [ { "title": "Addendum", - "summary": "Aanvullende afspraak bij het convenant met nadere detaillering voor één standaard", + "omschrijving": "Aanvullende afspraak bij het convenant met nadere detaillering voor één standaard", "description": "Voor elke op het convenant aanvullende afspraak die nadere detaillering behoeft, worden losse addenda (aanvullingen) aan het convenant gehangen. In een addendum wordt voor 1 standaard een realisatietermijn afgesproken. Leveranciers streven ernaar de betreffende standaard tijdig en juist in de softwareproducten in te bouwen, te implementeren en te laten gebruiken door gemeenten.", "externalLink": "https://www.softwarecatalogus.nl/lexicon#Addendum", "keywords": [ @@ -626,7 +626,7 @@ }, { "title": "Convenant VNG", - "summary": "Algemene samenwerkingsafspraken met leveranciers, gebruikersverenigingen en samenwerkingsverbanden", + "omschrijving": "Algemene samenwerkingsafspraken met leveranciers, gebruikersverenigingen en samenwerkingsverbanden", "description": "Hierin zijn algemene samenwerkingsafspraken vastgelegd met leveranciers, gebruikersverenigingen, en samenwerkingsverbanden die voor gemeenten software inkopen. De samenwerking is gericht op het gezamenlijk (door)ontwikkelen van procesmatige en technische standaarden o.a. door vakmatig kennis te delen.", "externalLink": "https://www.softwarecatalogus.nl/lexicon#Convenant%20VNG", "keywords": [ @@ -642,7 +642,7 @@ }, { "title": "Eindproduct-standaard", - "summary": "Standaard waarbij functionaliteit, services en rolverdeling scherp gedefinieerd zijn", + "omschrijving": "Standaard waarbij functionaliteit, services en rolverdeling scherp gedefinieerd zijn", "description": "Hierbij zijn de functionaliteit, de (web)services en rolverdeling tussen systemen gedetailleerd en scherp gedefinieerd. Juiste toepassing is preventief goed testbaar en daardoor is de voorspelbaarheid op goed functioneren hoog.", "externalLink": "https://www.softwarecatalogus.nl/lexicon#Eindproduct-standaard", "keywords": [ @@ -657,7 +657,7 @@ }, { "title": "Gegevensstandaard", - "summary": "Afspraken over meervoudig gebruik en uitwisseling van gegevens", + "omschrijving": "Afspraken over meervoudig gebruik en uitwisseling van gegevens", "description": "Om ervoor te zorgen dat de uitgewisselde gegevens juist zijn en op de juiste manier worden gebruikt, met de juiste betekenis, dienen er zeer goede afspraken gemaakt te worden. De afspraken over het meervoudig gebruik van gegevens en de (gemeentelijke) gegevensuitwisseling zijn vastgelegd in gegevensstandaarden. Ook hiervoor geldt dat de leverancier dient aan te geven op welke wijze hieraan wordt voldaan.", "externalLink": "https://www.softwarecatalogus.nl/lexicon#Gegevensstandaard", "keywords": [ @@ -673,7 +673,7 @@ }, { "title": "Grondstof-standaard", - "summary": "Standaard die specialistische kennis en uitgebreide specificaties vereist", + "omschrijving": "Standaard die specialistische kennis en uitgebreide specificaties vereist", "description": "Hierbij moeten nóg meer dan bij half-fabrikaten specificaties en activiteiten worden uitgevoerd om interoperabiliteit te kunnen realiseren. Dit vergt specialistische kennis.", "externalLink": "https://www.softwarecatalogus.nl/lexicon#Grondstof-standaard", "keywords": [ @@ -688,7 +688,7 @@ }, { "title": "Halffabrikaat-standaard", - "summary": "Standaard waarbij de opdrachtgever aanvullende specificaties moet toevoegen", + "omschrijving": "Standaard waarbij de opdrachtgever aanvullende specificaties moet toevoegen", "description": "Hierbij dient de opdrachtgever aanvullende specificaties toe te voegen.", "externalLink": "https://www.softwarecatalogus.nl/lexicon#Halffabrikaat-standaard", "keywords": [ @@ -703,7 +703,7 @@ }, { "title": "Leverancier", - "summary": "Aanbieder van standaard-softwarepakketten voor gemeentelijke taken", + "omschrijving": "Aanbieder van standaard-softwarepakketten voor gemeentelijke taken", "description": "Aanbieders van standaard-software(pakketten) voor gemeentelijke taken. Alleen leveranciers die het convenant met VNG ondertekend hebben, mogen hun gegevens in de Softwarecatalogus zetten.", "externalLink": "https://www.softwarecatalogus.nl/lexicon#Leverancier", "keywords": [ @@ -718,7 +718,7 @@ }, { "title": "Referentiecomponent", - "summary": "Verbinding tussen softwareaanbod van leveranciers en softwaregebruik van gemeenten", + "omschrijving": "Verbinding tussen softwareaanbod van leveranciers en softwaregebruik van gemeenten", "description": "De verbinding tussen softwareaanbod leveranciers en softwaregebruik gemeenten. Een softwarepakket kan functionaliteit bieden voor één of meerdere referentiecomponenten, daarmee krijgt u een globaal beeld van de functionaliteit.", "externalLink": "https://www.softwarecatalogus.nl/lexicon#Referentiecomponent", "keywords": [ @@ -733,7 +733,7 @@ }, { "title": "SaaS", - "summary": "Software as a Service: applicatie aangeboden vanuit de cloud door een leverancier", + "omschrijving": "Software as a Service: applicatie aangeboden vanuit de cloud door een leverancier", "description": "Bij Software as a Service maakt een gemeente of samenwerking gebruik van een applicatie die door een leverancier vanuit de cloud wordt aangeboden. De gemeente of samenwerking heeft géén toegang tot de onderliggende infrastructuur en software, oftewel het technisch beheer wordt geheel door de leverancier verzorgd.", "externalLink": "https://www.softwarecatalogus.nl/lexicon#SaaS", "keywords": [ @@ -748,7 +748,7 @@ }, { "title": "Standaard", - "summary": "Norm of set van eisen waaraan gemeentelijke software moet voldoen", + "omschrijving": "Norm of set van eisen waaraan gemeentelijke software moet voldoen", "description": "Norm of set van eisen/voorwaarden/afspraken waaraan (gemeentelijke) software moet voldoen. (Open) Standaarden zijn opgenomen die voor gemeenten van belang zijn voor interne en externe applicatiekoppelingen, gegevensmanagement, bedrijfsvoering en digitale dienstverlening. Standaarden kunnen als producten worden getypeerd in eindproducten, halffabrikaten, grondstoffen en gegevensstandaarden. Deze typering is een indicatie wat de benodigde inspanning is om op basis van de standaard tot een werkende koppeling te komen. VNG adviseert gemeenten bij voorkeur functioneel passende eindproduct-standaarden te gebruiken en pas daarna (in aflopende prioriteit) halffabrikaat- en grondstof-standaarden, en als laatste maatwerk toe te passen.", "externalLink": "https://www.softwarecatalogus.nl/lexicon#Standaard", "keywords": [ @@ -769,7 +769,7 @@ "name": "Toegangsbeveiligingsbeleid", "thema": "Toegangsbeveiliging", "bioVersion": "BIO 2.0", - "bbnNiveau": ["BBN1", "BBN2", "BBN3"], + "bbnLevel": ["BBN1", "BBN2", "BBN3"], "bron": "https://www.baselineinformatiebeveiligingoverheid.nl" }, { @@ -778,7 +778,7 @@ "name": "Beheer van gebruikerstoegang", "thema": "Toegangsbeveiliging", "bioVersion": "BIO 2.0", - "bbnNiveau": ["BBN2", "BBN3"], + "bbnLevel": ["BBN2", "BBN3"], "bron": "https://www.baselineinformatiebeveiligingoverheid.nl" }, { @@ -787,7 +787,7 @@ "name": "Cryptografisch beleid", "thema": "Cryptografie", "bioVersion": "BIO 2.0", - "bbnNiveau": ["BBN2", "BBN3"], + "bbnLevel": ["BBN2", "BBN3"], "bron": "https://www.baselineinformatiebeveiligingoverheid.nl" }, { @@ -796,7 +796,7 @@ "name": "Netwerkbeveiligingsbeheer", "thema": "Communicatiebeveiliging", "bioVersion": "BIO 2.0", - "bbnNiveau": ["BBN1", "BBN2", "BBN3"], + "bbnLevel": ["BBN1", "BBN2", "BBN3"], "bron": "https://www.baselineinformatiebeveiligingoverheid.nl" }, { @@ -805,7 +805,7 @@ "name": "Gegevensoverdrachtbeleid", "thema": "Communicatiebeveiliging", "bioVersion": "BIO 2.0", - "bbnNiveau": ["BBN2", "BBN3"], + "bbnLevel": ["BBN2", "BBN3"], "bron": "https://www.baselineinformatiebeveiligingoverheid.nl" } ] @@ -1042,7 +1042,7 @@ "title": "Sector", "description": "Schema voor sectoren binnen de softwarecatalogus", "version": "0.0.10", - "summary": "", + "omschrijving": "", "icon": "Domain", "required": [ "name" @@ -1144,11 +1144,11 @@ "title": "Suite", "description": "Een suite is een verzameling van applicaties die samen een product vormen", "version": "0.1.4", - "summary": "", + "omschrijving": "", "icon": "PackageVariant", "required": [ "name", - "beschrijvingKort" + "shortDescription" ], "properties": { "name": { @@ -1165,7 +1165,7 @@ }, "example": "Bijvoorbeeld: VNG Suite" }, - "beschrijvingKort": { + "shortDescription": { "type": "string", "title": "Short description", "description": "Korte beschrijving van de suite", @@ -1177,7 +1177,7 @@ }, "example": "Bijvoorbeeld: Een korte samenvatting van de suite" }, - "beschrijvingLang": { + "longDescription": { "description": "Uitgebreide beschrijving van de suite", "type": "string", "format": "markdown", @@ -1312,8 +1312,8 @@ }, "configuration": { "objectNameField": "name", - "objectSummaryField": "beschrijvingKort", - "objectDescriptionField": "beschrijvingLang", + "objectSummaryField": "shortDescription", + "objectDescriptionField": "longDescription", "objectImageField": "logo", "allowFiles": true, "allowedTags": [ @@ -1333,7 +1333,7 @@ "title": "Service", "description": "Een specifiek aanbod van een dienst op een of meerdere applicaties door een leverancier", "version": "0.2.1", - "summary": "", + "omschrijving": "", "icon": "Handshake", "required": [ "name", @@ -1374,7 +1374,7 @@ "title": "Name", "example": "Bijvoorbeeld: Implementatie en ondersteuning" }, - "beschrijvingKort": { + "shortDescription": { "type": "string", "description": "Een korte beschrijving van de dienst voor o.a. in de zoekresultaten.", "title": "Short description", @@ -1386,7 +1386,7 @@ "order": 5, "example": "Bijvoorbeeld: Korte beschrijving van de dienst" }, - "beschrijvingLang": { + "longDescription": { "description": "Een uitgebreide omschrijving van uw dienst. Dit kan met mark down opgemaakt worden.", "type": "string", "format": "markdown", @@ -1608,8 +1608,8 @@ }, "configuration": { "objectNameField": "name", - "objectSummaryField": "beschrijvingKort", - "objectDescriptionField": "beschrijvingLang", + "objectSummaryField": "shortDescription", + "objectDescriptionField": "longDescription", "objectImageField": "logo", "allowFiles": true, "allowedTags": [ @@ -1642,11 +1642,11 @@ "title": "Vulnerability", "description": "Schema voor kwetsbaarheden. Dit schema is onderdeel van het vastgestelde datamodel maar wordt niet daadwerkelijk in de applicatie gebruikt.", "version": "1.0.20", - "summary": "", + "omschrijving": "", "icon": "ShieldAlert", "required": [ "name", - "beschrijvingKort", + "shortDescription", "modules" ], "properties": { @@ -1660,7 +1660,7 @@ "maxLength": 200, "example": "Bijvoorbeeld: SQL Injection" }, - "beschrijvingKort": { + "shortDescription": { "description": "Korte beschrijving van de kwetsbaarheid", "type": "string", "maxLength": 255, @@ -1670,7 +1670,7 @@ "title": "Summary", "example": "Bijvoorbeeld: Korte beschrijving van de kwetsbaarheid" }, - "beschrijvingLang": { + "longDescription": { "description": "Uitgebreide beschrijving van de kwetsbaarheid", "type": "string", "format": "markdown", @@ -1783,8 +1783,8 @@ }, "configuration": { "objectNameField": "name", - "objectSummaryField": "beschrijvingKort", - "objectDescriptionField": "beschrijvingLang", + "objectSummaryField": "shortDescription", + "objectDescriptionField": "longDescription", "autoPublish": false } }, @@ -1795,7 +1795,7 @@ "title": "Contact person", "description": "Contactgegevens van een persoon", "version": "0.0.27", - "summary": "", + "omschrijving": "", "icon": "AccountMultiple", "required": [ "contactsUid" @@ -2029,7 +2029,7 @@ "title": "Organisation", "description": "Een organisatie die voorzieningen aanbiedt", "version": "0.5.0", - "summary": "", + "omschrijving": "", "icon": "OfficeBuildingOutline", "required": [ "contactsUid", @@ -2549,7 +2549,7 @@ "title": "Usage", "description": "Het gebruik van applicaties, diensten en koppelingen door afnemers", "version": "1.4.0", - "summary": "", + "omschrijving": "", "icon": "Gauge", "x-openregister-notifications": { "phaseout-approaching": { @@ -3152,7 +3152,7 @@ "title": "Contract", "description": "Een formele overeenkomst voor het inzetten van een Dienst op een Gebruik. Beschrijft de inkooprelatie achter een Gebruik (welke organisatie welke module onder welke voorwaarden gebruikt): looptijd, kosten, contracttype en status.", "version": "0.1.1", - "summary": "", + "omschrijving": "", "icon": "FileDocumentEdit", "required": [ "dienst", @@ -3443,7 +3443,7 @@ "title": "Connection", "description": "Schema voor koppelingen tussen applicaties en systemen. ApplicatieB is voor koppelingen met andere applicaties. BuitengemeentelijkVoorziening is voor koppelingen met externe voorzieningen.", "version": "0.3.0", - "summary": "", + "omschrijving": "", "icon": "Link", "required": [ "name" @@ -3463,7 +3463,7 @@ }, "example": "Bijvoorbeeld: API Koppeling" }, - "beschrijvingKort": { + "shortDescription": { "description": "Een korte omschrijving van de koppeling (maximaal 256 karakters).", "type": "string", "table": { @@ -3474,7 +3474,7 @@ "title": "Short description", "example": "Bijvoorbeeld: Korte beschrijving van de koppeling" }, - "beschrijvingLang": { + "longDescription": { "description": "Uitgebreide beschrijving van de koppeling", "type": "string", "format": "markdown", @@ -3798,8 +3798,8 @@ "configuration": { "autoPublish": false, "objectNameField": "{{ moduleA }} {{ gegevensuitwisselingRichting | map: AnaarB=→, BnaarA=←, bi-directioneel=↔ }} {{ moduleB | buitengemeentelijkVoorziening }}", - "objectSummaryField": "beschrijvingKort", - "objectDescriptionField": "beschrijvingLang", + "objectSummaryField": "shortDescription", + "objectDescriptionField": "longDescription", "x-openregister-lifecycle": { "field": "status", "initial": "in ontwikkeling", @@ -3854,7 +3854,7 @@ "title": "Assessment", "description": "Schema voor beoordelingen en waarderingen van applicaties en diensten. Dit schema is onderdeel van het vastgestelde datamodel maar wordt niet daadwerkelijk in de applicatie gebruikt.", "version": "0.1.3", - "summary": "", + "omschrijving": "", "icon": "Star", "required": [ "name", @@ -3870,7 +3870,7 @@ "title": "Name", "order": 1 }, - "beschrijvingKort": { + "shortDescription": { "description": "Korte beschrijving van de beoordeling", "type": "string", "maxLength": 255, @@ -3879,7 +3879,7 @@ "title": "Summary", "order": 2 }, - "beschrijvingLang": { + "longDescription": { "description": "Uitgebreide beschrijving van de beoordeling", "type": "string", "format": "markdown", @@ -3975,8 +3975,8 @@ }, "configuration": { "objectNameField": "name", - "objectSummaryField": "beschrijvingKort", - "objectDescriptionField": "beschrijvingLang", + "objectSummaryField": "shortDescription", + "objectDescriptionField": "longDescription", "autoPublish": false } }, @@ -3986,7 +3986,7 @@ "title": "Element", "description": "AMEF Element - Architectuur elementen uit het ArchiMate model", "version": "0.0.11", - "summary": "", + "omschrijving": "", "icon": "Cube", "required": [ "identifier", @@ -4294,11 +4294,11 @@ "searchable": false } }, - "gemmaSortering": { + "gemmaSorting": { "description": "GEMMA sortering van dit Element", "type": "string", "facetable": false, - "title": "gemmaSortering", + "title": "gemmaSorting", "table": { "enabled": true, "indexed": false, @@ -4327,11 +4327,11 @@ "searchable": false } }, - "afkorting": { + "abbreviation": { "description": "Afkorting van dit Element", "type": "string", "facetable": false, - "title": "afkorting", + "title": "abbreviation", "table": { "enabled": true, "indexed": false, @@ -4393,11 +4393,11 @@ "searchable": false } }, - "beleidsdomein": { + "policyDomain": { "description": "Beleidsdomein van dit Element", "type": "string", "facetable": true, - "title": "beleidsdomein", + "title": "policyDomain", "table": { "enabled": true, "indexed": false, @@ -4481,11 +4481,11 @@ "searchable": false } }, - "detailniveau": { + "detailLevel": { "description": "Detailniveau van dit Element", "type": "string", "facetable": true, - "title": "detailniveau", + "title": "detailLevel", "table": { "enabled": true, "indexed": false, @@ -4496,7 +4496,7 @@ "description": "Domein van dit Element", "type": "string", "facetable": true, - "title": "domein", + "title": "domain", "table": { "enabled": true, "indexed": false, @@ -4525,11 +4525,11 @@ "searchable": false } }, - "groepering": { + "grouping": { "description": "Groepering van dit Element", "type": "string", "facetable": true, - "title": "groepering", + "title": "grouping", "table": { "enabled": true, "indexed": false, @@ -4668,11 +4668,11 @@ "searchable": false } }, - "publiceren": { + "publish": { "description": "Publiceren van dit Element", "type": "string", "facetable": false, - "title": "publiceren", + "title": "publish", "table": { "enabled": true, "indexed": false, @@ -4976,7 +4976,7 @@ "searchable": false } }, - "summary": { + "omschrijving": { "description": "Summary van dit Element", "type": "string", "facetable": false, @@ -5155,7 +5155,7 @@ "title": "View", "description": "AMEF View - Architectuur views en diagrammen uit het ArchiMate model", "version": "0.0.7", - "summary": "", + "omschrijving": "", "icon": "Eye", "required": [ "identifier", @@ -5440,11 +5440,11 @@ "facetable": true, "title": "viewtype" }, - "titelViewSwc": { + "titleViewSwc": { "description": "Titel view SWC van deze View", "type": "string", "facetable": false, - "title": "titelViewSwc" + "title": "titleViewSwc" }, "gemmaType": { "description": "GEMMA type van deze View", @@ -5488,11 +5488,11 @@ "facetable": false, "title": "layoutDirectionDo" }, - "detailniveau": { + "detailLevel": { "description": "Detailniveau van deze View", "type": "string", "facetable": true, - "title": "detailniveau" + "title": "detailLevel" }, "scope": { "description": "Scope van deze View", @@ -5500,13 +5500,13 @@ "facetable": true, "title": "scope" }, - "publiceren": { + "publish": { "description": "Publiceren van deze View", "type": "string", "facetable": false, - "title": "publiceren" + "title": "publish" }, - "summary": { + "omschrijving": { "description": "Summary van deze View", "type": "string", "facetable": false, @@ -5545,7 +5545,7 @@ "title": "Model", "description": "AMEF Model - Volledig ArchiMate model met alle elementen, relaties en views", "version": "0.0.43", - "summary": "", + "omschrijving": "", "icon": "Database", "required": [ "xmlns", @@ -5997,7 +5997,7 @@ "title": "Organization", "description": "Organizations represent entities that publish or manage catalogs. They can be government agencies, companies, or other institutions. Each organization can have multiple catalogs and is identified by various standardized identifiers like OIN, RSIN, and PKI certificates.", "version": "0.0.5", - "summary": "An organization that publishes or manages catalogs", + "omschrijving": "An organization that publishes or manages catalogs", "icon": null, "required": [ "name", @@ -6016,7 +6016,7 @@ "searchable": false } }, - "summary": { + "omschrijving": { "type": "string", "description": "Brief description of the organization", "minLength": 1, @@ -6148,7 +6148,7 @@ "title": "Property Definition", "description": "AMEF Property Definition - Definitie van eigenschappen voor ArchiMate elementen", "version": "0.0.8", - "summary": "", + "omschrijving": "", "icon": "CogOutline", "required": [ "identifier", @@ -6308,7 +6308,7 @@ "title": "Relation", "description": "AMEF Relation - Relaties tussen architectuur elementen uit het ArchiMate model", "version": "0.0.8", - "summary": "", + "omschrijving": "", "icon": "ArrowRight", "required": [ "identifier", @@ -6752,7 +6752,7 @@ "searchable": false } }, - "summary": { + "omschrijving": { "description": "Summary van deze Relation", "type": "string", "facetable": false, @@ -6812,7 +6812,7 @@ "title": "Application", "description": "Een applicatie is een softwarecomponent (applicatie of systeemsoftware)", "version": "0.3.2", - "summary": "", + "omschrijving": "", "icon": "Package", "required": [ "name" @@ -6831,7 +6831,7 @@ }, "example": "Bijvoorbeeld: VNG Applicatie Suite" }, - "beschrijvingKort": { + "shortDescription": { "type": "string", "description": "Een korte beschrijving van de applicatie voor o.a. in de zoekresultaten.", "title": "Short description", @@ -6844,7 +6844,7 @@ }, "example": "Bijvoorbeeld: Een korte samenvatting van de applicatie" }, - "beschrijvingLang": { + "longDescription": { "type": "string", "description": "Een uitgebreide omschrijving van uw applicatie. Dit kan met mark down opgemaakt worden.", "title": "Extended description", @@ -7180,7 +7180,7 @@ "inversedBy": "module" } }, - "gebruiken": { + "usages": { "description": "Het gebruik van deze applicatie", "type": "array", "visible": false, @@ -7347,8 +7347,8 @@ }, "configuration": { "objectNameField": "name", - "objectSummaryField": "beschrijvingKort", - "objectDescriptionField": "beschrijvingLang", + "objectSummaryField": "shortDescription", + "objectDescriptionField": "longDescription", "objectImageField": "logo", "allowFiles": true, "allowedTags": [ @@ -7407,7 +7407,7 @@ }, { "type": "required", - "field": "beschrijvingLang", + "field": "longDescription", "weight": 1 } ], @@ -7424,7 +7424,7 @@ "title": "Compliancy", "description": "Schema voor compliancy en standaard ondersteuning", "version": "0.0.12", - "summary": "", + "omschrijving": "", "icon": "CheckCircle", "required": [], "properties": { @@ -7543,7 +7543,7 @@ "title": "BIO measure", "description": "Een BIO 2.0 (Baseline Informatiebeveiliging Overheid) maatregel uit de gepubliceerde maatregelenlijst. Wordt gebruikt als selectiebron voor compliance-registraties (compliancy.bioMaatregel) en het BIO-dekkingsrapport.", "version": "0.0.1", - "summary": "", + "omschrijving": "", "icon": "ShieldLockOutline", "required": [ "code", @@ -7608,7 +7608,7 @@ "maxLength": 50, "example": "Bijvoorbeeld: BIO 2.0" }, - "bbnNiveau": { + "bbnLevel": { "description": "De BBN-niveaus (Baseline Informatiebeveiliging Overheid) waarop deze maatregel van toepassing is", "type": "array", "order": 6, @@ -7659,7 +7659,7 @@ "configuration": { "objectNameField": "name", "objectSummaryField": "thema", - "objectDescriptionField": "omschrijving", + "objectDescriptionField": "summary", "autoPublish": true } }, @@ -7697,7 +7697,7 @@ "title": "Application version", "description": "Schema voor applicatieversies", "version": "0.1.3", - "summary": "", + "omschrijving": "", "icon": "ViewModule", "required": [], "properties": { @@ -7720,20 +7720,20 @@ "title": "Version", "default": "1.0.0" }, - "pakketversie_beschrijving": { + "package_version_description": { "description": "Beschrijving van de pakketversie", "type": "string", "order": 2, "title": "Package version description" }, - "beschrijvingKort": { + "shortDescription": { "description": "Een korte omschrijving van de versie (256 karakters)", "type": "string", "order": 3, "title": "Short description", "maxLength": 255 }, - "beschrijvingLang": { + "longDescription": { "description": "Uitgebreide beschrijving van de applicatieversie", "type": "string", "order": 4, @@ -7781,7 +7781,7 @@ "order": 17, "title": "Date withdrawn" }, - "gebruiken": { + "usages": { "description": "Het gebruik van deze applicatieversie", "type": "array", "visible": true, @@ -7898,8 +7898,8 @@ }, "configuration": { "objectNameField": "version", - "objectSummaryField": "beschrijvingKort", - "objectDescriptionField": "beschrijvingLang", + "objectSummaryField": "shortDescription", + "objectDescriptionField": "longDescription", "autoPublish": true, "x-openregister-lifecycle": { "field": "status", @@ -7940,7 +7940,7 @@ "title": "SBOM component", "description": "Schema voor componenten die zijn geïmporteerd uit een SBOM (Software Bill of Materials, CycloneDX of SPDX) voor een applicatieversie.", "version": "0.0.1", - "summary": "", + "omschrijving": "", "icon": "PackageVariantClosed", "required": [ "moduleVersie", diff --git a/src/components/cards/OrganisatieCard.vue b/src/components/cards/OrganisatieCard.vue index 60259ab3..0d145fb8 100644 --- a/src/components/cards/OrganisatieCard.vue +++ b/src/components/cards/OrganisatieCard.vue @@ -66,11 +66,11 @@ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 * @version 1.0.0 *
-

- {{ item.beschrijvingKort }} +

+ {{ item.shortDescription }}

-

- {{ truncateText(item.beschrijvingLang, 150) }} +

+ {{ truncateText(item.longDescription, 150) }}

{{ t('softwarecatalog', 'No description available') }} @@ -313,8 +313,8 @@ export default { * @spec openspec/specs/fe-organizations/spec.md */ getOrganisatieSummary(item) { - if (item?.beschrijvingKort) return item.beschrijvingKort - if (item?.beschrijvingLang) return item.beschrijvingLang + if (item?.shortDescription) return item.shortDescription + if (item?.longDescription) return item.longDescription if (item?.type && item?.name) return `${item.type} organisatie` if (item?.type) return item.type return '' @@ -516,8 +516,8 @@ export default { line-height: 1.4; } -.beschrijvingKort, -.beschrijvingLang { +.shortDescription, +.longDescription { margin: 0; color: var(--color-main-text); font-size: 14px; diff --git a/src/components/reviews/ReviewsPanel.vue b/src/components/reviews/ReviewsPanel.vue index 0cddddd0..cd14e231 100644 --- a/src/components/reviews/ReviewsPanel.vue +++ b/src/components/reviews/ReviewsPanel.vue @@ -96,9 +96,9 @@ >

- {{ item.beschrijvingLang }} + {{ item.longDescription }}

{{ item.auteur diff --git a/src/components/vulnerabilities/VulnerabilityExposurePanel.vue b/src/components/vulnerabilities/VulnerabilityExposurePanel.vue index bf297b20..85fa6d6f 100644 --- a/src/components/vulnerabilities/VulnerabilityExposurePanel.vue +++ b/src/components/vulnerabilities/VulnerabilityExposurePanel.vue @@ -163,7 +163,7 @@ export default { * @return {Array} Gebruik records. * @spec openspec/specs/module-vulnerability-tracking/spec.md */ - gebruiken() { + usages() { return objectStore.getCollection('gebruik')?.results || [] }, @@ -207,20 +207,18 @@ export default { if (!this.vulnerability) { return [] } - return computeExposure(this.vulnerability, this.gebruiken).map( - (row) => ({ - gebruikId: row.gebruikId, - moduleName: - this.moduleIndex[row.moduleId] - || row.moduleId - || t('softwarecatalog', 'Unknown application'), - afnemerName: - this.organisatieIndex[row.afnemerId] - || row.afnemerId - || t('softwarecatalog', 'Unknown organisation'), - versionName: this.moduleVersieIndex[row.moduleVersieId] || '', - }), - ) + return computeExposure(this.vulnerability, this.usages).map((row) => ({ + gebruikId: row.gebruikId, + moduleName: + this.moduleIndex[row.moduleId] + || row.moduleId + || t('softwarecatalog', 'Unknown application'), + afnemerName: + this.organisatieIndex[row.afnemerId] + || row.afnemerId + || t('softwarecatalog', 'Unknown organisation'), + versionName: this.moduleVersieIndex[row.moduleVersieId] || '', + })) }, }, diff --git a/src/dialogs/SuiteWizard/Step1Details.vue b/src/dialogs/SuiteWizard/Step1Details.vue index e3d1d2cf..d958b4e6 100644 --- a/src/dialogs/SuiteWizard/Step1Details.vue +++ b/src/dialogs/SuiteWizard/Step1Details.vue @@ -20,11 +20,11 @@ @update:modelValue="onField('name', $event)" /> + @update:modelValue="onField('shortDescription', $event)" /> {{ payload.name }}
{{ t('softwarecatalog', 'Short description') }}
-
{{ payload.beschrijvingKort }}
+
{{ payload.shortDescription }}