From 807c78cc64148a18552a707aa17e0da4469035ac Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Tue, 29 Sep 2026 01:41:34 +0000 Subject: [PATCH] Every Experimental map carries its own hosted ?, where its controls already are Map controls: prayer-walk-planner (under fullscreen), gospel-internet (the map and the language tree, the board's default view), country-posters (the country map, its entry profile) and all-people-groups get the library HelpButton with hosted. Own bars, where there is no control column: the Wall (after the Bless/Social toggle), the PPLR hub (the end of its view bar) and the vision card (its top corner, at the end of the reading direction so Arabic mirrors it) use useHostedHelp. The vision card's label is the library's own "About this map" in each of the eleven locales, copied into vision.json rather than translated again. UPG Neighbor is left as it is: its bar already has an About button that opens the full explainer. Each "?" stays hidden until a host marks its pane, so nothing changes until the app answers. --- library/i18n/locales/ar/vision.json | 3 ++- library/i18n/locales/de/vision.json | 3 ++- library/i18n/locales/en/vision.json | 3 ++- library/i18n/locales/es/vision.json | 3 ++- library/i18n/locales/fr/vision.json | 3 ++- library/i18n/locales/hi/vision.json | 3 ++- library/i18n/locales/it/vision.json | 3 ++- library/i18n/locales/pt/vision.json | 3 ++- library/i18n/locales/ro/vision.json | 3 ++- library/i18n/locales/ru/vision.json | 3 ++- library/i18n/locales/zh/vision.json | 3 ++- .../all-people-groups/all-people-groups.vue | 2 ++ plugin-designs/country-posters/countries-map.vue | 2 ++ plugin-designs/doxa-vision-card/doxa-vision-card.vue | 12 ++++++++++++ .../gospel-internet/src/components/GiMap.vue | 2 ++ .../gospel-internet/src/components/GiTree.vue | 2 ++ plugin-designs/pplr-data-maps/pplr-data-maps.vue | 10 ++++++++++ .../prayer-walk-planner/prayer-walk-planner.vue | 6 ++++-- .../src/components/PeopleGroupsWall.vue | 8 ++++++++ plugin-designs/wall-of-people-groups/src/wall.css | 2 ++ 20 files changed, 66 insertions(+), 13 deletions(-) diff --git a/library/i18n/locales/ar/vision.json b/library/i18n/locales/ar/vision.json index b4fdf9308..6704b7993 100644 --- a/library/i18n/locales/ar/vision.json +++ b/library/i18n/locales/ar/vision.json @@ -17,5 +17,6 @@ "ruleAll": "كل صف في بيانات IMB لمجموعات الشعوب: مجموعة شعب واحدة في بلد واحد.", "ruleUnreached": "أولوية الضياع لدى IMB من 0 إلى 2: أقل من 2% إنجيليون.", "ruleFrontier": "أولوية الضياع لدى IMB رقم 0: أقل من 0.1% إنجيليون. جزء من غير المُبشَّرة.", - "ruleDoxa": "كل مجموعة في قائمة صلاة DOXA، مطابَقة مع بيانات IMB حسب الشعب والبلد. ليست كلها حدودية." + "ruleDoxa": "كل مجموعة في قائمة صلاة DOXA، مطابَقة مع بيانات IMB حسب الشعب والبلد. ليست كلها حدودية.", + "about": "حول هذه الخريطة" } diff --git a/library/i18n/locales/de/vision.json b/library/i18n/locales/de/vision.json index 4d7b7cb57..c8d918468 100644 --- a/library/i18n/locales/de/vision.json +++ b/library/i18n/locales/de/vision.json @@ -17,5 +17,6 @@ "ruleAll": "Jede Zeile der IMB-Volksgruppendaten: eine Volksgruppe in einem Land.", "ruleUnreached": "IMB-Lostness-Priorität 0 bis 2: weniger als 2 % Evangelikale.", "ruleFrontier": "IMB-Lostness-Priorität 0: weniger als 0,1 % Evangelikale. Eine Teilmenge der Unerreichten.", - "ruleDoxa": "Jede Gruppe auf der DOXA-Gebetsliste, den IMB-Daten nach Volk und Land zugeordnet. Nicht alle sind Frontier." + "ruleDoxa": "Jede Gruppe auf der DOXA-Gebetsliste, den IMB-Daten nach Volk und Land zugeordnet. Nicht alle sind Frontier.", + "about": "Über diese Karte" } diff --git a/library/i18n/locales/en/vision.json b/library/i18n/locales/en/vision.json index be10ef8ef..f2f4af718 100644 --- a/library/i18n/locales/en/vision.json +++ b/library/i18n/locales/en/vision.json @@ -17,5 +17,6 @@ "ruleAll": "Every row of the IMB people-group data: one people group in one country.", "ruleUnreached": "IMB lostness priority 0 to 2: less than 2% evangelical.", "ruleFrontier": "IMB lostness priority 0: less than 0.1% evangelical. A subset of the unreached.", - "ruleDoxa": "Every group on the DOXA prayer list, matched to the IMB data by people and country. Not all are frontier." + "ruleDoxa": "Every group on the DOXA prayer list, matched to the IMB data by people and country. Not all are frontier.", + "about": "About this map" } diff --git a/library/i18n/locales/es/vision.json b/library/i18n/locales/es/vision.json index 9bd5e0ac0..abe5b208d 100644 --- a/library/i18n/locales/es/vision.json +++ b/library/i18n/locales/es/vision.json @@ -17,5 +17,6 @@ "ruleAll": "Cada fila de los datos de grupos étnicos del IMB: un grupo étnico en un país.", "ruleUnreached": "Prioridad de perdición del IMB de 0 a 2: menos del 2 % evangélicos.", "ruleFrontier": "Prioridad de perdición del IMB 0: menos del 0,1 % evangélicos. Un subconjunto de los no alcanzados.", - "ruleDoxa": "Cada grupo de la lista de oración de DOXA, vinculado a los datos del IMB por pueblo y país. No todos son de frontera." + "ruleDoxa": "Cada grupo de la lista de oración de DOXA, vinculado a los datos del IMB por pueblo y país. No todos son de frontera.", + "about": "Acerca de este mapa" } diff --git a/library/i18n/locales/fr/vision.json b/library/i18n/locales/fr/vision.json index 78906723b..339d9a3de 100644 --- a/library/i18n/locales/fr/vision.json +++ b/library/i18n/locales/fr/vision.json @@ -17,5 +17,6 @@ "ruleAll": "Chaque ligne des données IMB : un groupe ethnique dans un pays.", "ruleUnreached": "Priorité de perdition IMB 0 à 2 : moins de 2 % d’évangéliques.", "ruleFrontier": "Priorité de perdition IMB 0 : moins de 0,1 % d’évangéliques. Un sous-ensemble des non-atteints.", - "ruleDoxa": "Chaque groupe de la liste de prière DOXA, rapproché des données IMB par peuple et pays. Tous ne sont pas de frontière." + "ruleDoxa": "Chaque groupe de la liste de prière DOXA, rapproché des données IMB par peuple et pays. Tous ne sont pas de frontière.", + "about": "À propos de cette carte" } diff --git a/library/i18n/locales/hi/vision.json b/library/i18n/locales/hi/vision.json index fd1673dea..3cb4210bc 100644 --- a/library/i18n/locales/hi/vision.json +++ b/library/i18n/locales/hi/vision.json @@ -17,5 +17,6 @@ "ruleAll": "IMB जनसमूह आँकड़ों की हर पंक्ति: एक देश में एक जनसमूह।", "ruleUnreached": "IMB लॉस्टनेस प्राथमिकता 0 से 2: 2% से कम इवेंजेलिकल।", "ruleFrontier": "IMB लॉस्टनेस प्राथमिकता 0: 0.1% से कम इवेंजेलिकल। अप्रचारितों का एक भाग।", - "ruleDoxa": "DOXA प्रार्थना सूची का हर समूह, जनसमूह और देश के आधार पर IMB आँकड़ों से मिलाया गया। सभी सीमांत नहीं हैं।" + "ruleDoxa": "DOXA प्रार्थना सूची का हर समूह, जनसमूह और देश के आधार पर IMB आँकड़ों से मिलाया गया। सभी सीमांत नहीं हैं।", + "about": "इस मानचित्र के बारे में" } diff --git a/library/i18n/locales/it/vision.json b/library/i18n/locales/it/vision.json index 15d1b4218..10c1f9466 100644 --- a/library/i18n/locales/it/vision.json +++ b/library/i18n/locales/it/vision.json @@ -17,5 +17,6 @@ "ruleAll": "Ogni riga dei dati IMB sui gruppi etnici: un gruppo etnico in un paese.", "ruleUnreached": "Priorità di perdizione IMB da 0 a 2: meno del 2% evangelici.", "ruleFrontier": "Priorità di perdizione IMB 0: meno dello 0,1% evangelici. Un sottoinsieme dei non raggiunti.", - "ruleDoxa": "Ogni gruppo dell’elenco di preghiera DOXA, abbinato ai dati IMB per popolo e paese. Non tutti sono di frontiera." + "ruleDoxa": "Ogni gruppo dell’elenco di preghiera DOXA, abbinato ai dati IMB per popolo e paese. Non tutti sono di frontiera.", + "about": "Informazioni su questa mappa" } diff --git a/library/i18n/locales/pt/vision.json b/library/i18n/locales/pt/vision.json index 2e77f751f..1310e7f8a 100644 --- a/library/i18n/locales/pt/vision.json +++ b/library/i18n/locales/pt/vision.json @@ -17,5 +17,6 @@ "ruleAll": "Cada linha dos dados de grupos étnicos do IMB: um grupo étnico em um país.", "ruleUnreached": "Prioridade de perdição do IMB de 0 a 2: menos de 2% evangélicos.", "ruleFrontier": "Prioridade de perdição do IMB 0: menos de 0,1% evangélicos. Um subconjunto dos não alcançados.", - "ruleDoxa": "Cada grupo da lista de oração da DOXA, associado aos dados do IMB por povo e país. Nem todos são de fronteira." + "ruleDoxa": "Cada grupo da lista de oração da DOXA, associado aos dados do IMB por povo e país. Nem todos são de fronteira.", + "about": "Sobre este mapa" } diff --git a/library/i18n/locales/ro/vision.json b/library/i18n/locales/ro/vision.json index 32f943a32..2bc83547e 100644 --- a/library/i18n/locales/ro/vision.json +++ b/library/i18n/locales/ro/vision.json @@ -17,5 +17,6 @@ "ruleAll": "Fiecare rând din datele IMB despre grupuri etnice: un grup etnic într-o țară.", "ruleUnreached": "Prioritatea de pierzare IMB 0–2: sub 2% evanghelici.", "ruleFrontier": "Prioritatea de pierzare IMB 0: sub 0,1% evanghelici. O submulțime a celor neatinse.", - "ruleDoxa": "Fiecare grup de pe lista de rugăciune DOXA, potrivit cu datele IMB după popor și țară. Nu toate sunt de frontieră." + "ruleDoxa": "Fiecare grup de pe lista de rugăciune DOXA, potrivit cu datele IMB după popor și țară. Nu toate sunt de frontieră.", + "about": "Despre această hartă" } diff --git a/library/i18n/locales/ru/vision.json b/library/i18n/locales/ru/vision.json index 981cb75cc..196589220 100644 --- a/library/i18n/locales/ru/vision.json +++ b/library/i18n/locales/ru/vision.json @@ -17,5 +17,6 @@ "ruleAll": "Каждая строка данных IMB о народах: один народ в одной стране.", "ruleUnreached": "Приоритет IMB 0–2: менее 2% евангельских христиан.", "ruleFrontier": "Приоритет IMB 0: менее 0,1% евангельских христиан. Часть недостигнутых.", - "ruleDoxa": "Каждая группа из молитвенного списка DOXA, сопоставленная с данными IMB по народу и стране. Не все из них рубежные." + "ruleDoxa": "Каждая группа из молитвенного списка DOXA, сопоставленная с данными IMB по народу и стране. Не все из них рубежные.", + "about": "Об этой карте" } diff --git a/library/i18n/locales/zh/vision.json b/library/i18n/locales/zh/vision.json index 8b5139466..a665be998 100644 --- a/library/i18n/locales/zh/vision.json +++ b/library/i18n/locales/zh/vision.json @@ -17,5 +17,6 @@ "ruleAll": "IMB 族群数据的每一行:一个国家中的一个族群。", "ruleUnreached": "IMB 迷失优先级 0 至 2:福音派信徒少于 2%。", "ruleFrontier": "IMB 迷失优先级 0:福音派信徒少于 0.1%。属于未得之民的一部分。", - "ruleDoxa": "DOXA 祷告名单上的每个族群,按民族和国家与 IMB 数据匹配。并非全部都是前沿族群。" + "ruleDoxa": "DOXA 祷告名单上的每个族群,按民族和国家与 IMB 数据匹配。并非全部都是前沿族群。", + "about": "关于此地图" } diff --git a/plugin-designs/all-people-groups/all-people-groups.vue b/plugin-designs/all-people-groups/all-people-groups.vue index 2cfcfda7e..29b49fc21 100644 --- a/plugin-designs/all-people-groups/all-people-groups.vue +++ b/plugin-designs/all-people-groups/all-people-groups.vue @@ -39,6 +39,7 @@ import { useShadowStyles } from '@map/composables/useShadowStyles.js' import { DataSourceManager } from '@map/utils/DataSourceManager.js' import MapToolbar from '@map/components/map-controls/MapToolbar.vue' import ShareButton from '@map/components/map-controls/ShareButton.vue' +import HelpButton from '@map/components/map-controls/HelpButton.vue' import { resolveAssetsBase } from '@map/utils/embedBase.js' useShadowStyles(` @@ -448,6 +449,7 @@ const totalShown = computed(() => top offset collapses to the desktop 10px instead of reserving space for one. --> +
diff --git a/plugin-designs/country-posters/countries-map.vue b/plugin-designs/country-posters/countries-map.vue index 9672b45ac..d4bf4ce10 100644 --- a/plugin-designs/country-posters/countries-map.vue +++ b/plugin-designs/country-posters/countries-map.vue @@ -137,6 +137,7 @@ import LocationButton from '@map/components/map-controls/LocationButton.vue' import FullscreenButton from '@map/components/map-controls/FullscreenButton.vue' import ThemeToggleButton from '@map/components/map-controls/ThemeToggleButton.vue' import HamburgerButton from '@map/components/map-controls/HamburgerButton.vue' +import HelpButton from '@map/components/map-controls/HelpButton.vue' import GeocoderComponent from '@map/components/map-controls/GeocoderComponent.vue' import { resolveMapProvider, setProjectionOn } from '@map/composables/useMapProvider.js' import ShareButton from '@map/components/map-controls/ShareButton.vue' @@ -2294,6 +2295,7 @@ onBeforeUnmount(() => { + -
+ +
diff --git a/plugin-designs/wall-of-people-groups/src/components/PeopleGroupsWall.vue b/plugin-designs/wall-of-people-groups/src/components/PeopleGroupsWall.vue index bb35da292..f0fd54006 100644 --- a/plugin-designs/wall-of-people-groups/src/components/PeopleGroupsWall.vue +++ b/plugin-designs/wall-of-people-groups/src/components/PeopleGroupsWall.vue @@ -24,6 +24,8 @@
+ {{ $t('wall.groupsLoaded', { n: totalGroups }) }}
@@ -52,11 +54,17 @@ import { WallCanvas, groupLink } from '../wallCanvas.js' import { buildBlessPosterHtml, screenPoster, PRESETS, DEFAULT_PRESET } from '../blessPoster.js' import { openPrintFrame } from '@map/composables/printInPlace.js' +import { useHostedHelp } from '@map/composables/useHostedHelp.js' // Wall of People Groups: a zoomable canvas wall (wallCanvas.js), Bless or Social cards, and the poster print. export default { name: 'PeopleGroupsWall', // The page's profile-config, for its people-group LIST (library/lists/); handed to the store. inject: { profileConfig: { default: null } }, + // The wall's "?" asks its HOST for the wall's help (doxa:help); it shows only where a host answers. + setup() { + const { hosted, askForHelp } = useHostedHelp() + return { helpHosted: hosted, askForHelp } + }, data() { return { mode: 'bless', // 'bless' (default) | 'social' diff --git a/plugin-designs/wall-of-people-groups/src/wall.css b/plugin-designs/wall-of-people-groups/src/wall.css index 83eff7d01..5dcb7d127 100644 --- a/plugin-designs/wall-of-people-groups/src/wall.css +++ b/plugin-designs/wall-of-people-groups/src/wall.css @@ -91,6 +91,8 @@ body { .mode-toggle .control-btn { border-radius: 0; } .mode-toggle .control-btn:first-child { border-start-start-radius: 6px; border-end-start-radius: 6px; } .mode-toggle .control-btn:last-child { border-start-end-radius: 6px; border-end-end-radius: 6px; } +/* The wall's "?": the same control as its neighbours, a serif glyph like the map controls' "?". */ +.wall-help { font-family: Georgia, serif; font-weight: 700; min-width: 32px; } .mode-toggle .control-btn.on { background: #262626; color: #fff; } .control-btn:hover { background: #0081d6;