From 2e82740740241cffca260dd40b2876dd27b6f683 Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Thu, 23 Feb 2023 10:44:50 +0100 Subject: [PATCH 1/6] remove old stuff --- AssemblyInfo.cs | 9 - .../_notimplemented/form-error-view.vue | 213 --- .../_notimplemented/password-hash.vue | 54 - .../setup/Steps/step-application.vue | 31 - .../setup/Steps/step-database.vue | 35 - .../setup/Steps/step-finish.vue | 43 - .../setup/Steps/step-install.vue | 179 --- .../_notimplemented/setup/Steps/step-user.vue | 39 - .../_notimplemented/setup/setup.js | 9 - .../_notimplemented/setup/setup.scss | 6 - .../_notimplemented/setup/setup.vue | 133 -- .../_notimplemented/tableeditor.vue | 175 --- .../app/account/_password-change.vue | 82 -- zero.Backoffice.UI/app/account/account.d.ts | 39 - zero.Backoffice.UI/app/account/api.ts | 13 - zero.Backoffice.UI/app/account/login.vue | 168 --- zero.Backoffice.UI/app/account/store.ts | 13 - zero.Backoffice.UI/app/app.vue | 86 -- zero.Backoffice.UI/app/axios.config.ts | 93 -- zero.Backoffice.UI/app/components/index.ts | 99 -- zero.Backoffice.UI/app/components/register.ts | 13 - .../app/components/ui-add-button.vue | 213 --- .../app/components/ui-button.vue | 166 --- .../app/components/ui-calendar.vue | 62 - .../app/components/ui-check-list.vue | 152 -- .../app/components/ui-colorpicker.vue | 123 -- .../app/components/ui-datagrid.vue | 453 ------ zero.Backoffice.UI/app/components/ui-date.vue | 73 - .../app/components/ui-datepicker.vue | 204 --- .../components/ui-daterangepicker-overlay.vue | 66 - .../app/components/ui-daterangepicker.vue | 157 --- .../app/components/ui-dot-button.vue | 38 - .../app/components/ui-dropdown-button.vue | 289 ---- .../app/components/ui-dropdown-separator.vue | 25 - .../app/components/ui-dropdown.vue | 199 --- .../app/components/ui-error.vue | 93 -- .../ui-form-header-links-overlay.vue | 94 -- .../app/components/ui-form-header-links.vue | 153 --- .../app/components/ui-form-header.vue | 266 ---- zero.Backoffice.UI/app/components/ui-form.vue | 481 ------- .../app/components/ui-header-bar.vue | 228 --- .../app/components/ui-icon-button.vue | 43 - zero.Backoffice.UI/app/components/ui-icon.vue | 68 - .../app/components/ui-iconpicker-overlay.vue | 221 --- .../app/components/ui-iconpicker.vue | 127 -- .../app/components/ui-inline-tabs.vue | 158 --- .../app/components/ui-input-list.vue | 149 -- zero.Backoffice.UI/app/components/ui-link.vue | 76 - .../app/components/ui-loading.vue | 64 - .../app/components/ui-localize.vue | 38 - .../app/components/ui-message.vue | 128 -- .../app/components/ui-pagination.vue | 101 -- .../app/components/ui-password-hash.vue | 90 -- zero.Backoffice.UI/app/components/ui-pick.vue | 818 ----------- .../app/components/ui-progress.vue | 85 -- .../app/components/ui-property.vue | 311 ----- .../app/components/ui-radio-button.vue | 187 --- .../components/ui-rte/extensions/link/link.ts | 253 ---- .../app/components/ui-rte/rte.config.ts | 182 --- .../app/components/ui-rte/rte.extensions.ts | 73 - .../app/components/ui-rte/rte.menubar.ts | 113 -- .../app/components/ui-rte/ui-rte.vue | 434 ------ .../app/components/ui-search.vue | 99 -- .../app/components/ui-select-button.vue | 65 - .../app/components/ui-select.vue | 78 -- .../app/components/ui-state-button.vue | 83 -- zero.Backoffice.UI/app/components/ui-tab.vue | 85 -- .../components/ui-table-filter-overlay.vue | 202 --- .../app/components/ui-table-filter.vue | 254 ---- .../app/components/ui-table.scss | 324 ----- .../app/components/ui-table.vue | 390 ------ zero.Backoffice.UI/app/components/ui-tabs.vue | 240 ---- zero.Backoffice.UI/app/components/ui-tags.vue | 67 - .../app/components/ui-thumbnail.vue | 48 - .../app/components/ui-timepicker.vue | 191 --- .../app/components/ui-toggle.vue | 193 --- .../app/components/ui-tree-item.vue | 379 ----- zero.Backoffice.UI/app/components/ui-tree.vue | 257 ---- .../app/components/ui-trinity.vue | 56 - .../app/core/createZeroPlugin.ts | 19 - zero.Backoffice.UI/app/core/index.ts | 7 - .../app/core/router/formDirtyGuard.ts | 18 - .../app/core/router/routerConfig.ts | 34 - .../app/core/router/titleGuard.ts | 43 - zero.Backoffice.UI/app/core/types/zero.ts | 62 - .../app/core/types/zeroInstallOptions.ts | 5 - .../app/core/types/zeroPlugin.ts | 30 - .../app/core/types/zeroPluginOptions.ts | 39 - zero.Backoffice.UI/app/core/zero.d.ts | 16 - zero.Backoffice.UI/app/core/zeroRuntime.ts | 226 --- zero.Backoffice.UI/app/dashboard.vue | 27 - zero.Backoffice.UI/app/directives/register.ts | 35 - .../app/directives/v-click-outside.ts | 94 -- .../app/directives/v-currency.ts | 13 - zero.Backoffice.UI/app/directives/v-date.ts | 19 - zero.Backoffice.UI/app/directives/v-encode.ts | 11 - .../app/directives/v-filesize.ts | 13 - .../app/directives/v-localize.ts | 40 - .../app/directives/v-max-lines.ts | 21 - .../app/directives/v-multiline.ts | 11 - .../app/directives/v-placeholder.ts | 33 - .../app/directives/v-resizeable.ts | 138 -- .../app/directives/v-sortable.ts | 15 - .../app/editor/blueprint/property.vue | 325 ----- .../app/editor/blueprint/settings.vue | 225 --- zero.Backoffice.UI/app/editor/compile.ts | 365 ----- .../app/editor/editor-blueprint.ts | 170 --- .../app/editor/editor-canvas.ts | 101 -- zero.Backoffice.UI/app/editor/editor-field.ts | 205 --- .../app/editor/editor-types.d.ts | 89 -- zero.Backoffice.UI/app/editor/editor.ts | 77 -- .../app/editor/fields/checklist.vue | 38 - .../app/editor/fields/colorPicker.vue | 15 - .../app/editor/fields/createFields.ts | 28 - .../app/editor/fields/culturePicker.vue | 37 - .../app/editor/fields/datePicker.vue | 36 - .../app/editor/fields/dateRangePicker.vue | 54 - .../fields/editor-field-extensions.d.ts | 261 ---- zero.Backoffice.UI/app/editor/fields/file.vue | 114 -- .../app/editor/fields/iconPicker.vue | 27 - .../app/editor/fields/inputlist.vue | 29 - .../app/editor/fields/modules.vue | 23 - .../app/editor/fields/nested.vue | 195 --- .../app/editor/fields/number.vue | 48 - .../app/editor/fields/output.vue | 25 - .../app/editor/fields/password.vue | 22 - .../app/editor/fields/radio.vue | 18 - zero.Backoffice.UI/app/editor/fields/rte.vue | 26 - .../app/editor/fields/select.vue | 97 -- .../app/editor/fields/state.vue | 14 - zero.Backoffice.UI/app/editor/fields/tags.vue | 27 - zero.Backoffice.UI/app/editor/fields/text.vue | 22 - .../app/editor/fields/textarea.vue | 13 - .../app/editor/fields/timePicker.vue | 24 - .../app/editor/fields/toggle.vue | 17 - zero.Backoffice.UI/app/editor/plugin.ts | 11 - zero.Backoffice.UI/app/editor/register.ts | 11 - .../app/editor/ui-editor-component.vue | 151 -- .../app/editor/ui-editor-header.vue | 222 --- .../app/editor/ui-editor-meta.vue | 130 -- .../app/editor/ui-editor-overlay.vue | 79 -- .../app/editor/ui-editor-page.vue | 162 --- zero.Backoffice.UI/app/editor/ui-editor.scss | 167 --- zero.Backoffice.UI/app/editor/ui-editor.vue | 147 -- zero.Backoffice.UI/app/env.d.ts | 15 - zero.Backoffice.UI/app/index.ts | 2 - zero.Backoffice.UI/app/main.ts | 12 - .../app/modules/applications/api.ts | 16 - .../app/modules/applications/application.vue | 11 - .../app/modules/applications/applications.vue | 40 - .../app/modules/applications/index.ts | 11 - .../partials/application-items.vue | 122 -- .../app/modules/applications/plugin.ts | 17 - .../modules/applications/schemas/editor.ts | 22 - .../app/modules/applications/store.ts | 19 - .../app/modules/countries/api.ts | 16 - .../app/modules/countries/countries.vue | 45 - .../app/modules/countries/country.vue | 11 - .../countries/editor-countrypicker.vue | 17 - .../app/modules/countries/index.ts | 11 - .../app/modules/countries/plugin.ts | 32 - .../app/modules/countries/schemas/editor.ts | 13 - .../app/modules/countries/schemas/list.ts | 19 - .../modules/countries/ui-countrypicker.vue | 75 - zero.Backoffice.UI/app/modules/index.ts | 16 - .../app/modules/integrations/api.ts | 22 - .../app/modules/integrations/index.ts | 7 - .../app/modules/integrations/integration.vue | 118 -- .../integrations/integrations-item.vue | 160 --- .../app/modules/integrations/integrations.vue | 56 - .../app/modules/integrations/plugin.ts | 17 - .../modules/integrations/schemas/editor.ts | 21 - .../app/modules/integrations/schemas/list.ts | 16 - .../app/modules/languages/api.ts | 16 - .../languages/field-languagepicker.vue | 39 - .../app/modules/languages/index.ts | 11 - .../app/modules/languages/language.vue | 11 - .../app/modules/languages/languages.d.ts | 11 - .../app/modules/languages/languages.vue | 22 - .../app/modules/languages/plugin.ts | 20 - .../app/modules/languages/schemas/editor.ts | 15 - .../app/modules/languages/schemas/list.ts | 17 - .../modules/languages/ui-languagepicker.vue | 59 - zero.Backoffice.UI/app/modules/links/api.ts | 8 - .../links/components/ui-linktarget.vue | 33 - zero.Backoffice.UI/app/modules/links/index.ts | 5 - .../links/partials/url-linkpicker-area.vue | 62 - .../links/picker/editor-linkpicker.vue | 34 - .../links/picker/ui-linkpicker-overlay.vue | 206 --- .../modules/links/picker/ui-linkpicker.vue | 191 --- .../app/modules/links/plugin.ts | 59 - zero.Backoffice.UI/app/modules/mails/api.ts | 16 - zero.Backoffice.UI/app/modules/mails/index.ts | 11 - .../app/modules/mails/mailtemplate.vue | 10 - .../app/modules/mails/mailtemplates.vue | 21 - .../picker/editor-mailtemplatepicker.vue | 17 - .../mails/picker/ui-mailtemplatepicker.vue | 75 - .../app/modules/mails/plugin.ts | 31 - .../app/modules/mails/schemas/editor.ts | 23 - .../app/modules/mails/schemas/list.ts | 16 - zero.Backoffice.UI/app/modules/media/api.ts | 86 -- .../media/components/field-imagepicker.vue | 36 - .../media/components/field-mediapicker.vue | 40 - .../media/components/field-videopicker.vue | 20 - .../media/components/media-previews.vue | 175 --- .../media/components/ui-mediapicker.vue | 185 --- .../media/components/ui-videopicker.vue | 170 --- zero.Backoffice.UI/app/modules/media/index.ts | 10 - .../app/modules/media/overlays/editfolder.vue | 74 - .../app/modules/media/overlays/media.vue | 322 ----- .../app/modules/media/overlays/move.vue | 207 --- .../media/overlays/upload-status-item.vue | 225 --- .../modules/media/overlays/upload-status.vue | 130 -- .../modules/media/overlays/videopicker.vue | 197 --- .../app/modules/media/pages/detail/detail.vue | 95 -- .../modules/media/pages/detail/metadata.vue | 58 - .../modules/media/pages/detail/preview.vue | 192 --- .../app/modules/media/pages/overview/drop.vue | 108 -- .../media/pages/overview/overview-actions.ts | 77 -- .../media/pages/overview/overview-item.vue | 174 --- .../pages/overview/overview-selection.vue | 57 - .../modules/media/pages/overview/overview.vue | 273 ---- .../app/modules/media/partials/linkpicker.vue | 219 --- .../app/modules/media/plugin.ts | 63 - .../app/modules/media/schemas/editor.ts | 13 - .../app/modules/media/schemas/list.ts | 19 - zero.Backoffice.UI/app/modules/media/ui.d.ts | 5 - .../app/modules/media/videoparser.ts | 110 -- .../app/modules/pageModules/actions.ts | 103 -- .../app/modules/pageModules/api.ts | 10 - .../components/module-preview-button.vue | 17 - .../modules/pageModules/editor-modules.vue | 17 - .../app/modules/pageModules/index.ts | 7 - .../app/modules/pageModules/overlays/edit.vue | 113 -- .../modules/pageModules/overlays/select.vue | 166 --- .../pageModules/partials/preview-inner.vue | 53 - .../modules/pageModules/partials/preview.vue | 312 ----- .../app/modules/pageModules/plugin.ts | 30 - .../app/modules/pageModules/ui-modules.vue | 252 ---- .../app/modules/pages/actions.ts | 115 -- zero.Backoffice.UI/app/modules/pages/api.ts | 55 - zero.Backoffice.UI/app/modules/pages/index.ts | 7 - .../app/modules/pages/overlays/copy.vue | 188 --- .../app/modules/pages/overlays/create.vue | 146 -- .../app/modules/pages/overlays/move.vue | 176 --- .../app/modules/pages/overlays/sort.vue | 180 --- zero.Backoffice.UI/app/modules/pages/page.vue | 208 --- .../app/modules/pages/pages.vue | 111 -- .../app/modules/pages/partials/linkpicker.vue | 145 -- .../pages/partials/overview-actions.vue | 92 -- .../app/modules/pages/partials/page-info.vue | 130 -- .../app/modules/pages/partials/page-tree.vue | 212 --- .../modules/pages/picker/field-pagepicker.vue | 22 - .../app/modules/pages/picker/overlay.vue | 132 -- .../modules/pages/picker/ui-pagepicker.vue | 212 --- .../app/modules/pages/plugin.ts | 56 - .../modules/pages/schemas/folder-editor.ts | 11 - zero.Backoffice.UI/app/modules/preview/api.ts | 7 - .../app/modules/preview/index.ts | 10 - .../app/modules/preview/plugin.ts | 11 - .../modules/preview/preview-serviceworker.js | 27 - .../app/modules/preview/preview.vue | 111 -- zero.Backoffice.UI/app/modules/search/api.ts | 5 - .../app/modules/search/button.vue | 54 - .../app/modules/search/index.ts | 7 - .../app/modules/search/overlay.vue | 270 ---- .../app/modules/search/plugin.ts | 11 - .../app/modules/search/store.ts | 20 - .../app/modules/settings/demo.ts | 29 - .../app/modules/settings/demo.vue | 37 - .../app/modules/settings/index.ts | 5 - .../app/modules/settings/plugin.ts | 13 - .../app/modules/settings/settings.vue | 197 --- .../app/modules/spaces/_spaces.vue | 245 ---- zero.Backoffice.UI/app/modules/spaces/api.ts | 20 - .../app/modules/spaces/index.ts | 7 - .../app/modules/spaces/plugin.ts | 39 - .../modules/spaces/schemas/list-default.ts | 10 - .../app/modules/spaces/spaces.vue | 269 ---- .../app/modules/spaces/views/custom.vue | 46 - .../app/modules/spaces/views/editor.vue | 127 -- .../app/modules/spaces/views/list.vue | 79 -- .../app/modules/translations/api.ts | 16 - .../app/modules/translations/index.ts | 7 - .../app/modules/translations/plugin.ts | 17 - .../modules/translations/schemas/editor.ts | 20 - .../app/modules/translations/schemas/list.ts | 16 - .../app/modules/translations/translation.vue | 15 - .../modules/translations/translations.d.ts | 11 - .../app/modules/translations/translations.vue | 22 - zero.Backoffice.UI/app/modules/users/api.ts | 26 - zero.Backoffice.UI/app/modules/users/index.ts | 7 - .../app/modules/users/plugin.ts | 17 - .../app/modules/users/schemas/editor.ts | 27 - .../app/modules/users/schemas/list.ts | 25 - zero.Backoffice.UI/app/modules/users/user.vue | 11 - .../app/modules/users/users.vue | 39 - zero.Backoffice.UI/app/notfound.vue | 174 --- zero.Backoffice.UI/app/options.ts | 9 - zero.Backoffice.UI/app/plugins.generated.ts | 3 - .../app/schemas/list/list-action.ts | 33 - .../app/schemas/list/list-column.ts | 309 ----- zero.Backoffice.UI/app/schemas/list/list.ts | 310 ----- zero.Backoffice.UI/app/schemas/schemas.d.ts | 14 - zero.Backoffice.UI/app/services/datalist.ts | 66 - zero.Backoffice.UI/app/services/eventhub.ts | 4 - .../app/services/localization.ts | 65 - .../app/services/notification.ts | 94 -- zero.Backoffice.UI/app/services/overlay.ts | 211 --- zero.Backoffice.UI/app/services/request.ts | 141 -- .../app/services/request.types.ts | 76 - zero.Backoffice.UI/app/startup.ts | 45 - zero.Backoffice.UI/app/stores/index.ts | 2 - zero.Backoffice.UI/app/stores/translations.ts | 28 - .../app/styles/Canvas/_canvas.scss | 100 -- zero.Backoffice.UI/app/styles/Core/_core.scss | 388 ------ .../app/styles/Core/_flags.scss | 1219 ----------------- .../app/styles/Core/_forms.scss | 233 ---- .../app/styles/Core/_icons.scss | 582 -------- .../app/styles/Core/_typography.scss | 74 - .../app/styles/Modules/_box.scss | 110 -- .../app/styles/Modules/_button.scss | 420 ------ .../app/styles/Modules/_flatpickr.scss | 236 ---- .../app/styles/Modules/_headlines.scss | 39 - .../app/styles/Modules/_link.scss | 39 - .../app/styles/Modules/_list.scss | 75 - .../app/styles/Modules/_tag.scss | 20 - .../app/styles/Modules/_tree.scss | 54 - .../app/styles/Settings/_accent.scss | 81 -- .../app/styles/Settings/_dimensions.scss | 15 - .../app/styles/Settings/_font-sizes.scss | 14 - .../app/styles/Settings/_shadows.scss | 11 - .../app/styles/Settings/_theme-dark.scss | 151 -- .../app/styles/Settings/_theme-light.scss | 131 -- zero.Backoffice.UI/app/styles/Setup/_all.scss | 2 - .../app/styles/Setup/_canvas.scss | 64 - zero.Backoffice.UI/app/styles/styles.ts | 24 - zero.Backoffice.UI/app/ui/api.ts | 19 - zero.Backoffice.UI/app/ui/app-navigation.vue | 698 ---------- .../app/ui/app-notifications.vue | 139 -- zero.Backoffice.UI/app/ui/app-overlays.vue | 229 ---- .../app/ui/overlays/confirm.vue | 67 - .../app/ui/overlays/message.vue | 34 - zero.Backoffice.UI/app/ui/overlays/select.vue | 156 --- .../app/ui/overlays/servererror.vue | 85 -- zero.Backoffice.UI/app/ui/store.ts | 91 -- zero.Backoffice.UI/app/ui/ui.d.ts | 69 - zero.Backoffice.UI/app/utils/arrays.ts | 107 -- zero.Backoffice.UI/app/utils/dates.ts | 45 - zero.Backoffice.UI/app/utils/filesize.ts | 30 - zero.Backoffice.UI/app/utils/html.ts | 22 - zero.Backoffice.UI/app/utils/index.ts | 10 - zero.Backoffice.UI/app/utils/numbers.ts | 54 - zero.Backoffice.UI/app/utils/objects.ts | 34 - zero.Backoffice.UI/app/utils/timing.ts | 10 - zero.Backoffice.UI/app/utils/videoparser.ts | 124 -- zero.Backoffice.UI/assets/empty.png | Bin 1756 -> 0 bytes zero.Backoffice.UI/assets/flags.png | Bin 55435 -> 0 bytes .../assets/fonts/Feather/feather.ttf | Bin 61920 -> 0 bytes .../assets/fonts/Feather/feather.woff | Bin 29500 -> 0 bytes .../assets/fonts/Feather/feather.woff2 | Bin 22104 -> 0 bytes .../assets/fonts/Inter/Inter-italic.var.woff2 | Bin 244788 -> 0 bytes .../assets/fonts/Inter/Inter-roman.var.woff2 | Bin 228072 -> 0 bytes .../assets/fonts/Inter/Inter.var.woff2 | Bin 326164 -> 0 bytes .../assets/fonts/Lato/LatoLatin-Black.woff | Bin 70460 -> 0 bytes .../assets/fonts/Lato/LatoLatin-Black.woff2 | Bin 43456 -> 0 bytes .../fonts/Lato/LatoLatin-BlackItalic.woff | Bin 72372 -> 0 bytes .../fonts/Lato/LatoLatin-BlackItalic.woff2 | Bin 44316 -> 0 bytes .../assets/fonts/Lato/LatoLatin-Bold.woff | Bin 72376 -> 0 bytes .../assets/fonts/Lato/LatoLatin-Bold.woff2 | Bin 44380 -> 0 bytes .../fonts/Lato/LatoLatin-BoldItalic.woff | Bin 73700 -> 0 bytes .../fonts/Lato/LatoLatin-BoldItalic.woff2 | Bin 45036 -> 0 bytes .../assets/fonts/Lato/LatoLatin-Italic.woff | Bin 74708 -> 0 bytes .../assets/fonts/Lato/LatoLatin-Italic.woff2 | Bin 45388 -> 0 bytes .../assets/fonts/Lato/LatoLatin-Light.woff | Bin 72604 -> 0 bytes .../assets/fonts/Lato/LatoLatin-Light.woff2 | Bin 43468 -> 0 bytes .../fonts/Lato/LatoLatin-LightItalic.woff | Bin 73444 -> 0 bytes .../fonts/Lato/LatoLatin-LightItalic.woff2 | Bin 44156 -> 0 bytes .../assets/fonts/Lato/LatoLatin-Regular.woff | Bin 72456 -> 0 bytes .../assets/fonts/Lato/LatoLatin-Regular.woff2 | Bin 43760 -> 0 bytes .../assets/fonts/Manrope[wght].woff2 | Bin 50128 -> 0 bytes zero.Backoffice.UI/assets/icons/feather.svg | 492 ------- zero.Backoffice.UI/assets/zero-2-light.png | Bin 5796 -> 0 bytes zero.Backoffice.UI/assets/zero-2.png | Bin 5670 -> 0 bytes zero.Backoffice.UI/assets/zero-dark.png | Bin 4052 -> 0 bytes zero.Backoffice.UI/assets/zero-dark.svg | 22 - zero.Backoffice.UI/assets/zero-icon.png | Bin 3935 -> 0 bytes zero.Backoffice.UI/assets/zero-icon.svg | 12 - zero.Backoffice.UI/assets/zero.png | Bin 4199 -> 0 bytes zero.Backoffice.UI/assets/zero.svg | 22 - zero.Backoffice.UI/babel.config.js | 5 - zero.Backoffice.UI/index.html | 27 - zero.Backoffice.UI/old_app/api/blueprint.js | 5 - zero.Backoffice.UI/old_app/api/index.ts | 18 - zero.Backoffice.UI/old_app/api/links.js | 7 - zero.Backoffice.UI/old_app/api/modules.js | 11 - zero.Backoffice.UI/old_app/api/pages.js | 29 - zero.Backoffice.UI/old_app/api/recycle-bin.js | 13 - zero.Backoffice.UI/old_app/api/search.js | 5 - zero.Backoffice.UI/old_app/api/userRoles.js | 7 - zero.Backoffice.UI/old_app/app.vue | 116 -- zero.Backoffice.UI/old_app/components/all.js | 145 -- .../components/modules/_module-select.vue | 270 ---- .../components/modules/edit-module.vue | 124 -- .../modules/module-preview-inner.vue | 47 - .../components/modules/module-preview.vue | 298 ---- .../components/modules/module-select.vue | 178 --- .../old_app/components/modules/modules.vue | 231 ---- .../predefined/module-preview-button.vue | 17 - .../predefined/module-preview-figure.vue | 126 -- .../predefined/module-preview-headline.vue | 41 - .../predefined/module-preview-tags.vue | 37 - .../predefined/module-preview-text.vue | 70 - .../old_app/components/permissions.vue | 211 --- .../dateRangePicker/daterangepicker.vue | 162 --- .../pickers/dateRangePicker/overlay.vue | 70 - .../pickers/iconPicker/iconpicker.vue | 117 -- .../components/pickers/iconPicker/overlay.vue | 219 --- .../pickers/linkPicker/areas/media.vue | 22 - .../pickers/linkPicker/areas/pages.vue | 140 -- .../pickers/linkPicker/linkpicker.vue | 203 --- .../components/pickers/linkPicker/overlay.vue | 183 --- .../pickers/mailPicker/mailpicker.vue | 62 - .../pickers/mediaPicker/mediapicker.vue | 428 ------ .../pickers/mediaPicker/overlay.vue | 297 ---- .../components/pickers/pagePicker/overlay.vue | 116 -- .../pickers/pagePicker/pagepicker.vue | 197 --- .../pickers/spacePicker/spacepicker.vue | 66 - .../pickers/userPicker/userpicker.vue | 78 -- .../pickers/videoPicker/overlay.vue | 185 --- .../pickers/videoPicker/videopicker.vue | 164 --- .../old_app/components/revisions.vue | 128 -- .../old_app/config/links.config.js | 4 - .../old_app/config/media.config.js | 8 - zero.Backoffice.UI/old_app/core/plugin.ts | 92 -- .../old_app/core/plugin.zero.js | 33 - zero.Backoffice.UI/old_app/core/plugins.js | 1 - zero.Backoffice.UI/old_app/core/routes.js | 27 - zero.Backoffice.UI/old_app/core/zero.ts | 235 ---- .../old_app/pages/dashboard/dashboard.vue | 33 - .../old_app/pages/dashboard/routes.js | 18 - .../old_app/pages/media/detail.vue | 73 - .../old_app/pages/media/item.vue | 157 --- .../old_app/pages/media/overlays/create.vue | 147 -- .../old_app/pages/media/overlays/folder.vue | 76 - .../old_app/pages/media/overlays/move.vue | 179 --- .../pages/media/overlays/upload-status.vue | 204 --- .../old_app/pages/media/overview.vue | 440 ------ .../old_app/pages/media/routes.js | 28 - .../old_app/pages/media/upload.vue | 210 --- .../old_app/pages/pages/overlays/copy.vue | 167 --- .../old_app/pages/pages/overlays/create.vue | 159 --- .../old_app/pages/pages/overlays/move.vue | 145 -- .../old_app/pages/pages/overlays/sort.vue | 171 --- .../old_app/pages/pages/page-info.vue | 127 -- .../old_app/pages/pages/page.vue | 322 ----- .../old_app/pages/pages/pages.vue | 384 ------ .../pages/recyclebin/recyclebin-actions.vue | 174 --- .../pages/pages/recyclebin/recyclebin.vue | 108 -- .../old_app/pages/pages/routes.js | 41 - zero.Backoffice.UI/old_app/pages/preview.vue | 109 -- .../pages/settings/application-features.vue | 58 - .../old_app/pages/settings/application.vue | 53 - .../pages/settings/applications-items.vue | 129 -- .../old_app/pages/settings/applications.vue | 40 - .../old_app/pages/settings/integration.vue | 108 -- .../pages/settings/integrations-item.vue | 149 -- .../old_app/pages/settings/integrations.vue | 74 - .../old_app/pages/settings/role.vue | 63 - .../old_app/pages/settings/routes.js | 122 -- .../old_app/pages/settings/user.vue | 121 -- .../old_app/pages/settings/users.vue | 117 -- .../old_app/pages/spaces/routes.js | 39 - .../old_app/pages/spaces/spaces.vue | 245 ---- .../old_app/pages/spaces/views/custom.vue | 46 - .../old_app/pages/spaces/views/editor.vue | 101 -- .../old_app/pages/spaces/views/list.vue | 77 -- .../old_app/renderers/editors/application.js | 20 - .../renderers/editors/customers-filter.js | 43 - .../old_app/renderers/editors/page-folder.js | 9 - .../old_app/renderers/editors/password.js | 10 - .../old_app/renderers/editors/userRole.js | 23 - .../old_app/renderers/lists/recyclebin.js | 49 - .../old_app/renderers/lists/spaces.default.js | 10 - zero.Backoffice.UI/old_app/search.vue | 162 --- zero.Backoffice.UI/package.json | 38 - .../public/assets/zero-2-light.png | Bin 5796 -> 0 bytes zero.Backoffice.UI/public/assets/zero-2.png | Bin 5670 -> 0 bytes .../public/assets/zero-dark.png | Bin 4052 -> 0 bytes .../public/assets/zero-dark.svg | 22 - .../public/assets/zero-icon.png | Bin 3935 -> 0 bytes .../public/assets/zero-icon.svg | 12 - zero.Backoffice.UI/public/assets/zero.png | Bin 4199 -> 0 bytes zero.Backoffice.UI/public/assets/zero.svg | 22 - .../public/resources/icons/feather.svg | 492 ------- .../public/resources/icons/gg.svg | 1 - zero.Backoffice.UI/public/test.txt | 2 - zero.Backoffice.UI/tsconfig.json | 16 - zero.Backoffice.UI/vite.config.js | 132 -- zero.Backoffice.UI/wipe.js | 25 - zero.Raven.IdentityDemo/ScaffoldingReadMe.txt | 3 - zero.sln | 29 +- 502 files changed, 3 insertions(+), 46804 deletions(-) delete mode 100644 AssemblyInfo.cs delete mode 100644 zero.Backoffice.UI/_notimplemented/form-error-view.vue delete mode 100644 zero.Backoffice.UI/_notimplemented/password-hash.vue delete mode 100644 zero.Backoffice.UI/_notimplemented/setup/Steps/step-application.vue delete mode 100644 zero.Backoffice.UI/_notimplemented/setup/Steps/step-database.vue delete mode 100644 zero.Backoffice.UI/_notimplemented/setup/Steps/step-finish.vue delete mode 100644 zero.Backoffice.UI/_notimplemented/setup/Steps/step-install.vue delete mode 100644 zero.Backoffice.UI/_notimplemented/setup/Steps/step-user.vue delete mode 100644 zero.Backoffice.UI/_notimplemented/setup/setup.js delete mode 100644 zero.Backoffice.UI/_notimplemented/setup/setup.scss delete mode 100644 zero.Backoffice.UI/_notimplemented/setup/setup.vue delete mode 100644 zero.Backoffice.UI/_notimplemented/tableeditor.vue delete mode 100644 zero.Backoffice.UI/app/account/_password-change.vue delete mode 100644 zero.Backoffice.UI/app/account/account.d.ts delete mode 100644 zero.Backoffice.UI/app/account/api.ts delete mode 100644 zero.Backoffice.UI/app/account/login.vue delete mode 100644 zero.Backoffice.UI/app/account/store.ts delete mode 100644 zero.Backoffice.UI/app/app.vue delete mode 100644 zero.Backoffice.UI/app/axios.config.ts delete mode 100644 zero.Backoffice.UI/app/components/index.ts delete mode 100644 zero.Backoffice.UI/app/components/register.ts delete mode 100644 zero.Backoffice.UI/app/components/ui-add-button.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-button.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-calendar.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-check-list.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-colorpicker.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-datagrid.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-date.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-datepicker.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-daterangepicker-overlay.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-daterangepicker.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-dot-button.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-dropdown-button.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-dropdown-separator.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-dropdown.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-error.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-form-header-links-overlay.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-form-header-links.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-form-header.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-form.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-header-bar.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-icon-button.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-icon.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-iconpicker-overlay.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-iconpicker.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-inline-tabs.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-input-list.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-link.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-loading.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-localize.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-message.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-pagination.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-password-hash.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-pick.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-progress.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-property.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-radio-button.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-rte/extensions/link/link.ts delete mode 100644 zero.Backoffice.UI/app/components/ui-rte/rte.config.ts delete mode 100644 zero.Backoffice.UI/app/components/ui-rte/rte.extensions.ts delete mode 100644 zero.Backoffice.UI/app/components/ui-rte/rte.menubar.ts delete mode 100644 zero.Backoffice.UI/app/components/ui-rte/ui-rte.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-search.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-select-button.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-select.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-state-button.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-tab.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-table-filter-overlay.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-table-filter.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-table.scss delete mode 100644 zero.Backoffice.UI/app/components/ui-table.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-tabs.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-tags.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-thumbnail.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-timepicker.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-toggle.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-tree-item.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-tree.vue delete mode 100644 zero.Backoffice.UI/app/components/ui-trinity.vue delete mode 100644 zero.Backoffice.UI/app/core/createZeroPlugin.ts delete mode 100644 zero.Backoffice.UI/app/core/index.ts delete mode 100644 zero.Backoffice.UI/app/core/router/formDirtyGuard.ts delete mode 100644 zero.Backoffice.UI/app/core/router/routerConfig.ts delete mode 100644 zero.Backoffice.UI/app/core/router/titleGuard.ts delete mode 100644 zero.Backoffice.UI/app/core/types/zero.ts delete mode 100644 zero.Backoffice.UI/app/core/types/zeroInstallOptions.ts delete mode 100644 zero.Backoffice.UI/app/core/types/zeroPlugin.ts delete mode 100644 zero.Backoffice.UI/app/core/types/zeroPluginOptions.ts delete mode 100644 zero.Backoffice.UI/app/core/zero.d.ts delete mode 100644 zero.Backoffice.UI/app/core/zeroRuntime.ts delete mode 100644 zero.Backoffice.UI/app/dashboard.vue delete mode 100644 zero.Backoffice.UI/app/directives/register.ts delete mode 100644 zero.Backoffice.UI/app/directives/v-click-outside.ts delete mode 100644 zero.Backoffice.UI/app/directives/v-currency.ts delete mode 100644 zero.Backoffice.UI/app/directives/v-date.ts delete mode 100644 zero.Backoffice.UI/app/directives/v-encode.ts delete mode 100644 zero.Backoffice.UI/app/directives/v-filesize.ts delete mode 100644 zero.Backoffice.UI/app/directives/v-localize.ts delete mode 100644 zero.Backoffice.UI/app/directives/v-max-lines.ts delete mode 100644 zero.Backoffice.UI/app/directives/v-multiline.ts delete mode 100644 zero.Backoffice.UI/app/directives/v-placeholder.ts delete mode 100644 zero.Backoffice.UI/app/directives/v-resizeable.ts delete mode 100644 zero.Backoffice.UI/app/directives/v-sortable.ts delete mode 100644 zero.Backoffice.UI/app/editor/blueprint/property.vue delete mode 100644 zero.Backoffice.UI/app/editor/blueprint/settings.vue delete mode 100644 zero.Backoffice.UI/app/editor/compile.ts delete mode 100644 zero.Backoffice.UI/app/editor/editor-blueprint.ts delete mode 100644 zero.Backoffice.UI/app/editor/editor-canvas.ts delete mode 100644 zero.Backoffice.UI/app/editor/editor-field.ts delete mode 100644 zero.Backoffice.UI/app/editor/editor-types.d.ts delete mode 100644 zero.Backoffice.UI/app/editor/editor.ts delete mode 100644 zero.Backoffice.UI/app/editor/fields/checklist.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/colorPicker.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/createFields.ts delete mode 100644 zero.Backoffice.UI/app/editor/fields/culturePicker.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/datePicker.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/dateRangePicker.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/editor-field-extensions.d.ts delete mode 100644 zero.Backoffice.UI/app/editor/fields/file.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/iconPicker.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/inputlist.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/modules.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/nested.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/number.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/output.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/password.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/radio.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/rte.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/select.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/state.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/tags.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/text.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/textarea.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/timePicker.vue delete mode 100644 zero.Backoffice.UI/app/editor/fields/toggle.vue delete mode 100644 zero.Backoffice.UI/app/editor/plugin.ts delete mode 100644 zero.Backoffice.UI/app/editor/register.ts delete mode 100644 zero.Backoffice.UI/app/editor/ui-editor-component.vue delete mode 100644 zero.Backoffice.UI/app/editor/ui-editor-header.vue delete mode 100644 zero.Backoffice.UI/app/editor/ui-editor-meta.vue delete mode 100644 zero.Backoffice.UI/app/editor/ui-editor-overlay.vue delete mode 100644 zero.Backoffice.UI/app/editor/ui-editor-page.vue delete mode 100644 zero.Backoffice.UI/app/editor/ui-editor.scss delete mode 100644 zero.Backoffice.UI/app/editor/ui-editor.vue delete mode 100644 zero.Backoffice.UI/app/env.d.ts delete mode 100644 zero.Backoffice.UI/app/index.ts delete mode 100644 zero.Backoffice.UI/app/main.ts delete mode 100644 zero.Backoffice.UI/app/modules/applications/api.ts delete mode 100644 zero.Backoffice.UI/app/modules/applications/application.vue delete mode 100644 zero.Backoffice.UI/app/modules/applications/applications.vue delete mode 100644 zero.Backoffice.UI/app/modules/applications/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/applications/partials/application-items.vue delete mode 100644 zero.Backoffice.UI/app/modules/applications/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/applications/schemas/editor.ts delete mode 100644 zero.Backoffice.UI/app/modules/applications/store.ts delete mode 100644 zero.Backoffice.UI/app/modules/countries/api.ts delete mode 100644 zero.Backoffice.UI/app/modules/countries/countries.vue delete mode 100644 zero.Backoffice.UI/app/modules/countries/country.vue delete mode 100644 zero.Backoffice.UI/app/modules/countries/editor-countrypicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/countries/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/countries/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/countries/schemas/editor.ts delete mode 100644 zero.Backoffice.UI/app/modules/countries/schemas/list.ts delete mode 100644 zero.Backoffice.UI/app/modules/countries/ui-countrypicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/integrations/api.ts delete mode 100644 zero.Backoffice.UI/app/modules/integrations/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/integrations/integration.vue delete mode 100644 zero.Backoffice.UI/app/modules/integrations/integrations-item.vue delete mode 100644 zero.Backoffice.UI/app/modules/integrations/integrations.vue delete mode 100644 zero.Backoffice.UI/app/modules/integrations/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/integrations/schemas/editor.ts delete mode 100644 zero.Backoffice.UI/app/modules/integrations/schemas/list.ts delete mode 100644 zero.Backoffice.UI/app/modules/languages/api.ts delete mode 100644 zero.Backoffice.UI/app/modules/languages/field-languagepicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/languages/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/languages/language.vue delete mode 100644 zero.Backoffice.UI/app/modules/languages/languages.d.ts delete mode 100644 zero.Backoffice.UI/app/modules/languages/languages.vue delete mode 100644 zero.Backoffice.UI/app/modules/languages/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/languages/schemas/editor.ts delete mode 100644 zero.Backoffice.UI/app/modules/languages/schemas/list.ts delete mode 100644 zero.Backoffice.UI/app/modules/languages/ui-languagepicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/links/api.ts delete mode 100644 zero.Backoffice.UI/app/modules/links/components/ui-linktarget.vue delete mode 100644 zero.Backoffice.UI/app/modules/links/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/links/partials/url-linkpicker-area.vue delete mode 100644 zero.Backoffice.UI/app/modules/links/picker/editor-linkpicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/links/picker/ui-linkpicker-overlay.vue delete mode 100644 zero.Backoffice.UI/app/modules/links/picker/ui-linkpicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/links/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/mails/api.ts delete mode 100644 zero.Backoffice.UI/app/modules/mails/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/mails/mailtemplate.vue delete mode 100644 zero.Backoffice.UI/app/modules/mails/mailtemplates.vue delete mode 100644 zero.Backoffice.UI/app/modules/mails/picker/editor-mailtemplatepicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/mails/picker/ui-mailtemplatepicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/mails/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/mails/schemas/editor.ts delete mode 100644 zero.Backoffice.UI/app/modules/mails/schemas/list.ts delete mode 100644 zero.Backoffice.UI/app/modules/media/api.ts delete mode 100644 zero.Backoffice.UI/app/modules/media/components/field-imagepicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/components/field-mediapicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/components/field-videopicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/components/media-previews.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/components/ui-mediapicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/components/ui-videopicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/media/overlays/editfolder.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/overlays/media.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/overlays/move.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/overlays/upload-status-item.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/overlays/upload-status.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/overlays/videopicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/pages/detail/detail.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/pages/detail/metadata.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/pages/detail/preview.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/pages/overview/drop.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/pages/overview/overview-actions.ts delete mode 100644 zero.Backoffice.UI/app/modules/media/pages/overview/overview-item.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/pages/overview/overview-selection.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/pages/overview/overview.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/partials/linkpicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/media/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/media/schemas/editor.ts delete mode 100644 zero.Backoffice.UI/app/modules/media/schemas/list.ts delete mode 100644 zero.Backoffice.UI/app/modules/media/ui.d.ts delete mode 100644 zero.Backoffice.UI/app/modules/media/videoparser.ts delete mode 100644 zero.Backoffice.UI/app/modules/pageModules/actions.ts delete mode 100644 zero.Backoffice.UI/app/modules/pageModules/api.ts delete mode 100644 zero.Backoffice.UI/app/modules/pageModules/components/module-preview-button.vue delete mode 100644 zero.Backoffice.UI/app/modules/pageModules/editor-modules.vue delete mode 100644 zero.Backoffice.UI/app/modules/pageModules/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/pageModules/overlays/edit.vue delete mode 100644 zero.Backoffice.UI/app/modules/pageModules/overlays/select.vue delete mode 100644 zero.Backoffice.UI/app/modules/pageModules/partials/preview-inner.vue delete mode 100644 zero.Backoffice.UI/app/modules/pageModules/partials/preview.vue delete mode 100644 zero.Backoffice.UI/app/modules/pageModules/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/pageModules/ui-modules.vue delete mode 100644 zero.Backoffice.UI/app/modules/pages/actions.ts delete mode 100644 zero.Backoffice.UI/app/modules/pages/api.ts delete mode 100644 zero.Backoffice.UI/app/modules/pages/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/pages/overlays/copy.vue delete mode 100644 zero.Backoffice.UI/app/modules/pages/overlays/create.vue delete mode 100644 zero.Backoffice.UI/app/modules/pages/overlays/move.vue delete mode 100644 zero.Backoffice.UI/app/modules/pages/overlays/sort.vue delete mode 100644 zero.Backoffice.UI/app/modules/pages/page.vue delete mode 100644 zero.Backoffice.UI/app/modules/pages/pages.vue delete mode 100644 zero.Backoffice.UI/app/modules/pages/partials/linkpicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/pages/partials/overview-actions.vue delete mode 100644 zero.Backoffice.UI/app/modules/pages/partials/page-info.vue delete mode 100644 zero.Backoffice.UI/app/modules/pages/partials/page-tree.vue delete mode 100644 zero.Backoffice.UI/app/modules/pages/picker/field-pagepicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/pages/picker/overlay.vue delete mode 100644 zero.Backoffice.UI/app/modules/pages/picker/ui-pagepicker.vue delete mode 100644 zero.Backoffice.UI/app/modules/pages/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/pages/schemas/folder-editor.ts delete mode 100644 zero.Backoffice.UI/app/modules/preview/api.ts delete mode 100644 zero.Backoffice.UI/app/modules/preview/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/preview/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/preview/preview-serviceworker.js delete mode 100644 zero.Backoffice.UI/app/modules/preview/preview.vue delete mode 100644 zero.Backoffice.UI/app/modules/search/api.ts delete mode 100644 zero.Backoffice.UI/app/modules/search/button.vue delete mode 100644 zero.Backoffice.UI/app/modules/search/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/search/overlay.vue delete mode 100644 zero.Backoffice.UI/app/modules/search/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/search/store.ts delete mode 100644 zero.Backoffice.UI/app/modules/settings/demo.ts delete mode 100644 zero.Backoffice.UI/app/modules/settings/demo.vue delete mode 100644 zero.Backoffice.UI/app/modules/settings/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/settings/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/settings/settings.vue delete mode 100644 zero.Backoffice.UI/app/modules/spaces/_spaces.vue delete mode 100644 zero.Backoffice.UI/app/modules/spaces/api.ts delete mode 100644 zero.Backoffice.UI/app/modules/spaces/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/spaces/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/spaces/schemas/list-default.ts delete mode 100644 zero.Backoffice.UI/app/modules/spaces/spaces.vue delete mode 100644 zero.Backoffice.UI/app/modules/spaces/views/custom.vue delete mode 100644 zero.Backoffice.UI/app/modules/spaces/views/editor.vue delete mode 100644 zero.Backoffice.UI/app/modules/spaces/views/list.vue delete mode 100644 zero.Backoffice.UI/app/modules/translations/api.ts delete mode 100644 zero.Backoffice.UI/app/modules/translations/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/translations/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/translations/schemas/editor.ts delete mode 100644 zero.Backoffice.UI/app/modules/translations/schemas/list.ts delete mode 100644 zero.Backoffice.UI/app/modules/translations/translation.vue delete mode 100644 zero.Backoffice.UI/app/modules/translations/translations.d.ts delete mode 100644 zero.Backoffice.UI/app/modules/translations/translations.vue delete mode 100644 zero.Backoffice.UI/app/modules/users/api.ts delete mode 100644 zero.Backoffice.UI/app/modules/users/index.ts delete mode 100644 zero.Backoffice.UI/app/modules/users/plugin.ts delete mode 100644 zero.Backoffice.UI/app/modules/users/schemas/editor.ts delete mode 100644 zero.Backoffice.UI/app/modules/users/schemas/list.ts delete mode 100644 zero.Backoffice.UI/app/modules/users/user.vue delete mode 100644 zero.Backoffice.UI/app/modules/users/users.vue delete mode 100644 zero.Backoffice.UI/app/notfound.vue delete mode 100644 zero.Backoffice.UI/app/options.ts delete mode 100644 zero.Backoffice.UI/app/plugins.generated.ts delete mode 100644 zero.Backoffice.UI/app/schemas/list/list-action.ts delete mode 100644 zero.Backoffice.UI/app/schemas/list/list-column.ts delete mode 100644 zero.Backoffice.UI/app/schemas/list/list.ts delete mode 100644 zero.Backoffice.UI/app/schemas/schemas.d.ts delete mode 100644 zero.Backoffice.UI/app/services/datalist.ts delete mode 100644 zero.Backoffice.UI/app/services/eventhub.ts delete mode 100644 zero.Backoffice.UI/app/services/localization.ts delete mode 100644 zero.Backoffice.UI/app/services/notification.ts delete mode 100644 zero.Backoffice.UI/app/services/overlay.ts delete mode 100644 zero.Backoffice.UI/app/services/request.ts delete mode 100644 zero.Backoffice.UI/app/services/request.types.ts delete mode 100644 zero.Backoffice.UI/app/startup.ts delete mode 100644 zero.Backoffice.UI/app/stores/index.ts delete mode 100644 zero.Backoffice.UI/app/stores/translations.ts delete mode 100644 zero.Backoffice.UI/app/styles/Canvas/_canvas.scss delete mode 100644 zero.Backoffice.UI/app/styles/Core/_core.scss delete mode 100644 zero.Backoffice.UI/app/styles/Core/_flags.scss delete mode 100644 zero.Backoffice.UI/app/styles/Core/_forms.scss delete mode 100644 zero.Backoffice.UI/app/styles/Core/_icons.scss delete mode 100644 zero.Backoffice.UI/app/styles/Core/_typography.scss delete mode 100644 zero.Backoffice.UI/app/styles/Modules/_box.scss delete mode 100644 zero.Backoffice.UI/app/styles/Modules/_button.scss delete mode 100644 zero.Backoffice.UI/app/styles/Modules/_flatpickr.scss delete mode 100644 zero.Backoffice.UI/app/styles/Modules/_headlines.scss delete mode 100644 zero.Backoffice.UI/app/styles/Modules/_link.scss delete mode 100644 zero.Backoffice.UI/app/styles/Modules/_list.scss delete mode 100644 zero.Backoffice.UI/app/styles/Modules/_tag.scss delete mode 100644 zero.Backoffice.UI/app/styles/Modules/_tree.scss delete mode 100644 zero.Backoffice.UI/app/styles/Settings/_accent.scss delete mode 100644 zero.Backoffice.UI/app/styles/Settings/_dimensions.scss delete mode 100644 zero.Backoffice.UI/app/styles/Settings/_font-sizes.scss delete mode 100644 zero.Backoffice.UI/app/styles/Settings/_shadows.scss delete mode 100644 zero.Backoffice.UI/app/styles/Settings/_theme-dark.scss delete mode 100644 zero.Backoffice.UI/app/styles/Settings/_theme-light.scss delete mode 100644 zero.Backoffice.UI/app/styles/Setup/_all.scss delete mode 100644 zero.Backoffice.UI/app/styles/Setup/_canvas.scss delete mode 100644 zero.Backoffice.UI/app/styles/styles.ts delete mode 100644 zero.Backoffice.UI/app/ui/api.ts delete mode 100644 zero.Backoffice.UI/app/ui/app-navigation.vue delete mode 100644 zero.Backoffice.UI/app/ui/app-notifications.vue delete mode 100644 zero.Backoffice.UI/app/ui/app-overlays.vue delete mode 100644 zero.Backoffice.UI/app/ui/overlays/confirm.vue delete mode 100644 zero.Backoffice.UI/app/ui/overlays/message.vue delete mode 100644 zero.Backoffice.UI/app/ui/overlays/select.vue delete mode 100644 zero.Backoffice.UI/app/ui/overlays/servererror.vue delete mode 100644 zero.Backoffice.UI/app/ui/store.ts delete mode 100644 zero.Backoffice.UI/app/ui/ui.d.ts delete mode 100644 zero.Backoffice.UI/app/utils/arrays.ts delete mode 100644 zero.Backoffice.UI/app/utils/dates.ts delete mode 100644 zero.Backoffice.UI/app/utils/filesize.ts delete mode 100644 zero.Backoffice.UI/app/utils/html.ts delete mode 100644 zero.Backoffice.UI/app/utils/index.ts delete mode 100644 zero.Backoffice.UI/app/utils/numbers.ts delete mode 100644 zero.Backoffice.UI/app/utils/objects.ts delete mode 100644 zero.Backoffice.UI/app/utils/timing.ts delete mode 100644 zero.Backoffice.UI/app/utils/videoparser.ts delete mode 100644 zero.Backoffice.UI/assets/empty.png delete mode 100644 zero.Backoffice.UI/assets/flags.png delete mode 100644 zero.Backoffice.UI/assets/fonts/Feather/feather.ttf delete mode 100644 zero.Backoffice.UI/assets/fonts/Feather/feather.woff delete mode 100644 zero.Backoffice.UI/assets/fonts/Feather/feather.woff2 delete mode 100644 zero.Backoffice.UI/assets/fonts/Inter/Inter-italic.var.woff2 delete mode 100644 zero.Backoffice.UI/assets/fonts/Inter/Inter-roman.var.woff2 delete mode 100644 zero.Backoffice.UI/assets/fonts/Inter/Inter.var.woff2 delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-Black.woff delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-Black.woff2 delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-BlackItalic.woff delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-BlackItalic.woff2 delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-Bold.woff delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-Bold.woff2 delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-BoldItalic.woff delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-BoldItalic.woff2 delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-Italic.woff delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-Italic.woff2 delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-Light.woff delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-Light.woff2 delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-LightItalic.woff delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-LightItalic.woff2 delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-Regular.woff delete mode 100644 zero.Backoffice.UI/assets/fonts/Lato/LatoLatin-Regular.woff2 delete mode 100644 zero.Backoffice.UI/assets/fonts/Manrope[wght].woff2 delete mode 100644 zero.Backoffice.UI/assets/icons/feather.svg delete mode 100644 zero.Backoffice.UI/assets/zero-2-light.png delete mode 100644 zero.Backoffice.UI/assets/zero-2.png delete mode 100644 zero.Backoffice.UI/assets/zero-dark.png delete mode 100644 zero.Backoffice.UI/assets/zero-dark.svg delete mode 100644 zero.Backoffice.UI/assets/zero-icon.png delete mode 100644 zero.Backoffice.UI/assets/zero-icon.svg delete mode 100644 zero.Backoffice.UI/assets/zero.png delete mode 100644 zero.Backoffice.UI/assets/zero.svg delete mode 100644 zero.Backoffice.UI/babel.config.js delete mode 100644 zero.Backoffice.UI/index.html delete mode 100644 zero.Backoffice.UI/old_app/api/blueprint.js delete mode 100644 zero.Backoffice.UI/old_app/api/index.ts delete mode 100644 zero.Backoffice.UI/old_app/api/links.js delete mode 100644 zero.Backoffice.UI/old_app/api/modules.js delete mode 100644 zero.Backoffice.UI/old_app/api/pages.js delete mode 100644 zero.Backoffice.UI/old_app/api/recycle-bin.js delete mode 100644 zero.Backoffice.UI/old_app/api/search.js delete mode 100644 zero.Backoffice.UI/old_app/api/userRoles.js delete mode 100644 zero.Backoffice.UI/old_app/app.vue delete mode 100644 zero.Backoffice.UI/old_app/components/all.js delete mode 100644 zero.Backoffice.UI/old_app/components/modules/_module-select.vue delete mode 100644 zero.Backoffice.UI/old_app/components/modules/edit-module.vue delete mode 100644 zero.Backoffice.UI/old_app/components/modules/module-preview-inner.vue delete mode 100644 zero.Backoffice.UI/old_app/components/modules/module-preview.vue delete mode 100644 zero.Backoffice.UI/old_app/components/modules/module-select.vue delete mode 100644 zero.Backoffice.UI/old_app/components/modules/modules.vue delete mode 100644 zero.Backoffice.UI/old_app/components/modules/predefined/module-preview-button.vue delete mode 100644 zero.Backoffice.UI/old_app/components/modules/predefined/module-preview-figure.vue delete mode 100644 zero.Backoffice.UI/old_app/components/modules/predefined/module-preview-headline.vue delete mode 100644 zero.Backoffice.UI/old_app/components/modules/predefined/module-preview-tags.vue delete mode 100644 zero.Backoffice.UI/old_app/components/modules/predefined/module-preview-text.vue delete mode 100644 zero.Backoffice.UI/old_app/components/permissions.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/dateRangePicker/daterangepicker.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/dateRangePicker/overlay.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/iconPicker/iconpicker.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/iconPicker/overlay.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/linkPicker/areas/media.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/linkPicker/areas/pages.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/linkPicker/linkpicker.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/linkPicker/overlay.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/mailPicker/mailpicker.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/mediaPicker/mediapicker.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/mediaPicker/overlay.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/pagePicker/overlay.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/pagePicker/pagepicker.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/spacePicker/spacepicker.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/userPicker/userpicker.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/videoPicker/overlay.vue delete mode 100644 zero.Backoffice.UI/old_app/components/pickers/videoPicker/videopicker.vue delete mode 100644 zero.Backoffice.UI/old_app/components/revisions.vue delete mode 100644 zero.Backoffice.UI/old_app/config/links.config.js delete mode 100644 zero.Backoffice.UI/old_app/config/media.config.js delete mode 100644 zero.Backoffice.UI/old_app/core/plugin.ts delete mode 100644 zero.Backoffice.UI/old_app/core/plugin.zero.js delete mode 100644 zero.Backoffice.UI/old_app/core/plugins.js delete mode 100644 zero.Backoffice.UI/old_app/core/routes.js delete mode 100644 zero.Backoffice.UI/old_app/core/zero.ts delete mode 100644 zero.Backoffice.UI/old_app/pages/dashboard/dashboard.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/dashboard/routes.js delete mode 100644 zero.Backoffice.UI/old_app/pages/media/detail.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/media/item.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/media/overlays/create.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/media/overlays/folder.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/media/overlays/move.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/media/overlays/upload-status.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/media/overview.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/media/routes.js delete mode 100644 zero.Backoffice.UI/old_app/pages/media/upload.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/pages/overlays/copy.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/pages/overlays/create.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/pages/overlays/move.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/pages/overlays/sort.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/pages/page-info.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/pages/page.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/pages/pages.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/pages/recyclebin/recyclebin-actions.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/pages/recyclebin/recyclebin.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/pages/routes.js delete mode 100644 zero.Backoffice.UI/old_app/pages/preview.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/settings/application-features.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/settings/application.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/settings/applications-items.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/settings/applications.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/settings/integration.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/settings/integrations-item.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/settings/integrations.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/settings/role.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/settings/routes.js delete mode 100644 zero.Backoffice.UI/old_app/pages/settings/user.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/settings/users.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/spaces/routes.js delete mode 100644 zero.Backoffice.UI/old_app/pages/spaces/spaces.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/spaces/views/custom.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/spaces/views/editor.vue delete mode 100644 zero.Backoffice.UI/old_app/pages/spaces/views/list.vue delete mode 100644 zero.Backoffice.UI/old_app/renderers/editors/application.js delete mode 100644 zero.Backoffice.UI/old_app/renderers/editors/customers-filter.js delete mode 100644 zero.Backoffice.UI/old_app/renderers/editors/page-folder.js delete mode 100644 zero.Backoffice.UI/old_app/renderers/editors/password.js delete mode 100644 zero.Backoffice.UI/old_app/renderers/editors/userRole.js delete mode 100644 zero.Backoffice.UI/old_app/renderers/lists/recyclebin.js delete mode 100644 zero.Backoffice.UI/old_app/renderers/lists/spaces.default.js delete mode 100644 zero.Backoffice.UI/old_app/search.vue delete mode 100644 zero.Backoffice.UI/package.json delete mode 100644 zero.Backoffice.UI/public/assets/zero-2-light.png delete mode 100644 zero.Backoffice.UI/public/assets/zero-2.png delete mode 100644 zero.Backoffice.UI/public/assets/zero-dark.png delete mode 100644 zero.Backoffice.UI/public/assets/zero-dark.svg delete mode 100644 zero.Backoffice.UI/public/assets/zero-icon.png delete mode 100644 zero.Backoffice.UI/public/assets/zero-icon.svg delete mode 100644 zero.Backoffice.UI/public/assets/zero.png delete mode 100644 zero.Backoffice.UI/public/assets/zero.svg delete mode 100644 zero.Backoffice.UI/public/resources/icons/feather.svg delete mode 100644 zero.Backoffice.UI/public/resources/icons/gg.svg delete mode 100644 zero.Backoffice.UI/public/test.txt delete mode 100644 zero.Backoffice.UI/tsconfig.json delete mode 100644 zero.Backoffice.UI/vite.config.js delete mode 100644 zero.Backoffice.UI/wipe.js delete mode 100644 zero.Raven.IdentityDemo/ScaffoldingReadMe.txt diff --git a/AssemblyInfo.cs b/AssemblyInfo.cs deleted file mode 100644 index a90bce77..00000000 --- a/AssemblyInfo.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -[assembly: AssemblyProduct("zero")] -[assembly: AssemblyCompany("brothers Klika OG")] -[assembly: AssemblyCopyright("Copyright © 2020 brothers Klika OG")] -[assembly: AssemblyCulture("")] -[assembly: ComVisible(false)] -[assembly: AssemblyVersion("0.0.1.0")] \ No newline at end of file diff --git a/zero.Backoffice.UI/_notimplemented/form-error-view.vue b/zero.Backoffice.UI/_notimplemented/form-error-view.vue deleted file mode 100644 index f63be1c6..00000000 --- a/zero.Backoffice.UI/_notimplemented/form-error-view.vue +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/_notimplemented/password-hash.vue b/zero.Backoffice.UI/_notimplemented/password-hash.vue deleted file mode 100644 index 9dbf6c28..00000000 --- a/zero.Backoffice.UI/_notimplemented/password-hash.vue +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/_notimplemented/setup/Steps/step-application.vue b/zero.Backoffice.UI/_notimplemented/setup/Steps/step-application.vue deleted file mode 100644 index a4a73819..00000000 --- a/zero.Backoffice.UI/_notimplemented/setup/Steps/step-application.vue +++ /dev/null @@ -1,31 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/_notimplemented/setup/Steps/step-database.vue b/zero.Backoffice.UI/_notimplemented/setup/Steps/step-database.vue deleted file mode 100644 index a292c4cb..00000000 --- a/zero.Backoffice.UI/_notimplemented/setup/Steps/step-database.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/_notimplemented/setup/Steps/step-finish.vue b/zero.Backoffice.UI/_notimplemented/setup/Steps/step-finish.vue deleted file mode 100644 index 71a55e92..00000000 --- a/zero.Backoffice.UI/_notimplemented/setup/Steps/step-finish.vue +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/_notimplemented/setup/Steps/step-install.vue b/zero.Backoffice.UI/_notimplemented/setup/Steps/step-install.vue deleted file mode 100644 index 318c76d4..00000000 --- a/zero.Backoffice.UI/_notimplemented/setup/Steps/step-install.vue +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/_notimplemented/setup/Steps/step-user.vue b/zero.Backoffice.UI/_notimplemented/setup/Steps/step-user.vue deleted file mode 100644 index d528fd1e..00000000 --- a/zero.Backoffice.UI/_notimplemented/setup/Steps/step-user.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/_notimplemented/setup/setup.js b/zero.Backoffice.UI/_notimplemented/setup/setup.js deleted file mode 100644 index ff9aebd5..00000000 --- a/zero.Backoffice.UI/_notimplemented/setup/setup.js +++ /dev/null @@ -1,9 +0,0 @@ -import Vue from 'vue'; -import Setup from './setup.vue'; -//import 'filter/generic.js' -//import 'directive/filedrop.js' - -import GlobalComponents from 'zero/components/globals.js'; -import Directives from 'zero/directives/globals.js'; - -new Vue(Setup).$mount('#application'); \ No newline at end of file diff --git a/zero.Backoffice.UI/_notimplemented/setup/setup.scss b/zero.Backoffice.UI/_notimplemented/setup/setup.scss deleted file mode 100644 index 7b9d6b88..00000000 --- a/zero.Backoffice.UI/_notimplemented/setup/setup.scss +++ /dev/null @@ -1,6 +0,0 @@ -// configuration -@import "Core/all"; - -// modules -@import "Modules/button"; -@import "Setup/all"; \ No newline at end of file diff --git a/zero.Backoffice.UI/_notimplemented/setup/setup.vue b/zero.Backoffice.UI/_notimplemented/setup/setup.vue deleted file mode 100644 index ce90c7d8..00000000 --- a/zero.Backoffice.UI/_notimplemented/setup/setup.vue +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/_notimplemented/tableeditor.vue b/zero.Backoffice.UI/_notimplemented/tableeditor.vue deleted file mode 100644 index 915a5a3c..00000000 --- a/zero.Backoffice.UI/_notimplemented/tableeditor.vue +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/account/_password-change.vue b/zero.Backoffice.UI/app/account/_password-change.vue deleted file mode 100644 index a87e0922..00000000 --- a/zero.Backoffice.UI/app/account/_password-change.vue +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/account/account.d.ts b/zero.Backoffice.UI/app/account/account.d.ts deleted file mode 100644 index 8500a845..00000000 --- a/zero.Backoffice.UI/app/account/account.d.ts +++ /dev/null @@ -1,39 +0,0 @@ - -declare module 'zero/account' -{ - export interface AccountUser - { - id: string; - currentAppId: string; - isSuper: boolean; - avatarId: string; - email: string; - name: string; - isActive: boolean; - createdDate: string; - flavor?: string; - } - - export interface AccountLoginResponse - { - user: AccountUser; - apiKey: string; - } - - export interface AccountStoreState - { - user?: AccountUser; - } - - export interface AccountLoginModel - { - email: string; - password: string; - isPersistent: boolean; - } - - export interface AccountLoggedInResponse - { - loggedIn: boolean; - } -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/account/api.ts b/zero.Backoffice.UI/app/account/api.ts deleted file mode 100644 index ea11c815..00000000 --- a/zero.Backoffice.UI/app/account/api.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { AccountLoggedInResponse, AccountLoginModel, AccountLoginResponse, AccountUser } from 'zero/account'; -import { get, post, ApiRequestConfig, ApiResponse } from '../services/request'; - -export default { - - getUser: (config?: ApiRequestConfig): Promise> => get('backoffice/account/user', { ...config }), - - isAuthenticated: (config?: ApiRequestConfig): Promise> => get('backoffice/account/loggedin', { ...config }), - - login: (model: AccountLoginModel, config?: ApiRequestConfig): Promise> => post('backoffice/account/login', model, { ...config }), - - logout: (config?: ApiRequestConfig) => post('backoffice/account/logout', null, { ...config }) -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/account/login.vue b/zero.Backoffice.UI/app/account/login.vue deleted file mode 100644 index 6f2712ec..00000000 --- a/zero.Backoffice.UI/app/account/login.vue +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/account/store.ts b/zero.Backoffice.UI/app/account/store.ts deleted file mode 100644 index b48371db..00000000 --- a/zero.Backoffice.UI/app/account/store.ts +++ /dev/null @@ -1,13 +0,0 @@ - -import { defineStore } from 'pinia'; -import { AccountStoreState } from 'zero/account'; - -export const useAccountStore = defineStore('zero.account', { - state: () => ({ - user: undefined - } as AccountStoreState), - - getters: { - isAuthenticated: state => state.user != null - } -}); \ No newline at end of file diff --git a/zero.Backoffice.UI/app/app.vue b/zero.Backoffice.UI/app/app.vue deleted file mode 100644 index e7dadc0b..00000000 --- a/zero.Backoffice.UI/app/app.vue +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/axios.config.ts b/zero.Backoffice.UI/app/axios.config.ts deleted file mode 100644 index dd6cfc86..00000000 --- a/zero.Backoffice.UI/app/axios.config.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { AxiosError } from 'axios'; -import Axios from 'axios'; -import eventHub from './services/eventhub'; -import { open as openOverlay } from './services/overlay'; -//import Auth from 'zero/helpers/auth.js'; -import Qs from 'qs'; - -//if (!__zero || !__zero.apiPath) -//{ -// throw Exception('window.zero and zero.apiPath (= base path to the backoffice API) have to be configured'); -//} - -//Axios.defaults.baseURL = '/zero/api/'; -Axios.defaults.withCredentials = true; - -Axios.defaults.paramsSerializer = (params) => -{ - return Qs.stringify(params, { allowDots: true }); -}; - -Axios.interceptors.response.use( - response => response, - (error: AxiosError) => - { - const isApi = error.response && error.response.headers['x-variant'] == 'api-response'; - - if (isApi && error.response && error.response.status >= 500) - { - const errorData = error.response.data && error.response.data.errors ? error.response.data.errors[0] : { - category: 'server', - code: 'server.error.axios', - message: 'Unknown server error', - propery: null - }; - - openOverlay({ - alias: 'servererror', - model: errorData, - autoclose: true, - softdismiss: true, - component: () => import('./ui/overlays/servererror.vue') - }); - } - - if (isApi) - { - return Promise.resolve(error.response); - } - - if (error.response && error.response.status === 401) - { - console.error('[zero.axios] Auth failed. Please login again.'); - eventHub.emit('zero.rejectauth'); - return Promise.reject(error.response); - //Auth.rejectUser("@login.rejectReasons.inactive"); - //Notification.error('Authentication failed. Please login again.', 3); - } - - return Promise.reject(error); - } -); - -Axios.interceptors.request.use(config => -{ - if (!config.params) - { - config.params = {}; - } - - let locationQuery = Qs.parse(location.search.substring(1)); - let appKey = 'system'; - - // set app key to system when required - if (config.params['zero.system'] === true || locationQuery['zero.shared'] === "true") - { - delete config.params['zero.system']; - appKey = 'system'; - } - - // rewrite URLs to replace {app} placeholder - if (config.url != null && config.url.indexOf('{app}') > -1) - { - config.url = config.url.replace('{app}', appKey); - } - if (config.baseURL != null && config.baseURL.indexOf('{app}') > -1) - { - config.baseURL = config.baseURL.replace('{app}', appKey); - } - - return config; -}, error => Promise.reject(error)); - -export default Axios; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/index.ts b/zero.Backoffice.UI/app/components/index.ts deleted file mode 100644 index ef63aeea..00000000 --- a/zero.Backoffice.UI/app/components/index.ts +++ /dev/null @@ -1,99 +0,0 @@ -import uiIcon from './ui-icon.vue'; -import uiLoading from './ui-loading.vue'; -import uiTab from './ui-tab.vue'; -import uiTabs from './ui-tabs.vue'; -import uiInlineTabs from './ui-inline-tabs.vue'; -import uiButton from './ui-button.vue'; -import uiDotButton from './ui-dot-button.vue'; -import uiIconButton from './ui-icon-button.vue'; -import uiSelectButton from './ui-select-button.vue'; -import uiStateButton from './ui-state-button.vue'; -import uiRadioButton from './ui-radio-button.vue'; -import uiAddButton from './ui-add-button.vue'; -import uiMessage from './ui-message.vue'; -import uiPagination from './ui-pagination.vue'; -import uiError from './ui-error.vue'; -import uiLocalize from './ui-localize.vue'; -import uiThumbnail from './ui-thumbnail.vue'; -import uiDropdownSeparator from './ui-dropdown-separator.vue'; -import uiDropdownButton from './ui-dropdown-button.vue'; -import uiDropdown from './ui-dropdown.vue'; -import uiHeaderBar from './ui-header-bar.vue'; -import uiCalendar from './ui-calendar.vue'; -import uiTree from './ui-tree.vue'; -import uiTreeItem from './ui-tree-item.vue'; -import uiTable from './ui-table.vue'; -import uiTableFilter from './ui-table-filter.vue'; -import uiTrinity from './ui-trinity.vue'; -import uiPick from './ui-pick.vue'; -import uiDatagrid from './ui-datagrid.vue'; -import uiProgress from './ui-progress.vue'; -import uiDate from './ui-date.vue'; -import uiRte from './ui-rte/ui-rte.vue'; -import uiCheckList from './ui-check-list.vue'; -import uiSearch from './ui-search.vue'; -import uiToggle from './ui-toggle.vue'; -import uiProperty from './ui-property.vue'; -import uiColorpicker from './ui-colorpicker.vue'; -import uiDatepicker from './ui-datepicker.vue'; -import uiDaterangepicker from './ui-daterangepicker.vue'; -import uiTimepicker from './ui-timepicker.vue'; -import uiSelect from './ui-select.vue'; -import uiForm from './ui-form.vue'; -import uiFormHeader from './ui-form-header.vue'; -import uiFormHeaderLinks from './ui-form-header-links.vue'; -import uiLink from './ui-link.vue'; -import uiInputList from './ui-input-list.vue'; -import uiTags from './ui-tags.vue'; -import uiIconpicker from './ui-iconpicker.vue'; - -export { - uiIcon, - uiLoading, - uiTab, - uiTabs, - uiInlineTabs, - uiButton, - uiDotButton, - uiIconButton, - uiSelectButton, - uiStateButton, - uiRadioButton, - uiAddButton, - uiMessage, - uiPagination, - uiError, - uiLocalize, - uiThumbnail, - uiDropdownSeparator, - uiDropdownButton, - uiDropdown, - uiHeaderBar, - uiCalendar, - uiTree, - uiTreeItem, - uiTable, - uiTableFilter, - uiTrinity, - uiPick, - uiDatagrid, - uiProgress, - uiDate, - uiRte, - uiCheckList, - uiSearch, - uiToggle, - uiProperty, - uiColorpicker, - uiDatepicker, - uiDaterangepicker, - uiTimepicker, - uiSelect, - uiForm, - uiFormHeader, - uiFormHeaderLinks, - uiLink, - uiInputList, - uiTags, - uiIconpicker -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/register.ts b/zero.Backoffice.UI/app/components/register.ts deleted file mode 100644 index 8e137b10..00000000 --- a/zero.Backoffice.UI/app/components/register.ts +++ /dev/null @@ -1,13 +0,0 @@ - -import { App } from 'vue'; -import * as components from './index'; - -export default function (app: App) -{ - for (var key in components) - { - let component = components[key]; - - app.component(key, component.default || component); - } -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-add-button.vue b/zero.Backoffice.UI/app/components/ui-add-button.vue deleted file mode 100644 index 4067e2b8..00000000 --- a/zero.Backoffice.UI/app/components/ui-add-button.vue +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-button.vue b/zero.Backoffice.UI/app/components/ui-button.vue deleted file mode 100644 index 358bd92b..00000000 --- a/zero.Backoffice.UI/app/components/ui-button.vue +++ /dev/null @@ -1,166 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-calendar.vue b/zero.Backoffice.UI/app/components/ui-calendar.vue deleted file mode 100644 index 77480f71..00000000 --- a/zero.Backoffice.UI/app/components/ui-calendar.vue +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-check-list.vue b/zero.Backoffice.UI/app/components/ui-check-list.vue deleted file mode 100644 index aeb38411..00000000 --- a/zero.Backoffice.UI/app/components/ui-check-list.vue +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-colorpicker.vue b/zero.Backoffice.UI/app/components/ui-colorpicker.vue deleted file mode 100644 index 686b2ebe..00000000 --- a/zero.Backoffice.UI/app/components/ui-colorpicker.vue +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-datagrid.vue b/zero.Backoffice.UI/app/components/ui-datagrid.vue deleted file mode 100644 index 59bb7258..00000000 --- a/zero.Backoffice.UI/app/components/ui-datagrid.vue +++ /dev/null @@ -1,453 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-date.vue b/zero.Backoffice.UI/app/components/ui-date.vue deleted file mode 100644 index 2df84513..00000000 --- a/zero.Backoffice.UI/app/components/ui-date.vue +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-datepicker.vue b/zero.Backoffice.UI/app/components/ui-datepicker.vue deleted file mode 100644 index 9dc6aa02..00000000 --- a/zero.Backoffice.UI/app/components/ui-datepicker.vue +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-daterangepicker-overlay.vue b/zero.Backoffice.UI/app/components/ui-daterangepicker-overlay.vue deleted file mode 100644 index f2cb8323..00000000 --- a/zero.Backoffice.UI/app/components/ui-daterangepicker-overlay.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-daterangepicker.vue b/zero.Backoffice.UI/app/components/ui-daterangepicker.vue deleted file mode 100644 index e99f80b2..00000000 --- a/zero.Backoffice.UI/app/components/ui-daterangepicker.vue +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-dot-button.vue b/zero.Backoffice.UI/app/components/ui-dot-button.vue deleted file mode 100644 index cc40b1f0..00000000 --- a/zero.Backoffice.UI/app/components/ui-dot-button.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-dropdown-button.vue b/zero.Backoffice.UI/app/components/ui-dropdown-button.vue deleted file mode 100644 index b2be1131..00000000 --- a/zero.Backoffice.UI/app/components/ui-dropdown-button.vue +++ /dev/null @@ -1,289 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-dropdown-separator.vue b/zero.Backoffice.UI/app/components/ui-dropdown-separator.vue deleted file mode 100644 index 0ee24900..00000000 --- a/zero.Backoffice.UI/app/components/ui-dropdown-separator.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-dropdown.vue b/zero.Backoffice.UI/app/components/ui-dropdown.vue deleted file mode 100644 index 567bdb02..00000000 --- a/zero.Backoffice.UI/app/components/ui-dropdown.vue +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-error.vue b/zero.Backoffice.UI/app/components/ui-error.vue deleted file mode 100644 index d00a6cff..00000000 --- a/zero.Backoffice.UI/app/components/ui-error.vue +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-form-header-links-overlay.vue b/zero.Backoffice.UI/app/components/ui-form-header-links-overlay.vue deleted file mode 100644 index 170a6fba..00000000 --- a/zero.Backoffice.UI/app/components/ui-form-header-links-overlay.vue +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-form-header-links.vue b/zero.Backoffice.UI/app/components/ui-form-header-links.vue deleted file mode 100644 index a71fd6f1..00000000 --- a/zero.Backoffice.UI/app/components/ui-form-header-links.vue +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-form-header.vue b/zero.Backoffice.UI/app/components/ui-form-header.vue deleted file mode 100644 index 2d73b53b..00000000 --- a/zero.Backoffice.UI/app/components/ui-form-header.vue +++ /dev/null @@ -1,266 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-form.vue b/zero.Backoffice.UI/app/components/ui-form.vue deleted file mode 100644 index cfc91804..00000000 --- a/zero.Backoffice.UI/app/components/ui-form.vue +++ /dev/null @@ -1,481 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-header-bar.vue b/zero.Backoffice.UI/app/components/ui-header-bar.vue deleted file mode 100644 index c05f2d2a..00000000 --- a/zero.Backoffice.UI/app/components/ui-header-bar.vue +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-icon-button.vue b/zero.Backoffice.UI/app/components/ui-icon-button.vue deleted file mode 100644 index aaa10ebd..00000000 --- a/zero.Backoffice.UI/app/components/ui-icon-button.vue +++ /dev/null @@ -1,43 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-icon.vue b/zero.Backoffice.UI/app/components/ui-icon.vue deleted file mode 100644 index 15e53704..00000000 --- a/zero.Backoffice.UI/app/components/ui-icon.vue +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-iconpicker-overlay.vue b/zero.Backoffice.UI/app/components/ui-iconpicker-overlay.vue deleted file mode 100644 index 2461f649..00000000 --- a/zero.Backoffice.UI/app/components/ui-iconpicker-overlay.vue +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-iconpicker.vue b/zero.Backoffice.UI/app/components/ui-iconpicker.vue deleted file mode 100644 index b82e7f36..00000000 --- a/zero.Backoffice.UI/app/components/ui-iconpicker.vue +++ /dev/null @@ -1,127 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-inline-tabs.vue b/zero.Backoffice.UI/app/components/ui-inline-tabs.vue deleted file mode 100644 index fb5b3732..00000000 --- a/zero.Backoffice.UI/app/components/ui-inline-tabs.vue +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-input-list.vue b/zero.Backoffice.UI/app/components/ui-input-list.vue deleted file mode 100644 index 2d458ffd..00000000 --- a/zero.Backoffice.UI/app/components/ui-input-list.vue +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-link.vue b/zero.Backoffice.UI/app/components/ui-link.vue deleted file mode 100644 index 297b7518..00000000 --- a/zero.Backoffice.UI/app/components/ui-link.vue +++ /dev/null @@ -1,76 +0,0 @@ - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-loading.vue b/zero.Backoffice.UI/app/components/ui-loading.vue deleted file mode 100644 index c8d97dda..00000000 --- a/zero.Backoffice.UI/app/components/ui-loading.vue +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-localize.vue b/zero.Backoffice.UI/app/components/ui-localize.vue deleted file mode 100644 index 00163528..00000000 --- a/zero.Backoffice.UI/app/components/ui-localize.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-message.vue b/zero.Backoffice.UI/app/components/ui-message.vue deleted file mode 100644 index dd6882bb..00000000 --- a/zero.Backoffice.UI/app/components/ui-message.vue +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-pagination.vue b/zero.Backoffice.UI/app/components/ui-pagination.vue deleted file mode 100644 index d5c15ac5..00000000 --- a/zero.Backoffice.UI/app/components/ui-pagination.vue +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-password-hash.vue b/zero.Backoffice.UI/app/components/ui-password-hash.vue deleted file mode 100644 index 7212826f..00000000 --- a/zero.Backoffice.UI/app/components/ui-password-hash.vue +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-pick.vue b/zero.Backoffice.UI/app/components/ui-pick.vue deleted file mode 100644 index 5cb41361..00000000 --- a/zero.Backoffice.UI/app/components/ui-pick.vue +++ /dev/null @@ -1,818 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-progress.vue b/zero.Backoffice.UI/app/components/ui-progress.vue deleted file mode 100644 index c073cac2..00000000 --- a/zero.Backoffice.UI/app/components/ui-progress.vue +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-property.vue b/zero.Backoffice.UI/app/components/ui-property.vue deleted file mode 100644 index 3d3ea408..00000000 --- a/zero.Backoffice.UI/app/components/ui-property.vue +++ /dev/null @@ -1,311 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-radio-button.vue b/zero.Backoffice.UI/app/components/ui-radio-button.vue deleted file mode 100644 index 594043a8..00000000 --- a/zero.Backoffice.UI/app/components/ui-radio-button.vue +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-rte/extensions/link/link.ts b/zero.Backoffice.UI/app/components/ui-rte/extensions/link/link.ts deleted file mode 100644 index 4bea6385..00000000 --- a/zero.Backoffice.UI/app/components/ui-rte/extensions/link/link.ts +++ /dev/null @@ -1,253 +0,0 @@ - -import { Mark, markPasteRule, mergeAttributes } from '@tiptap/core'; -import { find } from 'linkifyjs'; -import { autolink } from '@tiptap/extension-link/src/helpers/autolink'; -import { clickHandler } from '@tiptap/extension-link/src/helpers/clickHandler'; -import { pasteHandler } from '@tiptap/extension-link/src/helpers/pasteHandler'; -import * as overlays from '../../../../services/overlay'; - - -export interface ZeroLinkOptions -{ - /** - * If enabled, it adds links as you type. - */ - autolink: boolean, - /** - * If enabled, links will be opened on click. - */ - openOnClick: boolean, - /** - * Adds a link to the current selection if the pasted content only contains an url. - */ - linkOnPaste: boolean, - /** - * A list of HTML attributes to be rendered. - */ - HTMLAttributes: Record, -} - -declare module '@tiptap/core' { - interface Commands - { - zerolink: { - /** - * Pick a link - */ - pickLink: () => ReturnType, - /** - * Set a link mark from data - */ - setLinkData: (data: object) => ReturnType, - /** - * Set a link mark - */ - setLink: (attributes: { href: string, target?: string }) => ReturnType, - /** - * Toggle a link mark - */ - toggleLink: (attributes: { href: string, target?: string }) => ReturnType, - /** - * Unset a link mark - */ - unsetLink: () => ReturnType, - } - } -} - - -export async function pickLink(editor) -{ - const result = await overlays.open({ - component: () => import('../../../../modules/links/picker/ui-linkpicker-overlay.vue'), - display: 'editor', - model: { - value: null, - areas: [], - allowTitle: false, - allowTarget: true, - allowSuffix: true - } - }); - - if (result.eventType == 'confirm') - { - return editor.chain().focus().setLinkData(result.value).run(); - } -} - - -export const ZeroLink = Mark.create({ - name: 'zerolink', - - priority: 1000, - - keepOnSplit: false, - - inclusive() - { - return this.options.autolink - }, - - addOptions() - { - return { - openOnClick: true, - linkOnPaste: true, - autolink: true, - HTMLAttributes: { - target: '_self', - rel: 'noopener noreferrer nofollow', - }, - } - }, - - addAttributes() - { - return { - href: { - default: null, - }, - 'zero-link': { - default: null - }, - target: { - default: this.options.HTMLAttributes.target, - }, - title: { - default: null - } - } - }, - - parseHTML() - { - return [ - { tag: 'a[href]' }, - { tag: 'a[zero-link]' } - ] - }, - - renderHTML({ HTMLAttributes }) - { - return [ - 'a', - mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), - 0, - ] - }, - - addCommands() - { - return { - - setLinkData: data => ({ chain }) => - { - let attributes = {}; - - if (data.target !== 'default') - { - attributes.target = data.target; - } - - if (data.title) - { - attributes.title = data.title; - } - - let link = { - area: data.area - }; - - if (data.values) - { - link.values = data.values; - } - - if (data.urlSuffix) - { - link.suffix = data.urlSuffix; - } - - attributes['zero-link'] = JSON.stringify(link); - - return chain() - .setMark(this.name, attributes) - .setMeta('preventAutolink', true) - .run() - }, - - setLink: attributes => ({ chain }) => - { - return chain() - .setMark(this.name, attributes) - .setMeta('preventAutolink', true) - .run() - }, - - toggleLink: attributes => ({ chain }) => - { - return chain() - .toggleMark(this.name, attributes, { extendEmptyMarkRange: true }) - .setMeta('preventAutolink', true) - .run() - }, - - unsetLink: () => ({ chain }) => - { - return chain() - .unsetMark(this.name, { extendEmptyMarkRange: true }) - .setMeta('preventAutolink', true) - .run() - }, - } - }, - - addPasteRules() - { - return [ - markPasteRule({ - find: text => find(text) - .filter(link => link.isLink) - .map(link => ({ - text: link.value, - index: link.start, - data: link, - })), - type: this.type, - getAttributes: match => ({ - href: match.data?.href, - }), - }), - ] - }, - - addProseMirrorPlugins() - { - const plugins = [] - - if (this.options.autolink) - { - plugins.push(autolink({ - type: this.type, - })) - } - - if (this.options.openOnClick) - { - plugins.push(clickHandler({ - type: this.type, - })) - } - - if (this.options.linkOnPaste) - { - plugins.push(pasteHandler({ - editor: this.editor, - type: this.type, - })) - } - - return plugins - }, -}) \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-rte/rte.config.ts b/zero.Backoffice.UI/app/components/ui-rte/rte.config.ts deleted file mode 100644 index 998f6ed1..00000000 --- a/zero.Backoffice.UI/app/components/ui-rte/rte.config.ts +++ /dev/null @@ -1,182 +0,0 @@ - -import Document from '@tiptap/extension-document' -import Paragraph from '@tiptap/extension-paragraph' -import Text from '@tiptap/extension-text' - -import Bold from '@tiptap/extension-bold'; -import Code from '@tiptap/extension-code'; -import Italic from '@tiptap/extension-italic'; -import Strike from '@tiptap/extension-strike'; -//import Underline from '@tiptap/ex'; -import History from '@tiptap/extension-history'; -//import Placeholder from '@tiptap/extension-placeholder'; -import HorizontalRule from '@tiptap/extension-horizontal-rule'; -import ListItem from '@tiptap/extension-list-item'; -import BulletList from '@tiptap/extension-bullet-list'; -import OrderedList from '@tiptap/extension-ordered-list'; -import Heading from '@tiptap/extension-heading'; -import HardBreak from '@tiptap/extension-hard-break'; -import Image from '@tiptap/extension-image'; -import { ZeroLink, pickLink } from './extensions/link/link'; - -export default function () -{ - return { - - removeExtension(name) - { - var ext = this.extensions.find(x => x.name === name); - ext && this.extensions.splice(this.extensions.indexOf(ext), 1); - }, - - removeCommand(alias) - { - var cmd = this.commands.find(x => x.alias === alias); - cmd && this.commands.splice(this.commands.indexOf(cmd), 1); - }, - - extensions: [ - Document, - Paragraph, - Text, - History, - HardBreak, - ZeroLink, - Bold, - Code, - Italic, - Strike, - //Underline, - ListItem, - BulletList, - OrderedList, - HorizontalRule, - Heading.configure({ // TODO - levels: [2, 3, 4], - }) - ], - - commands: [ - //{ - // alias: 'undo', - // title: '@rte.undo', - // symbol: 'fth-chevron-left', - // disabled: cmd => cmd.undoDepth() > 1, - // onClick: (ev, cmd) => cmd.undo(ev), - //}, - //{ - // alias: 'redo', - // title: '@rte.redo', - // symbol: 'fth-chevron-right', - // disabled: cmd => cmd.redoDepth() > 1, - // onClick: (ev, cmd) => cmd.redo(ev) - //}, - { - alias: 'bold', - title: '@rte.bold', - symbol: 'fth-bold', - symbolSize: 14, - isActive: editor => editor.isActive('bold'), - onClick: editor => editor.chain().focus().toggleBold().run(), - bubble: true - }, - { - alias: 'italic', - title: '@rte.italic', - symbol: 'fth-italic', - symbolSize: 14, - isActive: editor => editor.isActive('italic'), - onClick: editor => editor.chain().focus().toggleItalic().run(), - bubble: true - }, - { - alias: 'underline', - title: '@rte.underline', - symbol: 'fth-underline', - symbolSize: 14, - isActive: editor => editor.isActive('underline'), - onClick: editor => editor.chain().focus().toggleUnderline().run(), - bubble: true - }, - { - alias: 'strikethrough', - title: '@rte.strikethrough', - symbol: 'fth-strikethrough', - symbolSize: 14, - isActive: editor => editor.isActive('strike'), - onClick: editor => editor.chain().focus().toggleStrike().run(), - bubble: true - }, - { - alias: 'code', - title: '@rte.code', - symbol: 'fth-code', - symbolSize: 14, - isActive: editor => editor.isActive('code'), - onClick: editor => editor.chain().focus().toggleCode().run(), - bubble: true - }, - { - alias: 'link', - title: '@rte.link', - symbol: 'fth-link-2', - symbolSize: 14, - isActive: editor => editor.isActive('link'), - onClick: editor => pickLink(editor) - }, - { - alias: 'line', - title: '@rte.line', - symbol: 'fth-minus', - symbolSize: 15, - onClick: editor => editor.chain().focus().setHorizontalRule().run() - }, - { - alias: 'list', - title: '@rte.list', - symbol: 'fth-list', - symbolSize: 14, - children: [ - { - alias: 'ulist', - title: '@rte.ulist', - isActive: editor => editor.isActive('bullet_list'), - onClick: editor => editor.chain().focus().toggleBulletList().run() - }, - { - alias: 'olist', - title: '@rte.olist', - isActive: editor => editor.isActive('ordered_list'), - onClick: editor => editor.chain().focus().toggleOrderedList().run() - } - ] - }, - { - alias: 'heading', - title: '@rte.heading', - symbol: 'fth-type', - symbolSize: 14, - children: [ - { - alias: 'h2', - title: '@rte.heading2', - isActive: editor => editor.isActive('heading', { level: 2}), - onClick: editor => editor.chain().focus().toggleHeading({ level: 2 }).run() - }, - { - alias: 'h3', - title: '@rte.heading3', - isActive: editor => editor.isActive('heading', { level: 3 }), - onClick: editor => editor.chain().focus().toggleHeading({ level: 3 }).run() - }, - { - alias: 'h4', - title: '@rte.heading4', - isActive: editor => editor.isActive('heading', { level: 4 }), - onClick: editor => editor.chain().focus().toggleHeading({ level: 4 }).run() - } - ] - } - ] - }; -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-rte/rte.extensions.ts b/zero.Backoffice.UI/app/components/ui-rte/rte.extensions.ts deleted file mode 100644 index 8a19d445..00000000 --- a/zero.Backoffice.UI/app/components/ui-rte/rte.extensions.ts +++ /dev/null @@ -1,73 +0,0 @@ - -//import { Node, Extension, Plugin } from '@tiptap/vue-3'; -//import { chainCommands, exitCode } from 'prosemirror-commands'; - -//export class HardBreak extends Node -//{ -// get name() -// { -// return 'br' -// } - -// get schema() -// { -// return { -// inline: true, -// group: 'inline', -// selectable: false, -// parseDOM: [ -// { tag: 'br' }, -// ], -// toDOM: () => ['br'], -// } -// } - -// keys({ type }) -// { -// const command = chainCommands(exitCode, (state, dispatch) => -// { -// dispatch(state.tr.replaceSelectionWith(type.create()).scrollIntoView()) -// return true -// }) -// return { -// 'Enter': command -// } -// } -//} - - -//export class MaxSize extends Extension -//{ -// get name() -// { -// return 'maxSize' -// } - -// get defaultOptions() -// { -// return { -// maxSize: null -// } -// } - -// get plugins() -// { -// return [ -// new Plugin({ -// appendTransaction: (transactions, oldState, newState) => -// { -// const max = this.options.maxSize; -// const oldLength = oldState.doc.content.size; -// const newLength = newState.doc.content.size; - -// if (max && newLength > max && newLength > oldLength) -// { -// let newTr = newState.tr; -// newTr.insertText('', max + 1, newLength); -// return newTr; -// } -// } -// }) -// ] -// } -//} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-rte/rte.menubar.ts b/zero.Backoffice.UI/app/components/ui-rte/rte.menubar.ts deleted file mode 100644 index 1a8dd402..00000000 --- a/zero.Backoffice.UI/app/components/ui-rte/rte.menubar.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { Plugin, PluginKey } from 'prosemirror-state' - -class Menu -{ - - constructor({ options }) - { - this.options = options - this.preventHide = false - - // the mousedown event is fired before blur so we can prevent it - this.mousedownHandler = this.handleClick.bind(this) - this.options.element.addEventListener('mousedown', this.mousedownHandler, { capture: true }) - - this.blurHandler = () => - { - if (this.preventHide) - { - this.preventHide = false - return - } - - this.options.editor.emit('menubar:focusUpdate', false) - } - this.options.editor.on('blur', this.blurHandler) - } - - handleClick() - { - this.preventHide = true - } - - destroy() - { - this.options.element.removeEventListener('mousedown', this.mousedownHandler) - this.options.editor.off('blur', this.blurHandler) - } - -} - -const MenuBar = function (options) -{ - return new Plugin({ - key: new PluginKey('menu_bar'), - view(editorView) - { - return new Menu({ editorView, options }) - }, - }) -}; - - - -export default { - - props: { - editor: { - default: null, - type: Object, - }, - }, - - data() { - return { - focused: false, - } - }, - - watch: { - editor: { - immediate: true, - handler(editor) { - if (editor) { - this.$nextTick(() => - { - var menubar = MenuBar({ - editor, - element: this.$el, - }); - - editor.registerPlugin(menubar); - - this.focused = editor.focused - - editor.on('focus', () => { - this.focused = true - }) - - editor.on('menubar:focusUpdate', focused => { - this.focused = focused - }) - }) - } - }, - }, - }, - - render() { - if (!this.editor) { - return null - } - - return this.$slots.default({ - focused: this.focused, - focus: this.editor.focus, - commands: this.editor.commands, - isActive: this.editor.isActive, - getMarkAttrs: this.editor.getMarkAttrs.bind(this.editor), - getNodeAttrs: this.editor.getNodeAttrs.bind(this.editor), - }) - }, - -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-rte/ui-rte.vue b/zero.Backoffice.UI/app/components/ui-rte/ui-rte.vue deleted file mode 100644 index ab68a31e..00000000 --- a/zero.Backoffice.UI/app/components/ui-rte/ui-rte.vue +++ /dev/null @@ -1,434 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-search.vue b/zero.Backoffice.UI/app/components/ui-search.vue deleted file mode 100644 index c24d27f0..00000000 --- a/zero.Backoffice.UI/app/components/ui-search.vue +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-select-button.vue b/zero.Backoffice.UI/app/components/ui-select-button.vue deleted file mode 100644 index 7b997527..00000000 --- a/zero.Backoffice.UI/app/components/ui-select-button.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-select.vue b/zero.Backoffice.UI/app/components/ui-select.vue deleted file mode 100644 index ef261e4e..00000000 --- a/zero.Backoffice.UI/app/components/ui-select.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-state-button.vue b/zero.Backoffice.UI/app/components/ui-state-button.vue deleted file mode 100644 index 57e7da32..00000000 --- a/zero.Backoffice.UI/app/components/ui-state-button.vue +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-tab.vue b/zero.Backoffice.UI/app/components/ui-tab.vue deleted file mode 100644 index 83a638b6..00000000 --- a/zero.Backoffice.UI/app/components/ui-tab.vue +++ /dev/null @@ -1,85 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-table-filter-overlay.vue b/zero.Backoffice.UI/app/components/ui-table-filter-overlay.vue deleted file mode 100644 index 8ed4e689..00000000 --- a/zero.Backoffice.UI/app/components/ui-table-filter-overlay.vue +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-table-filter.vue b/zero.Backoffice.UI/app/components/ui-table-filter.vue deleted file mode 100644 index 7abfa5dd..00000000 --- a/zero.Backoffice.UI/app/components/ui-table-filter.vue +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-table.scss b/zero.Backoffice.UI/app/components/ui-table.scss deleted file mode 100644 index 5807f76b..00000000 --- a/zero.Backoffice.UI/app/components/ui-table.scss +++ /dev/null @@ -1,324 +0,0 @@ - - -.ui-table -{ - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - flex-direction: column; - position: relative; - background: var(--color-table); - flex-wrap: nowrap; - -webkit-box-pack: justify; - justify-content: space-between; - min-width: auto; - border-radius: var(--radius); - table-layout: fixed; - word-wrap: break-word; - font-size: var(--font-size); - width: 100%; - box-shadow: var(--shadow-short); - - &.is-inline - { - box-shadow: none; - border: 1px solid var(--color-line); - } -} - -.ui-table-row -{ - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - flex-flow: row nowrap; - -webkit-box-align: center; - align-items: stretch; - width: 100%; - border-bottom: 1px solid var(--color-table-line-horizontal); - position: relative; - transition: outline 0.1s ease, box-shadow 0.1s ease; - color: var(--color-text); - - &:last-child - { - border-bottom: none; - } - - .ui-table.is-inline & - { - border-bottom-color: var(--color-line); - } -} - -a.ui-table-row:hover, button.ui-table-row:hover -{ - //box-shadow: var(--shadow-mid); - background: var(--color-table-hover); - z-index: 2; -} - - -.ui-table-head -{ - font-weight: 700; - border-radius: 5px 5px 0 0; - color: var(--color-text); - position: sticky; - top: 0; - //border-bottom: 1px solid var(--color-line); - z-index: 3; - background: var(--color-table-head); - /*border-bottom: 2px solid var(--color-bg);*/ - - .ui-table-cell - { - justify-content: space-between; - font-size: var(--font-size-s); - } - - .ui-table.is-inline & - { - background: var(--color-box); - } -} - -.ui-table-cell -{ - display: inline-flex; - flex-direction: row; - justify-content: flex-start; - align-items: center; - flex: 1 1 5%; - position: relative; - text-align: left; - padding: 15px 20px 14px 20px; - border-left: 1px solid var(--color-table-line-vertical); - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - min-height: 58px; - min-width: 20px; - line-height: 20px; - - &:first-child - { - border-left: none; - } - - &.is-multiline - { - white-space: normal; - overflow: auto; - text-overflow: initial; - } - - &.is-bold - { - font-weight: bold; - } - - &.is-selectable, &.is-options - { - font-size: var(--font-size-l); - flex: 0 1 40px; - text-align: center; - padding: 0; - justify-content: flex-end; - - .ui-native-check-toggle - { - margin-right: 0; - } - } - - &.is-options - { - overflow: visible; - flex: 0 1 60px; - } -} - -.ui-table-row:not(.ui-table-head) .ui-table-cell -{ - color: var(--color-text-dim); - - &.is-primary, &:first-child - { - color: var(--color-text); - } - - &.is-vertical - { - flex-direction: column; - align-items: flex-start; - justify-content: center; - } - - &.is-name .ui-icon - { - margin-left: .6em; - color: var(--color-synchronized); - } -} - -.ui-table-row:not(.is-selected) .ui-table-cell:not(.is-head).is-selectable i -{ - color: var(--color-text); - margin-right: 1px; - - &:before - { - content: "\e8cb"; - } -} - -.ui-table-sort -{ - height: 20px; - width: 20px; - display: inline-flex; - align-items: center; - justify-content: center; - margin-right: -10px; - border-radius: 15px; - transition: background 0.2s ease; - - &[disabled] - { - opacity: 0; - visibility: hidden; - pointer-events: none; - } - - .arrow - { - border-top-color: var(--color-text); - transition: opacity 0.2s ease, transform 0.3s ease; - opacity: 0.2; - } - - /*&:hover - { - background: var(--color-bg); - }*/ - - &:hover .arrow - { - opacity: 0.5; - } - - &.sort-desc .arrow, &.sort-asc .arrow, - { - opacity: 1; - } - - &.sort-asc .arrow - { - transform: scaleY(-1) translateY(5px); - } -} - -.ui-table-empty, .ui-table-loading -{ - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - height: 250px; - text-align: center; - padding: 0 20px; -} - -.ui-table.is-inline .ui-table-empty, -.ui-table.is-inline .ui-table-loading -{ - height: auto; - padding: var(--padding) 20px; -} - -.ui-table-empty-icon -{ - margin-bottom: 20px; -} - - -/* special styling for display types */ - -.ui-table-field-bool -{ - color: var(--color-text-dim-one); -} -.ui-table-field-bool[data-symbol="fth-check"] -{ - color: var(--color-primary); -} - -.ui-table-cell[field-type="datetime"] -{ - display: inline; - - .-minor - { - color: var(--color-text-dim); - } -} - -.ui-table-cell .-minor -{ - color: var(--color-text-dim); - font-weight: 400; - font-size: var(--font-size-xs); -} - -.ui-table-field-image -{ - border-radius: 3px; - - &.is-error - { - opacity: 0; - } -} - - -.ui-table-cell .state -{ - display: inline-flex; - align-self: center; - align-items: center; - font-size: var(--font-size-xs); - color: var(--color-text); - font-weight: 600; - background: var(--color-table-highlight); - padding: 4px 12px; - border-radius: 20px; - - &[data-state="completed"], &[data-state="cancelled"], - &[data-state="none"], &[data-state="captured"], &[data-state="authorized"], &[data-state="cancelled"], &[data-state="refunded"] - { - font-weight: 400; - color: var(--color-text-dim); - } - &[data-state="error"] - { - color: var(--color-accent-error); - background: var(--color-accent-error-bg); - } - &[data-payment-state] - { - font-weight: 400; - color: var(--color-text-dim); - } - - &[data-payment-state="error"] - { - color: var(--color-accent-error); - background: var(--color-accent-error-bg); - } -} - -.ui-table-row:hover .ui-table-cell .state -{ - background: var(--color-bg-shade-4); -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-table.vue b/zero.Backoffice.UI/app/components/ui-table.vue deleted file mode 100644 index e71c8446..00000000 --- a/zero.Backoffice.UI/app/components/ui-table.vue +++ /dev/null @@ -1,390 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-tabs.vue b/zero.Backoffice.UI/app/components/ui-tabs.vue deleted file mode 100644 index fe321b13..00000000 --- a/zero.Backoffice.UI/app/components/ui-tabs.vue +++ /dev/null @@ -1,240 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-tags.vue b/zero.Backoffice.UI/app/components/ui-tags.vue deleted file mode 100644 index cb1814a4..00000000 --- a/zero.Backoffice.UI/app/components/ui-tags.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-thumbnail.vue b/zero.Backoffice.UI/app/components/ui-thumbnail.vue deleted file mode 100644 index 495c18dd..00000000 --- a/zero.Backoffice.UI/app/components/ui-thumbnail.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-timepicker.vue b/zero.Backoffice.UI/app/components/ui-timepicker.vue deleted file mode 100644 index 01ba4be5..00000000 --- a/zero.Backoffice.UI/app/components/ui-timepicker.vue +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-toggle.vue b/zero.Backoffice.UI/app/components/ui-toggle.vue deleted file mode 100644 index 43719e9e..00000000 --- a/zero.Backoffice.UI/app/components/ui-toggle.vue +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-tree-item.vue b/zero.Backoffice.UI/app/components/ui-tree-item.vue deleted file mode 100644 index 99e7020c..00000000 --- a/zero.Backoffice.UI/app/components/ui-tree-item.vue +++ /dev/null @@ -1,379 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-tree.vue b/zero.Backoffice.UI/app/components/ui-tree.vue deleted file mode 100644 index fb6eabab..00000000 --- a/zero.Backoffice.UI/app/components/ui-tree.vue +++ /dev/null @@ -1,257 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/components/ui-trinity.vue b/zero.Backoffice.UI/app/components/ui-trinity.vue deleted file mode 100644 index ef5869d9..00000000 --- a/zero.Backoffice.UI/app/components/ui-trinity.vue +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/core/createZeroPlugin.ts b/zero.Backoffice.UI/app/core/createZeroPlugin.ts deleted file mode 100644 index 8303f840..00000000 --- a/zero.Backoffice.UI/app/core/createZeroPlugin.ts +++ /dev/null @@ -1,19 +0,0 @@ - -import { App } from 'vue'; -import { ZeroRuntime, ZeroInstallOptions } from './index'; - - -export function createZeroPlugin(options?: ZeroInstallOptions) -{ - return { - install: (app: App) => - { - const zero = new ZeroRuntime(app, options); - app.config.globalProperties.zero = zero; - - zero.useZero(); - zero.usePlugins(); - zero.useRouter(); - } - }; -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/core/index.ts b/zero.Backoffice.UI/app/core/index.ts deleted file mode 100644 index 8ef9848a..00000000 --- a/zero.Backoffice.UI/app/core/index.ts +++ /dev/null @@ -1,7 +0,0 @@ - -export * from './createZeroPlugin'; -export * from './zeroRuntime'; -export * from './types/zero'; -export * from './types/zeroPlugin'; -export * from './types/zeroInstallOptions'; -export * from './types/zeroPluginOptions'; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/core/router/formDirtyGuard.ts b/zero.Backoffice.UI/app/core/router/formDirtyGuard.ts deleted file mode 100644 index b22a324b..00000000 --- a/zero.Backoffice.UI/app/core/router/formDirtyGuard.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { RouteLocationNormalized, NavigationGuardNext, nav } from 'vue-router'; - -export default function (to: RouteLocationNormalized, from: RouteLocationNormalized, next: NavigationGuardNext) -{ - if (from.matched.length && from.matched[0].instances) - { - let instance = from.matched[0].instances.default; - - if (instance.$refs['form'] && typeof instance.$refs.form.beforeRouteLeave === 'function') - { - isGuarded = true; - instance.$refs.form.beforeRouteLeave(to, from, res => - { - next(res !== false); - }); - } - } -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/core/router/routerConfig.ts b/zero.Backoffice.UI/app/core/router/routerConfig.ts deleted file mode 100644 index 34193789..00000000 --- a/zero.Backoffice.UI/app/core/router/routerConfig.ts +++ /dev/null @@ -1,34 +0,0 @@ - - -import { Zero } from '../types/zero'; -import { createWebHistory, Router, RouterOptions } from 'vue-router'; -import titleGuard from './titleGuard'; -import formDirtyGuard from './formDirtyGuard'; - -export function getRouterConfig(basePath: string, zero: Zero): RouterOptions -{ - let options = { - history: createWebHistory(basePath), - linkActiveClass: 'is-active', - linkExactActiveClass: 'is-active-exact', - scrollBehavior(to, from, savedPosition) - { - return savedPosition ? savedPosition : { x: 0, y: 0 }; - }, - routes: [] - } as RouterOptions; - - options.routes.push({ name: 'dashboard', path: '/', redirect: '/pages' }); // component: () => import('../../dashboard.vue') }); - options.routes.push({ name: '404', path: '/:pathMatch(.*)', component: () => import('../../notfound.vue') }); - - return options; -} - - -export function appendRouterGuards(router: Router): Router -{ - //router.beforeEach(formDirtyGuard); - //router.beforeEach(titleGuard); - - return router; -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/core/router/titleGuard.ts b/zero.Backoffice.UI/app/core/router/titleGuard.ts deleted file mode 100644 index f8a9d13b..00000000 --- a/zero.Backoffice.UI/app/core/router/titleGuard.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { localize } from '../../services/localization'; -import { RouteLocationNormalized, NavigationGuardNext } from 'vue-router'; - -export default function (to: RouteLocationNormalized, from: RouteLocationNormalized, next: NavigationGuardNext) -{ - let title = localize('@zero.name'); - let name = to.meta.name; - - if (!name && to.matched.length > 1) - { - to.matched.forEach(route => - { - if (!name && route.meta.name) - { - name = route.meta.name; - } - }); - } - - if (!name || to.meta.alias === 'dashboard') //__zero.alias.sections.dashboard) - { - document.title = title; - next(); - return; - } - - let nameParts = Array.isArray(name) ? name : [name]; - let translations = []; - - nameParts.forEach(part => - { - if (part) - { - translations.push(localize(part)); - } - }); - - title += ': ' + translations.join(' - '); - - document.title = title; - - next(); -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/core/types/zero.ts b/zero.Backoffice.UI/app/core/types/zero.ts deleted file mode 100644 index ad23907f..00000000 --- a/zero.Backoffice.UI/app/core/types/zero.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { Emitter, EventType } from "mitt"; -import { Component } from "vue"; -import { ZeroSchema, ZeroSchemaExtension } from "zero/schemas"; - -export interface Zero -{ - version: string; - /** - * access the event hub - **/ - events: Emitter>; - options: ZeroOptions; - useZero: () => void; - useRouter: () => void; - usePlugins: () => void; - runPlugins: () => void; - - runtimeVariables: Record; - - /** - * get a defined field type component - **/ - getFieldTypeComponent(alias: string): Component | undefined; - - /** - * get a defined list or editor schema - **/ - getSchema(alias: string): Promise; - - /** - * get all defined extensions for a schema - **/ - getSchemaExtensions(alias: string): ZeroSchemaExtension[]; - - /** - * get all defined link areas - **/ - linkAreas: ZeroLinkArea[]; - - /** - * get a defined link area by alias - **/ - getLinkArea(alias: string): ZeroLinkArea | undefined; -} - -export interface ZeroOptions -{ - paths: ZeroPathOptions; -} - -export interface ZeroPathOptions -{ - root: string; - api: string; -} - -export interface ZeroLinkArea -{ - alias: string; - name: string; - component: Component; -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/core/types/zeroInstallOptions.ts b/zero.Backoffice.UI/app/core/types/zeroInstallOptions.ts deleted file mode 100644 index 8aff266f..00000000 --- a/zero.Backoffice.UI/app/core/types/zeroInstallOptions.ts +++ /dev/null @@ -1,5 +0,0 @@ - -export interface ZeroInstallOptions -{ - -} diff --git a/zero.Backoffice.UI/app/core/types/zeroPlugin.ts b/zero.Backoffice.UI/app/core/types/zeroPlugin.ts deleted file mode 100644 index 68c89306..00000000 --- a/zero.Backoffice.UI/app/core/types/zeroPlugin.ts +++ /dev/null @@ -1,30 +0,0 @@ - -import { App } from 'vue'; -import { Zero } from './zero'; -import { ZeroPluginOptions } from './zeroPluginOptions'; - - -export interface ZeroPlugin -{ - name: string; - install: (zero: ZeroPluginOptions) => void; - run?: (zero: Zero) => void; -} - -//export class Zero -//{ -// _app: App; -// _options: ZeroInstallOptions; - -// get version(): string -// { -// return "0.0.1"; -// } - -// constructor(app: App, options?: ZeroInstallOptions) -// { -// this._app = app; -// this._options = options || {}; -// console.info('[zero installed]'); -// } -//} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/core/types/zeroPluginOptions.ts b/zero.Backoffice.UI/app/core/types/zeroPluginOptions.ts deleted file mode 100644 index 42880c67..00000000 --- a/zero.Backoffice.UI/app/core/types/zeroPluginOptions.ts +++ /dev/null @@ -1,39 +0,0 @@ - -import { RouteRecordRaw } from 'vue-router'; -import { App, Component } from 'vue'; -import { ZeroSchemaProp } from '../zero'; -import { ZeroLinkArea } from './zero'; -import { ZeroSchema, ZeroSchemaExtension } from 'zero/schemas'; - -export interface ZeroPluginOptions -{ - vue: App; - routes: RouteRecordRaw[]; - route: (route: RouteRecordRaw) => void; - schemas: Record; - schema: (alias: string, schema: ZeroSchemaProp) => void; - schemaExtensions: ZeroSchemaExtension[]; - extendSchema: (alias: string, extension: ((schema: ZeroSchema) => void)) => void; - fieldTypes: Record; - fieldType: (alias: string, component: Component) => void; - linkAreas: Record; - linkArea: (alias: string, name: string, component: Component) => void; -} - -//export class Zero -//{ -// _app: App; -// _options: ZeroInstallOptions; - -// get version(): string -// { -// return "0.0.1"; -// } - -// constructor(app: App, options?: ZeroInstallOptions) -// { -// this._app = app; -// this._options = options || {}; -// console.info('[zero installed]'); -// } -//} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/core/zero.d.ts b/zero.Backoffice.UI/app/core/zero.d.ts deleted file mode 100644 index 123a872f..00000000 --- a/zero.Backoffice.UI/app/core/zero.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ZeroSchema } from "zero/schemas"; -import { Zero } from "./types/zero"; - -declare module '@vue/runtime-core' -{ - export interface ComponentCustomProperties - { - /** - * zero instance - */ - zero: Zero - } -} - -declare type Lazy = () => Promise; -declare type ZeroSchemaProp = ZeroSchema | Lazy; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/core/zeroRuntime.ts b/zero.Backoffice.UI/app/core/zeroRuntime.ts deleted file mode 100644 index 76ad1ba8..00000000 --- a/zero.Backoffice.UI/app/core/zeroRuntime.ts +++ /dev/null @@ -1,226 +0,0 @@ - -import { App, Component } from 'vue'; -import { ZeroInstallOptions } from './types/zeroInstallOptions'; -import { ZeroPluginOptions } from './types/zeroPluginOptions'; -import { Zero, ZeroLinkArea, ZeroOptions } from './types/zero'; -import { createRouter, RouteRecordRaw, RouterOptions } from 'vue-router'; -import registerDirectives from '../directives/register'; -import registerComponents from '../components/register'; -import registerEditorComponents from '../editor/register'; -import { getRouterConfig, appendRouterGuards } from './router/routerConfig'; -import -{ - previewPlugin, - countryPlugin, - applicationPlugin, - settingsPlugin, - languagePlugin, - pagePlugin, - mediaPlugin, - spacePlugin, - mailTemplatePlugin, - translationPlugin, - integrationPlugin, - userPlugin, - linksPlugin, - pageModulePlugin, - searchPlugin -} from '../modules'; -import editorPlugin from '../editor/plugin'; -import { ZeroSchema, ZeroSchemaExtension } from 'zero/schemas'; -import { ZeroSchemaProp } from './zero'; -import * as zeroOptions from '../options'; -import plugins from '../plugins.generated'; -import eventHub from '../services/eventhub'; -import { Emitter, EventType } from 'mitt'; - -plugins.push( - editorPlugin, previewPlugin, countryPlugin, applicationPlugin, settingsPlugin, languagePlugin, - pagePlugin, linksPlugin, mediaPlugin, spacePlugin, mailTemplatePlugin, - translationPlugin, integrationPlugin, userPlugin, pageModulePlugin, searchPlugin -); - - -export class ZeroRuntime implements Zero -{ - _app: App; - _installOptions: ZeroInstallOptions; - _routerConfig: RouterOptions; - _schemas: Record = {}; - _schemaExtensions: ZeroSchemaExtension[] = []; - _fieldTypes: Record = {}; - _linkAreas: Record = {}; - - /** - * version of zero backoffice - **/ - get version(): string - { - return "0.0.1"; - } - - /** - * access the event hub - **/ - get events(): Emitter> - { - return eventHub; - } - - /** - * options - **/ - options: ZeroOptions; - - /** - * runtime variables - **/ - runtimeVariables: Record = {}; - - constructor(app: App, options?: ZeroInstallOptions) - { - this._app = app; - this._installOptions = options || {}; - this._routerConfig = getRouterConfig('/zero', this); - this.options = zeroOptions; - } - - - /** - * register core components - **/ - useZero() - { - let app = this._app; - - registerDirectives(app); - registerComponents(app); - registerEditorComponents(app); - } - - - /** - * create plugin options which are passed to install() for all plugins - **/ - usePlugins() - { - const pluginOptions = { - vue: this._app, - routes: this._routerConfig.routes, - schemas: this._schemas, - schemaExtensions: this._schemaExtensions, - fieldTypes: this._fieldTypes, - linkAreas: this._linkAreas, - route(route: RouteRecordRaw) - { - this.routes.push(route); - }, - schema(alias: string, schema: ZeroSchemaProp) - { - this.schemas[alias] = schema; - }, - extendSchema(alias: string, extension: ((schema: ZeroSchema) => void)) - { - this.schemaExtensions.push({ alias, extension }); - }, - fieldType(alias: string, component: Component) // TODO v3 allow default field options - { - this.fieldTypes[alias] = component; - }, - linkArea(alias: string, name: string, component: Component) - { - this.linkAreas[alias] = { alias, name, component }; - } - } as ZeroPluginOptions; - - // install all plugins - plugins.forEach(plugin => - { - plugin.install(pluginOptions); - }); - } - - - runPlugins() - { - plugins.forEach(plugin => - { - if (typeof plugin.run === 'function') - { - plugin.run(this); - } - }); - } - - - /** - * after all plugins were installed we can create the router - * with the designated routes - **/ - useRouter() - { - const router = createRouter(this._routerConfig); - appendRouterGuards(router); - this._app.use(router); - } - - - /** - * get a defined field type component - **/ - getFieldTypeComponent(alias: string): Component | undefined - { - return this._fieldTypes[alias]; - } - - - /** - * get a defined list or editor schema - **/ - async getSchema(alias: string): Promise - { - let schema: ZeroSchemaProp = this._schemas[alias]; - - if (!schema) - { - return Promise.resolve(null); - } - - if (typeof schema === 'function') - { - const res = await schema(); - schema = res.default as ZeroSchema; - } - - schema.alias = alias; - - return Promise.resolve(schema); - } - - - /** - * get all defined extensions for a schema - **/ - getSchemaExtensions(alias: string): ZeroSchemaExtension[] - { - return this._schemaExtensions.filter(x => x.alias == alias); - } - - - /** - * get all defined link areas - **/ - get linkAreas(): ZeroLinkArea[] - { - return Object.values(this._linkAreas); - } - - - /** - * get a defined link area by alias - **/ - getLinkArea(alias: string): ZeroLinkArea | undefined - { - return this._linkAreas[alias]; - } -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/dashboard.vue b/zero.Backoffice.UI/app/dashboard.vue deleted file mode 100644 index 56c4c840..00000000 --- a/zero.Backoffice.UI/app/dashboard.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/directives/register.ts b/zero.Backoffice.UI/app/directives/register.ts deleted file mode 100644 index 79516803..00000000 --- a/zero.Backoffice.UI/app/directives/register.ts +++ /dev/null @@ -1,35 +0,0 @@ - -import { App } from 'vue'; -import vClickOutside from './v-click-outside'; -import vCurrency from './v-currency'; -import vDate from './v-date'; -import vFilesize from './v-filesize'; -import vLocalize from './v-localize'; -import vMaxLines from './v-max-lines'; -import vPlaceholder from './v-placeholder'; -import vResizeable from './v-resizeable'; -import vSortable from './v-sortable'; -import vEncode from './v-encode' -import vMultiline from './v-multiline'; - -const directives = [ - { key: 'click-outside', definition: vClickOutside }, - { key: 'currency', definition: vCurrency }, - { key: 'date', definition: vDate }, - { key: 'filesize', definition: vFilesize }, - { key: 'localize', definition: vLocalize }, - { key: 'max-lines', definition: vMaxLines }, - { key: 'placeholder', definition: vPlaceholder }, - { key: 'resizeable', definition: vResizeable }, - { key: 'sortable', definition: vSortable }, - { key: 'encode', definition: vEncode }, - { key: 'multiline', definition: vMultiline } -]; - -export default function (app: App) -{ - directives.forEach(directive => - { - app.directive(directive.key, directive.definition); - }); -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/directives/v-click-outside.ts b/zero.Backoffice.UI/app/directives/v-click-outside.ts deleted file mode 100644 index 46dc8efc..00000000 --- a/zero.Backoffice.UI/app/directives/v-click-outside.ts +++ /dev/null @@ -1,94 +0,0 @@ - -const isPopup = (popupItem, elements) => -{ - if (!popupItem || !elements) - { - return false; - } - - for (var i = 0, len = elements.length; i < len; i++) - { - try - { - if (popupItem.contains(elements[i])) - { - return true; - } - if (elements[i].contains(popupItem)) - { - return false; - } - } - catch (e) - { - return false; - } - } - - return false; -}; - -const validate = (binding) => -{ - if (typeof binding.value !== 'function') - { - console.warn('v-click-outside: provided expression ' + binding.expression + ' is not a function.'); - return false; - } - - return true; -}; - - - -/** - * resize an element - */ -export default { - bind(el, binding, vNode) - { - if (!validate(binding)) return; - - // Define Handler and cache it on the element - function handler(e) - { - if (!vNode.context) return; - - // some components may have related popup item, on which we shall prevent the click outside event handler. - var elements = e.path || (e.composedPath && e.composedPath()); - elements && elements.length > 0 && elements.unshift(e.target); - - if (el.contains(e.target) || isPopup(vNode.context.popupItem, elements) || !el.__vueClickOutside__) - { - return; - } - - el.__vueClickOutside__.callback(e); - } - - // add Event Listeners - el.__vueClickOutside__ = { - handler: handler, - callback: binding.value - }; - - setTimeout(() => - { - document.addEventListener('click', handler); - }, 200); - }, - - update(el, binding) - { - if (validate(binding)) - { - el.__vueClickOutside__.callback = binding.value; - } - }, - - unbind(el, binding, vNode) - { - document.removeEventListener('click', el.__vueClickOutside__.handler); - delete el.__vueClickOutside__; - } -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/directives/v-currency.ts b/zero.Backoffice.UI/app/directives/v-currency.ts deleted file mode 100644 index bcb3202d..00000000 --- a/zero.Backoffice.UI/app/directives/v-currency.ts +++ /dev/null @@ -1,13 +0,0 @@ - -import { toCurrency } from '../utils/numbers'; - -/** - * Outputs a currency - */ -export default (el, binding) => -{ - if (binding.value !== binding.oldValue) - { - el.innerHTML = toCurrency(binding.value); - } -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/directives/v-date.ts b/zero.Backoffice.UI/app/directives/v-date.ts deleted file mode 100644 index 47275819..00000000 --- a/zero.Backoffice.UI/app/directives/v-date.ts +++ /dev/null @@ -1,19 +0,0 @@ - -import { formatDate } from '../utils/dates'; - -/** - * Outputs a formatted date - */ -export default (el, binding) => -{ - if (binding.value !== binding.oldValue) - { - if (!binding.value) - { - el.innerHTML = '-'; - return; - } - - el.innerHTML = formatDate(binding.value, binding.arg); - } -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/directives/v-encode.ts b/zero.Backoffice.UI/app/directives/v-encode.ts deleted file mode 100644 index 02c527ad..00000000 --- a/zero.Backoffice.UI/app/directives/v-encode.ts +++ /dev/null @@ -1,11 +0,0 @@ - -import { convertHtmlToText } from '../utils'; - - -export default (el, binding) => -{ - if (binding.value !== binding.oldValue) - { - el.innerHTML = convertHtmlToText(binding.value, binding.arg === 'nl'); - } -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/directives/v-filesize.ts b/zero.Backoffice.UI/app/directives/v-filesize.ts deleted file mode 100644 index adb94eea..00000000 --- a/zero.Backoffice.UI/app/directives/v-filesize.ts +++ /dev/null @@ -1,13 +0,0 @@ - -import { getFilesize } from '../utils/filesize'; - -/** - * Outputs a filesize - */ -export default (el, binding) => -{ - if (binding.value !== binding.oldValue) - { - el.innerText = getFilesize(binding.value, typeof binding.arg !== 'undefined' ? +binding.arg : 1); - } -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/directives/v-localize.ts b/zero.Backoffice.UI/app/directives/v-localize.ts deleted file mode 100644 index af62f79b..00000000 --- a/zero.Backoffice.UI/app/directives/v-localize.ts +++ /dev/null @@ -1,40 +0,0 @@ - -import { localize } from '../services/localization'; - -/** - * Localizes the given property and sets the inner-text of the node to its result - */ -export default (el, binding) => -{ - if (binding.value !== binding.oldValue || !el.innerText) - { - const hasValue = !!binding.value; - const isObject = typeof binding.value === 'object'; - let key = hasValue ? (isObject ? binding.value.key : binding.value) : null; - let options = hasValue && isObject ? binding.value : null; - let html = isObject && binding.value ? (binding.value.html || binding.arg === 'html') : binding.arg === 'html'; - - const result = hasValue ? localize(key, options) : ''; - - // set content as html - if (html) - { - el.innerHTML = result; - } - // set title - else if (binding.arg === 'title') - { - el.title = result; - } - // set attribute - else if (binding.arg) - { - el.setAttribute(binding.arg, result); - } - // set content as plain text - else - { - el.innerText = result; - } - } -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/directives/v-max-lines.ts b/zero.Backoffice.UI/app/directives/v-max-lines.ts deleted file mode 100644 index 0d3361b9..00000000 --- a/zero.Backoffice.UI/app/directives/v-max-lines.ts +++ /dev/null @@ -1,21 +0,0 @@ - -/** - * Limits an element to a maximum number of text lines (can be toggled with click) - */ -export default (el, binding) => -{ - if (binding.value !== binding.oldValue) - { - if (!el.__zero_maxlines) - { - el.__zero_maxlines = true; - el.addEventListener('click', e => - { - el.classList.toggle('is-expanded'); - }); - } - - el.classList.add('ui-maxlines'); - el.style.webkitLineClamp = +binding.value > 0 ? +binding.value : null; - } -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/directives/v-multiline.ts b/zero.Backoffice.UI/app/directives/v-multiline.ts deleted file mode 100644 index a599cd8a..00000000 --- a/zero.Backoffice.UI/app/directives/v-multiline.ts +++ /dev/null @@ -1,11 +0,0 @@ - -/** - * Converts new line chars to
- */ -export default (el, binding) => -{ - if (binding.value !== binding.oldValue) - { - el.innerHTML = binding.value.split('\n').join('
'); - } -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/directives/v-placeholder.ts b/zero.Backoffice.UI/app/directives/v-placeholder.ts deleted file mode 100644 index 3043d614..00000000 --- a/zero.Backoffice.UI/app/directives/v-placeholder.ts +++ /dev/null @@ -1,33 +0,0 @@ - -import { localize } from '../services/localization'; - -/** - * Localizes the given property and sets the inner-text of the node to its result - */ -export default (el, binding) => -{ - if (binding.value !== binding.oldValue || !el.innerText) - { - const hasValue = !!binding.value; - const isObject = typeof binding.value === 'object'; - let value = hasValue ? (isObject ? binding.value.placeholder : binding.value) : null; - let result = null; - - if (isObject && typeof value === 'function') - { - if (typeof binding.value.model === 'undefined') - { - // TODO throw warning - return; - } - result = value(binding.value.model); - } - else - { - result = value; - } - - result = hasValue ? localize(result) : ''; - el.setAttribute('placeholder', result); - } -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/directives/v-resizeable.ts b/zero.Backoffice.UI/app/directives/v-resizeable.ts deleted file mode 100644 index 7257042e..00000000 --- a/zero.Backoffice.UI/app/directives/v-resizeable.ts +++ /dev/null @@ -1,138 +0,0 @@ - -// object (new) that handles resizing of an element -const Resizable = function (element, params) -{ - const prefix = 'zero.ui-resizable.'; - const cacheKey = prefix + (params.save || 'none'); - const resizingClass = 'ui-resizing'; - - let isVertical = ['Y', 'y'].indexOf(params.axis) > -1; - - this.element = element; - this.params = params; - this.handle = this.element.querySelector(this.params.handle || '.handle'); - - if (!this.handle) - { - throw 'Set the [handle] parameter to a valid CSS selector within the attached element'; - } - - - // binds events to the handle so the resizing works - this.listen = () => - { - this.handle.addEventListener('mousedown', this.start); - this.handle.addEventListener('dblclick', this.reset); - }; - - - // detaches the resizable - this.detach = () => - { - this.handle.removeEventListener('mousedown', this.start); - this.handle.removeEventListener('dblclick', this.reset); - document.removeEventListener('mousemove', this.resize); - document.removeEventListener('mouseup', this.stop); - }; - - - // start resizing of an element - this.start = (e) => - { - this.coordinates = { - X: e.pageX, - Y: e.pageY, - offsetX: 0, - offsetY: 0 - }; - document.body.classList.add(resizingClass); - document.addEventListener('mousemove', this.resize); - document.addEventListener('mouseup', this.stop); - }; - - - // resize the element - this.resize = (e) => - { - let deltaX = e.pageX - this.coordinates.X; - let deltaY = e.pageY - this.coordinates.Y; - let delta = isVertical ? deltaY : deltaX; - let newValue = this.value + delta; - - if (params.min && params.min > newValue) - { - newValue = params.min; - } - else if (params.max && params.max < newValue) - { - newValue = params.max; - } - - this.update(newValue); - }; - - - // stop resizing and unbind listeners - this.stop = (e) => - { - document.body.classList.remove(resizingClass); - document.removeEventListener('mousemove', this.resize); - document.removeEventListener('mouseup', this.stop); - - this.value = getCurrentValue(); - - localStorage.setItem(cacheKey, this.value); - }; - - - // updates dimension of the target element - this.update = value => - { - if (value > 0) - { - this.element.style[isVertical ? 'height' : 'width'] = value + 'px'; - } - }; - - - // resets to the original value - this.reset = () => - { - localStorage.removeItem(cacheKey); - this.element.style[isVertical ? 'height' : 'width'] = ''; - this.value = getCurrentValue(); - }; - - - // get current size value from element - let getCurrentValue = () => - { - return this.element[isVertical ? 'clientHeight' : 'clientWidth']; - }; - - this.value = getCurrentValue(); - - - // use cached value on load - if (params.save) - { - const newValue = +localStorage.getItem(cacheKey); - - if (newValue > 0) - { - this.update(+localStorage.getItem(cacheKey)); - this.value = newValue; - } - } -}; - -/** - * resize an element - */ -export default { - bind(el, binding) - { - let resizable = new Resizable(el, binding.value); - resizable.listen(); - } -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/directives/v-sortable.ts b/zero.Backoffice.UI/app/directives/v-sortable.ts deleted file mode 100644 index 2cc7bfd0..00000000 --- a/zero.Backoffice.UI/app/directives/v-sortable.ts +++ /dev/null @@ -1,15 +0,0 @@ - -import Sortable from 'sortablejs'; - -/** - * Outputs a formatted date - */ -export default (el, binding) => -{ - if (binding.value === binding.oldValue) - { - return; - } - - let sortable = new Sortable(el, binding.value || {}); -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/blueprint/property.vue b/zero.Backoffice.UI/app/editor/blueprint/property.vue deleted file mode 100644 index c191c83b..00000000 --- a/zero.Backoffice.UI/app/editor/blueprint/property.vue +++ /dev/null @@ -1,325 +0,0 @@ - - - - - - - - - - - - diff --git a/zero.Backoffice.UI/app/editor/blueprint/settings.vue b/zero.Backoffice.UI/app/editor/blueprint/settings.vue deleted file mode 100644 index 1728364e..00000000 --- a/zero.Backoffice.UI/app/editor/blueprint/settings.vue +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/compile.ts b/zero.Backoffice.UI/app/editor/compile.ts deleted file mode 100644 index a0259a9b..00000000 --- a/zero.Backoffice.UI/app/editor/compile.ts +++ /dev/null @@ -1,365 +0,0 @@ -import { Component, markRaw } from "vue"; -import { ZeroEditorField, ZeroEditorDisplay } from "zero/schemas"; -import { Zero } from "../core"; -import { ZeroEditor, ZeroEditorMeta } from "./editor"; -import { createBlueprintConfig } from "./editor-blueprint"; -import { ZeroEditorCanvasBase, ZeroEditorTab } from "./editor-canvas"; -import { ZeroEditorFieldConfiguration, ZeroEditorFieldFilterPreview } from "./editor-field"; -import { localize } from '../services/localization'; -import { selectorToArray, setObjectValue } from '../utils'; -import List from "../schemas/list/list"; - - -let appliedExtensionsTo: string[] = []; -let appliedListExtensionsTo: string[] = []; - -export interface ZeroCompiledEditor -{ - alias: string; - blueprint: any; - display: ZeroEditorDisplay; - tabs: ZeroCompiledEditorTab[]; - origin: ZeroEditor; - meta: ZeroEditorMeta; -} - - -export interface ZeroCompiledEditorTab -{ - alias: string; - name: string; - sort: number; - class: string | null; - count: (model: any) => number | null; - disabled: (model: any) => boolean; - hidden: (model: any) => boolean; - fieldsets: ZeroCompiledEditorFieldset[]; - component: Component | null; -} - - -export interface ZeroCompiledEditorFieldset -{ - fields: ZeroCompiledEditorField[]; - hasColumns: boolean; -} - - -export interface ZeroCompiledEditorChangeEvent -{ - value: any; - oldValue: any; - model: any; - component: Component; -} - - -export interface ZeroCompiledEditorField -{ - path: string; - configuration: ZeroEditorFieldConfiguration; - fieldType: string; - options: any | null; - component: Component; - selector: string[]; - - getValue: (model: any) => any; - optional: (model: any, parent: any) => boolean; - readonly: (model: any, parent: any) => boolean; - hidden: (model: any, parent: any) => boolean; - label: string; - hideLabel: boolean; - description: string | null; - helpText: string | null; - classes: string | null; - horizontal: boolean; - sort: number; - columns: number; - preview?: ZeroEditorFieldFilterPreview; - onChange: (event: ZeroCompiledEditorChangeEvent) => void; -} - - -export function compileField(zero: Zero, editor: ZeroEditor, field: ZeroEditorField): ZeroCompiledEditorField | undefined -{ - let component = null; - - try - { - component = markRaw(field.customComponent || zero.getFieldTypeComponent(field.fieldType)); - - if (!component) - { - return undefined; - } - } - catch - { - return undefined; - } - - let selector = selectorToArray(field.path); - - let model = { - configuration: field.configuration, - fieldType: field.fieldType, - options: field.options, - path: field.path, - component, - selector, - - getValue(model: any) - { - let currentValue = model; - let result = null; - let found = false; - - if (!selector || !selector.length || !currentValue) - { - found = true; - result = null; - } - else - { - for (var key of selector) - { - if (currentValue && key in currentValue) - { - found = true; - currentValue = currentValue[key]; - } - else - { - break; - } - } - - result = found ? currentValue : null; - } - - return result; - }, - - optional(model: any, parent: any) - { - if (typeof field.configuration.optional === 'boolean') - { - return field.configuration.optional; - } - if (typeof field.configuration.optional === 'function') - { - return field.configuration.optional(model, parent); - } - return false; - }, - - readonly(model: any, parent: any) - { - if (typeof field.configuration.readonly === 'boolean') - { - return field.configuration.readonly; - } - if (typeof field.configuration.readonly === 'function') - { - return field.configuration.readonly(model, parent); - } - return false; - }, - - hidden(model: any, parent: any) - { - if (typeof field.configuration.hidden === 'boolean') - { - return field.configuration.hidden; - } - if (typeof field.configuration.hidden === 'function') - { - return field.configuration.hidden(model, parent); - } - return false; - }, - - label: editor.onLabelCreate(field), - description: localize(editor.onDescriptionCreate(field), { hideEmpty: true }), - hideLabel: field.configuration.hideLabel, - helpText: field.configuration.helpText, - classes: field.configuration.classes, - horizontal: field.configuration.horizontal, - sort: field.configuration.sort, - columns: 12, - preview: field.configuration.preview ? { - icon: field.configuration.preview.icon || 'fth-square', - selected: field.configuration.preview.selected || (x => !!x), - value: field.configuration.preview.value || (x => x ? x : null) - } : null, - - onChange(event: ZeroCompiledEditorChangeEvent) - { - (field.configuration.changeHandlers || []).forEach(handler => - { - handler(event); - }); - } - - } as ZeroCompiledEditorField; - - return model; -} - - -export function compileEditor(zero: Zero, editor: ZeroEditor): ZeroCompiledEditor | null -{ - if (!editor) - { - return null; - } - - if (appliedExtensionsTo.indexOf(editor.alias) < 0) - { - appliedExtensionsTo.push(editor.alias); - - let extensions = zero.getSchemaExtensions(editor.alias); - - extensions.forEach(extension => - { - extension.extension(editor); - }); - } - - let model = { - alias: editor.alias, - blueprint: null, - display: editor.display, - tabs: [], - origin: editor, - meta: editor.meta - } as ZeroCompiledEditor; - - let tabs = [...editor.tabs.sort((a, b) => a.sort - b.sort)]; - - // add default tab if necessary - if (!tabs.length && (editor.fields.length || editor.fieldsets.length)) - { - let tab = new ZeroEditorTab('content', '@ui.tab_content'); - tab.fieldsets.push(new ZeroEditorCanvasBase()); - tabs.push(tab); - } - - tabs.forEach((editorTab, tabIndex) => - { - let tab = { - name: editorTab.name, - sort: editorTab.sort, - alias: editorTab.alias, - class: editorTab.class, - count: editorTab.count, - disabled: editorTab.disabled, - hidden: editorTab.hidden, - fieldsets: [], - component: editorTab.component - } as ZeroCompiledEditorTab; - - let fieldsets = []; - - // add fieldsets (which are not part of a tab) to the first tab - if (tabIndex == 0 && editor.fieldsets.length) - { - fieldsets.push(...editor.fieldsets); - } - - // push registered fieldsets - fieldsets.push(...editorTab.fieldsets.sort((a, b) => a.sort - b.sort)); - - // add default fieldset if none are defined - if (!fieldsets.length) - { - const fakeFieldset = new ZeroEditorCanvasBase(); - fakeFieldset.isFake = false; - fieldsets.push(fakeFieldset); - } - - fieldsets.forEach((editorFieldset, fieldsetIndex) => - { - let fieldset = { - sort: editorFieldset.sort, - fields: [], - hasColumns: !editorFieldset.isFake - } as ZeroCompiledEditorFieldset; - - let fields = []; - - // add fields (which are not part of a fieldset) to the first fieldset - if (fieldsetIndex == fieldsets.length - 1) - { - if (editor.fields.length) - { - fields.push(...editor.fields); - } - if (editorTab.fields.length) - { - fields.push(...editorTab.fields); - } - } - - // push registered fields - // @ts-ignore - fields.push(...editorFieldset.fields.sort((a, b) => a.configuration.sort - b.configuration.sort)); - - fields.forEach(editorField => - { - const field = compileField(zero, editor, editorField); - - if (field == null) - { - console.error('Could not find registered field type [' + editorField.fieldType + ']'); - } - else - { - fieldset.fields.push(field); - } - }); - - - if (fieldset.fields.length) - { - tab.fieldsets.push(fieldset); - } - }); - - - if (tab.fieldsets.length || tab.component != null) - { - model.tabs.push(tab); - } - }); - - - model.blueprint = createBlueprintConfig(model.alias, model); - - return model; -} - - - - -export function compileList(zero: Zero, list: List): List | null -{ - if (!list) - { - return null; - } - - if (appliedListExtensionsTo.indexOf(list.alias) < 0) - { - appliedListExtensionsTo.push(list.alias); - - let extensions = zero.getSchemaExtensions(list.alias); - - extensions.forEach(extension => - { - extension.extension(list); - }); - } - - return list; -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/editor-blueprint.ts b/zero.Backoffice.UI/app/editor/editor-blueprint.ts deleted file mode 100644 index 11329102..00000000 --- a/zero.Backoffice.UI/app/editor/editor-blueprint.ts +++ /dev/null @@ -1,170 +0,0 @@ - -import { localize } from '../services/localization'; -import { arrayRemove } from '../utils/arrays'; -import { useUiStore } from '../ui/store'; -import { ZeroCompiledEditor } from './compile'; - -function unlocked(config, model, field) -{ - if (!config || !model || !model.blueprint) - { - return true; - } - - return canUnlock(config, model, field) - && (model.blueprint.desync.indexOf(field.path) > -1 - || model.blueprint.desync.find(x => field.path.indexOf(x + '.') === 0) != null); -} - - -function canUnlock(config, model, field) -{ - if (!config || !model || !model.blueprint) - { - return false; - } - - return config.unlocked.indexOf(field.path) > -1 - || config.unlocked.find(x => field.path.indexOf(x + '.') === 0) != null; -} - - -function isBlueprintChild(config, route, model) -{ - return model && route.query.scope != 'shared' && !!model.blueprint; -} - - -function isBlueprintParent(config, route, model) -{ - return model && route.query.scope == 'shared' && !model.blueprint; -} - - -async function lock(config, model, field) -{ - arrayRemove(model.blueprint.desync, field.path); - //let blueprint = await BlueprintApi.getById(model.blueprint.id); - //return blueprint[field.path]; -} - - -function unlock(config, model, field) -{ - model.blueprint.desync.push(field.path); -} - - -/** - * [TODO] description - * @typedef {object} EditorBlueprint - * @param {string} alias - Alias which is used to match an editor - * @param {function} unlocked - Whether a field is unlocked and can be changed - * @param {function} canUnlock - Whether a field can be unlocked - * @param {EditorBlueprintField[]} fields - Fields which can be altered in synchronization - */ - -/** - * [TODO] description - * @typedef {object} EditorBlueprintField - * @param {string} path - Property path - * @param {string} label - Label which describes the property - * @param {string} description - Additional description for this property - * @param {function} synced - Whether this field is synchronized with the parent - */ - -/** - * [TODO] description - * @param {string} alias - Alias for the tab - * @returns {EditorBlueprint} - */ -export function createBlueprintConfig(alias: string, editor: ZeroCompiledEditor) -{ - const store = useUiStore(); - let blueprintAlias = editor.alias; - let canBeBlueprinted = store.blueprints.indexOf(blueprintAlias) > -1; - - if (!blueprintAlias || !canBeBlueprinted) - { - return { - alias: blueprintAlias, - isEnabled: false, - unlocked: () => true, - canUnlock: () => false, - isBlueprintParent: () => false, - isBlueprintChild: () => false, - lock: () => { }, - unlock: () => { }, - fields: [] - }; - } - - let config = { - unlocked: [] - } - - // check for blueprint availability - //config.isParent = this.value && this.$route.query.scope === 'shared'; - //config.isNewParent = config.isParent && !this.value.id; - //config.isChild = !config.isParent && this.value && !!this.value.blueprint; - - // get all editor fields - let fields = []; - let processed = ['blueprint']; - let defaults = ['name', /*'alias',*/ 'isActive', 'sort', /*'key'*/]; - - // add blueprint setting for default fields - defaults.forEach(alias => - { - processed.push(alias); - - //if (config.unlocked.indexOf(alias) > -1) - //{ - fields.push({ - path: alias, - label: localize("@ui.entityfields." + alias), - description: localize("@ui.entityfields." + alias + "_text", { hideEmpty: true }), - synced: model => !model.blueprint || model.blueprint.desync.indexOf(alias) < 0 - }); - //} - }); - - // add blueprint setting for custom fields - editor.tabs.forEach(tab => - { - tab.fieldsets.forEach(set => - { - set.fields.forEach(field => - { - let alias = field.path; - - if (processed.indexOf(alias) < 0) - { - processed.push(alias); - - if (config.unlocked.indexOf(alias) > -1 || config.unlocked.find(x => alias.indexOf(x + '.') === 0)) - { - fields.push({ - path: alias, - label: field.label, - description: field.description, - synced: model => !model.blueprint || model.blueprint.desync.indexOf(alias) < 0 - }); - } - } - }); - }); - }); - - return { - alias: blueprintAlias, - isEnabled: true, - unlocked: (model, field) => unlocked(config, model, field), - canUnlock: (model, field) => canUnlock(config, model, field), - unlock: async (model, field) => await unlock(config, model, field), - lock: async (model, field) => await lock(config, model, field), - isBlueprintParent: (route, model) => isBlueprintParent(config, route, model), - isBlueprintChild: (route, model) => isBlueprintChild(config, route, model), - fields: fields - }; -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/editor-canvas.ts b/zero.Backoffice.UI/app/editor/editor-canvas.ts deleted file mode 100644 index 8788f184..00000000 --- a/zero.Backoffice.UI/app/editor/editor-canvas.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { ZeroEditorField } from "zero/schemas"; -import { ZeroEditorFieldImpl, ZeroEditorFieldConfiguration, createFieldProxy } from "./editor-field"; -import { arrayRemove } from '../utils'; -import { Component } from "vue"; - - -export class ZeroEditorCanvasBase -{ - fields: ZeroEditorField[] = []; - sort: number = 0; - isFake: boolean = false; - - field(path: string, config?: ZeroEditorFieldConfiguration): ZeroEditorField - { - const field = new ZeroEditorFieldImpl(path, config); - - if (!config || typeof config.sort === 'undefined') - { - field.configuration.sort = (this.fields.length + 1) * 10; - } - - const proxy = createFieldProxy(field) as ZeroEditorField; - this.fields.push(proxy); - return proxy; - } - - getField(path: string): ZeroEditorField | undefined - { - return this.fields.find(x => x.path == path); - } - - removeField(path: string): void - { - let field = this.getField(path); - - if (field) - { - arrayRemove(this.fields, field); - } - } -} - - -interface OnFieldsetCreate -{ - (set: ZeroEditorCanvasBase): void; -} - - -export class ZeroEditorCanvasBaseWithFieldset extends ZeroEditorCanvasBase -{ - fieldsets: ZeroEditorCanvasBase[] = []; - - fieldset(onCreate: OnFieldsetCreate): void - { - const fieldset = new ZeroEditorCanvasBase(); - fieldset.sort = (this.fieldsets.length + 1) * 10; - this.fieldsets.push(fieldset); - onCreate(fieldset); - } -} - - -export class ZeroEditorCanvas extends ZeroEditorCanvasBaseWithFieldset -{ - tabs: ZeroEditorTab[] = []; - - tab(alias: string, name: string): ZeroEditorTab - { - const tab = new ZeroEditorTab(alias, name); - tab.sort = (this.tabs.length + 1) * 10; - this.tabs.push(tab); - return tab; - } - - getTab(alias: string): ZeroEditorTab | undefined - { - return this.tabs.find(x => x.alias == alias); - } -} - - -export class ZeroEditorTab extends ZeroEditorCanvasBaseWithFieldset -{ - alias: string; - name: string; - count: (model: any) => number | undefined = () => undefined; - hidden: (model: any) => boolean = () => false; - disabled: (model: any) => boolean = () => false; - class: string | null = null; - component: Component | null = null; - - constructor(alias: string, name: string) - { - super(); - this.alias = alias; - this.name = name; - } - - -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/editor-field.ts b/zero.Backoffice.UI/app/editor/editor-field.ts deleted file mode 100644 index 7f2cf8e9..00000000 --- a/zero.Backoffice.UI/app/editor/editor-field.ts +++ /dev/null @@ -1,205 +0,0 @@ -import { Component, markRaw } from "vue"; -import { ZeroEditorField } from "zero/schemas"; -import { extendObject } from '../utils/objects'; - -export declare type BooleanExpression = (model: any, value: any) => boolean; - - -export const createFieldProxy = (field: ZeroEditorFieldImpl) => new Proxy(field, { - get: function (target: ZeroEditorFieldImpl, prop: string | symbol, receiver: any): any - { - // handle internals - if (prop in target) - { - // @ts-ignore - return target[prop]; - } - - // handle dynamic fields + extensions - return (args: any) => - { - target.fieldType = prop; - target.options = args; - return target; - }; - } -})// as EditorField; - - -// @ts-ignore -export class ZeroEditorFieldImpl implements ZeroEditorField -{ - path: string; - configuration: ZeroEditorFieldConfiguration; - fieldType: string | symbol; - options?: any; - customComponent?: Component; - - constructor(path: string, config?: ZeroEditorFieldConfiguration) - { - this.path = path; - this.configuration = extendObject(createDefaultFieldConfiguration(), config || {}) as ZeroEditorFieldConfiguration; - } - - - /** - * Set this field as optional - * @param {function|boolean} [condition] - Optionally only require this field when a condition is fulfilled or reset the required state with true/false - */ - setOptional(condition: Function | boolean): ZeroEditorField - { - this.configuration.optional = condition; - return this; - } - - /** - * Whether the input next to the headline or below - * @param {boolean} isHorizontal - * @returns {EditorField} - */ - setHorizontal(isHorizontal: boolean): ZeroEditorField - { - this.configuration.horizontal = !isHorizontal; - return this; - } - - - /** - * Set this field to disabled - */ - setReadonly(condition: Function | boolean): ZeroEditorField - { - this.configuration.readonly = condition; - return this; - } - - - /** - * Conditionally hide this field - * @param {function} condition - function which returns a boolean and gets passed the current model - */ - setHidden(condition: Function | boolean): ZeroEditorField - { - this.configuration.hidden = condition; - return this; - } - - - /** - * Set a custom component for a field - * @param {Component} component - The component to render (can be an async component too) - * @param {T} [options] = Custom options to pass to this editor - */ - component(component: Component, options?: any): ZeroEditorField - { - this.customComponent = markRaw(component); - this.options = options; - return this; - } - - - /** - * The expression argument is called when the value of the field changes - * @param {function} callback - function which is called - */ - onChange(callback: Function): ZeroEditorField - { - this.configuration.changeHandlers.push(callback); - return this; - } -} - - - -export function createDefaultFieldConfiguration(): ZeroEditorFieldConfiguration -{ - return { - optional: false, - readonly: false, - hidden: false, - label: null, - hideLabel: false, - description: null, - helpText: null, - classes: null, - horizontal: false, - sort: 0, - preview: undefined, - changeHandlers: [], - alsoFor: [] - } as ZeroEditorFieldConfiguration; -} - - -export interface ZeroEditorFieldConfiguration -{ - /** - * Whether this field is optional or required (additional validation is done on the server) - */ - optional?: Function | boolean; - /** - * Whether this field is readonly and can't be changed - */ - readonly?: Function | boolean; - /** - * Conditionally hide the field - */ - hidden?: Function | boolean; - /** - * A custom label for this field (otherwise it's generated via `onLabelCreate`) - **/ - label?: string | null, - /** - * Hide the field label - **/ - hideLabel?: boolean, - /** - * A custom description for this field (otherwise it's generated via `onDescriptionCreate`) - **/ - description?: string | null, - /** - * Display a help text below the field - **/ - helpText?: string | null, - /** - * Append HTML class to the generated property - **/ - classes?: string | null, - /** - * Whether to render the label next to the input - **/ - horizontal?: boolean, - /** - * Sort order for fields within the editor canvas - **/ - sort?: number, - /** - * Sort order for fields within the editor canvas - **/ - preview?: ZeroEditorFieldFilterPreview, - /** - * Handlers which get called on value change - **/ - changeHandlers?: Array, - /** - * This field will also handle error output for the other defined fields - **/ - alsoFor?: string[] | string | null, -} - - -export interface ZeroEditorFieldFilterPreview -{ - /** - * Icon which is displayed next to the filter option - */ - icon?: string; - /** - * Checks whether the selected value for the filter option is valid and if it should be marked as selected - */ - selected?: (value: any, model: any) => boolean; - /** - * Renders the filter value which is previewed - */ - value?: (value: any, model: any) => string; -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/editor-types.d.ts b/zero.Backoffice.UI/app/editor/editor-types.d.ts deleted file mode 100644 index 4a45ac4c..00000000 --- a/zero.Backoffice.UI/app/editor/editor-types.d.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { Component } from "vue"; -import { ZeroEditorFieldConfiguration } from "./editor-field"; - -declare module 'zero/schemas' -{ - export interface FieldSupportsMaxLength - { - maxLength?: number; - } - - - export interface FieldSupportsPlaceholder - { - placeholder?: string | null; - } - - - export type TextFieldOptions = FieldSupportsMaxLength | FieldSupportsPlaceholder; - export type NumberFieldOptions = FieldSupportsMaxLength | FieldSupportsPlaceholder; - - - export type ZeroEditorDisplay = 'tabs' | 'boxes'; - - - export interface ZeroEditorField - { - /** - * Model path - */ - path: string; - - /** - * Field configuration - */ - configuration: ZeroEditorFieldConfiguration; - - /** - * Type of the field which has to be registered in the zero runtime - */ - fieldType: string | symbol; - - /** - * Custom options which are passed to the component - */ - options?: any; - - /** - * Set a custom render component for this field - */ - customComponent?: Component; - - /** - * Set this field as optional - * @param {function|boolean} [condition] - Optionally only require this field when a condition is fulfilled or reset the required state with true/false - */ - setOptional(condition: Function | boolean): ZeroEditorField; - - /** - * Whether the input next to the headline or below - * @param {boolean} isHorizontal - * @returns {EditorField} - */ - setHorizontal(isHorizontal: boolean): ZeroEditorField; - - /** - * Set this field to disabled - */ - setReadonly(condition: Function | boolean): ZeroEditorField; - - /** - * Conditionally hide this field - * @param {function} condition - function which returns a boolean and gets passed the current model - */ - setHidden(condition: Function | boolean): ZeroEditorField; - - /** - * Set a custom component for a field - * @param {Component} component - The component to render (can be an async component too) - * @param {T} [options] = Custom options to pass to this editor - */ - component(component: Component, options?: any): ZeroEditorField; - - /** - * The expression argument is called when the value of the field changes - * @param {function} callback - function which is called - */ - onChange(callback: Function): ZeroEditorField; - } -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/editor.ts b/zero.Backoffice.UI/app/editor/editor.ts deleted file mode 100644 index 4033e09a..00000000 --- a/zero.Backoffice.UI/app/editor/editor.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { Component } from "vue"; -import { ZeroEditorField, ZeroSchema, ZeroEditorDisplay } from "zero/schemas"; -import { ZeroEditorCanvas } from "./editor-canvas"; - -export class ZeroEditor extends ZeroEditorCanvas implements ZeroSchema -{ - alias: string; - - resourcePrefix?: string; - - system: boolean = false; - - display: ZeroEditorDisplay = 'tabs'; - - meta: ZeroEditorMeta = {}; - - onLabelCreate = (field: ZeroEditorField): string => - { - return field.configuration.label || (this.resourcePrefix ? this.resourcePrefix + field.path : '@nolabel[' + field.path + ']'); - }; - - onDescriptionCreate = (field: ZeroEditorField): string | null => - { - return field.configuration.description || (this.resourcePrefix ? this.resourcePrefix + field.path + '_text' : '@nodesc[' + field.path + ']'); - }; - - constructor(alias: string) - { - super(); - this.alias = alias; - } -} - - -export interface ZeroEditorMeta -{ - getUrl?: (model: any) => Promise; - allowUrlPreview: boolean; -} - - -export class ZeroModuleEditor extends ZeroEditor -{ - _preview: ZeroModuleEditorPreview | null = null; - - constructor(alias: string) - { - super(alias); - } - - preview(component: Component, buildProps?: (model: any) => any, options?: ZeroModuleEditorPreviewOptions): void - { - this._preview = { - component, - buildProps: buildProps || (_ => ({})), - options: options || {} - }; - } - - getPreview(): ZeroModuleEditorPreview | null - { - return this._preview; - } -} - -export interface ZeroModuleEditorPreviewOptions -{ - canEdit?: boolean; - hideLabel?: boolean; -} - -export interface ZeroModuleEditorPreview -{ - component: Component; - buildProps?: (model: any) => any; - options?: ZeroModuleEditorPreviewOptions; -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/checklist.vue b/zero.Backoffice.UI/app/editor/fields/checklist.vue deleted file mode 100644 index 5e9e5a83..00000000 --- a/zero.Backoffice.UI/app/editor/fields/checklist.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/colorPicker.vue b/zero.Backoffice.UI/app/editor/fields/colorPicker.vue deleted file mode 100644 index 4398f1a5..00000000 --- a/zero.Backoffice.UI/app/editor/fields/colorPicker.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/createFields.ts b/zero.Backoffice.UI/app/editor/fields/createFields.ts deleted file mode 100644 index 1419f5b1..00000000 --- a/zero.Backoffice.UI/app/editor/fields/createFields.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { defineAsyncComponent } from "vue"; -import { ZeroPluginOptions } from "../../core"; - - -export default function createFields(app: ZeroPluginOptions): void -{ - app.fieldType('text', defineAsyncComponent(() => import('./text.vue'))); - app.fieldType('number', defineAsyncComponent(() => import('./number.vue'))); - app.fieldType('password', defineAsyncComponent(() => import('./password.vue'))); - app.fieldType('toggle', defineAsyncComponent(() => import('./toggle.vue'))); - app.fieldType('rte', defineAsyncComponent(() => import('./rte.vue'))); - app.fieldType('output', defineAsyncComponent(() => import('./output.vue'))); - app.fieldType('state', defineAsyncComponent(() => import('./state.vue'))); - app.fieldType('textarea', defineAsyncComponent(() => import('./textarea.vue'))); - app.fieldType('select', defineAsyncComponent(() => import('./select.vue'))); - app.fieldType('tags', defineAsyncComponent(() => import('./tags.vue'))); - app.fieldType('checklist', defineAsyncComponent(() => import('./checklist.vue'))); - app.fieldType('inputlist', defineAsyncComponent(() => import('./inputlist.vue'))); - app.fieldType('nested', defineAsyncComponent(() => import('./nested.vue'))); - app.fieldType('datePicker', defineAsyncComponent(() => import('./datePicker.vue'))); - app.fieldType('dateRangePicker', defineAsyncComponent(() => import('./dateRangePicker.vue'))); - app.fieldType('timePicker', defineAsyncComponent(() => import('./timePicker.vue'))); - app.fieldType('iconPicker', defineAsyncComponent(() => import('./iconPicker.vue'))); - app.fieldType('colorPicker', defineAsyncComponent(() => import('./colorPicker.vue'))); - app.fieldType('culturePicker', defineAsyncComponent(() => import('./culturePicker.vue'))); - app.fieldType('radio', defineAsyncComponent(() => import('./radio.vue'))); - app.fieldType('file', defineAsyncComponent(() => import('./file.vue'))); -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/culturePicker.vue b/zero.Backoffice.UI/app/editor/fields/culturePicker.vue deleted file mode 100644 index 3612959d..00000000 --- a/zero.Backoffice.UI/app/editor/fields/culturePicker.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/datePicker.vue b/zero.Backoffice.UI/app/editor/fields/datePicker.vue deleted file mode 100644 index 61523227..00000000 --- a/zero.Backoffice.UI/app/editor/fields/datePicker.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/dateRangePicker.vue b/zero.Backoffice.UI/app/editor/fields/dateRangePicker.vue deleted file mode 100644 index 97872fdb..00000000 --- a/zero.Backoffice.UI/app/editor/fields/dateRangePicker.vue +++ /dev/null @@ -1,54 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/editor-field-extensions.d.ts b/zero.Backoffice.UI/app/editor/fields/editor-field-extensions.d.ts deleted file mode 100644 index f79c879e..00000000 --- a/zero.Backoffice.UI/app/editor/fields/editor-field-extensions.d.ts +++ /dev/null @@ -1,261 +0,0 @@ -import { ZeroEditor } from "../editor"; - -declare module 'zero/schemas' -{ - export interface ZeroEditorField - { - /** - * Render a text input - * @param {TextFieldOptions} [options] - Custom options - */ - text(options?: TextFieldOptions): ZeroEditorField; - - /** - * Render a text area - * @param {TextFieldOptions} [options] - Custom options - */ - textarea(options?: TextFieldOptions): ZeroEditorField; - - /** - * Render a number input - * @param {NumberFieldOptions} [options] - Custom options - */ - number(options?: NumberFieldOptions): ZeroEditorField; - - /** - * Render a password input - * @param {TextFieldOptions} [options] - Custom options - */ - password(options?: TextFieldOptions): ZeroEditorField; - - /** - * Render a toggle - * @param {ToggleFieldOptions} [options] - Custom options - */ - toggle(options?: ToggleFieldOptions): ZeroEditorField; - - /** - * Render a rich-text-editor - * @param {RteFieldOptions} [options] - Custom options - */ - rte(options?: RteFieldOptions): ZeroEditorField; - - /** - * Output a value - * @param {OutputFieldOptions} [options] - Custom options - */ - output(options?: OutputFieldOptions): ZeroEditorField; - - /** - * Link to a file - * @param {FileFieldOptions} [options] - Custom options - */ - file(options?: FileFieldOptions): ZeroEditorField; - - /** - * Select one of the predefined values - * @param {StateFieldOptions} options - Custom options - */ - state(options: StateFieldOptions): ZeroEditorField; - - /** - * Select one of the predefined values - * @param {RadioFieldOptions} options - Custom options - */ - radio(options: RadioFieldOptions): ZeroEditorField; - - /** - * Select one of the predefined values - * @param {SelectFieldOptions} options - Custom options - */ - select(options: SelectFieldOptions): ZeroEditorField; - - /** - * Create a tag list - * @param {TagFieldOptions} options - Custom options - */ - tags(options?: TagFieldOptions): ZeroEditorField; - - /** - * Create a list of checkboxes - * @param {ChecklistFieldOptions} options - Custom options - */ - checklist(options: ChecklistFieldOptions): ZeroEditorField; - - /** - * Create a list of inputs - * @param {ChecklistFieldOptions} options - Custom options - */ - inputlist(options?: InputlistFieldOptions): ZeroEditorField; - - /** - * Create a nested editor - * @param {NestedFieldOptions} options - Custom options - */ - nested(options: NestedFieldOptions): ZeroEditorField; - - /** - * Create a date picker - * @param {DatePickerFieldOptions} options - Custom options - */ - datePicker(options?: DatePickerFieldOptions): ZeroEditorField; - - /** - * Create a date range picker - * @param {DateRangePickerFieldOptions} options - Custom options - */ - dateRangePicker(options?: DateRangePickerFieldOptions): ZeroEditorField; - - /** - * Create a time picker - * @param {TimePickerFieldOptions} options - Custom options - */ - timePicker(options?: TimePickerFieldOptions): ZeroEditorField; - - /** - * Create an icon picker - * @param {DatePickerFieldOptions} options - Custom options - */ - iconPicker(options?: IconPickerFieldOptions): ZeroEditorField; - - /** - * Create a color picker - */ - colorPicker(): ZeroEditorField; - - /** - * Create a culture picker - */ - culturePicker(): ZeroEditorField; - } - - - export interface IconPickerFieldOptions - { - set?: string; - colors?: boolean; - } - - export interface DateRangePickerFieldOptions extends DatePickerFieldOptions - { - inline?: boolean; - fromLabel?: string; - toLabel?: string; - } - - export interface DatePickerFieldOptions - { - format?: string; - pickTime?: boolean; - maxDate?: string | Date; - minDate?: string | Date; - amPm?: boolean; - } - - export interface TimePickerFieldOptions - { - format?: string; - amPm?: boolean; - } - - export interface ToggleFieldOptions - { - negative?: boolean | null; - onContent?: string | null; - offContent?: string | null; - } - - export type RteFieldOptions = FieldSupportsMaxLength | FieldSupportsPlaceholder | FieldSupportsSetup; - - export interface FieldSupportsSetup - { - setup: boolean; - } - - export interface OutputFieldOptions - { - html?: boolean; - render?: (value: any, model: any) => string; - } - - export interface FileFieldOptions - { - name?: string | ((value: any, model: any) => string); - extension?: string | ((value: any, model: any) => string); - icon?: string | ((value: any, model: any) => string); - path?: string | ((value: any, model: any) => string); - visiblePath?: string | ((value: any, model: any) => string); - } - - export interface StateFieldOptions - { - items: SelectFieldItem[]; - } - - export interface RadioFieldOptions - { - horizontal?: boolean | null; - items: ExtendedSelectFieldItem[]; - } - - export interface SelectFieldOptions - { - items: SelectFieldItem[] | ((model: any) => SelectFieldItem[]); - emptyOption?: boolean | null; - } - - export interface SelectFieldItem - { - value: any; - label: string; - disabled?: boolean; - } - - export interface ExtendedSelectFieldItem extends SelectFieldItem - { - description?: string; - icon?: string; - } - - export interface TagFieldOptions - { - limit?: number; - maxTagLength?: number; - autocompleteScope?: string; - } - - export interface ChecklistFieldOptions - { - items: SelectFieldItem[]; - limit?: number; - reverse?: boolean | null; - labelKey?: string; - descriptionKey?: string; - idKey?: string; - } - - export interface InputlistFieldOptions - { - limit?: number; - maxItemLength?: number; - addLabel?: string; - } - - export interface NestedFieldOptions - { - editor: string | ZeroEditor; - limit?: number; - title?: string; - itemLabel?: ((value: any, model: any) => string); - itemDescription?: ((value: any, model: any) => string); - itemIcon?: string | ((value: any, model: any) => string); - width?: number; - template?: any; - addLabel?: string; - } - - export interface PickerFieldOptions - { - limit?: number; - } -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/file.vue b/zero.Backoffice.UI/app/editor/fields/file.vue deleted file mode 100644 index 6f66f824..00000000 --- a/zero.Backoffice.UI/app/editor/fields/file.vue +++ /dev/null @@ -1,114 +0,0 @@ - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/iconPicker.vue b/zero.Backoffice.UI/app/editor/fields/iconPicker.vue deleted file mode 100644 index e815c9e6..00000000 --- a/zero.Backoffice.UI/app/editor/fields/iconPicker.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/inputlist.vue b/zero.Backoffice.UI/app/editor/fields/inputlist.vue deleted file mode 100644 index 2d39d321..00000000 --- a/zero.Backoffice.UI/app/editor/fields/inputlist.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/modules.vue b/zero.Backoffice.UI/app/editor/fields/modules.vue deleted file mode 100644 index e4db9789..00000000 --- a/zero.Backoffice.UI/app/editor/fields/modules.vue +++ /dev/null @@ -1,23 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/nested.vue b/zero.Backoffice.UI/app/editor/fields/nested.vue deleted file mode 100644 index 4ab2c250..00000000 --- a/zero.Backoffice.UI/app/editor/fields/nested.vue +++ /dev/null @@ -1,195 +0,0 @@ - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/number.vue b/zero.Backoffice.UI/app/editor/fields/number.vue deleted file mode 100644 index d7a4f482..00000000 --- a/zero.Backoffice.UI/app/editor/fields/number.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/output.vue b/zero.Backoffice.UI/app/editor/fields/output.vue deleted file mode 100644 index bd8e8eab..00000000 --- a/zero.Backoffice.UI/app/editor/fields/output.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/password.vue b/zero.Backoffice.UI/app/editor/fields/password.vue deleted file mode 100644 index 214ea6ca..00000000 --- a/zero.Backoffice.UI/app/editor/fields/password.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/radio.vue b/zero.Backoffice.UI/app/editor/fields/radio.vue deleted file mode 100644 index 3f6ab6a4..00000000 --- a/zero.Backoffice.UI/app/editor/fields/radio.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/rte.vue b/zero.Backoffice.UI/app/editor/fields/rte.vue deleted file mode 100644 index e348da8f..00000000 --- a/zero.Backoffice.UI/app/editor/fields/rte.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/select.vue b/zero.Backoffice.UI/app/editor/fields/select.vue deleted file mode 100644 index 6ff22b54..00000000 --- a/zero.Backoffice.UI/app/editor/fields/select.vue +++ /dev/null @@ -1,97 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/state.vue b/zero.Backoffice.UI/app/editor/fields/state.vue deleted file mode 100644 index 57e98b78..00000000 --- a/zero.Backoffice.UI/app/editor/fields/state.vue +++ /dev/null @@ -1,14 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/tags.vue b/zero.Backoffice.UI/app/editor/fields/tags.vue deleted file mode 100644 index c96286c4..00000000 --- a/zero.Backoffice.UI/app/editor/fields/tags.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/text.vue b/zero.Backoffice.UI/app/editor/fields/text.vue deleted file mode 100644 index 27e2e579..00000000 --- a/zero.Backoffice.UI/app/editor/fields/text.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/textarea.vue b/zero.Backoffice.UI/app/editor/fields/textarea.vue deleted file mode 100644 index 23cd267f..00000000 --- a/zero.Backoffice.UI/app/editor/fields/textarea.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/timePicker.vue b/zero.Backoffice.UI/app/editor/fields/timePicker.vue deleted file mode 100644 index bab873ae..00000000 --- a/zero.Backoffice.UI/app/editor/fields/timePicker.vue +++ /dev/null @@ -1,24 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/fields/toggle.vue b/zero.Backoffice.UI/app/editor/fields/toggle.vue deleted file mode 100644 index e7e2098c..00000000 --- a/zero.Backoffice.UI/app/editor/fields/toggle.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/plugin.ts b/zero.Backoffice.UI/app/editor/plugin.ts deleted file mode 100644 index 97f28df5..00000000 --- a/zero.Backoffice.UI/app/editor/plugin.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ZeroPlugin, ZeroPluginOptions } from '../core'; -import createFields from './fields/createFields'; - -export default { - name: "zero.editor", - - install(app: ZeroPluginOptions) - { - createFields(app); - } -} as ZeroPlugin; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/register.ts b/zero.Backoffice.UI/app/editor/register.ts deleted file mode 100644 index bb9b08ac..00000000 --- a/zero.Backoffice.UI/app/editor/register.ts +++ /dev/null @@ -1,11 +0,0 @@ - -import { App, defineAsyncComponent } from 'vue'; - -export default function (app: App) -{ - app.component('ui-editor', defineAsyncComponent(() => import('./ui-editor.vue'))); - app.component('ui-editor-component', defineAsyncComponent(() => import('./ui-editor-component.vue'))); - app.component('ui-editor-meta', defineAsyncComponent(() => import('./ui-editor-meta.vue'))); - app.component('ui-editor-header', defineAsyncComponent(() => import('./ui-editor-header.vue'))); - app.component('ui-editor-page', defineAsyncComponent(() => import('./ui-editor-page.vue'))); -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/ui-editor-component.vue b/zero.Backoffice.UI/app/editor/ui-editor-component.vue deleted file mode 100644 index 324c5e77..00000000 --- a/zero.Backoffice.UI/app/editor/ui-editor-component.vue +++ /dev/null @@ -1,151 +0,0 @@ -- - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/ui-editor-header.vue b/zero.Backoffice.UI/app/editor/ui-editor-header.vue deleted file mode 100644 index 691bd68c..00000000 --- a/zero.Backoffice.UI/app/editor/ui-editor-header.vue +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/ui-editor-meta.vue b/zero.Backoffice.UI/app/editor/ui-editor-meta.vue deleted file mode 100644 index b2a21a01..00000000 --- a/zero.Backoffice.UI/app/editor/ui-editor-meta.vue +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/ui-editor-overlay.vue b/zero.Backoffice.UI/app/editor/ui-editor-overlay.vue deleted file mode 100644 index 06bd973c..00000000 --- a/zero.Backoffice.UI/app/editor/ui-editor-overlay.vue +++ /dev/null @@ -1,79 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/ui-editor-page.vue b/zero.Backoffice.UI/app/editor/ui-editor-page.vue deleted file mode 100644 index 485b3e0f..00000000 --- a/zero.Backoffice.UI/app/editor/ui-editor-page.vue +++ /dev/null @@ -1,162 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/ui-editor.scss b/zero.Backoffice.UI/app/editor/ui-editor.scss deleted file mode 100644 index 6623dd5d..00000000 --- a/zero.Backoffice.UI/app/editor/ui-editor.scss +++ /dev/null @@ -1,167 +0,0 @@ - -.editor -{ - width: 100%; - max-width: 960px; - margin: 0 auto; - padding: 0 var(--padding) var(--padding); - - &:not(.display-tabs), &.hide-tabs - { - .ui-tabs-list - { - display: none; - } - - .ui-tab, .editor-infos - { - margin-top: 0; - } - - .editor-aside - { - margin-top: 0; - } - - .ui-tab.ui-box:first-child - { - border-top-left-radius: var(--radius); - } - } - - &.has-sidebar - { - max-width: 1580px; - display: grid; - grid-template-columns: minmax(auto, 1fr) 260px; - grid-gap: 0 var(--padding); - } -} - -.editor.has-below .ui-tab.ui-box -{ - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; -} - -.editor.display-boxes .ui-tab -{ - display: inherit !important; - - &.is-hidden - { - display: none !important; - } -} - -.editor.display-boxes .ui-tab + .ui-tab -{ - margin-top: var(--padding-m); -} - -.editor-tab-headline -{ - font-size: var(--font-size-l) !important; - font-weight: 900 !important; - margin-bottom: var(--padding) !important; -} - -.editor-tabs -{ - .ui-tabs-list - { - padding: 0; - margin-bottom: 0; - } - - .ui-tab - { - margin: 0; - } -} - -.editor-aside -{ - margin-top: 58px; -} - -.editor-infos -{ - display: block; - //border-top: 1px solid var(--color-line-onbg); -} - -.theme-dark .editor-infos -{ - border-top: none; -} - -.editor-infos .ui-box -{ - margin: 0; - border-top-left-radius: 0; - border-top-right-radius: 0; - display: flex; - flex-direction: column; - gap: var(--padding-xs); -} - -.editor-infos .ui-property -{ - flex-direction: column; - border-top: none; - margin: 0; - padding: 0; - grid-gap: 6px !important; -} - -.editor-infos .ui-property-label -{ - font-size: var(--font-size-s); - font-weight: 400; - color: var(--color-text-dim); - width: 100%; - padding-right: 0; -} - -.editor-infos .ui-property-content -{ - font-size: var(--font-size-s); - font-weight: 400; - color: var(--color-text-dim); -} - -.editor-infos-aside .ui-property + .ui-property -{ - margin-top: 0; - padding-top: 0; - border-top: none; -} - -.editor-aside-links -{ - display: flex; - width: 100%; - margin-bottom: -5px; -} - -.editor-aside-links .ui-linktext -{ - color: var(--color-text-dim); - font-size: var(--font-size-s); - text-decoration: none !important; - position: relative; -} - -.editor-aside-links .ui-linktext + .ui-linktext -{ - margin-left: 20px; -} - -.editor-aside-links .ui-linktext + .ui-linktext:before -{ - content: '·'; - position: absolute; - left: -12px; - top: -1px; -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/editor/ui-editor.vue b/zero.Backoffice.UI/app/editor/ui-editor.vue deleted file mode 100644 index a2975097..00000000 --- a/zero.Backoffice.UI/app/editor/ui-editor.vue +++ /dev/null @@ -1,147 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/env.d.ts b/zero.Backoffice.UI/app/env.d.ts deleted file mode 100644 index 3bda204a..00000000 --- a/zero.Backoffice.UI/app/env.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -/// - -declare module 'vue' { - import { CompatVue } from '@vue/runtime-dom' - const Vue: CompatVue - export default Vue - export * from '@vue/runtime-dom' -} - -declare module '*.vue' { - import { DefineComponent } from 'vue' - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types - const component: DefineComponent<{}, {}, any> - export default component -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/index.ts b/zero.Backoffice.UI/app/index.ts deleted file mode 100644 index e0c3aac7..00000000 --- a/zero.Backoffice.UI/app/index.ts +++ /dev/null @@ -1,2 +0,0 @@ - -export * from './core'; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/main.ts b/zero.Backoffice.UI/app/main.ts deleted file mode 100644 index 9036f775..00000000 --- a/zero.Backoffice.UI/app/main.ts +++ /dev/null @@ -1,12 +0,0 @@ - -import { createApp } from 'vue'; -import { createPinia } from 'pinia'; -import App from './app.vue'; -import { createZeroPlugin } from './core'; -import './axios.config.ts'; - -const app = createApp(App) - .use(createPinia()) - .use(createZeroPlugin()); - -app.mount('#app'); \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/applications/api.ts b/zero.Backoffice.UI/app/modules/applications/api.ts deleted file mode 100644 index 79a11eab..00000000 --- a/zero.Backoffice.UI/app/modules/applications/api.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { get, post, put, del, ApiRequestConfig, ApiRequestQuery } from '../../services/request'; - -export default { - - getEmpty: async (flavor?: string, config?: ApiRequestConfig) => await get("applications/empty", { ...config, params: { flavor }, system: true }), - - getById: async (id: string, changeVector?: string, config?: ApiRequestConfig) => await get('applications/' + id, { ...config, params: { changeVector }, system: true }), - - getByQuery: async (query: ApiRequestQuery, config?: ApiRequestConfig) => await get('applications', { ...config, params: { ...query }, system: true }), - - create: async (model: any, config?: ApiRequestConfig) => await post('applications', model, { ...config, system: true }), - - update: async (model: any, config?: ApiRequestConfig) => await put('applications/' + model.id, model, { ...config, system: true }), - - delete: async (id: string, config?: ApiRequestConfig) => await del('applications/' + id, null, { ...config, system: true }), -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/applications/application.vue b/zero.Backoffice.UI/app/modules/applications/application.vue deleted file mode 100644 index 6a7c02a0..00000000 --- a/zero.Backoffice.UI/app/modules/applications/application.vue +++ /dev/null @@ -1,11 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/applications/applications.vue b/zero.Backoffice.UI/app/modules/applications/applications.vue deleted file mode 100644 index 6f144708..00000000 --- a/zero.Backoffice.UI/app/modules/applications/applications.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/applications/index.ts b/zero.Backoffice.UI/app/modules/applications/index.ts deleted file mode 100644 index 5ba38ba8..00000000 --- a/zero.Backoffice.UI/app/modules/applications/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import api from './api'; -//import editor from './editor'; -//import list from './list'; -import plugin from './plugin'; - -export { - api as applicationApi, - //editor as countrySchema, - //list as countryListSchema, - plugin as applicationPlugin -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/applications/partials/application-items.vue b/zero.Backoffice.UI/app/modules/applications/partials/application-items.vue deleted file mode 100644 index dcac93fe..00000000 --- a/zero.Backoffice.UI/app/modules/applications/partials/application-items.vue +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/applications/plugin.ts b/zero.Backoffice.UI/app/modules/applications/plugin.ts deleted file mode 100644 index 6e2094ac..00000000 --- a/zero.Backoffice.UI/app/modules/applications/plugin.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ZeroPlugin, ZeroPluginOptions } from '../../core'; -import { defineAsyncComponent } from 'vue'; - -//const Picker = () => import('./ui-countrypicker.vue'); -//const Page = () => import('./_page.vue'); - -export default { - name: "zero.applications", - - install(app: ZeroPluginOptions) - { - app.route({ name: 'applications', path: '/settings/applications', component: () => import('./applications.vue') }); - app.route({ name: 'applications-edit', path: '/settings/applications/edit/:id', component: () => import('./application.vue'), props: true }); - - app.schema('applications:edit', () => import('./schemas/editor')); - } -} as ZeroPlugin; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/applications/schemas/editor.ts b/zero.Backoffice.UI/app/modules/applications/schemas/editor.ts deleted file mode 100644 index be0c0505..00000000 --- a/zero.Backoffice.UI/app/modules/applications/schemas/editor.ts +++ /dev/null @@ -1,22 +0,0 @@ - -import { ZeroEditor } from "../../../editor/editor"; - -const editor = new ZeroEditor('applications'); - -editor.resourcePrefix = '@application.fields.'; - -const general = editor.tab('general', '@ui.tab_general'); -const domains = editor.tab('domains', '@application.tab_domains'); -domains.count = x => x.domains && x.domains.length; - -//const features = editor.tab('features', '@application.tab_features', x => x.features.length); - -general.field('name', { label: '@ui.name' }).text({ maxLength: 50 }); -general.field('fullName', { optional: true }).text({ maxLength: 120 }); -general.field('email').text({ maxLength: 120 }); -general.field('imageId').image(); -general.field('iconId', { optional: true }).image(); -domains.field('domains', { helpText: '@application.fields.domains_help' }).inputlist({ limit: 10, maxItemLength: 320, addLabel: '@application.fields.domains_add' }); -//features.field('features', { hideLabel: true }).custom(ApplicationFeatures); - -export default editor; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/applications/store.ts b/zero.Backoffice.UI/app/modules/applications/store.ts deleted file mode 100644 index 3250fd94..00000000 --- a/zero.Backoffice.UI/app/modules/applications/store.ts +++ /dev/null @@ -1,19 +0,0 @@ - -import { defineStore } from 'pinia'; -import api from './api'; - -export const useAppStore = defineStore('zero.apps', { - state: () => ({ - appId: null, - applications: [] - }), - - actions: { - async setup() - { - const response = await api.getByQuery({ pageSize: 1000 }); - this.applications = response.data; - this.appId = this.applications[0].id; - } - } -}); \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/countries/api.ts b/zero.Backoffice.UI/app/modules/countries/api.ts deleted file mode 100644 index 412ed302..00000000 --- a/zero.Backoffice.UI/app/modules/countries/api.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { get, post, put, del, ApiRequestConfig, ApiRequestQuery } from '../../services/request'; - -export default { - - getEmpty: (flavor?: string, config?: ApiRequestConfig) => get("countries/empty", { ...config, params: { flavor } }), - - getById: (id: string, changeVector?: string, config?: ApiRequestConfig) => get('countries/' + id, { ...config, params: { changeVector } }), - - getByQuery: (query: ApiRequestQuery, config?: ApiRequestConfig) => get('countries', { ...config, params: { ...query } }), - - create: (model: any, config?: ApiRequestConfig) => post('countries', model, config), - - update: (model: any, config?: ApiRequestConfig) => put('countries/' + model.id, model, config), - - delete: (id: string, config?: ApiRequestConfig) => del('countries/' + id, null, config), -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/countries/countries.vue b/zero.Backoffice.UI/app/modules/countries/countries.vue deleted file mode 100644 index d2cc338b..00000000 --- a/zero.Backoffice.UI/app/modules/countries/countries.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/countries/country.vue b/zero.Backoffice.UI/app/modules/countries/country.vue deleted file mode 100644 index 416bf57e..00000000 --- a/zero.Backoffice.UI/app/modules/countries/country.vue +++ /dev/null @@ -1,11 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/countries/editor-countrypicker.vue b/zero.Backoffice.UI/app/modules/countries/editor-countrypicker.vue deleted file mode 100644 index 607dc596..00000000 --- a/zero.Backoffice.UI/app/modules/countries/editor-countrypicker.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/countries/index.ts b/zero.Backoffice.UI/app/modules/countries/index.ts deleted file mode 100644 index 821d5ef4..00000000 --- a/zero.Backoffice.UI/app/modules/countries/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import api from './api'; -import editor from './schemas/editor'; -import list from './schemas/list'; -import plugin from './plugin'; - -export { - api as countryApi, - editor as countrySchema, - list as countryListSchema, - plugin as countryPlugin -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/countries/plugin.ts b/zero.Backoffice.UI/app/modules/countries/plugin.ts deleted file mode 100644 index f40de37b..00000000 --- a/zero.Backoffice.UI/app/modules/countries/plugin.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { ZeroPlugin, ZeroPluginOptions } from '../../core'; -import { defineAsyncComponent } from 'vue'; - -export default { - name: "zero.countries", - - install(app: ZeroPluginOptions) - { - app.vue.component('ui-countrypicker', defineAsyncComponent(() => import('./ui-countrypicker.vue'))); - - app.fieldType('countryPicker', defineAsyncComponent(() => import('./editor-countrypicker.vue'))); - - app.route({ name: 'countries', path: '/settings/countries', component: () => import('./countries.vue') }); - app.route({ name: 'countries-edit', path: '/settings/countries/edit/:id?', component: () => import('./country.vue'), props: true }); - - app.schema('countries', () => import('./schemas/list')); - app.schema('countries:edit', () => import('./schemas/editor')); - } -} as ZeroPlugin; - - -declare module 'zero/schemas' -{ - export interface ZeroEditorField - { - /** - * Renders a country picker - * @param {PickerFieldOptions} [options] - Custom options - */ - countryPicker(options?: PickerFieldOptions): ZeroEditorField; - } -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/countries/schemas/editor.ts b/zero.Backoffice.UI/app/modules/countries/schemas/editor.ts deleted file mode 100644 index e788d604..00000000 --- a/zero.Backoffice.UI/app/modules/countries/schemas/editor.ts +++ /dev/null @@ -1,13 +0,0 @@ - -import { ZeroEditor } from "../../../editor/editor"; -import { formatDate } from '../../../utils/dates'; - -const editor = new ZeroEditor('countries'); - -editor.resourcePrefix = '@country.fields.'; - -editor.field('name').text({ maxLength: 120 }); -editor.field('code').text({ maxLength: 2 }); -editor.field('isPreferred', { optional: true, horizontal: true }).toggle(); - -export default editor; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/countries/schemas/list.ts b/zero.Backoffice.UI/app/modules/countries/schemas/list.ts deleted file mode 100644 index 4e575282..00000000 --- a/zero.Backoffice.UI/app/modules/countries/schemas/list.ts +++ /dev/null @@ -1,19 +0,0 @@ - -import List from '../../../schemas/list/list'; -import api from '../api'; - -const list = new List('countries'); -const prefix = '@country.fields.'; - -list.templateLabel = x => prefix + x; -list.link = 'countries-edit'; - -list.onFetch(filter => api.getByQuery(filter)); - -list.column('flag', { width: 62, canSort: false, hideLabel: true }).custom((value, model) => ``, true, 'flag'); -list.column('name').name(); -list.column('code').custom(val => val.toUpperCase()); -list.column('isPreferred').boolean(); -list.column('isActive').active(); - -export default list; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/countries/ui-countrypicker.vue b/zero.Backoffice.UI/app/modules/countries/ui-countrypicker.vue deleted file mode 100644 index b039b36b..00000000 --- a/zero.Backoffice.UI/app/modules/countries/ui-countrypicker.vue +++ /dev/null @@ -1,75 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/index.ts b/zero.Backoffice.UI/app/modules/index.ts deleted file mode 100644 index 41f21ecc..00000000 --- a/zero.Backoffice.UI/app/modules/index.ts +++ /dev/null @@ -1,16 +0,0 @@ - -export * from './countries'; -export * from './applications'; -export * from './settings'; -export * from './languages'; -export * from './pages'; -export * from './media'; -export * from './spaces'; -export * from './mails'; -export * from './translations'; -export * from './integrations'; -export * from './users'; -export * from './links'; -export * from './pageModules'; -export * from './search'; -export * from './preview'; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/integrations/api.ts b/zero.Backoffice.UI/app/modules/integrations/api.ts deleted file mode 100644 index f8965bcd..00000000 --- a/zero.Backoffice.UI/app/modules/integrations/api.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { get, post, put, del, ApiRequestConfig, ApiRequestQuery } from '../../services/request'; - -export default { - - getTypes: (config?: ApiRequestConfig) => get('integrations/types', { ...config }), - - getType: (alias: string, config?: ApiRequestConfig) => get('integrations/types/' + alias, { ...config }), - - getEmpty: (alias: string, config?: ApiRequestConfig) => get('integrations/empty/' + alias, { ...config }), - - getByAlias: (alias: string, config?: ApiRequestConfig) => get('integrations/' + alias, { ...config }), - - create: (model: any, config?: ApiRequestConfig) => post('integrations', model, config), - - update: (model: any, config?: ApiRequestConfig) => put('integrations/' + model.flavor, model, config), - - activate: (alias: string, config?: ApiRequestConfig) => put('integrations/' + alias + '/activate', null, config), - - deactivate: (alias: string, config?: ApiRequestConfig) => put('integrations/' + alias + '/deactivate', null, config), - - delete: (alias: string, config?: ApiRequestConfig) => del('integrations/' + alias, null, config), -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/integrations/index.ts b/zero.Backoffice.UI/app/modules/integrations/index.ts deleted file mode 100644 index 5cf56925..00000000 --- a/zero.Backoffice.UI/app/modules/integrations/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import api from './api'; -import plugin from './plugin'; - -export { - api as integrationApi, - plugin as integrationPlugin -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/integrations/integration.vue b/zero.Backoffice.UI/app/modules/integrations/integration.vue deleted file mode 100644 index 2e596033..00000000 --- a/zero.Backoffice.UI/app/modules/integrations/integration.vue +++ /dev/null @@ -1,118 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/integrations/integrations-item.vue b/zero.Backoffice.UI/app/modules/integrations/integrations-item.vue deleted file mode 100644 index 5246cbd4..00000000 --- a/zero.Backoffice.UI/app/modules/integrations/integrations-item.vue +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/integrations/integrations.vue b/zero.Backoffice.UI/app/modules/integrations/integrations.vue deleted file mode 100644 index 0f5c9a1e..00000000 --- a/zero.Backoffice.UI/app/modules/integrations/integrations.vue +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/integrations/plugin.ts b/zero.Backoffice.UI/app/modules/integrations/plugin.ts deleted file mode 100644 index c6423264..00000000 --- a/zero.Backoffice.UI/app/modules/integrations/plugin.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ZeroPlugin, ZeroPluginOptions } from '../../core'; -import { defineAsyncComponent } from 'vue'; - -export default { - name: "zero.integrations", - - install(app: ZeroPluginOptions) - { - //app.vue.component('ui-languagepicker', defineAsyncComponent(() => import('./ui-languagepicker.vue'))); - - app.route({ name: 'integrations', path: '/settings/integrations', component: () => import('./integrations.vue') }); - app.route({ name: 'integrations-edit', path: '/settings/integrations/edit/:id?', component: () => import('./integration.vue'), props: true }); - - app.schema('integrations', () => import('./schemas/list')); - app.schema('integrations:edit', () => import('./schemas/editor')); - } -} as ZeroPlugin; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/integrations/schemas/editor.ts b/zero.Backoffice.UI/app/modules/integrations/schemas/editor.ts deleted file mode 100644 index 4f67c21a..00000000 --- a/zero.Backoffice.UI/app/modules/integrations/schemas/editor.ts +++ /dev/null @@ -1,21 +0,0 @@ - -import { ZeroEditor } from '../../../editor/editor'; - -const editor = new ZeroEditor('integrations'); - -editor.resourcePrefix = '@translation.fields.'; - -const set = editor.fieldset(); - -set.field('key').text({ maxLength: 300 }); -set.field('display').state({ - items: [ - { label: '@translation.display.text', value: 0 }, - { label: '@translation.display.html', value: 1 } - ] -}); - -editor.field('value').setHidden(x => x.display === 0).rte(); -editor.field('value').setHidden(x => x.display === 1).textarea(); - -export default editor; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/integrations/schemas/list.ts b/zero.Backoffice.UI/app/modules/integrations/schemas/list.ts deleted file mode 100644 index f7990cff..00000000 --- a/zero.Backoffice.UI/app/modules/integrations/schemas/list.ts +++ /dev/null @@ -1,16 +0,0 @@ - -import List from '../../../schemas/list/list'; -import api from '../api'; - -const list = new List('translations'); -const prefix = '@translation.fields.'; - -list.templateLabel = x => prefix + x; -list.link = 'translations-edit'; - -list.onFetch(filter => api.getByQuery(filter)); - -list.column('key', { width: 420 }).name(); -list.column('value').text(); - -export default list; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/languages/api.ts b/zero.Backoffice.UI/app/modules/languages/api.ts deleted file mode 100644 index 24890692..00000000 --- a/zero.Backoffice.UI/app/modules/languages/api.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { get, post, put, del, ApiRequestConfig, ApiRequestQuery } from '../../services/request'; - -export default { - - getEmpty: (flavor?: string, config?: ApiRequestConfig) => get("languages/empty", { ...config, params: { flavor } }), - - getById: (id: string, changeVector?: string, config?: ApiRequestConfig) => get('languages/' + id, { ...config, params: { changeVector } }), - - getByQuery: (query: ApiRequestQuery, config?: ApiRequestConfig) => get('languages', { ...config, params: { ...query } }), - - create: (model: any, config?: ApiRequestConfig) => post('languages', model, config), - - update: (model: any, config?: ApiRequestConfig) => put('languages/' + model.id, model, config), - - delete: (id: string, config?: ApiRequestConfig) => del('languages/' + id, null, config), -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/languages/field-languagepicker.vue b/zero.Backoffice.UI/app/modules/languages/field-languagepicker.vue deleted file mode 100644 index 708e6288..00000000 --- a/zero.Backoffice.UI/app/modules/languages/field-languagepicker.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/languages/index.ts b/zero.Backoffice.UI/app/modules/languages/index.ts deleted file mode 100644 index bee7ee3a..00000000 --- a/zero.Backoffice.UI/app/modules/languages/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import api from './api'; -import editor from './schemas/editor'; -import list from './schemas/list'; -import plugin from './plugin'; - -export { - api as languageApi, - editor as languageSchema, - list as languageListSchema, - plugin as languagePlugin -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/languages/language.vue b/zero.Backoffice.UI/app/modules/languages/language.vue deleted file mode 100644 index 0b628759..00000000 --- a/zero.Backoffice.UI/app/modules/languages/language.vue +++ /dev/null @@ -1,11 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/languages/languages.d.ts b/zero.Backoffice.UI/app/modules/languages/languages.d.ts deleted file mode 100644 index 128b8037..00000000 --- a/zero.Backoffice.UI/app/modules/languages/languages.d.ts +++ /dev/null @@ -1,11 +0,0 @@ - -declare module 'zero/schemas' -{ - export interface ZeroEditorField - { - /** - * Render a language picker - */ - languagePicker(): ZeroEditorField; - } -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/languages/languages.vue b/zero.Backoffice.UI/app/modules/languages/languages.vue deleted file mode 100644 index 1b255caf..00000000 --- a/zero.Backoffice.UI/app/modules/languages/languages.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/languages/plugin.ts b/zero.Backoffice.UI/app/modules/languages/plugin.ts deleted file mode 100644 index 4098d7cb..00000000 --- a/zero.Backoffice.UI/app/modules/languages/plugin.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ZeroPlugin, ZeroPluginOptions } from '../../core'; -import { TextFieldOptions } from 'zero/editor'; -import { defineAsyncComponent } from 'vue'; - -export default { - name: "zero.languages", - - install(app: ZeroPluginOptions) - { - app.vue.component('ui-languagepicker', defineAsyncComponent(() => import('./ui-languagepicker.vue'))); - - app.route({ name: 'languages', path: '/settings/languages', component: () => import('./languages.vue') }); - app.route({ name: 'languages-edit', path: '/settings/languages/edit/:id?', component: () => import('./language.vue'), props: true }); - - app.schema('languages', () => import('./schemas/list')); - app.schema('languages:edit', () => import('./schemas/editor')); - - app.fieldType('languagePicker', defineAsyncComponent(() => import('./field-languagepicker.vue'))); - } -} as ZeroPlugin; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/languages/schemas/editor.ts b/zero.Backoffice.UI/app/modules/languages/schemas/editor.ts deleted file mode 100644 index 380b2a4d..00000000 --- a/zero.Backoffice.UI/app/modules/languages/schemas/editor.ts +++ /dev/null @@ -1,15 +0,0 @@ - -import { ZeroEditor } from '../../../editor/editor'; - -const editor = new ZeroEditor('languages'); - -editor.resourcePrefix = '@language.fields.'; - -//editor.blueprintAlias = 'languages'; -editor.field('name', { label: '@ui.name' }).text({ maxLength: 60 }); -editor.field('code').text({ maxLength: 5 }); -editor.field('inheritedLanguageId', { optional: true }).languagePicker(); -editor.field('isDefault', { optional: true, horizontal: true }).toggle(); -editor.field('isOptional', { optional: true, horizontal: true }).toggle(); - -export default editor; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/languages/schemas/list.ts b/zero.Backoffice.UI/app/modules/languages/schemas/list.ts deleted file mode 100644 index 8d611550..00000000 --- a/zero.Backoffice.UI/app/modules/languages/schemas/list.ts +++ /dev/null @@ -1,17 +0,0 @@ - -import List from '../../../schemas/list/list'; -import api from '../api'; - -const list = new List('languages'); -const prefix = '@language.fields.'; - -list.templateLabel = x => prefix + x; -list.link = 'languages-edit'; - -list.onFetch(filter => api.getByQuery(filter)); - -list.column('name').name(); -list.column('code').text(); -list.column('isDefault', { width: 200 }).boolean(); - -export default list; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/languages/ui-languagepicker.vue b/zero.Backoffice.UI/app/modules/languages/ui-languagepicker.vue deleted file mode 100644 index 0103c9ce..00000000 --- a/zero.Backoffice.UI/app/modules/languages/ui-languagepicker.vue +++ /dev/null @@ -1,59 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/links/api.ts b/zero.Backoffice.UI/app/modules/links/api.ts deleted file mode 100644 index b3b2bcca..00000000 --- a/zero.Backoffice.UI/app/modules/links/api.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { post, ApiRequestConfig, ApiResponse } from '../../services/request'; -import { UiLink, UiLinkPreview } from 'zero/ui'; - -export default { - - convert: (items: UiLink[], config?: ApiRequestConfig): Promise> => post('backoffice/links/convert', items, config), - -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/links/components/ui-linktarget.vue b/zero.Backoffice.UI/app/modules/links/components/ui-linktarget.vue deleted file mode 100644 index 2fc9123d..00000000 --- a/zero.Backoffice.UI/app/modules/links/components/ui-linktarget.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/links/index.ts b/zero.Backoffice.UI/app/modules/links/index.ts deleted file mode 100644 index 75d861b5..00000000 --- a/zero.Backoffice.UI/app/modules/links/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import plugin from './plugin'; - -export { - plugin as linksPlugin -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/links/partials/url-linkpicker-area.vue b/zero.Backoffice.UI/app/modules/links/partials/url-linkpicker-area.vue deleted file mode 100644 index f1fd4bd4..00000000 --- a/zero.Backoffice.UI/app/modules/links/partials/url-linkpicker-area.vue +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/links/picker/editor-linkpicker.vue b/zero.Backoffice.UI/app/modules/links/picker/editor-linkpicker.vue deleted file mode 100644 index 3d32d2ba..00000000 --- a/zero.Backoffice.UI/app/modules/links/picker/editor-linkpicker.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/links/picker/ui-linkpicker-overlay.vue b/zero.Backoffice.UI/app/modules/links/picker/ui-linkpicker-overlay.vue deleted file mode 100644 index 3ee17c5d..00000000 --- a/zero.Backoffice.UI/app/modules/links/picker/ui-linkpicker-overlay.vue +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/links/picker/ui-linkpicker.vue b/zero.Backoffice.UI/app/modules/links/picker/ui-linkpicker.vue deleted file mode 100644 index 4ff6aa57..00000000 --- a/zero.Backoffice.UI/app/modules/links/picker/ui-linkpicker.vue +++ /dev/null @@ -1,191 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/links/plugin.ts b/zero.Backoffice.UI/app/modules/links/plugin.ts deleted file mode 100644 index 84cabded..00000000 --- a/zero.Backoffice.UI/app/modules/links/plugin.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { ZeroPlugin, ZeroPluginOptions } from '../../core'; -import { defineAsyncComponent } from 'vue'; - -export default { - name: "zero.links", - - install(app: ZeroPluginOptions) - { - app.vue.component('ui-linkpicker', defineAsyncComponent(() => import('./picker/ui-linkpicker.vue'))); - app.vue.component('ui-linktarget', defineAsyncComponent(() => import('./components/ui-linktarget.vue'))); - - app.fieldType('linkPicker', defineAsyncComponent(() => import('./picker/editor-linkpicker.vue'))); - - app.linkArea('zero.url', '@zero.config.linkareas.url', () => import('./partials/url-linkpicker-area.vue')); - } -} as ZeroPlugin; - - -declare module 'zero/schemas' -{ - export interface ZeroEditorField - { - /** - * Renders a link picker - * @param {LinkPickerFieldOptions} [options] - Custom options - */ - linkPicker(options?: LinkPickerFieldOptions): ZeroEditorField; - } - - - export interface LinkPickerFieldOptions extends PickerFieldOptions - { - areas?: string[]; - allowTitle?: boolean; - allowTarget?: boolean; - allowSuffix?: boolean; - } -} - -declare module 'zero/ui' -{ - export interface UiLink - { - area: string; - target: 'default' | 'self' | 'blank'; - urlSuffix?: string; - title?: string; - values: Record; - } - - export interface UiLinkPreview - { - id: string; - icon?: string; - text: string; - name: string; - hasError: boolean; - } -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/mails/api.ts b/zero.Backoffice.UI/app/modules/mails/api.ts deleted file mode 100644 index df3358e5..00000000 --- a/zero.Backoffice.UI/app/modules/mails/api.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { get, post, put, del, ApiRequestConfig, ApiRequestQuery } from '../../services/request'; - -export default { - - getEmpty: (flavor?: string, config?: ApiRequestConfig) => get("mailtemplates/empty", { ...config, params: { flavor } }), - - getById: (id: string, changeVector?: string, config?: ApiRequestConfig) => get('mailtemplates/' + id, { ...config, params: { changeVector } }), - - getByQuery: (query: ApiRequestQuery, config?: ApiRequestConfig) => get('mailtemplates', { ...config, params: { ...query } }), - - create: (model: any, config?: ApiRequestConfig) => post('mailtemplates', model, config), - - update: (model: any, config?: ApiRequestConfig) => put('mailtemplates/' + model.id, model, config), - - delete: (id: string, config?: ApiRequestConfig) => del('mailtemplates/' + id, null, config), -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/mails/index.ts b/zero.Backoffice.UI/app/modules/mails/index.ts deleted file mode 100644 index 8624099d..00000000 --- a/zero.Backoffice.UI/app/modules/mails/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import api from './api'; -import editor from './schemas/editor'; -import list from './schemas/list'; -import plugin from './plugin'; - -export { - api as mailTemplateApi, - editor as mailTemplateSchema, - list as mailTemplateListSchema, - plugin as mailTemplatePlugin -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/mails/mailtemplate.vue b/zero.Backoffice.UI/app/modules/mails/mailtemplate.vue deleted file mode 100644 index b06fb6c6..00000000 --- a/zero.Backoffice.UI/app/modules/mails/mailtemplate.vue +++ /dev/null @@ -1,10 +0,0 @@ - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/mails/mailtemplates.vue b/zero.Backoffice.UI/app/modules/mails/mailtemplates.vue deleted file mode 100644 index 473e88b8..00000000 --- a/zero.Backoffice.UI/app/modules/mails/mailtemplates.vue +++ /dev/null @@ -1,21 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/mails/picker/editor-mailtemplatepicker.vue b/zero.Backoffice.UI/app/modules/mails/picker/editor-mailtemplatepicker.vue deleted file mode 100644 index c0053d1f..00000000 --- a/zero.Backoffice.UI/app/modules/mails/picker/editor-mailtemplatepicker.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/mails/picker/ui-mailtemplatepicker.vue b/zero.Backoffice.UI/app/modules/mails/picker/ui-mailtemplatepicker.vue deleted file mode 100644 index 9b7236af..00000000 --- a/zero.Backoffice.UI/app/modules/mails/picker/ui-mailtemplatepicker.vue +++ /dev/null @@ -1,75 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/mails/plugin.ts b/zero.Backoffice.UI/app/modules/mails/plugin.ts deleted file mode 100644 index 999b1b66..00000000 --- a/zero.Backoffice.UI/app/modules/mails/plugin.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { ZeroPlugin, ZeroPluginOptions } from '../../core'; -import { defineAsyncComponent } from 'vue'; - -export default { - name: "zero.mailTemplates", - - install(app: ZeroPluginOptions) - { - app.vue.component('ui-mailtemplatepicker', defineAsyncComponent(() => import('./picker/ui-mailtemplatepicker.vue'))); - app.fieldType('mailTemplatePicker', defineAsyncComponent(() => import('./picker/editor-mailtemplatepicker.vue'))); - - app.route({ name: 'mailtemplates', path: '/settings/mailtemplates', component: () => import('./mailtemplates.vue') }); - app.route({ name: 'mailtemplates-edit', path: '/settings/mailtemplates/edit/:id?', component: () => import('./mailtemplate.vue'), props: true }); - - app.schema('mailtemplates', () => import('./schemas/list')); - app.schema('mailtemplates:edit', () => import('./schemas/editor')); - } -} as ZeroPlugin; - - -declare module 'zero/schemas' -{ - export interface ZeroEditorField - { - /** - * Renders a mail template picker - * @param {PickerFieldOptions} [options] - Custom options - */ - mailTemplatePicker(options?: PickerFieldOptions): ZeroEditorField; - } -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/mails/schemas/editor.ts b/zero.Backoffice.UI/app/modules/mails/schemas/editor.ts deleted file mode 100644 index 3c4edf37..00000000 --- a/zero.Backoffice.UI/app/modules/mails/schemas/editor.ts +++ /dev/null @@ -1,23 +0,0 @@ - -import { ZeroEditor } from "../../../editor/editor"; - -const editor = new ZeroEditor('mailtemplates'); - -editor.resourcePrefix = '@mailTemplate.fields.'; - -const general = editor.tab('general', '@ui.tab_general'); -const sender = editor.tab('sender', '@mailTemplate.tabs.sender'); -const recipient = editor.tab('recipient', '@mailTemplate.tabs.recipient'); - -general.field('name', { label: '@ui.name' }).text({ maxLength: 60 }); -general.field('key').text({ maxLength: 60 }); -general.field('subject').text({ maxLength: 80 }); -general.field('body', { optional: true }).rte(); -general.field('preheader', { optional: true }).text({ maxLength: 160 }); -sender.field('senderEmail', { optional: true }).text(); -sender.field('senderName', { optional: true }).text(); -recipient.field('recipientEmail', { optional: true }).text(); -recipient.field('cc', { optional: true }).text(); -recipient.field('bcc', { optional: true }).text(); - -export default editor; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/mails/schemas/list.ts b/zero.Backoffice.UI/app/modules/mails/schemas/list.ts deleted file mode 100644 index 18e4360b..00000000 --- a/zero.Backoffice.UI/app/modules/mails/schemas/list.ts +++ /dev/null @@ -1,16 +0,0 @@ - -import List from '../../../schemas/list/list'; -import api from '../api'; - -const list = new List('mailTemplates'); - -list.templateLabel = x => '@mailTemplate.fields.' + x; -list.link = 'mailtemplates-edit'; - -list.onFetch(filter => api.getByQuery(filter)); - -list.column('name').name(); -list.column('subject').text(); -list.column('key').text(); - -export default list; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/api.ts b/zero.Backoffice.UI/app/modules/media/api.ts deleted file mode 100644 index fd4e51d6..00000000 --- a/zero.Backoffice.UI/app/modules/media/api.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { get, post, put, del, ApiRequestConfig, ApiRequestQuery } from '../../services/request'; - - -const files = { - - getEmpty: (flavor?: string, config?: ApiRequestConfig) => get("media/empty", { ...config, params: { flavor } }), - - getById: (id: string, changeVector?: string, config?: ApiRequestConfig) => get('media/' + id, { ...config, params: { changeVector } }), - - getSource: (id: string, config?: ApiRequestConfig) => get(`media/${id}/source`, { ...config }), - - getByQuery: (query: ApiRequestQuery, config?: ApiRequestConfig) => get('media', { ...config, params: { ...query } }), - - getHierarchy: (id: string, config?: ApiRequestConfig) => get(`media/${id}/hierarchy`, { ...config }), - - search: (searchQuery: string, parentId: string | null, query: ApiRequestQuery, config?: ApiRequestConfig) => get('media/search', { ...config, params: { ...query, q: searchQuery, parent: parentId } }), - - //create: (model: any, config?: ApiRequestConfig) => post('media', model, config), - - update: (model: any, config?: ApiRequestConfig) => put('media/' + model.id, model, config), - - move: (id: string, parentId: string, config?: ApiRequestConfig) => put(`media/${id}/move/${parentId}`, {}, { ...config }), - - delete: (id: string, config?: ApiRequestConfig) => del('media/' + id, config), - - upload: async (file: File, folderId?: string, onProgress?: any) => - { - var data = new FormData(); - data.append('file', file); - - if (folderId) - { - data.append('folderId', folderId); - } - - return await post('media', data, { - onUploadProgress: (progressEvent) => - { - if (typeof onProgress === 'function') - { - var percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total); - onProgress(percentCompleted); - } - } - }); - } -}; - - -const folders = { - - getEmpty: (flavor?: string, config?: ApiRequestConfig) => get("media/folders/empty", { ...config, params: { flavor } }), - - getById: (id: string, changeVector?: string, config?: ApiRequestConfig) => get('media/folders/' + id, { ...config, params: { changeVector } }), - - getByQuery: (query: ApiRequestQuery, config?: ApiRequestConfig) => get('media/folders', { ...config, params: { ...query } }), - - getChildren: (id: string, includeFiles: boolean, query: ApiRequestQuery, config?: ApiRequestConfig) => get(`media/folders/${id}/children`, { ...config, params: { ...query, files: includeFiles } }), - - getHierarchy: (id: string, config?: ApiRequestConfig) => get(`media/folders/${id}/hierarchy`, { ...config }), - - create: (model: any, config?: ApiRequestConfig) => post('media/folders', model, config), - - update: (model: any, config?: ApiRequestConfig) => put('media/folders/' + model.id, model, config), - - move: (id: string, parentId: string, config?: ApiRequestConfig) => put(`media/folders/${id}/move/${parentId}`, {}, { ...config }), - - delete: (id: string, config?: ApiRequestConfig) => del('media/folders/' + id, config) -}; - - -const bulk = { - - delete: (ids: string[], config?: ApiRequestConfig) => del(`media/bulk/delete`, { ids }, { ...config }), - - move: (ids: string[], parentId: string, config?: ApiRequestConfig) => put(`media/bulk/move`, { parentId, ids }, { ...config }), - - getDescendants: (ids: string[], config?: ApiRequestConfig) => get(`media/bulk/descendants`, { ...config, params: { ids } }), -}; - - -export default { - ...files, - folders, - bulk -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/components/field-imagepicker.vue b/zero.Backoffice.UI/app/modules/media/components/field-imagepicker.vue deleted file mode 100644 index ac08b662..00000000 --- a/zero.Backoffice.UI/app/modules/media/components/field-imagepicker.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/components/field-mediapicker.vue b/zero.Backoffice.UI/app/modules/media/components/field-mediapicker.vue deleted file mode 100644 index 808dbded..00000000 --- a/zero.Backoffice.UI/app/modules/media/components/field-mediapicker.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/components/field-videopicker.vue b/zero.Backoffice.UI/app/modules/media/components/field-videopicker.vue deleted file mode 100644 index f2605a5f..00000000 --- a/zero.Backoffice.UI/app/modules/media/components/field-videopicker.vue +++ /dev/null @@ -1,20 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/components/media-previews.vue b/zero.Backoffice.UI/app/modules/media/components/media-previews.vue deleted file mode 100644 index cdf68fa2..00000000 --- a/zero.Backoffice.UI/app/modules/media/components/media-previews.vue +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/components/ui-mediapicker.vue b/zero.Backoffice.UI/app/modules/media/components/ui-mediapicker.vue deleted file mode 100644 index dcb83e31..00000000 --- a/zero.Backoffice.UI/app/modules/media/components/ui-mediapicker.vue +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/components/ui-videopicker.vue b/zero.Backoffice.UI/app/modules/media/components/ui-videopicker.vue deleted file mode 100644 index 36dc606e..00000000 --- a/zero.Backoffice.UI/app/modules/media/components/ui-videopicker.vue +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/index.ts b/zero.Backoffice.UI/app/modules/media/index.ts deleted file mode 100644 index 882091cd..00000000 --- a/zero.Backoffice.UI/app/modules/media/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import api from './api'; -import editor from './schemas/editor'; -//import list from './schemas/list'; -import plugin from './plugin'; - -export { - api as mediaApi, - editor as mediaSchema, - plugin as mediaPlugin -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/overlays/editfolder.vue b/zero.Backoffice.UI/app/modules/media/overlays/editfolder.vue deleted file mode 100644 index 848f3df4..00000000 --- a/zero.Backoffice.UI/app/modules/media/overlays/editfolder.vue +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/overlays/media.vue b/zero.Backoffice.UI/app/modules/media/overlays/media.vue deleted file mode 100644 index f6f5d00a..00000000 --- a/zero.Backoffice.UI/app/modules/media/overlays/media.vue +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/overlays/move.vue b/zero.Backoffice.UI/app/modules/media/overlays/move.vue deleted file mode 100644 index 564e3a52..00000000 --- a/zero.Backoffice.UI/app/modules/media/overlays/move.vue +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/overlays/upload-status-item.vue b/zero.Backoffice.UI/app/modules/media/overlays/upload-status-item.vue deleted file mode 100644 index 8ce4367f..00000000 --- a/zero.Backoffice.UI/app/modules/media/overlays/upload-status-item.vue +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/overlays/upload-status.vue b/zero.Backoffice.UI/app/modules/media/overlays/upload-status.vue deleted file mode 100644 index 47d57b6d..00000000 --- a/zero.Backoffice.UI/app/modules/media/overlays/upload-status.vue +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/overlays/videopicker.vue b/zero.Backoffice.UI/app/modules/media/overlays/videopicker.vue deleted file mode 100644 index 6e9253ca..00000000 --- a/zero.Backoffice.UI/app/modules/media/overlays/videopicker.vue +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/pages/detail/detail.vue b/zero.Backoffice.UI/app/modules/media/pages/detail/detail.vue deleted file mode 100644 index 01758f10..00000000 --- a/zero.Backoffice.UI/app/modules/media/pages/detail/detail.vue +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/pages/detail/metadata.vue b/zero.Backoffice.UI/app/modules/media/pages/detail/metadata.vue deleted file mode 100644 index 7b22b761..00000000 --- a/zero.Backoffice.UI/app/modules/media/pages/detail/metadata.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/pages/detail/preview.vue b/zero.Backoffice.UI/app/modules/media/pages/detail/preview.vue deleted file mode 100644 index b32e26da..00000000 --- a/zero.Backoffice.UI/app/modules/media/pages/detail/preview.vue +++ /dev/null @@ -1,192 +0,0 @@ - - - - - diff --git a/zero.Backoffice.UI/app/modules/media/pages/overview/drop.vue b/zero.Backoffice.UI/app/modules/media/pages/overview/drop.vue deleted file mode 100644 index 6b321f05..00000000 --- a/zero.Backoffice.UI/app/modules/media/pages/overview/drop.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - - - diff --git a/zero.Backoffice.UI/app/modules/media/pages/overview/overview-actions.ts b/zero.Backoffice.UI/app/modules/media/pages/overview/overview-actions.ts deleted file mode 100644 index cc19d332..00000000 --- a/zero.Backoffice.UI/app/modules/media/pages/overview/overview-actions.ts +++ /dev/null @@ -1,77 +0,0 @@ - -import api from '../../api'; -import * as overlays from '../../../../services/overlay'; -import * as notifications from '../../../../services/notification'; -import { localize } from '../../../../services/localization'; - - -export default { - - async remove(items: any[]) - { - const ids = items.map(x => x.id); - const response = await api.bulk.getDescendants(ids); - - const result = await overlays.confirmDelete("@media.deleteoverlay.title", '@media.deleteoverlay.folder_text', localize('@media.deleteoverlay.warning', { - tokens: { - folders: response.data.folders, - files: response.data.files - } as Record - })); - - if (result.eventType === 'confirm') - { - const confirmResult = await overlays.confirmDelete(undefined, undefined, undefined, { - model: { - title: "@media.deleteoverlay.start.title", - warning: null, - text: null, - autoclose: false, - confirmLabel: "@media.deleteoverlay.start.button", - confirmType: 'danger', - closeLabel: '@deleteoverlay.close' - } - }); - //result.close(); - //console.info(confirmResult); - - if (confirmResult.eventType === 'confirm') - { - confirmResult.value.state('loading'); - await api.bulk.delete(ids); - confirmResult.value.state('success'); - - confirmResult.close(); - result.close(); - return ids; - } - else - { - result.close(); - } - } - - }, - - async move(items: any[]) - { - const result = await overlays.open({ - component: () => import('../../overlays/move.vue'), - display: 'editor', - width: 560, - model: { - parentId: items[0].parentId, - name: items.length === 1 ? items[0].name : localize('@media.child_count_x', { - tokens: { count: items.length } - }), - items: items - } - }); - - if (result.value) - { - notifications.success('Successfully moved', `Moved ${items.length} items to new location`); - return items.map(x => x.id); - } - } -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/pages/overview/overview-item.vue b/zero.Backoffice.UI/app/modules/media/pages/overview/overview-item.vue deleted file mode 100644 index e652df45..00000000 --- a/zero.Backoffice.UI/app/modules/media/pages/overview/overview-item.vue +++ /dev/null @@ -1,174 +0,0 @@ - - - - - diff --git a/zero.Backoffice.UI/app/modules/media/pages/overview/overview-selection.vue b/zero.Backoffice.UI/app/modules/media/pages/overview/overview-selection.vue deleted file mode 100644 index f1c1c7b3..00000000 --- a/zero.Backoffice.UI/app/modules/media/pages/overview/overview-selection.vue +++ /dev/null @@ -1,57 +0,0 @@ - - - - - diff --git a/zero.Backoffice.UI/app/modules/media/pages/overview/overview.vue b/zero.Backoffice.UI/app/modules/media/pages/overview/overview.vue deleted file mode 100644 index c78c1f2e..00000000 --- a/zero.Backoffice.UI/app/modules/media/pages/overview/overview.vue +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/partials/linkpicker.vue b/zero.Backoffice.UI/app/modules/media/partials/linkpicker.vue deleted file mode 100644 index e35e3172..00000000 --- a/zero.Backoffice.UI/app/modules/media/partials/linkpicker.vue +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/plugin.ts b/zero.Backoffice.UI/app/modules/media/plugin.ts deleted file mode 100644 index d1465952..00000000 --- a/zero.Backoffice.UI/app/modules/media/plugin.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { ZeroPlugin, ZeroPluginOptions } from '../../core'; -import { defineAsyncComponent } from 'vue'; - -export default { - name: "zero.countries", - - install(app: ZeroPluginOptions) - { - app.vue.component('ui-mediapicker', defineAsyncComponent(() => import('./components/ui-mediapicker.vue'))); - app.vue.component('ui-videopicker', defineAsyncComponent(() => import('./components/ui-videopicker.vue'))); - - app.linkArea('zero.media', '@zero.config.linkareas.media', () => import('./partials/linkpicker.vue')); - - app.fieldType('media', defineAsyncComponent(() => import('./components/field-mediapicker.vue'))); - app.fieldType('image', defineAsyncComponent(() => import('./components/field-imagepicker.vue'))); - app.fieldType('video', defineAsyncComponent(() => import('./components/field-videopicker.vue'))); - - app.route({ name: 'media', path: '/media/:parentId?', component: () => import('./pages/overview/overview.vue'), props: true }); - app.route({ name: 'media-edit', path: '/media/edit/:id?', component: () => import('./pages/detail/detail.vue'), props: true }); - - //app.schema('countries', () => import('./schemas/list')); - app.schema('media:edit', () => import('./schemas/editor')); - } -} as ZeroPlugin; - - -declare module 'zero/schemas' -{ - export interface ZeroEditorField - { - /** - * Renders a media picker - * @param {MediaFieldOptions} [options] - Custom options - */ - media(options?: MediaFieldOptions): ZeroEditorField; - - /** - * Renders an image picker - * @param {MediaBaseFieldOptions} [options] - Custom options - */ - image(options?: MediaBaseFieldOptions): ZeroEditorField; - - /** - * Renders an video picker - * @param {PickerFieldOptions} [options] - Custom options - */ - video(options?: PickerFieldOptions): ZeroEditorField; - } - - export type MediaTypeFor = 'all' | 'images' | 'videos' | 'documents'; - - export interface MediaBaseFieldOptions extends PickerFieldOptions - { - disableSelect?: boolean; - disableUpload?: boolean; - fileExtensions?: Array; - } - - export interface MediaFieldOptions extends MediaBaseFieldOptions - { - for?: MediaTypeFor; - } -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/schemas/editor.ts b/zero.Backoffice.UI/app/modules/media/schemas/editor.ts deleted file mode 100644 index 23e5a4c6..00000000 --- a/zero.Backoffice.UI/app/modules/media/schemas/editor.ts +++ /dev/null @@ -1,13 +0,0 @@ - -import { ZeroEditor } from '../../../editor/editor'; -import MetadataEditor from '../pages/detail/metadata.vue'; - -const editor = new ZeroEditor('media:edit'); -editor.resourcePrefix = '@media.fields.'; -//editor.blueprintAlias = 'media'; - -editor.field('name', { label: '@ui.name' }).text(); -editor.field('imageMeta.alternativeText', { optional: true, hidden: x => x.imageMeta }).text(); -editor.field('createdDate', { hideLabel: true }).component(MetadataEditor); - -export default editor; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/schemas/list.ts b/zero.Backoffice.UI/app/modules/media/schemas/list.ts deleted file mode 100644 index 4e575282..00000000 --- a/zero.Backoffice.UI/app/modules/media/schemas/list.ts +++ /dev/null @@ -1,19 +0,0 @@ - -import List from '../../../schemas/list/list'; -import api from '../api'; - -const list = new List('countries'); -const prefix = '@country.fields.'; - -list.templateLabel = x => prefix + x; -list.link = 'countries-edit'; - -list.onFetch(filter => api.getByQuery(filter)); - -list.column('flag', { width: 62, canSort: false, hideLabel: true }).custom((value, model) => ``, true, 'flag'); -list.column('name').name(); -list.column('code').custom(val => val.toUpperCase()); -list.column('isPreferred').boolean(); -list.column('isActive').active(); - -export default list; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/ui.d.ts b/zero.Backoffice.UI/app/modules/media/ui.d.ts deleted file mode 100644 index 2f080111..00000000 --- a/zero.Backoffice.UI/app/modules/media/ui.d.ts +++ /dev/null @@ -1,5 +0,0 @@ - -declare module 'zero/media' -{ - export type MediaType = 'folder' | 'file' | 'image'; -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/media/videoparser.ts b/zero.Backoffice.UI/app/modules/media/videoparser.ts deleted file mode 100644 index 2f230a62..00000000 --- a/zero.Backoffice.UI/app/modules/media/videoparser.ts +++ /dev/null @@ -1,110 +0,0 @@ - -export const YOUTUBE_REGEX = /youtu(?:\.be|be\.com)\/(?:.*v(?:\/|=)|(?:.*\/)?)([a-zA-Z0-9-_]+)/gim; -export const VIMEO_REGEX = /vimeo\.com\/(\d+)($|\/)/gim; - - -/** - * Get video ID from an URL. - * This currently works for YouTube and Vimeo links. - * @param {string} url - */ -export let getVideoId = url => -{ - if (!url) - { - return null; - } - - if (url.indexOf('vimeo.com') > -1) - { - let matches = VIMEO_REGEX.exec(url); - return matches && matches[1]; - } - else if (url.indexOf('youtu') > -1) - { - let matches = YOUTUBE_REGEX.exec(url); - return matches && matches[1]; - } - - return null; -}; - - -/** - * Get metadata for a vimeo ID. - * @param {string} id - */ -export let getVimeoMetadata = async id => -{ - let result = { - id, - url: `https://vimeo.com/${id}`, - success: false - }; - - let response = await fetch(`https://vimeo.com/api/v2/video/${id}.json`); - - if (response.ok) - { - let data = await response.json(); - result.data = data[0]; - result.image = result.data.thumbnail_large; - result.title = result.data.title; - result.description = result.data.description; - result.success = true; - } - - return result; -}; - - -/** - * Get metdata for a YouTube ID. - * @param {string} url - */ -export let getYoutubeMetadata = async id => -{ - const apiKey = 'AIzaSyD720TVsYEil4PTESJ9jD0Xijd0zldExmc'; // TODO v3 make configurable - - let result = { - id, - image: `https://i3.ytimg.com/vi/${id}/maxresdefault.jpg`, - url: `https://www.youtube.com/watch?v=${id}`, - success: true - }; - - if (apiKey) - { - result.success = false; - - let response = await fetch(`https://www.googleapis.com/youtube/v3/videos?part=snippet&id=${id}&key=${apiKey}`); - - if (response.ok) - { - let data = await response.json(); - - if (data && data.items && data.items.length) - { - result.data = data.items[0].snippet; - - let thumbs = Object.values(result.data.thumbnails); - let thumb = thumbs[thumbs.length - 1]; - result.image = thumb.url; - result.title = result.data.title; - result.description = result.data.description; - result.success = true; - } - } - - return result; - } - else - { - return { - id, - image: `https://i3.ytimg.com/vi/${id}/maxresdefault.jpg`, - url: `https://www.youtube.com/watch?v=${id}`, - success: true - }; - } -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pageModules/actions.ts b/zero.Backoffice.UI/app/modules/pageModules/actions.ts deleted file mode 100644 index d2f82cfd..00000000 --- a/zero.Backoffice.UI/app/modules/pageModules/actions.ts +++ /dev/null @@ -1,103 +0,0 @@ - -import api from './api'; -import * as overlays from '../../services/overlay'; -import * as notifications from '../../services/notification'; -import { localize } from '../../services/localization'; -import { Router } from 'vue-router'; - - -export default { - - async create(router: Router, parent: object) - { - const result = await overlays.open({ - component: () => import('./overlays/create.vue'), - width: 480, - model: { - parent - } - }); - - if (result.value) - { - router.push({ - name: 'pages-create', - params: { - flavor: result.value.alias, - parent: parent ? parent.id : undefined - } - }) - } - }, - - - async move(model: object) - { - const result = await overlays.open({ - component: () => import('./overlays/move.vue'), - display: 'editor', - width: 480, - model: model - }); - - if (result.eventType == 'confirm') - { - console.info('okay'); - } - }, - - - async copy(model: object) - { - const result = await overlays.open({ - component: () => import('./overlays/copy.vue'), - display: 'editor', - width: 480, - model: model - }); - - if (result.eventType == 'confirm') - { - console.info('okay'); - } - }, - - - async sort(model: object) - { - const result = await overlays.open({ - component: () => import('./overlays/sort.vue'), - display: 'editor', - width: 480, - model: model - }); - - if (result.eventType == 'confirm') - { - console.info('okay'); - } - }, - - - async remove(model: object) - { - const response = await api.getDependencies(model.id); - - const result = await overlays.confirmDelete("@page.deleteoverlay.title", '@page.deleteoverlay.text', localize('@page.deleteoverlay.warning', { - tokens: { - pages: response.data.pages - } - })); - - if (result.eventType == 'confirm') - { - result.value.state('loading'); - - await api.delete(model.id); - - result.value.state('success'); - result.value.close(); - } - } - -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pageModules/api.ts b/zero.Backoffice.UI/app/modules/pageModules/api.ts deleted file mode 100644 index 115569f5..00000000 --- a/zero.Backoffice.UI/app/modules/pageModules/api.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { get, ApiRequestConfig } from '../../services/request'; - -export default { - - getEmpty: (alias: string, config?: ApiRequestConfig) => get(`pagemodules/${alias}/empty`, { ...config }), - - getTypes: (pageId?: string, tags?: string[], config?: ApiRequestConfig) => get('pagemodules', { ...config, params: { pageId, tags } }), - - getType: (alias: string, config?: ApiRequestConfig) => get('pagemodules/' + alias, { ...config }) -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pageModules/components/module-preview-button.vue b/zero.Backoffice.UI/app/modules/pageModules/components/module-preview-button.vue deleted file mode 100644 index b1162e47..00000000 --- a/zero.Backoffice.UI/app/modules/pageModules/components/module-preview-button.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pageModules/editor-modules.vue b/zero.Backoffice.UI/app/modules/pageModules/editor-modules.vue deleted file mode 100644 index ca9978fb..00000000 --- a/zero.Backoffice.UI/app/modules/pageModules/editor-modules.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pageModules/index.ts b/zero.Backoffice.UI/app/modules/pageModules/index.ts deleted file mode 100644 index 8db59b14..00000000 --- a/zero.Backoffice.UI/app/modules/pageModules/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import api from './api'; -import plugin from './plugin'; - -export { - api as pageModuleApi, - plugin as pageModulePlugin -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pageModules/overlays/edit.vue b/zero.Backoffice.UI/app/modules/pageModules/overlays/edit.vue deleted file mode 100644 index 7e2c270f..00000000 --- a/zero.Backoffice.UI/app/modules/pageModules/overlays/edit.vue +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pageModules/overlays/select.vue b/zero.Backoffice.UI/app/modules/pageModules/overlays/select.vue deleted file mode 100644 index e4dd5988..00000000 --- a/zero.Backoffice.UI/app/modules/pageModules/overlays/select.vue +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pageModules/partials/preview-inner.vue b/zero.Backoffice.UI/app/modules/pageModules/partials/preview-inner.vue deleted file mode 100644 index 12cd911b..00000000 --- a/zero.Backoffice.UI/app/modules/pageModules/partials/preview-inner.vue +++ /dev/null @@ -1,53 +0,0 @@ - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pageModules/partials/preview.vue b/zero.Backoffice.UI/app/modules/pageModules/partials/preview.vue deleted file mode 100644 index b21ff0fe..00000000 --- a/zero.Backoffice.UI/app/modules/pageModules/partials/preview.vue +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pageModules/plugin.ts b/zero.Backoffice.UI/app/modules/pageModules/plugin.ts deleted file mode 100644 index 3c16b24e..00000000 --- a/zero.Backoffice.UI/app/modules/pageModules/plugin.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { ZeroPlugin, ZeroPluginOptions } from '../../core'; -import { defineAsyncComponent } from 'vue'; - -export default { - name: "zero.pagemodules", - - install(app: ZeroPluginOptions) - { - app.vue.component('ui-modules', defineAsyncComponent(() => import('./ui-modules.vue'))); - app.fieldType('modules', defineAsyncComponent(() => import('./editor-modules.vue'))); - } -} as ZeroPlugin; - - -declare module 'zero/schemas' -{ - export interface ZeroEditorField - { - /** - * Renders modules - * @param {ModulesFieldOptions} [options] - Custom options - */ - modules(options?: ModulesFieldOptions): ZeroEditorField; - } - - export interface ModulesFieldOptions extends PickerFieldOptions - { - - } -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pageModules/ui-modules.vue b/zero.Backoffice.UI/app/modules/pageModules/ui-modules.vue deleted file mode 100644 index 3a7daef8..00000000 --- a/zero.Backoffice.UI/app/modules/pageModules/ui-modules.vue +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/actions.ts b/zero.Backoffice.UI/app/modules/pages/actions.ts deleted file mode 100644 index 917a250b..00000000 --- a/zero.Backoffice.UI/app/modules/pages/actions.ts +++ /dev/null @@ -1,115 +0,0 @@ - -import api from './api'; -import * as overlays from '../../services/overlay'; -import * as notifications from '../../services/notification'; -import { localize } from '../../services/localization'; -import { Router } from 'vue-router'; -import eventHub from '../../services/eventhub'; - -export default { - - async create(router: Router, parent: object) - { - const result = await overlays.open({ - component: () => import('./overlays/create.vue'), - width: 480, - model: { - parent - } - }); - - if (result.value) - { - router.push({ - name: 'pages-create', - params: { - flavor: result.value.alias, - parent: parent ? parent.id : undefined - } - }); - } - }, - - - async move(model: object) - { - const result = await overlays.open({ - component: () => import('./overlays/move.vue'), - display: 'editor', - width: 480, - model: model - }); - - if (result.eventType == 'confirm') - { - eventHub.emit('page.update', { action: 'move', model: result.value }); - eventHub.emit('page.move', result.value); - } - }, - - - async copy(router: Router, model: object) - { - const result = await overlays.open({ - component: () => import('./overlays/copy.vue'), - display: 'editor', - width: 480, - model: model - }); - - if (result.eventType == 'confirm') - { - router.push({ - name: 'pages-edit', - params: { - id: result.value.id - } - }); - eventHub.emit('page.update', { action: 'copy', model: result.value }); - eventHub.emit('page.copy', result.value); - } - }, - - - async sort(model: object) - { - const result = await overlays.open({ - component: () => import('./overlays/sort.vue'), - display: 'editor', - width: 480, - model: model - }); - - if (result.eventType == 'confirm') - { - eventHub.emit('page.update', { action: 'sort', model: result.value }); - eventHub.emit('page.sort', result.value); - } - }, - - - async remove(model: object) - { - const response = await api.getDependencies(model.id); - - const result = await overlays.confirmDelete("@page.deleteoverlay.title", '@page.deleteoverlay.text', localize('@page.deleteoverlay.warning', { - tokens: { - pages: response.data.pages - } - })); - - if (result.eventType == 'confirm') - { - result.value.state('loading'); - - const apiresult = await api.delete(model.id); - - result.value.state('success'); - result.value.close(); - - eventHub.emit('page.update', { action: 'delete', model: apiresult.value }); - eventHub.emit('page.delete', apiresult.data); - } - } - -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/api.ts b/zero.Backoffice.UI/app/modules/pages/api.ts deleted file mode 100644 index 46ed8472..00000000 --- a/zero.Backoffice.UI/app/modules/pages/api.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { get, post, put, del, ApiRequestConfig, ApiRequestQuery } from '../../services/request'; - -export default { - - tree: { - getChildren: (id: string, activeId?: string, search?: string, config?: ApiRequestConfig) => get(`backoffice/pages/${id}/children`, { ...config, params: { activeId, search } }), - }, - - getEmpty: (flavor?: string, parentId?: string, config?: ApiRequestConfig) => get("pages/empty", { ...config, params: { flavor, parentId } }), - - getById: (id: string, changeVector?: string, config?: ApiRequestConfig) => get('pages/' + id, { ...config, params: { changeVector } }), - - getByQuery: (query: ApiRequestQuery, config?: ApiRequestConfig) => get('pages', { ...config, params: { ...query } }), - - getChildren: (id: string, query: ApiRequestQuery, config?: ApiRequestConfig) => get(`pages/${id}/children`, { ...config, params: { ...query } }), - - getAllowedFlavors: (id: string, config?: ApiRequestConfig) => get(`pages/${id}/flavors`, { ...config }), - - getDependencies: (id: string, config?: ApiRequestConfig) => get(`backoffice/pages/${id}/dependencies`, { ...config }), - - getPreviews: (ids: string[], config?: ApiRequestConfig) => get(`backoffice/pages/previews`, { ...config, params: { ids } }), - - getUrl: (id: string, config?: ApiRequestConfig) => get(`pages/${id}/url`, { ...config }), - - create: (model: any, config?: ApiRequestConfig) => post('pages', model, config), - - update: (model: any, config?: ApiRequestConfig) => put('pages/' + model.id, model, config), - - move: (id: string, parentId: string, config?: ApiRequestConfig) => put(`pages/${id}/move/${parentId}`, {}, { ...config }), - - copy: (id: string, parentId: string, includeDescendants?: boolean, config?: ApiRequestConfig) => put(`pages/${id}/copy/${parentId}`, {}, { ...config, params: { includeDescendants: (includeDescendants || false) } }), - - sort: (ids: string[], config?: ApiRequestConfig) => put('pages/sort', ids, config), - - delete: (id: string, config?: ApiRequestConfig) => del('pages/' + id, null, config), - - //getTypes: (config?: ApiRequestConfig) => get('spaces/types', { ...config }), - - //getType: (alias: string, config?: ApiRequestConfig) => get('spaces/types/' + alias, { ...config }), - - //getByAlias: (alias: string, query?: ApiRequestQuery, config?: ApiRequestConfig) => get('spaces/' + alias, { ...config, params: { ...(query || {}) }}), - - //getEmpty: (alias: string, config?: ApiRequestConfig) => get("spaces/empty", { ...config, params: { alias } }), - - - //getById: (id: string, changeVector?: string, config?: ApiRequestConfig) => get('countries/' + id, { ...config, params: { changeVector } }), - - //getByQuery: (query: ApiRequestQuery, config?: ApiRequestConfig) => get('countries', { ...config, params: { ...query } }), - - //create: (model: any, config?: ApiRequestConfig) => post('countries', model, config), - - //update: (model: any, config?: ApiRequestConfig) => put('countries/' + model.id, model, config), - - //delete: (id: string, config?: ApiRequestConfig) => del('countries/' + id, null, config), -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/index.ts b/zero.Backoffice.UI/app/modules/pages/index.ts deleted file mode 100644 index ecf094c3..00000000 --- a/zero.Backoffice.UI/app/modules/pages/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import api from './api'; -import plugin from './plugin'; - -export { - api as pageApi, - plugin as pagePlugin -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/overlays/copy.vue b/zero.Backoffice.UI/app/modules/pages/overlays/copy.vue deleted file mode 100644 index 1b8e40e0..00000000 --- a/zero.Backoffice.UI/app/modules/pages/overlays/copy.vue +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/overlays/create.vue b/zero.Backoffice.UI/app/modules/pages/overlays/create.vue deleted file mode 100644 index f65693b2..00000000 --- a/zero.Backoffice.UI/app/modules/pages/overlays/create.vue +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/overlays/move.vue b/zero.Backoffice.UI/app/modules/pages/overlays/move.vue deleted file mode 100644 index d3d6ce31..00000000 --- a/zero.Backoffice.UI/app/modules/pages/overlays/move.vue +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/overlays/sort.vue b/zero.Backoffice.UI/app/modules/pages/overlays/sort.vue deleted file mode 100644 index abe65653..00000000 --- a/zero.Backoffice.UI/app/modules/pages/overlays/sort.vue +++ /dev/null @@ -1,180 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/page.vue b/zero.Backoffice.UI/app/modules/pages/page.vue deleted file mode 100644 index e299e739..00000000 --- a/zero.Backoffice.UI/app/modules/pages/page.vue +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/pages.vue b/zero.Backoffice.UI/app/modules/pages/pages.vue deleted file mode 100644 index b7e8951d..00000000 --- a/zero.Backoffice.UI/app/modules/pages/pages.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/partials/linkpicker.vue b/zero.Backoffice.UI/app/modules/pages/partials/linkpicker.vue deleted file mode 100644 index 79603433..00000000 --- a/zero.Backoffice.UI/app/modules/pages/partials/linkpicker.vue +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/partials/overview-actions.vue b/zero.Backoffice.UI/app/modules/pages/partials/overview-actions.vue deleted file mode 100644 index 85ae45df..00000000 --- a/zero.Backoffice.UI/app/modules/pages/partials/overview-actions.vue +++ /dev/null @@ -1,92 +0,0 @@ - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/partials/page-info.vue b/zero.Backoffice.UI/app/modules/pages/partials/page-info.vue deleted file mode 100644 index db3d8d12..00000000 --- a/zero.Backoffice.UI/app/modules/pages/partials/page-info.vue +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/partials/page-tree.vue b/zero.Backoffice.UI/app/modules/pages/partials/page-tree.vue deleted file mode 100644 index f035735d..00000000 --- a/zero.Backoffice.UI/app/modules/pages/partials/page-tree.vue +++ /dev/null @@ -1,212 +0,0 @@ - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/picker/field-pagepicker.vue b/zero.Backoffice.UI/app/modules/pages/picker/field-pagepicker.vue deleted file mode 100644 index dad456a2..00000000 --- a/zero.Backoffice.UI/app/modules/pages/picker/field-pagepicker.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/picker/overlay.vue b/zero.Backoffice.UI/app/modules/pages/picker/overlay.vue deleted file mode 100644 index 8d40e34c..00000000 --- a/zero.Backoffice.UI/app/modules/pages/picker/overlay.vue +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/picker/ui-pagepicker.vue b/zero.Backoffice.UI/app/modules/pages/picker/ui-pagepicker.vue deleted file mode 100644 index 7e92c03b..00000000 --- a/zero.Backoffice.UI/app/modules/pages/picker/ui-pagepicker.vue +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/plugin.ts b/zero.Backoffice.UI/app/modules/pages/plugin.ts deleted file mode 100644 index f8b2e0dc..00000000 --- a/zero.Backoffice.UI/app/modules/pages/plugin.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { ZeroPlugin, ZeroPluginOptions } from '../../core'; -import { defineAsyncComponent } from 'vue'; - -export default { - name: "zero.spaces", - - install(app: ZeroPluginOptions) - { - app.schema('pages:zero.folder', () => import('./schemas/folder-editor')); - - app.linkArea('zero.pages', '@zero.config.linkareas.pages', () => import('./partials/linkpicker.vue')); - - app.route({ - name: 'pages', - path: '/pages', - component: () => import('./pages.vue'), - props: true, - children: [ - { - name: 'pages-edit', - path: 'edit/:id?', - props: true, - component: () => import('./page.vue') - }, - { - name: 'pages-create', - path: 'create/:flavor/:parent?', - props: true, - component: () => import('./page.vue') - }, - ] - }); - - app.vue.component('ui-pagepicker', defineAsyncComponent(() => import('./picker/ui-pagepicker.vue'))); - app.fieldType('pagePicker', defineAsyncComponent(() => import('./picker/field-pagepicker.vue'))); - } -} as ZeroPlugin; - - -declare module 'zero/schemas' -{ - export interface ZeroEditorField - { - /** - * Renders a page picker - * @param {PagePickerFieldOptions} [options] - Custom options - */ - pagePicker(options?: PagePickerFieldOptions): ZeroEditorField; - } - - export interface PagePickerFieldOptions extends PickerFieldOptions - { - rootId?: string | ((model: any) => string); - disabledIds?: string[] | ((model: any) => string[]); - } -} \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/pages/schemas/folder-editor.ts b/zero.Backoffice.UI/app/modules/pages/schemas/folder-editor.ts deleted file mode 100644 index c2f32b47..00000000 --- a/zero.Backoffice.UI/app/modules/pages/schemas/folder-editor.ts +++ /dev/null @@ -1,11 +0,0 @@ - -import { ZeroEditor } from '../../../editor/editor'; - -const editor = new ZeroEditor('pages:zero.folder'); - -editor.resourcePrefix = '@page.folder.fields.'; - -editor.field('isPartOfRoute', { optional: true, horizontal: true }).toggle(); -editor.field('urlAlias', { optional: true, hidden: x => !x.isPartOfRoute }).text({ maxLength: 40 }); - -export default editor; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/preview/api.ts b/zero.Backoffice.UI/app/modules/preview/api.ts deleted file mode 100644 index 45f2245e..00000000 --- a/zero.Backoffice.UI/app/modules/preview/api.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { post, ApiResponse, ApiRequestConfig } from '../../services/request'; - -export default { - - createPreviewToken: (key: string, config?: ApiRequestConfig): Promise> => post('backoffice/ui/previews/token', { key }, { ...config }), - -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/preview/index.ts b/zero.Backoffice.UI/app/modules/preview/index.ts deleted file mode 100644 index 5dab337a..00000000 --- a/zero.Backoffice.UI/app/modules/preview/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -//import api from './api'; -//import editor from './schemas/editor'; -//import list from './schemas/list'; -import plugin from './plugin'; - -export { - //api as mediaApi, - //editor as mediaSchema, - plugin as previewPlugin -}; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/preview/plugin.ts b/zero.Backoffice.UI/app/modules/preview/plugin.ts deleted file mode 100644 index cb4a7f2d..00000000 --- a/zero.Backoffice.UI/app/modules/preview/plugin.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ZeroPlugin, ZeroPluginOptions } from '../../core'; -import { defineAsyncComponent } from 'vue'; - -export default { - name: "zero.preview", - - install(app: ZeroPluginOptions) - { - app.route({ name: 'preview', path: '/preview', component: () => import('./preview.vue'), props: true }); - } -} as ZeroPlugin; \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/preview/preview-serviceworker.js b/zero.Backoffice.UI/app/modules/preview/preview-serviceworker.js deleted file mode 100644 index b10b2aba..00000000 --- a/zero.Backoffice.UI/app/modules/preview/preview-serviceworker.js +++ /dev/null @@ -1,27 +0,0 @@ -////if ('serviceWorker' in navigator) -////{ -//// window.addEventListener('load', () => -//// { -//// navigator.serviceWorker.register('sw.js').then( -//// registration => -//// { -//// console.log('Service worker registered with scope: ', registration.scope); -//// }, -//// err => -//// { -//// console.log('ServiceWorker registration failed: ', err); -//// }); -//// }); -////} - -console.info('hi from worker'); - -self.addEventListener('fetch', event => -{ - console.info('fetch', event); - event.request.headers.append("zero-preview", "true"); - event.respondWith( - fetch(event.request) - // intercept requests by handling event.request here - ); -}); \ No newline at end of file diff --git a/zero.Backoffice.UI/app/modules/preview/preview.vue b/zero.Backoffice.UI/app/modules/preview/preview.vue deleted file mode 100644 index f436d01c..00000000 --- a/zero.Backoffice.UI/app/modules/preview/preview.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/settings/application-features.vue b/zero.Backoffice.UI/old_app/pages/settings/application-features.vue deleted file mode 100644 index f29f4fc0..00000000 --- a/zero.Backoffice.UI/old_app/pages/settings/application-features.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/settings/application.vue b/zero.Backoffice.UI/old_app/pages/settings/application.vue deleted file mode 100644 index 3811d2be..00000000 --- a/zero.Backoffice.UI/old_app/pages/settings/application.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/settings/applications-items.vue b/zero.Backoffice.UI/old_app/pages/settings/applications-items.vue deleted file mode 100644 index 65fb74f3..00000000 --- a/zero.Backoffice.UI/old_app/pages/settings/applications-items.vue +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/settings/applications.vue b/zero.Backoffice.UI/old_app/pages/settings/applications.vue deleted file mode 100644 index 09cb185f..00000000 --- a/zero.Backoffice.UI/old_app/pages/settings/applications.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/settings/integration.vue b/zero.Backoffice.UI/old_app/pages/settings/integration.vue deleted file mode 100644 index 64bd9743..00000000 --- a/zero.Backoffice.UI/old_app/pages/settings/integration.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/settings/integrations-item.vue b/zero.Backoffice.UI/old_app/pages/settings/integrations-item.vue deleted file mode 100644 index 07440aa3..00000000 --- a/zero.Backoffice.UI/old_app/pages/settings/integrations-item.vue +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/settings/integrations.vue b/zero.Backoffice.UI/old_app/pages/settings/integrations.vue deleted file mode 100644 index 59f7be7d..00000000 --- a/zero.Backoffice.UI/old_app/pages/settings/integrations.vue +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/settings/role.vue b/zero.Backoffice.UI/old_app/pages/settings/role.vue deleted file mode 100644 index 020877b3..00000000 --- a/zero.Backoffice.UI/old_app/pages/settings/role.vue +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/settings/routes.js b/zero.Backoffice.UI/old_app/pages/settings/routes.js deleted file mode 100644 index 40795608..00000000 --- a/zero.Backoffice.UI/old_app/pages/settings/routes.js +++ /dev/null @@ -1,122 +0,0 @@ - -const alias = __zero.alias.sections.settings; -const section = __zero.sections.find(x => x.alias === alias); -let settings = []; -let routes = []; - -__zero.settingsAreas.forEach(group => group.items.forEach(area => -{ - if (!area.isPlugin) - { - settings.push(area); - } -})); - -const addArea = (areaAlias, component, detailComponent, hasCreate, postCreate) => -{ - let area = typeof areaAlias === 'object' ? areaAlias : settings.find(x => x.alias === areaAlias); - - if (!area) - { - return; - } - - routes.push({ - name: area.alias, - path: area.url, - component: component, - meta: { - name: area.name - } - }); - - if (detailComponent && hasCreate) - { - routes.push({ - name: area.alias + '-create', - path: area.url + '/create/:scope?', - props: true, - component: detailComponent, - meta: { - create: true, - name: area.name - } - }); - } - - if (detailComponent) - { - routes.push({ - name: area.alias + '-edit', - path: area.url + '/edit/:id', - props: true, - component: detailComponent, - meta: { - name: area.name - } - }); - } - - if (typeof postCreate === 'function') - { - postCreate(area); - } -}; - - -if (section) -{ - // add overview page - routes.push({ - name: section.alias, - path: section.url, - component: () => import('./settings.vue'), - meta: { - name: section.name, - alias: section.alias, - section: section - } - }); - - - // add details - - addArea(__zero.alias.settings.applications, () => import('./applications.vue'), () => import('./application.vue'), true); - - addArea(__zero.alias.settings.countries, () => import('./countries.vue'), () => import('./country.vue'), true); - - addArea(__zero.alias.settings.languages, () => import('./languages.vue'), () => import('./language.vue'), true); - - addArea(__zero.alias.settings.translations, () => import('./translations.vue'), () => import('./translations.vue'), true); - - addArea(__zero.alias.settings.mails, () => import('./mails.vue'), () => import('./mail.vue'), true); - - addArea(__zero.alias.settings.integrations, () => import('./integrations.vue')); - - addArea(__zero.alias.settings.users, () => import('./users.vue'), () => import('./user.vue'), true, area => - { - routes.push({ - name: 'roles-create', - path: '/' + section.alias + '/roles/create/:scope?', - props: true, - component: () => import('./role.vue'), - meta: { - create: true, - name: area.name - } - }); - - routes.push({ - name: 'roles-edit', - path: '/' + section.alias + '/roles/edit/:id', - props: true, - component: () => import('./role.vue'), - meta: { - name: area.name - } - }); - }); -} - - -export default routes; \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/settings/user.vue b/zero.Backoffice.UI/old_app/pages/settings/user.vue deleted file mode 100644 index e33fb951..00000000 --- a/zero.Backoffice.UI/old_app/pages/settings/user.vue +++ /dev/null @@ -1,121 +0,0 @@ - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/settings/users.vue b/zero.Backoffice.UI/old_app/pages/settings/users.vue deleted file mode 100644 index 4a15b07b..00000000 --- a/zero.Backoffice.UI/old_app/pages/settings/users.vue +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/spaces/routes.js b/zero.Backoffice.UI/old_app/pages/spaces/routes.js deleted file mode 100644 index 5351b88c..00000000 --- a/zero.Backoffice.UI/old_app/pages/spaces/routes.js +++ /dev/null @@ -1,39 +0,0 @@ - -const alias = __zero.alias.sections.spaces; -const section = __zero.sections.find(x => x.alias === alias); - -export default section ? [ - { - name: section.alias, - path: section.url, - component: () => import('./spaces.vue'), - meta: { - name: section.name, - alias: section.alias, - section: section - }, - children: [ - { - name: 'space-item', - path: ':alias/edit/:id', - props: true, - component: () => import('./spaces.vue') - }, - { - name: 'space', - path: ':alias', - props: true, - component: () => import('./spaces.vue') - }, - { - name: 'space-create', - path: ':alias/create/:scope?', - props: true, - component: () => import('./spaces.vue'), - meta: { - create: true - } - } - ] - } -] : []; \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/spaces/spaces.vue b/zero.Backoffice.UI/old_app/pages/spaces/spaces.vue deleted file mode 100644 index 1283b034..00000000 --- a/zero.Backoffice.UI/old_app/pages/spaces/spaces.vue +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/spaces/views/custom.vue b/zero.Backoffice.UI/old_app/pages/spaces/views/custom.vue deleted file mode 100644 index aad12720..00000000 --- a/zero.Backoffice.UI/old_app/pages/spaces/views/custom.vue +++ /dev/null @@ -1,46 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/spaces/views/editor.vue b/zero.Backoffice.UI/old_app/pages/spaces/views/editor.vue deleted file mode 100644 index 051859ff..00000000 --- a/zero.Backoffice.UI/old_app/pages/spaces/views/editor.vue +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/pages/spaces/views/list.vue b/zero.Backoffice.UI/old_app/pages/spaces/views/list.vue deleted file mode 100644 index bf1f0d60..00000000 --- a/zero.Backoffice.UI/old_app/pages/spaces/views/list.vue +++ /dev/null @@ -1,77 +0,0 @@ - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/renderers/editors/application.js b/zero.Backoffice.UI/old_app/renderers/editors/application.js deleted file mode 100644 index 47fe3a8b..00000000 --- a/zero.Backoffice.UI/old_app/renderers/editors/application.js +++ /dev/null @@ -1,20 +0,0 @@ - -import Editor from 'zero/core/editor.ts'; -import ApplicationFeatures from 'zero/pages/settings/application-features.vue'; - -const editor = new Editor('application', '@application.fields.'); -editor.options.coreDatabase = true; - -const general = editor.tab('general', '@ui.tab_general'); -const domains = editor.tab('domains', '@application.tab_domains', x => x.domains.length); -const features = editor.tab('features', '@application.tab_features', x => x.features.length); - -general.field('name', { label: '@ui.name' }).text(50).required(); -general.field('fullName').text(120); -general.field('email').text(120).required(); -general.field('imageId').image(); -general.field('iconId').image(); -domains.field('domains', { helpText: '@application.fields.domains_help' }).inputList(10, null, '@application.fields.domains_add').required(); -features.field('features', { hideLabel: true }).custom(ApplicationFeatures); - -export default editor; \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/renderers/editors/customers-filter.js b/zero.Backoffice.UI/old_app/renderers/editors/customers-filter.js deleted file mode 100644 index a8000772..00000000 --- a/zero.Backoffice.UI/old_app/renderers/editors/customers-filter.js +++ /dev/null @@ -1,43 +0,0 @@ - -import ListFilter from 'zero/core/list-filter.js'; - -const filter = new ListFilter('country', '@country.fields.'); - -filter.template = { - date: { - from: null, - to: null - }, - countryId: null, - turnover: { - from: null, - to: null - }, - search: null -}; - -filter.for('date').dateRangePicker({ inline: true }).preview({ - hasValue: x => x.from || x.to, - icon: 'fth-calendar', - render: Localization.localize(!x.from && !x.to ? null : (x.from && !x.to ? '@ui.date.x' : (!x.from && x.to ? '@ui.date.y' : '@ui.date.xtoy')), { tokens: { x: Strings.date(x.from), y: Strings.date(x.to) } }) -}); - -filter.for('countryId').countryPicker().preview({ - hasValue: x => !!x, - icon: 'fth-globe', - render: x => x != null ? 'Selected' : null -}); - -filter.for('turnover').custom(null /* '@shop/editor/pricerange.vue' */).preview({ - hasValue: x => x.from || x.to, - icon: 'fth-dollar-sign', - render: Localization.localize(!x.from && !x.to ? null : (x.from && !x.to ? '@ui.price.x' : (!x.from && x.to ? '@ui.price.y' : '@ui.price.xtoy')), { tokens: { x: Strings.currency(x.from), y: Strings.currency(x.to) } }) -}); - -filter.for('search').text(null, 'Enter a search term...').preview({ - hasValue: x => !!x, - icon: 'fth-search', - preview: x => x -}); - -return filter; \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/renderers/editors/page-folder.js b/zero.Backoffice.UI/old_app/renderers/editors/page-folder.js deleted file mode 100644 index 168f60ff..00000000 --- a/zero.Backoffice.UI/old_app/renderers/editors/page-folder.js +++ /dev/null @@ -1,9 +0,0 @@ - -import Editor from 'zero/core/editor.ts'; - -const editor = new Editor('pages.' + __zero.alias.pages.folder, '@page.folder.fields.'); - -editor.field('isPartOfRoute').toggle(); -editor.field('urlAlias').text(40).when(x => x.isPartOfRoute); - -export default editor; \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/renderers/editors/password.js b/zero.Backoffice.UI/old_app/renderers/editors/password.js deleted file mode 100644 index 6b7a4196..00000000 --- a/zero.Backoffice.UI/old_app/renderers/editors/password.js +++ /dev/null @@ -1,10 +0,0 @@ - -import Editor from 'zero/core/editor.ts'; - -const editor = new Editor('media', '@changepasswordoverlay.fields.'); - -editor.field('currentPassword').password().required(); -editor.field('newPassword').password().required(); -editor.field('confirmNewPassword').password().required(); - -export default editor; \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/renderers/editors/userRole.js b/zero.Backoffice.UI/old_app/renderers/editors/userRole.js deleted file mode 100644 index e65dd9e9..00000000 --- a/zero.Backoffice.UI/old_app/renderers/editors/userRole.js +++ /dev/null @@ -1,23 +0,0 @@ - -import Editor from 'zero/core/editor.ts'; -import Permissions from 'zero/components/permissions.vue'; - -const editor = new Editor('userRole', '@role.fields.'); -editor.options.coreDatabase = true; - -const permissionsCount = x => (x.claims || []).filter(claim => -{ - const value = claim.value.split(':')[1]; - return value !== 'none' && value !== 'false' && !!value; -}).length; - -const general = editor.tab('general', '@ui.tab_general'); -const permissions = editor.tab('permissions', '@role.tab_permissions', permissionsCount); - -general.field('name', { label: '@ui.name' }).text(60).required(); -general.field('description').text(120); -general.field('icon').iconPicker(); -general.field('avatarId').image(); -permissions.field('claims', { hideLabel: true }).custom(Permissions); - -export default editor; \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/renderers/lists/recyclebin.js b/zero.Backoffice.UI/old_app/renderers/lists/recyclebin.js deleted file mode 100644 index 64edd171..00000000 --- a/zero.Backoffice.UI/old_app/renderers/lists/recyclebin.js +++ /dev/null @@ -1,49 +0,0 @@ - -import List from 'zero/core/list.ts'; -import RecycleBinApi from 'zero/api/recycle-bin.js'; -import Overlay from 'zero/helpers/overlay.js'; -import RecycleBinActionsOverlay from 'zero/pages/pages/recyclebin/recyclebin-actions.vue'; -import EventHub from 'zero/helpers/eventhub.js'; - -const list = new List('recyclebin'); -const prefix = '@recyclebin.fields.'; - -list.templateLabel = x => prefix + x; -list.onClick = item => -{ - Overlay.open({ - component: RecycleBinActionsOverlay, - display: 'editor', - model: item - }).then(value => - { - const deleted = !!value.deleted; - - // go to restored page - if (!deleted) - { - EventHub.$emit('page.update'); - this.$router.push({ - name: 'page', - params: { id: item.originalId } - }); - } - // reload recycle bin - else - { - this.$refs.table.update(); - } - }); -}; //zero.alias.settings.countries + '-edit'; - -list.onFetch(filter => -{ - filter.group = 'pages'; - return RecycleBinApi.getByQuery(filter); -}); - -list.column('name').name(); -list.column('originalId').text(); -list.column('createdDate').created(); - -export default list; \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/renderers/lists/spaces.default.js b/zero.Backoffice.UI/old_app/renderers/lists/spaces.default.js deleted file mode 100644 index 8bd68eca..00000000 --- a/zero.Backoffice.UI/old_app/renderers/lists/spaces.default.js +++ /dev/null @@ -1,10 +0,0 @@ - -import List from 'zero/core/list.ts'; - -const list = new List('spaces.default'); - -list.column('name').name(); -list.column('createdDate').created(); -list.column('isActive').active(); - -export default list; \ No newline at end of file diff --git a/zero.Backoffice.UI/old_app/search.vue b/zero.Backoffice.UI/old_app/search.vue deleted file mode 100644 index dde8ba8d..00000000 --- a/zero.Backoffice.UI/old_app/search.vue +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/zero.Backoffice.UI/package.json b/zero.Backoffice.UI/package.json deleted file mode 100644 index a7404bd1..00000000 --- a/zero.Backoffice.UI/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "zero", - "version": "0.1.0", - "private": true, - "scripts": { - "dev": "vite", - "build": "vite build" - }, - "workspaces": [ - "../plugins/zero.Commerce/Backoffice/Plugin" - ], - "dependencies": { - "axios": "^0.24.0", - "dayjs": "^1.10.7", - "flatpickr": "^4.6.9", - "qs": "^6.10.2", - "sortablejs": "^1.14.0", - "@tiptap/vue-3": "2.0.0-beta.82", - "@tiptap/starter-kit": "2.0.0-beta.153", - "@tiptap/extension-image": "2.0.0-beta.24", - "@tiptap/extension-link": "2.0.0-beta.35", - "underscore": "^1.13.1", - "vue": "^3.2.27", - "vue-router": "^4.0.12", - "@vue/compat": "^3.2.27", - "mitt": "^3.0.0", - "pinia": "^2.0.6" - }, - "devDependencies": { - "@vitejs/plugin-vue": "^2.0.1", - "@vue/compiler-sfc": "^3.2.27", - "sass": "^1.44.0", - "typescript": "^4.5.2", - "vite": "^2.6.14", - "vite-plugin-rewrite-all": "^0.1.2", - "vue-tsc": "^0.30.6" - } -} diff --git a/zero.Backoffice.UI/public/assets/zero-2-light.png b/zero.Backoffice.UI/public/assets/zero-2-light.png deleted file mode 100644 index bf58a59311b563adf00ab3f2f186b529135b4ce2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5796 zcmV;V7F+3wP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000ZmNklM0O#(`9T*D1Vq^-1$o)B{cxU< z$-?eAcjn$Z_sl-OWI}d0_ul8+bIyOBbDr~3)!W;Pq9{taNa-t36h%cyQItVT)jio6 zQQi9{U<5E0xEGiV+zCvO??wW{B<%&@EN~Jy4txw82KLH#=YY#vT#Aw`_U+kS@;%Za z+mr^z0aJlFz)awNAY-{MFIH3feBT9p220ud{;g{13m!W2Hph@s&}L)DndwCYXR^$FfBq`hXZrvvme+7Y?UsXq9}td<#jhTdaK>mIMSPjeu9>ql9f-ppEz6AVI zyJm{wXLoEU@N?kFA_QnX@DT6}@HdJJpP!IxpOJg5FG7f(lspX8qE-~YMCcp9Lg2Z8 z4fr@FQngIFUSY9I?m1tc;mT0S!$QfEq9~q-(8ItAf(=4%1f~OTMQHC^@{ElEt{EYD zd02~EQIf}v#)L*o7iL0$`>X?Aipl0LFzd)JiFf3}1j*9@{2L#t0UBa>P9tW)aFT6r z0y-1)j=O+%pf%xjCySc}~)8pBqtw55vwkMaWwdR(Bd?I3ft$BKVCq(GO!Q zkG|cpyD^a{9|Q<__A8EQZ<4&-tq$;YEY(*~GIb(kE!elNiNkwt5qlOEaecKoBcF&6 zMVg;N5gG#g0J9g63+u})K!rl&8abOPc^sl`=4+bccE1OK7`2vBi0Y+0>q5HU61iVC z4iTDynOjrkaNS1S$7AAP8E%8sRg%Xk+E%`HyVVN{pXuU>#7zV65AkHeWTFUbLzE(v z#%vrm+2NYcFcS%r#%i(6#$?HBTH8t_gVBm%4)FvO3I%9$g!iwO`-h&Vyak|>2`u!_#Wt5b*GZlSGe-|P8K!t1$yK9#B2BrZIIHW&{iKHZzHnGvR zc=Z9v^KlOJZo{wlh6%oCRoV5vrKlb>LVywd4IM+--(j8Jwn^E;?cTxzgxtf zyiFOoM?KfV_BLANnozvxG-knPEpB^4|1{z5dzaX_-I8v&qiE#N_i zw8tc1_oXd~NQzDi@$T!SV3HDzO8~9L=F?RC}sSh9HJS-Gh0e> z#Q#B!W52zvHXSB!cX-6(XT@L9+ zdRQ4;Z0_>B!VlyH9l?EJqf$C;znC&}aDgSIpUT|&HKjdl5vCKAZ_pp(=*!(GelEEI5 zZ}K1??f5ZhzDnNtk^$1xN%y!V#&lvpWHxm9q#Fgy_Nc3N#D01&( zgC$KJA+0XA(20GO`G{$xK5hWWbw%X{xZDaf-QICe?wObaf z+r6>~A!@>HhInIGBJ^M2eTTHSd*Thv#%)mgeaU;JctIMHAAH@iR^0X~l19QmRa2>)Zdnsv=SmG6sSgh>Yx9^zOiLRWyl;=V@g zMPO|LD#2Q@#f1Zs$19#x@Os?Nl~S}@mZwDouQ`N!bxSudON8TEefJYO1Z)B>J6`{C znT2Sr*x7N%?P`c&@@u-!-&cV@19O3S0fZ<8ycBc6 zzlz%-hk5=fdAsUK#m*4@zBGlEHVWFME`@o&a@gtO1>~?VrRa*e4s{mPp)6)hr-tk2 z3w6mm=p_1R-gQ*nlbvy+?`wfS0TTk;YooYsUqo#4w=t8i76-WIIPfEMO_idA%Dz3j zL+_5|*$J!$&IP#FVsYc%=kB#-_?=zr3ed>yzL;C>T;?U-oQ ztPt&-CHLGO&^x;*d1#hADTtHr1&gHwbGy^%w}-+@Pf$AB5ww~7tQdEf)!ZQxzZb{v|!ita^f(#?gD1=;z`V6(~mJ@PJ89MbL#adN@Y^j+uN&eK~a>lk7TM{EP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000Y7Nkl(-oK($NgJs?Mo<>tE;GuNo5s0g9q1jUuPFKv5JGAw^L}E%_MFJr0-z zOam4GbATIx8S=Nuzyv9K7B~eQ2aW-s1BZeA^0y)2f>xKJWREcs_X*{J>wtN{V&Hb* z7NAh$`38YcfRBJZz(L>}U|6e8QB;I3k9y_;cLVnUw*eC)w)G6~G4M9<9&kvbBSldW zLQ<_|z*1m-LUtbjb_2U4Wm6Po6pGMv5uZmzh#J9uV7rLX*IJ#5GI~VlE?^aKFY$J6 zyD$vA1C)UGwMrEw+ah!o@G$Tk(3~<~27niU*MJ|jY854WA~Xe94LpGvdQT%mz$?JZ zz_(hxijo}>nhC4}9t6gx+^6%v8^C(ts8+F}_%A{;CCzyN7+d3YPGUNb_W@r4Coq!} z&&t0~z)W783S18?#B_RJQ{(k60y`ybR3TCnk40z-@FMU~jRLeCco+D9@S|7LfknVQ zm=U;Igy?nPSxwCp#ZM9XHP8vHl>ZOIX3RXEeG%EY5Hk+sj;A!Ah;3uteMM)PUt)jmZSQ}D+wgN3N3J`Mc z7P*!ylf;)hwYn80eOzgx;S}J{A)}2=z*7m?{5|j|%qZ9z$75!QPY3a@f2bMgNZ>jp z%!1)G+untl50;jDJP7mwy(w=)1)v=$%C8_VbATgqPs_ga$bXX~2!hIAE(n6vK@gk| z+}U{9IglMtb~mqCX}H*5KAzJw|+-tIrAmr!@+Sg%*iKlBNUryF@ZkGE0Ot zmcGfd2<3r4V76ej@eQycg%!U+Y_l;(e9h~#5=&>aVpvQv0}7P_v?IpzH_7=U_o*yG zQzd+J+4%l(;JXx7`gdZRi_c5M=h4g&%p^`FK9ah>aSKo-JEBg_%F)1l;8ut7M=^Un zr|B4DpcLi)**bk^N!h*_Z7WJd z>zaP|h&^SS3UZEiE)Cn;=#gWhiK2rb7#{?|^NvGzZ5|A1w>kRqy!cKAe+3z4O?pT^ z?9g|sC(|H0M>wv-p`ERY+4f$?_Fj^9QSDsKAw)hNVx{dVblvhj%2xh--T09qyTv$2whHa5&*KGEY6hONPDzmaxM z;Wl#DBEDyhq9skxA^B+OZQ!+CUM7!-ScdJ(TJKmc5)o>5F{Llo3qg8)?ujIA%SJt`5p$)VhC{Q8>3*J87cn=xiqJyh}+t% zIPbY_X+~6H-HZ9iMQnAFcRa}{4}7mQ&km^tkT3OS>IN=-$*l zxRV1WI+Q!>VZ(8;d13}0kRtXW`CgQy*%G4=6ch9#_O_GLwvve`Xe3T+6x0y9$<9=W z*t3NkaK@qB1P^bXi_K>|Zy@d1hvWxT6B3VrI%2*?U&4`g>>@PiP;Rn^jlsp{LC+g} zwJ7Ka?h6~0`q=~gE};m>rQJ3s6bbd$dx1P~9Q!6;Q!$&w`-IC@9mhRx^qo{6lJE3D zWLJlLtM{eYm%)VXJ7TH-Vnk7JYuqpLJm#~^Hg53nA$76&EBvH@eMr8`13&ukqtkr7 z-1C)H$}ExexF^ATH_MW$M`265<=^YBzZ_;WYa74!@IiI4`3wA{gbv9!BJw<9Dbq!A z(>`nu|MCb@vJQ*TMJ7U@Ih0$9`8K>SOc$GNeCFZ9P(+9183tATg|B(!!hf7lmTDkPC`dNu1MJ;7olO`pTJ>wRn zi-MH&(usYvtdr>0a@pF-{UR7q(oc*ZajX=fi@@J-UnBM;urURVV58XL!a?!zq9+Z! z9k=gFDVmm*=@G%}j^JFUCCw`mW53qr`w4vtYzHnl9{+TMg=nML;KBv*?Ng0{lnke3 zmBKh%#3*cJ)Gw)BGYL$79TNn<$iAikuL5l$)1jvluK2&;_L0LfZvl@1-+I!p3naIL z-e63jcGN!f5zq7xo1Fs=k${V@aouMZikLo~<}27)wrha+NAsLS2r>3`U`B{@ZI#gN z`Q)qg zMCd2UCAR_RLY!{~@TR0^3nR31p`7#0kkQ#W@u6FMQWPa+jFgU*nF72hsm$0K&c7Xa z7xQiSu%D5hj#&qG5AbLW*S;tz<+J$H52Pq6LRVlW@B;8ajY0%)64(Xo!|Y~w0<+Gk z{8^p}nAPu7F<(Vp2rR?C9Y-|*+6g=d9Mx)86u(8NEJW*o2Z8Y^_vt+F2Bwo-1xQgc zB0}ZVY&Gx%Fe#<}3<0kIFKY^>DA^MsfUAIqCCzD0nJ)v9HogY@s8y>d*%YBNcVT9K z-pi%!KpMp`@D65n@%vh(iZVJx2+Zi!GR(-;f(F^YA2R~Ci}0gwilTTfLS+_+7%c_n zCuH{lV7G|Reyv7D8QmfTFb?w-*SmrHfZMQd6&sc_z{kMbz**;{T#Cc;(qztkVZX<{9 M07*qoM6N<$g1#P`YXATM diff --git a/zero.Backoffice.UI/public/assets/zero-dark.png b/zero.Backoffice.UI/public/assets/zero-dark.png deleted file mode 100644 index d8447c3eacf2a50f8a859ac8e8742a0be0e9efdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4052 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 diff --git a/zero.Backoffice.UI/public/assets/zero-dark.svg b/zero.Backoffice.UI/public/assets/zero-dark.svg deleted file mode 100644 index 8330855d..00000000 --- a/zero.Backoffice.UI/public/assets/zero-dark.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/zero.Backoffice.UI/public/assets/zero-icon.png b/zero.Backoffice.UI/public/assets/zero-icon.png deleted file mode 100644 index 683dc9369769c023acf753169022e9c5ea6fb8b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3935 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 diff --git a/zero.Backoffice.UI/public/assets/zero-icon.svg b/zero.Backoffice.UI/public/assets/zero-icon.svg deleted file mode 100644 index 37e8f11a..00000000 --- a/zero.Backoffice.UI/public/assets/zero-icon.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/zero.Backoffice.UI/public/assets/zero.png b/zero.Backoffice.UI/public/assets/zero.png deleted file mode 100644 index e7d94bd68bbcfed547edb32f2459ff9d32bcbb6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4199 zcmV-t5SZ_YP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000G&NklsGb7bEj=VPDMPMXkMaO~rfLA4UMhKa_Gk_O> zI~q9ddSE+nendfdB9-kGwA6;gc|j zyPIU`3zodN5V!Os&Et`Hv3OQQM=#9_X!dZ>7cVbzcq`1t#1V9NTiw zeNdj$3v>V_paA3?+bZamceO{owIBFS&X)t11<>QUz)J1!uMBdFguI1{ejzvEvEVwA zsmwSqCh{F}X$3F{;h0#S2{YPx8?Yqci*#z| zKYPes92RqqZB4t$Nv1MG8gV(twnlwCst|Ar1=o4MkkD_ix21A z%&->6`(u*In=q%HFR5cvR2^hDw(35y!;hVhf~^lhlkwJkcmsU z;@m(JOM@1P^(F1SOCIt$O>V^C`t{#)F`x(}eIyW*Qlni`<4gQ0^R#wY62a~DH3PY&?FzVP=DFz(y82oae9r#V!T2BJo zYSiPiz!yHtfloqQ`3dc15ycG!h{yRl<9JrwcCU<|^RU1^tsLkzES#)kTf^n}<9HO# zt5JPTeIoY*+z&0%jnMd_N4@+BZ#`Ub{flY>SJ_UN_(&-r@ z_(Hkp_9E|kVSTHRQqDX}RRXY%(|`w28?Pqph=>bD-rK+j9xiPYa0T!(>TBq4P&*D( z>6UZ?SE9CpG9I#rfL9_qf{`~1JPN$)QHOQOF^g(gm*n4HfMZ$L+go zxT{Gi`yt@Y8j_v}RmcO?E*l{DK9(QsLw)Wy9#If3d7yfcw*t>KV9Z^>&8Yvo7oh>< zAz9=ga2w&YtquZP#HtTQst-5YG-11Bq8r53rKxS}#sOZJ=S)T_Z!USDK3&*`YH#(R x_NBU|mOI-edsIjoM}4fjhZEam5kkO!0{~%>V<=JgvY7w?002ovPDHLkV1hEP+u#5I diff --git a/zero.Backoffice.UI/public/assets/zero.svg b/zero.Backoffice.UI/public/assets/zero.svg deleted file mode 100644 index 19ffb2ca..00000000 --- a/zero.Backoffice.UI/public/assets/zero.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/zero.Backoffice.UI/public/resources/icons/feather.svg b/zero.Backoffice.UI/public/resources/icons/feather.svg deleted file mode 100644 index bb63c4cb..00000000 --- a/zero.Backoffice.UI/public/resources/icons/feather.svg +++ /dev/null @@ -1,492 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/zero.Backoffice.UI/public/resources/icons/gg.svg b/zero.Backoffice.UI/public/resources/icons/gg.svg deleted file mode 100644 index 93e07bd6..00000000 --- a/zero.Backoffice.UI/public/resources/icons/gg.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/zero.Backoffice.UI/public/test.txt b/zero.Backoffice.UI/public/test.txt deleted file mode 100644 index abc5dfba..00000000 --- a/zero.Backoffice.UI/public/test.txt +++ /dev/null @@ -1,2 +0,0 @@ - -uff \ No newline at end of file diff --git a/zero.Backoffice.UI/tsconfig.json b/zero.Backoffice.UI/tsconfig.json deleted file mode 100644 index b73718e4..00000000 --- a/zero.Backoffice.UI/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "compilerOptions": { - "target": "esnext", - "useDefineForClassFields": true, - "module": "esnext", - "moduleResolution": "node", - "strict": true, - "jsx": "preserve", - "sourceMap": true, - "resolveJsonModule": true, - "esModuleInterop": true, - "lib": [ "esnext", "dom" ] - }, - "include": [ "app/**/*.ts", "app/**/*.d.ts", "app/**/*.tsx", "app/**/*.vue", "_notimplemented/password-hash.vue" ], - "exclude": [ "node_modules" ] -} \ No newline at end of file diff --git a/zero.Backoffice.UI/vite.config.js b/zero.Backoffice.UI/vite.config.js deleted file mode 100644 index 6ef4c0b9..00000000 --- a/zero.Backoffice.UI/vite.config.js +++ /dev/null @@ -1,132 +0,0 @@ -const path = require('path'); -const fs = require('fs'); -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' -import pluginRewriteAll from 'vite-plugin-rewrite-all' - -let projectConfig = { - port: 3499, - host: 'http://localhost:2510', - plugins: ["../../Gugg/Gugg.Backoffice/Plugin"] -}; - -//let projectConfig = { -// port: 3399, -// host: 'http://localhost:2310', -// plugins: ["../plugins/zero.Commerce/Backoffice/Plugin", "../../Laola/Laola.Backoffice/Plugin"] -//}; - -let loadedPlugins = JSON.parse(process.env.ZERO_PLUGINS || "[]"); -if (!process.env.ZERO_PLUGINS) -{ - loadedPlugins = projectConfig.plugins; -} - -let zeroPlugins = []; - -let pluginFileContent = ''; -let pluginAliases = {}; -let pluginNames = []; -let idx = 0; - -loadedPlugins.forEach(pluginPath => -{ - const viteConfigPath = pluginPath + "/vite.plugin.js"; - const pluginConfig = require(viteConfigPath); - const resolvedPluginConfig = pluginConfig(); - zeroPlugins.push(resolvedPluginConfig); - - const name = 'zeroPlugin' + idx; - const alias = '@zeroplugin' + (idx++); - pluginAliases[alias] = path.resolve(__dirname, pluginPath); - - if (typeof resolvedPluginConfig.alias === 'object') - { - for (const key in resolvedPluginConfig.alias) - { - pluginAliases[key] = resolvedPluginConfig.alias[key]; - } - } - - pluginNames.push(name); - pluginFileContent += "import " + name + " from '" + alias + "/plugin';\n"; -}); - -pluginFileContent += "export default [ " + pluginNames.join(', ') + " ];"; - -fs.writeFile(path.resolve(__dirname, 'app/plugins.generated.ts'), pluginFileContent, err => -{ - if (err) - { - console.error(err) - return - } - //file written successfully -}) - -let config = defineConfig({ - server: { - port: process.env.PORT || projectConfig.port, - cors: true, - proxy: { - '/zero/api': { - target: projectConfig.host, - changeOrigin: true, - secure: false, - ws: false - }, - '/uploads': { - target: projectConfig.host, - changeOrigin: true, - secure: false, - ws: false - } - } - }, - resolve: { - alias: { - vue: path.resolve(__dirname, 'node_modules/@vue/compat'), - zero: path.resolve(__dirname, 'app'), - zeroworkers: path.resolve(__dirname, 'app/modules/preview'), - ...pluginAliases, - } - }, - plugins: [ - pluginRewriteAll(), - vue({ - template: { - compilerOptions: { - isCustomElement: tag => tag == 'content', - compatConfig: { - MODE: 2 - } - } - } - }), - ...zeroPlugins - ], - build: { - manifest: true, - outDir: 'dist/zero', - minify: 'esbuild', - //terserOptions: { - // compress: false - //}, - rollupOptions: { - output: { - format: 'es', - entryFileNames: `[name].[hash].js`, - chunkFileNames: `[name].[hash].js`, - assetFileNames: `[name].[hash].[ext]` - } - } - } -}); - -if (process.env.NODE_ENV === 'production') -{ - config.base = '/zero/'; - config.resolve.alias.dayjs = 'node_modules/dayjs/esm/index.js'; -} - -export default config; \ No newline at end of file diff --git a/zero.Backoffice.UI/wipe.js b/zero.Backoffice.UI/wipe.js deleted file mode 100644 index bbf58f9b..00000000 --- a/zero.Backoffice.UI/wipe.js +++ /dev/null @@ -1,25 +0,0 @@ -const fs = require('fs'); - -const wipeDependencies = () => -{ - const file = fs.readFileSync('package.json'); - const content = JSON.parse(file); - for (const devDep in content.devDependencies) - { - content.devDependencies[devDep] = '*'; - } - for (const dep in content.dependencies) - { - content.dependencies[dep] = '*'; - } - fs.writeFileSync('package.json', JSON.stringify(content)); -}; - -if (require.main === module) -{ - wipeDependencies(); -} -else -{ - module.exports = wipeDependencies; -} \ No newline at end of file diff --git a/zero.Raven.IdentityDemo/ScaffoldingReadMe.txt b/zero.Raven.IdentityDemo/ScaffoldingReadMe.txt deleted file mode 100644 index 6e6208dc..00000000 --- a/zero.Raven.IdentityDemo/ScaffoldingReadMe.txt +++ /dev/null @@ -1,3 +0,0 @@ -Support for ASP.NET Core Identity was added to your project. - -For setup and configuration information, see https://go.microsoft.com/fwlink/?linkid=2116645. diff --git a/zero.sln b/zero.sln index 0d456af1..c010669a 100644 --- a/zero.sln +++ b/zero.sln @@ -3,23 +3,15 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.0.31912.275 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "zero.Commerce", "plugins\zero.Commerce\zero.Commerce.csproj", "{63A8AD15-15F0-4555-BD62-C38B4465FFC1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "zero.Stories", "plugins\zero.Stories\zero.Stories.csproj", "{C23CF90A-DB90-427F-816C-0E2FE20E29D0}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "zero.Forms", "plugins\zero.Forms\zero.Forms.csproj", "{A8E5F34F-5400-4F92-96C6-7F91645BC220}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "plugins", "plugins", "{6FAA92A8-CA1A-48EA-9857-C9092971B4D1}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "zero.Core", "zero.Core\zero.Core.csproj", "{CED2A7FA-8D35-4A2A-AF57-8B95307547CB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zero", "zero\zero.csproj", "{33CD6E46-CD81-42C3-9019-C0EAD557EE99}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "zero", "zero\zero.csproj", "{33CD6E46-CD81-42C3-9019-C0EAD557EE99}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "legacy", "legacy", "{93A1CCEB-A323-445E-8116-4575C5939B46}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zero.Raven", "zero.Raven\zero.Raven.csproj", "{DC79D7EA-FAA1-4701-9C36-8295CD1C45D0}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "zero.Raven", "zero.Raven\zero.Raven.csproj", "{DC79D7EA-FAA1-4701-9C36-8295CD1C45D0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "zero.Raven.IdentityDemo", "zero.Raven.IdentityDemo\zero.Raven.IdentityDemo.csproj", "{05C829D6-3052-40DB-9282-3BDFCDAE0F05}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "zero.Raven.IdentityDemo", "zero.Raven.IdentityDemo\zero.Raven.IdentityDemo.csproj", "{05C829D6-3052-40DB-9282-3BDFCDAE0F05}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -27,18 +19,6 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {63A8AD15-15F0-4555-BD62-C38B4465FFC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {63A8AD15-15F0-4555-BD62-C38B4465FFC1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {63A8AD15-15F0-4555-BD62-C38B4465FFC1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {63A8AD15-15F0-4555-BD62-C38B4465FFC1}.Release|Any CPU.Build.0 = Release|Any CPU - {C23CF90A-DB90-427F-816C-0E2FE20E29D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C23CF90A-DB90-427F-816C-0E2FE20E29D0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C23CF90A-DB90-427F-816C-0E2FE20E29D0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C23CF90A-DB90-427F-816C-0E2FE20E29D0}.Release|Any CPU.Build.0 = Release|Any CPU - {A8E5F34F-5400-4F92-96C6-7F91645BC220}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A8E5F34F-5400-4F92-96C6-7F91645BC220}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A8E5F34F-5400-4F92-96C6-7F91645BC220}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A8E5F34F-5400-4F92-96C6-7F91645BC220}.Release|Any CPU.Build.0 = Release|Any CPU {CED2A7FA-8D35-4A2A-AF57-8B95307547CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CED2A7FA-8D35-4A2A-AF57-8B95307547CB}.Debug|Any CPU.Build.0 = Debug|Any CPU {CED2A7FA-8D35-4A2A-AF57-8B95307547CB}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -60,9 +40,6 @@ Global HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {63A8AD15-15F0-4555-BD62-C38B4465FFC1} = {6FAA92A8-CA1A-48EA-9857-C9092971B4D1} - {C23CF90A-DB90-427F-816C-0E2FE20E29D0} = {6FAA92A8-CA1A-48EA-9857-C9092971B4D1} - {A8E5F34F-5400-4F92-96C6-7F91645BC220} = {6FAA92A8-CA1A-48EA-9857-C9092971B4D1} {CED2A7FA-8D35-4A2A-AF57-8B95307547CB} = {93A1CCEB-A323-445E-8116-4575C5939B46} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution From 6e5702c10cba418d3b3e15540480af2122c65878 Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Sat, 11 Mar 2023 00:05:55 +0100 Subject: [PATCH 2/6] media --- zero.Raven/Operations/RavenOperations.cs | 3 +- zero.Raven/ZeroRavenModule.cs | 6 +- zero/Media/IZeroMediaStoreDbProvider.cs | 29 ++++ .../Processors/RotateWebProcessor.cs | 49 +++++++ zero/Media/MediaManagement.cs | 10 +- zero/Media/MediaManagementExtensions.cs | 8 +- zero/Media/ZeroMediaModule.cs | 4 + zero/Numbers/IZeroNumberStoreDbProvider.cs | 35 +++++ zero/Numbers/ZeroNumberModule.cs | 1 + zero/Routing/RequestUrlResolver.cs | 128 ++++++++++++++++++ zero/Routing/ZeroRoutingModule.cs | 12 ++ zero/Utils/IdGenerator.cs | 13 +- zero/ZeroBuilder.cs | 3 +- 13 files changed, 285 insertions(+), 16 deletions(-) create mode 100644 zero/Media/ImageSharp/Processors/RotateWebProcessor.cs create mode 100644 zero/Routing/RequestUrlResolver.cs create mode 100644 zero/Routing/ZeroRoutingModule.cs diff --git a/zero.Raven/Operations/RavenOperations.cs b/zero.Raven/Operations/RavenOperations.cs index 35766dab..1311a7e1 100644 --- a/zero.Raven/Operations/RavenOperations.cs +++ b/zero.Raven/Operations/RavenOperations.cs @@ -111,7 +111,8 @@ public partial class RavenOperations : IRavenOperations /// public virtual T WhenActive(T model) where T : ZeroIdEntity, new() { - return model != null && (model is not ZeroEntity || (model as ZeroEntity).IsActive) && (model is not ISupportsSoftDelete || !(model as ISupportsSoftDelete).IsDeleted) ? model : default; + return model; // TODO should we really use this? I tried to get data in a custom backend but couldn't because of this + //return model != null && (model is not ZeroEntity || (model as ZeroEntity).IsActive) && (model is not ISupportsSoftDelete || !(model as ISupportsSoftDelete).IsDeleted) ? model : default; } } diff --git a/zero.Raven/ZeroRavenModule.cs b/zero.Raven/ZeroRavenModule.cs index 40b7b361..39cb1326 100644 --- a/zero.Raven/ZeroRavenModule.cs +++ b/zero.Raven/ZeroRavenModule.cs @@ -31,9 +31,9 @@ internal class ZeroRavenModule : ZeroModule services.AddTransient(); services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); + services.Replace(ServiceLifetime.Scoped); + services.Replace(ServiceLifetime.Scoped); + services.Replace(ServiceLifetime.Scoped); services.AddOptions(); services.AddOptions().Bind(configuration.GetSection("Zero:Raven")); diff --git a/zero/Media/IZeroMediaStoreDbProvider.cs b/zero/Media/IZeroMediaStoreDbProvider.cs index db15fe01..69fe93b2 100644 --- a/zero/Media/IZeroMediaStoreDbProvider.cs +++ b/zero/Media/IZeroMediaStoreDbProvider.cs @@ -13,4 +13,33 @@ public interface IZeroMediaStoreDbProvider Task> Update(T model, CancellationToken ct = default) where T : ZeroEntity, new(); Task> Delete(T model, CancellationToken ct = default) where T : ZeroEntity, new(); +} + + +public class EmptyZeroMediaStoreDbProvider : IZeroMediaStoreDbProvider +{ + public Task> Create(T model, CancellationToken ct = default) where T : ZeroEntity, new() + { + throw new NotImplementedException(); + } + + public Task> Delete(T model, CancellationToken ct = default) where T : ZeroEntity, new() + { + throw new NotImplementedException(); + } + + public Task Find(Expression> expression, CancellationToken ct = default) where T : ZeroEntity + { + throw new NotImplementedException(); + } + + public Task> FindAll(Expression> expression, CancellationToken ct = default) where T : ZeroEntity + { + throw new NotImplementedException(); + } + + public Task> Update(T model, CancellationToken ct = default) where T : ZeroEntity, new() + { + throw new NotImplementedException(); + } } \ No newline at end of file diff --git a/zero/Media/ImageSharp/Processors/RotateWebProcessor.cs b/zero/Media/ImageSharp/Processors/RotateWebProcessor.cs new file mode 100644 index 00000000..64eb47d4 --- /dev/null +++ b/zero/Media/ImageSharp/Processors/RotateWebProcessor.cs @@ -0,0 +1,49 @@ +using Microsoft.Extensions.Logging; +using SixLabors.ImageSharp.Processing; +using SixLabors.ImageSharp.Web; +using SixLabors.ImageSharp.Web.Commands; +using SixLabors.ImageSharp.Web.Processors; +using System.Globalization; + +namespace zero.Media.ImageSharp.Processors; + +public class RotateWebProcessor : IImageWebProcessor +{ + // + /// The command constant for quality. + /// + public const string Rotate = "rotate"; + + /// + /// The reusable collection of commands. + /// + private static readonly IEnumerable RotateCommands + = new[] { Rotate }; + + /// + public IEnumerable Commands { get; } = RotateCommands; + + /// + public FormattedImage Process( + FormattedImage image, + ILogger logger, + CommandCollection commands, + CommandParser parser, + CultureInfo culture) + { + if (commands.Contains(Rotate)) + { + float degrees = parser.ParseValue(commands.GetValueOrDefault(Rotate), culture); + + if (degrees != 0) + { + image.Image.Mutate(x => x.Rotate(degrees)); + } + } + + return image; + } + + /// + public bool RequiresTrueColorPixelFormat(CommandCollection commands, CommandParser parser, CultureInfo culture) => true; +} diff --git a/zero/Media/MediaManagement.cs b/zero/Media/MediaManagement.cs index c01894c8..542ed944 100644 --- a/zero/Media/MediaManagement.cs +++ b/zero/Media/MediaManagement.cs @@ -83,6 +83,10 @@ public class MediaManagement : IMediaManagement /// public virtual async Task> DeleteFile(Media file) { + if (file == null) + { + return Result.Success(); + } await FileSystem.DeleteDirectory(file.FileId, true); return await Db.Delete(file); } @@ -90,11 +94,11 @@ public class MediaManagement : IMediaManagement /// - public virtual async Task> UploadFile(Stream fileStream, string filename, string folderId = null, Action onBeforeSave = null, CancellationToken cancellationToken = default) + public virtual async Task> UploadFile(Stream fileStream, string filename, string folderId = null, Action onBeforeSave = null, bool persist = true, CancellationToken cancellationToken = default) { Result result = await Creator.UploadFile(fileStream, filename, folderId, cancellationToken); - if (!result.IsSuccess) + if (!result.IsSuccess || !persist) { return result; } @@ -180,7 +184,7 @@ public interface IMediaManagement /// /// Uploads a file and persists it /// - Task> UploadFile(Stream fileStream, string filename, string folderId = null, Action onBeforeSave = null, CancellationToken cancellationToken = default); + Task> UploadFile(Stream fileStream, string filename, string folderId = null, Action onBeforeSave = null, bool persist = true, CancellationToken cancellationToken = default); /// /// Get a media folder by id diff --git a/zero/Media/MediaManagementExtensions.cs b/zero/Media/MediaManagementExtensions.cs index 3fc4f3ef..aca499ec 100644 --- a/zero/Media/MediaManagementExtensions.cs +++ b/zero/Media/MediaManagementExtensions.cs @@ -36,20 +36,20 @@ namespace zero.Media /// /// Uploads a file and persists it /// - public static async Task> UploadFile(this IMediaManagement media, IFormFile formFile, string folderId = null, Action onBeforeSave = null, CancellationToken cancellationToken = default) + public static async Task> UploadFile(this IMediaManagement media, IFormFile formFile, string folderId = null, Action onBeforeSave = null, bool persist = true, CancellationToken cancellationToken = default) { using Stream stream = formFile.OpenReadStream(); - return await media.UploadFile(stream, formFile.FileName, folderId, onBeforeSave, cancellationToken); + return await media.UploadFile(stream, formFile.FileName, folderId, onBeforeSave, persist, cancellationToken); } /// /// Uploads a file and persists it /// - public static async Task> UploadFile(this IMediaManagement media, byte[] fileBytes, string filename, string folderId = null, Action onBeforeSave = null, CancellationToken cancellationToken = default) + public static async Task> UploadFile(this IMediaManagement media, byte[] fileBytes, string filename, string folderId = null, Action onBeforeSave = null, bool persist = true, CancellationToken cancellationToken = default) { using Stream stream = new MemoryStream(fileBytes); - return await media.UploadFile(stream, filename, folderId, onBeforeSave, cancellationToken); + return await media.UploadFile(stream, filename, folderId, onBeforeSave, persist, cancellationToken); } diff --git a/zero/Media/ZeroMediaModule.cs b/zero/Media/ZeroMediaModule.cs index 7dabfc9b..5aabadf2 100644 --- a/zero/Media/ZeroMediaModule.cs +++ b/zero/Media/ZeroMediaModule.cs @@ -9,6 +9,8 @@ using Microsoft.AspNetCore.Routing; using SixLabors.ImageSharp.Web.Caching; using SixLabors.ImageSharp.Web.DependencyInjection; using zero.Media.ImageSharp; +using zero.Numbers; +using zero.Media.ImageSharp.Processors; namespace zero.Media; @@ -20,6 +22,7 @@ internal class ZeroMediaModule : ZeroModule .SetRequestParser() .ClearProviders() .AddProvider() + .AddProcessor() .Configure(configuration.GetSection("Zero:Media:ImageSharp:Cache")); //configuration.AddJsonFile(Path.Combine(Directory.GetCurrentDirectory(), "Config/imaging.json"), true, true); @@ -35,6 +38,7 @@ internal class ZeroMediaModule : ZeroModule services.AddScoped(); services.AddScoped(); services.AddScoped(); + services.AddScoped(); services.AddOptions().Bind(configuration.GetSection("Zero:Media")).Configure(opts => { diff --git a/zero/Numbers/IZeroNumberStoreDbProvider.cs b/zero/Numbers/IZeroNumberStoreDbProvider.cs index b717e47f..51f4ad35 100644 --- a/zero/Numbers/IZeroNumberStoreDbProvider.cs +++ b/zero/Numbers/IZeroNumberStoreDbProvider.cs @@ -1,4 +1,5 @@ using System.Linq.Expressions; +using zero.Numbers; namespace zero.Numbers; @@ -15,4 +16,38 @@ public interface IZeroNumberStoreDbProvider Task> Update(T model, CancellationToken ct = default) where T : ZeroEntity, new(); Task> Delete(T model, CancellationToken ct = default) where T : ZeroEntity, new(); +} + + +public class EmptyZeroNumberStoreDbProvider : IZeroNumberStoreDbProvider +{ + public Task> Create(T model, CancellationToken ct = default) where T : ZeroEntity, new() + { + throw new NotImplementedException(); + } + + public Task> Delete(T model, CancellationToken ct = default) where T : ZeroEntity, new() + { + throw new NotImplementedException(); + } + + public Task Find(Expression> expression, CancellationToken ct = default) where T : ZeroEntity + { + throw new NotImplementedException(); + } + + public Task> FindAll(Expression> expression, CancellationToken ct = default) where T : ZeroEntity + { + throw new NotImplementedException(); + } + + public Task Load(string id, CancellationToken ct = default) where T : ZeroEntity, new() + { + throw new NotImplementedException(); + } + + public Task> Update(T model, CancellationToken ct = default) where T : ZeroEntity, new() + { + throw new NotImplementedException(); + } } \ No newline at end of file diff --git a/zero/Numbers/ZeroNumberModule.cs b/zero/Numbers/ZeroNumberModule.cs index cce42dd8..c79787ad 100644 --- a/zero/Numbers/ZeroNumberModule.cs +++ b/zero/Numbers/ZeroNumberModule.cs @@ -12,5 +12,6 @@ internal class ZeroNumberModule : ZeroModule services.AddScoped(); services.AddScoped, NumberValidator>(); + services.AddScoped(); } } \ No newline at end of file diff --git a/zero/Routing/RequestUrlResolver.cs b/zero/Routing/RequestUrlResolver.cs new file mode 100644 index 00000000..0e605b5b --- /dev/null +++ b/zero/Routing/RequestUrlResolver.cs @@ -0,0 +1,128 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Logging; + +namespace zero.Routing; + +public class RequestUrlResolver : IRequestUrlResolver +{ + protected IHttpContextAccessor HttpContextAccessor { get; private set; } + + protected ILogger Logger { get; private set; } + + static string[] Protocols = new[] { "http://", "https://", "ftp://", "ftps://", "sftp://", "udp://" }; + + + public RequestUrlResolver(IHttpContextAccessor httpContextAccessor, ILogger logger) + { + HttpContextAccessor = httpContextAccessor; + Logger = logger; + } + + + /// + public bool IsAbsolute(string path) + { + if (!CanResolve()) + { + return false; + } + + if (String.IsNullOrWhiteSpace(path)) + { + return false; + } + + if (Protocols.Any(p => path.StartsWith(p, StringComparison.InvariantCultureIgnoreCase))) + { + return true; + } + + return false; + } + + + /// + public string ToAbsolute(string path) + { + if (!CanResolve()) + { + return null; + } + + if (String.IsNullOrWhiteSpace(path)) + { + return GetRoot(); + } + + if (Protocols.Any(p => path.StartsWith(p, StringComparison.InvariantCultureIgnoreCase))) + { + return path; + } + + path = path.Trim().TrimEnd('/'); + + if (path.StartsWith("~/")) + { + path = path.Substring(1); + } + if (!path.StartsWith("/")) + { + return GetRoot(includePath: true) + '/' + path; + } + + return GetRoot() + path; + } + + + /// + public string GetRoot(bool includePath = false) + { + if (!CanResolve()) + { + Logger.LogWarning("Tried to resolve an URL but no HttpRequest is available"); + return null; + } + + HttpRequest request = HttpContextAccessor.HttpContext.Request; + return $"{request.Scheme}://{request.Host.Host}{GetPortUrlPart(request)}{(includePath ? request.PathBase.ToUriComponent() : String.Empty)}"; + } + + + /// + /// Require a request in order to resolve the URL + /// + protected bool CanResolve() => HttpContextAccessor?.HttpContext?.Request != null; + + + /// + /// Resolves the port as part of the URL + /// + protected string GetPortUrlPart(HttpRequest request) + { + if (!request.Host.Port.HasValue || request.Host.Port == 80 || (request.Host.Port == 443 && request.IsHttps)) + { + return String.Empty; + } + + return ":" + request.Host.Port; + } +} + + +public interface IRequestUrlResolver +{ + /// + /// Checks whether a path is absolute or relative + /// + bool IsAbsolute(string path); + + /// + /// Converts a relative to an absolute path for the currently used domain + /// + string ToAbsolute(string path); + + /// + /// Get protocol + domain and optional port + /// + string GetRoot(bool includePath = false); +} diff --git a/zero/Routing/ZeroRoutingModule.cs b/zero/Routing/ZeroRoutingModule.cs new file mode 100644 index 00000000..8ff86cbb --- /dev/null +++ b/zero/Routing/ZeroRoutingModule.cs @@ -0,0 +1,12 @@ +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace zero.Routing; + +internal class ZeroRoutingModule : ZeroModule +{ + public override void ConfigureServices(IServiceCollection services, IConfiguration configuration) + { + services.AddScoped(); + } +} \ No newline at end of file diff --git a/zero/Utils/IdGenerator.cs b/zero/Utils/IdGenerator.cs index 49367473..86155bd2 100644 --- a/zero/Utils/IdGenerator.cs +++ b/zero/Utils/IdGenerator.cs @@ -4,8 +4,9 @@ namespace zero.Utils; public class IdGenerator { - const string CHARS = "abcdefghijklmnopqrstuvwxyz0123456789"; - const string CHARS_COMPLEX = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-@#.:!?*"; + const string CHARS_az09 = "abcdefghijklmnopqrstuvwxyz0123456789"; + const string CHARS_azAZ09x = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-@#.:!?*"; + const string CHARS_x09 = "0123456789"; private static Random random = new(); @@ -19,7 +20,7 @@ public class IdGenerator length = 12; } - string chars = charset == Charset.az09 ? CHARS : CHARS_COMPLEX; + string chars = charset == Charset.az09 ? CHARS_az09 : charset == Charset.x09 ? CHARS_x09 : CHARS_azAZ09x; return new string(Enumerable.Repeat(chars, length).Select(s => s[random.Next(s.Length)]).ToArray()); @@ -107,6 +108,10 @@ public class IdGenerator /// /// a-z, A-Z, 0-9, _-@#.:!?* /// - azAZ09x = 1 + azAZ09x = 1, + /// + /// 0-9 + /// + x09 = 2 } } \ No newline at end of file diff --git a/zero/ZeroBuilder.cs b/zero/ZeroBuilder.cs index 987213e3..4569b257 100644 --- a/zero/ZeroBuilder.cs +++ b/zero/ZeroBuilder.cs @@ -5,6 +5,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using zero.Mvc; using zero.Numbers; +using zero.Routing; namespace zero; @@ -57,7 +58,7 @@ public class ZeroBuilder //Modules.Add(); Modules.Add(); Modules.Add(); - //Modules.Add(); + Modules.Add(); Modules.ConfigureServices(services, configuration); From 286a1477d10ba89b98c442dbe7c48a3a82ff85d7 Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Thu, 11 May 2023 10:41:01 +0200 Subject: [PATCH 3/6] ability to switch translation language --- zero/Localization/ConfigurationLocalizer.cs | 10 ++++---- zero/Localization/Localizer.cs | 25 +++++++++++++++++- zero/Numbers/Numbers.cs | 28 +++++++++++++++++++-- 3 files changed, 55 insertions(+), 8 deletions(-) diff --git a/zero/Localization/ConfigurationLocalizer.cs b/zero/Localization/ConfigurationLocalizer.cs index c9379fe0..6e3a9431 100644 --- a/zero/Localization/ConfigurationLocalizer.cs +++ b/zero/Localization/ConfigurationLocalizer.cs @@ -1,7 +1,4 @@ -using System.IO; -using Microsoft.AspNetCore.Hosting; -using System.Text; -using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Options; namespace zero.Localization; @@ -14,12 +11,15 @@ public class ConfigurationLocalizer : Localizer public ConfigurationLocalizer(IConfiguration configuration, IOptionsMonitor options) : base() { _configuration = configuration; + + // set default language + Language(_configuration.GetValue("Zero:Localization:Default", "de")); } protected override Translation LoadTranslation(string key) { - IConfigurationSection section = _configuration.GetSection($"Zero:Localization:{key}"); + IConfigurationSection section = _configuration.GetSection($"Zero:Localization:{LanguageCode}:{key}"); if (section == null) { diff --git a/zero/Localization/Localizer.cs b/zero/Localization/Localizer.cs index 5395cee5..e2956c30 100644 --- a/zero/Localization/Localizer.cs +++ b/zero/Localization/Localizer.cs @@ -5,9 +5,22 @@ namespace zero.Localization; public abstract class Localizer : ILocalizer { + /// + public string LanguageCode { get; private set; } = "de"; + + protected ConcurrentDictionary Cache { get; private set; } = new(); + /// + public ILocalizer Language(string languageCode) + { + Cache = new(); + LanguageCode = languageCode; + return this; + } + + /// public string Text(string key) => Text(key, null); @@ -83,7 +96,17 @@ public abstract class Localizer : ILocalizer } public interface ILocalizer -{ +{ + /// + /// Current language code + /// + string LanguageCode { get; } + + /// + /// Set language for localizer + /// + ILocalizer Language(string languageCode); + /// /// /// diff --git a/zero/Numbers/Numbers.cs b/zero/Numbers/Numbers.cs index 17901643..06c450d5 100644 --- a/zero/Numbers/Numbers.cs +++ b/zero/Numbers/Numbers.cs @@ -22,7 +22,14 @@ public class Numbers : INumbers /// - public async Task Next(string alias, DateTimeOffset? date = null, bool store = true) + public Task Next(string alias, DateTimeOffset? date = null, bool store = true) + { + return Next(alias, date.HasValue ? DateOnly.FromDateTime(date.Value.Date) : null, store); + } + + + /// + public async Task Next(string alias, DateOnly? date = null, bool store = true) { Number number = await Get(alias); string key = GetCounterKey(number); @@ -92,10 +99,17 @@ public class Numbers : INumbers /// public string Compile(string template, long value, int minLength, DateTimeOffset? date = null) + { + return Compile(template, value, minLength, date.HasValue ? DateOnly.FromDateTime(date.Value.Date) : null); + } + + + /// + public string Compile(string template, long value, int minLength, DateOnly? date = null) { string output = template; MatchCollection matches = templateRegex.Matches(output); - DateTimeOffset usedDate = date ?? DateTimeOffset.Now; + DateOnly usedDate = date ?? DateOnly.FromDateTime(DateTime.Now); foreach (Match match in matches) { @@ -228,6 +242,11 @@ public interface INumbers /// Task Next(string alias, DateTimeOffset? date = null, bool store = true); + /// + /// Get the next available number for the specified template + /// + Task Next(string alias, DateOnly? date = null, bool store = true); + /// /// Resets the current counter for the specified template /// @@ -242,4 +261,9 @@ public interface INumbers /// Renders the final output from the template and the value /// string Compile(string template, long value, int minLength, DateTimeOffset? date = null); + + /// + /// Renders the final output from the template and the value + /// + string Compile(string template, long value, int minLength, DateOnly? date = null); } \ No newline at end of file From 2aad6c06bde7550973bc4d9d149ea9e00e041906 Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Thu, 11 May 2023 11:35:01 +0200 Subject: [PATCH 4/6] inline subscriptions for messages --- .../Messages/MessageAggregator.cs | 13 ++++++++ .../Messages/MessageSubscription.cs | 33 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/zero/Communication/Messages/MessageAggregator.cs b/zero/Communication/Messages/MessageAggregator.cs index cd6a3f37..2ffb3c2a 100644 --- a/zero/Communication/Messages/MessageAggregator.cs +++ b/zero/Communication/Messages/MessageAggregator.cs @@ -1,4 +1,5 @@ using System.Collections.Concurrent; +using System.Linq.Expressions; namespace zero.Communication; @@ -26,6 +27,13 @@ public class MessageAggregator : IMessageAggregator } + /// + public void Subscribe(Expression> handle) where TMessage : class, IMessage + { + Subscription.Add(new InlineMessageSubscription(handle)); + } + + /// public void Activate() where TMessage : class, IMessage @@ -43,6 +51,11 @@ public interface IMessageAggregator /// Task Publish(TMessage message) where TMessage : class, IMessage; + /// + /// Subscribe to a message + /// + void Subscribe(Expression> handle) where TMessage : class, IMessage; + /// /// Subscribes the specified handler to the spified message type /// diff --git a/zero/Communication/Messages/MessageSubscription.cs b/zero/Communication/Messages/MessageSubscription.cs index 3698f175..203825fb 100644 --- a/zero/Communication/Messages/MessageSubscription.cs +++ b/zero/Communication/Messages/MessageSubscription.cs @@ -1,4 +1,5 @@ using Microsoft.Extensions.DependencyInjection; +using System.Linq.Expressions; using System.Reflection; namespace zero.Communication; @@ -33,6 +34,38 @@ internal class MessageSubscription : IMessageSubscrip } +internal class InlineMessageSubscription : IMessageSubscription + where TMessage : class, IMessage +{ + private Expression> _handler; + + public InlineMessageSubscription(Expression> handler) + { + _handler = handler; + } + + + public bool CanDeliver() + { + return typeof(TMessage).GetTypeInfo().IsAssignableFrom(typeof(T)); + } + + public async Task Deliver(IServiceProvider serviceProvider, object message) + { + if (message == null) + { + throw new ArgumentNullException(nameof(message)); + } + if (!(message is TMessage)) + { + throw new ArgumentException($"{nameof(message)} must be of type '{typeof(TMessage).FullName}'"); + } + + await _handler.Compile()((TMessage)message); + } +} + + public interface IMessageSubscription { bool CanDeliver(); From 881990264ccf2277d073caa742c7cf7353dc7dee Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Thu, 11 May 2023 11:35:16 +0200 Subject: [PATCH 5/6] culture updates for requests --- zero/Configuration/ZeroOptions.cs | 8 ++ zero/Localization/ConfigurationLocalizer.cs | 5 +- zero/Localization/CultureChangeMessage.cs | 8 ++ zero/Localization/CultureResolver.cs | 84 ++++++++++++++++++--- zero/Localization/Localizer.cs | 35 ++++----- 5 files changed, 105 insertions(+), 35 deletions(-) create mode 100644 zero/Localization/CultureChangeMessage.cs diff --git a/zero/Configuration/ZeroOptions.cs b/zero/Configuration/ZeroOptions.cs index 483bf31a..d469e274 100644 --- a/zero/Configuration/ZeroOptions.cs +++ b/zero/Configuration/ZeroOptions.cs @@ -9,6 +9,9 @@ public class ZeroOptions : IZeroOptions /// public string Version { get; set; } + /// + public string Language { get; set; } = "en_US"; + /// public TimeSpan TokenExpiration { get; set; } @@ -43,6 +46,11 @@ public interface IZeroOptions /// string Version { get; set; } + /// + /// ISO Code for language + /// + public string Language { get; set; } + /// /// Expiration of a generated change token for an entity /// diff --git a/zero/Localization/ConfigurationLocalizer.cs b/zero/Localization/ConfigurationLocalizer.cs index 6e3a9431..4fa20668 100644 --- a/zero/Localization/ConfigurationLocalizer.cs +++ b/zero/Localization/ConfigurationLocalizer.cs @@ -8,12 +8,9 @@ public class ConfigurationLocalizer : Localizer private IConfiguration _configuration; - public ConfigurationLocalizer(IConfiguration configuration, IOptionsMonitor options) : base() + public ConfigurationLocalizer(IConfiguration configuration, ICultureResolver cultureResolver, IOptionsMonitor options) : base(cultureResolver) { _configuration = configuration; - - // set default language - Language(_configuration.GetValue("Zero:Localization:Default", "de")); } diff --git a/zero/Localization/CultureChangeMessage.cs b/zero/Localization/CultureChangeMessage.cs new file mode 100644 index 00000000..5f73d7f6 --- /dev/null +++ b/zero/Localization/CultureChangeMessage.cs @@ -0,0 +1,8 @@ +using System.Globalization; + +namespace zero.Localization; + +public class CultureChangeMessage : IMessage +{ + public CultureInfo Culture { get; set; } +} \ No newline at end of file diff --git a/zero/Localization/CultureResolver.cs b/zero/Localization/CultureResolver.cs index c612145a..bbf98a8a 100644 --- a/zero/Localization/CultureResolver.cs +++ b/zero/Localization/CultureResolver.cs @@ -1,57 +1,117 @@ using FluentValidation; +using Microsoft.AspNetCore.Connections.Features; using Microsoft.Extensions.Logging; using System.Globalization; +using System.Linq.Expressions; using System.Security.Claims; namespace zero.Localization; public class CultureResolver : ICultureResolver { + /// + public CultureInfo Current { get; protected set; } + protected ILogger Logger { get; private set; } + protected IMessageAggregator MessageAggregator { get; private set; } - public CultureResolver(ILogger logger) + + public CultureResolver(ILogger logger, IMessageAggregator messageAggregator) { Logger = logger; + MessageAggregator = messageAggregator; } /// public Task Resolve(IZeroContext context) { - //var session = context.Store.Session(); - //Language language = await session.Query().FirstOrDefaultAsync(); - string isoCode = "de-AT"; + if (!TryConvert(context.Options.Language, out CultureInfo culture)) + { + culture = CultureInfo.CurrentCulture; + } + Set(culture); + + return Task.FromResult(culture); + } + + + /// + public bool TryConvert(string isoCode, out CultureInfo culture) + { try { - CultureInfo culture = CultureInfo.CreateSpecificCulture(isoCode); + culture = CultureInfo.CreateSpecificCulture(isoCode.Replace('_', '-')); if (culture.ThreeLetterISOLanguageName.IsNullOrEmpty()) { throw new Exception("ThreeLetterISOLanguageName is empty"); } + if (culture.ThreeLetterISOLanguageName == "ivl") + { + throw new Exception("Invariant language is not allowed"); + } - CultureInfo.CurrentCulture = culture; - CultureInfo.CurrentUICulture = culture; - ValidatorOptions.Global.LanguageManager.Culture = culture; + return true; } catch (Exception ex) { - Logger.LogError(ex, "Could not create culture from Language code {code}", isoCode); - return Task.FromResult(CultureInfo.CurrentCulture); + Logger.LogWarning(ex, "Could not create culture from Language code {code}", isoCode); + culture = null; + return false; } - - return Task.FromResult(CultureInfo.CurrentCulture); + } + + + /// + public void Set(CultureInfo culture) + { + CultureInfo.CurrentCulture = culture; + CultureInfo.CurrentUICulture = culture; + ValidatorOptions.Global.LanguageManager.Culture = culture; + Current = culture; + MessageAggregator.Publish(new CultureChangeMessage() + { + Culture = culture + }); + } + + + /// + public void Subscribe(Expression> handle) + { + MessageAggregator.Subscribe(handle); } } public interface ICultureResolver { + /// + /// Current culture + /// + CultureInfo Current { get; } + /// /// Resolves the current application from either the backoffice user (in case it is backoffice request) /// or the domain (in case it is frontend request). /// Task Resolve(IZeroContext context); + + /// + /// Tries to convert an ISO code to a culture + /// + bool TryConvert(string isoCode, out CultureInfo culture); + + /// + /// Set a new culture for this request + /// + void Set(CultureInfo culture); + + /// + /// Subscribe to culture change + /// + void Subscribe(Expression> handle); } diff --git a/zero/Localization/Localizer.cs b/zero/Localization/Localizer.cs index e2956c30..d6f51af2 100644 --- a/zero/Localization/Localizer.cs +++ b/zero/Localization/Localizer.cs @@ -1,23 +1,30 @@ using System.Collections.Concurrent; +using System.Globalization; using System.Reflection; namespace zero.Localization; public abstract class Localizer : ILocalizer { - /// - public string LanguageCode { get; private set; } = "de"; - - protected ConcurrentDictionary Cache { get; private set; } = new(); + protected ICultureResolver CultureResolver { get; private set; } - /// - public ILocalizer Language(string languageCode) + protected string LanguageCode { get; set; } + + + public Localizer(ICultureResolver cultureResolver) { - Cache = new(); - LanguageCode = languageCode; - return this; + CultureResolver = cultureResolver; + CultureResolver.Subscribe(msg => OnCultureChange(msg.Culture)); + OnCultureChange(CultureResolver.Current); + } + + + Task OnCultureChange(CultureInfo culture) + { + LanguageCode = culture.Name.Split(new char[] { '_', '-' })[0]; + return Task.CompletedTask; } @@ -97,16 +104,6 @@ public abstract class Localizer : ILocalizer public interface ILocalizer { - /// - /// Current language code - /// - string LanguageCode { get; } - - /// - /// Set language for localizer - /// - ILocalizer Language(string languageCode); - /// /// /// From f0b1a008b97e5ce25266ae032771e510d96167d9 Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Mon, 29 May 2023 23:40:44 +0200 Subject: [PATCH 6/6] Update ValidatorExtensions.cs --- zero.Raven/Extensions/ValidatorExtensions.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/zero.Raven/Extensions/ValidatorExtensions.cs b/zero.Raven/Extensions/ValidatorExtensions.cs index e1f75019..2b90f19f 100644 --- a/zero.Raven/Extensions/ValidatorExtensions.cs +++ b/zero.Raven/Extensions/ValidatorExtensions.cs @@ -69,7 +69,6 @@ public static class ValidatorExtensions /// Check if this reference exists and is an entity which can be referenced /// public static IRuleBuilderOptions Exists(this IRuleBuilder ruleBuilder, IRavenOperations ops) - where T : ZeroIdEntity where TCollection : ZeroIdEntity { return ruleBuilder.MustAsync(async (entity, id, context, cancellation) =>