Files
overleaf-cep/services/web/app/views/layout-base.pug
Maria Florencia Besteiro Gonzalez c82d077c6b Merge pull request #29029 from overleaf/bg-td-mfb-increase-in-nocdn-metrics
Added more bots to no cdn check

GitOrigin-RevId: 53da4aad749494296df02a9026e2ba294bbba6e1
2025-10-14 08:06:08 +00:00

148 lines
3.9 KiB
Plaintext

include ./_mixins/foot_scripts
doctype html
html(
lang=currentLngCode || 'en'
class=fixedSizeDocument ? 'fixed-size-document' : undefined
)
- metadata = metadata || {}
- let isWebsiteRedesign = false
- let isApplicationPage = false
- let enableIeeeBranding = true
block entrypointVar
block isApplicationPageVar
block vars
head
include ./_metadata.pug
//- Stylesheet
link(rel='stylesheet' href=buildCssPath() 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)
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 () {
var bots = ['Bytespider', 'TikTokSpider', 'bingbot', 'Baiduspider', 'Amazonbot', 'Googlebot']
//- Look for bundle
var cdnBlocked = typeof Frontend === 'undefined'
//- Prevent loops
var noCdnAlreadyInUrl = window.location.href.indexOf('nocdn=true') != -1
if (
cdnBlocked &&
!noCdnAlreadyInUrl &&
!bots.some(function (bot) {
return navigator.userAgent.indexOf(bot) !== -1
})
) {
//- Set query param, server will not set CDN url
window.location.search += '&nocdn=true'
}
})