From f33d0b120d0dd00069f496f95ca9eb77e79181f5 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 15 Mar 2024 09:36:04 +0100 Subject: [PATCH] add warning box if the unpublish modal encounters tracked references --- .../document-unpublish-modal.element.ts | 43 ++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/unpublish-modal/document-unpublish-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/unpublish-modal/document-unpublish-modal.element.ts index 5a36878c81..b82d830ac4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/unpublish-modal/document-unpublish-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/unpublish-modal/document-unpublish-modal.element.ts @@ -1,4 +1,5 @@ import { UmbDocumentVariantState, type UmbDocumentVariantOptionModel } from '../../types.js'; +import { UmbDocumentTrackedReferenceRepository } from '../../tracked-reference/index.js'; import type { UmbDocumentUnpublishModalData, UmbDocumentUnpublishModalValue, @@ -16,12 +17,17 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement< UmbDocumentUnpublishModalValue > { #selectionManager = new UmbSelectionManager(this); + #trackedReferencesRepository = new UmbDocumentTrackedReferenceRepository(this); @state() _options: Array = []; + @state() + _hasTrackedReferences = false; + firstUpdated() { this.#configureSelectionManager(); + this.#getTrackedReferences(); } async #configureSelectionManager() { @@ -46,6 +52,25 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement< this.#selectionManager.setSelection(selected); } + async #getTrackedReferences() { + if (!this.data?.documentUnique) return; + + const { data, error } = await this.#trackedReferencesRepository.requestTrackedReference( + this.data?.documentUnique, + 0, + 1, + ); + + if (error) { + console.error(error); + return; + } + + if (!data) return; + + this._hasTrackedReferences = data.total > 0; + } + #submit() { this.value = { selection: this.#selectionManager.getSelection() }; this.modalContext?.submit(); @@ -76,10 +101,18 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement< ${this.data?.documentUnique ? html` ` : nothing} + ${this._hasTrackedReferences + ? html` + + This item or its descendants is being referenced. Unpublishing can lead to broken links on your website. + Please take the appropriate actions. + + ` + : nothing}
@@ -101,9 +134,15 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement< max-width: 90vw; } - #trackedReferences { + #tracked-references { --uui-table-cell-padding: 0; } + + #tracked-references-warning { + margin-top: 1rem; + background-color: var(--uui-color-danger); + color: var(--uui-color-danger-contrast); + } `, ]; }