typo3-typescript-sources 13.4.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/sync-and-publish.yml +265 -0
- package/.last-synced-tag +1 -0
- package/LICENSE.txt +339 -0
- package/README-TYPO3.md +166 -0
- package/README.md +28 -0
- package/adminpanel/admin-panel.ts +375 -0
- package/adminpanel/modules/cache.ts +27 -0
- package/adminpanel/modules/preview.ts +75 -0
- package/backend/action-button/abstract-action.ts +22 -0
- package/backend/action-button/deferred-action.ts +41 -0
- package/backend/action-button/immediate-action.ts +31 -0
- package/backend/action-dispatcher.ts +104 -0
- package/backend/ajax-data-handler/message-interface.ts +18 -0
- package/backend/ajax-data-handler/response-interface.ts +20 -0
- package/backend/ajax-data-handler.ts +214 -0
- package/backend/backend-exception.ts +22 -0
- package/backend/broadcast-message.ts +50 -0
- package/backend/broadcast-service.ts +52 -0
- package/backend/browse-database.ts +38 -0
- package/backend/clear-cache.ts +88 -0
- package/backend/clipboard-panel.ts +240 -0
- package/backend/close-current-window.ts +2 -0
- package/backend/code-editor/autocomplete/completion-result.ts +105 -0
- package/backend/code-editor/autocomplete/ts-code-completion.ts +142 -0
- package/backend/code-editor/autocomplete/ts-parser.ts +485 -0
- package/backend/code-editor/autocomplete/ts-ref.ts +164 -0
- package/backend/code-editor/element/code-mirror-element.ts +282 -0
- package/backend/code-editor/language/typoscript.ts +181 -0
- package/backend/code-editor/stream-parser/typoscript.ts +1600 -0
- package/backend/color-picker.ts +158 -0
- package/backend/color-scheme-switch.ts +179 -0
- package/backend/column-selector-button.ts +302 -0
- package/backend/context-help.ts +68 -0
- package/backend/context-menu-actions.ts +322 -0
- package/backend/context-menu.ts +751 -0
- package/backend/copy-to-clipboard.ts +79 -0
- package/backend/date-time-picker.ts +270 -0
- package/backend/document-save-actions.ts +159 -0
- package/backend/drag-tooltip.ts +285 -0
- package/backend/drag-uploader.ts +914 -0
- package/backend/element/alert-element.ts +116 -0
- package/backend/element/dispatch-modal-button.ts +50 -0
- package/backend/element/draggable-resizable-element.ts +249 -0
- package/backend/element/editable-page-title.ts +306 -0
- package/backend/element/icon-element.ts +84 -0
- package/backend/element/immediate-action-element.ts +89 -0
- package/backend/element/pagination.ts +59 -0
- package/backend/element/progress-bar-element.ts +172 -0
- package/backend/element/progress-tracker-element.ts +119 -0
- package/backend/element/pseudo-button.ts +58 -0
- package/backend/element/spinner-element.ts +51 -0
- package/backend/element/thumbnail-element.ts +80 -0
- package/backend/element-browser.ts +182 -0
- package/backend/enum/data-transfer-types.ts +21 -0
- package/backend/enum/icon-types.ts +31 -0
- package/backend/enum/key-types.ts +27 -0
- package/backend/enum/severity.ts +20 -0
- package/backend/enum/viewport/scaffold-identifier.ts +24 -0
- package/backend/event/client-request.ts +25 -0
- package/backend/event/consumable.ts +18 -0
- package/backend/event/consumer-scope.ts +54 -0
- package/backend/event/event-dispatcher.ts +26 -0
- package/backend/event/interaction-request-assignment.ts +24 -0
- package/backend/event/interaction-request-map.ts +75 -0
- package/backend/event/interaction-request.ts +48 -0
- package/backend/event/trigger-request.ts +56 -0
- package/backend/form/submit-interceptor.ts +66 -0
- package/backend/form-engine/container/files-control-container.ts +716 -0
- package/backend/form-engine/container/flex-form-container-container.ts +166 -0
- package/backend/form-engine/container/flex-form-section-container.ts +210 -0
- package/backend/form-engine/container/inline-control-container.ts +1230 -0
- package/backend/form-engine/container/site-language-container.ts +616 -0
- package/backend/form-engine/element/abstract-sortable-select-items.ts +186 -0
- package/backend/form-engine/element/category-element.ts +160 -0
- package/backend/form-engine/element/color-element.ts +81 -0
- package/backend/form-engine/element/datetime-element.ts +66 -0
- package/backend/form-engine/element/extra/char-counter.ts +112 -0
- package/backend/form-engine/element/extra/select-box-filter.ts +85 -0
- package/backend/form-engine/element/folder-element.ts +66 -0
- package/backend/form-engine/element/group-element.ts +47 -0
- package/backend/form-engine/element/json-element.ts +52 -0
- package/backend/form-engine/element/link-element.ts +121 -0
- package/backend/form-engine/element/mfa-info-element.ts +169 -0
- package/backend/form-engine/element/modifier/resizable.ts +27 -0
- package/backend/form-engine/element/modifier/tabbable.ts +29 -0
- package/backend/form-engine/element/online-media-form-element.ts +65 -0
- package/backend/form-engine/element/password-element.ts +71 -0
- package/backend/form-engine/element/select-multiple-side-by-side-element.ts +83 -0
- package/backend/form-engine/element/select-single-element.ts +82 -0
- package/backend/form-engine/element/select-tree-element.ts +148 -0
- package/backend/form-engine/element/select-tree-toolbar.ts +118 -0
- package/backend/form-engine/element/select-tree.ts +210 -0
- package/backend/form-engine/element/slug-element.ts +243 -0
- package/backend/form-engine/element/suggest/result-container.ts +118 -0
- package/backend/form-engine/element/suggest/result-item.ts +90 -0
- package/backend/form-engine/element/table-permission-element.ts +101 -0
- package/backend/form-engine/element/table-wizard-element.ts +427 -0
- package/backend/form-engine/element/text-element.ts +52 -0
- package/backend/form-engine/element/text-table-element.ts +31 -0
- package/backend/form-engine/field-control/add-record.ts +40 -0
- package/backend/form-engine/field-control/edit-popup.ts +64 -0
- package/backend/form-engine/field-control/insert-clipboard.ts +50 -0
- package/backend/form-engine/field-control/link-popup.ts +53 -0
- package/backend/form-engine/field-control/list-module.ts +40 -0
- package/backend/form-engine/field-control/password-generator.ts +102 -0
- package/backend/form-engine/field-control/reset-selection.ts +48 -0
- package/backend/form-engine/field-wizard/localization-state-selector.ts +67 -0
- package/backend/form-engine/field-wizard/value-picker.ts +123 -0
- package/backend/form-engine/field-wizard/value-slider.ts +86 -0
- package/backend/form-engine/inline-relation/ajax-dispatcher.ts +124 -0
- package/backend/form-engine/inline-relation/inline-response-interface.ts +41 -0
- package/backend/form-engine-link-browser-adapter.ts +129 -0
- package/backend/form-engine-review.ts +155 -0
- package/backend/form-engine-suggest.ts +133 -0
- package/backend/form-engine-validation.ts +686 -0
- package/backend/form-engine.ts +1391 -0
- package/backend/global-event-handler.ts +252 -0
- package/backend/grid-editor.ts +1077 -0
- package/backend/hashing/md5.ts +252 -0
- package/backend/helper.ts +24 -0
- package/backend/hotkeys/hotkey-storage.ts +63 -0
- package/backend/hotkeys.ts +216 -0
- package/backend/icons.ts +236 -0
- package/backend/image-manipulation.ts +885 -0
- package/backend/info-window.ts +46 -0
- package/backend/input/clearable.ts +128 -0
- package/backend/input/index.d.ts +8 -0
- package/backend/java-script-module-import-event-handler.ts +19 -0
- package/backend/key-bindings.ts +42 -0
- package/backend/layout-module/drag-drop.ts +359 -0
- package/backend/layout-module/paste.ts +165 -0
- package/backend/link-browser.ts +89 -0
- package/backend/live-search/element/backend-search.ts +34 -0
- package/backend/live-search/element/hint.ts +33 -0
- package/backend/live-search/element/provider/default-result-item.ts +52 -0
- package/backend/live-search/element/provider/page-provider-result-item.ts +52 -0
- package/backend/live-search/element/result/item/action/action-container.ts +135 -0
- package/backend/live-search/element/result/item/action/action.ts +56 -0
- package/backend/live-search/element/result/item/item-container.ts +224 -0
- package/backend/live-search/element/result/item/item.ts +74 -0
- package/backend/live-search/element/result/result-container.ts +110 -0
- package/backend/live-search/element/result/result-detail-container.ts +50 -0
- package/backend/live-search/element/result/result-pagination.ts +122 -0
- package/backend/live-search/element/search-option-item.ts +70 -0
- package/backend/live-search/live-search-configurator.ts +54 -0
- package/backend/live-search/live-search-shortcut.ts +29 -0
- package/backend/live-search/result-types/backend-module-result-type.ts +8 -0
- package/backend/live-search/result-types/default-result-type.ts +21 -0
- package/backend/live-search/result-types/page-result-type.ts +23 -0
- package/backend/localization.ts +390 -0
- package/backend/login-refresh.ts +525 -0
- package/backend/login.ts +179 -0
- package/backend/mail-link-handler.ts +45 -0
- package/backend/modal-interface.ts +19 -0
- package/backend/modal.ts +685 -0
- package/backend/module/iframe.ts +125 -0
- package/backend/module/router.ts +275 -0
- package/backend/module-menu.ts +550 -0
- package/backend/module.ts +133 -0
- package/backend/multi-record-selection-action.ts +44 -0
- package/backend/multi-record-selection-delete-action.ts +108 -0
- package/backend/multi-record-selection-edit-action.ts +56 -0
- package/backend/multi-record-selection.ts +468 -0
- package/backend/multi-step-wizard.ts +568 -0
- package/backend/new-content-element-wizard-button.ts +51 -0
- package/backend/new-multiple-pages.ts +108 -0
- package/backend/new-record-wizard.ts +680 -0
- package/backend/notification.ts +366 -0
- package/backend/offset.ts +40 -0
- package/backend/online-media.ts +110 -0
- package/backend/page-actions.ts +91 -0
- package/backend/page-link-handler.ts +51 -0
- package/backend/pagetsconfig/pagetsconfig-includes.ts +77 -0
- package/backend/popover.ts +165 -0
- package/backend/record-download-button.ts +104 -0
- package/backend/record-link-handler.ts +31 -0
- package/backend/record-search.ts +44 -0
- package/backend/recordlist.ts +230 -0
- package/backend/resource/resource.ts +35 -0
- package/backend/security/element/csp-reports.ts +406 -0
- package/backend/security/element/sudo-mode.ts +249 -0
- package/backend/security/sudo-mode-interceptor.ts +19 -0
- package/backend/settings/editor/editable-setting.ts +231 -0
- package/backend/settings/editor.ts +451 -0
- package/backend/settings/enum/settings-mode.enum.ts +24 -0
- package/backend/settings/type/base.ts +200 -0
- package/backend/settings/type/bool.ts +56 -0
- package/backend/settings/type/color.ts +64 -0
- package/backend/settings/type/int.ts +85 -0
- package/backend/settings/type/number.ts +61 -0
- package/backend/settings/type/page.ts +100 -0
- package/backend/settings/type/string.ts +77 -0
- package/backend/settings/type/stringlist.ts +87 -0
- package/backend/severity.ts +88 -0
- package/backend/site-inline-actions.ts +32 -0
- package/backend/sortable-table.ts +208 -0
- package/backend/storage/abstract-client-storage.ts +76 -0
- package/backend/storage/browser-session.ts +28 -0
- package/backend/storage/client.ts +28 -0
- package/backend/storage/module-state-storage.ts +118 -0
- package/backend/storage/persistent.ts +204 -0
- package/backend/switch-user.ts +82 -0
- package/backend/tabs.ts +72 -0
- package/backend/telephone-link-handler.ts +40 -0
- package/backend/tests/backend/storage/browser-storage-test.ts +87 -0
- package/backend/tests/backend/storage/client-test.ts +87 -0
- package/backend/tests/backend/utility/dom-helper-test.ts +51 -0
- package/backend/tests/backend-exception-test.ts +28 -0
- package/backend/tests/element/immediate-action-element-test.ts +81 -0
- package/backend/tests/form-engine-validation-test.ts +304 -0
- package/backend/tests/grid-editor-test.ts +29 -0
- package/backend/tests/hashing/md5Test.ts +28 -0
- package/backend/tests/icons-test.ts +23 -0
- package/backend/tests/notification-test.ts +161 -0
- package/backend/tests/popover-test.ts +83 -0
- package/backend/toolbar/clear-cache-menu.ts +88 -0
- package/backend/toolbar/live-search.ts +284 -0
- package/backend/toolbar/shortcut-menu.ts +254 -0
- package/backend/toolbar/system-information-menu.ts +161 -0
- package/backend/toolbar.ts +41 -0
- package/backend/tree/file-storage-browser.ts +194 -0
- package/backend/tree/file-storage-tree-container.ts +465 -0
- package/backend/tree/file-storage-tree.ts +42 -0
- package/backend/tree/page-browser.ts +272 -0
- package/backend/tree/page-tree-element.ts +602 -0
- package/backend/tree/page-tree.ts +152 -0
- package/backend/tree/tree-module-state.ts +159 -0
- package/backend/tree/tree-node-toggle.ts +31 -0
- package/backend/tree/tree-node.ts +97 -0
- package/backend/tree/tree-toolbar.ts +117 -0
- package/backend/tree/tree.ts +1595 -0
- package/backend/url-link-handler.ts +36 -0
- package/backend/user-pass-login.ts +255 -0
- package/backend/user-settings-manager.ts +189 -0
- package/backend/utility/collapse-state-persister.ts +205 -0
- package/backend/utility/collapse-state-search.ts +183 -0
- package/backend/utility/dom-helper.ts +91 -0
- package/backend/utility/drag-drop-utility.ts +47 -0
- package/backend/utility/message-utility.ts +45 -0
- package/backend/utility/top-level-module-import.ts +32 -0
- package/backend/utility.ts +194 -0
- package/backend/viewport/abstract-container.ts +22 -0
- package/backend/viewport/content-container.ts +98 -0
- package/backend/viewport/loader.ts +28 -0
- package/backend/viewport/navigation-container.ts +119 -0
- package/backend/viewport/resizable-navigation.ts +176 -0
- package/backend/viewport/toolbar.ts +27 -0
- package/backend/viewport/topbar.ts +39 -0
- package/backend/viewport.ts +46 -0
- package/backend/window-manager.ts +84 -0
- package/backend/wizard/move-content-element.ts +107 -0
- package/backend/wizard/move-page.ts +74 -0
- package/backend/wizard.ts +331 -0
- package/belog/backend-log.ts +88 -0
- package/beuser/backend-user-listing.ts +40 -0
- package/beuser/permissions.ts +291 -0
- package/core/ajax/ajax-request-types.ts +15 -0
- package/core/ajax/ajax-request.ts +202 -0
- package/core/ajax/ajax-response.ts +57 -0
- package/core/ajax/input-transformer.ts +92 -0
- package/core/ajax/simple-response-interface.ts +5 -0
- package/core/authentication/mfa-provider/totp.ts +54 -0
- package/core/cache/dedupe-async-task.ts +95 -0
- package/core/directive/markdown.ts +82 -0
- package/core/directive/nl2br.ts +16 -0
- package/core/document-service.ts +35 -0
- package/core/event/debounce-event.ts +40 -0
- package/core/event/event-interface.ts +24 -0
- package/core/event/regular-event.ts +58 -0
- package/core/event/request-animation-frame-event.ts +42 -0
- package/core/event/throttle-event.ts +54 -0
- package/core/java-script-item-handler.ts +29 -0
- package/core/java-script-item-processor.ts +171 -0
- package/core/lit-helper.ts +126 -0
- package/core/literals.ts +17 -0
- package/core/referrer-refresh.ts +2 -0
- package/core/security-utility.ts +89 -0
- package/core/tests/ajax/ajax-request-test.ts +290 -0
- package/core/tests/ajax/input-transformer-test.ts +64 -0
- package/core/tests/cache/dedupe-async-task-test.ts +152 -0
- package/core/tests/event/throttle-event-test.ts +47 -0
- package/core/tests/literals-test.ts +24 -0
- package/core/tests/security-utility-test.ts +50 -0
- package/core/utility/types.ts +9 -0
- package/dashboard/chart-initializer.ts +136 -0
- package/dashboard/dashboard.ts +1487 -0
- package/extensionmanager/distribution-image.ts +55 -0
- package/extensionmanager/main.ts +291 -0
- package/extensionmanager/repository.ts +195 -0
- package/extensionmanager/update.ts +118 -0
- package/extensionmanager/upload-form.ts +42 -0
- package/filelist/browse-files.ts +148 -0
- package/filelist/browse-folders.ts +94 -0
- package/filelist/context-menu-actions.ts +335 -0
- package/filelist/create-folder.ts +69 -0
- package/filelist/file-delete.ts +69 -0
- package/filelist/file-list-actions.ts +132 -0
- package/filelist/file-list-dragdrop.ts +139 -0
- package/filelist/file-list-rename-handler.ts +128 -0
- package/filelist/file-list-transfer-handler.ts +138 -0
- package/filelist/file-list.ts +396 -0
- package/filelist/file-replace.ts +37 -0
- package/filelist/linkbrowser-file-handler.ts +94 -0
- package/filelist/linkbrowser-folder-handler.ts +74 -0
- package/filelist/rename-file.ts +109 -0
- package/form/backend/form-editor/component/property-grid-editor.ts +340 -0
- package/form/backend/form-editor/core.ts +2104 -0
- package/form/backend/form-editor/helper.ts +226 -0
- package/form/backend/form-editor/inspector-component.ts +2323 -0
- package/form/backend/form-editor/mediator.ts +941 -0
- package/form/backend/form-editor/modals-component.ts +433 -0
- package/form/backend/form-editor/stage-component.ts +908 -0
- package/form/backend/form-editor/tree-component.ts +548 -0
- package/form/backend/form-editor/view-model.ts +1343 -0
- package/form/backend/form-editor.ts +846 -0
- package/form/backend/form-manager/main.ts +39 -0
- package/form/backend/form-manager/view-model.ts +789 -0
- package/form/backend/form-manager.ts +180 -0
- package/form/backend/helper.ts +60 -0
- package/form/frontend/date-picker.ts +38 -0
- package/frontend/default_frontend.ts +82 -0
- package/impexp/context-menu-actions.ts +50 -0
- package/impexp/import-export.ts +62 -0
- package/indexed-search/pagination.ts +26 -0
- package/indexed-search/statistics.ts +50 -0
- package/info/translation-status.ts +48 -0
- package/install/ajax/ajax-queue.ts +83 -0
- package/install/init-install.ts +2 -0
- package/install/init-installer.ts +2 -0
- package/install/install.ts +25 -0
- package/install/installer.ts +458 -0
- package/install/message-interface.ts +18 -0
- package/install/module/abstract-inline-module.ts +27 -0
- package/install/module/abstract-interactable-module.ts +107 -0
- package/install/module/environment/environment-check.ts +92 -0
- package/install/module/environment/folder-structure.ts +145 -0
- package/install/module/environment/image-processing.ts +141 -0
- package/install/module/environment/mail-test.ts +127 -0
- package/install/module/environment/php-info.ts +50 -0
- package/install/module/environment/system-information.ts +50 -0
- package/install/module/maintenance/cache.ts +59 -0
- package/install/module/maintenance/clear-tables.ts +134 -0
- package/install/module/maintenance/clear-typo3temp-files.ts +137 -0
- package/install/module/maintenance/create-admin.ts +126 -0
- package/install/module/maintenance/database-analyzer.ts +266 -0
- package/install/module/maintenance/dump-autoload.ts +58 -0
- package/install/module/maintenance/language-packs.ts +338 -0
- package/install/module/maintenance/reset-backend-user-uc.ts +58 -0
- package/install/module/password-strength.ts +56 -0
- package/install/module/settings/change-install-tool-password.ts +101 -0
- package/install/module/settings/extension-configuration.ts +224 -0
- package/install/module/settings/features.ts +102 -0
- package/install/module/settings/local-configuration.ts +316 -0
- package/install/module/settings/presets.ts +147 -0
- package/install/module/settings/system-maintainer.ts +111 -0
- package/install/module/upgrade/core-update.ts +255 -0
- package/install/module/upgrade/extension-compat-tester.ts +195 -0
- package/install/module/upgrade/extension-scanner.ts +381 -0
- package/install/module/upgrade/tca-ext-tables-check.ts +93 -0
- package/install/module/upgrade/tca-migrations-check.ts +101 -0
- package/install/module/upgrade/upgrade-docs.ts +310 -0
- package/install/module/upgrade/upgrade-wizards.ts +612 -0
- package/install/renderable/clearable.ts +113 -0
- package/install/renderable/flash-message.ts +64 -0
- package/install/renderable/info-box.ts +66 -0
- package/install/renderable/language-packs.ts +304 -0
- package/install/renderable/offset-group.ts +38 -0
- package/install/renderable/severity.ts +49 -0
- package/install/renderable/wrap-group.ts +36 -0
- package/install/router.ts +468 -0
- package/linkvalidator/linkvalidator-modal.ts +45 -0
- package/linkvalidator/linkvalidator.ts +101 -0
- package/lowlevel/query-generator.ts +132 -0
- package/lowlevel/reference-index.ts +44 -0
- package/opendocs/toolbar/opendocs-menu.ts +117 -0
- package/package.json +34 -0
- package/recycler/recycler.ts +539 -0
- package/redirects/event-handler.ts +108 -0
- package/redirects/form-engine-evaluation.ts +34 -0
- package/redirects/redirects-module.ts +58 -0
- package/rte-ckeditor/ckeditor5.ts +402 -0
- package/rte-ckeditor/css-prefixer.ts +94 -0
- package/rte-ckeditor/legacy/ckeditor5-bundle.ts +17 -0
- package/rte-ckeditor/legacy/ckeditor5-inspector.ts +2 -0
- package/rte-ckeditor/plugin/typo3-link.ts +810 -0
- package/rte-ckeditor/plugin/whitespace.ts +114 -0
- package/rte-ckeditor/rte-link-browser.ts +112 -0
- package/rte-ckeditor/tests/css-prefixer-test.ts +314 -0
- package/scheduler/scheduler-add-group.ts +119 -0
- package/scheduler/scheduler-editable-group-name.ts +307 -0
- package/scheduler/scheduler-sortable-groups.ts +59 -0
- package/scheduler/scheduler.ts +466 -0
- package/setup/setup-module.ts +122 -0
- package/styleguide/checkbox-demo.ts +5 -0
- package/styleguide/element/theme-switcher-element.ts +101 -0
- package/styleguide/filter.ts +22 -0
- package/styleguide/find-icons.ts +78 -0
- package/styleguide/processing-indicator.ts +78 -0
- package/styleguide/render-notifications.ts +64 -0
- package/sys-note/element/delete-button.ts +78 -0
- package/tstemplate/constant-editor.ts +64 -0
- package/tstemplate/information-module.ts +31 -0
- package/tstemplate/template-analyzer.ts +77 -0
- package/viewpage/main.ts +253 -0
- package/workspaces/backend.ts +979 -0
- package/workspaces/preview.ts +232 -0
- package/workspaces/renderable/comment-view.ts +79 -0
- package/workspaces/renderable/diff-view.ts +58 -0
- package/workspaces/renderable/history-view.ts +97 -0
- package/workspaces/renderable/record-information.ts +118 -0
- package/workspaces/renderable/record-table.ts +355 -0
- package/workspaces/renderable/send-to-stage-form.ts +108 -0
- package/workspaces/toolbar/workspaces-menu.ts +190 -0
- package/workspaces/utility/icon-helper.ts +57 -0
- package/workspaces/workspaces.ts +136 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the TYPO3 CMS project.
|
|
3
|
+
*
|
|
4
|
+
* It is free software; you can redistribute it and/or modify it under
|
|
5
|
+
* the terms of the GNU General Public License, either version 2
|
|
6
|
+
* of the License, or any later version.
|
|
7
|
+
*
|
|
8
|
+
* For the full copyright and license information, please read the
|
|
9
|
+
* LICENSE.txt file that was distributed with this source code.
|
|
10
|
+
*
|
|
11
|
+
* The TYPO3 project - inspiring people to share!
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import 'bootstrap';
|
|
15
|
+
import { AbstractInteractableModule, type ModuleLoadedResponseWithButtons } from '../abstract-interactable-module';
|
|
16
|
+
import Modal from '@typo3/backend/modal';
|
|
17
|
+
import Notification from '@typo3/backend/notification';
|
|
18
|
+
import AjaxRequest from '@typo3/core/ajax/ajax-request';
|
|
19
|
+
import Router from '../../router';
|
|
20
|
+
import RegularEvent from '@typo3/core/event/regular-event';
|
|
21
|
+
import type { AjaxResponse } from '@typo3/core/ajax/ajax-response';
|
|
22
|
+
import type { ModalElement } from '@typo3/backend/modal';
|
|
23
|
+
import type MessageInterface from '@typo3/install/message-interface';
|
|
24
|
+
|
|
25
|
+
enum Identifiers {
|
|
26
|
+
activateTrigger = '.t3js-presets-activate',
|
|
27
|
+
imageExecutable = '.t3js-presets-image-executable',
|
|
28
|
+
imageExecutableTrigger = '.t3js-presets-image-executable-trigger'
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
type PresetsWrittenResponse = {
|
|
32
|
+
status: MessageInterface[],
|
|
33
|
+
success: boolean,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Module: @typo3/install/module/presets
|
|
38
|
+
*/
|
|
39
|
+
class Presets extends AbstractInteractableModule {
|
|
40
|
+
public override initialize(currentModal: ModalElement): void {
|
|
41
|
+
super.initialize(currentModal);
|
|
42
|
+
this.getContent();
|
|
43
|
+
|
|
44
|
+
// Load content with post data on click 'custom image executable path'
|
|
45
|
+
new RegularEvent('click', (event: Event): void => {
|
|
46
|
+
event.preventDefault();
|
|
47
|
+
this.getCustomImagePathContent();
|
|
48
|
+
}).delegateTo(currentModal, Identifiers.imageExecutableTrigger);
|
|
49
|
+
|
|
50
|
+
// Write out selected preset
|
|
51
|
+
new RegularEvent('click', (event: Event): void => {
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
this.activate();
|
|
54
|
+
}).delegateTo(currentModal, Identifiers.activateTrigger);
|
|
55
|
+
|
|
56
|
+
// Automatically select the custom preset if a value in one of its input fields is changed
|
|
57
|
+
|
|
58
|
+
currentModal.querySelectorAll('.t3js-custom-preset').forEach((element: HTMLInputElement) => {
|
|
59
|
+
new RegularEvent('input', (event: Event, target: HTMLElement): void => {
|
|
60
|
+
currentModal.querySelector<HTMLInputElement>(`#${target.dataset.radio}`).checked = true;
|
|
61
|
+
}).delegateTo(element, '.t3js-custom-preset');
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
private getContent(): void {
|
|
66
|
+
const modalContent = this.getModalBody();
|
|
67
|
+
(new AjaxRequest(Router.getUrl('presetsGetContent')))
|
|
68
|
+
.get({ cache: 'no-cache' })
|
|
69
|
+
.then(
|
|
70
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
71
|
+
const data: ModuleLoadedResponseWithButtons = await response.resolve();
|
|
72
|
+
if (data.success === true && data.html !== 'undefined' && data.html.length > 0) {
|
|
73
|
+
modalContent.innerHTML = data.html;
|
|
74
|
+
Modal.setButtons(data.buttons);
|
|
75
|
+
} else {
|
|
76
|
+
Notification.error('Something went wrong', 'The request was not processed successfully. Please check the browser\'s console and TYPO3\'s log.');
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
(error: AjaxResponse): void => {
|
|
80
|
+
Router.handleAjaxError(error, modalContent);
|
|
81
|
+
},
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
private getCustomImagePathContent(): void {
|
|
86
|
+
const modalContent = this.getModalBody();
|
|
87
|
+
const presetsContentToken = this.getModuleContent().dataset.presetsContentToken;
|
|
88
|
+
(new AjaxRequest(Router.getUrl()))
|
|
89
|
+
.post({
|
|
90
|
+
install: {
|
|
91
|
+
token: presetsContentToken,
|
|
92
|
+
action: 'presetsGetContent',
|
|
93
|
+
values: {
|
|
94
|
+
Image: {
|
|
95
|
+
additionalSearchPath: (this.findInModal(Identifiers.imageExecutable) as HTMLInputElement).value,
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
})
|
|
100
|
+
.then(
|
|
101
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
102
|
+
const data = await response.resolve();
|
|
103
|
+
if (data.success === true && data.html !== 'undefined' && data.html.length > 0) {
|
|
104
|
+
modalContent.innerHTML = data.html;
|
|
105
|
+
} else {
|
|
106
|
+
Notification.error('Something went wrong', 'The request was not processed successfully. Please check the browser\'s console and TYPO3\'s log.');
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
(error: AjaxResponse): void => {
|
|
110
|
+
Router.handleAjaxError(error, modalContent);
|
|
111
|
+
},
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
private activate(): void {
|
|
116
|
+
this.setModalButtonsState(false);
|
|
117
|
+
|
|
118
|
+
const modalContent = this.getModalBody();
|
|
119
|
+
const executeToken: string = this.getModuleContent().dataset.presetsActivateToken;
|
|
120
|
+
const postData: Record<string, string> = {};
|
|
121
|
+
const formData = new FormData(this.findInModal('form'));
|
|
122
|
+
for (const [name, value] of formData) {
|
|
123
|
+
postData[name] = value.toString();
|
|
124
|
+
}
|
|
125
|
+
postData['install[action]'] = 'presetsActivate';
|
|
126
|
+
postData['install[token]'] = executeToken;
|
|
127
|
+
(new AjaxRequest(Router.getUrl())).post(postData).then(
|
|
128
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
129
|
+
const data: PresetsWrittenResponse = await response.resolve();
|
|
130
|
+
if (data.success === true && Array.isArray(data.status)) {
|
|
131
|
+
data.status.forEach((element: MessageInterface): void => {
|
|
132
|
+
Notification.showMessage(element.title, element.message, element.severity);
|
|
133
|
+
});
|
|
134
|
+
} else {
|
|
135
|
+
Notification.error('Something went wrong', 'The request was not processed successfully. Please check the browser\'s console and TYPO3\'s log.');
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
(error: AjaxResponse): void => {
|
|
139
|
+
Router.handleAjaxError(error, modalContent);
|
|
140
|
+
},
|
|
141
|
+
).finally((): void => {
|
|
142
|
+
this.setModalButtonsState(true);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export default new Presets();
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the TYPO3 CMS project.
|
|
3
|
+
*
|
|
4
|
+
* It is free software; you can redistribute it and/or modify it under
|
|
5
|
+
* the terms of the GNU General Public License, either version 2
|
|
6
|
+
* of the License, or any later version.
|
|
7
|
+
*
|
|
8
|
+
* For the full copyright and license information, please read the
|
|
9
|
+
* LICENSE.txt file that was distributed with this source code.
|
|
10
|
+
*
|
|
11
|
+
* The TYPO3 project - inspiring people to share!
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import 'bootstrap';
|
|
15
|
+
import { AbstractInteractableModule, type ModuleLoadedResponseWithButtons } from '../abstract-interactable-module';
|
|
16
|
+
import Modal from '@typo3/backend/modal';
|
|
17
|
+
import Notification from '@typo3/backend/notification';
|
|
18
|
+
import AjaxRequest from '@typo3/core/ajax/ajax-request';
|
|
19
|
+
import Router from '../../router';
|
|
20
|
+
import RegularEvent from '@typo3/core/event/regular-event';
|
|
21
|
+
import type { SelectPure } from 'select-pure/lib/components';
|
|
22
|
+
import type { AjaxResponse } from '@typo3/core/ajax/ajax-response';
|
|
23
|
+
import type { ModalElement } from '@typo3/backend/modal';
|
|
24
|
+
import type MessageInterface from '@typo3/install/message-interface';
|
|
25
|
+
|
|
26
|
+
enum Identifiers {
|
|
27
|
+
writeTrigger = '.t3js-systemMaintainer-write',
|
|
28
|
+
selectPureField = '.t3js-systemMaintainer-select-pure'
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
type SystemMaintainerListResponse = ModuleLoadedResponseWithButtons & {
|
|
32
|
+
users: {
|
|
33
|
+
uid: number;
|
|
34
|
+
username: string;
|
|
35
|
+
disable: boolean;
|
|
36
|
+
isSystemMaintainer: boolean;
|
|
37
|
+
}[];
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
type SystemMaintainersWrittenResponse = {
|
|
41
|
+
status: MessageInterface[],
|
|
42
|
+
success: boolean,
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Module: @typo3/install/module/system-maintainer
|
|
47
|
+
*/
|
|
48
|
+
class SystemMaintainer extends AbstractInteractableModule {
|
|
49
|
+
public override initialize(currentModal: ModalElement): void {
|
|
50
|
+
super.initialize(currentModal);
|
|
51
|
+
|
|
52
|
+
this.loadModuleFrameAgnostic('select-pure').then((): void => {
|
|
53
|
+
this.getList();
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
new RegularEvent('click', (event: Event): void => {
|
|
57
|
+
event.preventDefault();
|
|
58
|
+
this.write();
|
|
59
|
+
}).delegateTo(currentModal, Identifiers.writeTrigger);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
private getList(): void {
|
|
63
|
+
const modalContent = this.getModalBody();
|
|
64
|
+
(new AjaxRequest(Router.getUrl('systemMaintainerGetList')))
|
|
65
|
+
.get({ cache: 'no-cache' })
|
|
66
|
+
.then(
|
|
67
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
68
|
+
const data: SystemMaintainerListResponse = await response.resolve();
|
|
69
|
+
if (data.success === true) {
|
|
70
|
+
modalContent.innerHTML = data.html;
|
|
71
|
+
Modal.setButtons(data.buttons);
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
(error: AjaxResponse): void => {
|
|
75
|
+
Router.handleAjaxError(error, modalContent);
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
private write(): void {
|
|
81
|
+
this.setModalButtonsState(false);
|
|
82
|
+
|
|
83
|
+
const modalContent = this.getModalBody();
|
|
84
|
+
const executeToken = this.getModuleContent().dataset.systemMaintainerWriteToken;
|
|
85
|
+
const selectedUsers: string[] = (this.findInModal(Identifiers.selectPureField) as SelectPure).values;
|
|
86
|
+
(new AjaxRequest(Router.getUrl())).post({
|
|
87
|
+
install: {
|
|
88
|
+
users: selectedUsers,
|
|
89
|
+
token: executeToken,
|
|
90
|
+
action: 'systemMaintainerWrite',
|
|
91
|
+
},
|
|
92
|
+
}).then(async (response: AjaxResponse): Promise<void> => {
|
|
93
|
+
const data: SystemMaintainersWrittenResponse = await response.resolve();
|
|
94
|
+
if (data.success === true) {
|
|
95
|
+
if (Array.isArray(data.status)) {
|
|
96
|
+
data.status.forEach((element: MessageInterface): void => {
|
|
97
|
+
Notification.success(element.title, element.message);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
} else {
|
|
101
|
+
Notification.error('Something went wrong', 'The request was not processed successfully. Please check the browser\'s console and TYPO3\'s log.');
|
|
102
|
+
}
|
|
103
|
+
}, (error: AjaxResponse): void => {
|
|
104
|
+
Router.handleAjaxError(error, modalContent);
|
|
105
|
+
}).finally((): void => {
|
|
106
|
+
this.setModalButtonsState(true);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export default new SystemMaintainer();
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file is part of the TYPO3 CMS project.
|
|
3
|
+
*
|
|
4
|
+
* It is free software; you can redistribute it and/or modify it under
|
|
5
|
+
* the terms of the GNU General Public License, either version 2
|
|
6
|
+
* of the License, or any later version.
|
|
7
|
+
*
|
|
8
|
+
* For the full copyright and license information, please read the
|
|
9
|
+
* LICENSE.txt file that was distributed with this source code.
|
|
10
|
+
*
|
|
11
|
+
* The TYPO3 project - inspiring people to share!
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { AbstractInteractableModule, type ModuleLoadedResponseWithButtons } from '../abstract-interactable-module';
|
|
15
|
+
import Modal from '@typo3/backend/modal';
|
|
16
|
+
import Notification from '@typo3/backend/notification';
|
|
17
|
+
import AjaxRequest from '@typo3/core/ajax/ajax-request';
|
|
18
|
+
import { FlashMessage } from '../../renderable/flash-message';
|
|
19
|
+
import Severity from '../../renderable/severity';
|
|
20
|
+
import Router from '../../router';
|
|
21
|
+
import RegularEvent from '@typo3/core/event/regular-event';
|
|
22
|
+
import type { AjaxResponse } from '@typo3/core/ajax/ajax-response';
|
|
23
|
+
import type { ModalElement } from '@typo3/backend/modal';
|
|
24
|
+
import type MessageInterface from '../../message-interface';
|
|
25
|
+
|
|
26
|
+
enum Identifiers {
|
|
27
|
+
output = '.t3js-coreUpdate-output',
|
|
28
|
+
updateButton = '.t3js-coreUpdate-button'
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
type ActionItem = {
|
|
32
|
+
loadingMessage: string;
|
|
33
|
+
finishMessage: string;
|
|
34
|
+
nextActionName: string;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
type ActionQueue = {
|
|
38
|
+
[k: string]: ActionItem;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
class CoreUpdate extends AbstractInteractableModule {
|
|
42
|
+
private readonly actionQueue: ActionQueue = {
|
|
43
|
+
coreUpdateIsUpdateAvailable: {
|
|
44
|
+
loadingMessage: 'Checking for possible regular or security update',
|
|
45
|
+
finishMessage: undefined,
|
|
46
|
+
nextActionName: undefined,
|
|
47
|
+
},
|
|
48
|
+
coreUpdateCheckPreConditions: {
|
|
49
|
+
loadingMessage: 'Checking if update is possible',
|
|
50
|
+
finishMessage: 'System can be updated',
|
|
51
|
+
nextActionName: 'coreUpdateDownload',
|
|
52
|
+
},
|
|
53
|
+
coreUpdateDownload: {
|
|
54
|
+
loadingMessage: 'Downloading new core',
|
|
55
|
+
finishMessage: undefined,
|
|
56
|
+
nextActionName: 'coreUpdateVerifyChecksum',
|
|
57
|
+
},
|
|
58
|
+
coreUpdateVerifyChecksum: {
|
|
59
|
+
loadingMessage: 'Verifying checksum of downloaded core',
|
|
60
|
+
finishMessage: undefined,
|
|
61
|
+
nextActionName: 'coreUpdateUnpack',
|
|
62
|
+
},
|
|
63
|
+
coreUpdateUnpack: {
|
|
64
|
+
loadingMessage: 'Unpacking core',
|
|
65
|
+
finishMessage: undefined,
|
|
66
|
+
nextActionName: 'coreUpdateMove',
|
|
67
|
+
},
|
|
68
|
+
coreUpdateMove: {
|
|
69
|
+
loadingMessage: 'Moving core',
|
|
70
|
+
finishMessage: undefined,
|
|
71
|
+
nextActionName: 'coreUpdateActivate',
|
|
72
|
+
},
|
|
73
|
+
coreUpdateActivate: {
|
|
74
|
+
loadingMessage: 'Activating core',
|
|
75
|
+
finishMessage: 'Core updated - please reload your browser',
|
|
76
|
+
nextActionName: undefined,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Clone of a DOM object acts as button template
|
|
82
|
+
*/
|
|
83
|
+
private buttonTemplate: HTMLElement = null;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Fetching the templates out of the DOM
|
|
87
|
+
*/
|
|
88
|
+
public override initialize(currentModal: ModalElement): void {
|
|
89
|
+
super.initialize(currentModal);
|
|
90
|
+
|
|
91
|
+
this.loadModuleFrameAgnostic('@typo3/install/renderable/flash-message.js').then(async (): Promise<void> => {
|
|
92
|
+
await this.getData();
|
|
93
|
+
this.buttonTemplate = this.findInModal(Identifiers.updateButton)?.cloneNode(true) as HTMLElement;
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
new RegularEvent('click', (event: Event, target: HTMLElement): void => {
|
|
97
|
+
event.preventDefault();
|
|
98
|
+
|
|
99
|
+
if (!target.hasAttribute('data-action')) {
|
|
100
|
+
this.callAction('coreUpdateIsUpdateAvailable');
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const action = target.dataset.action;
|
|
105
|
+
this.findInModal(Identifiers.output).innerHTML = '';
|
|
106
|
+
switch (action) {
|
|
107
|
+
case 'updateDevelopment':
|
|
108
|
+
this.update('development');
|
|
109
|
+
break;
|
|
110
|
+
case 'updateRegular':
|
|
111
|
+
this.update('regular');
|
|
112
|
+
break;
|
|
113
|
+
default:
|
|
114
|
+
throw 'Unknown update action "' + action + '"';
|
|
115
|
+
}
|
|
116
|
+
}).delegateTo(currentModal, '.t3js-coreUpdate-init');
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
private getData(): Promise<void> {
|
|
120
|
+
const modalContent = this.getModalBody();
|
|
121
|
+
return (new AjaxRequest(Router.getUrl('coreUpdateGetData')))
|
|
122
|
+
.get({ cache: 'no-cache' })
|
|
123
|
+
.then(
|
|
124
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
125
|
+
const data: ModuleLoadedResponseWithButtons = await response.resolve();
|
|
126
|
+
if (data.success === true) {
|
|
127
|
+
modalContent.innerHTML = data.html;
|
|
128
|
+
Modal.setButtons(data.buttons);
|
|
129
|
+
} else {
|
|
130
|
+
Notification.error('Something went wrong', 'The request was not processed successfully. Please check the browser\'s console and TYPO3\'s log.');
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
(error: AjaxResponse): void => {
|
|
134
|
+
Router.handleAjaxError(error, modalContent);
|
|
135
|
+
}
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Execute core update.
|
|
141
|
+
*
|
|
142
|
+
* @param type Either 'development' or 'regular'
|
|
143
|
+
*/
|
|
144
|
+
private update(type: string): void {
|
|
145
|
+
if (type !== 'development') {
|
|
146
|
+
type = 'regular';
|
|
147
|
+
}
|
|
148
|
+
this.callAction('coreUpdateCheckPreConditions', type);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Generic method to call actions from the queue
|
|
153
|
+
*
|
|
154
|
+
* @param actionName Name of the action to be called
|
|
155
|
+
* @param type Update type (optional)
|
|
156
|
+
*/
|
|
157
|
+
private callAction(actionName: string, type?: string): void {
|
|
158
|
+
const data: any = {
|
|
159
|
+
install: {
|
|
160
|
+
action: actionName,
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
if (type !== undefined) {
|
|
164
|
+
data.install.type = type;
|
|
165
|
+
}
|
|
166
|
+
this.addLoadingMessage(this.actionQueue[actionName].loadingMessage);
|
|
167
|
+
(new AjaxRequest(Router.getUrl()))
|
|
168
|
+
.withQueryArguments(data)
|
|
169
|
+
.get({ cache: 'no-cache' })
|
|
170
|
+
.then(
|
|
171
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
172
|
+
// @todo: build a map containing the desired type for the response of `actionName`
|
|
173
|
+
const result = await response.resolve();
|
|
174
|
+
const canContinue = this.handleResult(result, this.actionQueue[actionName].finishMessage);
|
|
175
|
+
if (canContinue === true && (this.actionQueue[actionName].nextActionName !== undefined)) {
|
|
176
|
+
this.callAction(this.actionQueue[actionName].nextActionName, type);
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
(error: AjaxResponse): void => {
|
|
180
|
+
Router.handleAjaxError(error, this.getModalBody());
|
|
181
|
+
}
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Handle ajax result of core update step.
|
|
187
|
+
*/
|
|
188
|
+
private handleResult(data: any, successMessage: string): boolean {
|
|
189
|
+
const canContinue: boolean = data.success;
|
|
190
|
+
this.removeLoadingMessage();
|
|
191
|
+
|
|
192
|
+
if (data.status && typeof (data.status) === 'object') {
|
|
193
|
+
this.showStatusMessages(data.status);
|
|
194
|
+
}
|
|
195
|
+
if (data.action && typeof (data.action) === 'object') {
|
|
196
|
+
this.showActionButton(data.action);
|
|
197
|
+
}
|
|
198
|
+
if (canContinue && successMessage) {
|
|
199
|
+
this.addMessage(Severity.ok, successMessage);
|
|
200
|
+
}
|
|
201
|
+
return canContinue;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Add a loading message with some text.
|
|
206
|
+
*
|
|
207
|
+
* @param messageTitle
|
|
208
|
+
*/
|
|
209
|
+
private addLoadingMessage(messageTitle: string): void {
|
|
210
|
+
this.addMessage(Severity.loading, messageTitle);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Remove an enabled loading message
|
|
215
|
+
*/
|
|
216
|
+
private removeLoadingMessage(): void {
|
|
217
|
+
this.findInModal(Identifiers.output).querySelector('typo3-install-flashmessage')?.remove();
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Show a list of status messages
|
|
222
|
+
*
|
|
223
|
+
* @param messages
|
|
224
|
+
*/
|
|
225
|
+
private showStatusMessages(messages: MessageInterface[]): void {
|
|
226
|
+
for (const element of messages) {
|
|
227
|
+
this.addMessage(element.severity, element.title ?? '', element.message ?? '');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Show an action button
|
|
233
|
+
*
|
|
234
|
+
* @param button
|
|
235
|
+
*/
|
|
236
|
+
private showActionButton(button: any): void {
|
|
237
|
+
const domButton = this.buttonTemplate;
|
|
238
|
+
if (button.action) {
|
|
239
|
+
domButton.setAttribute('data-action', button.action);
|
|
240
|
+
}
|
|
241
|
+
if (button.title) {
|
|
242
|
+
domButton.innerText = button.title;
|
|
243
|
+
}
|
|
244
|
+
this.findInModal(Identifiers.updateButton).replaceWith(domButton);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Show a status message
|
|
249
|
+
*/
|
|
250
|
+
private addMessage(severity: number, title: string, message?: string): void {
|
|
251
|
+
this.findInModal(Identifiers.output).append(FlashMessage.create(severity, title, message));
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
export default new CoreUpdate();
|