From cd96aefa43316e4899d334b5206f190c8248944d Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 14 Mar 2024 20:20:50 +0100 Subject: [PATCH 1/9] Update app-language-select.element.ts --- .../language/app-language-select/app-language-select.element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/language/app-language-select/app-language-select.element.ts b/src/Umbraco.Web.UI.Client/src/packages/language/app-language-select/app-language-select.element.ts index 6fcee8e0db..3aba86487d 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/language/app-language-select/app-language-select.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/language/app-language-select/app-language-select.element.ts @@ -97,7 +97,7 @@ export class UmbAppLanguageSelectElement extends UmbLitElement { `, )} From 8fac3db4abe49404241ed88d70190de692dede44 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 14 Mar 2024 21:16:15 +0100 Subject: [PATCH 2/9] render label based on current app language --- .../tree-item/document-tree-item.element.ts | 43 ++++++++++++++++--- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/tree-item/document-tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/tree-item/document-tree-item.element.ts index b192a7d34c..fd2f5dc4b0 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/tree-item/document-tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/tree-item/document-tree-item.element.ts @@ -1,10 +1,44 @@ -import type { UmbDocumentTreeItemModel } from '../types.js'; -import { css, html, nothing, customElement } from '@umbraco-cms/backoffice/external/lit'; +import type { UmbDocumentTreeItemModel, UmbDocumentTreeItemVariantModel } from '../types.js'; +import { css, html, nothing, customElement, state } from '@umbraco-cms/backoffice/external/lit'; +import type { UmbAppLanguageContext } from '@umbraco-cms/backoffice/language'; +import { UMB_APP_LANGUAGE_CONTEXT } from '@umbraco-cms/backoffice/language'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbTreeItemElementBase } from '@umbraco-cms/backoffice/tree'; @customElement('umb-document-tree-item') export class UmbDocumentTreeItemElement extends UmbTreeItemElementBase { + #appLanguageContext?: UmbAppLanguageContext; + + @state() + _currentCulture?: string; + + @state() + _defaultCulture?: string; + + @state() + _variant?: UmbDocumentTreeItemVariantModel; + + constructor() { + super(); + + this.consumeContext(UMB_APP_LANGUAGE_CONTEXT, (instance) => { + this.#appLanguageContext = instance; + this.#observeAppCulture(); + }); + } + + #observeAppCulture() { + this.observe(this.#appLanguageContext!.appLanguageCulture, (value) => { + this._currentCulture = value; + this._variant = this.item?.variants.find((x) => x.culture === value); + }); + } + + #getLabel() { + // TODO: get the name from the default language if the current culture is not available + return this._variant?.name ?? 'Untitled'; + } + // TODO: implement correct status symbol renderIconContainer() { return html` @@ -13,16 +47,15 @@ export class UmbDocumentTreeItemElement extends UmbTreeItemElementBase - ` + ` : nothing} `; } // TODO: lower opacity if item is not published - // TODO: get correct variant name renderLabel() { - return html`${this.item?.variants[0].name} `; + return html`${this.#getLabel()} `; } static styles = [ From 32db57f85718c66deccb5df5fbd5f8cd7b4f74b7 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 14 Mar 2024 22:05:08 +0100 Subject: [PATCH 3/9] add default language observable to language context --- .../global-contexts/app-language.context.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/language/global-contexts/app-language.context.ts b/src/Umbraco.Web.UI.Client/src/packages/language/global-contexts/app-language.context.ts index e45bc7f149..02773e67b5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/language/global-contexts/app-language.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/language/global-contexts/app-language.context.ts @@ -1,6 +1,6 @@ import { UmbLanguageCollectionRepository } from '../collection/index.js'; import type { UmbLanguageDetailModel } from '../types.js'; -import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbArrayState, UmbObjectState, createObservablePart } from '@umbraco-cms/backoffice/observable-api'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; @@ -8,11 +8,17 @@ import type { UmbApi } from '@umbraco-cms/backoffice/extension-api'; export class UmbAppLanguageContext extends UmbControllerBase implements UmbApi { #languageCollectionRepository: UmbLanguageCollectionRepository; - #languages: Array = []; + #languages = new UmbArrayState([], (x) => x.unique); + #appLanguage = new UmbObjectState(undefined); appLanguage = this.#appLanguage.asObservable(); + appLanguageCulture = this.#appLanguage.asObservablePart((x) => x?.unique); + appDefaultLanguage = createObservablePart(this.#languages.asObservable(), (languages) => + languages.find((language) => language.isDefault), + ); + getAppCulture() { return this.#appLanguage.getValue()?.unique; } @@ -25,7 +31,8 @@ export class UmbAppLanguageContext extends UmbControllerBase implements UmbApi { } setLanguage(unique: string) { - const language = this.#languages.find((x) => x.unique === unique); + const languages = this.#languages.getValue(); + const language = languages.find((x) => x.unique === unique); this.#appLanguage.update(language); } @@ -34,7 +41,7 @@ export class UmbAppLanguageContext extends UmbControllerBase implements UmbApi { // TODO: make this observable / update when languages are added/removed/updated if (data) { - this.#languages = data.items; + this.#languages.setValue(data.items); // If the app language is not set, set it to the default language if (!this.#appLanguage.getValue()) { @@ -44,7 +51,7 @@ export class UmbAppLanguageContext extends UmbControllerBase implements UmbApi { } #initAppLanguage() { - const defaultLanguage = this.#languages.find((x) => x.isDefault); + const defaultLanguage = this.#languages.getValue().find((x) => x.isDefault); // TODO: do we always have a default language? // do we always get the default language on the first request, or could it be on page 2? // in that case do we then need an endpoint to get the default language? From 9799728f149cfe54a80bf7b237f2f3aa8628b764 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Thu, 14 Mar 2024 22:05:52 +0100 Subject: [PATCH 4/9] add label fallback to default culture --- .../tree-item/document-tree-item.element.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/tree-item/document-tree-item.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/tree-item/document-tree-item.element.ts index fd2f5dc4b0..b1c5d99cba 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/tree-item/document-tree-item.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/tree/tree-item/document-tree-item.element.ts @@ -24,19 +24,30 @@ export class UmbDocumentTreeItemElement extends UmbTreeItemElementBase { this.#appLanguageContext = instance; this.#observeAppCulture(); + this.#observeDefaultCulture(); }); } #observeAppCulture() { this.observe(this.#appLanguageContext!.appLanguageCulture, (value) => { this._currentCulture = value; - this._variant = this.item?.variants.find((x) => x.culture === value); + this._variant = this.#getVariant(value); }); } + #observeDefaultCulture() { + this.observe(this.#appLanguageContext!.appDefaultLanguage, (value) => { + this._defaultCulture = value?.unique; + }); + } + + #getVariant(culture: string | undefined) { + return this.item?.variants.find((x) => x.culture === culture); + } + #getLabel() { - // TODO: get the name from the default language if the current culture is not available - return this._variant?.name ?? 'Untitled'; + const fallbackName = this.#getVariant(this._defaultCulture)?.name ?? this._item?.variants[0].name ?? 'Unknown'; + return this._variant?.name ?? `(${fallbackName})`; } // TODO: implement correct status symbol From 3c033bc1a4856b50d9c3fb426624ab241525a3e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 15 Mar 2024 08:11:05 +0100 Subject: [PATCH 5/9] fix member type editor --- .../media/media-types/workspace/manifests.ts | 4 +- .../workspace/media-type-workspace.context.ts | 35 +++-- .../member-type/workspace/manifests.ts | 2 +- .../member-type-workspace.context.ts | 136 +++++++++++------- 4 files changed, 106 insertions(+), 71 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/manifests.ts index a6b558b6db..8f173b1208 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/manifests.ts @@ -6,9 +6,11 @@ import type { import { UmbSaveWorkspaceAction } from '@umbraco-cms/backoffice/workspace'; +export const UMB_MEDIA_TYPE_WORKSPACE_ALIAS = 'Umb.Workspace.MediaType'; + const workspace: ManifestWorkspace = { type: 'workspace', - alias: 'Umb.Workspace.MediaType', + alias: UMB_MEDIA_TYPE_WORKSPACE_ALIAS, name: 'Media Type Workspace', js: () => import('./media-type-workspace.element.js'), meta: { diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts index b1cb0cf7bf..de8260850b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts @@ -5,7 +5,7 @@ import type { UmbSaveableWorkspaceContextInterface } from '@umbraco-cms/backoffi import { UmbEditableWorkspaceContextBase } from '@umbraco-cms/backoffice/workspace'; import { UmbContentTypeStructureManager } from '@umbraco-cms/backoffice/content-type'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { UmbBooleanState, UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; import type { UmbContentTypeCompositionModel, UmbContentTypeSortModel, @@ -46,9 +46,6 @@ export class UmbMediaTypeWorkspaceContext readonly structure = new UmbContentTypeStructureManager(this, this.repository); - #isSorting = new UmbBooleanState(undefined); - isSorting = this.#isSorting.asObservable(); - constructor(host: UmbControllerHost) { super(host, 'Umb.Workspace.MediaType'); @@ -66,17 +63,9 @@ export class UmbMediaTypeWorkspaceContext this.collection = this.structure.ownerContentTypeObservablePart((data) => data?.collection); } - protected resetState() { - this.#persistedData.setValue(undefined); + protected resetState(): void { super.resetState(); - } - - getIsSorting() { - return this.#isSorting.getValue(); - } - - setIsSorting(isSorting: boolean) { - this.#isSorting.setValue(isSorting); + this.#persistedData.setValue(undefined); } getData() { @@ -112,6 +101,18 @@ export class UmbMediaTypeWorkspaceContext this.structure.updateOwnerContentType({ allowedAtRoot }); } + setVariesByCulture(variesByCulture: boolean) { + this.structure.updateOwnerContentType({ variesByCulture }); + } + + setVariesBySegment(variesBySegment: boolean) { + this.structure.updateOwnerContentType({ variesBySegment }); + } + + setIsElement(isElement: boolean) { + this.structure.updateOwnerContentType({ isElement }); + } + setAllowedContentTypes(allowedContentTypes: Array) { this.structure.updateOwnerContentType({ allowedContentTypes }); } @@ -131,7 +132,6 @@ export class UmbMediaTypeWorkspaceContext if (!data) return undefined; this.setIsNew(true); - this.setIsSorting(false); this.#persistedData.setValue(data); return data; } @@ -142,19 +142,18 @@ export class UmbMediaTypeWorkspaceContext if (data) { this.setIsNew(false); - this.setIsSorting(false); this.#persistedData.update(data); } if (asObservable) { - this.observe(asObservable(), (entity) => this.#onStoreChange(entity), 'umbMediaTypeStoreObserver'); + this.observe(asObservable(), (entity) => this.#onStoreChange(entity), 'umbDocumentTypeStoreObserver'); } } #onStoreChange(entity: EntityType | undefined) { if (!entity) { //TODO: This solution is alright for now. But reconsider when we introduce signal-r - history.pushState(null, '', 'section/settings/workspace/media-type-root'); + history.pushState(null, '', 'section/settings/workspace/document-type-root'); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/manifests.ts index 215314effe..b0c69e73cf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/manifests.ts @@ -9,7 +9,7 @@ export const UMB_MEMBER_TYPE_WORKSPACE_ALIAS = 'Umb.Workspace.MemberType'; const workspace: ManifestWorkspace = { type: 'workspace', - alias: 'Umb.Workspace.MemberType', + alias: UMB_MEMBER_TYPE_WORKSPACE_ALIAS, name: 'Member Type Workspace', js: () => import('./member-type-workspace.element.js'), meta: { diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts index 6692b2d320..5d9037e9f8 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts @@ -1,24 +1,30 @@ import { UmbMemberTypeDetailRepository } from '../repository/detail/index.js'; import type { UmbMemberTypeDetailModel } from '../types.js'; +import { UMB_MEMBER_TYPE_ENTITY_TYPE } from '../index.js'; import { type UmbSaveableWorkspaceContextInterface, UmbEditableWorkspaceContextBase, } from '@umbraco-cms/backoffice/workspace'; import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; -import { UmbContentTypeStructureManager } from '@umbraco-cms/backoffice/content-type'; +import { + type UmbContentTypeCompositionModel, + type UmbContentTypeSortModel, + UmbContentTypeStructureManager, + type UmbContentTypeWorkspaceContext, +} from '@umbraco-cms/backoffice/content-type'; import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; import { UmbReloadTreeItemChildrenRequestEntityActionEvent } from '@umbraco-cms/backoffice/tree'; -import { UmbBooleanState, UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; +import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; import { UmbRequestReloadStructureForEntityEvent } from '@umbraco-cms/backoffice/event'; +import type { UmbReferenceByUnique } from '@umbraco-cms/backoffice/models'; type EntityType = UmbMemberTypeDetailModel; export class UmbMemberTypeWorkspaceContext extends UmbEditableWorkspaceContextBase - implements UmbSaveableWorkspaceContextInterface + implements UmbContentTypeWorkspaceContext { - #isSorting = new UmbBooleanState(undefined); - isSorting = this.#isSorting.asObservable(); + readonly IS_CONTENT_TYPE_WORKSPACE_CONTEXT = true; public readonly repository = new UmbMemberTypeDetailRepository(this); #parent?: { entityType: string; unique: string | null }; @@ -57,10 +63,6 @@ export class UmbMemberTypeWorkspaceContext this.compositions = this.structure.ownerContentTypeObservablePart((data) => data?.compositions); } - setIsSorting(isSorting: boolean) { - this.#isSorting.setValue(isSorting); - } - set(propertyName: PropertyName, value: EntityType[PropertyName]) { this.structure.updateOwnerContentType({ [propertyName]: value }); } @@ -68,29 +70,63 @@ export class UmbMemberTypeWorkspaceContext protected resetState(): void { super.resetState(); this.#persistedData.setValue(undefined); - this.#isSorting.setValue(false); } - async load(unique: string) { - this.resetState(); - const { data, asObservable } = await this.structure.loadType(unique); - - if (data) { - this.setIsNew(false); - this.setIsSorting(false); - this.#persistedData.update(data); - } - - if (asObservable) { - this.observe(asObservable(), (entity) => this.#onStoreChange(entity), 'umbMemberTypeStoreObserver'); - } + getData() { + return this.structure.getOwnerContentType(); } - #onStoreChange(entity: EntityType | undefined) { - if (!entity) { - //TODO: This solution is alright for now. But reconsider when we introduce signal-r - history.pushState(null, '', 'section/settings/workspace/member-type-root'); - } + getUnique() { + return this.getData()?.unique; + } + + getEntityType() { + return UMB_MEMBER_TYPE_ENTITY_TYPE; + } + + setName(name: string) { + this.structure.updateOwnerContentType({ name }); + } + + setAlias(alias: string) { + this.structure.updateOwnerContentType({ alias }); + } + + setDescription(description: string) { + this.structure.updateOwnerContentType({ description }); + } + + // TODO: manage setting icon color alias? + setIcon(icon: string) { + this.structure.updateOwnerContentType({ icon }); + } + + setAllowedAtRoot(allowedAtRoot: boolean) { + this.structure.updateOwnerContentType({ allowedAtRoot }); + } + + setVariesByCulture(variesByCulture: boolean) { + this.structure.updateOwnerContentType({ variesByCulture }); + } + + setVariesBySegment(variesBySegment: boolean) { + this.structure.updateOwnerContentType({ variesBySegment }); + } + + setIsElement(isElement: boolean) { + this.structure.updateOwnerContentType({ isElement }); + } + + setAllowedContentTypes(allowedContentTypes: Array) { + this.structure.updateOwnerContentType({ allowedContentTypes }); + } + + setCompositions(compositions: Array) { + this.structure.updateOwnerContentType({ compositions }); + } + + setCollection(collection: UmbReferenceByUnique) { + this.structure.updateOwnerContentType({ collection }); } async create(parent: { entityType: string; unique: string | null }) { @@ -100,11 +136,31 @@ export class UmbMemberTypeWorkspaceContext if (!data) return undefined; this.setIsNew(true); - this.setIsSorting(false); this.#persistedData.setValue(data); return data; } + async load(unique: string) { + this.resetState(); + const { data, asObservable } = await this.structure.loadType(unique); + + if (data) { + this.setIsNew(false); + this.#persistedData.update(data); + } + + if (asObservable) { + this.observe(asObservable(), (entity) => this.#onStoreChange(entity), 'umbDocumentTypeStoreObserver'); + } + } + + #onStoreChange(entity: EntityType | undefined) { + if (!entity) { + //TODO: This solution is alright for now. But reconsider when we introduce signal-r + history.pushState(null, '', 'section/settings/workspace/document-type-root'); + } + } + async save() { const data = this.getData(); if (data === undefined) throw new Error('Cannot save, no data'); @@ -140,28 +196,6 @@ export class UmbMemberTypeWorkspaceContext this.structure.destroy(); super.destroy(); } - - getData() { - return this.structure.getOwnerContentType(); - } - - getUnique() { - return this.getData()?.unique || ''; - } - - getEntityType() { - return 'member-type'; - } - - setName(name: string) { - this.structure.updateOwnerContentType({ name }); - } - setAlias(alias: string) { - this.structure.updateOwnerContentType({ alias }); - } - setDescription(description: string) { - this.structure.updateOwnerContentType({ description }); - } } export const UMB_MEMBER_TYPE_WORKSPACE_CONTEXT = new UmbContextToken< From 380bcb1a99f87d05f1bd01bd2cf6c43660fb6876 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 15 Mar 2024 08:19:01 +0100 Subject: [PATCH 6/9] destroy --- .../media/media-types/workspace/media-type-workspace.context.ts | 1 - .../member-type/workspace/member-type-workspace.context.ts | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts index de8260850b..8bd7c3e088 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts @@ -198,7 +198,6 @@ export class UmbMediaTypeWorkspaceContext public destroy(): void { this.#persistedData.destroy(); this.structure.destroy(); - this.#isSorting.destroy(); this.repository.destroy(); super.destroy(); } diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts index 5d9037e9f8..947e7994cb 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts @@ -193,7 +193,9 @@ export class UmbMemberTypeWorkspaceContext } public destroy(): void { + this.#persistedData.destroy(); this.structure.destroy(); + this.repository.destroy(); super.destroy(); } } From 6b9e1a75e2bb11395f84e1d844782d1c7d61b84e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 15 Mar 2024 08:22:25 +0100 Subject: [PATCH 7/9] revert change --- .../media-types/workspace/media-type-workspace.context.ts | 4 ++-- .../member-type/workspace/member-type-workspace.context.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts index 8bd7c3e088..4995d3f487 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/media/media-types/workspace/media-type-workspace.context.ts @@ -146,14 +146,14 @@ export class UmbMediaTypeWorkspaceContext } if (asObservable) { - this.observe(asObservable(), (entity) => this.#onStoreChange(entity), 'umbDocumentTypeStoreObserver'); + this.observe(asObservable(), (entity) => this.#onStoreChange(entity), 'umbMediaTypeStoreObserver'); } } #onStoreChange(entity: EntityType | undefined) { if (!entity) { //TODO: This solution is alright for now. But reconsider when we introduce signal-r - history.pushState(null, '', 'section/settings/workspace/document-type-root'); + history.pushState(null, '', 'section/settings/workspace/media-type-root'); } } diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts index 947e7994cb..f76db105d3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts @@ -150,14 +150,14 @@ export class UmbMemberTypeWorkspaceContext } if (asObservable) { - this.observe(asObservable(), (entity) => this.#onStoreChange(entity), 'umbDocumentTypeStoreObserver'); + this.observe(asObservable(), (entity) => this.#onStoreChange(entity), 'umbMemberTypeStoreObserver'); } } #onStoreChange(entity: EntityType | undefined) { if (!entity) { //TODO: This solution is alright for now. But reconsider when we introduce signal-r - history.pushState(null, '', 'section/settings/workspace/document-type-root'); + history.pushState(null, '', 'section/settings/workspace/member-type-root'); } } From fd0856982de6070785a9bf3bf84e8417e70c7ba4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 15 Mar 2024 08:26:37 +0100 Subject: [PATCH 8/9] clean up --- .../member-type-workspace.context.ts | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts index f76db105d3..01b77822f5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts @@ -101,34 +101,10 @@ export class UmbMemberTypeWorkspaceContext this.structure.updateOwnerContentType({ icon }); } - setAllowedAtRoot(allowedAtRoot: boolean) { - this.structure.updateOwnerContentType({ allowedAtRoot }); - } - - setVariesByCulture(variesByCulture: boolean) { - this.structure.updateOwnerContentType({ variesByCulture }); - } - - setVariesBySegment(variesBySegment: boolean) { - this.structure.updateOwnerContentType({ variesBySegment }); - } - - setIsElement(isElement: boolean) { - this.structure.updateOwnerContentType({ isElement }); - } - - setAllowedContentTypes(allowedContentTypes: Array) { - this.structure.updateOwnerContentType({ allowedContentTypes }); - } - setCompositions(compositions: Array) { this.structure.updateOwnerContentType({ compositions }); } - setCollection(collection: UmbReferenceByUnique) { - this.structure.updateOwnerContentType({ collection }); - } - async create(parent: { entityType: string; unique: string | null }) { this.resetState(); this.#parent = parent; From e331a548283e41f145103b1259cabeb56bf09b8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Fri, 15 Mar 2024 08:27:01 +0100 Subject: [PATCH 9/9] imports --- .../member-type/workspace/member-type-workspace.context.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts index 01b77822f5..3e40442744 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member-type/workspace/member-type-workspace.context.ts @@ -9,7 +9,6 @@ import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import { UmbContextToken } from '@umbraco-cms/backoffice/context-api'; import { type UmbContentTypeCompositionModel, - type UmbContentTypeSortModel, UmbContentTypeStructureManager, type UmbContentTypeWorkspaceContext, } from '@umbraco-cms/backoffice/content-type'; @@ -17,7 +16,6 @@ import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; import { UmbReloadTreeItemChildrenRequestEntityActionEvent } from '@umbraco-cms/backoffice/tree'; import { UmbObjectState } from '@umbraco-cms/backoffice/observable-api'; import { UmbRequestReloadStructureForEntityEvent } from '@umbraco-cms/backoffice/event'; -import type { UmbReferenceByUnique } from '@umbraco-cms/backoffice/models'; type EntityType = UmbMemberTypeDetailModel; export class UmbMemberTypeWorkspaceContext