rename "tracked references" to "references"

This commit is contained in:
Jacob Overgaard
2024-03-27 13:22:50 +01:00
parent cf819c1dcf
commit a6a61da8e2
18 changed files with 135 additions and 187 deletions

View File

@@ -1,7 +1,7 @@
import './components/index.js';
export * from './repository/index.js';
export * from './tracked-reference/index.js';
export * from './reference/index.js';
export * from './workspace/index.js';
export * from './recycle-bin/index.js';
export * from './user-permissions/index.js';

View File

@@ -6,7 +6,7 @@ import { manifests as menuManifests } from './menu/manifests.js';
import { manifests as propertyEditorManifests } from './property-editors/manifests.js';
import { manifests as recycleBinManifests } from './recycle-bin/manifests.js';
import { manifests as repositoryManifests } from './repository/manifests.js';
import { manifests as trackedReferenceManifests } from './tracked-reference/manifests.js';
import { manifests as trackedReferenceManifests } from './reference/manifests.js';
import { manifests as treeManifests } from './tree/manifests.js';
import { manifests as userPermissionManifests } from './user-permissions/manifests.js';
import { manifests as workspaceManifests } from './workspace/manifests.js';

View File

@@ -1,5 +1,5 @@
import { UmbDocumentVariantState, type UmbDocumentVariantOptionModel } from '../../types.js';
import { UmbDocumentTrackedReferenceRepository } from '../../tracked-reference/index.js';
import { UmbDocumentReferenceRepository } from '../../reference/index.js';
import { UMB_DOCUMENT_CONFIGURATION_CONTEXT } from '../../global-contexts/index.js';
import type {
UmbDocumentUnpublishModalData,
@@ -18,20 +18,20 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement<
UmbDocumentUnpublishModalValue
> {
#selectionManager = new UmbSelectionManager<string>(this);
#trackedReferencesRepository = new UmbDocumentTrackedReferenceRepository(this);
#referencesRepository = new UmbDocumentReferenceRepository(this);
@state()
_options: Array<UmbDocumentVariantOptionModel> = [];
@state()
_hasTrackedReferences = false;
_hasReferences = false;
@state()
_hasUnpublishPermission = true;
firstUpdated() {
this.#configureSelectionManager();
this.#getTrackedReferences();
this.#getReferences();
}
async #configureSelectionManager() {
@@ -56,14 +56,10 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement<
this.#selectionManager.setSelection(selected);
}
async #getTrackedReferences() {
async #getReferences() {
if (!this.data?.documentUnique) return;
const { data, error } = await this.#trackedReferencesRepository.requestTrackedReference(
this.data?.documentUnique,
0,
1,
);
const { data, error } = await this.#referencesRepository.requestReference(this.data?.documentUnique, 0, 1);
if (error) {
console.error(error);
@@ -72,10 +68,10 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement<
if (!data) return;
this._hasTrackedReferences = data.total > 0;
this._hasReferences = data.total > 0;
// If there are tracked references, we also want to check if we are allowed to unpublish the document:
if (this._hasTrackedReferences) {
// If there are references, we also want to check if we are allowed to unpublish the document:
if (this._hasReferences) {
const documentConfigurationContext = await this.getContext(UMB_DOCUMENT_CONFIGURATION_CONTEXT);
this._hasUnpublishPermission =
(await documentConfigurationContext.getDocumentConfiguration())?.disableUnpublishWhenReferenced === false;
@@ -115,13 +111,13 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement<
${this.data?.documentUnique
? html`
<umb-document-tracked-reference-table
id="tracked-references"
unique=${this.data?.documentUnique}></umb-document-tracked-reference-table>
<umb-document-reference-table
id="references"
unique=${this.data?.documentUnique}></umb-document-reference-table>
`
: nothing}
${this._hasTrackedReferences
? html`<uui-box id="tracked-references-warning">
${this._hasReferences
? html`<uui-box id="references-warning">
<umb-localize key="references_unpublishWarning">
This item or its descendants is being referenced. Unpublishing can lead to broken links on your website.
Please take the appropriate actions.
@@ -150,11 +146,11 @@ export class UmbDocumentUnpublishModalElement extends UmbModalBaseElement<
max-width: 90vw;
}
#tracked-references {
#references {
--uui-table-cell-padding: 0;
}
#tracked-references-warning {
#references-warning {
margin-top: 1rem;
background-color: var(--uui-color-danger);
color: var(--uui-color-danger-contrast);

View File

@@ -1,4 +1,4 @@
import { UmbDocumentTrackedReferenceRepository } from '../repository/index.js';
import { UmbDocumentReferenceRepository } from '../repository/index.js';
import { css, customElement, html, nothing, property, repeat, state } from '@umbraco-cms/backoffice/external/lit';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
@@ -9,9 +9,9 @@ import {
isDefaultReference,
} from '@umbraco-cms/backoffice/relations';
@customElement('umb-document-tracked-reference-table')
export class UmbDocumentTrackedReferenceTableElement extends UmbLitElement {
#documentTrackedReferenceRepository = new UmbDocumentTrackedReferenceRepository(this);
@customElement('umb-document-reference-table')
export class UmbDocumentReferenceTableElement extends UmbLitElement {
#documentReferenceRepository = new UmbDocumentReferenceRepository(this);
#pageSize = 10;
@property()
@@ -31,16 +31,12 @@ export class UmbDocumentTrackedReferenceTableElement extends UmbLitElement {
_errorMessage = '';
firstUpdated() {
this.#getTrackedReferences();
this.#getReferences();
}
async #getTrackedReferences() {
// Get the first 10 tracked references for the document:
const { data, error } = await this.#documentTrackedReferenceRepository.requestTrackedReference(
this.unique,
0,
this.#pageSize,
);
async #getReferences() {
// Get the first 10 references for the document:
const { data, error } = await this.#documentReferenceRepository.requestReference(this.unique, 0, this.#pageSize);
if (error) {
this._errorMessage = error.message;
@@ -142,6 +138,6 @@ export class UmbDocumentTrackedReferenceTableElement extends UmbLitElement {
declare global {
interface HTMLElementTagNameMap {
'umb-document-tracked-reference-table': UmbDocumentTrackedReferenceTableElement;
'umb-document-reference-table': UmbDocumentReferenceTableElement;
}
}

View File

@@ -0,0 +1,51 @@
import type { Meta, StoryObj } from '@storybook/web-components';
import type { UmbDocumentReferenceTableElement } from './document-reference-table.element.js';
import { html } from '@umbraco-cms/backoffice/external/lit';
import './document-reference-table.element.js';
const meta: Meta<UmbDocumentReferenceTableElement> = {
id: 'umb-document-reference-table',
title: 'Components/Document/Reference Table',
component: 'umb-document-reference-table',
args: {
unique: '1234',
},
parameters: {
actions: {
disabled: true,
},
docs: {
source: {
language: 'html',
code: `
<umb-document-reference-table unique="<Content GUID>"></umb-document-reference-table>
`,
},
},
},
};
export default meta;
type Story = StoryObj<UmbDocumentReferenceTableElement>;
export const Overview: Story = {};
export const SlimTable: Story = {
decorators: [
(story) => {
return html`<div style="--uui-table-cell-padding: 0;">${story()}</div>`;
},
],
parameters: {
docs: {
source: {
language: 'html',
code: `
<umb-document-reference-table unique="<Content GUID>" style="--uui-table-cell-padding:0"></umb-document-reference-table>
`,
},
},
},
};

View File

@@ -0,0 +1 @@
export * from './document-reference-table.element.js';

View File

@@ -0,0 +1,19 @@
import { UmbDocumentReferenceServerDataSource } from './document-reference.server.data.js';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
export class UmbDocumentReferenceRepository extends UmbControllerBase {
#referenceSource: UmbDocumentReferenceServerDataSource;
constructor(host: UmbControllerHost) {
super(host);
this.#referenceSource = new UmbDocumentReferenceServerDataSource(this);
}
async requestReference(unique: string, skip = 0, take = 20) {
if (!unique) throw new Error(`unique is required`);
return this.#referenceSource.getReferenceById(unique, skip, take);
}
}
export default UmbDocumentReferenceRepository;

View File

@@ -0,0 +1,31 @@
import { DocumentResource } from '@umbraco-cms/backoffice/external/backend-api';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';
/**
* @export
* @class UmbUserGroupCollectionServerDataSource
* @implements {RepositoryDetailDataSource}
*/
export class UmbDocumentReferenceServerDataSource {
#host: UmbControllerHost;
/**
* Creates an instance of UmbDocumentTrackedReferenceServerDataSource.
* @param {UmbControllerHost} host
* @memberof UmbDocumentTrackedReferenceServerDataSource
*/
constructor(host: UmbControllerHost) {
this.#host = host;
}
/**
* Fetches the item for the given id from the server
* @param {Array<string>} ids
* @return {*}
* @memberof UmbDataTypeItemServerDataSource
*/
async getReferenceById(id: string, skip = 0, take = 20) {
return await tryExecuteAndNotify(this.#host, DocumentResource.getDocumentByIdReferencedBy({ id, skip, take }));
}
}

View File

@@ -0,0 +1 @@
export * from './document-reference.repository.js';

View File

@@ -6,7 +6,7 @@ const repository: ManifestRepository = {
type: 'repository',
alias: UMB_DOCUMENT_TRACKED_REFERENCE_REPOSITORY_ALIAS,
name: 'Document Tracked Reference Repository',
api: () => import('./document-tracked-reference.repository.js'),
api: () => import('./document-reference.repository.js'),
};
export const manifests = [repository];

View File

@@ -1,51 +0,0 @@
import type { Meta, StoryObj } from '@storybook/web-components';
import type { UmbDocumentTrackedReferenceTableElement } from './document-tracked-reference-table.element.js';
import { html } from '@umbraco-cms/backoffice/external/lit';
import './document-tracked-reference-table.element.js';
const meta: Meta<UmbDocumentTrackedReferenceTableElement> = {
id: 'umb-document-tracked-reference-table',
title: 'Components/Document/Tracked Reference Table',
component: 'umb-document-tracked-reference-table',
args: {
unique: '1234',
},
parameters: {
actions: {
disabled: true,
},
docs: {
source: {
language: 'html',
code: `
<umb-document-tracked-reference-table unique="<Content GUID>"></umb-document-tracked-reference-table>
`,
},
},
},
};
export default meta;
type Story = StoryObj<UmbDocumentTrackedReferenceTableElement>;
export const Overview: Story = {};
export const SlimTable: Story = {
decorators: [
(story) => {
return html`<div style="--uui-table-cell-padding: 0;">${story()}</div>`;
},
],
parameters: {
docs: {
source: {
language: 'html',
code: `
<umb-document-tracked-reference-table unique="<Content GUID>" style="--uui-table-cell-padding:0"></umb-document-tracked-reference-table>
`,
},
},
},
};

View File

@@ -1 +0,0 @@
export * from './document-tracked-reference-table.element.js';

View File

@@ -1,29 +0,0 @@
import { UmbDocumentTrackedReferenceServerDataSource } from './document-tracked-reference.server.data.js';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
export class UmbDocumentTrackedReferenceRepository extends UmbControllerBase {
#trackedReferenceSource: UmbDocumentTrackedReferenceServerDataSource;
constructor(host: UmbControllerHost) {
super(host);
this.#trackedReferenceSource = new UmbDocumentTrackedReferenceServerDataSource(this);
}
async requestTrackedReference(unique: string, skip = 0, take = 20) {
if (!unique) throw new Error(`unique is required`);
return this.#trackedReferenceSource.getTrackedReferenceById(unique, skip, take);
}
async requestTrackedReferenceDescendantsFromParentUnique(parentUnique: string, skip = 0, take = 20) {
if (!parentUnique) throw new Error(`unique is required`);
return this.#trackedReferenceSource.getTrackedReferenceDescendantsByParentId(parentUnique, skip, take);
}
async requestTrackedReferenceItems(uniques: string[], skip = 0, take = 20) {
if (!uniques) throw new Error(`unique is required`);
return this.#trackedReferenceSource.getTrackedReferenceItem(uniques, skip, take);
}
}
export default UmbDocumentTrackedReferenceRepository;

View File

@@ -1,65 +0,0 @@
import { DocumentResource } from '@umbraco-cms/backoffice/external/backend-api';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';
/**
* @export
* @class UmbUserGroupCollectionServerDataSource
* @implements {RepositoryDetailDataSource}
*/
export class UmbDocumentTrackedReferenceServerDataSource {
#host: UmbControllerHost;
/**
* Creates an instance of UmbDocumentTrackedReferenceServerDataSource.
* @param {UmbControllerHost} host
* @memberof UmbDocumentTrackedReferenceServerDataSource
*/
constructor(host: UmbControllerHost) {
this.#host = host;
}
/**
* Fetches the item for the given id from the server
* @param {Array<string>} ids
* @return {*}
* @memberof UmbDataTypeItemServerDataSource
*/
async getTrackedReferenceById(id: string, skip = 0, take = 20) {
return await tryExecuteAndNotify(this.#host, DocumentResource.getDocumentByIdReferencedBy({ id, skip, take }));
}
/**
* Fetches the item descendant for the given id from the server
* @param {Array<string>} ids
* @return {*}
* @memberof UmbDocumentTrackedReferenceServerDataSource
*/
async getTrackedReferenceDescendantsByParentId(parentId: string, skip = 0, take = 20) {
return await tryExecuteAndNotify(
this.#host,
DocumentResource.getDocumentByIdReferencedDescendants({
id: parentId,
skip,
take,
}),
);
}
/**
* Fetches the items for the given ids from the server
* @param {Array<string>} ids
* @return {*}
* @memberof UmbDocumentTrackedReferenceServerDataSource
*/
async getTrackedReferenceItem(id: string[], skip = 0, take = 20) {
return await tryExecuteAndNotify(
this.#host,
DocumentResource.getDocumentAreReferenced({
id,
skip,
take,
}),
);
}
}

View File

@@ -1 +0,0 @@
export * from './document-tracked-reference.repository.js';

View File

@@ -1,4 +1,4 @@
import { UmbDocumentTrackedReferenceRepository } from '../../../tracked-reference/index.js';
import { UmbDocumentReferenceRepository } from '../../../reference/index.js';
import { css, html, customElement, state, nothing, repeat, property } from '@umbraco-cms/backoffice/external/lit';
import type { UUIPaginationEvent } from '@umbraco-cms/backoffice/external/uui';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
@@ -14,7 +14,7 @@ import {
@customElement('umb-document-workspace-view-info-reference')
export class UmbDocumentWorkspaceViewInfoReferenceElement extends UmbLitElement {
#itemsPerPage = 10;
#trackedReferenceRepository;
#referenceRepository;
@property()
documentUnique = '';
@@ -33,7 +33,7 @@ export class UmbDocumentWorkspaceViewInfoReferenceElement extends UmbLitElement
constructor() {
super();
this.#trackedReferenceRepository = new UmbDocumentTrackedReferenceRepository(this);
this.#referenceRepository = new UmbDocumentReferenceRepository(this);
new UmbModalRouteRegistrationController(this, UMB_WORKSPACE_MODAL)
.addAdditionalPath('document')
@@ -50,7 +50,7 @@ export class UmbDocumentWorkspaceViewInfoReferenceElement extends UmbLitElement
}
async #getReferences() {
const { data } = await this.#trackedReferenceRepository.requestTrackedReference(
const { data } = await this.#referenceRepository.requestReference(
this.documentUnique,
(this._currentPage - 1) * this.#itemsPerPage,
this.#itemsPerPage,