diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx index 3af9f674ef..22d74729a9 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsForm.tsx @@ -61,6 +61,7 @@ export interface TemplateSettingsForm { // Helpful to show field errors on Storybook initialTouched?: FormikTouched; accessControlEnabled: boolean; + advancedSchedulingEnabled: boolean; portSharingExperimentEnabled: boolean; portSharingControlsEnabled: boolean; } @@ -73,6 +74,7 @@ export const TemplateSettingsForm: FC = ({ isSubmitting, initialTouched, accessControlEnabled, + advancedSchedulingEnabled, portSharingExperimentEnabled, portSharingControlsEnabled, }) => { @@ -195,39 +197,54 @@ export const TemplateSettingsForm: FC = ({ - + )} + @@ -241,7 +258,9 @@ export const TemplateSettingsForm: FC = ({ helperText: "Leave the message empty to keep the template active. Any message provided will mark the template as deprecated. Use this message to inform users of the deprecation and how to migrate to a new template.", })} - disabled={isSubmitting || !accessControlEnabled} + disabled={ + isSubmitting || (!template.deprecated && !accessControlEnabled) + } fullWidth label="Deprecation Message" /> @@ -250,6 +269,8 @@ export const TemplateSettingsForm: FC = ({ Enterprise license required to deprecate templates. + {template.deprecated && + " You cannot change the message, but you may remove it to mark this template as no longer deprecated."} )} diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx index 9000177e43..15e4c8fb21 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPage.tsx @@ -20,6 +20,8 @@ export const TemplateSettingsPage: FC = () => { const queryClient = useQueryClient(); const { entitlements, experiments } = useDashboard(); const accessControlEnabled = entitlements.features.access_control.enabled; + const advancedSchedulingEnabled = + entitlements.features.advanced_template_scheduling.enabled; const sharedPortsExperimentEnabled = experiments.includes("shared-ports"); const sharedPortControlsEnabled = entitlements.features.control_shared_ports.enabled; @@ -70,6 +72,7 @@ export const TemplateSettingsPage: FC = () => { }); }} accessControlEnabled={accessControlEnabled} + advancedSchedulingEnabled={advancedSchedulingEnabled} sharedPortsExperimentEnabled={sharedPortsExperimentEnabled} sharedPortControlsEnabled={sharedPortControlsEnabled} /> diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.stories.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.stories.tsx index d63dca49e2..1d63e8ade1 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.stories.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.stories.tsx @@ -8,6 +8,7 @@ const meta: Meta = { args: { template: MockTemplate, accessControlEnabled: true, + advancedSchedulingEnabled: true, }, }; @@ -36,5 +37,19 @@ export const SaveTemplateSettingsError: Story = { export const NoEntitlements: Story = { args: { accessControlEnabled: false, + advancedSchedulingEnabled: false, + }, +}; + +export const NoEntitlementsExpiredSettings: Story = { + args: { + template: { + ...MockTemplate, + deprecated: true, + deprecation_message: "This template tastes bad", + require_active_version: true, + }, + accessControlEnabled: false, + advancedSchedulingEnabled: false, }, }; diff --git a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.tsx b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.tsx index 40303abf17..01351f6869 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateGeneralSettingsPage/TemplateSettingsPageView.tsx @@ -13,6 +13,7 @@ export interface TemplateSettingsPageViewProps { typeof TemplateSettingsForm >["initialTouched"]; accessControlEnabled: boolean; + advancedSchedulingEnabled: boolean; sharedPortsExperimentEnabled: boolean; sharedPortControlsEnabled: boolean; } @@ -25,6 +26,7 @@ export const TemplateSettingsPageView: FC = ({ submitError, initialTouched, accessControlEnabled, + advancedSchedulingEnabled, sharedPortsExperimentEnabled, sharedPortControlsEnabled, }) => { @@ -42,6 +44,7 @@ export const TemplateSettingsPageView: FC = ({ onCancel={onCancel} error={submitError} accessControlEnabled={accessControlEnabled} + advancedSchedulingEnabled={advancedSchedulingEnabled} portSharingExperimentEnabled={sharedPortsExperimentEnabled} portSharingControlsEnabled={sharedPortControlsEnabled} />