Merge pull request #22468 from overleaf/td-bs5-ieee-overall-theme

Always apply overall dark theme with IEEE-branded editor and tear down ieee-stylesheet feature flag

GitOrigin-RevId: 80d10a911f3a188867db9b825f3ae8413f555b64
This commit is contained in:
Tim Down
2024-12-12 15:57:45 +00:00
committed by Copybot
parent 9d4eeeea90
commit 4cd624e6a5
7 changed files with 25 additions and 19 deletions

View File

@@ -347,7 +347,6 @@ const _ProjectController = {
!anonymous && 'ro-mirror-on-client',
'track-pdf-download',
!anonymous && 'writefull-oauth-promotion',
'ieee-stylesheet',
'write-and-cite',
'write-and-cite-ars',
'default-visual-for-beginners',

View File

@@ -189,13 +189,13 @@ module.exports = function (webRouter, privateApiRouter, publicApiRouter) {
res.locals.getCssThemeModifier = function (
userSettings,
brandVariation,
ieeeStylesheetEnabled
enableIeeeBranding
) {
// Themes only exist in OL v2
if (Settings.overleaf != null) {
// The IEEE theme takes precedence over the user personal setting, i.e. a user with
// a theme setting of "light" will still get the IEE theme in IEEE branded projects.
if (ieeeStylesheetEnabled && res.locals.isIEEE(brandVariation)) {
// The IEEE theme is no longer applied in the editor, which sets
// enableIeeeBranding to false, but is used in the IEEE portal
if (enableIeeeBranding && res.locals.isIEEE(brandVariation)) {
return 'ieee-'
} else if (userSettings && userSettings.overallTheme != null) {
return userSettings.overallTheme
@@ -213,11 +213,10 @@ module.exports = function (webRouter, privateApiRouter, publicApiRouter) {
bootstrapVersion = 3
) {
// Pick which main stylesheet to use based on Bootstrap version
const bootstrap5Modifier = bootstrapVersion === 5 ? '-bootstrap-5' : ''
const computedThemeModifier = bootstrapVersion === 5 ? '' : themeModifier
return res.locals.buildStylesheetPath(
`main-${computedThemeModifier}style${bootstrap5Modifier}.css`
bootstrapVersion === 5
? 'main-style-bootstrap-5.css'
: `main-${themeModifier}style.css`
)
}

View File

@@ -9,7 +9,8 @@ html(
- let bootstrap5PageStatus = 'disabled' // One of 'disabled', 'enabled', and 'queryStringOnly'
- 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 isApplicationPage = false
- let enableIeeeBranding = true
block entrypointVar
@@ -21,10 +22,9 @@ html(
include ./_metadata.pug
- const bootstrapVersion = bootstrap5PageStatus !== 'disabled' && (bootstrap5Override || (bootstrap5PageStatus === 'enabled' && (bootstrap5PageSplitTest === '' || splitTestVariants[bootstrap5PageSplitTest] === 'enabled'))) ? 5 : 3
- const ieeeStylesheetEnabled = splitTestVariants?.['ieee-stylesheet'] !== 'disabled'
//- Stylesheet
link(rel='stylesheet', href=buildCssPath(getCssThemeModifier(userSettings, brandVariation, ieeeStylesheetEnabled), bootstrapVersion), id="main-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)

View File

@@ -8,6 +8,7 @@ block vars
- bootstrap5PageStatus = 'enabled' // One of 'disabled', 'enabled', and 'queryStringOnly'
- bootstrap5PageSplitTest = 'bootstrap-5-ide'
- metadata.robotsNoindexNofollow = true
- enableIeeeBranding = false
block entrypointVar
- entrypoint = 'pages/ide'

View File

@@ -6,6 +6,7 @@ import SettingsMenuSelect, { Option } from './settings-menu-select'
import { useProjectSettingsContext } from '../../context/project-settings-context'
import type { OverallThemeMeta } from '../../../../../../types/project-settings'
import type { OverallTheme } from '../../../source-editor/extensions/theme'
import { isIEEEBranded } from '@/utils/is-ieee-branded'
export default function SettingsOverallTheme() {
const { t } = useTranslation()
@@ -24,11 +25,7 @@ export default function SettingsOverallTheme() {
[overallThemes]
)
const brandVariation = getMeta('ol-brandVariation')
const { ieeeBrandId } = getMeta('ol-ExposedSettings')
const isIEEEBranded = brandVariation?.brand_id === ieeeBrandId
if (!overallThemes || isIEEEBranded) {
if (!overallThemes || isIEEEBranded()) {
return null
}

View File

@@ -7,6 +7,7 @@ import { UserSettings } from '../../../../../types/user-settings'
import { useUserSettingsContext } from '@/shared/context/user-settings-context'
import getMeta from '@/utils/meta'
import { isBootstrap5 } from '@/features/utils/bootstrap-5'
import { isIEEEBranded } from '@/utils/is-ieee-branded'
export default function useSetOverallTheme() {
const [chosenTheme, setChosenTheme] = useState<OverallThemeMeta | null>(null)
@@ -28,7 +29,8 @@ export default function useSetOverallTheme() {
useEffect(() => {
// Sets `data-theme` attribute to the body element, needed for Bootstrap 5 theming
const theme = overallTheme === 'light-' ? 'light' : 'default'
const theme =
overallTheme === 'light-' && !isIEEEBranded() ? 'light' : 'default'
document.body.dataset.theme = theme
}, [overallTheme])

View File

@@ -0,0 +1,8 @@
import getMeta from '@/utils/meta'
export function isIEEEBranded() {
const brandVariation = getMeta('ol-brandVariation')
const { ieeeBrandId } = getMeta('ol-ExposedSettings')
return brandVariation?.brand_id === ieeeBrandId
}