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,92 @@
|
|
|
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 type MessageInterface from '../../message-interface';
|
|
20
|
+
import { InfoBox } from '../../renderable/info-box';
|
|
21
|
+
import Router from '../../router';
|
|
22
|
+
import RegularEvent from '@typo3/core/event/regular-event';
|
|
23
|
+
import type { ModalElement } from '@typo3/backend/modal';
|
|
24
|
+
import type { AjaxResponse } from '@typo3/core/ajax/ajax-response';
|
|
25
|
+
|
|
26
|
+
enum Identifiers {
|
|
27
|
+
executeTrigger = '.t3js-environmentCheck-execute',
|
|
28
|
+
outputContainer = '.t3js-environmentCheck-output'
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
type EnvironmentCheckResponse = ModuleLoadedResponseWithButtons & {
|
|
32
|
+
status: {
|
|
33
|
+
error: MessageInterface[],
|
|
34
|
+
warning: MessageInterface[],
|
|
35
|
+
ok: MessageInterface[],
|
|
36
|
+
information: MessageInterface[],
|
|
37
|
+
notice: MessageInterface[]
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Module: @typo3/install/environment-check
|
|
43
|
+
*/
|
|
44
|
+
class EnvironmentCheck extends AbstractInteractableModule {
|
|
45
|
+
public override initialize(currentModal: ModalElement): void {
|
|
46
|
+
super.initialize(currentModal);
|
|
47
|
+
|
|
48
|
+
this.loadModuleFrameAgnostic('@typo3/install/renderable/info-box.js').then((): void => {
|
|
49
|
+
// Get status on initialize to have the badge and content ready
|
|
50
|
+
this.runTests();
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
new RegularEvent('click', (event: Event): void => {
|
|
54
|
+
event.preventDefault();
|
|
55
|
+
this.runTests();
|
|
56
|
+
}).delegateTo(currentModal, Identifiers.executeTrigger);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
private runTests(): void {
|
|
60
|
+
this.setModalButtonsState(false);
|
|
61
|
+
const modalContent: HTMLElement = this.getModalBody();
|
|
62
|
+
const outputContainer: HTMLElement = modalContent.querySelector(Identifiers.outputContainer);
|
|
63
|
+
if (outputContainer !== null) {
|
|
64
|
+
this.renderProgressBar(outputContainer);
|
|
65
|
+
}
|
|
66
|
+
(new AjaxRequest(Router.getUrl('environmentCheckGetStatus')))
|
|
67
|
+
.get({ cache: 'no-cache' })
|
|
68
|
+
.then(
|
|
69
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
70
|
+
const data: EnvironmentCheckResponse = await response.resolve();
|
|
71
|
+
modalContent.innerHTML = data.html;
|
|
72
|
+
Modal.setButtons(data.buttons);
|
|
73
|
+
if (data.success === true && typeof (data.status) === 'object') {
|
|
74
|
+
for (const messages of Object.values(data.status)) {
|
|
75
|
+
for (const status of messages) {
|
|
76
|
+
modalContent.querySelector(Identifiers.outputContainer).append(InfoBox.create(status.severity, status.title, status.message));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
} else {
|
|
80
|
+
Notification.error('Something went wrong', 'The request was not processed successfully. Please check the browser\'s console and TYPO3\'s log.');
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
(error: AjaxResponse): void => {
|
|
84
|
+
Router.handleAjaxError(error, modalContent);
|
|
85
|
+
}
|
|
86
|
+
).finally((): void => {
|
|
87
|
+
this.setModalButtonsState(true);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export default new EnvironmentCheck();
|
|
@@ -0,0 +1,145 @@
|
|
|
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 { InfoBox } from '../../renderable/info-box';
|
|
20
|
+
import Severity from '../../renderable/severity';
|
|
21
|
+
import Router from '../../router';
|
|
22
|
+
import RegularEvent from '@typo3/core/event/regular-event';
|
|
23
|
+
import type { AjaxResponse } from '@typo3/core/ajax/ajax-response';
|
|
24
|
+
import type { ModalElement } from '@typo3/backend/modal';
|
|
25
|
+
import type MessageInterface from '@typo3/install/message-interface';
|
|
26
|
+
|
|
27
|
+
enum Identifiers {
|
|
28
|
+
outputContainer = '.t3js-folderStructure-output',
|
|
29
|
+
errorContainer = '.t3js-folderStructure-errors',
|
|
30
|
+
errorList = '.t3js-folderStructure-errors-list',
|
|
31
|
+
errorFixTrigger = '.t3js-folderStructure-errors-fix',
|
|
32
|
+
okContainer = '.t3js-folderStructure-ok',
|
|
33
|
+
okList = '.t3js-folderStructure-ok-list',
|
|
34
|
+
permissionContainer = '.t3js-folderStructure-permissions'
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
type FolderStructureResponse = ModuleLoadedResponseWithButtons & {
|
|
38
|
+
errorStatus: MessageInterface[],
|
|
39
|
+
okStatus: MessageInterface[],
|
|
40
|
+
folderStructureFilePermissionStatus: MessageInterface,
|
|
41
|
+
folderStructureDirectoryPermissionStatus: MessageInterface,
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Module: @typo3/install/module/folder-structure
|
|
46
|
+
*/
|
|
47
|
+
class FolderStructure extends AbstractInteractableModule {
|
|
48
|
+
private static removeLoadingMessage(container: HTMLElement): void {
|
|
49
|
+
container.querySelector('typo3-backend-progress-bar').remove();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public override initialize(currentModal: ModalElement): void {
|
|
53
|
+
super.initialize(currentModal);
|
|
54
|
+
|
|
55
|
+
this.loadModuleFrameAgnostic('@typo3/install/renderable/info-box.js').then((): void => {
|
|
56
|
+
// Get status on initialize to have the badge and content ready
|
|
57
|
+
this.getStatus();
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
new RegularEvent('click', (event: Event): void => {
|
|
61
|
+
event.preventDefault();
|
|
62
|
+
this.fix();
|
|
63
|
+
}).delegateTo(currentModal, Identifiers.errorFixTrigger);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
private getStatus(): void {
|
|
67
|
+
const modalContent = this.getModalBody();
|
|
68
|
+
|
|
69
|
+
(new AjaxRequest(Router.getUrl('folderStructureGetStatus')))
|
|
70
|
+
.get({ cache: 'no-cache' })
|
|
71
|
+
.then(
|
|
72
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
73
|
+
const data: FolderStructureResponse = await response.resolve();
|
|
74
|
+
modalContent.innerHTML = data.html;
|
|
75
|
+
Modal.setButtons(data.buttons);
|
|
76
|
+
if (data.success === true && Array.isArray(data.errorStatus)) {
|
|
77
|
+
if (data.errorStatus.length > 0) {
|
|
78
|
+
modalContent.querySelector<HTMLElement>(Identifiers.errorContainer).style.display = 'block';
|
|
79
|
+
modalContent.querySelector(Identifiers.errorList).innerHTML = '';
|
|
80
|
+
data.errorStatus.forEach(((aElement: any): void => {
|
|
81
|
+
modalContent.querySelector(Identifiers.errorList).appendChild(InfoBox.create(aElement.severity, aElement.title, aElement.message));
|
|
82
|
+
}));
|
|
83
|
+
} else {
|
|
84
|
+
modalContent.querySelector<HTMLElement>(Identifiers.errorContainer).style.display = 'none';
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (data.success === true && Array.isArray(data.okStatus)) {
|
|
88
|
+
if (data.okStatus.length > 0) {
|
|
89
|
+
modalContent.querySelector<HTMLElement>(Identifiers.okContainer).style.display = 'block';
|
|
90
|
+
modalContent.querySelector(Identifiers.okList).innerHTML = '';
|
|
91
|
+
data.okStatus.forEach(((aElement: any): void => {
|
|
92
|
+
modalContent.querySelector(Identifiers.okList).appendChild(InfoBox.create(aElement.severity, aElement.title, aElement.message));
|
|
93
|
+
}));
|
|
94
|
+
} else {
|
|
95
|
+
modalContent.querySelector<HTMLElement>(Identifiers.okContainer).style.display = 'none';
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
let element = data.folderStructureFilePermissionStatus;
|
|
99
|
+
const selectorPermissionContainer = modalContent.querySelector(Identifiers.permissionContainer);
|
|
100
|
+
selectorPermissionContainer.replaceChildren(InfoBox.create(element.severity, element.title, element.message));
|
|
101
|
+
|
|
102
|
+
element = data.folderStructureDirectoryPermissionStatus;
|
|
103
|
+
selectorPermissionContainer.appendChild(InfoBox.create(element.severity, element.title, element.message));
|
|
104
|
+
},
|
|
105
|
+
(error: AjaxResponse): void => {
|
|
106
|
+
Router.handleAjaxError(error, modalContent);
|
|
107
|
+
}
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
private fix(): void {
|
|
112
|
+
this.setModalButtonsState(false);
|
|
113
|
+
|
|
114
|
+
const modalContent = this.getModalBody();
|
|
115
|
+
const outputContainer = this.findInModal(Identifiers.outputContainer);
|
|
116
|
+
this.renderProgressBar(outputContainer);
|
|
117
|
+
(new AjaxRequest(Router.getUrl('folderStructureFix')))
|
|
118
|
+
.get({ cache: 'no-cache' })
|
|
119
|
+
.then(
|
|
120
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
121
|
+
const data = await response.resolve();
|
|
122
|
+
FolderStructure.removeLoadingMessage(outputContainer);
|
|
123
|
+
if (data.success === true && Array.isArray(data.fixedStatus)) {
|
|
124
|
+
if (data.fixedStatus.length > 0) {
|
|
125
|
+
data.fixedStatus.forEach((element: any): void => {
|
|
126
|
+
outputContainer.append(InfoBox.create(element.severity, element.title, element.message));
|
|
127
|
+
});
|
|
128
|
+
} else {
|
|
129
|
+
outputContainer.append(InfoBox.create(Severity.warning, 'Nothing fixed'));
|
|
130
|
+
}
|
|
131
|
+
this.getStatus();
|
|
132
|
+
} else {
|
|
133
|
+
Notification.error('Something went wrong', 'The request was not processed successfully. Please check the browser\'s console and TYPO3\'s log.');
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
(error: AjaxResponse): void => {
|
|
137
|
+
Router.handleAjaxError(error, modalContent);
|
|
138
|
+
}
|
|
139
|
+
).finally((): void => {
|
|
140
|
+
this.setModalButtonsState(true);
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export default new FolderStructure();
|
|
@@ -0,0 +1,141 @@
|
|
|
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 { InfoBox } from '../../renderable/info-box';
|
|
20
|
+
import Severity from '../../renderable/severity';
|
|
21
|
+
import Router from '../../router';
|
|
22
|
+
import type MessageInterface from '@typo3/install/message-interface';
|
|
23
|
+
import RegularEvent from '@typo3/core/event/regular-event';
|
|
24
|
+
import type { AjaxResponse } from '@typo3/core/ajax/ajax-response';
|
|
25
|
+
import type { ModalElement } from '@typo3/backend/modal';
|
|
26
|
+
|
|
27
|
+
enum Identifiers {
|
|
28
|
+
executeTrigger = '.t3js-imageProcessing-execute',
|
|
29
|
+
testContainer = '.t3js-imageProcessing-twinContainer',
|
|
30
|
+
twinImageTemplate = '#t3js-imageProcessing-twinImage-template',
|
|
31
|
+
commandContainer = '.t3js-imageProcessing-command',
|
|
32
|
+
commandText = '.t3js-imageProcessing-command-text',
|
|
33
|
+
twinImages = '.t3js-imageProcessing-images'
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
type ImageProcessResponse = {
|
|
37
|
+
command?: string[],
|
|
38
|
+
fileExists: boolean,
|
|
39
|
+
outputFile: string,
|
|
40
|
+
referenceFile: string,
|
|
41
|
+
success: boolean,
|
|
42
|
+
status?: MessageInterface[]
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Module: @typo3/install/module/image-processing
|
|
47
|
+
*/
|
|
48
|
+
class ImageProcessing extends AbstractInteractableModule {
|
|
49
|
+
public override initialize(currentModal: ModalElement): void {
|
|
50
|
+
super.initialize(currentModal);
|
|
51
|
+
this.loadModuleFrameAgnostic('@typo3/install/renderable/info-box.js').then((): void => {
|
|
52
|
+
this.getData();
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
new RegularEvent('click', (event: Event): void => {
|
|
56
|
+
event.preventDefault();
|
|
57
|
+
this.runTests();
|
|
58
|
+
}).delegateTo(currentModal, Identifiers.executeTrigger);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
private getData(): void {
|
|
62
|
+
const modalContent: HTMLElement = this.getModalBody();
|
|
63
|
+
(new AjaxRequest(Router.getUrl('imageProcessingGetData')))
|
|
64
|
+
.get({ cache: 'no-cache' })
|
|
65
|
+
.then(
|
|
66
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
67
|
+
const data: ModuleLoadedResponseWithButtons = await response.resolve();
|
|
68
|
+
if (data.success === true) {
|
|
69
|
+
modalContent.innerHTML = data.html;
|
|
70
|
+
Modal.setButtons(data.buttons);
|
|
71
|
+
this.runTests();
|
|
72
|
+
} else {
|
|
73
|
+
Notification.error('Something went wrong', 'The request was not processed successfully. Please check the browser\'s console and TYPO3\'s log.');
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
(error: AjaxResponse): void => {
|
|
77
|
+
Router.handleAjaxError(error, modalContent);
|
|
78
|
+
}
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
private runTests(): void {
|
|
83
|
+
const modalContent: HTMLElement = this.getModalBody();
|
|
84
|
+
this.setModalButtonsState(false);
|
|
85
|
+
|
|
86
|
+
const twinImageTemplate = this.findInModal(Identifiers.twinImageTemplate) as HTMLTemplateElement;
|
|
87
|
+
const promises: Array<Promise<void>> = [];
|
|
88
|
+
modalContent.querySelectorAll(Identifiers.testContainer).forEach((container: HTMLElement): void => {
|
|
89
|
+
container.replaceChildren(InfoBox.create(Severity.loading, 'Loading...'));
|
|
90
|
+
const request = (new AjaxRequest(Router.getUrl(container.dataset.test)))
|
|
91
|
+
.get({ cache: 'no-cache' })
|
|
92
|
+
.then(
|
|
93
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
94
|
+
const data: ImageProcessResponse = await response.resolve();
|
|
95
|
+
if (data.success === true) {
|
|
96
|
+
container.innerHTML = '';
|
|
97
|
+
if (Array.isArray(data.status)) {
|
|
98
|
+
data.status.forEach((element: MessageInterface): void => {
|
|
99
|
+
container.append(InfoBox.create(element.severity, element.title, element.message));
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
const aTwin: HTMLElement = twinImageTemplate.content.cloneNode(true) as HTMLElement;
|
|
103
|
+
if (data.fileExists === true) {
|
|
104
|
+
aTwin.querySelector('img.reference')?.setAttribute('src', data.referenceFile);
|
|
105
|
+
aTwin.querySelector('img.result')?.setAttribute('src', data.outputFile);
|
|
106
|
+
aTwin.querySelectorAll(Identifiers.twinImages).forEach((image: HTMLElement) => image.hidden = false);
|
|
107
|
+
}
|
|
108
|
+
if (Array.isArray(data.command) && data.command.length > 0) {
|
|
109
|
+
const commandContainer: HTMLElement = aTwin.querySelector(Identifiers.commandContainer);
|
|
110
|
+
if (commandContainer !== null) {
|
|
111
|
+
commandContainer.hidden = false;
|
|
112
|
+
}
|
|
113
|
+
const commandText: Array<string> = [];
|
|
114
|
+
data.command.forEach((aElement: any): void => {
|
|
115
|
+
commandText.push('<strong>Command:</strong>\n' + aElement[1]);
|
|
116
|
+
if (aElement.length === 3) {
|
|
117
|
+
commandText.push('<strong>Result:</strong>\n' + aElement[2]);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
const commandTextElement: HTMLElement = aTwin.querySelector(Identifiers.commandText);
|
|
121
|
+
if (commandTextElement !== null) {
|
|
122
|
+
commandTextElement.innerHTML = commandText.join('\n');
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
container.append(aTwin);
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
(error: AjaxResponse): void => {
|
|
129
|
+
Router.handleAjaxError(error, modalContent);
|
|
130
|
+
}
|
|
131
|
+
);
|
|
132
|
+
promises.push(request);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
Promise.all(promises).then((): void => {
|
|
136
|
+
this.setModalButtonsState(true);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export default new ImageProcessing();
|
|
@@ -0,0 +1,127 @@
|
|
|
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 { InfoBox } from '../../renderable/info-box';
|
|
20
|
+
import Router from '../../router';
|
|
21
|
+
import type MessageInterface from '@typo3/install/message-interface';
|
|
22
|
+
import RegularEvent from '@typo3/core/event/regular-event';
|
|
23
|
+
import type { AjaxResponse } from '@typo3/core/ajax/ajax-response';
|
|
24
|
+
import type { ModalElement } from '@typo3/backend/modal';
|
|
25
|
+
|
|
26
|
+
enum Identifiers {
|
|
27
|
+
outputContainer = '.t3js-mailTest-output',
|
|
28
|
+
mailTestButton = '.t3js-mailTest-execute'
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
type MailGetDataResponse = ModuleLoadedResponseWithButtons & {
|
|
32
|
+
messages: MessageInterface[],
|
|
33
|
+
sendPossible: boolean,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
type SendTestMailResponse = {
|
|
37
|
+
success: boolean,
|
|
38
|
+
status: MessageInterface[],
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Module: @typo3/install/module/create-admin
|
|
43
|
+
*/
|
|
44
|
+
class MailTest extends AbstractInteractableModule {
|
|
45
|
+
|
|
46
|
+
public override initialize(currentModal: ModalElement): void {
|
|
47
|
+
super.initialize(currentModal);
|
|
48
|
+
this.loadModuleFrameAgnostic('@typo3/install/renderable/info-box.js').then((): void => {
|
|
49
|
+
this.getData();
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
new RegularEvent('click', (event: Event): void => {
|
|
53
|
+
event.preventDefault();
|
|
54
|
+
this.send();
|
|
55
|
+
}).delegateTo(currentModal, Identifiers.mailTestButton);
|
|
56
|
+
|
|
57
|
+
new RegularEvent('submit', (event: Event): void => {
|
|
58
|
+
event.preventDefault();
|
|
59
|
+
this.send();
|
|
60
|
+
}).delegateTo(currentModal, 'form');
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private getData(): void {
|
|
64
|
+
const modalContent = this.getModalBody();
|
|
65
|
+
(new AjaxRequest(Router.getUrl('mailTestGetData')))
|
|
66
|
+
.get({ cache: 'no-cache' })
|
|
67
|
+
.then(
|
|
68
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
69
|
+
const data: MailGetDataResponse = await response.resolve();
|
|
70
|
+
if (data.success === true) {
|
|
71
|
+
modalContent.innerHTML = data.html;
|
|
72
|
+
const outputContainer: HTMLElement = this.findInModal(Identifiers.outputContainer);
|
|
73
|
+
if (data.messages && Array.isArray(data.messages)) {
|
|
74
|
+
data.messages.forEach((element: MessageInterface): void => {
|
|
75
|
+
outputContainer.append(InfoBox.create(element.severity, element.title, element.message));
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
if (data.sendPossible) {
|
|
79
|
+
Modal.setButtons(data.buttons);
|
|
80
|
+
}
|
|
81
|
+
} else {
|
|
82
|
+
Notification.error('Something went wrong', 'The request was not processed successfully. Please check the browser\'s console and TYPO3\'s log.');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
},
|
|
86
|
+
(error: AjaxResponse): void => {
|
|
87
|
+
Router.handleAjaxError(error, modalContent);
|
|
88
|
+
},
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
private send(): void {
|
|
93
|
+
this.setModalButtonsState(false);
|
|
94
|
+
|
|
95
|
+
const executeToken: string = this.getModuleContent().dataset.mailTestToken;
|
|
96
|
+
const outputContainer: HTMLElement = this.findInModal(Identifiers.outputContainer);
|
|
97
|
+
this.renderProgressBar(outputContainer);
|
|
98
|
+
(new AjaxRequest(Router.getUrl())).post({
|
|
99
|
+
install: {
|
|
100
|
+
action: 'mailTest',
|
|
101
|
+
token: executeToken,
|
|
102
|
+
email: (this.findInModal('.t3js-mailTest-email') as HTMLInputElement).value,
|
|
103
|
+
},
|
|
104
|
+
}).then(
|
|
105
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
106
|
+
const data: SendTestMailResponse = await response.resolve();
|
|
107
|
+
outputContainer.innerHTML = '';
|
|
108
|
+
if (Array.isArray(data.status)) {
|
|
109
|
+
data.status.forEach((element: MessageInterface): void => {
|
|
110
|
+
outputContainer.innerHTML = '';
|
|
111
|
+
outputContainer.append(InfoBox.create(element.severity, element.title, element.message));
|
|
112
|
+
});
|
|
113
|
+
} else {
|
|
114
|
+
Notification.error('Something went wrong', 'The request was not processed successfully. Please check the browser\'s console and TYPO3\'s log.');
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
(): void => {
|
|
118
|
+
// 500 can happen here if the mail configuration is broken
|
|
119
|
+
Notification.error('Something went wrong', 'The request was not processed successfully. Please check the browser\'s console and TYPO3\'s log.');
|
|
120
|
+
},
|
|
121
|
+
).finally((): void => {
|
|
122
|
+
this.setModalButtonsState(true);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export default new MailTest();
|
|
@@ -0,0 +1,50 @@
|
|
|
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 Notification from '@typo3/backend/notification';
|
|
15
|
+
import AjaxRequest from '@typo3/core/ajax/ajax-request';
|
|
16
|
+
import Router from '../../router';
|
|
17
|
+
import { AbstractInteractableModule, type ModuleLoadedResponse } from '../abstract-interactable-module';
|
|
18
|
+
import type { AjaxResponse } from '@typo3/core/ajax/ajax-response';
|
|
19
|
+
import type { ModalElement } from '@typo3/backend/modal';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Module: @typo3/install/module/php-info
|
|
23
|
+
*/
|
|
24
|
+
class PhpInfo extends AbstractInteractableModule {
|
|
25
|
+
public override initialize(currentModal: ModalElement): void {
|
|
26
|
+
super.initialize(currentModal);
|
|
27
|
+
this.getData();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
private getData(): void {
|
|
31
|
+
const modalContent = this.getModalBody();
|
|
32
|
+
(new AjaxRequest(Router.getUrl('phpInfoGetData')))
|
|
33
|
+
.get({ cache: 'no-cache' })
|
|
34
|
+
.then(
|
|
35
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
36
|
+
const data: ModuleLoadedResponse = await response.resolve();
|
|
37
|
+
if (data.success === true) {
|
|
38
|
+
modalContent.innerHTML = data.html;
|
|
39
|
+
} else {
|
|
40
|
+
Notification.error('Something went wrong', 'The request was not processed successfully. Please check the browser\'s console and TYPO3\'s log.');
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
(error: AjaxResponse): void => {
|
|
44
|
+
Router.handleAjaxError(error, modalContent);
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export default new PhpInfo();
|
|
@@ -0,0 +1,50 @@
|
|
|
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 Notification from '@typo3/backend/notification';
|
|
15
|
+
import AjaxRequest from '@typo3/core/ajax/ajax-request';
|
|
16
|
+
import Router from '../../router';
|
|
17
|
+
import { AbstractInteractableModule, type ModuleLoadedResponse } from '../abstract-interactable-module';
|
|
18
|
+
import type { AjaxResponse } from '@typo3/core/ajax/ajax-response';
|
|
19
|
+
import type { ModalElement } from '@typo3/backend/modal';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Module: @typo3/install/module/system-information
|
|
23
|
+
*/
|
|
24
|
+
class SystemInformation extends AbstractInteractableModule {
|
|
25
|
+
public override initialize(currentModal: ModalElement): void {
|
|
26
|
+
super.initialize(currentModal);
|
|
27
|
+
this.getData();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
private getData(): void {
|
|
31
|
+
const modalContent = this.getModalBody();
|
|
32
|
+
(new AjaxRequest(Router.getUrl('systemInformationGetData')))
|
|
33
|
+
.get({ cache: 'no-cache' })
|
|
34
|
+
.then(
|
|
35
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
36
|
+
const data: ModuleLoadedResponse = await response.resolve();
|
|
37
|
+
if (data.success === true) {
|
|
38
|
+
modalContent.innerHTML = data.html;
|
|
39
|
+
} else {
|
|
40
|
+
Notification.error('Something went wrong', 'The request was not processed successfully. Please check the browser\'s console and TYPO3\'s log.');
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
(error: AjaxResponse): void => {
|
|
44
|
+
Router.handleAjaxError(error, modalContent);
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export default new SystemInformation();
|
|
@@ -0,0 +1,59 @@
|
|
|
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 Notification from '@typo3/backend/notification';
|
|
15
|
+
import AjaxRequest from '@typo3/core/ajax/ajax-request';
|
|
16
|
+
import Router from '../../router';
|
|
17
|
+
import { AbstractInlineModule, type ActionResponse } from '../abstract-inline-module';
|
|
18
|
+
import type { AjaxResponse } from '@typo3/core/ajax/ajax-response';
|
|
19
|
+
import type MessageInterface from '@typo3/install/message-interface';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Module: @typo3/install/module/cache
|
|
23
|
+
*/
|
|
24
|
+
class Cache extends AbstractInlineModule {
|
|
25
|
+
public override initialize(trigger: HTMLButtonElement): void {
|
|
26
|
+
this.setButtonState(trigger, false);
|
|
27
|
+
|
|
28
|
+
(new AjaxRequest(Router.getUrl('cacheClearAll', 'maintenance')))
|
|
29
|
+
.get({ cache: 'no-cache' })
|
|
30
|
+
.then(
|
|
31
|
+
async (response: AjaxResponse): Promise<void> => {
|
|
32
|
+
const data: ActionResponse = await response.resolve();
|
|
33
|
+
if (data.success === true && Array.isArray(data.status)) {
|
|
34
|
+
if (data.status.length > 0) {
|
|
35
|
+
data.status.forEach((element: MessageInterface): void => {
|
|
36
|
+
Notification.success(element.title, element.message);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
} else {
|
|
40
|
+
Notification.error('Something went wrong clearing caches');
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
(): void => {
|
|
44
|
+
// In case the clear cache action fails (typically 500 from server), do not kill the entire
|
|
45
|
+
// Install Tool, instead show a notification that something went wrong.
|
|
46
|
+
Notification.error(
|
|
47
|
+
'Clearing caches failed',
|
|
48
|
+
'Clearing caches went wrong on the server side. Check the system for broken extensions or missing database tables and try again.'
|
|
49
|
+
+ ' Also ensure you are properly authenticated and the server does not report specific PHP parse errors or JavaScript errors are listed in the browser console.',
|
|
50
|
+
);
|
|
51
|
+
},
|
|
52
|
+
)
|
|
53
|
+
.finally((): void => {
|
|
54
|
+
this.setButtonState(trigger, true);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export default new Cache();
|