mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2025-07-25 20:00:11 +02:00

* Rename `suppressGoogleAnalytics` to `suppressAnalytics` * Add Propensity script * Add LinkedIn Insight Tag script * Version the cookie to prevent adding unconsented tracking * Move tracking loaders to Typescript, insert them in foot_scripts.pug * Show the cookie-banner when tracking other than GA is set * Revert `oa` cookie versioning * Remove `async` from propensity script * Use shared tracking loader for Hotjar, LinkedIn, and Propensity * Reusable `insertScript` * Remove tracking-linkedin * Test the scripts by adding fake ids * Revert "Test the scripts by adding fake ids" This reverts commit 50759bb6b40fd2684d1b967d83dd71e8517c3de9. GitOrigin-RevId: 2a7b36bfc70ac1fc983f837dd4693a19a385cbc6
149 lines
4.4 KiB
Text
149 lines
4.4 KiB
Text
include ./_mixins/foot_scripts
|
|
|
|
doctype html
|
|
html(
|
|
lang=currentLngCode || 'en'
|
|
class=fixedSizeDocument ? 'fixed-size-document' : undefined
|
|
)
|
|
- metadata = metadata || {}
|
|
- let bootstrap5PageStatus = 'enabled' // One of 'disabled' and 'enabled'
|
|
- let bootstrap5PageSplitTest = '' // Limits Bootstrap 5 usage on this page to users with an assignment of "enabled" for the specified split test. If left empty and bootstrap5PageStatus is "enabled", the page always uses Bootstrap 5.
|
|
- let isWebsiteRedesign = false
|
|
- let isApplicationPage = false
|
|
- let enableIeeeBranding = true
|
|
|
|
block entrypointVar
|
|
|
|
block isApplicationPageVar
|
|
|
|
block vars
|
|
|
|
head
|
|
include ./_metadata.pug
|
|
|
|
- const bootstrapVersion = bootstrap5PageStatus !== 'disabled' && (bootstrap5Override || bootstrap5PageSplitTest === '' || splitTestVariants[bootstrap5PageSplitTest] === 'enabled') ? 5 : 3
|
|
|
|
//- Stylesheet
|
|
link(
|
|
rel='stylesheet'
|
|
href=buildCssPath(getCssThemeModifier(userSettings, brandVariation, enableIeeeBranding), bootstrapVersion)
|
|
id='main-stylesheet'
|
|
)
|
|
block css
|
|
each file in entrypointStyles(entrypoint)
|
|
link(rel='stylesheet' href=file)
|
|
|
|
block _headLinks
|
|
|
|
if typeof suppressRelAlternateLinks == 'undefined'
|
|
if settings.i18n.subdomainLang
|
|
each subdomainDetails in settings.i18n.subdomainLang
|
|
if !subdomainDetails.hide
|
|
link(
|
|
rel='alternate'
|
|
href=subdomainDetails.url + currentUrl
|
|
hreflang=subdomainDetails.lngCode
|
|
)
|
|
|
|
if entrypoint !== 'marketing'
|
|
link(
|
|
rel='preload'
|
|
href=buildJsPath(currentLngCode + '-json.js')
|
|
as='script'
|
|
nonce=scriptNonce
|
|
)
|
|
|
|
//- Scripts
|
|
if typeof suppressAnalytics == 'undefined'
|
|
include _google_analytics
|
|
|
|
block meta
|
|
meta(name='ol-csrfToken' content=csrfToken)
|
|
//- Configure dynamically loaded assets (via webpack) to be downloaded from CDN
|
|
//- See: https://webpack.js.org/guides/public-path/#on-the-fly
|
|
meta(name='ol-baseAssetPath' content=buildBaseAssetPath())
|
|
meta(name='ol-mathJaxPath' content=mathJaxPath)
|
|
meta(name='ol-dictionariesRoot' content=dictionariesRoot)
|
|
|
|
meta(name='ol-usersEmail' content=getUserEmail())
|
|
meta(name='ol-ab' data-type='json' content={})
|
|
meta(name='ol-user_id' content=getLoggedInUserId())
|
|
//- Internationalisation settings
|
|
meta(
|
|
name='ol-i18n'
|
|
data-type='json'
|
|
content={
|
|
currentLangCode: currentLngCode,
|
|
}
|
|
)
|
|
//- Expose some settings globally to the frontend
|
|
meta(name='ol-ExposedSettings' data-type='json' content=ExposedSettings)
|
|
meta(
|
|
name='ol-splitTestVariants'
|
|
data-type='json'
|
|
content=splitTestVariants || {}
|
|
)
|
|
meta(name='ol-splitTestInfo' data-type='json' content=splitTestInfo || {})
|
|
|
|
if typeof settings.algolia != 'undefined'
|
|
meta(
|
|
name='ol-algolia'
|
|
data-type='json'
|
|
content={
|
|
appId: settings.algolia.app_id,
|
|
apiKey: settings.algolia.read_only_api_key,
|
|
indexes: settings.algolia.indexes,
|
|
}
|
|
)
|
|
|
|
meta(
|
|
name='ol-isManagedAccount'
|
|
data-type='boolean'
|
|
content=isManagedAccount
|
|
)
|
|
each restriction in userRestrictions || []
|
|
meta(name='ol-cannot-' + restriction data-type='boolean' content)
|
|
meta(name='ol-bootstrapVersion' data-type='json' content=bootstrapVersion)
|
|
|
|
block head-scripts
|
|
|
|
body(
|
|
class={
|
|
'thin-footer': showThinFooter,
|
|
'website-redesign': isWebsiteRedesign === true || websiteRedesignOverride,
|
|
'application-page': isApplicationPage,
|
|
}
|
|
data-theme='default'
|
|
)
|
|
if settings.recaptcha && settings.recaptcha.siteKeyV3
|
|
script(
|
|
type='text/javascript'
|
|
nonce=scriptNonce
|
|
src='https://www.recaptcha.net/recaptcha/api.js?render=' + settings.recaptcha.siteKeyV3
|
|
defer=deferScripts
|
|
)
|
|
|
|
if typeof suppressSkipToContent == 'undefined'
|
|
a(class='skip-to-content' href='#main-content') #{translate('skip_to_content')}
|
|
|
|
block body
|
|
|
|
if settings.devToolbar.enabled
|
|
#dev-toolbar
|
|
|
|
block foot-scripts
|
|
+foot-scripts
|
|
|
|
include _customer_io
|
|
|
|
script(type='text/javascript' nonce=scriptNonce).
|
|
window.addEventListener('DOMContentLoaded', function () {
|
|
//- Look for bundle
|
|
var cdnBlocked = typeof Frontend === 'undefined'
|
|
//- Prevent loops
|
|
var noCdnAlreadyInUrl = window.location.href.indexOf('nocdn=true') != -1
|
|
if (cdnBlocked && !noCdnAlreadyInUrl && navigator.userAgent.indexOf('Googlebot') == -1) {
|
|
//- Set query param, server will not set CDN url
|
|
window.location.search += '&nocdn=true'
|
|
}
|
|
})
|