From b841a8b404d7817df76390a07e8e168fa1563a6e Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Tue, 7 Nov 2023 20:58:03 +0000 Subject: [PATCH 01/20] feature: Opinionated organiser for DataTypes, MediaTypes, ContentTypes & Member Types --- .../.gitignore | 24 + .../index.html | 16 + .../package-lock.json | 1171 +++++++++++++++++ .../package.json | 19 + .../src/backoffice-organiser.ts | 176 +++ .../src/index.css | 39 + .../src/vite-env.d.ts | 1 + .../tsconfig.json | 24 + .../vite.config.ts | 15 + src/jcdcdev.Umbraco.BackOfficeOrganiser.sln | 43 + .../BackOfficeOrganiserController.cs | 51 + .../BackOfficeOrganiserService.cs | 88 ++ .../Composer.cs | 37 + .../ContentTypeBaseServiceExtensions.cs | 42 + .../Extensions/DataTypeExtensions.cs | 94 ++ .../Extensions/DataTypeServiceExtensions.cs | 43 + .../Extensions/MediaTypeExtensions.cs | 28 + .../Extensions/UmbracoBuilderExtensions.cs | 22 + .../IBackOfficeOrganiserService.cs | 9 + .../ManifestFilter.cs | 16 + .../Models/BackOfficeOrganiserOptions.cs | 7 + .../Models/DataTypeOptions.cs | 8 + .../Models/OrganiseResponse.cs | 24 + .../Models/OrganiseType.cs | 11 + .../ContentTypeOrganiseActionCollection.cs | 11 + ...tentTypeOrganiseActionCollectionBuilder.cs | 8 + .../ContentTypes/ContentTypeOrganiser.cs | 29 + .../DefaultContentTypeOrganiseAction.cs | 38 + .../IContentTypeOrganiseAction.cs | 10 + .../DataTypeOrganiseActionCollection.cs | 11 + ...DataTypeOrganiseActionCollectionBuilder.cs | 8 + .../Organisers/DataTypes/DataTypeOrganiser.cs | 29 + .../DefaultDataTypeOrganiseAction.cs | 103 ++ .../DataTypes/IDataTypeOrganiseAction.cs | 10 + .../Organisers/IBackOfficeOrganiser.cs | 6 + .../DefaultMediaTypeOrganiseAction.cs | 48 + .../MediaTypes/IMediaTypeOrganiseAction.cs | 10 + .../MediaTypeOrganiseActionCollection.cs | 11 + ...ediaTypeOrganiseActionCollectionBuilder.cs | 8 + .../MediaTypes/MediaTypeOrganiser.cs | 29 + .../DefaultMemberTypeOrganiseAction.cs | 33 + .../MemberTypes/IMemberTypeOrganiseAction.cs | 10 + .../MemberTypeOrganiseActionCollection.cs | 11 + ...mberTypeOrganiseActionCollectionBuilder.cs | 8 + .../MemberTypes/MemberTypeOrganiser.cs | 29 + .../Dashboards/BackOfficeOrganiser.cshtml | 4 + .../BackOfficeOrganiserDashboard.cs | 13 + .../icon.png | Bin 0 -> 20004 bytes ...jcdcdev.Umbraco.BackOfficeOrganiser.csproj | 44 + 49 files changed, 2529 insertions(+) create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/.gitignore create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/index.html create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/package-lock.json create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/package.json create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/backoffice-organiser.ts create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/index.css create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/vite-env.d.ts create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/tsconfig.json create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/vite.config.ts create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.sln create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/BackOfficeOrganiserController.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/BackOfficeOrganiserService.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Composer.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/ContentTypeBaseServiceExtensions.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/DataTypeExtensions.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/DataTypeServiceExtensions.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/MediaTypeExtensions.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/UmbracoBuilderExtensions.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/IBackOfficeOrganiserService.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/ManifestFilter.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/BackOfficeOrganiserOptions.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/DataTypeOptions.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/OrganiseResponse.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/OrganiseType.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollection.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollectionBuilder.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/IContentTypeOrganiseAction.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollection.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollectionBuilder.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiser.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/IDataTypeOrganiseAction.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/IBackOfficeOrganiser.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/IMediaTypeOrganiseAction.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollection.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollectionBuilder.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiser.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/IMemberTypeOrganiseAction.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollection.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollectionBuilder.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiser.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiser.cshtml create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiserDashboard.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/icon.png create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/.gitignore b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/index.html b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/index.html new file mode 100644 index 0000000..5e73812 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/index.html @@ -0,0 +1,16 @@ + + + + + + + Vite + Lit + TS + + + + + +

Vite + Lit

+
+ + diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/package-lock.json b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/package-lock.json new file mode 100644 index 0000000..c3d4e69 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/package-lock.json @@ -0,0 +1,1171 @@ +{ + "name": "backoffice-organiser", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "backoffice-organiser", + "version": "0.0.0", + "dependencies": { + "lit": "^2.7.6" + }, + "devDependencies": { + "@umbraco-ui/uui": "^1.5.0", + "typescript": "^5.0.2", + "vite": "^4.4.5" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.1.2", + "license": "BSD-3-Clause" + }, + "node_modules/@lit/reactive-element": { + "version": "1.6.3", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.0.0" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.5", + "license": "MIT" + }, + "node_modules/@umbraco-ui/uui": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.5.0.tgz", + "integrity": "sha512-V9pAdCsiaBy+Vq23sZd9JJCk+TX6xMsclJtTUWhwCq8/YUh6KNERbdoVfMYGUZ1yyJ/g+yddQsWlYOxHNp8msw==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-action-bar": "1.5.0", + "@umbraco-ui/uui-avatar": "1.5.0", + "@umbraco-ui/uui-avatar-group": "1.5.0", + "@umbraco-ui/uui-badge": "1.5.0", + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-boolean-input": "1.5.0", + "@umbraco-ui/uui-box": "1.5.0", + "@umbraco-ui/uui-breadcrumbs": "1.5.0", + "@umbraco-ui/uui-button": "1.5.0", + "@umbraco-ui/uui-button-group": "1.5.0", + "@umbraco-ui/uui-button-inline-create": "1.5.0", + "@umbraco-ui/uui-card": "1.5.0", + "@umbraco-ui/uui-card-content-node": "1.5.0", + "@umbraco-ui/uui-card-media": "1.5.0", + "@umbraco-ui/uui-card-user": "1.5.0", + "@umbraco-ui/uui-caret": "1.5.0", + "@umbraco-ui/uui-checkbox": "1.5.0", + "@umbraco-ui/uui-color-area": "1.5.0", + "@umbraco-ui/uui-color-picker": "1.5.0", + "@umbraco-ui/uui-color-slider": "1.5.0", + "@umbraco-ui/uui-color-swatch": "1.5.0", + "@umbraco-ui/uui-color-swatches": "1.5.0", + "@umbraco-ui/uui-combobox": "1.5.0", + "@umbraco-ui/uui-combobox-list": "1.5.0", + "@umbraco-ui/uui-css": "1.5.0", + "@umbraco-ui/uui-dialog": "1.5.0", + "@umbraco-ui/uui-dialog-layout": "1.5.0", + "@umbraco-ui/uui-file-dropzone": "1.5.0", + "@umbraco-ui/uui-file-preview": "1.5.0", + "@umbraco-ui/uui-form": "1.5.0", + "@umbraco-ui/uui-form-layout-item": "1.5.0", + "@umbraco-ui/uui-form-validation-message": "1.5.0", + "@umbraco-ui/uui-icon": "1.5.0", + "@umbraco-ui/uui-icon-registry": "1.5.0", + "@umbraco-ui/uui-icon-registry-essential": "1.5.0", + "@umbraco-ui/uui-input": "1.5.0", + "@umbraco-ui/uui-input-file": "1.5.0", + "@umbraco-ui/uui-input-lock": "1.5.0", + "@umbraco-ui/uui-input-password": "1.5.0", + "@umbraco-ui/uui-keyboard-shortcut": "1.5.0", + "@umbraco-ui/uui-label": "1.5.0", + "@umbraco-ui/uui-loader": "1.5.0", + "@umbraco-ui/uui-loader-bar": "1.5.0", + "@umbraco-ui/uui-loader-circle": "1.5.0", + "@umbraco-ui/uui-menu-item": "1.5.0", + "@umbraco-ui/uui-modal": "1.5.0", + "@umbraco-ui/uui-pagination": "1.5.0", + "@umbraco-ui/uui-popover": "1.5.0", + "@umbraco-ui/uui-popover-container": "1.5.0", + "@umbraco-ui/uui-progress-bar": "1.5.0", + "@umbraco-ui/uui-radio": "1.5.0", + "@umbraco-ui/uui-range-slider": "1.5.0", + "@umbraco-ui/uui-ref": "1.5.0", + "@umbraco-ui/uui-ref-list": "1.5.0", + "@umbraco-ui/uui-ref-node": "1.5.0", + "@umbraco-ui/uui-ref-node-data-type": "1.5.0", + "@umbraco-ui/uui-ref-node-document-type": "1.5.0", + "@umbraco-ui/uui-ref-node-form": "1.5.0", + "@umbraco-ui/uui-ref-node-member": "1.5.0", + "@umbraco-ui/uui-ref-node-package": "1.5.0", + "@umbraco-ui/uui-ref-node-user": "1.5.0", + "@umbraco-ui/uui-scroll-container": "1.5.0", + "@umbraco-ui/uui-select": "1.5.0", + "@umbraco-ui/uui-slider": "1.5.0", + "@umbraco-ui/uui-symbol-expand": "1.5.0", + "@umbraco-ui/uui-symbol-file": "1.5.0", + "@umbraco-ui/uui-symbol-file-dropzone": "1.5.0", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.5.0", + "@umbraco-ui/uui-symbol-folder": "1.5.0", + "@umbraco-ui/uui-symbol-lock": "1.5.0", + "@umbraco-ui/uui-symbol-more": "1.5.0", + "@umbraco-ui/uui-symbol-sort": "1.5.0", + "@umbraco-ui/uui-table": "1.5.0", + "@umbraco-ui/uui-tabs": "1.5.0", + "@umbraco-ui/uui-tag": "1.5.0", + "@umbraco-ui/uui-textarea": "1.5.0", + "@umbraco-ui/uui-toast-notification": "1.5.0", + "@umbraco-ui/uui-toast-notification-container": "1.5.0", + "@umbraco-ui/uui-toast-notification-layout": "1.5.0", + "@umbraco-ui/uui-toggle": "1.5.0", + "@umbraco-ui/uui-visually-hidden": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-action-bar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.5.0.tgz", + "integrity": "sha512-2B4ONNRTEtoKjnBo8mtvQo2Y9WW7LDSx6q85UuA+YEWfMOgZ0hr0lFepPg+qq/q90/8ZIoItoxRo16UFrPVaHQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-button-group": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-avatar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.5.0.tgz", + "integrity": "sha512-Iw4MQ2IMfJq590ydA6d2WXJ3gC7wO1vpA6tZj3T772B81LBZR31ftoMn3ho4cpavV5Nv4LvBnGhc2YajbsVn5A==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-avatar-group": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.5.0.tgz", + "integrity": "sha512-hlmqOGLQIN8uJMoLgT+RPHFWIxi8Ridhp/MrKgEjuNF6sTu4bCQyN28XuC9JD+4vBcSjU4a893QGvckalQxZiA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-avatar": "1.5.0", + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-badge": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.5.0.tgz", + "integrity": "sha512-6azqqcqRzVHXYz/JfAody6kDZQG3hiBTiCS8EEYY9GcFNqh8BvFLX4yK9R6zz5BVrjgT3qkmPpE2iIpqV6J58A==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-base": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.5.0.tgz", + "integrity": "sha512-HzKRvbf/aPA1y8l9ZLTvF5Up7W6jX8UwqVUr1B8lwckI6tgxOEFPqLya+U4papqZDh4wz/lysXSDESeVfUy8cw==", + "dev": true, + "dependencies": { + "lit": "^2.3.1" + } + }, + "node_modules/@umbraco-ui/uui-boolean-input": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.5.0.tgz", + "integrity": "sha512-uhIPzi7n3Z4Li3n688Q8v3725apwasZvPntm7kMdtssXay6hUHOcor+hkpPavGXRVxZGg+9gIYRM6sQWp853cA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-box": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.5.0.tgz", + "integrity": "sha512-uTHBvwzS9pRu0MVfN74+bux6lK0m1AmY/7xor9ez9/uzDyIK096D9jSLTQkfDyngIhqnV6kFLbG7PqcfQURFJQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-css": "1.4.0" + } + }, + "node_modules/@umbraco-ui/uui-box/node_modules/@umbraco-ui/uui-css": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.4.0.tgz", + "integrity": "sha512-HBCFPuXJijeZbjnjdqmg3oqOGB3RmpQKT/s/Uy0TSJfaQGfz0e73o2eRghYHWF2rdqHw6brKFrZTZHBVvCE/xA==", + "dev": true, + "dependencies": { + "lit": "^2.2.2" + } + }, + "node_modules/@umbraco-ui/uui-breadcrumbs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.5.0.tgz", + "integrity": "sha512-mXuzt5o4NZ1E/HVTLYq+TklX9VQSH5zce+Ef1t2EgUE3EFQH0fwcdCRBC9SpklueNj46ngGHmVhyfv8ekne1Wg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-button": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.5.0.tgz", + "integrity": "sha512-ujicvfqUAN0JtBcgj8OG1YcyDaArTBdP5LvNsyYB8s0dePgcws71XzJ1mbHbXhuA386ioNue04yGDL+gSFlJ/A==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-icon-registry-essential": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-button-group": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.5.0.tgz", + "integrity": "sha512-8yhFdfg7p1B8MM2fIxIlc0Mmhnx46scdGhqeRhvaQ2/dcdpVTI1j1hI2JyOM18TUhJeot4olLqwatlXxlFFT+A==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-button-inline-create": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.5.0.tgz", + "integrity": "sha512-J60vRf7nzQyRYKj+qYhMQR6LrQH6PyTrxyqyfDOVGzcWKzsTuRahxuVOIOzrs489cznwRYwL11jtK32MlrSjGQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-card": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.5.0.tgz", + "integrity": "sha512-RgpnQca3rpjMG/3DAmmrExI7gmNNHBNYwfjRqgCd/3QkBwRrtT/+jdppVsGRxxW5xAN90sJ/eLP7i3F5EfWlSA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-card-content-node": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.5.0.tgz", + "integrity": "sha512-aYGeTsppWT0KS9orrqkl9DF2v5l3gSGhBJZqIPiHVBOzczYIcgLWJbdAkaCgpwh1Zacbv3tnB/76965fd4EwPw==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-card": "1.5.0", + "@umbraco-ui/uui-icon": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-card-media": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.5.0.tgz", + "integrity": "sha512-0KktT0IExh06W7QP1FMNqU+tpUL1qDwWeeA19PbZPXwHg15hbSW15a+Hc4aiwqlHYHOPT2gxXoiVc7jqWlMcSQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-card": "1.5.0", + "@umbraco-ui/uui-symbol-file": "1.5.0", + "@umbraco-ui/uui-symbol-folder": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-card-user": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.5.0.tgz", + "integrity": "sha512-xJjfkRHkt2xim1o+IvEPQiTpIQR+Z9+69096ssuGb3EkxyyUsDmH3aZZH6/+LKdtKR+7mPZVJub9TTWB4VRnwQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-avatar": "1.5.0", + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-card": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-caret": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.5.0.tgz", + "integrity": "sha512-4Apw4TMALEydo5o31gsIyICuPVyKvG/oySNup+5psU3apS0JDQ1RXCgGVDFoFxt5xzM+iJ6/J8ZOOILMVNFM6Q==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-checkbox": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.5.0.tgz", + "integrity": "sha512-Kve+XAIkSFG9kowbZI1MpDEKihpMTtD9q36pcHiVENqxL1+Tydy60yjy3tHV8o6uamJ8qjR6ZlvLttRwLId9tQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-boolean-input": "1.5.0", + "@umbraco-ui/uui-icon-registry-essential": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-color-area": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.5.0.tgz", + "integrity": "sha512-FF6PrUCBo2nOg5iLbD+iB8aa3Vh+skIfqjFsPD80qLE0sKQ/53juZCnCbvvp7Z0YmIqwBlWP7xGEzJBGfS6OlA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "colord": "^2.9.3" + } + }, + "node_modules/@umbraco-ui/uui-color-picker": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.5.0.tgz", + "integrity": "sha512-y/IwXhtaQJWNjwnZtYTvv47+bsmUYJzFLtXqxGckcUmyJQvoZ6DDxslTSv1B9J3QTXU0zpakqpxPszlNNHUygw==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "colord": "^2.9.3" + } + }, + "node_modules/@umbraco-ui/uui-color-slider": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.5.0.tgz", + "integrity": "sha512-nkUpUxfD7VlayBHirM56xKqi1h0Opg7Q2suzxEC4KLDVLO1+L0KzsDORn1tfeantSG0PahBMbuve1XOoOwCrAA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-color-swatch": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.5.0.tgz", + "integrity": "sha512-UDqlGmJIMGyn7C23q33v8dkJoISmIAL0XZNTiPkEhwGjKRlxkbexmGd4L4vFt+nhJDRrN86JoZ64BRTHVN8V7A==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-icon-registry-essential": "1.5.0", + "colord": "^2.9.3" + } + }, + "node_modules/@umbraco-ui/uui-color-swatches": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.5.0.tgz", + "integrity": "sha512-SvTKINbckKvqkkS4XnQfpELkW2x47CUa4PsnXqioXNIWP5sBJb9Kydiu0N1+lV57fAkteqNp+YY8mFxn3a6iPA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-color-swatch": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-combobox": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.5.0.tgz", + "integrity": "sha512-SoK4+yR0dJViXZinZ7iqowl6tvWPTTPSOBVE7FfOqOAgFoccOE/nQqjeNjSM0co80OKXqHUsh+kX/HwLjdyNEA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-button": "1.5.0", + "@umbraco-ui/uui-combobox-list": "1.5.0", + "@umbraco-ui/uui-icon": "1.5.0", + "@umbraco-ui/uui-scroll-container": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-combobox-list": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.5.0.tgz", + "integrity": "sha512-5cVlhnst3p6eEHFqn6O8LMswx3wdwpzlfAghleQJW+ZUIVo7ZPXznZz7+6yvnVWxnI7+xxFebHgC0KFxGMUVvg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-css": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.5.0.tgz", + "integrity": "sha512-jBSJg8KTWDG7DOVzz7A+UpMxMNHtddcLgt9k25vC4H+84xl+TN51RFTqF8C0JCZdWFK0eKWYlJsGqVrDfoVCcg==", + "dev": true, + "dependencies": { + "lit": "^2.2.2" + } + }, + "node_modules/@umbraco-ui/uui-dialog": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.5.0.tgz", + "integrity": "sha512-m6J5i+eiLdNApryIY1KW/4kyunAuTpkcWBjQmxyESmlDIqRGdW0lqaahQvcZSZHto03jleUdH5wYTLNgKIb/rw==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-css": "1.4.0" + } + }, + "node_modules/@umbraco-ui/uui-dialog-layout": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.5.0.tgz", + "integrity": "sha512-vfZ3FMzYccGBVvSSXvCeoHYX+VU8QppXtFR2OGDZwU0b8BOKtfKTP/2VLPEWCG4vJYKPmqZESo3N9bZXWDkWSg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-dialog/node_modules/@umbraco-ui/uui-css": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.4.0.tgz", + "integrity": "sha512-HBCFPuXJijeZbjnjdqmg3oqOGB3RmpQKT/s/Uy0TSJfaQGfz0e73o2eRghYHWF2rdqHw6brKFrZTZHBVvCE/xA==", + "dev": true, + "dependencies": { + "lit": "^2.2.2" + } + }, + "node_modules/@umbraco-ui/uui-file-dropzone": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.5.0.tgz", + "integrity": "sha512-3rkTWidY4k2fyktRxfsMVTSvF+EIguv9p1Fga7v4DCNkplCp6OyJnwWby5F//+NvTHphaGchxZirOWMLgLyDog==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-symbol-file-dropzone": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-file-preview": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.5.0.tgz", + "integrity": "sha512-Re+R8uZSD3t3jUgZvzG/DfQtihss7aw+rG41IAjmRO9wBZuUAsowfgCd2OJnuOYJXeaqOYYl+QQr7pmR2a/HNQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-symbol-file": "1.5.0", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.5.0", + "@umbraco-ui/uui-symbol-folder": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-form": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.5.0.tgz", + "integrity": "sha512-rbXFZzAg93/fzvNkxHavUr62DnSeWuVghd9CK9lhe6A9ER9cfjOcGn/INTYK3HHPBalay9IOq+WV1xxC5H6zyg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-form-layout-item": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.5.0.tgz", + "integrity": "sha512-owla3DWo1deVUEG0JzC7pE70h6Ll6lmbR+B+utbMdEgM6shEMdokpPioeCaXb8v7On9Whz+zJGAGBAYl/oyjug==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-form-validation-message": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-form-validation-message": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.5.0.tgz", + "integrity": "sha512-wuWCzttkUlEctqdJi9qzSzT8h10WvoK3+5usYB9V8NpdPYzOmbXU5RDYpoTWS0nPO56C6rlRlt3TH1khIQtPJA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-icon": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.5.0.tgz", + "integrity": "sha512-8Sz6PaYTC8KDCKj5ed+xnlnuh9/NOs0tQGPOma1bnVxGJN8LNjl+cJSLp+iU1m3Qq50H0TG+0K/dS3WUExjbZw==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-icon-registry": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.5.0.tgz", + "integrity": "sha512-ei+HnaCKFjcCYjHYC0hqncY2vDfbgRkWhftOnrhqVZPJkE4omWDmVsLSGg/vm88ar1QleDmVj+CAa4J9T+uVeg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-icon": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-icon-registry-essential": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.5.0.tgz", + "integrity": "sha512-nxNEQDI4SNBXnI2/Ov60vcdzKFyRCInwZDFNAKyt31F1yTNM0EM0ne5yV4AqM6YPOKVoWzqFcLz2rx64X+oLvQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-icon-registry": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-input": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.5.0.tgz", + "integrity": "sha512-TlbSIRh2Z7xJxW0GEPENd369W1hHgr9Y8IIRE5RDllXzZc8yho4QXPJSDFQTiHMf41LIkOTfIkrQst5047FiXg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-input-file": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.5.0.tgz", + "integrity": "sha512-8h/qGED5KE7sb/YE7dHapZxcWXGm0qCPJft8AGOu/ZK/WdOUV1WHynLjV4yGVZgY9PVZGc+GQTzvdgwxxpltQw==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-action-bar": "1.5.0", + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-button": "1.5.0", + "@umbraco-ui/uui-file-dropzone": "1.5.0", + "@umbraco-ui/uui-icon": "1.5.0", + "@umbraco-ui/uui-icon-registry-essential": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-input-lock": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.5.0.tgz", + "integrity": "sha512-KBhZLLD+5qyibbcp0AiJo7V4e/+GiKouGz/rCk6/3vxEKpe8CtWekcHhjrdlsHcOluQeBcb1Pdqng0wC9UTO5Q==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-button": "1.5.0", + "@umbraco-ui/uui-icon": "1.5.0", + "@umbraco-ui/uui-input": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-input-password": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.5.0.tgz", + "integrity": "sha512-8wvQ/10jfufU0QWhK3gBVo5V/fzk4AuX8wPuieKZDY9Jnwkr7ugZ11DOJtaV3Az/4a0nrfF3TQ2gbBC7zHx2JA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-icon-registry-essential": "1.5.0", + "@umbraco-ui/uui-input": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-keyboard-shortcut": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.5.0.tgz", + "integrity": "sha512-KVTMHl6X0T4cUA3bUgM06xzwCN3VD5W3tZloF0i6e3PTHhkyCE5tKD/2Hizm56OGb+ifaI/oN3L1m7vEPC8IHw==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-label": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.5.0.tgz", + "integrity": "sha512-Sc6XuMEyivBEQDfMOA6JT7nW5H4/eD6dzUtUNabOwzCG5GUpvTMfRccpdjmzOvl9VCGNWtE9ikqCBZWexWA6YA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-loader": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.5.0.tgz", + "integrity": "sha512-lhl1KqRbM5NTp08fvxgzOsbHFz04z8/WjaOar6lqNnL0R+CcFtVWQrv69Opht9Sj1NdHESmHEVnX0yodod2LhQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-loader-bar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.5.0.tgz", + "integrity": "sha512-qUcVXi4i+ClozPc0Vfw7g90CLAQVj04F71xtatxDY5nhSWDEMEI6b/pXtN/B9TklkqfgE1mf/gRziFrpbVjLhA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-loader-circle": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.5.0.tgz", + "integrity": "sha512-059/DJDYbgOmr/LPXbiDaTkBcInmzUUu/YDtQt/SkZPCO33uuB7TDc+++cMgFYskdXBpqesNvVfZOUd4P6zJyA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-menu-item": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.5.0.tgz", + "integrity": "sha512-rmKuTz0Xgf0LyQRqs3tr2Z4O6oaNCd7UmI8kEbluk4yKpk5MU38BlFY9p39fpiEVUuzjcg9pBjrEyxrC/H9xjA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-loader-bar": "1.5.0", + "@umbraco-ui/uui-symbol-expand": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-modal": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.5.0.tgz", + "integrity": "sha512-q9g4rA8OYCPlOmZMES/O17NiAu18wtMxNHMuT6dADP2tuULE+TKT6A8vqC7aq8JkWOTAXRAFvTjTmcvm6L2pvg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-pagination": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.5.0.tgz", + "integrity": "sha512-I3gCWbyLRFvi5fAlezQZarvj7FuEZ7NVZbbKJxqEhbo1bwOxDMXlDNxIIrxSg3R8YAuDNP9Pbdw+rnQwupuOMQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-button": "1.5.0", + "@umbraco-ui/uui-button-group": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-popover": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.5.0.tgz", + "integrity": "sha512-Ab8UL4UGxTUn6hYbTqPrMtyGpQr3Xw1E/PVKG3+j+UrNw1Ro5piKgh0TahwxLnrsXWOPXfy53oaXNYsMGenndA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-popover-container": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover-container/-/uui-popover-container-1.5.0.tgz", + "integrity": "sha512-issjf86TwvwLA6sJOs5pLRMFY+WBc4oeTZiJMz5mhZ5C5UoRmU65L6RP/0UnzZ4ZGY2Gpdh2YatNnZ7hVMg5ig==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-progress-bar": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.5.0.tgz", + "integrity": "sha512-B/v7VsBBwo19Y+4NBRllt7Ls+WLQfx6vY57rfO8MQG7zxGznxpTSIYvd3wxdRuDsFQeVwwoYjF1/YBJ7iWUnEQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-radio": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.5.0.tgz", + "integrity": "sha512-3e52VZHcgHB/17eLTmiZwdm7ENgfX6AF4Dw+8H2x8jdRjyvt8lbykCq+6xewAZFsLAu7vTOEKtd2RhQFI2+hwg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-range-slider": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.5.0.tgz", + "integrity": "sha512-oHmIoF+KrHDWiOKonIWq7n94C6CzStBXrleS6iwCgWY++ayaHKCPlCuQIYp3BmGjnMQn8Ou0r2x/RuBPuraLVQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-ref": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.5.0.tgz", + "integrity": "sha512-wba/OP6b/mG5kp4bUgBBcBAAy3RWTbokVyjb52FR7nyqNMnIE/UBdgi0XeBx4j6lZeEbr5k5ZOGQ1knEHbPWyQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-ref-list": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.5.0.tgz", + "integrity": "sha512-sxs3hC97zDuFaV8mvXLAbqqtWk0kqDdHY9ORt9CxacdT36nQS58Sw60/plCryqoyp7P2cUZVtlEeff53OKOTCQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-ref-node": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.5.0.tgz", + "integrity": "sha512-bjmMgrIW+/4bmUXwMwFFaPrg2MeTxXssb6EpbBItJ+s0QhTEcTNyAD/DK3RlSMRE5VPO11sRwgCr06aIhklx0Q==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-icon": "1.5.0", + "@umbraco-ui/uui-ref": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-ref-node-data-type": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.5.0.tgz", + "integrity": "sha512-k14MI3cRELOmAwmtFeBzgCFw4+uin0JSqf85ZaqNkXSAmg+4I0ayUI6PGz+Jw66yGHvw3YNeUMKPmLO8l6M79A==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-ref-node": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-ref-node-document-type": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.5.0.tgz", + "integrity": "sha512-ouytDUaSls7Hsd0WaDy4wgfKMLpxlxx16WWyHlzX5lMyhkR+S3olyNZcgDRtz9xIQV+dVE3iDsUeQcNAigCdaw==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-ref-node": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-ref-node-form": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.5.0.tgz", + "integrity": "sha512-D86A1+ScVGTer2kci6Y9X4ZAhCnm4kxUi7bCFH7dn7oi/Fq8fhs3PBuA7mr1FrZgrPvXVdW+Qa7ldxxU58NIWA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-ref-node": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-ref-node-member": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.5.0.tgz", + "integrity": "sha512-/UPmUNk6KP2unKnJKjr1qGkdPlFGTRj3K7H/mczCY7IbtzEccdEswWJCdUy/doIkAKbDdaqKe3/9HBoA3JtWPw==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-ref-node": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-ref-node-package": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.5.0.tgz", + "integrity": "sha512-XkET8XKb3XxmjlIDrmtwm9o0QsaG81bcpUBEBA/wUC0OcJNrjTKyv6ciAVDP7HaW6XpN8XwsRbqdcrYwM8lXDQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-ref-node": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-ref-node-user": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.5.0.tgz", + "integrity": "sha512-9TrIr1JWw3cIkWfQrdv9iLRIqm/dd10d6uZEWaGJ/MuxyCywqMg/LSApV/NLapB4HXhIG4pGCiXvUa8OVW99ew==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-ref-node": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-scroll-container": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.5.0.tgz", + "integrity": "sha512-Xj5jnmCEDyRENmWtuPI1QYEMzrmi/9/LaajkPEIZEYVu2owI940F0viS5X+X/FvKehSxoSt9ainCwkLphgzNiw==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-select": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.5.0.tgz", + "integrity": "sha512-lcMiIM6WxF5YraIXAqSpujx3OJzq6Snfik0BUypTWbUZdKVQTgLPh3A6We9PdD6K64AX2Zk4eH8yhQ+5GNImzQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-slider": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.5.0.tgz", + "integrity": "sha512-Mp6xz7C7GbAuQ1Totd2WLzvS56ekx4l31mAvUvor0GqrUF/hHxwfrGZOAWoBqoTdKQAFKbZVSM782a+cwNv3hg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-symbol-expand": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.5.0.tgz", + "integrity": "sha512-ZCuGAJT2qFs4wQ6Z+g/qV3obv/SbriMnaIOGy6XTTAuMlh2+aNAwm33Je0wYKCTwHNUmnl427wTMEkQcMziD4g==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-symbol-file": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.5.0.tgz", + "integrity": "sha512-ClB/lT/ebyUBmPqExB2ZinMOo/bCMEgjGxjkXy2THX4lOLUqvjDNEKLq99MAREKSh/mmGq7iB3Z/hd9/EDu75Q==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-symbol-file-dropzone": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.5.0.tgz", + "integrity": "sha512-0YL88rFFI5SOzzORtm1VtMihN4if7r0CIRe5Q3Sv0WwHjrMfIM08DeONCgN2j+ZoKgnTvt9KpE1OGigshouRug==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-symbol-file-thumbnail": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.5.0.tgz", + "integrity": "sha512-/qkf6AdAIsRmUfsBdtFkFk5wPWw6JvSVHvgk/UvZulHHb2F8TamPSJfb6voh86Vq8DzVIcy3ZbqatxH7LZBY1g==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-symbol-folder": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.5.0.tgz", + "integrity": "sha512-Sxt4n5IBT+XIqu2nJxP4RnhourwC+1X5bD40YgUBmqZJ9KV//tox4zo2elU19WCeRZFkklZGfn2smLY1FD0OGg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-symbol-lock": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.5.0.tgz", + "integrity": "sha512-EH7tEPCB+PTyjWbW+bdekk4M5hcjvYYpCKTnl3Pdpzh0mrxHPt9xa8908JB0tG8n0m0EcP+L7k8pthUmkgpK7A==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-symbol-more": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.5.0.tgz", + "integrity": "sha512-EuhU4kle4swMFZnsguWPz77rOtrk0IQcXuEA60fjzFGJCwsg7yyu9Ns209IEUsYh5ktstj8pXKT8+ZDila5umg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-symbol-sort": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.5.0.tgz", + "integrity": "sha512-/cifoZXuZbDmuZFPD0rr95Gpuy18DnboOYb/Ir6G3PANJ0fWOhzykHUrdx18ItLzhhwfE3dcZk4EWcGrEkfnfg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-table": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.5.0.tgz", + "integrity": "sha512-tjhpEzBYCQdgieoXcIgcOjROrScF0Ifutz/6gmpcdrXYbgZ+YkWX7dSLAeQj3fzGebaPbNYzGOmGZA9/opZ1rg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-tabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.5.0.tgz", + "integrity": "sha512-0D5NLufis9Tzc5Vr+fl8Z0wABHyz1Tep76Qnx0nXyYzAZvdNq2IxThHbGqA1cb+FjVJSKdfp6ONfiPc/SIVAzA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-button": "1.5.0", + "@umbraco-ui/uui-popover-container": "1.5.0", + "@umbraco-ui/uui-symbol-more": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-tag": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.5.0.tgz", + "integrity": "sha512-OZGitHjdn4coj1x7F7zfeIx5M9NhGd8+CqpD915V9Qm8YlTQxFLq1M8tqjIxaYAB5EcHXuyzRpSUCrt/WUvipA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-textarea": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.5.0.tgz", + "integrity": "sha512-+zDqbYKYfaiG0IXEaQatUaWsD4umtkTtbCMnqVPMhxwneVoE9d69ejat2zLFUI/ERm3nKMyq/NRfxzXJgzlDng==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-toast-notification": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.5.0.tgz", + "integrity": "sha512-cFjz4/uZudR3yuSqK5gqzAio55ZOOxQAOc8bC5keS0HXL84JcDwrEP4/Nz7X/uUNUqauYZG/iBUirAvqfv7Osw==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-button": "1.5.0", + "@umbraco-ui/uui-css": "1.4.0", + "@umbraco-ui/uui-icon": "1.5.0", + "@umbraco-ui/uui-icon-registry-essential": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-toast-notification-container": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.5.0.tgz", + "integrity": "sha512-AB4kwgocUeDwkxiCYNH0AOMEtExDS6sEq9sk2i8AGDAEjprAB3m0HM9AlrA+T0V1GtSuv+Q1DEuCyxnVbuK0WQ==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-toast-notification": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-toast-notification-layout": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.5.0.tgz", + "integrity": "sha512-rM7cGCdMolhsndfZT9zGAPI9P3bl1lNpjDhWI124Mgx+KS8t2Q2h9O+7FGqFnjCTJOQES1pdQ+enl2NxCuEkNg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-css": "1.4.0" + } + }, + "node_modules/@umbraco-ui/uui-toast-notification-layout/node_modules/@umbraco-ui/uui-css": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.4.0.tgz", + "integrity": "sha512-HBCFPuXJijeZbjnjdqmg3oqOGB3RmpQKT/s/Uy0TSJfaQGfz0e73o2eRghYHWF2rdqHw6brKFrZTZHBVvCE/xA==", + "dev": true, + "dependencies": { + "lit": "^2.2.2" + } + }, + "node_modules/@umbraco-ui/uui-toast-notification/node_modules/@umbraco-ui/uui-css": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.4.0.tgz", + "integrity": "sha512-HBCFPuXJijeZbjnjdqmg3oqOGB3RmpQKT/s/Uy0TSJfaQGfz0e73o2eRghYHWF2rdqHw6brKFrZTZHBVvCE/xA==", + "dev": true, + "dependencies": { + "lit": "^2.2.2" + } + }, + "node_modules/@umbraco-ui/uui-toggle": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.5.0.tgz", + "integrity": "sha512-vsJSpBSmlrLzspCa1dGQGYXfc6RwTGTzSlNQdnzzP7qefVRP4GlOaqYV0TJhHMcYdbai+iEkrLznzJQvM9JFLA==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0", + "@umbraco-ui/uui-boolean-input": "1.5.0" + } + }, + "node_modules/@umbraco-ui/uui-visually-hidden": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-visually-hidden/-/uui-visually-hidden-1.5.0.tgz", + "integrity": "sha512-3Imqxp8+hvirakPogqzvRlU+uhshpGRdrEMU7phCS5VGzDEl8NL1BhxR31EQAw7DspwbD5non3ZwbTwLYydfCg==", + "dev": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.5.0" + } + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.18.20", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/lit": { + "version": "2.8.0", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^1.6.0", + "lit-element": "^3.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/lit-element": { + "version": "3.3.3", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.1.0", + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/lit-html": { + "version": "2.8.0", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.4.31", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/typescript": { + "version": "5.2.2", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/vite": { + "version": "4.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + } + } +} diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/package.json b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/package.json new file mode 100644 index 0000000..8768eed --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/package.json @@ -0,0 +1,19 @@ +{ + "name": "backoffice-organiser", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite build --watch --emptyOutDir", + "build": "tsc && vite build --emptyOutDir", + "preview": "vite preview" + }, + "dependencies": { + "lit": "^2.7.6" + }, + "devDependencies": { + "@umbraco-ui/uui": "^1.5.0", + "typescript": "^5.0.2", + "vite": "^4.4.5" + } +} diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/backoffice-organiser.ts b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/backoffice-organiser.ts new file mode 100644 index 0000000..ba09f7f --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/backoffice-organiser.ts @@ -0,0 +1,176 @@ +import {customElement, html, LitElement, property} from "lit-element"; + +enum OrganiseType { + Unknown = 0, + ContentTypes = 1, + MediaTypes = 2, + MemberTypes = 3, + DataTypes = 4, + All = 99 +} + +@customElement('backoffice-organiser') +export default class MyElement extends LitElement { + + @property() + types: string[]; + + @property() + selectedType: OrganiseType = OrganiseType.Unknown; + + @property() + loading: boolean = false; + + @property() + confirmRequired: boolean = false; + + @property() + modal: any = html``; + + response: any = null; + + constructor() { + super(); + this.types = Object.keys(OrganiseType).filter((v) => isNaN(Number(v)) && v !== 'Unknown') + } + + render() { + const toasts = []; + let modal = null; + if (this.confirmRequired) { + modal = this.renderConfirm(); + } + + if (this.response !== null) { + const message = this.response.message; + const success = !this.response.error; + const headline = success ? "Success" : "Error"; + const toast = this.renderToast(headline, message, success); + toasts.push(toast); + } + + const options = this.types.map(type => html` + ${type}`) + + const disableButton = this.selectedType === OrganiseType.Unknown; + const form = html` + +
+ + Select type to organise + + ${options} + + + +
+
+ + + ${toasts} + + `; + const loader = html` + + `; + // noinspection CssUnresolvedCustomProperty + return html` + + ${this.loading ? loader : form} + + + + ${modal} + + `; + } + + onChange = (event: any) => { + const val = event.currentTarget.value; + this.selectedType = this.stringToEnum(val.toString()) + }; + + onSubmit = (e: Event) => { + e.preventDefault(); + debugger; + const form = e.currentTarget as HTMLFormElement; + const isValid = form.checkValidity(); + if (!isValid) { + return; + } + + this.confirmRequired = true; + }; + + organiseType = async () => { + this.confirmRequired = false; + this.loading = true; + // @ts-ignore + const umbracoPath = window.Umbraco.Sys.ServerVariables.umbracoSettings.umbracoPath; + const response = await fetch(`${umbracoPath}/backoffice/api/BackOfficeOrganiser/Organise?type=${this.selectedType}`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json' + } + }); + + const data = await response.json(); + this.loading = false; + this.response = data; + }; + + stringToEnum = (value: string): OrganiseType => { + if (Object.values(OrganiseType).includes(value)) { + return value as unknown as OrganiseType; + } + return OrganiseType.All; + }; + + renderConfirm = () => html` + + + +

