make rename for server files

This commit is contained in:
Mads Rasmussen
2024-03-30 19:27:25 +01:00
parent 17622bfd77
commit 5a6f46d86f
13 changed files with 56 additions and 51 deletions

View File

@@ -1,3 +1,3 @@
export * from './types.js';
export * from './rename.action.js';
export * from './rename-repository-base.js';
export * from './rename-server-file.action.js';
export * from './rename-server-file-repository-base.js';

View File

@@ -1,4 +1,4 @@
import { manifests as renameModalManifests } from './modal/manifests.js';
import { manifest as renameKindManifest } from './rename.action.kind.js';
import { manifest as renameKindManifest } from './rename-server-file.action.kind.js';
export const manifests = [...renameModalManifests, renameKindManifest];

View File

@@ -1,12 +1,12 @@
import type { ManifestModal } from '@umbraco-cms/backoffice/extension-registry';
export const UMB_RENAME_MODAL_ALIAS = 'Umb.Modal.Rename';
export const UMB_RENAME_SERVER_FILE_MODAL_ALIAS = 'Umb.Modal.ServerFile.Rename';
export const manifests: Array<ManifestModal> = [
{
type: 'modal',
alias: UMB_RENAME_MODAL_ALIAS,
name: 'Rename Modal',
js: () => import('./rename-modal.element.js'),
alias: UMB_RENAME_SERVER_FILE_MODAL_ALIAS,
name: 'Rename Server File Modal',
js: () => import('./rename-server-file-modal.element.js'),
},
];

View File

@@ -1,17 +0,0 @@
import { UMB_RENAME_MODAL_ALIAS } from './manifests.js';
import { UmbModalToken } from '@umbraco-cms/backoffice/modal';
export interface UmbRenameModalData {
renameRepositoryAlias: string;
itemRepositoryAlias: string;
unique: string;
}
export interface UmbRenameModalValue {}
export const UMB_RENAME_MODAL = new UmbModalToken<UmbRenameModalData, UmbRenameModalValue>(UMB_RENAME_MODAL_ALIAS, {
modal: {
type: 'sidebar',
size: 'small',
},
});

View File

@@ -1,5 +1,5 @@
import type { UmbRenameRepository } from '../types.js';
import type { UmbRenameModalData, UmbRenameModalValue } from './rename-modal.token.js';
import type { UmbRenameServerFileRepository } from '../types.js';
import type { UmbRenameModalData, UmbRenameServerFileModalValue } from './rename-server-file-modal.token.js';
import type { PropertyValueMap } from '@umbraco-cms/backoffice/external/lit';
import { html, customElement, css, state } from '@umbraco-cms/backoffice/external/lit';
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
@@ -9,10 +9,10 @@ import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registr
import type { UmbItemRepository } from '@umbraco-cms/backoffice/repository';
@customElement('umb-rename-modal')
export class UmbRenameModalElement extends UmbModalBaseElement<UmbRenameModalData, UmbRenameModalValue> {
export class UmbRenameModalElement extends UmbModalBaseElement<UmbRenameModalData, UmbRenameServerFileModalValue> {
// TODO: make base type for item and detail models
#itemRepository?: UmbItemRepository<any>;
#renameRepository?: UmbRenameRepository<any>;
#renameRepository?: UmbRenameServerFileRepository<any>;
#init?: Promise<unknown>;
@state()
@@ -46,7 +46,7 @@ export class UmbRenameModalElement extends UmbModalBaseElement<UmbRenameModalDat
this.data.renameRepositoryAlias,
[this],
(permitted, ctrl) => {
this.#renameRepository = permitted ? (ctrl.api as UmbRenameRepository<any>) : undefined;
this.#renameRepository = permitted ? (ctrl.api as UmbRenameServerFileRepository<any>) : undefined;
},
).asPromise(),
]);

View File

@@ -0,0 +1,20 @@
import { UMB_RENAME_SERVER_FILE_MODAL_ALIAS } from './manifests.js';
import { UmbModalToken } from '@umbraco-cms/backoffice/modal';
export interface UmbRenameModalData {
renameRepositoryAlias: string;
itemRepositoryAlias: string;
unique: string;
}
export interface UmbRenameServerFileModalValue {}
export const UMB_RENAME_SERVER_FILE_MODAL = new UmbModalToken<UmbRenameModalData, UmbRenameServerFileModalValue>(
UMB_RENAME_SERVER_FILE_MODAL_ALIAS,
{
modal: {
type: 'sidebar',
size: 'small',
},
},
);

View File

