Introduce Section Alias condition const (#19633)

* Refactor section conditions into subfolders

Split section condition logic into 'section-alias' and 'section-user-permission' subfolders, each with their own constants, manifests, and types. Updated imports and manifest aggregation to use the new structure for improved modularity and maintainability.

* use const

* fix build

* Refactor section alias condition to use constant

Replaces hardcoded 'Umb.Condition.SectionAlias' strings with the UMB_SECTION_ALIAS_CONDITION_ALIAS constant across all manifests and related files. This improves maintainability and consistency by centralizing the section alias condition reference.
This commit is contained in:
Mads Rasmussen
2025-06-30 13:24:00 +02:00
committed by GitHub
parent 14063a0b89
commit 49b95c1225
37 changed files with 136 additions and 89 deletions

View File

@@ -114,7 +114,7 @@ To declare the Published Cache Status Dashboard as a new manifest, we need to ad
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: 'Umb.Section.Settings',
},
],

View File

@@ -1 +0,0 @@
export { UMB_LANGUAGE_TABLE_COLLECTION_VIEW_ALIAS } from './manifests.js';

View File

@@ -1 +0,0 @@
export { UMB_LANGUAGE_TABLE_COLLECTION_VIEW_ALIAS } from './manifests.js';

View File

@@ -1,4 +1,5 @@
import type { ManifestDashboard } from '@umbraco-cms/backoffice/dashboard';
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
const dashboard: ManifestDashboard = {
type: 'dashboard',
@@ -12,7 +13,7 @@ const dashboard: ManifestDashboard = {
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: 'Umb.Section.Content',
},
],

View File

@@ -1 +1,2 @@
export const UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS = 'Umb.Condition.SectionUserPermission';
export * from './section-alias/constants.js';
export * from './section-user-permission/constants.js';

View File

@@ -1,18 +1,4 @@
import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from './constants.js';
import { UmbSectionAliasCondition } from './section-alias.condition.js';
import { UmbSectionUserPermissionCondition } from './section-user-permission.condition.js';
import { manifests as sectionAliasManifests } from './section-alias/manifests.js';
import { manifests as sectionUserPermissionManifests } from './section-user-permission/manifests.js';
export const manifests: Array<UmbExtensionManifest> = [
{
type: 'condition',
name: 'Section User Permission Condition',
alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
api: UmbSectionUserPermissionCondition,
},
{
type: 'condition',
name: 'Section Alias Condition',
alias: 'Umb.Condition.SectionAlias',
api: UmbSectionAliasCondition,
},
];
export const manifests: Array<UmbExtensionManifest> = [...sectionAliasManifests, ...sectionUserPermissionManifests];

View File

@@ -0,0 +1 @@
export const UMB_SECTION_ALIAS_CONDITION_ALIAS = 'Umb.Condition.SectionAlias';

View File

@@ -0,0 +1,11 @@
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from './constants.js';
import { UmbSectionAliasCondition } from './section-alias.condition.js';
export const manifests: Array<UmbExtensionManifest> = [
{
type: 'condition',
name: 'Section Alias Condition',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
api: UmbSectionAliasCondition,
},
];

View File

@@ -1,6 +1,6 @@
import { UmbConditionBase } from '../../extension-registry/conditions/condition-base.controller.js';
import { UMB_SECTION_CONTEXT } from '../section.context.js';
import type { SectionAliasConditionConfig } from './types.js';
import { UmbConditionBase } from '../../../extension-registry/conditions/condition-base.controller.js';
import { UMB_SECTION_CONTEXT } from '../../section.context.js';
import type { SectionAliasConditionConfig } from '../types.js';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import type { UmbConditionControllerArguments, UmbExtensionCondition } from '@umbraco-cms/backoffice/extension-api';

View File

