diff --git a/app/client/ui/AdminPanel.ts b/app/client/ui/AdminPanel.ts index ae1fa8ef..e2cc38bf 100644 --- a/app/client/ui/AdminPanel.ts +++ b/app/client/ui/AdminPanel.ts @@ -26,6 +26,7 @@ import {Computed, Disposable, dom, IDisposable, IDisposableOwner, MultiHolder, Observable, styled} from 'grainjs'; import {AdminSection, AdminSectionItem, HidableToggle} from 'app/client/ui/AdminPanelCss'; import {getAdminPanelName} from 'app/client/ui/AdminPanelName'; +import {showEnterpriseToggle} from 'app/client/ui/ActivationPage'; const t = makeT('AdminPanel'); @@ -158,13 +159,7 @@ Please log in as an administrator.`)), description: t('Current version of Grist'), value: cssValueLabel(`Version ${version.version}`), }), - dom.create(AdminSectionItem, { - id: 'enterprise', - name: t('Enterprise'), - description: t('Enable Grist Enterprise'), - value: dom.create(HidableToggle, this._toggleEnterprise.getEnterpriseToggleObservable()), - expandedContent: this._toggleEnterprise.buildEnterpriseSection(), - }), + this._maybeAddEnterpriseToggle(), this._buildUpdates(owner), ]), dom.create(AdminSection, t('Self Checks'), [ @@ -186,6 +181,19 @@ Please log in as an administrator.`)), ]; } + private _maybeAddEnterpriseToggle() { + if (!showEnterpriseToggle()) { + return null; + } + return dom.create(AdminSectionItem, { + id: 'enterprise', + name: t('Enterprise'), + description: t('Enable Grist Enterprise'), + value: dom.create(HidableToggle, this._toggleEnterprise.getEnterpriseToggleObservable()), + expandedContent: this._toggleEnterprise.buildEnterpriseSection(), + }); + } + private _buildSandboxingDisplay(owner: IDisposableOwner) { return dom.domComputed( use => { diff --git a/app/common/gristUrls.ts b/app/common/gristUrls.ts index e8410e1d..6cbe7d77 100644 --- a/app/common/gristUrls.ts +++ b/app/common/gristUrls.ts @@ -810,6 +810,9 @@ export interface GristLoadConfig { // The Grist deployment type (e.g. core, enterprise). deploymentType?: GristDeploymentType; + // Force enterprise deployment? For backwards compatibility with grist-ee Docker image + forceEnableEnterprise?: boolean; + // The org containing public templates and tutorials. templateOrg?: string|null; diff --git a/app/server/lib/sendAppPage.ts b/app/server/lib/sendAppPage.ts index 653028a7..38f3dcb5 100644 --- a/app/server/lib/sendAppPage.ts +++ b/app/server/lib/sendAppPage.ts @@ -96,6 +96,7 @@ export function makeGristConfig(options: MakeGristConfigOptions): GristLoadConfi userLocale: (req as RequestWithLogin | undefined)?.user?.options?.locale, telemetry: server?.getTelemetry().getTelemetryConfig(req as RequestWithLogin | undefined), deploymentType: server?.getDeploymentType(), + forceEnableEnterprise: isAffirmative(process.env.GRIST_FORCE_ENABLE_ENTERPRISE), templateOrg: getTemplateOrg(), onboardingTutorialDocId: getOnboardingTutorialDocId(), canCloseAccount: isAffirmative(process.env.GRIST_ACCOUNT_CLOSE), diff --git a/stubs/app/client/ui/ActivationPage.ts b/stubs/app/client/ui/ActivationPage.ts index 99b90e57..cc65c547 100644 --- a/stubs/app/client/ui/ActivationPage.ts +++ b/stubs/app/client/ui/ActivationPage.ts @@ -5,3 +5,8 @@ import { export function getActivationPage(): IActivationPageCreator { return DefaultActivationPage; } + +export function showEnterpriseToggle() { + // To be changed by enterprise module + return false; +}