1
0
Files
breadcrumb-the-shire/docs/howto-globale-suche.md

72 lines
2.0 KiB
Markdown

# Globale Suche erweitern
Letzte Aktualisierung: 2026-03-06
## 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:
- `lib/Support/SearchConfig.php`
- Laufzeit-Orchestrierung: `lib/Service/Search/SearchDataService.php`
- SQL-Ausführung: `lib/Repository/Search/SearchQueryRepository.php`
Provider:
- SQL-Definitionen: `SearchSqlResourceProvider`
- UI-Meta (Icons/URLs): `SearchUiMetaProvider`
- Mapping: `SearchItemMapperProvider`
- Spezialquellen (`docs`, `hotkeys`): `SearchSpecialResourceProvider`
## 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. Aside-Eintrag in `templates/partials/app-main-aside.phtml` ergänzen (`data-search-key`).
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 lib/Support/SearchConfig.php`
2. `php -l lib/Support/Search/*.php`
3. Preview testen (`admin/search/data?q=...`)
4. Vollsuche testen (`/search?search=...`)
5. Permission/Scope mit reduziertem User prüfen