diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-links.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-links.element.ts index 983a30607f..6bb1ebf9e5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-links.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info-links.element.ts @@ -10,6 +10,7 @@ import { UMB_ACTION_EVENT_CONTEXT } from '@umbraco-cms/backoffice/action'; import { observeMultiple } from '@umbraco-cms/backoffice/observable-api'; import { DocumentVariantStateModel } from '@umbraco-cms/backoffice/external/backend-api'; import { debounce } from '@umbraco-cms/backoffice/utils'; +import { UMB_APP_LANGUAGE_CONTEXT } from '@umbraco-cms/backoffice/language'; interface UmbDocumentInfoViewLink { culture: string; @@ -36,6 +37,9 @@ export class UmbDocumentWorkspaceViewInfoLinksElement extends UmbLitElement { @state() private _links: Array = []; + @state() + private _defaultCulture?: string; + #urls: Array = []; #documentWorkspaceContext?: typeof UMB_DOCUMENT_WORKSPACE_CONTEXT.TYPE; @@ -75,17 +79,19 @@ export class UmbDocumentWorkspaceViewInfoLinksElement extends UmbLitElement { this.#setLinks(); }); }); + + this.consumeContext(UMB_APP_LANGUAGE_CONTEXT, (instance) => { + this.observe(instance.appDefaultLanguage, (value) => { + this._defaultCulture = value?.unique; + this.#setLinks(); + }); + }); } #setLinks() { - const possibleVariantCultures = this._variantOptions?.map((variantOption) => variantOption.culture) ?? []; - const possibleUrlCultures = this.#urls.map((link) => link.culture); - const possibleCultures = [...new Set([...possibleVariantCultures, ...possibleUrlCultures])].filter( - Boolean, - ) as string[]; - - const links: Array = possibleCultures.map((culture) => { - const url = this.#urls.find((link) => link.culture === culture)?.url; + const links: Array = this.#urls.map((u) => { + const culture = u.culture ?? this._defaultCulture ?? ""; + const url = u.url; const state = this._variantOptions?.find((variantOption) => variantOption.culture === culture)?.variant?.state; return { culture, url, state }; }); @@ -93,6 +99,18 @@ export class UmbDocumentWorkspaceViewInfoLinksElement extends UmbLitElement { this._links = links; } + #getTargetUrl (url: string | undefined) { + if (!url || url.length === 0) { + return url; + } + + if (url.includes(".") && !url.includes("//")) { + return "//" + url; + } + + return url; + } + async #requestUrls() { if (this._isNew) return; if (!this._unique) return; @@ -181,7 +199,7 @@ export class UmbDocumentWorkspaceViewInfoLinksElement extends UmbLitElement { } return html` - + ${this.#renderLinkCulture(link.culture)} ${link.url}