@@ -0,0 +1,22 @@
import type { UMB_SECTION_ALIAS_CONDITION_ALIAS } from './constants.js';
import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api';
export type SectionAliasConditionConfig = UmbConditionConfigBase<typeof UMB_SECTION_ALIAS_CONDITION_ALIAS> & {
/**
* Define the section that this extension should be available in
* @example "Umb.Section.Content"
*/
match: string;
/**
* Define one or more workspaces that this extension should be available in
* @example
* ["Umb.Section.Content", "Umb.Section.Media"]
*/
oneOf?: Array<string>;
};
declare global {
interface UmbExtensionConditionConfigMap {
UmbSectionAliasConditionConfig: SectionAliasConditionConfig;
}
}

View File

@@ -0,0 +1 @@
export const UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS = 'Umb.Condition.SectionUserPermission';

View File

@@ -0,0 +1,11 @@
import { UmbSectionUserPermissionCondition } from './section-user-permission.condition.js';
import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from './constants.js';
export const manifests: Array<UmbExtensionManifest> = [
{
type: 'condition',
name: 'Section User Permission Condition',
alias: UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
api: UmbSectionUserPermissionCondition,
},
];

View File

@@ -3,8 +3,8 @@ import { UmbNotificationContext } from '@umbraco-cms/backoffice/notification';
import { UmbControllerHostElementMixin } from '@umbraco-cms/backoffice/controller-api';
import { customElement } from '@umbraco-cms/backoffice/external/lit';
import { UmbCurrentUserContext, UmbCurrentUserStore } from '@umbraco-cms/backoffice/current-user';
import { UmbSectionUserPermissionCondition } from './section-user-permission.condition';
import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from './constants.js';
import { UmbSectionUserPermissionCondition } from './section-user-permission.condition.js';
import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '../constants.js';
@customElement('test-controller-host')
class UmbTestControllerHostElement extends UmbControllerHostElementMixin(HTMLElement) {

View File

@@ -1,4 +1,4 @@
import type { UmbSectionUserPermissionConditionConfig } from './types.js';
import type { UmbSectionUserPermissionConditionConfig } from '../types.js';
import { UMB_CURRENT_USER_CONTEXT } from '@umbraco-cms/backoffice/current-user';
import type { UmbConditionControllerArguments, UmbExtensionCondition } from '@umbraco-cms/backoffice/extension-api';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';

View File

@@ -0,0 +1,20 @@
import type { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from './constants.js';
import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api';
export type UmbSectionUserPermissionConditionConfig = UmbConditionConfigBase<
typeof UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS
> & {
/**
*
*
* @example
* "Umb.Section.Content"
*/
match: string;
};
declare global {
interface UmbExtensionConditionConfigMap {
UmbSectionUserPermissionConditionConfig: UmbSectionUserPermissionConditionConfig;
}
}

View File

@@ -1,35 +1,2 @@
import type { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from './constants.js';
import type { UmbConditionConfigBase } from '@umbraco-cms/backoffice/extension-api';
export type UmbSectionUserPermissionConditionConfig = UmbConditionConfigBase<
typeof UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS
> & {
/**
*
*
* @example
* "Umb.Section.Content"
*/
match: string;
};
export type SectionAliasConditionConfig = UmbConditionConfigBase<'Umb.Condition.SectionAlias'> & {
/**
* Define the section that this extension should be available in
* @example "Umb.Section.Content"
*/
match: string;
/**
* Define one or more workspaces that this extension should be available in
* @example
* ["Umb.Section.Content", "Umb.Section.Media"]
*/
oneOf?: Array<string>;
};
declare global {
interface UmbExtensionConditionConfigMap {
UmbSectionUserPermissionConditionConfig: UmbSectionUserPermissionConditionConfig;
UmbSectionAliasConditionConfig: SectionAliasConditionConfig;
}
}
export type * from './section-alias/types.js';
export type * from './section-user-permission/types.js';

View File

@@ -1,3 +1,4 @@
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
import { UMB_TRANSLATION_SECTION_ALIAS } from '@umbraco-cms/backoffice/translation';
export const manifests: Array<UmbExtensionManifest> = [
@@ -12,7 +13,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_TRANSLATION_SECTION_ALIAS,
},
],

View File

@@ -1,4 +1,5 @@
import { UMB_CONTENT_SECTION_ALIAS } from '@umbraco-cms/backoffice/content';
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
export const manifests: Array<UmbExtensionManifest> = [
{
@@ -13,7 +14,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_CONTENT_SECTION_ALIAS,
},
],

View File

@@ -1,6 +1,9 @@
import { UMB_CONTENT_SECTION_ALIAS } from '@umbraco-cms/backoffice/content';
import { UMB_DOCUMENT_ROOT_ENTITY_TYPE, UMB_CONTENT_MENU_ALIAS } from '@umbraco-cms/backoffice/document';
import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
import {
UMB_SECTION_ALIAS_CONDITION_ALIAS,
UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
} from '@umbraco-cms/backoffice/section';
export const manifests: Array<UmbExtensionManifest> = [
{
@@ -32,7 +35,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_CONTENT_SECTION_ALIAS,
},
],

View File

@@ -1,3 +1,4 @@
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings';
export const manifests: Array<UmbExtensionManifest> = [
@@ -14,7 +15,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_SETTINGS_SECTION_ALIAS,
},
],

View File

@@ -1,4 +1,5 @@
import { UMB_CONTENT_SECTION_ALIAS } from '@umbraco-cms/backoffice/content';
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
export const manifests: Array<UmbExtensionManifest> = [
{
type: 'sectionSidebarApp',
@@ -8,7 +9,7 @@ export const manifests: Array<UmbExtensionManifest> = [
weight: 900,
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_CONTENT_SECTION_ALIAS,
},
{

View File

@@ -1,5 +1,8 @@
import { UMB_MEDIA_ROOT_ENTITY_TYPE, UMB_MEDIA_MENU_ALIAS } from '../media/index.js';
import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
import {
UMB_SECTION_ALIAS_CONDITION_ALIAS,
UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
} from '@umbraco-cms/backoffice/section';
const sectionAlias = 'Umb.Section.Media';
@@ -33,7 +36,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: sectionAlias,
},
],

View File

@@ -1,3 +1,5 @@
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
export const manifests: Array<UmbExtensionManifest> = [
{
type: 'dashboard',
@@ -11,7 +13,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: 'Umb.Section.Media',
},
],

View File

@@ -1,5 +1,6 @@
import { UMB_MEMBER_MANAGEMENT_SECTION_ALIAS } from '../constants.js';
import { UMB_MEMBER_MANAGEMENT_MENU_ALIAS } from '../menu/index.js';
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
export const manifests: Array<UmbExtensionManifest> = [
{
@@ -14,7 +15,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_MEMBER_MANAGEMENT_SECTION_ALIAS,
},
],

View File

@@ -1,3 +1,4 @@
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings';
export const manifests: Array<UmbExtensionManifest> = [
@@ -13,7 +14,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_SETTINGS_SECTION_ALIAS,
},
],

View File

@@ -1,4 +1,7 @@
import { UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
import {
UMB_SECTION_ALIAS_CONDITION_ALIAS,
UMB_SECTION_USER_PERMISSION_CONDITION_ALIAS,
} from '@umbraco-cms/backoffice/section';
const sectionAlias = 'Umb.Section.Packages';
@@ -32,7 +35,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: sectionAlias,
},
],
@@ -50,7 +53,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: sectionAlias,
},
],
@@ -68,7 +71,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: sectionAlias,
},
],