@@ -1,14 +1,14 @@
import type { UmbRenameServerFileDataSource, UmbRenameServerFileDataSourceConstructor } from './types.js';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import type { UmbNotificationContext } from '@umbraco-cms/backoffice/notification';
import { UMB_NOTIFICATION_CONTEXT } from '@umbraco-cms/backoffice/notification';
import { UmbRepositoryBase } from '@umbraco-cms/backoffice/repository';
import type { UmbRenameDataSource, UmbRenameDataSourceConstructor } from '@umbraco-cms/backoffice/entity-action';
import type { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
export abstract class UmbRenameRepositoryBase<DetailModelType extends { unique: string }> extends UmbRepositoryBase {
#renameSource: UmbRenameDataSource<DetailModelType>;
export abstract class UmbRenameServerFileRepositoryBase<
DetailModelType extends { unique: string },
> extends UmbRepositoryBase {
#renameSource: UmbRenameServerFileDataSource<DetailModelType>;
constructor(host: UmbControllerHost, detailSource: UmbRenameDataSourceConstructor<DetailModelType>) {
constructor(host: UmbControllerHost, detailSource: UmbRenameServerFileDataSourceConstructor<DetailModelType>) {
super(host);
this.#renameSource = new detailSource(host);
}
@@ -18,7 +18,7 @@ export abstract class UmbRenameRepositoryBase<DetailModelType extends { unique:
* @param {string} unique
* @param {string} name
* @return {*}
* @memberof UmbRenameRepositoryBase
* @memberof UmbRenameServerFileRepositoryBase
*/
async rename(unique: string, name: string) {
if (!unique) throw new Error('Unique is missing');

View File

@@ -3,14 +3,14 @@ import type { UmbBackofficeManifestKind } from '@umbraco-cms/backoffice/extensio
export const manifest: UmbBackofficeManifestKind = {
type: 'kind',
alias: 'Umb.Kind.EntityAction.Rename',
matchKind: 'rename',
alias: 'Umb.Kind.EntityAction.ServerFile.Rename',
matchKind: 'renameServerFile',
matchType: 'entityAction',
manifest: {
...UMB_ENTITY_ACTION_DEFAULT_KIND_MANIFEST.manifest,
type: 'entityAction',
kind: 'rename',
api: () => import('./rename.action.js'),
kind: 'renameServerFile',
api: () => import('./rename-server-file.action.js'),
weight: 200,
forEntityTypes: [],
meta: {

View File

@@ -1,4 +1,4 @@
import { UMB_RENAME_MODAL } from './modal/rename-modal.token.js';
import { UMB_RENAME_SERVER_FILE_MODAL } from './modal/rename-server-file-modal.token.js';
import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action';
import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';
import type { MetaEntityActionRenameKind } from '@umbraco-cms/backoffice/extension-registry';
@@ -10,7 +10,7 @@ export class UmbRenameEntityAction extends UmbEntityActionBase<MetaEntityActionR
if (!this.args.unique) throw new Error('Unique is required to rename an entity');
const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);
const modalContext = modalManager.open(this, UMB_RENAME_MODAL, {
const modalContext = modalManager.open(this, UMB_RENAME_SERVER_FILE_MODAL, {
data: {
unique: this.args.unique,
renameRepositoryAlias: this.args.meta.renameRepositoryAlias,

View File

@@ -1,14 +1,14 @@
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import type { UmbDataSourceResponse } from '@umbraco-cms/backoffice/repository';
export interface UmbRenameRepository<DetailType extends { unique: string }> {
export interface UmbRenameServerFileRepository<DetailType extends { unique: string }> {
rename(unique: string, name: string): Promise<UmbDataSourceResponse<DetailType>>;
}
export interface UmbRenameDataSourceConstructor<DetailType extends { unique: string }> {
new (host: UmbControllerHost): UmbRenameDataSource<DetailType>;
export interface UmbRenameServerFileDataSourceConstructor<DetailType extends { unique: string }> {
new (host: UmbControllerHost): UmbRenameServerFileDataSource<DetailType>;
}
export interface UmbRenameDataSource<DetailType extends { unique: string }> {
export interface UmbRenameServerFileDataSource<DetailType extends { unique: string }> {
rename(unique: string, name: string): Promise<UmbDataSourceResponse<DetailType>>;
}

View File

@@ -1,11 +1,12 @@
import { UMB_PARTIAL_VIEW_DETAIL_STORE_CONTEXT } from '../../repository/index.js';
import type { UmbPartialViewDetailModel } from '../../types.js';
import { UmbRenamePartialViewServerDataSource } from './rename-partial-view.server.data-source.js';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { UmbRenameRepositoryBase } from '@umbraco-cms/backoffice/entity-action';
import { UmbRenameServerFileRepositoryBase } from '@umbraco-cms/backoffice/server-file-system';
export class UmbRenamePartialViewRepository extends UmbRenameRepositoryBase<UmbPartialViewDetailModel> {
export class UmbRenamePartialViewRepository extends UmbRenameServerFileRepositoryBase<UmbPartialViewDetailModel> {
constructor(host: UmbControllerHost) {
super(host, UmbRenamePartialViewServerDataSource);
super(host, UmbRenamePartialViewServerDataSource, UMB_PARTIAL_VIEW_DETAIL_STORE_CONTEXT);
}
}

View File

@@ -1,2 +1,3 @@
export { UmbPartialViewDetailRepository } from './partial-view-detail.repository.js';
export { UMB_PARTIAL_VIEW_DETAIL_REPOSITORY_ALIAS } from './manifests.js';
export { UMB_PARTIAL_VIEW_DETAIL_STORE_CONTEXT } from './partial-view-detail.store.js';

View File

@@ -2,9 +2,9 @@ import { UMB_SCRIPT_DETAIL_STORE_CONTEXT } from '../../repository/index.js';
import type { UmbScriptDetailModel } from '../../types.js';
import { UmbRenameScriptServerDataSource } from './rename-script.server.data-source.js';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { UmbRenameRepositoryBase } from '@umbraco-cms/backoffice/entity-action';
import { UmbRenameServerFileRepositoryBase } from '@umbraco-cms/backoffice/server-file-system';
export class UmbRenameScriptRepository extends UmbRenameRepositoryBase<UmbScriptDetailModel> {
export class UmbRenameScriptRepository extends UmbRenameServerFileRepositoryBase<UmbScriptDetailModel> {
constructor(host: UmbControllerHost) {
super(host, UmbRenameScriptServerDataSource, UMB_SCRIPT_DETAIL_STORE_CONTEXT);
}