layout-react.pug 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. //- Avoids including Bootstrap's own JS to prevent conflicts with react-bootstrap,
  2. //- since Bootstrap 5's JS and react-bootstrap should not be used together on the same page.
  3. extends ./layout-base
  4. include ./_mixins/formMessages
  5. block isApplicationPageVar
  6. - isApplicationPage = true
  7. block append meta
  8. - const canDisplayAdminMenu = hasAdminAccess()
  9. - const canDisplayAdminRedirect = canRedirectToAdminDomain()
  10. - const sessionUser = getSessionUser()
  11. - const staffAccess = sessionUser?.staffAccess
  12. - const canDisplayProjectUrlLookup = hasFeature('saas') && canDisplayAdminMenu && hasAdminCapability('view-project-setting', false)
  13. - const canDisplaySplitTestMenu = hasFeature('saas') && ((canDisplayAdminMenu && hasAdminCapability('view-split-test')) || staffAccess?.splitTestMetrics || staffAccess?.splitTestManagement)
  14. - const canDisplaySurveyMenu = hasFeature('saas') && canDisplayAdminMenu && hasAdminCapability('manage-survey', false)
  15. - const canDisplayScriptLogMenu = hasFeature('saas') && hasAdminCapability('view-script-log', false) && canDisplayAdminMenu
  16. - const enableUpgradeButton = projectDashboardReact && usersBestSubscription && (usersBestSubscription.type === 'free' || usersBestSubscription.type === 'standalone-ai-add-on')
  17. - const showSignUpLink = hasFeature('registration-page')
  18. meta(
  19. name='ol-navbar'
  20. data-type='json'
  21. content={
  22. customLogo: settings.nav.custom_logo,
  23. title: nav.title,
  24. canDisplayAdminMenu,
  25. canDisplayAdminRedirect,
  26. canDisplayProjectUrlLookup,
  27. canDisplaySplitTestMenu,
  28. canDisplaySurveyMenu,
  29. canDisplayScriptLogMenu,
  30. enableUpgradeButton,
  31. suppressNavbarRight: !!suppressNavbarRight,
  32. suppressNavContentLinks: !!suppressNavContentLinks,
  33. showSubscriptionLink: nav.showSubscriptionLink,
  34. showSignUpLink: showSignUpLink,
  35. currentUrl: currentUrl,
  36. sessionUser: sessionUser ? {email: sessionUser.email} : undefined,
  37. adminUrl: settings.adminUrl,
  38. items: cloneAndTranslateText(nav.header_extras),
  39. }
  40. )
  41. meta(
  42. name='ol-footer'
  43. data-type='json'
  44. content={
  45. showThinFooter: showThinFooter,
  46. showPoweredBy: !hasFeature('saas') && !settings.nav.hide_powered_by,
  47. subdomainLang: settings.i18n.subdomainLang,
  48. translatedLanguages: settings.translatedLanguages,
  49. leftItems: cloneAndTranslateText(settings.nav.left_footer),
  50. rightItems: settings.nav.right_footer,
  51. }
  52. )
  53. block body
  54. if typeof suppressNavbar === 'undefined'
  55. include layout/navbar-marketing-react
  56. block content
  57. if typeof suppressFooter === 'undefined'
  58. if showThinFooter
  59. include layout/thin-footer
  60. else
  61. include layout/fat-footer-react
  62. if typeof suppressPugCookieBanner === 'undefined'
  63. include _cookie_banner