View File

@@ -1,3 +1,4 @@
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings';
export const manifests = [
@@ -13,7 +14,7 @@ export const manifests = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_SETTINGS_SECTION_ALIAS,
},
],

View File

@@ -1,3 +1,4 @@
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings';
export const manifests = [
@@ -13,7 +14,7 @@ export const manifests = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_SETTINGS_SECTION_ALIAS,
},
],

View File

@@ -1,4 +1,5 @@
import { manifests as examineManifests } from './examine-management-dashboard/manifests.js';
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings';
export const manifests: Array<UmbExtensionManifest> = [
@@ -32,7 +33,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_SETTINGS_SECTION_ALIAS,
},
],

View File

@@ -1,5 +1,6 @@
import { UMB_SETTINGS_SECTION_ALIAS } from '../constants.js';
import { UMB_ADVANCED_SETTINGS_MENU_ALIAS } from './constants.js';
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
export const manifests = [
{
@@ -19,7 +20,7 @@ export const manifests = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_SETTINGS_SECTION_ALIAS,
},
],

View File

@@ -1,5 +1,6 @@
import { UMB_SETTINGS_SECTION_ALIAS } from '../constants.js';
import { UMB_STRUCTURE_SETTINGS_MENU_ALIAS } from './constants.js';
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
export const manifests: Array<UmbExtensionManifest | UmbExtensionManifestKind> = [
@@ -20,7 +21,7 @@ export const manifests: Array<UmbExtensionManifest | UmbExtensionManifestKind> =
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_SETTINGS_SECTION_ALIAS,
},
],