+ Organise ${this.selectedType}?

This cannot be undone! +

+ Cancel + + Confirm + +
+
+
+ `; + + private renderToast(headline: string, message: string, success: boolean = true) { + const color = success ? "success" : "danger"; + return html` + +

${headline}

+

${message}

+
+ `; + } + + private cancelOrganise() { + this.confirmRequired = false + } +} + +declare global { + interface HTMLElementTagNameMap { + 'backoffice-organiser': MyElement; + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/index.css b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/index.css new file mode 100644 index 0000000..6eb049d --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/index.css @@ -0,0 +1,39 @@ +/*:root {*/ +/* font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;*/ +/* line-height: 1.5;*/ +/* font-weight: 400;*/ + +/* color-scheme: light dark;*/ +/* color: rgba(255, 255, 255, 0.87);*/ +/* background-color: #242424;*/ + +/* font-synthesis: none;*/ +/* text-rendering: optimizeLegibility;*/ +/* -webkit-font-smoothing: antialiased;*/ +/* -moz-osx-font-smoothing: grayscale;*/ +/* -webkit-text-size-adjust: 100%;*/ +/*}*/ + +/*a {*/ +/* font-weight: 500;*/ +/* color: #646cff;*/ +/* text-decoration: inherit;*/ +/*}*/ +/*a:hover {*/ +/* color: #535bf2;*/ +/*}*/ + +/*body {*/ +/* margin: 0;*/ +/* display: flex;*/ +/* place-items: center;*/ +/* min-width: 320px;*/ +/* min-height: 100vh;*/ +/*}*/ + +/*@media (prefers-color-scheme: light) {*/ +/* :root {*/ +/* color: #213547;*/ +/* background-color: #ffffff;*/ +/* }*/ +/*}*/ diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/vite-env.d.ts b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/tsconfig.json b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/tsconfig.json new file mode 100644 index 0000000..69e31ac --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "experimentalDecorators": true, + "useDefineForClassFields": false, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/vite.config.ts b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/vite.config.ts new file mode 100644 index 0000000..d39b0b5 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/vite.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from "vite"; + +export default defineConfig({ + build: { + lib: { + entry: "src/backoffice-organiser.ts", // your web component source file + formats: ["es"], + }, + outDir: "../jcdcdev.Umbraco.BackOfficeOrganiser/wwwroot/App_Plugins/jcdcdev.Umbraco.BackOfficeOrganiser/dist/", // your web component will be saved in this location + sourcemap: true, + rollupOptions: { + external: [/^@umbraco-ui/], + }, + }, +}); \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.sln b/src/jcdcdev.Umbraco.BackOfficeOrganiser.sln new file mode 100644 index 0000000..cca073c --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.sln @@ -0,0 +1,43 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.4.33020.496 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5A6D3C2C-E986-4648-ABD7-ED442746EEBC}" + ProjectSection(SolutionItems) = preProject + ..\LICENSE = ..\LICENSE + ..\.github\README.md = ..\.github\README.md + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "jcdcdev.Umbraco.BackOfficeOrganiser", "jcdcdev.Umbraco.BackOfficeOrganiser\jcdcdev.Umbraco.BackOfficeOrganiser.csproj", "{EC825C30-A30B-4ABF-AD64-FCA92C9EA75C}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "jcdcdev.Umbraco.BackOfficeOrganiser.TestSite", "jcdcdev.Umbraco.BackOfficeOrganiser.TestSite\jcdcdev.Umbraco.BackOfficeOrganiser.TestSite.csproj", "{989D710F-EC50-4EFF-AE9D-26A68694FDB5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EC825C30-A30B-4ABF-AD64-FCA92C9EA75C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EC825C30-A30B-4ABF-AD64-FCA92C9EA75C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EC825C30-A30B-4ABF-AD64-FCA92C9EA75C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EC825C30-A30B-4ABF-AD64-FCA92C9EA75C}.Release|Any CPU.Build.0 = Release|Any CPU + {989D710F-EC50-4EFF-AE9D-26A68694FDB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {989D710F-EC50-4EFF-AE9D-26A68694FDB5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {989D710F-EC50-4EFF-AE9D-26A68694FDB5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {989D710F-EC50-4EFF-AE9D-26A68694FDB5}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6F07004F-9903-4AEB-9ED0-BE57A0326D20} + EndGlobalSection +EndGlobal +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Github", "Github", "{5830A86F-99DA-459D-82FD-A24613A9F22F}" + ProjectSection(SolutionItems) = preProject + ..\.github\workflows\release.yml = ..\.github\workflows\release.yml + ..\.github\workflows\build.yml = ..\.github\workflows\build.yml + EndProjectSection +EndProject diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/BackOfficeOrganiserController.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/BackOfficeOrganiserController.cs new file mode 100644 index 0000000..bc55e58 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/BackOfficeOrganiserController.cs @@ -0,0 +1,51 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Models; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Umbraco.Cms.Web.BackOffice.Filters; +using Umbraco.Cms.Web.Common.Attributes; +using Umbraco.Cms.Web.Common.Authorization; +using Umbraco.Cms.Web.Common.Controllers; +using Umbraco.Cms.Web.Common.Filters; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser; + +[IsBackOffice] +[UmbracoUserTimeoutFilter] +[Authorize(Policy = AuthorizationPolicies.BackOfficeAccess)] +[DisableBrowserCache] +[UmbracoRequireHttps] +public class BackOfficeOrganiserController : UmbracoApiController +{ + public IActionResult Organise(string type) + { + var organiseType = DetermineOrganiseType(type); + var attempt = _service.Organise(organiseType); + if (!attempt.Success) + { + return BadRequest(OrganiseResponse.Fail($"Failed to organise {type}")); + } + + return Ok(OrganiseResponse.Success($"Successfully organised {type}")); + } + + private static OrganiseType DetermineOrganiseType(string type) + { + var organise = type.ToLowerInvariant() switch + { + "all" => OrganiseType.All, + "contenttypes" => OrganiseType.ContentTypes, + "mediatypes" => OrganiseType.MediaTypes, + "membertypes" => OrganiseType.MemberTypes, + "datatypes" => OrganiseType.DataTypes, + _ => OrganiseType.Unknown + }; + return organise; + } + + private readonly IBackOfficeOrganiserService _service; + + public BackOfficeOrganiserController(IBackOfficeOrganiserService service) + { + _service = service; + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/BackOfficeOrganiserService.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/BackOfficeOrganiserService.cs new file mode 100644 index 0000000..26f5f79 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/BackOfficeOrganiserService.cs @@ -0,0 +1,88 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Models; +using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers; +using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Models; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser; + +public class BackOfficeOrganiserService : IBackOfficeOrganiserService +{ + private readonly IBackOfficeOrganiser _dataTypeOrganiser; + private readonly IBackOfficeOrganiser _contentTypeOrganiser; + private readonly IBackOfficeOrganiser _mediaTypeOrganiser; + private readonly IBackOfficeOrganiser _memberTypeOrganiser; + + public BackOfficeOrganiserService( + IBackOfficeOrganiser dataTypeOrganiser, + IBackOfficeOrganiser contentTypeOrganiser, + IBackOfficeOrganiser mediaTypeOrganiser, + IBackOfficeOrganiser memberTypeOrganiser) + { + _dataTypeOrganiser = dataTypeOrganiser; + _contentTypeOrganiser = contentTypeOrganiser; + _mediaTypeOrganiser = mediaTypeOrganiser; + _memberTypeOrganiser = memberTypeOrganiser; + } + + public void OrganiseDataTypes() + { + _dataTypeOrganiser.Organise(); + } + + public Attempt Organise(OrganiseType organise) + { + try + { + switch (organise) + { + case OrganiseType.ContentTypes: + OrganiseContentTypes(); + break; + case OrganiseType.MediaTypes: + OrganiseMediaTypes(); + break; + case OrganiseType.MemberTypes: + OrganiseMemberTypes(); + break; + case OrganiseType.DataTypes: + OrganiseDataTypes(); + break; + case OrganiseType.All: + OrganiseAll(); + break; + default: + throw new ArgumentOutOfRangeException(nameof(organise), organise, + "Failed to determine OrganiseType"); + } + } + catch (Exception ex) + { + return Attempt.Fail(ex); + } + + return Attempt.Succeed(organise); + } + + private void OrganiseAll() + { + OrganiseContentTypes(); + OrganiseMediaTypes(); + OrganiseMemberTypes(); + OrganiseDataTypes(); + } + + private void OrganiseMemberTypes() + { + _memberTypeOrganiser.Organise(); + } + + private void OrganiseMediaTypes() + { + _mediaTypeOrganiser.Organise(); + } + + private void OrganiseContentTypes() + { + _contentTypeOrganiser.Organise(); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Composer.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Composer.cs new file mode 100644 index 0000000..799a009 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Composer.cs @@ -0,0 +1,37 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using jcdcdev.Umbraco.BackOfficeOrganiser.Models; +using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers; +using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.ContentTypes; +using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; +using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MediaTypes; +using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MemberTypes; +using Lucene.Net.Search; +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Cms.Core.Composing; +using Umbraco.Cms.Core.DependencyInjection; +using Umbraco.Cms.Core.Models; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser; + +public class Composer : IComposer +{ + public void Compose(IUmbracoBuilder builder) + { + builder.Services.AddOptions() + .BindConfiguration(BackOfficeOrganiserOptions.SectionName); + + builder.Services.AddSingleton(); + + builder.Services.AddSingleton, DataTypeOrganiser>(); + builder.Services.AddSingleton, ContentTypeOrganiser>(); + builder.Services.AddSingleton, MemberTypeOrganiser>(); + builder.Services.AddSingleton, MediaTypeOrganiser>(); + + builder.ManifestFilters().Append(); + + builder.DataTypeOrganiseActions().Append(); + builder.ContentTypeOrganiseActions().Append(); + builder.MediaTypeOrganiseActions().Append(); + builder.MemberTypeOrganiseActions().Append(); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/ContentTypeBaseServiceExtensions.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/ContentTypeBaseServiceExtensions.cs new file mode 100644 index 0000000..88adea7 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/ContentTypeBaseServiceExtensions.cs @@ -0,0 +1,42 @@ +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; +using Umbraco.Extensions; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; + +public static class ContentTypeBaseServiceExtensions +{ + public static IEnumerable GetAllContainers(this IContentTypeBaseService service) where T : IContentTypeComposition => + service.GetContainers(Array.Empty()); + + public static void DeleteAllEmptyContainers(this IContentTypeBaseService service) where T : IContentTypeComposition + { + var contentTypes = service.GetAll(); + var lookup = contentTypes.GroupBy(x => x.ParentId).ToLookup(x => x.Key, x => x.Count()); + var containers = service.GetAllContainers(); + foreach (var container in containers) + { + var hasChildren = lookup.Contains(container.Id); + if (hasChildren) + { + continue; + } + + service.DeleteContainer(container.Id); + } + } + + public static EntityContainer GetOrCreateFolder(this IContentTypeBaseService service, string folder, int parentId = -1) where T : IContentTypeComposition + { + var container = service + .GetAllContainers() + .FirstOrDefault(x => x.ParentId == parentId && x.Name.InvariantEquals(folder)); + + if (container == null) + { + container = service.CreateContainer(parentId, new Guid(), folder).Result?.Entity; + } + + return container ?? throw new Exception(); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/DataTypeExtensions.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/DataTypeExtensions.cs new file mode 100644 index 0000000..be29dbd --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/DataTypeExtensions.cs @@ -0,0 +1,94 @@ +using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Models; +using Umbraco.Extensions; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; + +public static class DataTypeExtensions +{ + private static readonly Guid[] Guids = + { + Constants.DataTypes.Guids.ContentPickerGuid, + Constants.DataTypes.Guids.MemberPickerGuid, + Constants.DataTypes.Guids.MediaPickerGuid, + Constants.DataTypes.Guids.MultipleMediaPickerGuid, + Constants.DataTypes.Guids.MediaPicker3Guid, + Constants.DataTypes.Guids.MediaPicker3MultipleGuid, + Constants.DataTypes.Guids.MediaPicker3SingleImageGuid, + Constants.DataTypes.Guids.MediaPicker3MultipleImagesGuid, + Constants.DataTypes.Guids.RelatedLinksGuid, + Constants.DataTypes.Guids.MemberGuid, + Constants.DataTypes.Guids.ImageCropperGuid, + Constants.DataTypes.Guids.TagsGuid, + Constants.DataTypes.Guids.ListViewContentGuid, + Constants.DataTypes.Guids.ListViewMediaGuid, + Constants.DataTypes.Guids.ListViewMembersGuid, + Constants.DataTypes.Guids.DatePickerWithTimeGuid, + Constants.DataTypes.Guids.ApprovedColorGuid, + Constants.DataTypes.Guids.DropdownMultipleGuid, + Constants.DataTypes.Guids.RadioboxGuid, + Constants.DataTypes.Guids.DatePickerGuid, + Constants.DataTypes.Guids.DropdownGuid, + Constants.DataTypes.Guids.CheckboxListGuid, + Constants.DataTypes.Guids.CheckboxGuid, + Constants.DataTypes.Guids.NumericGuid, + Constants.DataTypes.Guids.RichtextEditorGuid, + Constants.DataTypes.Guids.TextstringGuid, + Constants.DataTypes.Guids.TextareaGuid, + Constants.DataTypes.Guids.UploadGuid, + Constants.DataTypes.Guids.UploadVideoGuid, + Constants.DataTypes.Guids.UploadAudioGuid, + Constants.DataTypes.Guids.UploadArticleGuid, + Constants.DataTypes.Guids.UploadVectorGraphicsGuid, + Constants.DataTypes.Guids.LabelStringGuid, + Constants.DataTypes.Guids.LabelIntGuid, + Constants.DataTypes.Guids.LabelBigIntGuid, + Constants.DataTypes.Guids.LabelDateTimeGuid, + Constants.DataTypes.Guids.LabelTimeGuid, + Constants.DataTypes.Guids.LabelDecimalGuid, + }; + + private static readonly string[] Aliases = + { + Constants.PropertyEditors.Aliases.BlockList, + Constants.PropertyEditors.Aliases.CheckBoxList, + Constants.PropertyEditors.Aliases.ColorPicker, + Constants.PropertyEditors.Aliases.ColorPickerEyeDropper, + Constants.PropertyEditors.Aliases.ContentPicker, + Constants.PropertyEditors.Aliases.DateTime, + Constants.PropertyEditors.Aliases.DropDownListFlexible, + Constants.PropertyEditors.Aliases.Grid, + Constants.PropertyEditors.Aliases.ImageCropper, + Constants.PropertyEditors.Aliases.Integer, + Constants.PropertyEditors.Aliases.Decimal, + Constants.PropertyEditors.Aliases.ListView, + Constants.PropertyEditors.Aliases.MediaPicker, + Constants.PropertyEditors.Aliases.MediaPicker3, + Constants.PropertyEditors.Aliases.MultipleMediaPicker, + Constants.PropertyEditors.Aliases.MemberPicker, + Constants.PropertyEditors.Aliases.MemberGroupPicker, + Constants.PropertyEditors.Aliases.MultiNodeTreePicker, + Constants.PropertyEditors.Aliases.MultipleTextstring, + Constants.PropertyEditors.Aliases.Label, + Constants.PropertyEditors.Aliases.PickerRelations, + Constants.PropertyEditors.Aliases.RadioButtonList, + Constants.PropertyEditors.Aliases.Slider, + Constants.PropertyEditors.Aliases.Tags, + Constants.PropertyEditors.Aliases.TextBox, + Constants.PropertyEditors.Aliases.TextArea, + Constants.PropertyEditors.Aliases.TinyMce, + Constants.PropertyEditors.Aliases.Boolean, + Constants.PropertyEditors.Aliases.MarkdownEditor, + Constants.PropertyEditors.Aliases.UserPicker, + Constants.PropertyEditors.Aliases.UploadField, + Constants.PropertyEditors.Aliases.EmailAddress, + Constants.PropertyEditors.Aliases.NestedContent, + Constants.PropertyEditors.Aliases.MultiUrlPicker, + }; + + public static bool IsUmbracoEditor(this IDataType dataType) => + Aliases.InvariantContains(dataType.EditorAlias); + + public static bool IsInternalUmbracoEditor(this IDataType dataType) => + Guids.Contains(dataType.Key); +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/DataTypeServiceExtensions.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/DataTypeServiceExtensions.cs new file mode 100644 index 0000000..74aa603 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/DataTypeServiceExtensions.cs @@ -0,0 +1,43 @@ +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; +using Umbraco.Extensions; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; + +public static class DataTypeServiceExtensions +{ + public static IEnumerable GetAllContainers(this IDataTypeService dataTypeService) => + dataTypeService.GetContainers(Array.Empty()); + + public static void DeleteAllEmptyContainers(this IDataTypeService dataTypeService) + { + var dataTypes = dataTypeService.GetAll(); + var lookup = dataTypes.GroupBy(x => x.ParentId).ToLookup(x => x.Key, x => x.Count()); + var containers = dataTypeService.GetAllContainers(); + foreach (var container in containers) + { + var hasChildren = lookup.Contains(container.Id); + if (hasChildren) + { + continue; + } + + dataTypeService.DeleteContainer(container.Id); + } + } + + public static EntityContainer GetOrCreateFolder(this IDataTypeService dataTypeService, string folder, + int parentId = -1) + { + var dts = dataTypeService + .GetAllContainers() + .FirstOrDefault(x => x.ParentId == parentId && x.Name.InvariantEquals(folder)); + + if (dts == null) + { + dts = dataTypeService.CreateContainer(parentId, new Guid(), folder).Result?.Entity; + } + + return dts ?? throw new Exception(); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/MediaTypeExtensions.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/MediaTypeExtensions.cs new file mode 100644 index 0000000..6679b40 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/MediaTypeExtensions.cs @@ -0,0 +1,28 @@ +using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Models; +using Umbraco.Extensions; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; + +public static class MediaTypeExtensions +{ + private static readonly string[] MediaTypes = + { + Constants.Conventions.MediaTypes.File, + Constants.Conventions.MediaTypes.Folder, + Constants.Conventions.MediaTypes.Image, + Constants.Conventions.MediaTypes.Video, + Constants.Conventions.MediaTypes.Audio, + Constants.Conventions.MediaTypes.Article, + Constants.Conventions.MediaTypes.VectorGraphics, + Constants.Conventions.MediaTypes.VideoAlias, + Constants.Conventions.MediaTypes.AudioAlias, + Constants.Conventions.MediaTypes.ArticleAlias, + Constants.Conventions.MediaTypes.VectorGraphicsAlias + }; + + public static bool IsInternal(this IMediaType mediaType) + { + return MediaTypes.InvariantContains(mediaType.Alias); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/UmbracoBuilderExtensions.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/UmbracoBuilderExtensions.cs new file mode 100644 index 0000000..0897395 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/UmbracoBuilderExtensions.cs @@ -0,0 +1,22 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.ContentTypes; +using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; +using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MediaTypes; +using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MemberTypes; +using Umbraco.Cms.Core.DependencyInjection; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; + +public static class UmbracoBuilderExtensions +{ + public static DataTypeOrganiseActionCollectionBuilder DataTypeOrganiseActions(this IUmbracoBuilder builder) + => builder.WithCollectionBuilder(); + + public static ContentTypeOrganiseActionCollectionBuilder ContentTypeOrganiseActions(this IUmbracoBuilder builder) + => builder.WithCollectionBuilder(); + + public static MediaTypeOrganiseActionCollectionBuilder MediaTypeOrganiseActions(this IUmbracoBuilder builder) + => builder.WithCollectionBuilder(); + + public static MemberTypeOrganiseActionCollectionBuilder MemberTypeOrganiseActions(this IUmbracoBuilder builder) + => builder.WithCollectionBuilder(); +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/IBackOfficeOrganiserService.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/IBackOfficeOrganiserService.cs new file mode 100644 index 0000000..3d7226e --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/IBackOfficeOrganiserService.cs @@ -0,0 +1,9 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Models; +using Umbraco.Cms.Core; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser; + +public interface IBackOfficeOrganiserService +{ + Attempt Organise(OrganiseType organise); +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/ManifestFilter.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/ManifestFilter.cs new file mode 100644 index 0000000..23bba3a --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/ManifestFilter.cs @@ -0,0 +1,16 @@ +using Umbraco.Cms.Core.Manifest; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser; + +internal class ManifestFilter : IManifestFilter +{ + public void Filter(List manifests) + { + manifests.Add(new PackageManifest + { + PackageName = "jcdcdev.Umbraco.BackOfficeOrganiser", + Version = GetType().Assembly.GetName().Version?.ToString(3) ?? "0.1.0", + AllowPackageTelemetry = true + }); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/BackOfficeOrganiserOptions.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/BackOfficeOrganiserOptions.cs new file mode 100644 index 0000000..02ab1ea --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/BackOfficeOrganiserOptions.cs @@ -0,0 +1,7 @@ +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Models; + +public class BackOfficeOrganiserOptions +{ + public DataTypeOptions DataTypes { get; set; } = new(); + public static string SectionName => "BackOfficeOrganiser"; +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/DataTypeOptions.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/DataTypeOptions.cs new file mode 100644 index 0000000..2194bbb --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/DataTypeOptions.cs @@ -0,0 +1,8 @@ +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Models; + +public class DataTypeOptions +{ + public string InternalFolderName { get; set; } = "🔒 Internal"; + public string ThirdPartyFolderName { get; set; } = "🦄 Third Party"; + public string CustomFolderName { get; set; } = "🔧 Custom"; +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/OrganiseResponse.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/OrganiseResponse.cs new file mode 100644 index 0000000..7e0a37c --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/OrganiseResponse.cs @@ -0,0 +1,24 @@ +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Models; + +public class OrganiseResponse +{ + public static OrganiseResponse Success(string? message = null) + { + return new OrganiseResponse(message, true); + } + + public static OrganiseResponse Fail(string? message = null) + { + return new OrganiseResponse(message, false); + } + + private OrganiseResponse(string? message, bool success) + { + Message = message ?? string.Empty; + Error = !success; + } + + public bool Error { get; } + + public string Message { get; } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/OrganiseType.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/OrganiseType.cs new file mode 100644 index 0000000..6bc4ed4 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/OrganiseType.cs @@ -0,0 +1,11 @@ +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Models; + +public enum OrganiseType +{ + Unknown = 0, + ContentTypes = 1, + MediaTypes = 2, + MemberTypes = 3, + DataTypes = 4, + All = 99 +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollection.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollection.cs new file mode 100644 index 0000000..90a5792 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollection.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Composing; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.ContentTypes; + +public class ContentTypeOrganiseActionCollection : BuilderCollectionBase +{ + public ContentTypeOrganiseActionCollection(Func> items) + : base(items) + { + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollectionBuilder.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollectionBuilder.cs new file mode 100644 index 0000000..adaeaa1 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollectionBuilder.cs @@ -0,0 +1,8 @@ +using Umbraco.Cms.Core.Composing; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.ContentTypes; + +public class ContentTypeOrganiseActionCollectionBuilder : OrderedCollectionBuilderBase +{ + protected override ContentTypeOrganiseActionCollectionBuilder This => this; +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs new file mode 100644 index 0000000..5ad83be --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs @@ -0,0 +1,29 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.ContentTypes; + +public class ContentTypeOrganiser : IBackOfficeOrganiser +{ + private readonly IContentTypeService _contentTypeService; + private readonly ContentTypeOrganiseActionCollection _organiseActions; + + public ContentTypeOrganiser(IContentTypeService contentTypeService, ContentTypeOrganiseActionCollection organiseActions) + { + _contentTypeService = contentTypeService; + _organiseActions = organiseActions; + } + + public void Organise() + { + var contentTypes = _contentTypeService.GetAll().ToList(); + foreach (var contentType in contentTypes) + { + var organiser = _organiseActions.FirstOrDefault(x => x.CanMove(contentType, _contentTypeService)); + organiser?.Move(contentType, _contentTypeService); + } + + _contentTypeService.DeleteAllEmptyContainers(); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs new file mode 100644 index 0000000..09d22e5 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs @@ -0,0 +1,38 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using StackExchange.Profiling.Internal; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.ContentTypes; + +public class DefaultContentTypeOrganiseAction : IContentTypeOrganiseAction +{ + public bool CanMove(IContentType contentType, IContentTypeService contentTypeService) => !contentType.IsContainer; + + public void Move(IContentType contentType, IContentTypeService contentTypeService) + { + var folderId = -1; + var folderName = string.Empty; + var isComposition = contentTypeService.GetComposedOf(contentType.Id).Any(); + + if (contentType.AllowedTemplates?.Any() ?? false) + { + folderName = "Pages"; + } + else if (isComposition) + { + folderName = "Compositions"; + } + else if (contentType.IsElement) + { + folderName = "Element Types"; + } + + if (!folderName.IsNullOrWhiteSpace()) + { + folderId = contentTypeService.GetOrCreateFolder(folderName).Id; + } + + contentTypeService.Move(contentType, folderId); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/IContentTypeOrganiseAction.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/IContentTypeOrganiseAction.cs new file mode 100644 index 0000000..ad59b7f --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/IContentTypeOrganiseAction.cs @@ -0,0 +1,10 @@ +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.ContentTypes; + +public interface IContentTypeOrganiseAction +{ + public bool CanMove(IContentType contentType, IContentTypeService contentTypeService); + public void Move(IContentType contentType, IContentTypeService contentTypeService); +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollection.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollection.cs new file mode 100644 index 0000000..4e00722 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollection.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Composing; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; + +public class DataTypeOrganiseActionCollection : BuilderCollectionBase +{ + public DataTypeOrganiseActionCollection(Func> items) + : base(items) + { + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollectionBuilder.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollectionBuilder.cs new file mode 100644 index 0000000..0488b14 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollectionBuilder.cs @@ -0,0 +1,8 @@ +using Umbraco.Cms.Core.Composing; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; + +public class DataTypeOrganiseActionCollectionBuilder : OrderedCollectionBuilderBase +{ + protected override DataTypeOrganiseActionCollectionBuilder This => this; +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiser.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiser.cs new file mode 100644 index 0000000..ceb07ea --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiser.cs @@ -0,0 +1,29 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; + +public class DataTypeOrganiser : IBackOfficeOrganiser +{ + private readonly IDataTypeService _dataTypeService; + private readonly DataTypeOrganiseActionCollection _organiseActions; + + public DataTypeOrganiser(IDataTypeService dataTypeService, DataTypeOrganiseActionCollection organiseActions) + { + _dataTypeService = dataTypeService; + _organiseActions = organiseActions; + } + + public void Organise() + { + var dataTypes = _dataTypeService.GetAll().ToList(); + foreach (var dataType in dataTypes) + { + var organiser = _organiseActions.FirstOrDefault(x => x.CanMove(dataType, _dataTypeService)); + organiser?.Move(dataType, _dataTypeService); + } + + _dataTypeService.DeleteAllEmptyContainers(); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs new file mode 100644 index 0000000..3d23de9 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs @@ -0,0 +1,103 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using jcdcdev.Umbraco.BackOfficeOrganiser.Models; +using Microsoft.Extensions.Options; +using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; + +public class DefaultDataTypeOrganiseAction : IDataTypeOrganiseAction +{ + private readonly BackOfficeOrganiserOptions _options; + + public DefaultDataTypeOrganiseAction(IOptions options) + { + _options = options.Value; + } + + public bool CanMove(IDataType dataType, IDataTypeService dataTypeService) => true; + + public void Move(IDataType dataType, IDataTypeService dataTypeService) + { + var parentFolderId = -1; + if (dataType.IsInternalUmbracoEditor()) + { + var internalFolder = dataTypeService.GetOrCreateFolder(_options.DataTypes.InternalFolderName); + parentFolderId = internalFolder.Id; + } + else if (dataType.IsUmbracoEditor()) + { + var internalFolder = dataTypeService.GetOrCreateFolder(_options.DataTypes.CustomFolderName); + parentFolderId = internalFolder.Id; + } + else + { + var internalFolder = dataTypeService.GetOrCreateFolder(_options.DataTypes.ThirdPartyFolderName); + parentFolderId = internalFolder.Id; + } + + var folder = GetFolderName(dataType); + + var dataTypeFolder = dataTypeService.GetOrCreateFolder(folder, parentFolderId); + dataTypeService.Move(dataType, dataTypeFolder.Id); + } + + private static string ResolveDataTypeFolderName(IDataType dataType) + { + var segments = dataType.EditorAlias.Split(".").SkipLast(1); + return string.Join(".", segments); + } + + private static string GetFolderName(IDataType dataType) + { + var folder = dataType.EditorAlias switch + { + Constants.PropertyEditors.Aliases.BlockList => "Block List", + + Constants.PropertyEditors.Aliases.NestedContent => "Nested Content", + + Constants.PropertyEditors.Aliases.Grid => "Grid", + Constants.PropertyEditors.Aliases.ImageCropper => "Image Cropper", + + Constants.PropertyEditors.Aliases.ListView => "List View", + + Constants.PropertyEditors.Aliases.Boolean => "Checkbox", + Constants.PropertyEditors.Aliases.UploadField => "Upload", + + Constants.PropertyEditors.Aliases.Tags => "Tags", + + Constants.PropertyEditors.Aliases.CheckBoxList => "List", + Constants.PropertyEditors.Aliases.DropDownListFlexible => "List", + Constants.PropertyEditors.Aliases.RadioButtonList => "List", + + Constants.PropertyEditors.Aliases.ColorPickerEyeDropper => "Picker", + Constants.PropertyEditors.Aliases.ColorPicker => "Picker", + Constants.PropertyEditors.Aliases.ContentPicker => "Picker", + Constants.PropertyEditors.Aliases.MediaPicker => "Picker", + Constants.PropertyEditors.Aliases.MultipleMediaPicker => "Picker", + Constants.PropertyEditors.Aliases.MemberPicker => "Picker", + Constants.PropertyEditors.Aliases.MemberGroupPicker => "Picker", + Constants.PropertyEditors.Aliases.MultiNodeTreePicker => "Picker", + Constants.PropertyEditors.Aliases.MediaPicker3 => "Picker", + Constants.PropertyEditors.Aliases.UserPicker => "Picker", + Constants.PropertyEditors.Aliases.MultiUrlPicker => "Picker", + Constants.PropertyEditors.Aliases.PickerRelations => "Picker", + + Constants.PropertyEditors.Aliases.Decimal => "Text", + Constants.PropertyEditors.Aliases.Slider => "Text", + Constants.PropertyEditors.Aliases.Integer => "Text", + Constants.PropertyEditors.Aliases.DateTime => "Text", + Constants.PropertyEditors.Aliases.MultipleTextstring => "Text", + Constants.PropertyEditors.Aliases.TextBox => "Text", + Constants.PropertyEditors.Aliases.TextArea => "Text", + Constants.PropertyEditors.Aliases.TinyMce => "Text", + Constants.PropertyEditors.Aliases.EmailAddress => "Text", + Constants.PropertyEditors.Aliases.MarkdownEditor => "Text", + Constants.PropertyEditors.Aliases.Label => "Text", + + _ => ResolveDataTypeFolderName(dataType) + }; + return folder; + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/IDataTypeOrganiseAction.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/IDataTypeOrganiseAction.cs new file mode 100644 index 0000000..452a8ed --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/IDataTypeOrganiseAction.cs @@ -0,0 +1,10 @@ +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; + +public interface IDataTypeOrganiseAction +{ + public bool CanMove(IDataType dataType, IDataTypeService dataTypeService); + public void Move(IDataType dataType, IDataTypeService dataTypeService); +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/IBackOfficeOrganiser.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/IBackOfficeOrganiser.cs new file mode 100644 index 0000000..2aba2d4 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/IBackOfficeOrganiser.cs @@ -0,0 +1,6 @@ +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers; + +public interface IBackOfficeOrganiser +{ + void Organise(); +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs new file mode 100644 index 0000000..dd0f6d4 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs @@ -0,0 +1,48 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using StackExchange.Profiling.Internal; +using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MediaTypes; + +public class DefaultMediaTypeOrganiseAction : IMediaTypeOrganiseAction +{ + public bool CanMove(IMediaType mediaType, IMediaTypeService mediaTypeService) => !mediaType.IsContainer; + + public void Move(IMediaType mediaType, IMediaTypeService mediaTypeService) + { + var folderId = -1; + var parentId = -1; + var folderName = string.Empty; + + if (mediaType.IsInternal()) + { + parentId = mediaTypeService.GetOrCreateFolder("Internal").Id; + folderId = parentId; + folderName = mediaType.Alias switch + { + Constants.Conventions.MediaTypes.File => string.Empty, + Constants.Conventions.MediaTypes.Folder => string.Empty, + Constants.Conventions.MediaTypes.VideoAlias => "Video", + Constants.Conventions.MediaTypes.AudioAlias => "Audio", + Constants.Conventions.MediaTypes.ArticleAlias => "Text File", + Constants.Conventions.MediaTypes.VectorGraphicsAlias => "Image", + Constants.Conventions.MediaTypes.Image => "Image", + _ => folderName + }; + } + + if (mediaType.IsElement) + { + folderName = "Element Types"; + } + + if (!folderName.IsNullOrWhiteSpace()) + { + folderId = mediaTypeService.GetOrCreateFolder(folderName, parentId).Id; + } + + mediaTypeService.Move(mediaType, folderId); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/IMediaTypeOrganiseAction.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/IMediaTypeOrganiseAction.cs new file mode 100644 index 0000000..342e445 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/IMediaTypeOrganiseAction.cs @@ -0,0 +1,10 @@ +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MediaTypes; + +public interface IMediaTypeOrganiseAction +{ + public bool CanMove(IMediaType mediaType, IMediaTypeService mediaTypeService); + public void Move(IMediaType mediaType, IMediaTypeService mediaTypeService); +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollection.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollection.cs new file mode 100644 index 0000000..7fd6d68 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollection.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Composing; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MediaTypes; + +public class MediaTypeOrganiseActionCollection : BuilderCollectionBase +{ + public MediaTypeOrganiseActionCollection(Func> items) + : base(items) + { + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollectionBuilder.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollectionBuilder.cs new file mode 100644 index 0000000..17648ae --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollectionBuilder.cs @@ -0,0 +1,8 @@ +using Umbraco.Cms.Core.Composing; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MediaTypes; + +public class MediaTypeOrganiseActionCollectionBuilder : OrderedCollectionBuilderBase +{ + protected override MediaTypeOrganiseActionCollectionBuilder This => this; +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiser.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiser.cs new file mode 100644 index 0000000..b41567e --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiser.cs @@ -0,0 +1,29 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MediaTypes; + +public class MediaTypeOrganiser : IBackOfficeOrganiser +{ + private readonly IMediaTypeService _mediaTypeService; + private readonly MediaTypeOrganiseActionCollection _organiseActions; + + public MediaTypeOrganiser(IMediaTypeService mediaTypeService, MediaTypeOrganiseActionCollection organiseActions) + { + _mediaTypeService = mediaTypeService; + _organiseActions = organiseActions; + } + + public void Organise() + { + var mediaTypes = _mediaTypeService.GetAll().ToList(); + foreach (var mediaType in mediaTypes) + { + var organiser = _organiseActions.FirstOrDefault(x => x.CanMove(mediaType, _mediaTypeService)); + organiser?.Move(mediaType, _mediaTypeService); + } + + _mediaTypeService.DeleteAllEmptyContainers(); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs new file mode 100644 index 0000000..31bed13 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs @@ -0,0 +1,33 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using StackExchange.Profiling.Internal; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MemberTypes; + +public class DefaultMemberTypeOrganiseAction : IMemberTypeOrganiseAction +{ + public bool CanMove(IMemberType memberType, IMemberTypeService memberTypeService) => !memberType.IsContainer; + + public void Move(IMemberType memberType, IMemberTypeService memberTypeService) + { + var folderId = -1; + var folderName = string.Empty; + + if (memberType.CompositionIds().Any()) + { + folderName = "Compositions"; + } + else if (memberType.IsElement) + { + folderName = "Element Types"; + } + + if (!folderName.IsNullOrWhiteSpace()) + { + folderId = memberTypeService.GetOrCreateFolder(folderName).Id; + } + + memberTypeService.Move(memberType, folderId); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/IMemberTypeOrganiseAction.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/IMemberTypeOrganiseAction.cs new file mode 100644 index 0000000..e1746e0 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/IMemberTypeOrganiseAction.cs @@ -0,0 +1,10 @@ +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MemberTypes; + +public interface IMemberTypeOrganiseAction +{ + public bool CanMove(IMemberType memberType, IMemberTypeService memberTypeService); + public void Move(IMemberType memberType, IMemberTypeService memberTypeService); +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollection.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollection.cs new file mode 100644 index 0000000..6287e0f --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollection.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Composing; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MemberTypes; + +public class MemberTypeOrganiseActionCollection : BuilderCollectionBase +{ + public MemberTypeOrganiseActionCollection(Func> items) + : base(items) + { + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollectionBuilder.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollectionBuilder.cs new file mode 100644 index 0000000..922023a --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollectionBuilder.cs @@ -0,0 +1,8 @@ +using Umbraco.Cms.Core.Composing; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MemberTypes; + +public class MemberTypeOrganiseActionCollectionBuilder : OrderedCollectionBuilderBase +{ + protected override MemberTypeOrganiseActionCollectionBuilder This => this; +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiser.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiser.cs new file mode 100644 index 0000000..463adcd --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiser.cs @@ -0,0 +1,29 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MemberTypes; + +public class MemberTypeOrganiser : IBackOfficeOrganiser +{ + private readonly IMemberTypeService _memberTypeService; + private readonly MemberTypeOrganiseActionCollection _organiseActions; + + public MemberTypeOrganiser(IMemberTypeService memberTypeService, MemberTypeOrganiseActionCollection organiseActions) + { + _memberTypeService = memberTypeService; + _organiseActions = organiseActions; + } + + public void Organise() + { + var memberTypes = _memberTypeService.GetAll().ToList(); + foreach (var memberType in memberTypes) + { + var organiser = _organiseActions.FirstOrDefault(x => x.CanMove(memberType, _memberTypeService)); + organiser?.Move(memberType, _memberTypeService); + } + + _memberTypeService.DeleteAllEmptyContainers(); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiser.cshtml b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiser.cshtml new file mode 100644 index 0000000..aea6583 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiser.cshtml @@ -0,0 +1,4 @@ +@inherits Umbraco.Community.SimpleDashboards.Web.DashboardViewPage + + + \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiserDashboard.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiserDashboard.cs new file mode 100644 index 0000000..04ee535 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiserDashboard.cs @@ -0,0 +1,13 @@ +using Umbraco.Community.SimpleDashboards.Core; +using Constants = Umbraco.Cms.Core.Constants; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.Views.Dashboards; + +public class BackOfficeOrganiserDashboard : SimpleDashboard +{ + public BackOfficeOrganiserDashboard() + { + AddSection(Constants.Applications.Settings); + SetName("Back Office Organiser"); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/icon.png b/src/jcdcdev.Umbraco.BackOfficeOrganiser/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..37736004dc0af5955fcb4deaa6d527d6c94aada4 GIT binary patch literal 20004 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 literal 0 HcmV?d00001 diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj b/src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj new file mode 100644 index 0000000..35e48b8 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj @@ -0,0 +1,44 @@ + + + net6.0 + 10 + true + enable + enable + / + . + jcdcdev.Umbraco.BackOfficeOrganiser + jcdcdev.Umbraco.BackOfficeOrganiser + jcdcdev.Umbraco.BackOfficeOrganiser + umbraco + James Carter + $([System.DateTime]::UtcNow.ToString(`yyyy`)) © James Carter + https://github.com/jcdcdev/jcdcdev.Umbraco.BackOfficeOrganiser + https://github.com/jcdcdev/jcdcdev.Umbraco.BackOfficeOrganiser + README_nuget.md + git + MIT + images\icon.png + + + + + + + + + + + + + + + True + \ + + + + + + + From b7a98673bcd2be0b1a345d1aa3f5e67387cdcacc Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Tue, 7 Nov 2023 21:02:03 +0000 Subject: [PATCH 02/20] test: initial test site --- .../.gitignore | 481 ++++++++++++++++++ .../Composer.cs | 12 + .../ExampleDataTypeOrganiseAction.cs | 18 + .../Program.cs | 19 + .../Properties/launchSettings.json | 29 ++ .../Startup.cs | 65 +++ .../Views/Home.cshtml | 1 + .../Views/_ViewImports.cshtml | 9 + .../appsettings.Development.json | 38 ++ .../appsettings.json | 34 ++ ...mbraco.BackOfficeOrganiser.TestSite.csproj | 40 ++ .../wwwroot/favicon.ico | Bin 0 -> 15406 bytes 12 files changed, 746 insertions(+) create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/.gitignore create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Composer.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/ExampleDataTypeOrganiseAction.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Program.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Properties/launchSettings.json create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Startup.cs create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Views/Home.cshtml create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Views/_ViewImports.cshtml create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/appsettings.Development.json create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/appsettings.json create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite.csproj create mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/wwwroot/favicon.ico diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/.gitignore b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/.gitignore new file mode 100644 index 0000000..2dee96f --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/.gitignore @@ -0,0 +1,481 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# Mac bundle stuff +*.dmg +*.app + +# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# JetBrains Rider +.idea/ +*.sln.iml + +## +## Visual Studio Code +## +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +## +## Umbraco CMS +## + +# JSON schema file for appsettings.json +appsettings-schema.json + +# Packages created from the backoffice (package.xml/package.zip) +/umbraco/Data/CreatedPackages/ + +# Temp folder containing Examine indexes, NuCache, MediaCache, etc. +/umbraco/Data/TEMP/ + +# SQLite database files - enable if you don't want to commit your test DB to the repo +#/umbraco/Data/*.sqlite.db +#/umbraco/Data/*.sqlite.db-shm +#/umbraco/Data/*.sqlite.db-wal + +# Log files +/umbraco/Logs/ + +# Media files +/wwwroot/media/ + +# Test Site App_Plugins packages folder (exclude here as in jcdcdev.Umbraco.BackOfficeOrganiser project) +/App_Plugins/jcdcdev.Umbraco.BackOfficeOrganiser/ diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Composer.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Composer.cs new file mode 100644 index 0000000..40d7fa5 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Composer.cs @@ -0,0 +1,12 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using Umbraco.Cms.Core.Composing; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.TestSite; + +public class Composer : IComposer +{ + public void Compose(IUmbracoBuilder builder) + { + builder.DataTypeOrganiseActions().Insert(); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/ExampleDataTypeOrganiseAction.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/ExampleDataTypeOrganiseAction.cs new file mode 100644 index 0000000..25bc2b3 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/ExampleDataTypeOrganiseAction.cs @@ -0,0 +1,18 @@ +using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace jcdcdev.Umbraco.BackOfficeOrganiser.TestSite; + +public class ExampleDataTypeOrganiseAction : IDataTypeOrganiseAction +{ + public bool CanMove(IDataType dataType, IDataTypeService dataTypeService) => + dataType.EditorAlias.InvariantStartsWith("Umbraco.Community"); + + public void Move(IDataType dataType, IDataTypeService dataTypeService) + { + var folder = dataTypeService.GetOrCreateFolder("Community", -1); + dataTypeService.Move(dataType, folder.Id); + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Program.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Program.cs new file mode 100644 index 0000000..fac174e --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Program.cs @@ -0,0 +1,19 @@ +namespace jcdcdev.Umbraco.BackOfficeOrganiser.TestSite +{ + public class Program + { + public static void Main(string[] args) + => CreateHostBuilder(args) + .Build() + .Run(); + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureUmbracoDefaults() + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStaticWebAssets(); + webBuilder.UseStartup(); + }); + } +} diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Properties/launchSettings.json b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Properties/launchSettings.json new file mode 100644 index 0000000..cfa1ef6 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Properties/launchSettings.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:59495", + "sslPort": 44315 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Umbraco.Web.UI": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:44315;http://localhost:59495", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Startup.cs b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Startup.cs new file mode 100644 index 0000000..b94bb36 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Startup.cs @@ -0,0 +1,65 @@ +namespace jcdcdev.Umbraco.BackOfficeOrganiser.TestSite +{ + public class Startup + { + private readonly IWebHostEnvironment _env; + private readonly IConfiguration _config; + + /// + /// Initializes a new instance of the class. + /// + /// The web hosting environment. + /// The configuration. + /// + /// Only a few services are possible to be injected here https://github.com/dotnet/aspnetcore/issues/9337. + /// + public Startup(IWebHostEnvironment webHostEnvironment, IConfiguration config) + { + _env = webHostEnvironment ?? throw new ArgumentNullException(nameof(webHostEnvironment)); + _config = config ?? throw new ArgumentNullException(nameof(config)); + } + + /// + /// Configures the services. + /// + /// The services. + /// + /// This method gets called by the runtime. Use this method to add services to the container. + /// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940. + /// + public void ConfigureServices(IServiceCollection services) + { + services.AddUmbraco(_env, _config) + .AddBackOffice() + .AddWebsite() + .AddComposers() + .Build(); + } + + /// + /// Configures the application. + /// + /// The application builder. + /// The web hosting environment. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.UseUmbraco() + .WithMiddleware(u => + { + u.UseBackOffice(); + u.UseWebsite(); + }) + .WithEndpoints(u => + { + u.UseInstallerEndpoints(); + u.UseBackOfficeEndpoints(); + u.UseWebsiteEndpoints(); + }); + } + } +} diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Views/Home.cshtml b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Views/Home.cshtml new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Views/Home.cshtml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Views/_ViewImports.cshtml b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Views/_ViewImports.cshtml new file mode 100644 index 0000000..7e4d86d --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Views/_ViewImports.cshtml @@ -0,0 +1,9 @@ +@using Umbraco.Extensions +@using jcdcdev.Umbraco.BackOfficeOrganiser.TestSite +@using Umbraco.Cms.Web.Common.PublishedModels +@using Umbraco.Cms.Web.Common.Views +@using Umbraco.Cms.Core.Models.PublishedContent +@using Microsoft.AspNetCore.Html +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Smidge +@inject Smidge.SmidgeHelper SmidgeHelper diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/appsettings.Development.json b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/appsettings.Development.json new file mode 100644 index 0000000..9eee076 --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/appsettings.Development.json @@ -0,0 +1,38 @@ +{ + "$schema": "./appsettings-schema.json", + "Serilog": { + "MinimumLevel": { + "Default": "Information" + }, + "WriteTo": [ + { + "Name": "Async", + "Args": { + "configure": [ + { + "Name": "Console" + } + ] + } + } + ] + }, + "Umbraco": { + "CMS": { + "Content": { + "MacroErrors": "Throw" + }, + "Hosting": { + "Debug": true + }, + "ModelsBuilder": { + "ModelsMode": "SourceCodeAuto", + "ModelsDirectory": "~/Models" + }, + "RuntimeMinification": { + "UseInMemoryCache": true, + "CacheBuster": "Timestamp" + } + } + } +} diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/appsettings.json b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/appsettings.json new file mode 100644 index 0000000..8fb28be --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/appsettings.json @@ -0,0 +1,34 @@ +{ + "$schema": "./appsettings-schema.json", + "Serilog": { + "MinimumLevel": { + "Default": "Information", + "Override": { + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information", + "System": "Warning" + } + } + }, + "Umbraco": { + "CMS": { + "Global": { + "Id": "12890910-b1c3-4bba-9544-a9beeb851ed0", + "SanitizeTinyMce": true + }, + "Content": { + "AllowEditInvariantFromNonDefault": true, + "ContentVersionCleanupPolicy": { + "EnableCleanup": true + } + } + } + }, + "BackOfficeOrganiser": { + "DataTypes":{ + "InternalFolderName" : "Internal", + "ThirdPartyFolderName" : "Third Party", + "CustomFolderName" : "Custom" + } + } +} \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite.csproj b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite.csproj new file mode 100644 index 0000000..a67009e --- /dev/null +++ b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite.csproj @@ -0,0 +1,40 @@ + + + net6.0 + enable + enable + + + + + + + + + + + + + + + + true + + + + + false + false + + + + + + + + + appsettings.json + + + + \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/wwwroot/favicon.ico b/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/wwwroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c0749ddf7f1b68606b0672aa8d709779d6b0817a GIT binary patch literal 15406 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 literal 0 HcmV?d00001 From 3f9ad235f4457c2d68c709c294151943132e7d31 Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Tue, 7 Nov 2023 21:08:17 +0000 Subject: [PATCH 03/20] +changelog-ignore: ci wip --- .github/workflows/build.yml | 4 ++-- .github/workflows/release.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a82b688..20a27a3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,3 +1,4 @@ +name: Build on: pull_request: branches: "*" @@ -15,5 +16,4 @@ jobs: npm_run_command: 'build' deploy: false secrets: - NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a011a77..087c055 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,3 +1,4 @@ +name: Release on: pull_request: branches: "*" @@ -16,5 +17,4 @@ jobs: npm_run_command: 'build' deploy: true secrets: - NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} \ No newline at end of file From f17692a7c2591e126a946840d21b9246b066af17 Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Tue, 7 Nov 2023 21:23:45 +0000 Subject: [PATCH 04/20] +changelog-ignore: ci wip --- .github/workflows/release.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 087c055..63a36c9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,6 +6,8 @@ on: workflow_dispatch: jobs: call-workflow-passing-data: + permissions: + contents: write uses: jcdcdev/jcdcdev.Github.UmbracoSimpleDeploy/.github/workflows/reusable-workflow.yml@main with: config-path: .github/labeler.yml From 0ffa03070764810aa8ba44cc6fd6739d9ee559bb Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Tue, 7 Nov 2023 21:26:08 +0000 Subject: [PATCH 05/20] +changelog-ignore: ci wip --- .github/workflows/build.yml | 1 - .github/workflows/release.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 20a27a3..f867da7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,7 +7,6 @@ jobs: call-workflow-passing-data: uses: jcdcdev/jcdcdev.Github.UmbracoSimpleDeploy/.github/workflows/build-release-template.yml@main with: - config-path: .github/labeler.yml project_name: 'jcdcdev.Umbraco.BackOfficeOrganiser' artifact_name: 'jcdcdev.Umbraco.BackOfficeOrganiser' project_path: './src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 63a36c9..e062ce4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,7 +10,6 @@ jobs: contents: write uses: jcdcdev/jcdcdev.Github.UmbracoSimpleDeploy/.github/workflows/reusable-workflow.yml@main with: - config-path: .github/labeler.yml project_name: 'jcdcdev.Umbraco.BackOfficeOrganiser' artifact_name: 'jcdcdev.Umbraco.BackOfficeOrganiser' project_path: './src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj' From 80ef3c34020b66bf3269c1f618175c29540e1c8e Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Tue, 7 Nov 2023 21:29:48 +0000 Subject: [PATCH 06/20] +changelog-ignore: ci wip --- .github/workflows/build.yml | 4 +++- .github/workflows/release.yml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f867da7..7d1fc79 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,7 +4,9 @@ on: branches: "*" workflow_dispatch: jobs: - call-workflow-passing-data: + build: + permissions: + contents: write uses: jcdcdev/jcdcdev.Github.UmbracoSimpleDeploy/.github/workflows/build-release-template.yml@main with: project_name: 'jcdcdev.Umbraco.BackOfficeOrganiser' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e062ce4..fcf42a3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,7 +5,7 @@ on: types: [closed] workflow_dispatch: jobs: - call-workflow-passing-data: + build_release: permissions: contents: write uses: jcdcdev/jcdcdev.Github.UmbracoSimpleDeploy/.github/workflows/reusable-workflow.yml@main From 5132b2a3d7c1d62ab58782257d9dbb42d4dfd6d2 Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Tue, 7 Nov 2023 21:35:17 +0000 Subject: [PATCH 07/20] +changelog-ignore: ci wip --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7d1fc79..efe7a7d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,7 +10,6 @@ jobs: uses: jcdcdev/jcdcdev.Github.UmbracoSimpleDeploy/.github/workflows/build-release-template.yml@main with: project_name: 'jcdcdev.Umbraco.BackOfficeOrganiser' - artifact_name: 'jcdcdev.Umbraco.BackOfficeOrganiser' project_path: './src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj' npm_enabled: true npm_working_dir: './src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/' From bec063b00b6f640bc9217d1fbf8fed702d7c30c9 Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Tue, 7 Nov 2023 22:43:02 +0000 Subject: [PATCH 08/20] +changelog-ignore: ci wip --- .github/workflows/build.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index efe7a7d..036a32b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,11 +9,11 @@ jobs: contents: write uses: jcdcdev/jcdcdev.Github.UmbracoSimpleDeploy/.github/workflows/build-release-template.yml@main with: - project_name: 'jcdcdev.Umbraco.BackOfficeOrganiser' - project_path: './src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj' - npm_enabled: true - npm_working_dir: './src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/' - npm_run_command: 'build' + project-name: 'jcdcdev.Umbraco.BackOfficeOrganiser' + project-path: './src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj' + npm-enabled: true + npm-working-dir: './src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/' + npm-run-command: 'build' deploy: false secrets: - NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} \ No newline at end of file + nuget-api-key: ${{ secrets.NUGET_API_KEY }} \ No newline at end of file From 851b5074581edb9fa97234114e9119aa5fa829a2 Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Tue, 7 Nov 2023 22:57:18 +0000 Subject: [PATCH 09/20] +changelog-ignore: ci wip --- .github/workflows/release.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fcf42a3..afbf7c5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,7 +1,7 @@ name: Release on: pull_request: - branches: "*" + branches: "main" types: [closed] workflow_dispatch: jobs: @@ -10,12 +10,12 @@ jobs: contents: write uses: jcdcdev/jcdcdev.Github.UmbracoSimpleDeploy/.github/workflows/reusable-workflow.yml@main with: - project_name: 'jcdcdev.Umbraco.BackOfficeOrganiser' - artifact_name: 'jcdcdev.Umbraco.BackOfficeOrganiser' - project_path: './src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj' - npm_enabled: true - npm_working_dir: './src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/' - npm_run_command: 'build' + project-name: 'jcdcdev.Umbraco.BackOfficeOrganiser' + artifact-name: 'jcdcdev.Umbraco.BackOfficeOrganiser' + project-path: './src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj' + npm-enabled: true + npm-working-dir: './src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/' + npm-run-command: 'build' deploy: true secrets: - NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} \ No newline at end of file + nuget-api-key: ${{ secrets.NUGET_API_KEY }} \ No newline at end of file From a52276fa5c6a65d165e764b96587a65df6f65d88 Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Tue, 7 Nov 2023 22:59:18 +0000 Subject: [PATCH 10/20] +changelog-ignore: ci wip --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index afbf7c5..fc0e1a2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,7 +8,7 @@ jobs: build_release: permissions: contents: write - uses: jcdcdev/jcdcdev.Github.UmbracoSimpleDeploy/.github/workflows/reusable-workflow.yml@main + uses: jcdcdev/jcdcdev.Github.UmbracoSimpleDeploy/.github/workflows/build-release-template.yml@main with: project-name: 'jcdcdev.Umbraco.BackOfficeOrganiser' artifact-name: 'jcdcdev.Umbraco.BackOfficeOrganiser' From 4e884dafe23307337127575277c348d430a3bcc1 Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Tue, 7 Nov 2023 23:00:18 +0000 Subject: [PATCH 11/20] +changelog-ignore: ci wip --- .github/workflows/release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fc0e1a2..1f2cd9d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,7 +11,6 @@ jobs: uses: jcdcdev/jcdcdev.Github.UmbracoSimpleDeploy/.github/workflows/build-release-template.yml@main with: project-name: 'jcdcdev.Umbraco.BackOfficeOrganiser' - artifact-name: 'jcdcdev.Umbraco.BackOfficeOrganiser' project-path: './src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj' npm-enabled: true npm-working-dir: './src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/' From 6513854e6953a3e3ec5b87590ab178469529477f Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Wed, 8 Nov 2023 18:43:10 +0000 Subject: [PATCH 12/20] +changelog-ignore: repo rename --- .github/ISSUE_TEMPLATE/bug.yml | 2 +- .github/README.md | 8 ++++---- .github/workflows/build.yml | 6 +++--- .github/workflows/release.yml | 6 +++--- .gitignore | 4 ++-- docs/README_nuget.md | 8 ++++---- .../.gitignore | 0 .../index.html | 0 .../package-lock.json | 0 .../package.json | 0 .../src/backoffice-organiser.ts | 0 .../src/index.css | 0 .../src/vite-env.d.ts | 0 .../tsconfig.json | 0 .../vite.config.ts | 2 +- .../.gitignore | 4 ++-- .../Composer.cs | 4 ++-- .../ExampleDataTypeOrganiseAction.cs | 6 +++--- .../Program.cs | 2 +- .../Properties/launchSettings.json | 0 .../Startup.cs | 2 +- ...mmunity.BackOfficeOrganiser.TestSite.csproj} | 2 +- .../Views/Home.cshtml | 0 .../Views/_ViewImports.cshtml | 2 +- .../appsettings.Development.json | 0 .../appsettings.json | 0 .../wwwroot/favicon.ico | Bin ...> Umbraco.Community.BackOfficeOrganiser.sln} | 4 ++-- .../BackOfficeOrganiserController.cs | 4 ++-- .../BackOfficeOrganiserService.cs | 6 +++--- .../Composer.cs | 16 ++++++++-------- .../ContentTypeBaseServiceExtensions.cs | 2 +- .../Extensions/DataTypeExtensions.cs | 2 +- .../Extensions/DataTypeServiceExtensions.cs | 2 +- .../Extensions/MediaTypeExtensions.cs | 2 +- .../Extensions/UmbracoBuilderExtensions.cs | 10 +++++----- .../IBackOfficeOrganiserService.cs | 4 ++-- .../ManifestFilter.cs | 4 ++-- .../Models/BackOfficeOrganiserOptions.cs | 2 +- .../Models/DataTypeOptions.cs | 2 +- .../Models/OrganiseResponse.cs | 2 +- .../Models/OrganiseType.cs | 2 +- .../ContentTypeOrganiseActionCollection.cs | 2 +- ...ontentTypeOrganiseActionCollectionBuilder.cs | 2 +- .../ContentTypes/ContentTypeOrganiser.cs | 4 ++-- .../DefaultContentTypeOrganiseAction.cs | 4 ++-- .../ContentTypes/IContentTypeOrganiseAction.cs | 2 +- .../DataTypeOrganiseActionCollection.cs | 2 +- .../DataTypeOrganiseActionCollectionBuilder.cs | 2 +- .../Organisers/DataTypes/DataTypeOrganiser.cs | 4 ++-- .../DataTypes/DefaultDataTypeOrganiseAction.cs | 6 +++--- .../DataTypes/IDataTypeOrganiseAction.cs | 2 +- .../Organisers/IBackOfficeOrganiser.cs | 2 +- .../DefaultMediaTypeOrganiseAction.cs | 4 ++-- .../MediaTypes/IMediaTypeOrganiseAction.cs | 2 +- .../MediaTypeOrganiseActionCollection.cs | 2 +- .../MediaTypeOrganiseActionCollectionBuilder.cs | 2 +- .../Organisers/MediaTypes/MediaTypeOrganiser.cs | 4 ++-- .../DefaultMemberTypeOrganiseAction.cs | 4 ++-- .../MemberTypes/IMemberTypeOrganiseAction.cs | 2 +- .../MemberTypeOrganiseActionCollection.cs | 2 +- ...MemberTypeOrganiseActionCollectionBuilder.cs | 2 +- .../MemberTypes/MemberTypeOrganiser.cs | 4 ++-- ...mbraco.Community.BackOfficeOrganiser.csproj} | 10 +++++----- .../Views/Dashboards/BackOfficeOrganiser.cshtml | 4 ++++ .../Dashboards/BackOfficeOrganiserDashboard.cs | 2 +- .../icon.png | Bin .../Views/Dashboards/BackOfficeOrganiser.cshtml | 4 ---- 68 files changed, 101 insertions(+), 101 deletions(-) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.Client => Umbraco.Community.BackOfficeOrganiser.Client}/.gitignore (100%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.Client => Umbraco.Community.BackOfficeOrganiser.Client}/index.html (100%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.Client => Umbraco.Community.BackOfficeOrganiser.Client}/package-lock.json (100%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.Client => Umbraco.Community.BackOfficeOrganiser.Client}/package.json (100%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.Client => Umbraco.Community.BackOfficeOrganiser.Client}/src/backoffice-organiser.ts (100%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.Client => Umbraco.Community.BackOfficeOrganiser.Client}/src/index.css (100%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.Client => Umbraco.Community.BackOfficeOrganiser.Client}/src/vite-env.d.ts (100%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.Client => Umbraco.Community.BackOfficeOrganiser.Client}/tsconfig.json (100%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.Client => Umbraco.Community.BackOfficeOrganiser.Client}/vite.config.ts (62%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.TestSite => Umbraco.Community.BackOfficeOrganiser.TestSite}/.gitignore (98%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.TestSite => Umbraco.Community.BackOfficeOrganiser.TestSite}/Composer.cs (65%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.TestSite => Umbraco.Community.BackOfficeOrganiser.TestSite}/ExampleDataTypeOrganiseAction.cs (73%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.TestSite => Umbraco.Community.BackOfficeOrganiser.TestSite}/Program.cs (90%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.TestSite => Umbraco.Community.BackOfficeOrganiser.TestSite}/Properties/launchSettings.json (100%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.TestSite => Umbraco.Community.BackOfficeOrganiser.TestSite}/Startup.cs (97%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite.csproj => Umbraco.Community.BackOfficeOrganiser.TestSite/Umbraco.Community.BackOfficeOrganiser.TestSite.csproj} (92%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.TestSite => Umbraco.Community.BackOfficeOrganiser.TestSite}/Views/Home.cshtml (100%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.TestSite => Umbraco.Community.BackOfficeOrganiser.TestSite}/Views/_ViewImports.cshtml (85%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.TestSite => Umbraco.Community.BackOfficeOrganiser.TestSite}/appsettings.Development.json (100%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.TestSite => Umbraco.Community.BackOfficeOrganiser.TestSite}/appsettings.json (100%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.TestSite => Umbraco.Community.BackOfficeOrganiser.TestSite}/wwwroot/favicon.ico (100%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser.sln => Umbraco.Community.BackOfficeOrganiser.sln} (80%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/BackOfficeOrganiserController.cs (93%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/BackOfficeOrganiserService.cs (94%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Composer.cs (73%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Extensions/ContentTypeBaseServiceExtensions.cs (96%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Extensions/DataTypeExtensions.cs (98%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Extensions/DataTypeServiceExtensions.cs (95%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Extensions/MediaTypeExtensions.cs (93%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Extensions/UmbracoBuilderExtensions.cs (73%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/IBackOfficeOrganiserService.cs (56%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/ManifestFilter.cs (74%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Models/BackOfficeOrganiserOptions.cs (74%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Models/DataTypeOptions.cs (81%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Models/OrganiseResponse.cs (90%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Models/OrganiseType.cs (71%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/ContentTypes/ContentTypeOrganiseActionCollection.cs (78%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/ContentTypes/ContentTypeOrganiseActionCollectionBuilder.cs (81%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/ContentTypes/ContentTypeOrganiser.cs (87%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs (89%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/ContentTypes/IContentTypeOrganiseAction.cs (80%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/DataTypes/DataTypeOrganiseActionCollection.cs (78%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/DataTypes/DataTypeOrganiseActionCollectionBuilder.cs (81%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/DataTypes/DataTypeOrganiser.cs (87%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs (96%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/DataTypes/IDataTypeOrganiseAction.cs (79%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/IBackOfficeOrganiser.cs (52%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs (92%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/MediaTypes/IMediaTypeOrganiseAction.cs (79%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/MediaTypes/MediaTypeOrganiseActionCollection.cs (78%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/MediaTypes/MediaTypeOrganiseActionCollectionBuilder.cs (81%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/MediaTypes/MediaTypeOrganiser.cs (87%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs (87%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/MemberTypes/IMemberTypeOrganiseAction.cs (79%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/MemberTypes/MemberTypeOrganiseActionCollection.cs (78%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/MemberTypes/MemberTypeOrganiseActionCollectionBuilder.cs (81%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Organisers/MemberTypes/MemberTypeOrganiser.cs (87%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj => Umbraco.Community.BackOfficeOrganiser/Umbraco.Community.BackOfficeOrganiser.csproj} (77%) create mode 100644 src/Umbraco.Community.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiser.cshtml rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/Views/Dashboards/BackOfficeOrganiserDashboard.cs (82%) rename src/{jcdcdev.Umbraco.BackOfficeOrganiser => Umbraco.Community.BackOfficeOrganiser}/icon.png (100%) delete mode 100644 src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiser.cshtml diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 64f87ab..97b2b66 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -9,7 +9,7 @@ body: - type: input id: "PackageVersion" attributes: - label: "Which jcdcdev.Umbraco.BackOfficeOrganiser version are you using?" + label: "Which Umbraco.Community.BackOfficeOrganiser version are you using?" description: "Leave blank if you're not sure: the latest version will be assumed." validations: required: false diff --git a/.github/README.md b/.github/README.md index a22033d..95be0ca 100644 --- a/.github/README.md +++ b/.github/README.md @@ -1,8 +1,8 @@ -# jcdcdev.Umbraco.BackOfficeOrganiser +# Umbraco.Community.BackOfficeOrganiser -[![Downloads](https://img.shields.io/nuget/dt/jcdcdev.Umbraco.BackOfficeOrganiser?color=cc9900)](https://www.nuget.org/packages/jcdcdev.Umbraco.BackOfficeOrganiser/) -[![NuGet](https://img.shields.io/nuget/vpre/jcdcdev.Umbraco.BackOfficeOrganiser?color=0273B3)](https://www.nuget.org/packages/jcdcdev.Umbraco.BackOfficeOrganiser) -[![GitHub license](https://img.shields.io/github/license/jcdcdev/jcdcdev.Umbraco.BackOfficeOrganiser?color=8AB803)](../LICENSE) +[![Downloads](https://img.shields.io/nuget/dt/Umbraco.Community.BackOfficeOrganiser?color=cc9900)](https://www.nuget.org/packages/Umbraco.Community.BackOfficeOrganiser/) +[![NuGet](https://img.shields.io/nuget/vpre/Umbraco.Community.BackOfficeOrganiser?color=0273B3)](https://www.nuget.org/packages/Umbraco.Community.BackOfficeOrganiser) +[![GitHub license](https://img.shields.io/github/license/jcdcdev/Umbraco.Community.BackOfficeOrganiser?color=8AB803)](../LICENSE) Is your Backoffice a bit untidy? diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 036a32b..f037ee0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,10 +9,10 @@ jobs: contents: write uses: jcdcdev/jcdcdev.Github.UmbracoSimpleDeploy/.github/workflows/build-release-template.yml@main with: - project-name: 'jcdcdev.Umbraco.BackOfficeOrganiser' - project-path: './src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj' + project-name: 'Umbraco.Community.BackOfficeOrganiser' + project-path: './src/Umbraco.Community.BackOfficeOrganiser/Umbraco.Community.BackOfficeOrganiser.csproj' npm-enabled: true - npm-working-dir: './src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/' + npm-working-dir: './src/Umbraco.Community.BackOfficeOrganiser.Client/' npm-run-command: 'build' deploy: false secrets: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1f2cd9d..17b6aac 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,10 +10,10 @@ jobs: contents: write uses: jcdcdev/jcdcdev.Github.UmbracoSimpleDeploy/.github/workflows/build-release-template.yml@main with: - project-name: 'jcdcdev.Umbraco.BackOfficeOrganiser' - project-path: './src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj' + project-name: 'Umbraco.Community.BackOfficeOrganiser' + project-path: './src/Umbraco.Community.BackOfficeOrganiser/Umbraco.Community.BackOfficeOrganiser.csproj' npm-enabled: true - npm-working-dir: './src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/' + npm-working-dir: './src/Umbraco.Community.BackOfficeOrganiser.Client/' npm-run-command: 'build' deploy: true secrets: diff --git a/.gitignore b/.gitignore index 41fe718..98d17fb 100644 --- a/.gitignore +++ b/.gitignore @@ -355,5 +355,5 @@ MigrationBackup/ # Rider src/.idea *.sqlite.db* -/src/jcdcdev.Umbraco.BackOfficeOrganiser/.idea/ -/src/jcdcdev.Umbraco.BackOfficeOrganiser/wwwroot/App_Plugins/jcdcdev.Umbraco.BackOfficeOrganiser/dist +/src/Umbraco.Community.BackOfficeOrganiser/.idea/ +/src/Umbraco.Community.BackOfficeOrganiser/wwwroot/App_Plugins/Umbraco.Community.BackOfficeOrganiser/dist diff --git a/docs/README_nuget.md b/docs/README_nuget.md index 4bc51d0..837a157 100644 --- a/docs/README_nuget.md +++ b/docs/README_nuget.md @@ -1,8 +1,8 @@ -# jcdcdev.Umbraco.BackOfficeOrganiser +# Umbraco.Community.BackOfficeOrganiser -[![Downloads](https://img.shields.io/nuget/dt/jcdcdev.Umbraco.BackOfficeOrganiser?color=cc9900)](https://www.nuget.org/packages/jcdcdev.Umbraco.BackOfficeOrganiser/) -[![NuGet](https://img.shields.io/nuget/vpre/jcdcdev.Umbraco.BackOfficeOrganiser?color=0273B3)](https://www.nuget.org/packages/jcdcdev.Umbraco.BackOfficeOrganiser) -[![GitHub license](https://img.shields.io/github/license/jcdcdev/jcdcdev.Umbraco.BackOfficeOrganiser?color=8AB803)](https://github.com/jcdcdev/jcdcdev.Umbraco.BackOfficeOrganiser/blob/main/LICENSE) +[![Downloads](https://img.shields.io/nuget/dt/Umbraco.Community.BackOfficeOrganiser?color=cc9900)](https://www.nuget.org/packages/Umbraco.Community.BackOfficeOrganiser/) +[![NuGet](https://img.shields.io/nuget/vpre/Umbraco.Community.BackOfficeOrganiser?color=0273B3)](https://www.nuget.org/packages/Umbraco.Community.BackOfficeOrganiser) +[![GitHub license](https://img.shields.io/github/license/jcdcdev/Umbraco.Community.BackOfficeOrganiser?color=8AB803)](https://github.com/jcdcdev/Umbraco.Community.BackOfficeOrganiser/blob/main/LICENSE) Is your Backoffice a bit untidy? diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/.gitignore b/src/Umbraco.Community.BackOfficeOrganiser.Client/.gitignore similarity index 100% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/.gitignore rename to src/Umbraco.Community.BackOfficeOrganiser.Client/.gitignore diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/index.html b/src/Umbraco.Community.BackOfficeOrganiser.Client/index.html similarity index 100% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/index.html rename to src/Umbraco.Community.BackOfficeOrganiser.Client/index.html diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/package-lock.json b/src/Umbraco.Community.BackOfficeOrganiser.Client/package-lock.json similarity index 100% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/package-lock.json rename to src/Umbraco.Community.BackOfficeOrganiser.Client/package-lock.json diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/package.json b/src/Umbraco.Community.BackOfficeOrganiser.Client/package.json similarity index 100% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/package.json rename to src/Umbraco.Community.BackOfficeOrganiser.Client/package.json diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/backoffice-organiser.ts b/src/Umbraco.Community.BackOfficeOrganiser.Client/src/backoffice-organiser.ts similarity index 100% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/backoffice-organiser.ts rename to src/Umbraco.Community.BackOfficeOrganiser.Client/src/backoffice-organiser.ts diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/index.css b/src/Umbraco.Community.BackOfficeOrganiser.Client/src/index.css similarity index 100% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/index.css rename to src/Umbraco.Community.BackOfficeOrganiser.Client/src/index.css diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/vite-env.d.ts b/src/Umbraco.Community.BackOfficeOrganiser.Client/src/vite-env.d.ts similarity index 100% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/src/vite-env.d.ts rename to src/Umbraco.Community.BackOfficeOrganiser.Client/src/vite-env.d.ts diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/tsconfig.json b/src/Umbraco.Community.BackOfficeOrganiser.Client/tsconfig.json similarity index 100% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/tsconfig.json rename to src/Umbraco.Community.BackOfficeOrganiser.Client/tsconfig.json diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/vite.config.ts b/src/Umbraco.Community.BackOfficeOrganiser.Client/vite.config.ts similarity index 62% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/vite.config.ts rename to src/Umbraco.Community.BackOfficeOrganiser.Client/vite.config.ts index d39b0b5..d786428 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser.Client/vite.config.ts +++ b/src/Umbraco.Community.BackOfficeOrganiser.Client/vite.config.ts @@ -6,7 +6,7 @@ export default defineConfig({ entry: "src/backoffice-organiser.ts", // your web component source file formats: ["es"], }, - outDir: "../jcdcdev.Umbraco.BackOfficeOrganiser/wwwroot/App_Plugins/jcdcdev.Umbraco.BackOfficeOrganiser/dist/", // your web component will be saved in this location + outDir: "../Umbraco.Community.BackOfficeOrganiser/wwwroot/App_Plugins/Umbraco.Community.BackOfficeOrganiser/dist/", // your web component will be saved in this location sourcemap: true, rollupOptions: { external: [/^@umbraco-ui/], diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/.gitignore b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/.gitignore similarity index 98% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/.gitignore rename to src/Umbraco.Community.BackOfficeOrganiser.TestSite/.gitignore index 2dee96f..4376c8e 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/.gitignore +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/.gitignore @@ -477,5 +477,5 @@ appsettings-schema.json # Media files /wwwroot/media/ -# Test Site App_Plugins packages folder (exclude here as in jcdcdev.Umbraco.BackOfficeOrganiser project) -/App_Plugins/jcdcdev.Umbraco.BackOfficeOrganiser/ +# Test Site App_Plugins packages folder (exclude here as in Umbraco.Community.BackOfficeOrganiser project) +/App_Plugins/Umbraco.Community.BackOfficeOrganiser/ diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Composer.cs b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Composer.cs similarity index 65% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Composer.cs rename to src/Umbraco.Community.BackOfficeOrganiser.TestSite/Composer.cs index 40d7fa5..77adb22 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Composer.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Composer.cs @@ -1,7 +1,7 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Extensions; using Umbraco.Cms.Core.Composing; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.TestSite; +namespace Umbraco.Community.BackOfficeOrganiser.TestSite; public class Composer : IComposer { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/ExampleDataTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/ExampleDataTypeOrganiseAction.cs similarity index 73% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/ExampleDataTypeOrganiseAction.cs rename to src/Umbraco.Community.BackOfficeOrganiser.TestSite/ExampleDataTypeOrganiseAction.cs index 25bc2b3..8929b6c 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/ExampleDataTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/ExampleDataTypeOrganiseAction.cs @@ -1,9 +1,9 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; -using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; +using Umbraco.Community.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.TestSite; +namespace Umbraco.Community.BackOfficeOrganiser.TestSite; public class ExampleDataTypeOrganiseAction : IDataTypeOrganiseAction { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Program.cs b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Program.cs similarity index 90% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Program.cs rename to src/Umbraco.Community.BackOfficeOrganiser.TestSite/Program.cs index fac174e..925353b 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Program.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Program.cs @@ -1,4 +1,4 @@ -namespace jcdcdev.Umbraco.BackOfficeOrganiser.TestSite +namespace Umbraco.Community.BackOfficeOrganiser.TestSite { public class Program { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Properties/launchSettings.json b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Properties/launchSettings.json similarity index 100% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Properties/launchSettings.json rename to src/Umbraco.Community.BackOfficeOrganiser.TestSite/Properties/launchSettings.json diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Startup.cs b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Startup.cs similarity index 97% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Startup.cs rename to src/Umbraco.Community.BackOfficeOrganiser.TestSite/Startup.cs index b94bb36..a1a2bdf 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Startup.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Startup.cs @@ -1,4 +1,4 @@ -namespace jcdcdev.Umbraco.BackOfficeOrganiser.TestSite +namespace Umbraco.Community.BackOfficeOrganiser.TestSite { public class Startup { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite.csproj b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Umbraco.Community.BackOfficeOrganiser.TestSite.csproj similarity index 92% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite.csproj rename to src/Umbraco.Community.BackOfficeOrganiser.TestSite/Umbraco.Community.BackOfficeOrganiser.TestSite.csproj index a67009e..ed58f3f 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite.csproj +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Umbraco.Community.BackOfficeOrganiser.TestSite.csproj @@ -28,7 +28,7 @@ - + diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Views/Home.cshtml b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Views/Home.cshtml similarity index 100% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Views/Home.cshtml rename to src/Umbraco.Community.BackOfficeOrganiser.TestSite/Views/Home.cshtml diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Views/_ViewImports.cshtml b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Views/_ViewImports.cshtml similarity index 85% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Views/_ViewImports.cshtml rename to src/Umbraco.Community.BackOfficeOrganiser.TestSite/Views/_ViewImports.cshtml index 7e4d86d..18678e2 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/Views/_ViewImports.cshtml +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Views/_ViewImports.cshtml @@ -1,5 +1,5 @@ @using Umbraco.Extensions -@using jcdcdev.Umbraco.BackOfficeOrganiser.TestSite +@using Umbraco.Community.BackOfficeOrganiser.TestSite @using Umbraco.Cms.Web.Common.PublishedModels @using Umbraco.Cms.Web.Common.Views @using Umbraco.Cms.Core.Models.PublishedContent diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/appsettings.Development.json b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/appsettings.Development.json similarity index 100% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/appsettings.Development.json rename to src/Umbraco.Community.BackOfficeOrganiser.TestSite/appsettings.Development.json diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/appsettings.json b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/appsettings.json similarity index 100% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/appsettings.json rename to src/Umbraco.Community.BackOfficeOrganiser.TestSite/appsettings.json diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/wwwroot/favicon.ico b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/wwwroot/favicon.ico similarity index 100% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.TestSite/wwwroot/favicon.ico rename to src/Umbraco.Community.BackOfficeOrganiser.TestSite/wwwroot/favicon.ico diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser.sln b/src/Umbraco.Community.BackOfficeOrganiser.sln similarity index 80% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser.sln rename to src/Umbraco.Community.BackOfficeOrganiser.sln index cca073c..be2285b 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser.sln +++ b/src/Umbraco.Community.BackOfficeOrganiser.sln @@ -9,9 +9,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ..\.github\README.md = ..\.github\README.md EndProjectSection EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "jcdcdev.Umbraco.BackOfficeOrganiser", "jcdcdev.Umbraco.BackOfficeOrganiser\jcdcdev.Umbraco.BackOfficeOrganiser.csproj", "{EC825C30-A30B-4ABF-AD64-FCA92C9EA75C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Umbraco.Community.BackOfficeOrganiser", "Umbraco.Community.BackOfficeOrganiser\Umbraco.Community.BackOfficeOrganiser.csproj", "{EC825C30-A30B-4ABF-AD64-FCA92C9EA75C}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "jcdcdev.Umbraco.BackOfficeOrganiser.TestSite", "jcdcdev.Umbraco.BackOfficeOrganiser.TestSite\jcdcdev.Umbraco.BackOfficeOrganiser.TestSite.csproj", "{989D710F-EC50-4EFF-AE9D-26A68694FDB5}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Umbraco.Community.BackOfficeOrganiser.TestSite", "Umbraco.Community.BackOfficeOrganiser.TestSite\Umbraco.Community.BackOfficeOrganiser.TestSite.csproj", "{989D710F-EC50-4EFF-AE9D-26A68694FDB5}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/BackOfficeOrganiserController.cs b/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserController.cs similarity index 93% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/BackOfficeOrganiserController.cs rename to src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserController.cs index bc55e58..cbe7dc8 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/BackOfficeOrganiserController.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserController.cs @@ -1,4 +1,4 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Models; +using Umbraco.Community.BackOfficeOrganiser.Models; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Web.BackOffice.Filters; @@ -7,7 +7,7 @@ using Umbraco.Cms.Web.Common.Controllers; using Umbraco.Cms.Web.Common.Filters; -namespace jcdcdev.Umbraco.BackOfficeOrganiser; +namespace Umbraco.Community.BackOfficeOrganiser; [IsBackOffice] [UmbracoUserTimeoutFilter] diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/BackOfficeOrganiserService.cs b/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserService.cs similarity index 94% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/BackOfficeOrganiserService.cs rename to src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserService.cs index 26f5f79..686cd0a 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/BackOfficeOrganiserService.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserService.cs @@ -1,9 +1,9 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Models; -using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers; +using Umbraco.Community.BackOfficeOrganiser.Models; +using Umbraco.Community.BackOfficeOrganiser.Organisers; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Models; -namespace jcdcdev.Umbraco.BackOfficeOrganiser; +namespace Umbraco.Community.BackOfficeOrganiser; public class BackOfficeOrganiserService : IBackOfficeOrganiserService { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Composer.cs b/src/Umbraco.Community.BackOfficeOrganiser/Composer.cs similarity index 73% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Composer.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Composer.cs index 799a009..0e78b3e 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Composer.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Composer.cs @@ -1,17 +1,17 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; -using jcdcdev.Umbraco.BackOfficeOrganiser.Models; -using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers; -using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.ContentTypes; -using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; -using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MediaTypes; -using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MemberTypes; +using Umbraco.Community.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Models; +using Umbraco.Community.BackOfficeOrganiser.Organisers; +using Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; +using Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; +using Umbraco.Community.BackOfficeOrganiser.Organisers.MediaTypes; +using Umbraco.Community.BackOfficeOrganiser.Organisers.MemberTypes; using Lucene.Net.Search; using Microsoft.Extensions.DependencyInjection; using Umbraco.Cms.Core.Composing; using Umbraco.Cms.Core.DependencyInjection; using Umbraco.Cms.Core.Models; -namespace jcdcdev.Umbraco.BackOfficeOrganiser; +namespace Umbraco.Community.BackOfficeOrganiser; public class Composer : IComposer { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/ContentTypeBaseServiceExtensions.cs b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/ContentTypeBaseServiceExtensions.cs similarity index 96% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/ContentTypeBaseServiceExtensions.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Extensions/ContentTypeBaseServiceExtensions.cs index 88adea7..a91decb 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/ContentTypeBaseServiceExtensions.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/ContentTypeBaseServiceExtensions.cs @@ -2,7 +2,7 @@ using Umbraco.Cms.Core.Services; using Umbraco.Extensions; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +namespace Umbraco.Community.BackOfficeOrganiser.Extensions; public static class ContentTypeBaseServiceExtensions { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/DataTypeExtensions.cs b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/DataTypeExtensions.cs similarity index 98% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/DataTypeExtensions.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Extensions/DataTypeExtensions.cs index be29dbd..5659738 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/DataTypeExtensions.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/DataTypeExtensions.cs @@ -2,7 +2,7 @@ using Umbraco.Cms.Core.Models; using Umbraco.Extensions; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +namespace Umbraco.Community.BackOfficeOrganiser.Extensions; public static class DataTypeExtensions { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/DataTypeServiceExtensions.cs b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/DataTypeServiceExtensions.cs similarity index 95% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/DataTypeServiceExtensions.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Extensions/DataTypeServiceExtensions.cs index 74aa603..ab7c810 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/DataTypeServiceExtensions.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/DataTypeServiceExtensions.cs @@ -2,7 +2,7 @@ using Umbraco.Cms.Core.Services; using Umbraco.Extensions; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +namespace Umbraco.Community.BackOfficeOrganiser.Extensions; public static class DataTypeServiceExtensions { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/MediaTypeExtensions.cs b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/MediaTypeExtensions.cs similarity index 93% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/MediaTypeExtensions.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Extensions/MediaTypeExtensions.cs index 6679b40..0485177 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/MediaTypeExtensions.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/MediaTypeExtensions.cs @@ -2,7 +2,7 @@ using Umbraco.Cms.Core.Models; using Umbraco.Extensions; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +namespace Umbraco.Community.BackOfficeOrganiser.Extensions; public static class MediaTypeExtensions { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/UmbracoBuilderExtensions.cs b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/UmbracoBuilderExtensions.cs similarity index 73% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/UmbracoBuilderExtensions.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Extensions/UmbracoBuilderExtensions.cs index 0897395..2034a1f 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Extensions/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/UmbracoBuilderExtensions.cs @@ -1,10 +1,10 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.ContentTypes; -using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; -using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MediaTypes; -using jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MemberTypes; +using Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; +using Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; +using Umbraco.Community.BackOfficeOrganiser.Organisers.MediaTypes; +using Umbraco.Community.BackOfficeOrganiser.Organisers.MemberTypes; using Umbraco.Cms.Core.DependencyInjection; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +namespace Umbraco.Community.BackOfficeOrganiser.Extensions; public static class UmbracoBuilderExtensions { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/IBackOfficeOrganiserService.cs b/src/Umbraco.Community.BackOfficeOrganiser/IBackOfficeOrganiserService.cs similarity index 56% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/IBackOfficeOrganiserService.cs rename to src/Umbraco.Community.BackOfficeOrganiser/IBackOfficeOrganiserService.cs index 3d7226e..f3e6621 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/IBackOfficeOrganiserService.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/IBackOfficeOrganiserService.cs @@ -1,7 +1,7 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Models; +using Umbraco.Community.BackOfficeOrganiser.Models; using Umbraco.Cms.Core; -namespace jcdcdev.Umbraco.BackOfficeOrganiser; +namespace Umbraco.Community.BackOfficeOrganiser; public interface IBackOfficeOrganiserService { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/ManifestFilter.cs b/src/Umbraco.Community.BackOfficeOrganiser/ManifestFilter.cs similarity index 74% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/ManifestFilter.cs rename to src/Umbraco.Community.BackOfficeOrganiser/ManifestFilter.cs index 23bba3a..7e52359 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/ManifestFilter.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/ManifestFilter.cs @@ -1,6 +1,6 @@ using Umbraco.Cms.Core.Manifest; -namespace jcdcdev.Umbraco.BackOfficeOrganiser; +namespace Umbraco.Community.BackOfficeOrganiser; internal class ManifestFilter : IManifestFilter { @@ -8,7 +8,7 @@ public void Filter(List manifests) { manifests.Add(new PackageManifest { - PackageName = "jcdcdev.Umbraco.BackOfficeOrganiser", + PackageName = "Umbraco.Community.BackOfficeOrganiser", Version = GetType().Assembly.GetName().Version?.ToString(3) ?? "0.1.0", AllowPackageTelemetry = true }); diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/BackOfficeOrganiserOptions.cs b/src/Umbraco.Community.BackOfficeOrganiser/Models/BackOfficeOrganiserOptions.cs similarity index 74% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/BackOfficeOrganiserOptions.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Models/BackOfficeOrganiserOptions.cs index 02ab1ea..133e9fa 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/BackOfficeOrganiserOptions.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Models/BackOfficeOrganiserOptions.cs @@ -1,4 +1,4 @@ -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Models; +namespace Umbraco.Community.BackOfficeOrganiser.Models; public class BackOfficeOrganiserOptions { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/DataTypeOptions.cs b/src/Umbraco.Community.BackOfficeOrganiser/Models/DataTypeOptions.cs similarity index 81% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/DataTypeOptions.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Models/DataTypeOptions.cs index 2194bbb..7b81b05 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/DataTypeOptions.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Models/DataTypeOptions.cs @@ -1,4 +1,4 @@ -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Models; +namespace Umbraco.Community.BackOfficeOrganiser.Models; public class DataTypeOptions { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/OrganiseResponse.cs b/src/Umbraco.Community.BackOfficeOrganiser/Models/OrganiseResponse.cs similarity index 90% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/OrganiseResponse.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Models/OrganiseResponse.cs index 7e0a37c..c919be4 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/OrganiseResponse.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Models/OrganiseResponse.cs @@ -1,4 +1,4 @@ -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Models; +namespace Umbraco.Community.BackOfficeOrganiser.Models; public class OrganiseResponse { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/OrganiseType.cs b/src/Umbraco.Community.BackOfficeOrganiser/Models/OrganiseType.cs similarity index 71% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/OrganiseType.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Models/OrganiseType.cs index 6bc4ed4..a722372 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Models/OrganiseType.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Models/OrganiseType.cs @@ -1,4 +1,4 @@ -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Models; +namespace Umbraco.Community.BackOfficeOrganiser.Models; public enum OrganiseType { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollection.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollection.cs similarity index 78% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollection.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollection.cs index 90a5792..8d60d09 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollection.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollection.cs @@ -1,6 +1,6 @@ using Umbraco.Cms.Core.Composing; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.ContentTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; public class ContentTypeOrganiseActionCollection : BuilderCollectionBase { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollectionBuilder.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollectionBuilder.cs similarity index 81% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollectionBuilder.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollectionBuilder.cs index adaeaa1..fa6adc2 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollectionBuilder.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiseActionCollectionBuilder.cs @@ -1,6 +1,6 @@ using Umbraco.Cms.Core.Composing; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.ContentTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; public class ContentTypeOrganiseActionCollectionBuilder : OrderedCollectionBuilderBase { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs similarity index 87% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs index 5ad83be..9a28b33 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs @@ -1,8 +1,8 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Extensions; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.ContentTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; public class ContentTypeOrganiser : IBackOfficeOrganiser { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs similarity index 89% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs index 09d22e5..b1ab0ca 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs @@ -1,9 +1,9 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Extensions; using StackExchange.Profiling.Internal; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.ContentTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; public class DefaultContentTypeOrganiseAction : IContentTypeOrganiseAction { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/IContentTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/IContentTypeOrganiseAction.cs similarity index 80% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/IContentTypeOrganiseAction.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/IContentTypeOrganiseAction.cs index ad59b7f..73f6558 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/ContentTypes/IContentTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/IContentTypeOrganiseAction.cs @@ -1,7 +1,7 @@ using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.ContentTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; public interface IContentTypeOrganiseAction { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollection.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollection.cs similarity index 78% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollection.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollection.cs index 4e00722..0cd7e42 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollection.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollection.cs @@ -1,6 +1,6 @@ using Umbraco.Cms.Core.Composing; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; public class DataTypeOrganiseActionCollection : BuilderCollectionBase { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollectionBuilder.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollectionBuilder.cs similarity index 81% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollectionBuilder.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollectionBuilder.cs index 0488b14..37f3800 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollectionBuilder.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiseActionCollectionBuilder.cs @@ -1,6 +1,6 @@ using Umbraco.Cms.Core.Composing; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; public class DataTypeOrganiseActionCollectionBuilder : OrderedCollectionBuilderBase { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiser.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiser.cs similarity index 87% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiser.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiser.cs index ceb07ea..0aa6622 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiser.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiser.cs @@ -1,8 +1,8 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Extensions; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; public class DataTypeOrganiser : IBackOfficeOrganiser { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs similarity index 96% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs index 3d23de9..16074c4 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs @@ -1,11 +1,11 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; -using jcdcdev.Umbraco.BackOfficeOrganiser.Models; +using Umbraco.Community.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Models; using Microsoft.Extensions.Options; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; public class DefaultDataTypeOrganiseAction : IDataTypeOrganiseAction { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/IDataTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/IDataTypeOrganiseAction.cs similarity index 79% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/IDataTypeOrganiseAction.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/IDataTypeOrganiseAction.cs index 452a8ed..577647a 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/DataTypes/IDataTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/IDataTypeOrganiseAction.cs @@ -1,7 +1,7 @@ using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.DataTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; public interface IDataTypeOrganiseAction { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/IBackOfficeOrganiser.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/IBackOfficeOrganiser.cs similarity index 52% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/IBackOfficeOrganiser.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/IBackOfficeOrganiser.cs index 2aba2d4..d47a499 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/IBackOfficeOrganiser.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/IBackOfficeOrganiser.cs @@ -1,4 +1,4 @@ -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers; public interface IBackOfficeOrganiser { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs similarity index 92% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs index dd0f6d4..87adf0f 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs @@ -1,10 +1,10 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Extensions; using StackExchange.Profiling.Internal; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MediaTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.MediaTypes; public class DefaultMediaTypeOrganiseAction : IMediaTypeOrganiseAction { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/IMediaTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/IMediaTypeOrganiseAction.cs similarity index 79% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/IMediaTypeOrganiseAction.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/IMediaTypeOrganiseAction.cs index 342e445..557a614 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/IMediaTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/IMediaTypeOrganiseAction.cs @@ -1,7 +1,7 @@ using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MediaTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.MediaTypes; public interface IMediaTypeOrganiseAction { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollection.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollection.cs similarity index 78% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollection.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollection.cs index 7fd6d68..f702a53 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollection.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollection.cs @@ -1,6 +1,6 @@ using Umbraco.Cms.Core.Composing; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MediaTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.MediaTypes; public class MediaTypeOrganiseActionCollection : BuilderCollectionBase { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollectionBuilder.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollectionBuilder.cs similarity index 81% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollectionBuilder.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollectionBuilder.cs index 17648ae..d7997cf 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollectionBuilder.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiseActionCollectionBuilder.cs @@ -1,6 +1,6 @@ using Umbraco.Cms.Core.Composing; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MediaTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.MediaTypes; public class MediaTypeOrganiseActionCollectionBuilder : OrderedCollectionBuilderBase { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiser.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiser.cs similarity index 87% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiser.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiser.cs index b41567e..38b9150 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiser.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiser.cs @@ -1,8 +1,8 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Extensions; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MediaTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.MediaTypes; public class MediaTypeOrganiser : IBackOfficeOrganiser { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs similarity index 87% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs index 31bed13..f218b9b 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs @@ -1,9 +1,9 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Extensions; using StackExchange.Profiling.Internal; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MemberTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.MemberTypes; public class DefaultMemberTypeOrganiseAction : IMemberTypeOrganiseAction { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/IMemberTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/IMemberTypeOrganiseAction.cs similarity index 79% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/IMemberTypeOrganiseAction.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/IMemberTypeOrganiseAction.cs index e1746e0..00057d0 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/IMemberTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/IMemberTypeOrganiseAction.cs @@ -1,7 +1,7 @@ using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MemberTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.MemberTypes; public interface IMemberTypeOrganiseAction { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollection.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollection.cs similarity index 78% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollection.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollection.cs index 6287e0f..5ffa725 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollection.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollection.cs @@ -1,6 +1,6 @@ using Umbraco.Cms.Core.Composing; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MemberTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.MemberTypes; public class MemberTypeOrganiseActionCollection : BuilderCollectionBase { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollectionBuilder.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollectionBuilder.cs similarity index 81% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollectionBuilder.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollectionBuilder.cs index 922023a..0336de9 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollectionBuilder.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiseActionCollectionBuilder.cs @@ -1,6 +1,6 @@ using Umbraco.Cms.Core.Composing; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MemberTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.MemberTypes; public class MemberTypeOrganiseActionCollectionBuilder : OrderedCollectionBuilderBase { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiser.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiser.cs similarity index 87% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiser.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiser.cs index 463adcd..c34675b 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiser.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiser.cs @@ -1,8 +1,8 @@ -using jcdcdev.Umbraco.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Extensions; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Organisers.MemberTypes; +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.MemberTypes; public class MemberTypeOrganiser : IBackOfficeOrganiser { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj b/src/Umbraco.Community.BackOfficeOrganiser/Umbraco.Community.BackOfficeOrganiser.csproj similarity index 77% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj rename to src/Umbraco.Community.BackOfficeOrganiser/Umbraco.Community.BackOfficeOrganiser.csproj index 35e48b8..9974bbc 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/jcdcdev.Umbraco.BackOfficeOrganiser.csproj +++ b/src/Umbraco.Community.BackOfficeOrganiser/Umbraco.Community.BackOfficeOrganiser.csproj @@ -7,14 +7,14 @@ enable / . - jcdcdev.Umbraco.BackOfficeOrganiser - jcdcdev.Umbraco.BackOfficeOrganiser - jcdcdev.Umbraco.BackOfficeOrganiser + Umbraco.Community.BackOfficeOrganiser + Umbraco.Community.BackOfficeOrganiser + Umbraco.Community.BackOfficeOrganiser umbraco James Carter $([System.DateTime]::UtcNow.ToString(`yyyy`)) © James Carter - https://github.com/jcdcdev/jcdcdev.Umbraco.BackOfficeOrganiser - https://github.com/jcdcdev/jcdcdev.Umbraco.BackOfficeOrganiser + https://github.com/jcdcdev/Umbraco.Community.BackOfficeOrganiser + https://github.com/jcdcdev/Umbraco.Community.BackOfficeOrganiser README_nuget.md git MIT diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiser.cshtml b/src/Umbraco.Community.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiser.cshtml new file mode 100644 index 0000000..d8acd6b --- /dev/null +++ b/src/Umbraco.Community.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiser.cshtml @@ -0,0 +1,4 @@ +@inherits Umbraco.Community.SimpleDashboards.Web.DashboardViewPage + + + \ No newline at end of file diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiserDashboard.cs b/src/Umbraco.Community.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiserDashboard.cs similarity index 82% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiserDashboard.cs rename to src/Umbraco.Community.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiserDashboard.cs index 04ee535..3463a1d 100644 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiserDashboard.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiserDashboard.cs @@ -1,7 +1,7 @@ using Umbraco.Community.SimpleDashboards.Core; using Constants = Umbraco.Cms.Core.Constants; -namespace jcdcdev.Umbraco.BackOfficeOrganiser.Views.Dashboards; +namespace Umbraco.Community.BackOfficeOrganiser.Views.Dashboards; public class BackOfficeOrganiserDashboard : SimpleDashboard { diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/icon.png b/src/Umbraco.Community.BackOfficeOrganiser/icon.png similarity index 100% rename from src/jcdcdev.Umbraco.BackOfficeOrganiser/icon.png rename to src/Umbraco.Community.BackOfficeOrganiser/icon.png diff --git a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiser.cshtml b/src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiser.cshtml deleted file mode 100644 index aea6583..0000000 --- a/src/jcdcdev.Umbraco.BackOfficeOrganiser/Views/Dashboards/BackOfficeOrganiser.cshtml +++ /dev/null @@ -1,4 +0,0 @@ -@inherits Umbraco.Community.SimpleDashboards.Web.DashboardViewPage - - - \ No newline at end of file From c33ec4cbeb556634a1efafeb419eebcc8c7a5d7a Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Wed, 8 Nov 2023 19:59:15 +0000 Subject: [PATCH 13/20] clean: initial code standards --- .github/README.md | 10 +- .github/workflows/release.yml | 2 +- docs/README_nuget.md | 10 +- src/.editorconfig | 16 +++ .../Composer.cs | 2 +- .../ExampleDataTypeOrganiseAction.cs | 9 +- .../Program.cs | 33 +++--- .../Properties/launchSettings.json | 54 ++++----- .../Startup.cs | 111 +++++++++--------- ...munity.BackOfficeOrganiser.TestSite.csproj | 63 +++++----- .../Views/_ViewImports.cshtml | 3 +- .../appsettings.Development.json | 72 ++++++------ .../BackOfficeOrganiserController.cs | 17 +-- .../BackOfficeOrganiserService.cs | 29 +++-- .../Composer.cs | 11 +- .../ContentTypeBaseServiceExtensions.cs | 2 + .../Extensions/DataTypeExtensions.cs | 10 +- .../Extensions/DataTypeServiceExtensions.cs | 9 +- .../Extensions/MediaTypeExtensions.cs | 5 +- .../Extensions/UmbracoBuilderExtensions.cs | 20 ++-- .../IBackOfficeOrganiserService.cs | 2 +- .../Models/OrganiseResponse.cs | 14 +-- .../Organisers/BackOfficeOrganiserBase.cs | 32 +++++ .../ContentTypes/ContentTypeOrganiser.cs | 13 +- .../DefaultContentTypeOrganiseAction.cs | 4 +- .../Organisers/DataTypes/DataTypeOrganiser.cs | 14 ++- .../DefaultDataTypeOrganiseAction.cs | 7 +- .../Organisers/IBackOfficeOrganiser.cs | 2 +- .../DefaultMediaTypeOrganiseAction.cs | 8 +- .../MediaTypes/MediaTypeOrganiser.cs | 14 ++- .../DefaultMemberTypeOrganiseAction.cs | 2 +- .../MemberTypes/MemberTypeOrganiser.cs | 14 ++- ...braco.Community.BackOfficeOrganiser.csproj | 76 ++++++------ 33 files changed, 378 insertions(+), 312 deletions(-) create mode 100644 src/.editorconfig create mode 100644 src/Umbraco.Community.BackOfficeOrganiser/Organisers/BackOfficeOrganiserBase.cs diff --git a/.github/README.md b/.github/README.md index 95be0ca..7db0d55 100644 --- a/.github/README.md +++ b/.github/README.md @@ -4,10 +4,10 @@ [![NuGet](https://img.shields.io/nuget/vpre/Umbraco.Community.BackOfficeOrganiser?color=0273B3)](https://www.nuget.org/packages/Umbraco.Community.BackOfficeOrganiser) [![GitHub license](https://img.shields.io/github/license/jcdcdev/Umbraco.Community.BackOfficeOrganiser?color=8AB803)](../LICENSE) -Is your Backoffice a bit untidy? +Is your Backoffice a bit untidy? - Single-click organiser for - - Data Types - - Document Types - - Media Types - - Member Types \ No newline at end of file + - Data Types + - Document Types + - Media Types + - Member Types \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 17b6aac..a6e2565 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,7 +2,7 @@ name: Release on: pull_request: branches: "main" - types: [closed] + types: [ closed ] workflow_dispatch: jobs: build_release: diff --git a/docs/README_nuget.md b/docs/README_nuget.md index 837a157..d6041ed 100644 --- a/docs/README_nuget.md +++ b/docs/README_nuget.md @@ -4,10 +4,10 @@ [![NuGet](https://img.shields.io/nuget/vpre/Umbraco.Community.BackOfficeOrganiser?color=0273B3)](https://www.nuget.org/packages/Umbraco.Community.BackOfficeOrganiser) [![GitHub license](https://img.shields.io/github/license/jcdcdev/Umbraco.Community.BackOfficeOrganiser?color=8AB803)](https://github.com/jcdcdev/Umbraco.Community.BackOfficeOrganiser/blob/main/LICENSE) -Is your Backoffice a bit untidy? +Is your Backoffice a bit untidy? - Single-click organiser for - - Data Types - - Document Types - - Media Types - - Member Types \ No newline at end of file + - Data Types + - Document Types + - Media Types + - Member Types \ No newline at end of file diff --git a/src/.editorconfig b/src/.editorconfig new file mode 100644 index 0000000..e6ab1ba --- /dev/null +++ b/src/.editorconfig @@ -0,0 +1,16 @@ +[*] +max_line_length = 200 +indent_style = tab +indent_size = 4 +tab_width = 4 + +# ReSharper properties +resharper_blank_lines_before_block_statements = 1 +resharper_braces_redundant = false +resharper_csharp_indent_style = space +resharper_csharp_wrap_after_declaration_lpar = true +resharper_csharp_wrap_parameters_style = chop_if_long +resharper_instance_members_qualify_declared_in = base_class +resharper_method_or_operator_body = expression_body +resharper_place_expr_method_on_single_line = true +resharper_braces_for_ifelse = required \ No newline at end of file diff --git a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Composer.cs b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Composer.cs index 77adb22..8714cff 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Composer.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Composer.cs @@ -1,5 +1,5 @@ -using Umbraco.Community.BackOfficeOrganiser.Extensions; using Umbraco.Cms.Core.Composing; +using Umbraco.Community.BackOfficeOrganiser.Extensions; namespace Umbraco.Community.BackOfficeOrganiser.TestSite; diff --git a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/ExampleDataTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/ExampleDataTypeOrganiseAction.cs index 8929b6c..5306c4c 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/ExampleDataTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/ExampleDataTypeOrganiseAction.cs @@ -1,18 +1,17 @@ -using Umbraco.Community.BackOfficeOrganiser.Extensions; -using Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; +using Umbraco.Community.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; namespace Umbraco.Community.BackOfficeOrganiser.TestSite; public class ExampleDataTypeOrganiseAction : IDataTypeOrganiseAction { - public bool CanMove(IDataType dataType, IDataTypeService dataTypeService) => - dataType.EditorAlias.InvariantStartsWith("Umbraco.Community"); + public bool CanMove(IDataType dataType, IDataTypeService dataTypeService) => dataType.EditorAlias.InvariantStartsWith("Umbraco.Community"); public void Move(IDataType dataType, IDataTypeService dataTypeService) { - var folder = dataTypeService.GetOrCreateFolder("Community", -1); + var folder = dataTypeService.GetOrCreateFolder("Community"); dataTypeService.Move(dataType, folder.Id); } } \ No newline at end of file diff --git a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Program.cs b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Program.cs index 925353b..f785469 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Program.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Program.cs @@ -1,19 +1,18 @@ -namespace Umbraco.Community.BackOfficeOrganiser.TestSite +namespace Umbraco.Community.BackOfficeOrganiser.TestSite; + +public class Program { - public class Program - { - public static void Main(string[] args) - => CreateHostBuilder(args) - .Build() - .Run(); + public static void Main(string[] args) + => CreateHostBuilder(args) + .Build() + .Run(); - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureUmbracoDefaults() - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStaticWebAssets(); - webBuilder.UseStartup(); - }); - } -} + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureUmbracoDefaults() + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStaticWebAssets(); + webBuilder.UseStartup(); + }); +} \ No newline at end of file diff --git a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Properties/launchSettings.json b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Properties/launchSettings.json index cfa1ef6..89fb1ca 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Properties/launchSettings.json +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Properties/launchSettings.json @@ -1,29 +1,29 @@ { - "$schema": "https://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:59495", - "sslPort": 44315 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "Umbraco.Web.UI": { - "commandName": "Project", - "dotnetRunMessages": true, - "launchBrowser": true, - "applicationUrl": "https://localhost:44315;http://localhost:59495", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } + "$schema": "https://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:59495", + "sslPort": 44315 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Umbraco.Web.UI": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "applicationUrl": "https://localhost:44315;http://localhost:59495", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } } diff --git a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Startup.cs b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Startup.cs index a1a2bdf..a2a21b2 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Startup.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Startup.cs @@ -1,65 +1,64 @@ -namespace Umbraco.Community.BackOfficeOrganiser.TestSite +namespace Umbraco.Community.BackOfficeOrganiser.TestSite; + +public class Startup { - public class Startup + private readonly IConfiguration _config; + private readonly IWebHostEnvironment _env; + + /// + /// Initializes a new instance of the class. + /// + /// The web hosting environment. + /// The configuration. + /// + /// Only a few services are possible to be injected here https://github.com/dotnet/aspnetcore/issues/9337. + /// + public Startup(IWebHostEnvironment webHostEnvironment, IConfiguration config) { - private readonly IWebHostEnvironment _env; - private readonly IConfiguration _config; + _env = webHostEnvironment ?? throw new ArgumentNullException(nameof(webHostEnvironment)); + _config = config ?? throw new ArgumentNullException(nameof(config)); + } - /// - /// Initializes a new instance of the class. - /// - /// The web hosting environment. - /// The configuration. - /// - /// Only a few services are possible to be injected here https://github.com/dotnet/aspnetcore/issues/9337. - /// - public Startup(IWebHostEnvironment webHostEnvironment, IConfiguration config) - { - _env = webHostEnvironment ?? throw new ArgumentNullException(nameof(webHostEnvironment)); - _config = config ?? throw new ArgumentNullException(nameof(config)); - } + /// + /// Configures the services. + /// + /// The services. + /// + /// This method gets called by the runtime. Use this method to add services to the container. + /// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940. + /// + public void ConfigureServices(IServiceCollection services) + { + services.AddUmbraco(_env, _config) + .AddBackOffice() + .AddWebsite() + .AddComposers() + .Build(); + } - /// - /// Configures the services. - /// - /// The services. - /// - /// This method gets called by the runtime. Use this method to add services to the container. - /// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940. - /// - public void ConfigureServices(IServiceCollection services) + /// + /// Configures the application. + /// + /// The application builder. + /// The web hosting environment. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) { - services.AddUmbraco(_env, _config) - .AddBackOffice() - .AddWebsite() - .AddComposers() - .Build(); + app.UseDeveloperExceptionPage(); } - /// - /// Configures the application. - /// - /// The application builder. - /// The web hosting environment. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - if (env.IsDevelopment()) + app.UseUmbraco() + .WithMiddleware(u => { - app.UseDeveloperExceptionPage(); - } - - app.UseUmbraco() - .WithMiddleware(u => - { - u.UseBackOffice(); - u.UseWebsite(); - }) - .WithEndpoints(u => - { - u.UseInstallerEndpoints(); - u.UseBackOfficeEndpoints(); - u.UseWebsiteEndpoints(); - }); - } + u.UseBackOffice(); + u.UseWebsite(); + }) + .WithEndpoints(u => + { + u.UseInstallerEndpoints(); + u.UseBackOfficeEndpoints(); + u.UseWebsiteEndpoints(); + }); } -} +} \ No newline at end of file diff --git a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Umbraco.Community.BackOfficeOrganiser.TestSite.csproj b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Umbraco.Community.BackOfficeOrganiser.TestSite.csproj index ed58f3f..bc6203e 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Umbraco.Community.BackOfficeOrganiser.TestSite.csproj +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Umbraco.Community.BackOfficeOrganiser.TestSite.csproj @@ -1,40 +1,41 @@ - - net6.0 - enable - enable - + + net6.0 + enable + enable + - - - - + + + + + - - - - - + + + + + - - - true - + + + true + - - - false - false - + + + false + false + - - - + + + - - - appsettings.json - - + + + appsettings.json + + \ No newline at end of file diff --git a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Views/_ViewImports.cshtml b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Views/_ViewImports.cshtml index 18678e2..1679f49 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Views/_ViewImports.cshtml +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Views/_ViewImports.cshtml @@ -4,6 +4,7 @@ @using Umbraco.Cms.Web.Common.Views @using Umbraco.Cms.Core.Models.PublishedContent @using Microsoft.AspNetCore.Html +@using Smidge @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @addTagHelper *, Smidge -@inject Smidge.SmidgeHelper SmidgeHelper +@inject SmidgeHelper SmidgeHelper \ No newline at end of file diff --git a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/appsettings.Development.json b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/appsettings.Development.json index 9eee076..67d1185 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/appsettings.Development.json +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/appsettings.Development.json @@ -1,38 +1,38 @@ { - "$schema": "./appsettings-schema.json", - "Serilog": { - "MinimumLevel": { - "Default": "Information" - }, - "WriteTo": [ - { - "Name": "Async", - "Args": { - "configure": [ - { - "Name": "Console" - } - ] - } - } - ] - }, - "Umbraco": { - "CMS": { - "Content": { - "MacroErrors": "Throw" - }, - "Hosting": { - "Debug": true - }, - "ModelsBuilder": { - "ModelsMode": "SourceCodeAuto", - "ModelsDirectory": "~/Models" - }, - "RuntimeMinification": { - "UseInMemoryCache": true, - "CacheBuster": "Timestamp" - } - } - } + "$schema": "./appsettings-schema.json", + "Serilog": { + "MinimumLevel": { + "Default": "Information" + }, + "WriteTo": [ + { + "Name": "Async", + "Args": { + "configure": [ + { + "Name": "Console" + } + ] + } + } + ] + }, + "Umbraco": { + "CMS": { + "Content": { + "MacroErrors": "Throw" + }, + "Hosting": { + "Debug": true + }, + "ModelsBuilder": { + "ModelsMode": "SourceCodeAuto", + "ModelsDirectory": "~/Models" + }, + "RuntimeMinification": { + "UseInMemoryCache": true, + "CacheBuster": "Timestamp" + } + } + } } diff --git a/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserController.cs b/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserController.cs index cbe7dc8..0d1c0fa 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserController.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserController.cs @@ -1,4 +1,3 @@ -using Umbraco.Community.BackOfficeOrganiser.Models; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Web.BackOffice.Filters; @@ -6,6 +5,7 @@ using Umbraco.Cms.Web.Common.Authorization; using Umbraco.Cms.Web.Common.Controllers; using Umbraco.Cms.Web.Common.Filters; +using Umbraco.Community.BackOfficeOrganiser.Models; namespace Umbraco.Community.BackOfficeOrganiser; @@ -16,10 +16,18 @@ namespace Umbraco.Community.BackOfficeOrganiser; [UmbracoRequireHttps] public class BackOfficeOrganiserController : UmbracoApiController { + private readonly IBackOfficeOrganiserService _service; + + public BackOfficeOrganiserController(IBackOfficeOrganiserService service) + { + _service = service; + } + public IActionResult Organise(string type) { var organiseType = DetermineOrganiseType(type); var attempt = _service.Organise(organiseType); + if (!attempt.Success) { return BadRequest(OrganiseResponse.Fail($"Failed to organise {type}")); @@ -41,11 +49,4 @@ private static OrganiseType DetermineOrganiseType(string type) }; return organise; } - - private readonly IBackOfficeOrganiserService _service; - - public BackOfficeOrganiserController(IBackOfficeOrganiserService service) - { - _service = service; - } } \ No newline at end of file diff --git a/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserService.cs b/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserService.cs index 686cd0a..82ec062 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserService.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserService.cs @@ -1,14 +1,16 @@ -using Umbraco.Community.BackOfficeOrganiser.Models; -using Umbraco.Community.BackOfficeOrganiser.Organisers; +using Microsoft.Extensions.Logging; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Models; +using Umbraco.Community.BackOfficeOrganiser.Models; +using Umbraco.Community.BackOfficeOrganiser.Organisers; namespace Umbraco.Community.BackOfficeOrganiser; public class BackOfficeOrganiserService : IBackOfficeOrganiserService { - private readonly IBackOfficeOrganiser _dataTypeOrganiser; private readonly IBackOfficeOrganiser _contentTypeOrganiser; + private readonly IBackOfficeOrganiser _dataTypeOrganiser; + private readonly ILogger _logger; private readonly IBackOfficeOrganiser _mediaTypeOrganiser; private readonly IBackOfficeOrganiser _memberTypeOrganiser; @@ -16,17 +18,14 @@ public BackOfficeOrganiserService( IBackOfficeOrganiser dataTypeOrganiser, IBackOfficeOrganiser contentTypeOrganiser, IBackOfficeOrganiser mediaTypeOrganiser, - IBackOfficeOrganiser memberTypeOrganiser) + IBackOfficeOrganiser memberTypeOrganiser, + ILogger logger) { _dataTypeOrganiser = dataTypeOrganiser; _contentTypeOrganiser = contentTypeOrganiser; _mediaTypeOrganiser = mediaTypeOrganiser; _memberTypeOrganiser = memberTypeOrganiser; - } - - public void OrganiseDataTypes() - { - _dataTypeOrganiser.Organise(); + _logger = logger; } public Attempt Organise(OrganiseType organise) @@ -57,12 +56,18 @@ public Attempt Organise(OrganiseType organise) } catch (Exception ex) { + _logger.LogError(ex, "BackOfficeOrganiser: Failed to organise {OrganiseType}", organise); return Attempt.Fail(ex); } return Attempt.Succeed(organise); } + public void OrganiseDataTypes() + { + _dataTypeOrganiser.OrganiseType(); + } + private void OrganiseAll() { OrganiseContentTypes(); @@ -73,16 +78,16 @@ private void OrganiseAll() private void OrganiseMemberTypes() { - _memberTypeOrganiser.Organise(); + _memberTypeOrganiser.OrganiseType(); } private void OrganiseMediaTypes() { - _mediaTypeOrganiser.Organise(); + _mediaTypeOrganiser.OrganiseType(); } private void OrganiseContentTypes() { - _contentTypeOrganiser.Organise(); + _contentTypeOrganiser.OrganiseType(); } } \ No newline at end of file diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Composer.cs b/src/Umbraco.Community.BackOfficeOrganiser/Composer.cs index 0e78b3e..83c1614 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Composer.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Composer.cs @@ -1,3 +1,7 @@ +using Microsoft.Extensions.DependencyInjection; +using Umbraco.Cms.Core.Composing; +using Umbraco.Cms.Core.DependencyInjection; +using Umbraco.Cms.Core.Models; using Umbraco.Community.BackOfficeOrganiser.Extensions; using Umbraco.Community.BackOfficeOrganiser.Models; using Umbraco.Community.BackOfficeOrganiser.Organisers; @@ -5,11 +9,6 @@ using Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; using Umbraco.Community.BackOfficeOrganiser.Organisers.MediaTypes; using Umbraco.Community.BackOfficeOrganiser.Organisers.MemberTypes; -using Lucene.Net.Search; -using Microsoft.Extensions.DependencyInjection; -using Umbraco.Cms.Core.Composing; -using Umbraco.Cms.Core.DependencyInjection; -using Umbraco.Cms.Core.Models; namespace Umbraco.Community.BackOfficeOrganiser; @@ -28,7 +27,7 @@ public void Compose(IUmbracoBuilder builder) builder.Services.AddSingleton, MediaTypeOrganiser>(); builder.ManifestFilters().Append(); - + builder.DataTypeOrganiseActions().Append(); builder.ContentTypeOrganiseActions().Append(); builder.MediaTypeOrganiseActions().Append(); diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Extensions/ContentTypeBaseServiceExtensions.cs b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/ContentTypeBaseServiceExtensions.cs index a91decb..bc0712f 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Extensions/ContentTypeBaseServiceExtensions.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/ContentTypeBaseServiceExtensions.cs @@ -14,9 +14,11 @@ public static void DeleteAllEmptyContainers(this IContentTypeBaseService s var contentTypes = service.GetAll(); var lookup = contentTypes.GroupBy(x => x.ParentId).ToLookup(x => x.Key, x => x.Count()); var containers = service.GetAllContainers(); + foreach (var container in containers) { var hasChildren = lookup.Contains(container.Id); + if (hasChildren) { continue; diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Extensions/DataTypeExtensions.cs b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/DataTypeExtensions.cs index 5659738..0cea46c 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Extensions/DataTypeExtensions.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/DataTypeExtensions.cs @@ -45,7 +45,7 @@ public static class DataTypeExtensions Constants.DataTypes.Guids.LabelBigIntGuid, Constants.DataTypes.Guids.LabelDateTimeGuid, Constants.DataTypes.Guids.LabelTimeGuid, - Constants.DataTypes.Guids.LabelDecimalGuid, + Constants.DataTypes.Guids.LabelDecimalGuid }; private static readonly string[] Aliases = @@ -83,12 +83,10 @@ public static class DataTypeExtensions Constants.PropertyEditors.Aliases.UploadField, Constants.PropertyEditors.Aliases.EmailAddress, Constants.PropertyEditors.Aliases.NestedContent, - Constants.PropertyEditors.Aliases.MultiUrlPicker, + Constants.PropertyEditors.Aliases.MultiUrlPicker }; - public static bool IsUmbracoEditor(this IDataType dataType) => - Aliases.InvariantContains(dataType.EditorAlias); + public static bool IsUmbracoEditor(this IDataType dataType) => Aliases.InvariantContains(dataType.EditorAlias); - public static bool IsInternalUmbracoEditor(this IDataType dataType) => - Guids.Contains(dataType.Key); + public static bool IsInternalUmbracoEditor(this IDataType dataType) => Guids.Contains(dataType.Key); } \ No newline at end of file diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Extensions/DataTypeServiceExtensions.cs b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/DataTypeServiceExtensions.cs index ab7c810..2eca62f 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Extensions/DataTypeServiceExtensions.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/DataTypeServiceExtensions.cs @@ -6,17 +6,18 @@ namespace Umbraco.Community.BackOfficeOrganiser.Extensions; public static class DataTypeServiceExtensions { - public static IEnumerable GetAllContainers(this IDataTypeService dataTypeService) => - dataTypeService.GetContainers(Array.Empty()); + public static IEnumerable GetAllContainers(this IDataTypeService dataTypeService) => dataTypeService.GetContainers(Array.Empty()); public static void DeleteAllEmptyContainers(this IDataTypeService dataTypeService) { var dataTypes = dataTypeService.GetAll(); var lookup = dataTypes.GroupBy(x => x.ParentId).ToLookup(x => x.Key, x => x.Count()); var containers = dataTypeService.GetAllContainers(); + foreach (var container in containers) { var hasChildren = lookup.Contains(container.Id); + if (hasChildren) { continue; @@ -26,7 +27,9 @@ public static void DeleteAllEmptyContainers(this IDataTypeService dataTypeServic } } - public static EntityContainer GetOrCreateFolder(this IDataTypeService dataTypeService, string folder, + public static EntityContainer GetOrCreateFolder( + this IDataTypeService dataTypeService, + string folder, int parentId = -1) { var dts = dataTypeService diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Extensions/MediaTypeExtensions.cs b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/MediaTypeExtensions.cs index 0485177..f90b5c4 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Extensions/MediaTypeExtensions.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/MediaTypeExtensions.cs @@ -21,8 +21,5 @@ public static class MediaTypeExtensions Constants.Conventions.MediaTypes.VectorGraphicsAlias }; - public static bool IsInternal(this IMediaType mediaType) - { - return MediaTypes.InvariantContains(mediaType.Alias); - } + public static bool IsInternal(this IMediaType mediaType) => MediaTypes.InvariantContains(mediaType.Alias); } \ No newline at end of file diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Extensions/UmbracoBuilderExtensions.cs b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/UmbracoBuilderExtensions.cs index 2034a1f..34fadc2 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Extensions/UmbracoBuilderExtensions.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Extensions/UmbracoBuilderExtensions.cs @@ -1,22 +1,18 @@ +using Umbraco.Cms.Core.DependencyInjection; using Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; using Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; using Umbraco.Community.BackOfficeOrganiser.Organisers.MediaTypes; using Umbraco.Community.BackOfficeOrganiser.Organisers.MemberTypes; -using Umbraco.Cms.Core.DependencyInjection; namespace Umbraco.Community.BackOfficeOrganiser.Extensions; public static class UmbracoBuilderExtensions { - public static DataTypeOrganiseActionCollectionBuilder DataTypeOrganiseActions(this IUmbracoBuilder builder) - => builder.WithCollectionBuilder(); - - public static ContentTypeOrganiseActionCollectionBuilder ContentTypeOrganiseActions(this IUmbracoBuilder builder) - => builder.WithCollectionBuilder(); - - public static MediaTypeOrganiseActionCollectionBuilder MediaTypeOrganiseActions(this IUmbracoBuilder builder) - => builder.WithCollectionBuilder(); - - public static MemberTypeOrganiseActionCollectionBuilder MemberTypeOrganiseActions(this IUmbracoBuilder builder) - => builder.WithCollectionBuilder(); + public static DataTypeOrganiseActionCollectionBuilder DataTypeOrganiseActions(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); + + public static ContentTypeOrganiseActionCollectionBuilder ContentTypeOrganiseActions(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); + + public static MediaTypeOrganiseActionCollectionBuilder MediaTypeOrganiseActions(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); + + public static MemberTypeOrganiseActionCollectionBuilder MemberTypeOrganiseActions(this IUmbracoBuilder builder) => builder.WithCollectionBuilder(); } \ No newline at end of file diff --git a/src/Umbraco.Community.BackOfficeOrganiser/IBackOfficeOrganiserService.cs b/src/Umbraco.Community.BackOfficeOrganiser/IBackOfficeOrganiserService.cs index f3e6621..6069fef 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/IBackOfficeOrganiserService.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/IBackOfficeOrganiserService.cs @@ -1,5 +1,5 @@ -using Umbraco.Community.BackOfficeOrganiser.Models; using Umbraco.Cms.Core; +using Umbraco.Community.BackOfficeOrganiser.Models; namespace Umbraco.Community.BackOfficeOrganiser; diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Models/OrganiseResponse.cs b/src/Umbraco.Community.BackOfficeOrganiser/Models/OrganiseResponse.cs index c919be4..179106d 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Models/OrganiseResponse.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Models/OrganiseResponse.cs @@ -2,16 +2,6 @@ namespace Umbraco.Community.BackOfficeOrganiser.Models; public class OrganiseResponse { - public static OrganiseResponse Success(string? message = null) - { - return new OrganiseResponse(message, true); - } - - public static OrganiseResponse Fail(string? message = null) - { - return new OrganiseResponse(message, false); - } - private OrganiseResponse(string? message, bool success) { Message = message ?? string.Empty; @@ -21,4 +11,8 @@ private OrganiseResponse(string? message, bool success) public bool Error { get; } public string Message { get; } + + public static OrganiseResponse Success(string? message = null) => new(message, true); + + public static OrganiseResponse Fail(string? message = null) => new(message, false); } \ No newline at end of file diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/BackOfficeOrganiserBase.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/BackOfficeOrganiserBase.cs new file mode 100644 index 0000000..496770e --- /dev/null +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/BackOfficeOrganiserBase.cs @@ -0,0 +1,32 @@ +using Microsoft.Extensions.Logging; + +namespace Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; + +public abstract class BackOfficeOrganiserBase : IBackOfficeOrganiser +{ + public readonly ILogger Logger; + + protected BackOfficeOrganiserBase(ILogger logger) + { + Logger = logger; + } + + public void OrganiseType() + { + Logger.LogInformation("BackOfficeOrganiser: Cleanup for {Type} Started", typeof(T).Name); + + try + { + Organise(); + } + catch (Exception ex) + { + Logger.LogError(ex, "BackOfficeOrganiser: Cleanup for {Type} Failed", typeof(T).Name); + return; + } + + Logger.LogInformation("BackOfficeOrganiser: Cleanup for {Type} Complete", typeof(T).Name); + } + + public abstract void Organise(); +} \ No newline at end of file diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs index 9a28b33..1c26834 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs @@ -1,23 +1,28 @@ -using Umbraco.Community.BackOfficeOrganiser.Extensions; +using Microsoft.Extensions.Logging; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; +using Umbraco.Community.BackOfficeOrganiser.Extensions; namespace Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; -public class ContentTypeOrganiser : IBackOfficeOrganiser +public class ContentTypeOrganiser : BackOfficeOrganiserBase { private readonly IContentTypeService _contentTypeService; private readonly ContentTypeOrganiseActionCollection _organiseActions; - public ContentTypeOrganiser(IContentTypeService contentTypeService, ContentTypeOrganiseActionCollection organiseActions) + public ContentTypeOrganiser( + ILogger logger, + IContentTypeService contentTypeService, + ContentTypeOrganiseActionCollection organiseActions) : base(logger) { _contentTypeService = contentTypeService; _organiseActions = organiseActions; } - public void Organise() + public override void Organise() { var contentTypes = _contentTypeService.GetAll().ToList(); + foreach (var contentType in contentTypes) { var organiser = _organiseActions.FirstOrDefault(x => x.CanMove(contentType, _contentTypeService)); diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs index b1ab0ca..09d434b 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/DefaultContentTypeOrganiseAction.cs @@ -1,7 +1,7 @@ -using Umbraco.Community.BackOfficeOrganiser.Extensions; using StackExchange.Profiling.Internal; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; +using Umbraco.Community.BackOfficeOrganiser.Extensions; namespace Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; @@ -14,7 +14,7 @@ public void Move(IContentType contentType, IContentTypeService contentTypeServic var folderId = -1; var folderName = string.Empty; var isComposition = contentTypeService.GetComposedOf(contentType.Id).Any(); - + if (contentType.AllowedTemplates?.Any() ?? false) { folderName = "Pages"; diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiser.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiser.cs index 0aa6622..9555dc6 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiser.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DataTypeOrganiser.cs @@ -1,23 +1,29 @@ -using Umbraco.Community.BackOfficeOrganiser.Extensions; +using Microsoft.Extensions.Logging; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; +using Umbraco.Community.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; namespace Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; -public class DataTypeOrganiser : IBackOfficeOrganiser +public class DataTypeOrganiser : BackOfficeOrganiserBase { private readonly IDataTypeService _dataTypeService; private readonly DataTypeOrganiseActionCollection _organiseActions; - public DataTypeOrganiser(IDataTypeService dataTypeService, DataTypeOrganiseActionCollection organiseActions) + public DataTypeOrganiser( + ILogger logger, + IDataTypeService dataTypeService, + DataTypeOrganiseActionCollection organiseActions) : base(logger) { _dataTypeService = dataTypeService; _organiseActions = organiseActions; } - public void Organise() + public override void Organise() { var dataTypes = _dataTypeService.GetAll().ToList(); + foreach (var dataType in dataTypes) { var organiser = _organiseActions.FirstOrDefault(x => x.CanMove(dataType, _dataTypeService)); diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs index 16074c4..5143fbb 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs @@ -1,9 +1,9 @@ -using Umbraco.Community.BackOfficeOrganiser.Extensions; -using Umbraco.Community.BackOfficeOrganiser.Models; using Microsoft.Extensions.Options; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; +using Umbraco.Community.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Models; namespace Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; @@ -21,6 +21,7 @@ public DefaultDataTypeOrganiseAction(IOptions option public void Move(IDataType dataType, IDataTypeService dataTypeService) { var parentFolderId = -1; + if (dataType.IsInternalUmbracoEditor()) { var internalFolder = dataTypeService.GetOrCreateFolder(_options.DataTypes.InternalFolderName); @@ -54,7 +55,7 @@ private static string GetFolderName(IDataType dataType) var folder = dataType.EditorAlias switch { Constants.PropertyEditors.Aliases.BlockList => "Block List", - + Constants.PropertyEditors.Aliases.NestedContent => "Nested Content", Constants.PropertyEditors.Aliases.Grid => "Grid", diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/IBackOfficeOrganiser.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/IBackOfficeOrganiser.cs index d47a499..a32ffca 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/IBackOfficeOrganiser.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/IBackOfficeOrganiser.cs @@ -2,5 +2,5 @@ namespace Umbraco.Community.BackOfficeOrganiser.Organisers; public interface IBackOfficeOrganiser { - void Organise(); + void OrganiseType(); } \ No newline at end of file diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs index 87adf0f..ba46173 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/DefaultMediaTypeOrganiseAction.cs @@ -1,8 +1,8 @@ -using Umbraco.Community.BackOfficeOrganiser.Extensions; using StackExchange.Profiling.Internal; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; +using Umbraco.Community.BackOfficeOrganiser.Extensions; namespace Umbraco.Community.BackOfficeOrganiser.Organisers.MediaTypes; @@ -15,7 +15,7 @@ public void Move(IMediaType mediaType, IMediaTypeService mediaTypeService) var folderId = -1; var parentId = -1; var folderName = string.Empty; - + if (mediaType.IsInternal()) { parentId = mediaTypeService.GetOrCreateFolder("Internal").Id; @@ -32,12 +32,12 @@ public void Move(IMediaType mediaType, IMediaTypeService mediaTypeService) _ => folderName }; } - + if (mediaType.IsElement) { folderName = "Element Types"; } - + if (!folderName.IsNullOrWhiteSpace()) { folderId = mediaTypeService.GetOrCreateFolder(folderName, parentId).Id; diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiser.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiser.cs index 38b9150..efca3ca 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiser.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MediaTypes/MediaTypeOrganiser.cs @@ -1,23 +1,29 @@ -using Umbraco.Community.BackOfficeOrganiser.Extensions; +using Microsoft.Extensions.Logging; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; +using Umbraco.Community.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; namespace Umbraco.Community.BackOfficeOrganiser.Organisers.MediaTypes; -public class MediaTypeOrganiser : IBackOfficeOrganiser +public class MediaTypeOrganiser : BackOfficeOrganiserBase { private readonly IMediaTypeService _mediaTypeService; private readonly MediaTypeOrganiseActionCollection _organiseActions; - public MediaTypeOrganiser(IMediaTypeService mediaTypeService, MediaTypeOrganiseActionCollection organiseActions) + public MediaTypeOrganiser( + ILogger logger, + IMediaTypeService mediaTypeService, + MediaTypeOrganiseActionCollection organiseActions) : base(logger) { _mediaTypeService = mediaTypeService; _organiseActions = organiseActions; } - public void Organise() + public override void Organise() { var mediaTypes = _mediaTypeService.GetAll().ToList(); + foreach (var mediaType in mediaTypes) { var organiser = _organiseActions.FirstOrDefault(x => x.CanMove(mediaType, _mediaTypeService)); diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs index f218b9b..1ef353b 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/DefaultMemberTypeOrganiseAction.cs @@ -1,7 +1,7 @@ -using Umbraco.Community.BackOfficeOrganiser.Extensions; using StackExchange.Profiling.Internal; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; +using Umbraco.Community.BackOfficeOrganiser.Extensions; namespace Umbraco.Community.BackOfficeOrganiser.Organisers.MemberTypes; diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiser.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiser.cs index c34675b..b07cb2b 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiser.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/MemberTypes/MemberTypeOrganiser.cs @@ -1,23 +1,29 @@ -using Umbraco.Community.BackOfficeOrganiser.Extensions; +using Microsoft.Extensions.Logging; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; +using Umbraco.Community.BackOfficeOrganiser.Extensions; +using Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; namespace Umbraco.Community.BackOfficeOrganiser.Organisers.MemberTypes; -public class MemberTypeOrganiser : IBackOfficeOrganiser +public class MemberTypeOrganiser : BackOfficeOrganiserBase { private readonly IMemberTypeService _memberTypeService; private readonly MemberTypeOrganiseActionCollection _organiseActions; - public MemberTypeOrganiser(IMemberTypeService memberTypeService, MemberTypeOrganiseActionCollection organiseActions) + public MemberTypeOrganiser( + ILogger logger, + IMemberTypeService memberTypeService, + MemberTypeOrganiseActionCollection organiseActions) : base(logger) { _memberTypeService = memberTypeService; _organiseActions = organiseActions; } - public void Organise() + public override void Organise() { var memberTypes = _memberTypeService.GetAll().ToList(); + foreach (var memberType in memberTypes) { var organiser = _organiseActions.FirstOrDefault(x => x.CanMove(memberType, _memberTypeService)); diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Umbraco.Community.BackOfficeOrganiser.csproj b/src/Umbraco.Community.BackOfficeOrganiser/Umbraco.Community.BackOfficeOrganiser.csproj index 9974bbc..071ed45 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Umbraco.Community.BackOfficeOrganiser.csproj +++ b/src/Umbraco.Community.BackOfficeOrganiser/Umbraco.Community.BackOfficeOrganiser.csproj @@ -1,44 +1,44 @@ - - net6.0 - 10 - true - enable - enable - / - . - Umbraco.Community.BackOfficeOrganiser - Umbraco.Community.BackOfficeOrganiser - Umbraco.Community.BackOfficeOrganiser - umbraco - James Carter - $([System.DateTime]::UtcNow.ToString(`yyyy`)) © James Carter - https://github.com/jcdcdev/Umbraco.Community.BackOfficeOrganiser - https://github.com/jcdcdev/Umbraco.Community.BackOfficeOrganiser - README_nuget.md - git - MIT - images\icon.png - + + net6.0 + 10 + true + enable + enable + / + . + Umbraco.Community.BackOfficeOrganiser + Umbraco.Community.BackOfficeOrganiser + Umbraco.Community.BackOfficeOrganiser + umbraco + James Carter + $([System.DateTime]::UtcNow.ToString(`yyyy`)) © James Carter + https://github.com/jcdcdev/Umbraco.Community.BackOfficeOrganiser + https://github.com/jcdcdev/Umbraco.Community.BackOfficeOrganiser + README_nuget.md + git + MIT + images\icon.png + - - - - - + + + + + - - - + + + - - - True - \ - - + + + True + \ + + - - - + + + From ac21867ac62a967a0dc48347662d756c17331ecb Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Wed, 8 Nov 2023 20:33:01 +0000 Subject: [PATCH 14/20] +changelog-ignore: fix build --- .../BackOfficeOrganiserService.cs | 28 ++++++++++--------- .../Composer.cs | 10 +++---- .../ContentTypes/ContentTypeOrganiser.cs | 2 +- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserService.cs b/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserService.cs index 82ec062..8b1e5ae 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserService.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/BackOfficeOrganiserService.cs @@ -1,31 +1,33 @@ using Microsoft.Extensions.Logging; using Umbraco.Cms.Core; -using Umbraco.Cms.Core.Models; using Umbraco.Community.BackOfficeOrganiser.Models; -using Umbraco.Community.BackOfficeOrganiser.Organisers; +using Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; +using Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; +using Umbraco.Community.BackOfficeOrganiser.Organisers.MediaTypes; +using Umbraco.Community.BackOfficeOrganiser.Organisers.MemberTypes; namespace Umbraco.Community.BackOfficeOrganiser; public class BackOfficeOrganiserService : IBackOfficeOrganiserService { - private readonly IBackOfficeOrganiser _contentTypeOrganiser; - private readonly IBackOfficeOrganiser _dataTypeOrganiser; + private readonly ContentTypeOrganiser _contentTypeOrganiser; + private readonly DataTypeOrganiser _dataTypeOrganiser; private readonly ILogger _logger; - private readonly IBackOfficeOrganiser _mediaTypeOrganiser; - private readonly IBackOfficeOrganiser _memberTypeOrganiser; + private readonly MediaTypeOrganiser _mediaTypeOrganiser; + private readonly MemberTypeOrganiser _memberTypeOrganiser; public BackOfficeOrganiserService( - IBackOfficeOrganiser dataTypeOrganiser, - IBackOfficeOrganiser contentTypeOrganiser, - IBackOfficeOrganiser mediaTypeOrganiser, - IBackOfficeOrganiser memberTypeOrganiser, - ILogger logger) + ILogger logger, + ContentTypeOrganiser contentTypeOrganiser, + MediaTypeOrganiser mediaTypeOrganiser, + MemberTypeOrganiser memberTypeOrganiser, + DataTypeOrganiser dataTypeOrganiser) { - _dataTypeOrganiser = dataTypeOrganiser; + _logger = logger; _contentTypeOrganiser = contentTypeOrganiser; _mediaTypeOrganiser = mediaTypeOrganiser; _memberTypeOrganiser = memberTypeOrganiser; - _logger = logger; + _dataTypeOrganiser = dataTypeOrganiser; } public Attempt Organise(OrganiseType organise) diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Composer.cs b/src/Umbraco.Community.BackOfficeOrganiser/Composer.cs index 83c1614..6a8d318 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Composer.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Composer.cs @@ -1,10 +1,8 @@ using Microsoft.Extensions.DependencyInjection; using Umbraco.Cms.Core.Composing; using Umbraco.Cms.Core.DependencyInjection; -using Umbraco.Cms.Core.Models; using Umbraco.Community.BackOfficeOrganiser.Extensions; using Umbraco.Community.BackOfficeOrganiser.Models; -using Umbraco.Community.BackOfficeOrganiser.Organisers; using Umbraco.Community.BackOfficeOrganiser.Organisers.ContentTypes; using Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; using Umbraco.Community.BackOfficeOrganiser.Organisers.MediaTypes; @@ -21,10 +19,10 @@ public void Compose(IUmbracoBuilder builder) builder.Services.AddSingleton(); - builder.Services.AddSingleton, DataTypeOrganiser>(); - builder.Services.AddSingleton, ContentTypeOrganiser>(); - builder.Services.AddSingleton, MemberTypeOrganiser>(); - builder.Services.AddSingleton, MediaTypeOrganiser>(); + builder.Services.AddSingleton(); + builder.Services.AddSingleton(); + builder.Services.AddSingleton(); + builder.Services.AddSingleton(); builder.ManifestFilters().Append(); diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs index 1c26834..68ccb3a 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/ContentTypes/ContentTypeOrganiser.cs @@ -11,7 +11,7 @@ public class ContentTypeOrganiser : BackOfficeOrganiserBase private readonly ContentTypeOrganiseActionCollection _organiseActions; public ContentTypeOrganiser( - ILogger logger, + ILogger logger, IContentTypeService contentTypeService, ContentTypeOrganiseActionCollection organiseActions) : base(logger) { From c83cd5d960e48e3af296d07dea9293da54eb29f9 Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Wed, 8 Nov 2023 20:36:25 +0000 Subject: [PATCH 15/20] feature: treat unknown data types as custom --- .../DefaultDataTypeOrganiseAction.cs | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs index 5143fbb..cc62506 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs +++ b/src/Umbraco.Community.BackOfficeOrganiser/Organisers/DataTypes/DefaultDataTypeOrganiseAction.cs @@ -1,18 +1,23 @@ +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; -using Umbraco.Cms.Core; +using Serilog.Core; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Services; using Umbraco.Community.BackOfficeOrganiser.Extensions; using Umbraco.Community.BackOfficeOrganiser.Models; +using Umbraco.Extensions; +using Constants = Umbraco.Cms.Core.Constants; namespace Umbraco.Community.BackOfficeOrganiser.Organisers.DataTypes; public class DefaultDataTypeOrganiseAction : IDataTypeOrganiseAction { private readonly BackOfficeOrganiserOptions _options; + private readonly ILogger _logger; - public DefaultDataTypeOrganiseAction(IOptions options) + public DefaultDataTypeOrganiseAction(IOptions options, ILogger logger) { + _logger = logger; _options = options.Value; } @@ -20,27 +25,30 @@ public DefaultDataTypeOrganiseAction(IOptions option public void Move(IDataType dataType, IDataTypeService dataTypeService) { - var parentFolderId = -1; - + string internalFolder; if (dataType.IsInternalUmbracoEditor()) { - var internalFolder = dataTypeService.GetOrCreateFolder(_options.DataTypes.InternalFolderName); - parentFolderId = internalFolder.Id; + internalFolder = _options.DataTypes.InternalFolderName; } else if (dataType.IsUmbracoEditor()) { - var internalFolder = dataTypeService.GetOrCreateFolder(_options.DataTypes.CustomFolderName); - parentFolderId = internalFolder.Id; + internalFolder = _options.DataTypes.CustomFolderName; } else { - var internalFolder = dataTypeService.GetOrCreateFolder(_options.DataTypes.ThirdPartyFolderName); - parentFolderId = internalFolder.Id; + internalFolder = _options.DataTypes.ThirdPartyFolderName; } + var parentFolder = dataTypeService.GetOrCreateFolder(internalFolder); var folder = GetFolderName(dataType); + if (folder.IsNullOrWhiteSpace()) + { + _logger.LogWarning("Failed to determine folder name. {DataType} will be considered Custom", dataType.Name); + dataTypeService.Move(dataType, parentFolder.Id); + return; + } - var dataTypeFolder = dataTypeService.GetOrCreateFolder(folder, parentFolderId); + var dataTypeFolder = dataTypeService.GetOrCreateFolder(folder, parentFolder.Id); dataTypeService.Move(dataType, dataTypeFolder.Id); } From 178bc47eee1afdf10b90dc67e4fc74d1f16c7b75 Mon Sep 17 00:00:00 2001 From: jcdcdev Date: Wed, 8 Nov 2023 20:40:20 +0000 Subject: [PATCH 16/20] +changelog-ignore: test site set up --- ...munity.BackOfficeOrganiser.TestSite.csproj | 1 - .../uSync/v9/Content/articles.config | 20 + .../uSync/v9/Content/authors.config | 16 + .../uSync/v9/Content/blog.config | 130 +++++++ .../uSync/v9/Content/jane-doe.config | 31 ++ .../uSync/v9/Content/latte-art.config | 112 ++++++ .../uSync/v9/Content/welcome.config | 90 +++++ .../uSync/v9/ContentTypes/articulate.config | 361 ++++++++++++++++++ .../v9/ContentTypes/articulatearchive.config | 44 +++ .../v9/ContentTypes/articulateauthor.config | 81 ++++ .../v9/ContentTypes/articulateauthors.config | 26 ++ .../v9/ContentTypes/articulatemarkdown.config | 51 +++ .../v9/ContentTypes/articulatepost.config | 224 +++++++++++ .../v9/ContentTypes/articulaterichtext.config | 51 +++ .../uSync/v9/DataTypes/ApprovedColor.config | 13 + .../v9/DataTypes/ArticulateCategories.config | 14 + .../v9/DataTypes/ArticulateImagePicker.config | 46 +++ .../v9/DataTypes/ArticulateMarkdown.config | 12 + .../v9/DataTypes/ArticulateRichText.config | 35 ++ .../uSync/v9/DataTypes/ArticulateTags.config | 14 + .../v9/DataTypes/ArticulateThemePicker.config | 11 + .../uSync/v9/DataTypes/CheckboxList.config | 12 + .../uSync/v9/DataTypes/ContentPicker.config | 14 + .../uSync/v9/DataTypes/DatePicker.config | 13 + .../v9/DataTypes/DatePickerWithTime.config | 13 + .../uSync/v9/DataTypes/Dropdown.config | 13 + .../v9/DataTypes/DropdownMultiple.config | 13 + .../uSync/v9/DataTypes/ImageCropper.config | 12 + .../v9/DataTypes/ImageMediaPicker.config | 21 + .../uSync/v9/DataTypes/LabelBigint.config | 12 + .../uSync/v9/DataTypes/LabelDatetime.config | 12 + .../uSync/v9/DataTypes/LabelDecimal.config | 12 + .../uSync/v9/DataTypes/LabelInteger.config | 12 + .../uSync/v9/DataTypes/LabelString.config | 12 + .../uSync/v9/DataTypes/LabelTime.config | 12 + .../uSync/v9/DataTypes/ListViewContent.config | 55 +++ .../uSync/v9/DataTypes/ListViewMedia.config | 55 +++ .../uSync/v9/DataTypes/ListViewMembers.config | 61 +++ .../uSync/v9/DataTypes/MediaPicker.config | 21 + .../v9/DataTypes/MediaPickerLegacy.config | 16 + .../uSync/v9/DataTypes/MemberPicker.config | 10 + .../uSync/v9/DataTypes/MultiURLPicker.config | 16 + .../DataTypes/MultipleImageMediaPicker.config | 21 + .../v9/DataTypes/MultipleMediaPicker.config | 21 + .../MultipleMediaPickerLegacy.config | 16 + .../uSync/v9/DataTypes/Numeric.config | 10 + .../uSync/v9/DataTypes/Radiobox.config | 12 + .../uSync/v9/DataTypes/RichtextEditor.config | 16 + .../uSync/v9/DataTypes/Tags.config | 14 + .../uSync/v9/DataTypes/Textarea.config | 13 + .../uSync/v9/DataTypes/Textstring.config | 12 + .../uSync/v9/DataTypes/Truefalse.config | 15 + .../uSync/v9/DataTypes/UploadArticle.config | 25 ++ .../uSync/v9/DataTypes/UploadAudio.config | 29 ++ .../uSync/v9/DataTypes/UploadFile.config | 12 + .../v9/DataTypes/UploadVectorGraphics.config | 17 + .../uSync/v9/DataTypes/UploadVideo.config | 25 ++ .../uSync/v9/Languages/en-us.config | 7 + .../uSync/v9/Media/articulate.config | 13 + .../uSync/v9/Media/author.config | 17 + .../uSync/v9/Media/banner.config | 17 + .../uSync/v9/Media/logo.config | 17 + .../uSync/v9/Media/post1.config | 17 + .../uSync/v9/Media/post2.config | 17 + .../uSync/v9/MediaTypes/file.config | 72 ++++ .../uSync/v9/MediaTypes/folder.config | 26 ++ .../uSync/v9/MediaTypes/image.config | 102 +++++ .../v9/MediaTypes/umbracomediaarticle.config | 72 ++++ .../v9/MediaTypes/umbracomediaaudio.config | 72 ++++ .../umbracomediavectorgraphics.config | 72 ++++ .../v9/MediaTypes/umbracomediavideo.config | 72 ++++ .../uSync/v9/MemberTypes/member.config | 44 +++ .../uSync/v9/usync.config | 2 + 73 files changed, 2696 insertions(+), 1 deletion(-) create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Content/articles.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Content/authors.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Content/blog.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Content/jane-doe.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Content/latte-art.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Content/welcome.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/ContentTypes/articulate.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/ContentTypes/articulatearchive.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/ContentTypes/articulateauthor.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/ContentTypes/articulateauthors.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/ContentTypes/articulatemarkdown.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/ContentTypes/articulatepost.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/ContentTypes/articulaterichtext.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/ApprovedColor.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/ArticulateCategories.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/ArticulateImagePicker.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/ArticulateMarkdown.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/ArticulateRichText.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/ArticulateTags.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/ArticulateThemePicker.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/CheckboxList.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/ContentPicker.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/DatePicker.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/DatePickerWithTime.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/Dropdown.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/DropdownMultiple.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/ImageCropper.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/ImageMediaPicker.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/LabelBigint.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/LabelDatetime.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/LabelDecimal.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/LabelInteger.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/LabelString.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/LabelTime.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/ListViewContent.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/ListViewMedia.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/ListViewMembers.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/MediaPicker.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/MediaPickerLegacy.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/MemberPicker.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/MultiURLPicker.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/MultipleImageMediaPicker.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/MultipleMediaPicker.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/MultipleMediaPickerLegacy.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/Numeric.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/Radiobox.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/RichtextEditor.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/Tags.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/Textarea.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/Textstring.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/Truefalse.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/UploadArticle.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/UploadAudio.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/UploadFile.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/UploadVectorGraphics.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/DataTypes/UploadVideo.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Languages/en-us.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Media/articulate.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Media/author.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Media/banner.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Media/logo.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Media/post1.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Media/post2.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/MediaTypes/file.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/MediaTypes/folder.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/MediaTypes/image.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/MediaTypes/umbracomediaarticle.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/MediaTypes/umbracomediaaudio.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/MediaTypes/umbracomediavectorgraphics.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/MediaTypes/umbracomediavideo.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/MemberTypes/member.config create mode 100644 src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/usync.config diff --git a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Umbraco.Community.BackOfficeOrganiser.TestSite.csproj b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Umbraco.Community.BackOfficeOrganiser.TestSite.csproj index bc6203e..cb4773b 100644 --- a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Umbraco.Community.BackOfficeOrganiser.TestSite.csproj +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/Umbraco.Community.BackOfficeOrganiser.TestSite.csproj @@ -6,7 +6,6 @@ - diff --git a/src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Content/articles.config b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Content/articles.config new file mode 100644 index 0000000..3bffa54 --- /dev/null +++ b/src/Umbraco.Community.BackOfficeOrganiser.TestSite/uSync/v9/Content/articles.config @@ -0,0 +1,20 @@ + + + + Blog + /Blog/Articles + false + ArticulateArchive + 2023-11-08T18:54:54 + + 0 + + +