feat(plugins): let a plugin answer place searches from its own index

TREK searches its own place index and OpenStreetMap. Neither carries a rating,
so "the best rated hotel around here" has never been answerable, and an operator
with a better index for their region had no way to reach the search box at all.
The searchProvider hook is that way in: a plugin is handed the query, a limit,
the language and the coordinate the search is biased toward, and answers with
places in the same shape the core search returns, plus a rating.

It sits beside the core search rather than inside it. The plugin runtime already
imports PlacesModule, which imports MapsModule, so asking the providers from the
maps service would close a module cycle — the same reason the other fourteen
contribution controllers stand next to what they contribute to. The client asks
both at once and merges, at the single point every caller already goes through,
so all nine search surfaces get plugin hits without knowing the hook exists.

A plugin index may never hold up the list: the client stops waiting at two and a
half seconds and the host gives a provider two, which is also why the budget is
the shortest of any hook here. With no such plugin installed the route answers
without reaching the runtime at all.

Every hit is normalized host-side and shared by the REST route and the MCP tool,
so a cap that holds for the browser holds for the assistant: coordinates are
range-checked, strings capped, the rating clamped to 0..5, a website must be
http or https, and ids are namespaced so they can never collide with an OSM one.

search_places_via_plugins is the MCP half, because what the user can see the
assistant has to be able to see; search_place now points at it.
This commit is contained in:
Maurice
2026-09-10 19:33:55 +02:00
committed by Maurice
parent a00cc889ed
commit a9907e2f10
51 changed files with 971 additions and 12 deletions
+2
View File
@@ -378,6 +378,7 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:photo-provider': 'توفير الصور لميزة الذكريات',
'admin.plugins.perm.hook:calendar-source': 'توفير الأحداث للتقويم',
'admin.plugins.perm.hook:place-detail-provider': 'المساهمة بتفاصيل إضافية (مراجعات، تقييمات، روابط) لمكان ما',
'admin.plugins.perm.hook:search-provider': 'الإجابة على عمليات البحث عن الأماكن من فهرس خاص به، إلى جانب نتائج TREK',
'admin.plugins.perm.hook:trip-warning-provider': 'إظهار تحذيرات التحقق على الرحلة (تظهر في المخطط)',
'admin.plugins.perm.hook:table-contributor': 'إضافة أعمدة وإجراءات إلى عروض الرحلة (الحجوزات، الأماكن، الأيام)',
'admin.plugins.perm.hook:map-marker-provider': 'إضافة علامات إلى خريطة الرحلة (مثل عرض الحجوزات أو نقاط الاهتمام)',
@@ -529,6 +530,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'يوفّر الصور',
'admin.plugins.cap.calendar': 'يوفّر أحداث التقويم',
'admin.plugins.cap.placeDetails': 'يُثري الأماكن',
'admin.plugins.cap.search': 'يجيب على عمليات البحث',
'admin.plugins.cap.warnings': 'يرصد المشكلات',
'admin.plugins.cap.mapLayers': 'يرسم على الخريطة',
'admin.plugins.cap.routing': 'يوفّر التوجيه',
+3
View File
@@ -361,6 +361,8 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:calendar-source': 'Fornecer eventos para o calendário',
'admin.plugins.perm.hook:place-detail-provider':
'Contribuir com detalhes extras (avaliações, notas, links) para um local',
'admin.plugins.perm.hook:search-provider':
'Responder buscas de lugares a partir de um índice próprio, ao lado dos resultados do TREK',
'admin.plugins.perm.hook:trip-warning-provider': 'Emitir avisos de validação em uma viagem (exibidos no planejador)',
'admin.plugins.perm.hook:table-contributor':
'Adicionar colunas e ações às visualizações da viagem (reservas, locais, dias)',
@@ -518,6 +520,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Fornece fotos',
'admin.plugins.cap.calendar': 'Fornece eventos de calendário',
'admin.plugins.cap.placeDetails': 'Enriquece locais',
'admin.plugins.cap.search': 'Responde buscas',
'admin.plugins.cap.warnings': 'Sinaliza problemas',
'admin.plugins.cap.mapLayers': 'Desenha no mapa',
'admin.plugins.cap.routing': 'Oferece roteamento',
+3
View File
@@ -522,6 +522,8 @@ const admin: TranslationStrings = {
'admin.plugins.requiresTrek': 'Requereix TREK {version}+',
'admin.plugins.reviewedOn': 'Verificat el {date}',
'admin.plugins.perm.hook:map-layer-provider': 'Dibuixar rutes, corredors i zones al mapa del viatge',
'admin.plugins.perm.hook:search-provider':
"Respondre cerques de llocs des d'un índex propi, al costat dels resultats de TREK",
'admin.plugins.perm.hook:route-provider':
'Oferir perfils de ruta amb què el planificador pot calcular els dies (p. ex. rutes per a cotxe elèctric amb parades de recàrrega)',
'admin.plugins.perm.hook:day-schedule-provider':
@@ -654,6 +656,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Proporciona fotos',
'admin.plugins.cap.calendar': 'Proporciona esdeveniments de calendari',
'admin.plugins.cap.placeDetails': 'Enriqueix els llocs',
'admin.plugins.cap.search': 'Respon cerques',
'admin.plugins.cap.warnings': 'Marca problemes',
'admin.plugins.cap.mapLayers': 'Dibuixa al mapa',
'admin.plugins.cap.routing': 'Calcula rutes',
+2
View File
@@ -364,6 +364,7 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:photo-provider': 'Poskytovat fotky do sekce Fotky',
'admin.plugins.perm.hook:calendar-source': 'Poskytovat události do kalendáře',
'admin.plugins.perm.hook:place-detail-provider': 'Přidávat další podrobnosti (recenze, hodnocení, odkazy) k místu',
'admin.plugins.perm.hook:search-provider': 'Odpovídat na vyhledávání míst z vlastního indexu, vedle výsledků TREK',
'admin.plugins.perm.hook:trip-warning-provider': 'Vyvolávat ověřovací upozornění u cesty (zobrazená v plánovači)',
'admin.plugins.perm.hook:table-contributor': 'Přidávat sloupce a akce do zobrazení cesty (rezervace, místa, dny)',
'admin.plugins.perm.hook:map-marker-provider': 'Přidávat značky na mapu cesty (např. zobrazit rezervace nebo POI)',
@@ -516,6 +517,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Poskytuje fotky',
'admin.plugins.cap.calendar': 'Poskytuje události kalendáře',
'admin.plugins.cap.placeDetails': 'Obohacuje místa',
'admin.plugins.cap.search': 'Odpovídá na vyhledávání',
'admin.plugins.cap.warnings': 'Označuje problémy',
'admin.plugins.cap.mapLayers': 'Kreslí na mapě',
'admin.plugins.cap.routing': 'Nabízí trasování',
+3
View File
@@ -367,6 +367,8 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:calendar-source': 'Termine für den Kalender bereitstellen',
'admin.plugins.perm.hook:place-detail-provider':
'Zusatzdetails (Bewertungen, Ratings, Links) zu einem Ort beisteuern',
'admin.plugins.perm.hook:search-provider':
'Ortssuchen aus einem eigenen Index beantworten, neben TREKs eigenen Ergebnissen',
'admin.plugins.perm.hook:trip-warning-provider':
'Validierungswarnungen zu einer Reise ausgeben (im Planer angezeigt)',
'admin.plugins.perm.hook:table-contributor':
@@ -525,6 +527,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Liefert Fotos',
'admin.plugins.cap.calendar': 'Liefert Kalender-Events',
'admin.plugins.cap.placeDetails': 'Reichert Orte an',
'admin.plugins.cap.search': 'Beantwortet Suchen',
'admin.plugins.cap.warnings': 'Meldet Probleme',
'admin.plugins.cap.mapLayers': 'Zeichnet auf der Karte',
'admin.plugins.cap.routing': 'Bietet Routing an',
+2
View File
@@ -410,6 +410,7 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:photo-provider': 'Provide photos to Memories',
'admin.plugins.perm.hook:calendar-source': 'Provide events to the calendar',
'admin.plugins.perm.hook:place-detail-provider': 'Contribute extra details (reviews, ratings, links) to a place',
'admin.plugins.perm.hook:search-provider': "Answer place searches from its own index, beside TREK's own results",
'admin.plugins.perm.hook:trip-warning-provider': 'Raise validation warnings on a trip (shown in the planner)',
'admin.plugins.perm.hook:table-contributor': 'Add columns and actions to trip views (reservations, places, days)',
'admin.plugins.perm.hook:map-marker-provider': 'Add markers to the trip map (e.g. show bookings or POIs)',
@@ -563,6 +564,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Provides photos',
'admin.plugins.cap.calendar': 'Provides calendar events',
'admin.plugins.cap.placeDetails': 'Enriches places',
'admin.plugins.cap.search': 'Answers searches',
'admin.plugins.cap.warnings': 'Flags issues',
'admin.plugins.cap.mapLayers': 'Draws on the map',
'admin.plugins.cap.routing': 'Offers routing',
+3
View File
@@ -370,6 +370,8 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:calendar-source': 'Proporcionar eventos al calendario',
'admin.plugins.perm.hook:place-detail-provider':
'Aportar detalles adicionales (reseñas, valoraciones, enlaces) a un lugar',
'admin.plugins.perm.hook:search-provider':
'Responder a búsquedas de lugares desde su propio índice, junto a los resultados de TREK',
'admin.plugins.perm.hook:trip-warning-provider':
'Generar advertencias de validación en un viaje (mostradas en el planificador)',
'admin.plugins.perm.hook:table-contributor':
@@ -527,6 +529,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Proporciona fotos',
'admin.plugins.cap.calendar': 'Proporciona eventos de calendario',
'admin.plugins.cap.placeDetails': 'Enriquece lugares',
'admin.plugins.cap.search': 'Responde búsquedas',
'admin.plugins.cap.warnings': 'Marca problemas',
'admin.plugins.cap.mapLayers': 'Dibuja en el mapa',
'admin.plugins.cap.routing': 'Ofrece rutas',
+3
View File
@@ -370,6 +370,8 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:photo-provider': 'Fournir des photos à Photos',
'admin.plugins.perm.hook:calendar-source': 'Fournir des événements au calendrier',
'admin.plugins.perm.hook:place-detail-provider': 'Ajouter des détails supplémentaires (avis, notes, liens) à un lieu',
'admin.plugins.perm.hook:search-provider':
'Répondre aux recherches de lieux depuis son propre index, à côté des résultats de TREK',
'admin.plugins.perm.hook:trip-warning-provider':
'Émettre des avertissements de validation sur un voyage (affichés dans le planificateur)',
'admin.plugins.perm.hook:table-contributor':
@@ -530,6 +532,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Fournit des photos',
'admin.plugins.cap.calendar': 'Fournit des événements de calendrier',
'admin.plugins.cap.placeDetails': 'Enrichit les lieux',
'admin.plugins.cap.search': 'Répond aux recherches',
'admin.plugins.cap.warnings': 'Signale les problèmes',
'admin.plugins.cap.mapLayers': 'Dessine sur la carte',
'admin.plugins.cap.routing': 'Propose des itinéraires',
+3
View File
@@ -419,6 +419,8 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:calendar-source': 'Παροχή συμβάντων στο ημερολόγιο',
'admin.plugins.perm.hook:place-detail-provider':
'Συνεισφορά επιπλέον λεπτομερειών (κριτικές, βαθμολογίες, σύνδεσμοι) σε ένα μέρος',
'admin.plugins.perm.hook:search-provider':
'Απάντηση σε αναζητήσεις τοποθεσιών από δικό του ευρετήριο, δίπλα στα αποτελέσματα του TREK',
'admin.plugins.perm.hook:trip-warning-provider':
'Εμφάνιση προειδοποιήσεων επικύρωσης σε ένα ταξίδι (εμφανίζονται στον σχεδιαστή)',
'admin.plugins.perm.hook:table-contributor':
@@ -578,6 +580,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Παρέχει φωτογραφίες',
'admin.plugins.cap.calendar': 'Παρέχει συμβάντα ημερολογίου',
'admin.plugins.cap.placeDetails': 'Εμπλουτίζει μέρη',
'admin.plugins.cap.search': 'Απαντά σε αναζητήσεις',
'admin.plugins.cap.warnings': 'Επισημαίνει ζητήματα',
'admin.plugins.cap.mapLayers': 'Σχεδιάζει στον χάρτη',
'admin.plugins.cap.routing': 'Παρέχει δρομολόγηση',
+3
View File
@@ -372,6 +372,8 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:calendar-source': 'Események biztosítása a naptárhoz',
'admin.plugins.perm.hook:place-detail-provider':
'További részletek (értékelések, minősítések, hivatkozások) hozzáadása egy helyhez',
'admin.plugins.perm.hook:search-provider':
'Helykeresések megválaszolása saját indexből, a TREK saját találatai mellett',
'admin.plugins.perm.hook:trip-warning-provider':
'Ellenőrzési figyelmeztetések megjelenítése egy utazáson (a tervezőben látható)',
'admin.plugins.perm.hook:table-contributor':
@@ -530,6 +532,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Fotókat biztosít',
'admin.plugins.cap.calendar': 'Naptáreseményeket biztosít',
'admin.plugins.cap.placeDetails': 'Helyeket gazdagít',
'admin.plugins.cap.search': 'Válaszol a keresésekre',
'admin.plugins.cap.warnings': 'Problémákat jelez',
'admin.plugins.cap.mapLayers': 'Rajzol a térképre',
'admin.plugins.cap.routing': 'Útvonaltervezést biztosít',
+2
View File
@@ -416,6 +416,7 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:calendar-source': 'Menyediakan acara untuk kalender',
'admin.plugins.perm.hook:place-detail-provider':
'Menyumbangkan detail tambahan (ulasan, peringkat, tautan) untuk suatu tempat',
'admin.plugins.perm.hook:search-provider': 'Menjawab pencarian tempat dari indeks sendiri, di samping hasil TREK',
'admin.plugins.perm.hook:trip-warning-provider':
'Munculkan peringatan validasi pada perjalanan (ditampilkan di perencana)',
'admin.plugins.perm.hook:table-contributor':
@@ -572,6 +573,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Menyediakan foto',
'admin.plugins.cap.calendar': 'Menyediakan acara kalender',
'admin.plugins.cap.placeDetails': 'Memperkaya tempat',
'admin.plugins.cap.search': 'Menjawab pencarian',
'admin.plugins.cap.warnings': 'Tandai masalah',
'admin.plugins.cap.mapLayers': 'Menggambar di peta',
'admin.plugins.cap.routing': 'Menyediakan routing',
+3
View File
@@ -368,6 +368,8 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:calendar-source': 'Fornire eventi al calendario',
'admin.plugins.perm.hook:place-detail-provider':
'Fornire dettagli aggiuntivi (recensioni, valutazioni, link) a un luogo',
'admin.plugins.perm.hook:search-provider':
'Rispondere alle ricerche di luoghi dal proprio indice, accanto ai risultati di TREK',
'admin.plugins.perm.hook:trip-warning-provider':
'Segnala avvisi di validazione su un viaggio (mostrati nel pianificatore)',
'admin.plugins.perm.hook:table-contributor':
@@ -525,6 +527,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Fornisce foto',
'admin.plugins.cap.calendar': 'Fornisce eventi calendario',
'admin.plugins.cap.placeDetails': 'Arricchisce luoghi',
'admin.plugins.cap.search': 'Risponde alle ricerche',
'admin.plugins.cap.warnings': 'Segnala problemi',
'admin.plugins.cap.mapLayers': 'Disegna sulla mappa',
'admin.plugins.cap.routing': 'Offre routing',
+2
View File
@@ -387,6 +387,7 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:photo-provider': '「写真」機能への写真の提供',
'admin.plugins.perm.hook:calendar-source': 'カレンダーへの予定の提供',
'admin.plugins.perm.hook:place-detail-provider': '場所に追加の詳細情報(レビュー、評価、リンク)を提供',
'admin.plugins.perm.hook:search-provider': '独自のインデックスから場所の検索に回答(TREK 自身の結果と並べて表示)',
'admin.plugins.perm.hook:trip-warning-provider': '旅程に検証警告を表示(プランナー内に表示)',
'admin.plugins.perm.hook:table-contributor': '旅行のビュー(予約、場所、日程)に列とアクションを追加',
'admin.plugins.perm.hook:map-marker-provider': '旅行の地図にマーカーを追加(例: 予約や POI を表示)',
@@ -537,6 +538,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': '写真を提供',
'admin.plugins.cap.calendar': 'カレンダー予定を提供',
'admin.plugins.cap.placeDetails': '場所を充実',
'admin.plugins.cap.search': '検索に回答',
'admin.plugins.cap.warnings': '問題を検出',
'admin.plugins.cap.mapLayers': '地図に描画',
'admin.plugins.cap.routing': 'ルーティングを提供',
+2
View File
@@ -389,6 +389,7 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:photo-provider': '사진 기능에 사진 제공',
'admin.plugins.perm.hook:calendar-source': '캘린더에 일정 제공',
'admin.plugins.perm.hook:place-detail-provider': '장소에 추가 정보(리뷰, 평점, 링크)를 제공',
'admin.plugins.perm.hook:search-provider': '자체 색인에서 장소 검색에 응답 (TREK 자체 결과와 함께 표시)',
'admin.plugins.perm.hook:trip-warning-provider': '여행에 검증 경고를 표시 (플래너에 표시됨)',
'admin.plugins.perm.hook:table-contributor': '여행 보기(예약, 장소, 일자)에 열과 작업 추가',
'admin.plugins.perm.hook:map-marker-provider': '여행 지도에 마커 추가(예: 예약 또는 POI 표시)',
@@ -537,6 +538,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': '사진 제공',
'admin.plugins.cap.calendar': '캘린더 일정 제공',
'admin.plugins.cap.placeDetails': '장소 정보 강화',
'admin.plugins.cap.search': '검색에 응답',
'admin.plugins.cap.warnings': '문제 표시',
'admin.plugins.cap.mapLayers': '지도에 그리기',
'admin.plugins.cap.routing': '라우팅 제공',
+3
View File
@@ -368,6 +368,8 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:calendar-source': 'Evenementen aanleveren voor de kalender',
'admin.plugins.perm.hook:place-detail-provider':
'Extra details (reviews, beoordelingen, links) aan een plek toevoegen',
'admin.plugins.perm.hook:search-provider':
'Zoekopdrachten naar locaties beantwoorden vanuit een eigen index, naast de resultaten van TREK',
'admin.plugins.perm.hook:trip-warning-provider':
'Validatiewaarschuwingen tonen bij een reis (zichtbaar in de planner)',
'admin.plugins.perm.hook:table-contributor':
@@ -524,6 +526,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': "Levert foto's",
'admin.plugins.cap.calendar': 'Levert kalenderevenementen',
'admin.plugins.cap.placeDetails': 'Verrijkt plekken',
'admin.plugins.cap.search': 'Beantwoordt zoekopdrachten',
'admin.plugins.cap.warnings': 'Signaleert problemen',
'admin.plugins.cap.mapLayers': 'Tekent op de kaart',
'admin.plugins.cap.routing': 'Biedt routering aan',
+2
View File
@@ -364,6 +364,7 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:calendar-source': 'Dostarczanie wydarzeń do kalendarza',
'admin.plugins.perm.hook:place-detail-provider':
'Dodawanie dodatkowych szczegółów (recenzji, ocen, linków) do miejsca',
'admin.plugins.perm.hook:search-provider': 'Odpowiadać na wyszukiwania miejsc z własnego indeksu, obok wyników TREK',
'admin.plugins.perm.hook:trip-warning-provider':
'Zgłaszanie ostrzeżeń walidacyjnych dla podróży (widocznych w planerze)',
'admin.plugins.perm.hook:table-contributor': 'Dodawanie kolumn i akcji do widoków podróży (rezerwacje, miejsca, dni)',
@@ -522,6 +523,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Dostarcza zdjęcia',
'admin.plugins.cap.calendar': 'Dostarcza wydarzenia kalendarza',
'admin.plugins.cap.placeDetails': 'Wzbogaca miejsca',
'admin.plugins.cap.search': 'Odpowiada na wyszukiwania',
'admin.plugins.cap.warnings': 'Zgłasza problemy',
'admin.plugins.cap.mapLayers': 'Rysuje na mapie',
'admin.plugins.cap.routing': 'Oferuje trasowanie',
+3
View File
@@ -368,6 +368,8 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:photo-provider': 'Предоставлять фотографии для «Воспоминаний»',
'admin.plugins.perm.hook:calendar-source': 'Предоставлять события для календаря',
'admin.plugins.perm.hook:place-detail-provider': 'Добавлять дополнительные сведения (отзывы, оценки, ссылки) к месту',
'admin.plugins.perm.hook:search-provider':
'Отвечать на поиск мест из собственного индекса, рядом с результатами TREK',
'admin.plugins.perm.hook:trip-warning-provider':
'Выдавать предупреждения проверки для поездки (отображаются в планировщике)',
'admin.plugins.perm.hook:table-contributor':
@@ -526,6 +528,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Предоставляет фото',
'admin.plugins.cap.calendar': 'Предоставляет события календаря',
'admin.plugins.cap.placeDetails': 'Обогащает места',
'admin.plugins.cap.search': 'Отвечает на поиск',
'admin.plugins.cap.warnings': 'Отмечает проблемы',
'admin.plugins.cap.mapLayers': 'Рисует на карте',
'admin.plugins.cap.routing': 'Предоставляет маршрутизацию',
+3
View File
@@ -427,6 +427,8 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:calendar-source': 'Tillhandahålla händelser till kalendern',
'admin.plugins.perm.hook:place-detail-provider':
'Bidra med extra detaljer (recensioner, betyg, länkar) till en plats',
'admin.plugins.perm.hook:search-provider':
'Besvara platssökningar från ett eget index, vid sidan av TREK:s egna resultat',
'admin.plugins.perm.hook:trip-warning-provider': 'Visa valideringsvarningar på en resa (visas i planeraren)',
'admin.plugins.perm.hook:table-contributor':
'Lägga till kolumner och åtgärder i rese­vyer (bokningar, platser, dagar)',
@@ -583,6 +585,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Tillhandahåller foton',
'admin.plugins.cap.calendar': 'Tillhandahåller kalenderhändelser',
'admin.plugins.cap.placeDetails': 'Berikar platser',
'admin.plugins.cap.search': 'Besvarar sökningar',
'admin.plugins.cap.warnings': 'Flaggar problem',
'admin.plugins.cap.mapLayers': 'Ritar på kartan',
'admin.plugins.cap.routing': 'Erbjuder ruttplanering',
+3
View File
@@ -413,6 +413,8 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:calendar-source': 'Takvime etkinlik sağlar',
'admin.plugins.perm.hook:place-detail-provider':
'Bir yere ek ayrıntılar (yorumlar, puanlar, bağlantılar) katkıda bulunur',
'admin.plugins.perm.hook:search-provider':
"Yer aramalarını kendi dizininden yanıtlama, TREK'in kendi sonuçlarının yanında",
'admin.plugins.perm.hook:trip-warning-provider': 'Bir gezide doğrulama uyarıları oluşturur (planlayıcıda gösterilir)',
'admin.plugins.perm.hook:table-contributor':
'Seyahat görünümlerine sütunlar ve eylemler ekler (rezervasyonlar, yerler, günler)',
@@ -569,6 +571,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Fotoğraf sağlar',
'admin.plugins.cap.calendar': 'Takvim etkinlikleri sağlar',
'admin.plugins.cap.placeDetails': 'Yerleri zenginleştirir',
'admin.plugins.cap.search': 'Aramaları yanıtlar',
'admin.plugins.cap.warnings': 'Sorunları işaretler',
'admin.plugins.cap.mapLayers': 'Haritada çizim yapar',
'admin.plugins.cap.routing': 'Rota sunar',
+3
View File
@@ -366,6 +366,8 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:photo-provider': 'Надавати фотографії для Спогадів',
'admin.plugins.perm.hook:calendar-source': 'Надавати події для календаря',
'admin.plugins.perm.hook:place-detail-provider': 'Додавати додаткові деталі (відгуки, оцінки, посилання) до місця',
'admin.plugins.perm.hook:search-provider':
'Відповідати на пошук місць із власного індексу, поряд із результатами TREK',
'admin.plugins.perm.hook:trip-warning-provider':
'Створювати попередження перевірки для подорожі (показуються в планувальнику)',
'admin.plugins.perm.hook:table-contributor': 'Додавати стовпці та дії до подань подорожі (бронювання, місця, дні)',
@@ -523,6 +525,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Надає фотографії',
'admin.plugins.cap.calendar': 'Надає події календаря',
'admin.plugins.cap.placeDetails': 'Збагачує місця',
'admin.plugins.cap.search': 'Відповідає на пошук',
'admin.plugins.cap.warnings': 'Позначає проблеми',
'admin.plugins.cap.mapLayers': 'Малює на карті',
'admin.plugins.cap.routing': 'Пропонує маршрутизацію',
+2
View File
@@ -368,6 +368,7 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:calendar-source': 'Cung cấp sự kiện cho lịch',
'admin.plugins.perm.hook:place-detail-provider':
'Đóng góp thêm thông tin chi tiết (đánh giá, xếp hạng, liên kết) cho một địa điểm',
'admin.plugins.perm.hook:search-provider': 'Trả lời tìm kiếm địa điểm từ chỉ mục riêng, bên cạnh kết quả của TREK',
'admin.plugins.perm.hook:trip-warning-provider':
'Đưa ra cảnh báo xác thực trên một chuyến đi (hiển thị trong trình lập kế hoạch)',
'admin.plugins.perm.hook:table-contributor':
@@ -525,6 +526,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': 'Cung cấp ảnh',
'admin.plugins.cap.calendar': 'Cung cấp sự kiện lịch',
'admin.plugins.cap.placeDetails': 'Làm phong phú địa điểm',
'admin.plugins.cap.search': 'Trả lời tìm kiếm',
'admin.plugins.cap.warnings': 'Gắn cờ vấn đề',
'admin.plugins.cap.mapLayers': 'Vẽ trên bản đồ',
'admin.plugins.cap.routing': 'Cung cấp định tuyến',
+2
View File
@@ -376,6 +376,7 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:photo-provider': '為「回憶」提供照片',
'admin.plugins.perm.hook:calendar-source': '為行事曆提供事件',
'admin.plugins.perm.hook:place-detail-provider': '為地點提供額外資訊(評論、評分、連結)',
'admin.plugins.perm.hook:search-provider': '從自有索引回答地點搜尋,與 TREK 自身的結果並列顯示',
'admin.plugins.perm.hook:trip-warning-provider': '對行程發出驗證警告(顯示於規劃工具中)',
'admin.plugins.perm.hook:table-contributor': '向行程檢視(預訂、地點、日期)新增欄位與操作',
'admin.plugins.perm.hook:map-marker-provider': '向行程地圖新增標記(例如顯示預訂或興趣點)',
@@ -519,6 +520,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': '提供照片',
'admin.plugins.cap.calendar': '提供行事曆事件',
'admin.plugins.cap.placeDetails': '豐富地點',
'admin.plugins.cap.search': '回答搜尋',
'admin.plugins.cap.warnings': '標記問題',
'admin.plugins.cap.mapLayers': '在地圖上繪製',
'admin.plugins.cap.routing': '提供路線規劃',
+2
View File
@@ -335,6 +335,7 @@ const admin: TranslationStrings = {
'admin.plugins.perm.hook:photo-provider': '为回忆提供照片',
'admin.plugins.perm.hook:calendar-source': '为日历提供事件',
'admin.plugins.perm.hook:place-detail-provider': '为地点补充额外信息(评论、评分、链接)',
'admin.plugins.perm.hook:search-provider': '从自有索引回答地点搜索,与 TREK 自身的结果并列显示',
'admin.plugins.perm.hook:trip-warning-provider': '对行程发出校验警告(显示在规划器中)',
'admin.plugins.perm.hook:table-contributor': '向行程视图(预订、地点、日期)添加列和操作',
'admin.plugins.perm.hook:map-marker-provider': '向旅行地图添加标记(例如显示预订或兴趣点)',
@@ -479,6 +480,7 @@ const admin: TranslationStrings = {
'admin.plugins.cap.photos': '提供照片',
'admin.plugins.cap.calendar': '提供日历事件',
'admin.plugins.cap.placeDetails': '丰富地点信息',
'admin.plugins.cap.search': '回答搜索',
'admin.plugins.cap.warnings': '标记问题',
'admin.plugins.cap.mapLayers': '在地图上绘制',
'admin.plugins.cap.routing': '提供路线规划',
+2
View File
@@ -47,6 +47,7 @@ export const PLUGIN_PERMISSIONS: readonly string[] = [
'hook:photo-provider',
'hook:calendar-source',
'hook:place-detail-provider',
'hook:search-provider',
'hook:trip-warning-provider',
'hook:table-contributor',
'hook:map-marker-provider',
@@ -74,6 +75,7 @@ export const PLUGIN_HOOK_PERMISSION: Readonly<Record<string, string>> = {
photoProvider: 'hook:photo-provider',
calendarSource: 'hook:calendar-source',
placeDetailProvider: 'hook:place-detail-provider',
searchProvider: 'hook:search-provider',
warningProvider: 'hook:trip-warning-provider',
tableContributor: 'hook:table-contributor',
mapMarkerProvider: 'hook:map-marker-provider',