View File

@@ -1,4 +1,5 @@
import { UMB_SETTINGS_SECTION_ALIAS } from '../constants.js';
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
import type { UmbExtensionManifestKind } from '@umbraco-cms/backoffice/extension-registry';
export const manifests: Array<UmbExtensionManifest | UmbExtensionManifestKind> = [
@@ -14,7 +15,7 @@ export const manifests: Array<UmbExtensionManifest | UmbExtensionManifestKind> =
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_SETTINGS_SECTION_ALIAS,
},
],

View File

@@ -1,3 +1,4 @@
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings';
export const manifests = [
@@ -13,7 +14,7 @@ export const manifests = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_SETTINGS_SECTION_ALIAS,
},
],

View File

@@ -1,3 +1,4 @@
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
import { UMB_SETTINGS_SECTION_ALIAS } from '@umbraco-cms/backoffice/settings';
export const manifests: Array<UmbExtensionManifest> = [
@@ -18,7 +19,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_SETTINGS_SECTION_ALIAS,
},
],

View File

@@ -1,3 +1,4 @@
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
import { UMB_TRANSLATION_SECTION_ALIAS } from '../section/index.js';
import { UMB_TRANSLATION_MENU_ALIAS } from './constants.js';
@@ -20,7 +21,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_TRANSLATION_SECTION_ALIAS,
},
],

View File

@@ -1,5 +1,6 @@
import type { ManifestDashboard } from '@umbraco-cms/backoffice/dashboard';
import { UMB_CONTENT_SECTION_ALIAS } from '@umbraco-cms/backoffice/content';
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
export const dashboard: ManifestDashboard = {
type: 'dashboard',
@@ -12,7 +13,7 @@ export const dashboard: ManifestDashboard = {
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_CONTENT_SECTION_ALIAS,
},
],

View File

@@ -1,5 +1,6 @@
import { UMB_USER_MANAGEMENT_SECTION_ALIAS } from '../constants.js';
import { UMB_USER_MANAGEMENT_MENU_ALIAS } from '../menu/index.js';
import { UMB_SECTION_ALIAS_CONDITION_ALIAS } from '@umbraco-cms/backoffice/section';
export const manifests: Array<UmbExtensionManifest> = [
{
@@ -14,7 +15,7 @@ export const manifests: Array<UmbExtensionManifest> = [
},
conditions: [
{
alias: 'Umb.Condition.SectionAlias',
alias: UMB_SECTION_ALIAS_CONDITION_ALIAS,
match: UMB_USER_MANAGEMENT_SECTION_ALIAS,
},
],