Most German docs were written with `ue`/`ae`/`oe`/`ss` ASCII fallbacks (`fuer`, `aenderung`, `koennen`, `gemaess`) — relic from older toolchain constraints. Replaced 237 occurrences across 38 .md files with proper umlauts and ß so the docs read naturally. Substitutions are constrained to plain prose: fenced code blocks (```...```), inline code spans (`...`), markdown link targets `[..](..)`, and HTML comments are preserved verbatim. Path references like `docs/howto-erste-aenderung.md` keep their original (umlaut-replaced) filenames — only the surrounding prose is normalised. Tool: bin/fix-md-umlauts.py (idempotent — no-op on already-clean files). Re-runnable if ASCII fallbacks creep back in via copy-paste. Doc-link-check + doc-drift-check stay green. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.1 KiB
2.1 KiB
Globale Suche erweitern
Letzte Aktualisierung: 2026-04-01
Ziel
Neue Search-Resource korrekt in Aside-Preview und Vollsuche integrieren.
Architektur
Zwei Endpunkte teilen dieselbe Konfiguration:
- Aside-Preview:
pages/admin/search/data().php - Vollsuche:
pages/search/data().php
Zentrale Fassade:
core/Support/SearchConfig.php- Laufzeit-Orchestrierung:
core/Service/Search/SearchDataService.php - SQL-Ausführung:
core/Repository/Search/SearchQueryRepository.php
Provider:
- SQL-Definitionen:
SearchSqlResourceProvider - UI-Meta (Icons/URLs):
SearchUiMetaProvider - Mapping:
SearchItemMapperProvider - Spezialquellen (
docs,hotkeys):SearchSpecialResourceProvider - Modul-Erweiterungen:
SearchResourceProvidervia Modul-Manifestsearch_resources
Laufzeitpfad
pages/admin/search/data().phpoderpages/search/data().phpSearchDataServicebaut Scope/Permission + Resource-IterationSearchQueryRepositoryführtcountSql/previewSql/resultSqlausSearchConfigmapped auf API/UI-Items
Standardablauf für neue Resource
- Resource in
SearchSqlResourceProvider::resources()ergänzen:key,label,permissioncountSql,previewSql,resultSql
- Bei Tenant-Daten
tenantScopeFilters()ergänzen. - UI ergänzen:
iconForKey()listUrl()
- Mapping ergänzen:
mapPreviewItem()mapResultItem()
- Bei Modul-Resources: Provider-Klasse in
module.phpuntersearch_resourcesregistrieren. - i18n-Labels prüfen.
Wichtige Regeln
- Permission immer serverseitig in der Resource setzen.
- Tenant-Scope nicht nur im UI lösen.
- Preview immer mit
limit ?und ohne sensitive Daten.
Docs-Resource
Die Entwicklerdoku läuft als Spezialresource docs:
- Quelle:
DocsCatalogService::search() - Permission:
docs.view - Ziel:
admin/docs/{slug}#anchor
Check vor Merge
php -l core/Support/SearchConfig.phpphp -l core/Support/Search/*.php- Preview testen (
admin/search/data?q=...) - Vollsuche testen (
/search?search=...) - Permission/Scope mit reduziertem User prüfen