Skip to content
This repository was archived by the owner on Nov 6, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
92b6721
init
JesmoDev Apr 3, 2024
96ddb80
Merge remote-tracking branch 'origin/main' into feature/rollback
JesmoDev Apr 3, 2024
f780c9d
Merge remote-tracking branch 'origin/main' into feature/rollback
JesmoDev Apr 3, 2024
a3ef0b5
add repo
JesmoDev Apr 3, 2024
b5d0d75
load data
JesmoDev Apr 3, 2024
6459645
add actions
JesmoDev Apr 3, 2024
3dd0228
add rollback
JesmoDev Apr 4, 2024
9bcc8c8
get user name
JesmoDev Apr 4, 2024
94e33ac
prevent cleanup
JesmoDev Apr 4, 2024
abeb1aa
cleanup
JesmoDev Apr 4, 2024
19e0bca
cleanup
JesmoDev Apr 4, 2024
36b3c0e
correct name
JesmoDev Apr 4, 2024
a73ede9
get id and culture
JesmoDev Apr 4, 2024
f0d6f50
multiple variants
JesmoDev Apr 4, 2024
0cb6089
variant select
JesmoDev Apr 4, 2024
805855f
correct date format
JesmoDev Apr 4, 2024
bc85554
get real languages
JesmoDev Apr 4, 2024
bb857a1
add diff
JesmoDev Apr 8, 2024
25838b2
styling
JesmoDev Apr 8, 2024
a0dca3f
reload workspace
JesmoDev Apr 8, 2024
a7cb89f
temp fix for reload doc
JesmoDev Apr 8, 2024
50f3b8e
export from external
JesmoDev Apr 8, 2024
1bc7cb3
Merge remote-tracking branch 'origin/main' into feature/rollback
JesmoDev Apr 8, 2024
f489716
import
JesmoDev Apr 8, 2024
7a63524
fix invariant
JesmoDev Apr 8, 2024
bdcb2db
use correct variants
JesmoDev Apr 8, 2024
17175ab
fix invariant
JesmoDev Apr 8, 2024
2e3d2d5
small fixes
JesmoDev Apr 9, 2024
d252d0d
Merge remote-tracking branch 'origin/main' into feature/rollback
JesmoDev Apr 9, 2024
d56d13b
localizations
JesmoDev Apr 9, 2024
7c11ad4
small fixes
JesmoDev Apr 10, 2024
b703d37
button
JesmoDev Apr 10, 2024
b6209b8
Merge remote-tracking branch 'origin/main' into feature/rollback
JesmoDev Apr 10, 2024
e064c02
package lock
JesmoDev Apr 10, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@
"./workspace": "./dist-cms/packages/core/workspace/index.js",
"./external/backend-api": "./dist-cms/external/backend-api/index.js",
"./external/base64-js": "./dist-cms/external/base64-js/index.js",
"./external/diff": "./dist-cms/external/diff/index.js",
"./external/dompurify": "./dist-cms/external/dompurify/index.js",
"./external/lit": "./dist-cms/external/lit/index.js",
"./external/marked": "./dist-cms/external/marked/index.js",
Expand Down Expand Up @@ -165,11 +166,13 @@
"npm": ">=10.1 < 11"
},
"dependencies": {
"@types/diff": "^5.0.9",
"@types/dompurify": "^3.0.5",
"@types/uuid": "^9.0.8",
"@umbraco-ui/uui": "1.7.2",
"@umbraco-ui/uui-css": "1.7.2",
"base64-js": "^1.5.1",
"diff": "^5.2.0",
"dompurify": "^3.0.9",
"element-internals-polyfill": "^1.3.10",
"lit": "^3.1.2",
Expand Down
1 change: 1 addition & 0 deletions src/assets/lang/da-dk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -834,6 +834,7 @@ export default {
submit: 'Indsend',
type: 'Type',
typeToSearch: 'Skriv for at søge...',
unknownUser: 'Ukendt bruger',
under: 'under',
up: 'Op',
update: 'Opdatér',
Expand Down
1 change: 1 addition & 0 deletions src/assets/lang/en-us.ts
Original file line number Diff line number Diff line change
Expand Up @@ -848,6 +848,7 @@ export default {
type: 'Type',
typeName: 'Type Name',
typeToSearch: 'Type to search...',
unknownUser: 'Unknown user',
under: 'under',
up: 'Up',
update: 'Update',
Expand Down
1 change: 1 addition & 0 deletions src/external/diff/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { diffWords } from 'diff';
7 changes: 7 additions & 0 deletions src/packages/documents/documents/modals/manifests.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
import type { ManifestModal } from '@umbraco-cms/backoffice/extension-registry';

export const UMB_ROLLBACK_MODAL_ALIAS = 'Umb.Modal.Rollback';
export const UMB_DOCUMENT_SAVE_MODAL_ALIAS = 'Umb.Modal.DocumentSave';
export const UMB_DOCUMENT_PUBLISH_MODAL_ALIAS = 'Umb.Modal.DocumentPublish';
export const UMB_DOCUMENT_UNPUBLISH_MODAL_ALIAS = 'Umb.Modal.DocumentUnpublish';
export const UMB_DOCUMENT_SCHEDULE_MODAL_ALIAS = 'Umb.Modal.DocumentSchedule';
export const UMB_DOCUMENT_PUBLISH_WITH_DESCENDANTS_MODAL_ALIAS = 'Umb.Modal.DocumentPublishWithDescendants';

const modals: Array<ManifestModal> = [
{
type: 'modal',
alias: UMB_ROLLBACK_MODAL_ALIAS,
name: 'Rollback Modal',
js: () => import('./rollback/rollback-modal.element.js'),
},
{
type: 'modal',
alias: UMB_DOCUMENT_SAVE_MODAL_ALIAS,
Expand Down
1 change: 1 addition & 0 deletions src/packages/documents/documents/modals/rollback/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './rollback-modal.token.js';
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export { UmbRollbackRepository } from './rollback.repository.js';
export { UMB_ROLLBACK_REPOSITORY_ALIAS } from './manifests.js';
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import type { ManifestRepository } from '@umbraco-cms/backoffice/extension-registry';

export const UMB_ROLLBACK_REPOSITORY_ALIAS = 'Umb.Repository.Rollback';

const repository: ManifestRepository = {
type: 'repository',
alias: UMB_ROLLBACK_REPOSITORY_ALIAS,
name: 'Rollback Repository',
api: () => import('./rollback.repository.js'),
};

export const manifests = [repository];
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { UmbRollbackServerDataSource } from './rollback.server.data-source.js';
import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import type { UmbApi } from '@umbraco-cms/backoffice/extension-api';

export class UmbRollbackRepository extends UmbControllerBase implements UmbApi {
#dataSource: UmbRollbackServerDataSource;

constructor(host: UmbControllerHost) {
super(host);

this.#dataSource = new UmbRollbackServerDataSource(this);
}

async requestVersionsByDocumentId(id: string, culture?: string) {
return await this.#dataSource.getVersionsByDocumentId(id, culture);
}

async requestVersionById(id: string) {
return await this.#dataSource.getVersionById(id);
}

async setPreventCleanup(versionId: string, preventCleanup: boolean) {
return await this.#dataSource.setPreventCleanup(versionId, preventCleanup);
}

async rollback(versionId: string, culture?: string) {
return await this.#dataSource.rollback(versionId, culture);
}
}

export default UmbRollbackRepository;
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { DocumentVersionResource } from '@umbraco-cms/backoffice/external/backend-api';
import { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';

/**
* A data source for the Rollback that fetches data from the server
* @export
* @class UmbRollbackServerDataSource
* @implements {RepositoryDetailDataSource}
*/
export class UmbRollbackServerDataSource {
#host: UmbControllerHost;

/**
* Creates an instance of UmbRollbackServerDataSource.
* @param {UmbControllerHost} host
* @memberof UmbRollbackServerDataSource
*/
constructor(host: UmbControllerHost) {
this.#host = host;
}

/**
* Get a list of versions for a document
* @return {*}
* @memberof UmbRollbackServerDataSource
*/
getVersionsByDocumentId(id: string, culture?: string) {
return tryExecuteAndNotify(this.#host, DocumentVersionResource.getDocumentVersion({ documentId: id, culture }));
}

/**
* Get a specific version by id
* @return {*}
* @memberof UmbRollbackServerDataSource
*/
getVersionById(versionId: string) {
return tryExecuteAndNotify(this.#host, DocumentVersionResource.getDocumentVersionById({ id: versionId }));
}

setPreventCleanup(versionId: string, preventCleanup: boolean) {
return tryExecuteAndNotify(
this.#host,
DocumentVersionResource.putDocumentVersionByIdPreventCleanup({ id: versionId, preventCleanup }),
);
}

rollback(versionId: string, culture?: string) {
return tryExecuteAndNotify(
this.#host,
DocumentVersionResource.postDocumentVersionByIdRollback({ id: versionId, culture }),
);
}
}
Loading