multiple-app-languages-condition
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
import type { ManifestTypes } from '../models/index.js';
|
||||
import { manifest as menuAliasConditionManifest } from './menu-alias.condition.js';
|
||||
import { manifest as multipleAppLanguagesConditionManifest } from './multiple-app-languages.condition.js';
|
||||
import { manifest as sectionAliasConditionManifest } from './section-alias.condition.js';
|
||||
import { manifest as switchConditionManifest } from './switch.condition.js';
|
||||
|
||||
export const manifests: Array<ManifestTypes> = [
|
||||
menuAliasConditionManifest,
|
||||
multipleAppLanguagesConditionManifest,
|
||||
sectionAliasConditionManifest,
|
||||
switchConditionManifest,
|
||||
];
|
||||
|
||||
@@ -17,9 +17,13 @@ export class UmbMenuAliasCondition extends UmbConditionBase<MenuAliasConditionCo
|
||||
super(host, args);
|
||||
|
||||
this.consumeContext(UMB_MENU_CONTEXT, (context) => {
|
||||
this.observe(context.alias, (MenuAlias) => {
|
||||
this.permitted = MenuAlias === this.config.match;
|
||||
});
|
||||
this.observe(
|
||||
context.alias,
|
||||
(MenuAlias) => {
|
||||
this.permitted = MenuAlias === this.config.match;
|
||||
},
|
||||
'observeAlias',
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
import { UmbConditionBase } from './condition-base.controller.js';
|
||||
import { UMB_APP_LANGUAGE_CONTEXT } from '@umbraco-cms/backoffice/language';
|
||||
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
|
||||
import type {
|
||||
ManifestCondition,
|
||||
UmbConditionConfigBase,
|
||||
UmbConditionControllerArguments,
|
||||
UmbExtensionCondition,
|
||||
} from '@umbraco-cms/backoffice/extension-api';
|
||||
|
||||
export type UmbMultipleAppLanguageConditionConfig = UmbConditionConfigBase;
|
||||
|
||||
export class UmbMultipleAppLanguageCondition
|
||||
extends UmbConditionBase<UmbMultipleAppLanguageConditionConfig>
|
||||
implements UmbExtensionCondition
|
||||
{
|
||||
constructor(host: UmbControllerHost, args: UmbConditionControllerArguments<UmbMultipleAppLanguageConditionConfig>) {
|
||||
super(host, args);
|
||||
|
||||
this.consumeContext(UMB_APP_LANGUAGE_CONTEXT, (context) => {
|
||||
this.observe(
|
||||
context.moreThanOneLanguage,
|
||||
(moreThanOneLanguage) => {
|
||||
this.permitted = moreThanOneLanguage;
|
||||
},
|
||||
'observeLanguages',
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export const manifest: ManifestCondition = {
|
||||
type: 'condition',
|
||||
name: 'Multiple App Languages Condition',
|
||||
alias: 'Umb.Condition.MultipleAppLanguages',
|
||||
api: UmbMultipleAppLanguageCondition,
|
||||
};
|
||||
@@ -24,9 +24,13 @@ export class UmbSectionAliasCondition
|
||||
|
||||
if (permissionCheck !== undefined) {
|
||||
this.consumeContext(UMB_SECTION_CONTEXT, (context) => {
|
||||
this.observe(context.alias, (sectionAlias) => {
|
||||
this.permitted = sectionAlias ? permissionCheck!(sectionAlias) : false;
|
||||
});
|
||||
this.observe(
|
||||
context.alias,
|
||||
(sectionAlias) => {
|
||||
this.permitted = sectionAlias ? permissionCheck!(sectionAlias) : false;
|
||||
},
|
||||
'observeAlias',
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import type { CollectionBulkActionPermissionConditionConfig } from '../../collec
|
||||
import type { UmbSectionUserPermissionConditionConfig } from '../../section/conditions/index.js';
|
||||
import type { SectionAliasConditionConfig } from './section-alias.condition.js';
|
||||
import type { SwitchConditionConfig } from './switch.condition.js';
|
||||
import type { UmbMultipleAppLanguageConditionConfig } from './multiple-app-languages.condition.js';
|
||||
import type {
|
||||
WorkspaceAliasConditionConfig,
|
||||
WorkspaceEntityTypeConditionConfig,
|
||||
@@ -29,8 +30,9 @@ export type ConditionTypes =
|
||||
| CollectionBulkActionPermissionConditionConfig
|
||||
| SectionAliasConditionConfig
|
||||
| SwitchConditionConfig
|
||||
| UmbConditionConfigBase
|
||||
| UmbDocumentUserPermissionConditionConfig
|
||||
| UmbMultipleAppLanguageConditionConfig
|
||||
| UmbSectionUserPermissionConditionConfig
|
||||
| WorkspaceAliasConditionConfig
|
||||
| WorkspaceEntityTypeConditionConfig
|
||||
| UmbConditionConfigBase;
|
||||
| WorkspaceEntityTypeConditionConfig;
|
||||
|
||||
@@ -12,6 +12,9 @@ const entityActions: Array<ManifestSectionSidebarApp> = [
|
||||
alias: 'Umb.Condition.SectionAlias',
|
||||
match: 'Umb.Section.Content',
|
||||
},
|
||||
{
|
||||
alias: 'Umb.Condition.MultipleAppLanguages',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
@@ -12,6 +12,7 @@ import { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth';
|
||||
export class UmbAppLanguageContext extends UmbContextBase<UmbAppLanguageContext> implements UmbApi {
|
||||
#languageCollectionRepository: UmbLanguageCollectionRepository;
|
||||
#languages = new UmbArrayState<UmbLanguageDetailModel>([], (x) => x.unique);
|
||||
moreThanOneLanguage = this.#languages.asObservablePart((x) => x.length > 1);
|
||||
|
||||
#appLanguage = new UmbObjectState<UmbLanguageDetailModel | undefined>(undefined);
|
||||
appLanguage = this.#appLanguage.asObservable();
|
||||
|
||||
Reference in New Issue
Block a user