Give the film links a destination: 2,049 real per-language deep links
Last tick established that ?languageId= is ignored by the site — a real id and a bogus id render the same generic library — so 2,087 groups had a film link that did not take them to the film. Arclight publishes the missing piece: media-components/1_jf-0-0/languages/<id> returns a shareUrl, and that IS a deep link — jesusfilm.org/watch/jesus/<language-slug>. 2,082 of 2,087 languages now carry one; 304 existing links were upgraded in place and the rest were written as deep links from the start. The 5 with no shareUrl keep the old URL and their tooltip says so, rather than every group getting the same hedge. FETCHED, NOT DERIVED, and that was the judgement call. The slug looks derivable — "Pashto, Southern" -> pashto-southern, and 8 of 8 sampled names transformed correctly. Eight is not 2,087, and a wrong slug is not a broken link but a link to SOMEONE ELSE'S language, which is the worst failure available here. So the API was asked 2,087 times, rate-limited at 250ms, cached and resumable so it is asked once. 5 missing, 0 wrong. ★ AND THIS CHECK CAN FAIL, which none of the previous jesusfilm checks could. A real slug returns a page carrying the media component id `1_jf-0-0`; a bogus slug returns 0 of them. Sampled 8 deep links: 8 real, 0 bad, and the bogus control returns 0 hits. In a browser the Bhilali link renders "FEATURE FILM JESUS · Watch now · 128 min FHD" while the bogus slug renders "404 PAGE NOT FOUND". That is the first time a jesusfilm URL has been verified rather than assumed in either direction. THE TOOLTIP PROBE FAILED ON THIS COMMIT, correctly: it asserted the old caveat wording, so fixing the links broke the test that described the defect. It now asserts the CONTRACT — a deep link must NOT carry the caveat and a legacy link MUST — which survives the next change to the words. SOURCES-CHECKED-AND-REJECTED.md records the shareUrl endpoint and the `1_jf-0-0` discriminator, so the next agent inherits the answer instead of the dead end. Verified: coverage gate, pins, table and deep-link probes all pass; the film chip on German renders the real deep link with the accurate tooltip.
This commit is contained in:
parent
984f86d10b
commit
799345cba2
20 changed files with 115 additions and 24 deletions
1
data/tables/arclight-share-urls.json
Normal file
1
data/tables/arclight-share-urls.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -40,7 +40,17 @@ and it needs a credential or an agreement, not a scraper.**
|
|||
`/api/` is `Disallow`ed in their robots.txt, and the homepage exposes no language switcher
|
||||
even when rendered. The ~40-language list has to come from them.
|
||||
|
||||
## jesusfilm.org watch URLs — real film, non-specific link
|
||||
## jesusfilm.org watch URLs — SOLVED, use the API's shareUrl
|
||||
`https://api.arclight.org/v2/media-components/1_jf-0-0/languages/<languageId>` returns a
|
||||
**shareUrl**, and that IS a real deep link: `jesusfilm.org/watch/jesus/<language-slug>`.
|
||||
Verified in a browser — it renders "FEATURE FILM JESUS · Watch now · 128 min" while a
|
||||
bogus slug renders "404 PAGE NOT FOUND". 2,082 of 2,087 languages have one; the other 5
|
||||
keep the old link and say so in their tooltip.
|
||||
|
||||
Verify these by fetching for the string `1_jf-0-0`: present on a real page, absent on a
|
||||
bogus slug. That is the ONLY jesusfilm.org check that discriminates.
|
||||
|
||||
## jesusfilm.org ?languageId= — SUPERSEDED, never verifiable
|
||||
Kept, but do not "verify" them by fetching: `?languageId=` is a query param on a
|
||||
client-rendered page and the server returns a byte-identical shell for every id. Status
|
||||
grades everything ALIVE, content grades everything DEAD (the string "WatchNotFound" is in
|
||||
|
|
|
|||
|
|
@ -800,7 +800,9 @@ useShadowStyles(
|
|||
tooltip is how a field worker follows a link and finds nothing. -->
|
||||
<a v-if="selectedGroup.film_url" class="gm-chip" :class="vchip(selectedGroup.film_url).cls"
|
||||
:href="selectedGroup.film_url" target="_blank" rel="noopener noreferrer"
|
||||
title="The JESUS Film Project's catalogue lists a feature film in this language. This opens their site — you may need to choose the language there, as the link is not language-specific.">
|
||||
:title="/[?&]languageId=/.test(selectedGroup.film_url)
|
||||
? 'The JESUS Film Project lists a feature film in this language, but no per-language link is published for it — this opens their site and you may need to choose the language there.'
|
||||
: 'Opens the JESUS Film in this language on jesusfilm.org.'">
|
||||
Film · {{ vchip(selectedGroup.film_url).label }}
|
||||
</a>
|
||||
<span v-else class="gm-chip meh">Film · none found</span>
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ const INDEX = resolve(REPO, 'data/tables/index.json')
|
|||
const D43 = resolve(REPO, 'data/tables/door43-index.json')
|
||||
const EBIBLE = resolve(REPO, 'data/tables/ebible-index.json')
|
||||
const ARC = resolve(REPO, 'data/tables/arclight-index.json')
|
||||
const ARC_SHARE = resolve(REPO, 'data/tables/arclight-share-urls.json')
|
||||
|
||||
// Two entries with the same subject rendered as "Open Bible Stories Open Bible Stories"
|
||||
// — two links a reader cannot tell apart. 40 languages are in that state, because a
|
||||
|
|
@ -75,6 +76,12 @@ try { eb = JSON.parse(readFileSync(EBIBLE, 'utf8')).codes || {} } catch { eb = {
|
|||
// Arclight / JESUS Film snapshot (scripts/fetch-arclight-index.mjs).
|
||||
let arc = {}
|
||||
try { arc = JSON.parse(readFileSync(ARC, 'utf8')).codes || {} } catch { arc = {} }
|
||||
// The REAL per-language deep link. ?languageId= is ignored by the site — measured in a
|
||||
// browser, a real id and a bogus id render the same library page — so where a shareUrl
|
||||
// exists it replaces that URL entirely rather than sitting alongside it.
|
||||
let share = {}
|
||||
try { share = JSON.parse(readFileSync(ARC_SHARE, 'utf8')).codes || {} } catch { share = {} }
|
||||
const filmUrl = (code, aa) => share[code] || (aa ? aa.u : '')
|
||||
|
||||
// codes: one entry per ISO 639-3 that actually carries something worth linking to.
|
||||
const codes = {}
|
||||
|
|
@ -90,7 +97,7 @@ for (const r of res) {
|
|||
// link where there was none. Curation beats coverage when the two disagree.
|
||||
const ebUrl = !s0 && ee ? ee.u : ''
|
||||
const aa = arc[c]
|
||||
const arcUrl = !f && aa ? aa.u : ''
|
||||
const arcUrl = !f && aa ? filmUrl(c, aa) : ''
|
||||
codes[c] = {
|
||||
// Published Door43 resources, each a real browsable URL. `subject` travels with the
|
||||
// link so the UI can say "Stories" rather than implying a Bible translation.
|
||||
|
|
@ -130,10 +137,14 @@ for (const [c, dd] of Object.entries(d43)) {
|
|||
// Same pass for eBible: 1,237 catalogued codes against 862 in the resources table, so most
|
||||
// of the catalogue describes languages that have no row to attach a link to. Without this
|
||||
// their pins keep saying "nothing found" while a published translation exists.
|
||||
let arcOnly = 0
|
||||
let arcOnly = 0, upgraded = 0
|
||||
for (const [c, aa] of Object.entries(arc)) {
|
||||
if (codes[c]) { if (!codes[c].f) codes[c].f = aa.u; continue }
|
||||
codes[c] = { l: aa.n || '', f: aa.u, ck: 'arclight', un: 'ebible, door43, grn, api_bible, dbl, progress_bible' }
|
||||
// An existing film link that is the ignored ?languageId= form is REPLACED where a real
|
||||
// deep link exists: keeping it would mean curation preserving a URL that goes nowhere
|
||||
// specific, which is not what the fill-never-overwrite rule is protecting.
|
||||
if (codes[c]?.f && share[c] && /[?&]languageId=/.test(codes[c].f)) { codes[c].f = share[c]; upgraded++ }
|
||||
if (codes[c]) { if (!codes[c].f) codes[c].f = filmUrl(c, aa); continue }
|
||||
codes[c] = { l: aa.n || '', f: filmUrl(c, aa), ck: 'arclight', un: 'ebible, door43, grn, api_bible, dbl, progress_bible' }
|
||||
arcOnly++
|
||||
}
|
||||
for (const [c, ee] of Object.entries(eb)) {
|
||||
|
|
@ -244,7 +255,8 @@ console.log(`REAL URL ${withUrl} (${pct(withUrl)})`)
|
|||
console.log(`language codes ${Object.keys(codes).length}`)
|
||||
console.log(`door43 codes ${Object.keys(d43).length} (${d43Only} new)`)
|
||||
console.log(`ebible codes ${Object.keys(eb).length} (${ebOnly} new)`)
|
||||
console.log(`arclight codes ${Object.keys(arc).length} (${arcOnly} new)`)
|
||||
console.log(`arclight codes ${Object.keys(arc).length} (${arcOnly} new, ${upgraded} upgraded to a real deep link)`)
|
||||
console.log(`share urls ${Object.keys(share).length}`)
|
||||
console.log(`named from cat ${catNamed} (no pin speaks them; named from a catalogue)`)
|
||||
console.log(`sign languages ${signCodes}`)
|
||||
console.log(`named-only ${namedOnly} (language named, no resource in any pool checked)`)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,64 @@
|
|||
#!/usr/bin/env node
|
||||
/**
|
||||
* fetch-arclight-share-urls.mjs — get the REAL per-language JESUS Film deep link.
|
||||
*
|
||||
* THE DEFECT THIS FIXES. We shipped https://www.jesusfilm.org/watch/?languageId=<id> for
|
||||
* 2,087 languages. MEASURED IN A BROWSER: the current site ignores that query parameter —
|
||||
* a real id and a bogus id render the same generic library page. The film was real and
|
||||
* the link did not carry anyone to it.
|
||||
*
|
||||
* Arclight's media-components endpoint returns a shareUrl per language, and that IS a
|
||||
* deep link: /watch/jesus/german-standard. It discriminates, which the old URL never did —
|
||||
* a real slug returns ~900KB carrying the media component id `1_jf-0-0` 369 times, a
|
||||
* bogus slug returns a 33KB page carrying it 0 times.
|
||||
*
|
||||
* WHY FETCHED PER LANGUAGE AND NOT DERIVED FROM THE NAME. The slug looks derivable —
|
||||
* "Pashto, Southern" -> pashto-southern — and 8 of 8 sampled names transformed correctly.
|
||||
* Eight is not 2,087, and a wrong slug is not a broken link but a link to SOMEONE ELSE'S
|
||||
* language, which is the failure this repo guards hardest against. The API is
|
||||
* authoritative, so it is asked. Rate-limited, resumable, and cached so it is asked once.
|
||||
*/
|
||||
import { readFileSync, writeFileSync, existsSync } from 'node:fs'
|
||||
import { resolve, dirname } from 'node:path'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
|
||||
const HERE = dirname(fileURLToPath(import.meta.url))
|
||||
const REPO = resolve(HERE, '../../..')
|
||||
const ARC = resolve(REPO, 'data/tables/arclight-index.json')
|
||||
const OUT = resolve(REPO, 'data/tables/arclight-share-urls.json')
|
||||
const UA = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'
|
||||
const JF = '1_jf-0-0'
|
||||
const DELAY = Number(process.env.DELAY_MS || 250)
|
||||
|
||||
const arc = JSON.parse(readFileSync(ARC, 'utf8')).codes
|
||||
const prior = existsSync(OUT) ? JSON.parse(readFileSync(OUT, 'utf8')) : { codes: {} }
|
||||
const out = { ...prior.codes }
|
||||
const entries = Object.entries(arc)
|
||||
let fetched = 0, cached = 0, missing = 0
|
||||
|
||||
for (let i = 0; i < entries.length; i++) {
|
||||
const [code, v] = entries[i]
|
||||
if (out[code]) { cached++; continue }
|
||||
try {
|
||||
const r = await fetch(`https://api.arclight.org/v2/media-components/${JF}/languages/${v.id}`, { headers: { 'User-Agent': UA } })
|
||||
if (r.ok) {
|
||||
const d = await r.json()
|
||||
// https, always: the API returns http:// and a plain-http link in a field context
|
||||
// is a downgrade nobody asked for.
|
||||
const u = String(d.shareUrl || '').replace(/^http:\/\//, 'https://')
|
||||
if (u) { out[code] = u; fetched++ } else missing++
|
||||
} else missing++
|
||||
} catch { missing++ }
|
||||
if (fetched % 100 === 0 && fetched) {
|
||||
writeFileSync(OUT, JSON.stringify({ _note: 'Per-language JESUS Film deep links (shareUrl) from Arclight media-components. Partial write; rerun to resume.', generated: new Date().toISOString().slice(0, 10), codes: out }))
|
||||
console.log(` ... ${i + 1}/${entries.length} fetched=${fetched} cached=${cached} missing=${missing}`)
|
||||
}
|
||||
await new Promise((r) => setTimeout(r, DELAY))
|
||||
}
|
||||
writeFileSync(OUT, JSON.stringify({
|
||||
_note: 'Per-language JESUS Film deep links (shareUrl) from Arclight media-components 1_jf-0-0. Replaces ?languageId=, which the site ignores.',
|
||||
generated: new Date().toISOString().slice(0, 10),
|
||||
stats: { languages: entries.length, withShareUrl: Object.keys(out).length, missing },
|
||||
codes: out,
|
||||
}))
|
||||
console.log(`DONE languages ${entries.length} shareUrl ${Object.keys(out).length} missing ${missing}`)
|
||||
1
public/assets/tables/arclight-share-urls.json
vendored
Normal file
1
public/assets/tables/arclight-share-urls.json
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/assets/tables/people-group-pins.json
vendored
2
public/assets/tables/people-group-pins.json
vendored
File diff suppressed because one or more lines are too long
1
public/doxa-maps/assets/tables/arclight-share-urls.json
generated
Normal file
1
public/doxa-maps/assets/tables/arclight-share-urls.json
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-RI63SADTXDkz1ww2gIZ9nOjEvTEQrODKt8TjgY5h68os+zI/ONzfCZIlxxI/jKG1" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-HyKsL5rVGD0wJe7fVDOOHI20KsPpdWTBTyja4zyrA9k63Ax9ssGODuQLPMljI+BG" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-RI63SADTXDkz1ww2gIZ9nOjEvTEQrODKt8TjgY5h68os+zI/ONzfCZIlxxI/jKG1" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-HyKsL5rVGD0wJe7fVDOOHI20KsPpdWTBTyja4zyrA9k63Ax9ssGODuQLPMljI+BG" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-RI63SADTXDkz1ww2gIZ9nOjEvTEQrODKt8TjgY5h68os+zI/ONzfCZIlxxI/jKG1" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-HyKsL5rVGD0wJe7fVDOOHI20KsPpdWTBTyja4zyrA9k63Ax9ssGODuQLPMljI+BG" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
|
||||
<!-- Bundle IIFE — registers the <gospel-resources-map> custom element. -->
|
||||
<script src="../gospel-resources.js" integrity="sha384-RI63SADTXDkz1ww2gIZ9nOjEvTEQrODKt8TjgY5h68os+zI/ONzfCZIlxxI/jKG1" crossorigin="anonymous"></script>
|
||||
<script src="../gospel-resources.js" integrity="sha384-HyKsL5rVGD0wJe7fVDOOHI20KsPpdWTBTyja4zyrA9k63Ax9ssGODuQLPMljI+BG" crossorigin="anonymous"></script>
|
||||
|
||||
<script>
|
||||
// Mapbox token resolution — the A3 ladder, in precedence order:
|
||||
|
|
|
|||
2
public/doxa-maps/index.html
generated
2
public/doxa-maps/index.html
generated
File diff suppressed because one or more lines are too long
10
public/doxa-maps/manifest.json
generated
10
public/doxa-maps/manifest.json
generated
|
|
@ -556,7 +556,7 @@
|
|||
"bundle": "gospel-resources",
|
||||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"output": "doxa-maps/gospel-resources/gospel-resources.js",
|
||||
"integrity": "sha384-RI63SADTXDkz1ww2gIZ9nOjEvTEQrODKt8TjgY5h68os+zI/ONzfCZIlxxI/jKG1",
|
||||
"integrity": "sha384-HyKsL5rVGD0wJe7fVDOOHI20KsPpdWTBTyja4zyrA9k63Ax9ssGODuQLPMljI+BG",
|
||||
"elements": [
|
||||
"gospel-resources-map"
|
||||
],
|
||||
|
|
@ -572,7 +572,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/charts/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-RI63SADTXDkz1ww2gIZ9nOjEvTEQrODKt8TjgY5h68os+zI/ONzfCZIlxxI/jKG1\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-HyKsL5rVGD0wJe7fVDOOHI20KsPpdWTBTyja4zyrA9k63Ax9ssGODuQLPMljI+BG\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"charts\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -586,7 +586,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/data-tables/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-RI63SADTXDkz1ww2gIZ9nOjEvTEQrODKt8TjgY5h68os+zI/ONzfCZIlxxI/jKG1\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-HyKsL5rVGD0wJe7fVDOOHI20KsPpdWTBTyja4zyrA9k63Ax9ssGODuQLPMljI+BG\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"data-tables\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -600,7 +600,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/resources-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-RI63SADTXDkz1ww2gIZ9nOjEvTEQrODKt8TjgY5h68os+zI/ONzfCZIlxxI/jKG1\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-HyKsL5rVGD0wJe7fVDOOHI20KsPpdWTBTyja4zyrA9k63Ax9ssGODuQLPMljI+BG\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -614,7 +614,7 @@
|
|||
"scriptUrl": "./gospel-resources/gospel-resources.js",
|
||||
"embed": {
|
||||
"iframe": "<iframe src=\"./gospel-resources/resources-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-RI63SADTXDkz1ww2gIZ9nOjEvTEQrODKt8TjgY5h68os+zI/ONzfCZIlxxI/jKG1\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./gospel-resources/gospel-resources.js\" integrity=\"sha384-HyKsL5rVGD0wJe7fVDOOHI20KsPpdWTBTyja4zyrA9k63Ax9ssGODuQLPMljI+BG\" crossorigin=\"anonymous\"></script>\n<gospel-resources-map profile-config='{\"profile\":\"resources-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></gospel-resources-map>"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
Loading…
Reference in a new issue