1
0
Files
breadcrumb-the-shire/docs/howto-globale-suche.md
fs 545bcc789b docs: replace ASCII umlaut fallbacks with proper äöüß across all .md
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>
2026-04-29 09:57:22 +02:00

73 lines
2.1 KiB
Markdown

# 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: `SearchResourceProvider` via Modul-Manifest `search_resources`
## Laufzeitpfad
1. `pages/admin/search/data().php` oder `pages/search/data().php`
2. `SearchDataService` baut Scope/Permission + Resource-Iteration
3. `SearchQueryRepository` führt `countSql`/`previewSql`/`resultSql` aus
4. `SearchConfig` mapped auf API/UI-Items
## Standardablauf für neue Resource
1. Resource in `SearchSqlResourceProvider::resources()` ergänzen:
- `key`, `label`, `permission`
- `countSql`, `previewSql`, `resultSql`
2. Bei Tenant-Daten `tenantScopeFilters()` ergänzen.
3. UI ergänzen:
- `iconForKey()`
- `listUrl()`
4. Mapping ergänzen:
- `mapPreviewItem()`
- `mapResultItem()`
5. Bei Modul-Resources: Provider-Klasse in `module.php` unter `search_resources` registrieren.
6. 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
1. `php -l core/Support/SearchConfig.php`
2. `php -l core/Support/Search/*.php`
3. Preview testen (`admin/search/data?q=...`)
4. Vollsuche testen (`/search?search=...`)
5. Permission/Scope mit reduziertem User prüfen