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,107 @@
|
|
|
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 RegularEvent from '@typo3/core/event/regular-event';
|
|
15
|
+
import DocumentService from '@typo3/core/document-service';
|
|
16
|
+
import AjaxDataHandler from '@typo3/backend/ajax-data-handler';
|
|
17
|
+
import Modal from '@typo3/backend/modal';
|
|
18
|
+
import Notification from '@typo3/backend/notification';
|
|
19
|
+
import ImmediateAction from '@typo3/backend/action-button/immediate-action';
|
|
20
|
+
import { lll } from '@typo3/core/lit-helper';
|
|
21
|
+
import Viewport from '@typo3/backend/viewport';
|
|
22
|
+
|
|
23
|
+
export class MoveContentElement {
|
|
24
|
+
public constructor() {
|
|
25
|
+
this.initialize();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
private async initialize(): Promise<void> {
|
|
29
|
+
await DocumentService.ready();
|
|
30
|
+
this.registerEvents(document.querySelector('.element-browser-body') as HTMLElement);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
private registerEvents(container: HTMLElement): void {
|
|
34
|
+
new RegularEvent('change', async (e: Event): Promise<void> => {
|
|
35
|
+
const recordTitle = (document.querySelector('#elementRecordTitle') as HTMLInputElement).value;
|
|
36
|
+
const url = new URL(window.location.href);
|
|
37
|
+
const uid = url.searchParams.get('uid');
|
|
38
|
+
const headline = document.querySelector('h2') as HTMLHeadingElement;
|
|
39
|
+
if (headline) {
|
|
40
|
+
headline.innerText = lll('headline.' + ((e.target as HTMLInputElement).checked ? 'copy' : 'move'), recordTitle, uid);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const buttonLabel = (e.target as HTMLInputElement).checked
|
|
44
|
+
? lll('copyElementToHere')
|
|
45
|
+
: lll('moveElementToHere');
|
|
46
|
+
|
|
47
|
+
document.querySelectorAll('[data-action="paste"]').forEach((button: HTMLButtonElement): void => {
|
|
48
|
+
button.querySelector('span.t3js-button-label').textContent = buttonLabel;
|
|
49
|
+
});
|
|
50
|
+
}).delegateTo(container, '#makeCopy');
|
|
51
|
+
|
|
52
|
+
new RegularEvent('click', async (e: Event, actionElement: HTMLElement): Promise<void> => {
|
|
53
|
+
const modeCheckbox = (document.querySelector('#makeCopy') as HTMLInputElement);
|
|
54
|
+
const recordTitle = (document.querySelector('#elementRecordTitle') as HTMLInputElement).value;
|
|
55
|
+
const targetPageTitle = (document.querySelector('#pageRecordTitle') as HTMLInputElement).value;
|
|
56
|
+
const pageUid = (document.querySelector('#pageUid') as HTMLInputElement).value;
|
|
57
|
+
const url = new URL(window.location.href);
|
|
58
|
+
const uid = url.searchParams.get('uid');
|
|
59
|
+
const returnUrl = new URL(url.searchParams.get('returnUrl'), window.origin);
|
|
60
|
+
|
|
61
|
+
const isCopyAction = modeCheckbox.checked;
|
|
62
|
+
const action = isCopyAction ? 'copy' : 'move';
|
|
63
|
+
const parameters: { cmd: object, data?: object } = {
|
|
64
|
+
cmd: {
|
|
65
|
+
tt_content: {
|
|
66
|
+
[uid]: {
|
|
67
|
+
[action]: actionElement.dataset.position
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
if (actionElement.dataset.colpos !== undefined) {
|
|
74
|
+
parameters.data = {
|
|
75
|
+
tt_content: {
|
|
76
|
+
[uid]: {
|
|
77
|
+
colPos: actionElement.dataset.colpos
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
AjaxDataHandler.process(parameters).then((): void => {
|
|
83
|
+
Modal.dismiss();
|
|
84
|
+
|
|
85
|
+
Notification.success(
|
|
86
|
+
lll(isCopyAction ? 'moveElement.notification.elementCopied.title' : 'moveElement.notification.elementMoved.title'),
|
|
87
|
+
lll(isCopyAction ? 'moveElement.notification.elementCopied.message' : 'moveElement.notification.elementMoved.message', recordTitle),
|
|
88
|
+
10,
|
|
89
|
+
[
|
|
90
|
+
{
|
|
91
|
+
label: lll('moveElement.notification.elementPasted.action.dismiss'),
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
label: lll('moveElement.notification.elementPasted.action.open', targetPageTitle),
|
|
95
|
+
action: new ImmediateAction((): void => {
|
|
96
|
+
returnUrl.searchParams.set('id', pageUid);
|
|
97
|
+
Viewport.ContentContainer.setUrl(returnUrl.toString());
|
|
98
|
+
})
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
Viewport.ContentContainer.setUrl(returnUrl.toString());
|
|
104
|
+
});
|
|
105
|
+
}).delegateTo(container, '[data-action="paste"]');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
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 RegularEvent from '@typo3/core/event/regular-event';
|
|
15
|
+
import DocumentService from '@typo3/core/document-service';
|
|
16
|
+
import AjaxDataHandler from '@typo3/backend/ajax-data-handler';
|
|
17
|
+
import Modal from '@typo3/backend/modal';
|
|
18
|
+
import ModuleMenu from '@typo3/backend/module-menu';
|
|
19
|
+
import Notification from '@typo3/backend/notification';
|
|
20
|
+
import ImmediateAction from '@typo3/backend/action-button/immediate-action';
|
|
21
|
+
import { lll } from '@typo3/core/lit-helper';
|
|
22
|
+
|
|
23
|
+
export class MovePage {
|
|
24
|
+
public constructor() {
|
|
25
|
+
this.initialize();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
private async initialize(): Promise<void> {
|
|
29
|
+
await DocumentService.ready();
|
|
30
|
+
this.registerEvents(document.querySelector('.element-browser-body') as HTMLElement);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
private registerEvents(container: HTMLElement): void {
|
|
34
|
+
const recordTitle = (document.querySelector('#elementRecordTitle') as HTMLInputElement).value;
|
|
35
|
+
const url = new URL(window.location.href);
|
|
36
|
+
|
|
37
|
+
new RegularEvent('click', async (e: Event, actionElement: HTMLElement): Promise<void> => {
|
|
38
|
+
const isCopyAction = (document.querySelector('#makeCopy') as HTMLInputElement).checked;
|
|
39
|
+
const action = isCopyAction ? 'copy' : 'move';
|
|
40
|
+
const parameters = {
|
|
41
|
+
cmd: {
|
|
42
|
+
[url.searchParams.get('table')]: {
|
|
43
|
+
[url.searchParams.get('uid')]: {
|
|
44
|
+
[action]: actionElement.dataset.position
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
AjaxDataHandler.process(parameters).then((): void => {
|
|
50
|
+
Modal.dismiss();
|
|
51
|
+
|
|
52
|
+
Notification.success(
|
|
53
|
+
lll(isCopyAction ? 'movePage.notification.pageCopied.title' : 'movePage.notification.pageMoved.title'),
|
|
54
|
+
lll(isCopyAction ? 'movePage.notification.pageCopied.message' : 'movePage.notification.pageMoved.message', recordTitle),
|
|
55
|
+
10,
|
|
56
|
+
[
|
|
57
|
+
{
|
|
58
|
+
label: lll('movePage.notification.pagePasted.action.dismiss'),
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
label: lll('movePage.notification.pagePasted.action.open', recordTitle),
|
|
62
|
+
action: new ImmediateAction((): void => {
|
|
63
|
+
ModuleMenu.App.showModule('web_list', 'id=' + url.searchParams.get('uid'));
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
top.document.dispatchEvent(new CustomEvent('typo3:pagetree:refresh'));
|
|
70
|
+
ModuleMenu.App.showModule('web_list', 'id=' + url.searchParams.get('expandPage'));
|
|
71
|
+
});
|
|
72
|
+
}).delegateTo(container, '[data-action="paste"]');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,331 @@
|
|
|
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 { SeverityEnum } from './enum/severity';
|
|
15
|
+
import $ from 'jquery';
|
|
16
|
+
import { Carousel } from 'bootstrap';
|
|
17
|
+
import { default as Modal, type ModalElement } from './modal';
|
|
18
|
+
import Severity from './severity';
|
|
19
|
+
import Icons from './icons';
|
|
20
|
+
import { topLevelModuleImport } from './utility/top-level-module-import';
|
|
21
|
+
|
|
22
|
+
type SlideCallback = ($slide: JQuery, settings: WizardSettings, identifier: string) => void;
|
|
23
|
+
|
|
24
|
+
interface WizardSettings {
|
|
25
|
+
[key: string]: any;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface WizardSetup {
|
|
29
|
+
slides: Array<any>;
|
|
30
|
+
settings: WizardSettings;
|
|
31
|
+
forceSelection: boolean;
|
|
32
|
+
$carousel: JQuery;
|
|
33
|
+
carousel: Carousel;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
interface Slide {
|
|
37
|
+
identifier: string;
|
|
38
|
+
title: string;
|
|
39
|
+
content: string|JQuery;
|
|
40
|
+
severity: SeverityEnum;
|
|
41
|
+
callback?: SlideCallback;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Module: @typo3/backend/wizard
|
|
46
|
+
* @exports @typo3/backend/wizard
|
|
47
|
+
* @deprecated will be removed in TYPO3 14.0
|
|
48
|
+
*/
|
|
49
|
+
class Wizard {
|
|
50
|
+
private setup: WizardSetup;
|
|
51
|
+
private readonly originalSetup: WizardSetup;
|
|
52
|
+
|
|
53
|
+
constructor() {
|
|
54
|
+
console.warn(
|
|
55
|
+
'The module `@typo3/backend/wizard.js` has been marked as deprecated and will be removed in TYPO3 v14.0. '
|
|
56
|
+
+ 'Consider migrating to `@typo3/backend/multi-step-wizard.js`.'
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
this.setup = {
|
|
60
|
+
slides: [],
|
|
61
|
+
settings: {},
|
|
62
|
+
forceSelection: true,
|
|
63
|
+
$carousel: null,
|
|
64
|
+
carousel: null,
|
|
65
|
+
};
|
|
66
|
+
this.originalSetup = $.extend(true, {}, this.setup);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
public set(key: string, value: any): Wizard {
|
|
70
|
+
this.setup.settings[key] = value;
|
|
71
|
+
return this;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public addSlide(
|
|
75
|
+
identifier: string,
|
|
76
|
+
title: string,
|
|
77
|
+
content: string = '',
|
|
78
|
+
severity: SeverityEnum = SeverityEnum.notice,
|
|
79
|
+
callback?: SlideCallback,
|
|
80
|
+
): Wizard {
|
|
81
|
+
const slide: Slide = {
|
|
82
|
+
identifier: identifier,
|
|
83
|
+
title: title,
|
|
84
|
+
content: content,
|
|
85
|
+
severity: severity,
|
|
86
|
+
callback: callback,
|
|
87
|
+
};
|
|
88
|
+
this.setup.slides.push(slide);
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
public addFinalProcessingSlide(callback?: SlideCallback): Promise<void> {
|
|
93
|
+
if (!callback) {
|
|
94
|
+
callback = (): void => {
|
|
95
|
+
this.dismiss();
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return Icons.getIcon('spinner-circle', Icons.sizes.large, null, null).then((markup: string) => {
|
|
100
|
+
const $processingSlide = $('<div />', { class: 'text-center' }).append(markup);
|
|
101
|
+
this.addSlide(
|
|
102
|
+
'final-processing-slide', top.TYPO3.lang['wizard.processing.title'],
|
|
103
|
+
$processingSlide[0].outerHTML,
|
|
104
|
+
Severity.notice,
|
|
105
|
+
callback,
|
|
106
|
+
);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
public show(): void {
|
|
111
|
+
const $slides = this.generateSlides();
|
|
112
|
+
const firstSlide = this.setup.slides[0];
|
|
113
|
+
|
|
114
|
+
Modal.advanced({
|
|
115
|
+
title: firstSlide.title,
|
|
116
|
+
content: $slides,
|
|
117
|
+
severity: firstSlide.severity,
|
|
118
|
+
staticBackdrop: true,
|
|
119
|
+
buttons: [{
|
|
120
|
+
text: top.TYPO3.lang['wizard.button.cancel'],
|
|
121
|
+
active: true,
|
|
122
|
+
btnClass: 'btn-default',
|
|
123
|
+
name: 'cancel',
|
|
124
|
+
trigger: (): void => {
|
|
125
|
+
this.getComponent().trigger('wizard-dismiss');
|
|
126
|
+
},
|
|
127
|
+
}, {
|
|
128
|
+
text: top.TYPO3.lang['wizard.button.next'],
|
|
129
|
+
btnClass: 'btn-primary',
|
|
130
|
+
name: 'next',
|
|
131
|
+
}],
|
|
132
|
+
callback: (modal: ModalElement): void => {
|
|
133
|
+
topLevelModuleImport('@typo3/backend/element/progress-bar-element.js').then((): void => {
|
|
134
|
+
this.setup.carousel = new Carousel(modal.querySelector('.carousel'));
|
|
135
|
+
this.addProgressBar();
|
|
136
|
+
this.initializeEvents(modal);
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
if (this.setup.forceSelection) {
|
|
142
|
+
this.lockNextStep();
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
this.getComponent().on('wizard-visible', (): void => {
|
|
146
|
+
this.runSlideCallback(firstSlide, this.setup.$carousel.find('.carousel-item').first());
|
|
147
|
+
}).on('wizard-dismissed', (): void => {
|
|
148
|
+
this.setup = $.extend(true, {}, this.originalSetup);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
public getComponent(): JQuery {
|
|
153
|
+
if (this.setup.$carousel === null) {
|
|
154
|
+
this.generateSlides();
|
|
155
|
+
}
|
|
156
|
+
return this.setup.$carousel;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
public dismiss(): void {
|
|
160
|
+
Modal.dismiss();
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
public lockNextStep(): JQuery {
|
|
164
|
+
const $button = this.setup.$carousel.closest('.modal').find('button[name="next"]');
|
|
165
|
+
$button.prop('disabled', true);
|
|
166
|
+
return $button;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
public unlockNextStep(): JQuery {
|
|
170
|
+
const $button = this.setup.$carousel.closest('.modal').find('button[name="next"]');
|
|
171
|
+
$button.prop('disabled', false);
|
|
172
|
+
return $button;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
public setForceSelection(force: boolean): void {
|
|
176
|
+
this.setup.forceSelection = force;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
private initializeEvents(modal: ModalElement): void {
|
|
180
|
+
const $modal = this.setup.$carousel.closest('.modal');
|
|
181
|
+
const $modalTitle = $modal.find('.modal-title');
|
|
182
|
+
const $modalFooter = $modal.find('.modal-footer');
|
|
183
|
+
const $nextButton = $modalFooter.find('button[name="next"]');
|
|
184
|
+
|
|
185
|
+
$nextButton.on('click', (): void => {
|
|
186
|
+
this.setup.carousel.next();
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
this.setup.$carousel.get(0).addEventListener('slide.bs.carousel', (): void => {
|
|
190
|
+
const nextSlideNumber = this.setup.$carousel.data('currentSlide') + 1;
|
|
191
|
+
const currentIndex = this.setup.$carousel.data('currentIndex') + 1;
|
|
192
|
+
|
|
193
|
+
$modalTitle.text(this.setup.slides[currentIndex].title);
|
|
194
|
+
|
|
195
|
+
this.setup.$carousel.data('currentSlide', nextSlideNumber);
|
|
196
|
+
this.setup.$carousel.data('currentIndex', currentIndex);
|
|
197
|
+
|
|
198
|
+
if (nextSlideNumber >= this.setup.$carousel.data('realSlideCount')) {
|
|
199
|
+
// Point of no return - hide modal footer disable any closing ability
|
|
200
|
+
$modal.find('.modal-header .close').remove();
|
|
201
|
+
$modalFooter.slideUp();
|
|
202
|
+
} else {
|
|
203
|
+
const progressBar = $modalFooter.find('typo3-backend-progress-bar');
|
|
204
|
+
progressBar.attr('value', currentIndex);
|
|
205
|
+
progressBar.attr('label', top.TYPO3.lang['wizard.progress']
|
|
206
|
+
.replace('{0}', nextSlideNumber)
|
|
207
|
+
.replace('{1}', this.setup.$carousel.data('slideCount'))
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
$modal
|
|
212
|
+
.removeClass('modal-severity-' + Severity.getCssClass(this.setup.slides[currentIndex - 1].severity))
|
|
213
|
+
.addClass('modal-severity-' + Severity.getCssClass(this.setup.slides[currentIndex].severity));
|
|
214
|
+
});
|
|
215
|
+
this.setup.$carousel.get(0).addEventListener('slid.bs.carousel', (evt: Event & Carousel.Event): void => {
|
|
216
|
+
const currentIndex = this.setup.$carousel.data('currentIndex');
|
|
217
|
+
const slide = this.setup.slides[currentIndex];
|
|
218
|
+
|
|
219
|
+
this.runSlideCallback(slide, $(evt.relatedTarget));
|
|
220
|
+
|
|
221
|
+
if (this.setup.forceSelection) {
|
|
222
|
+
this.lockNextStep();
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Custom event, closes the wizard
|
|
228
|
+
*/
|
|
229
|
+
const cmp = this.getComponent();
|
|
230
|
+
cmp.on('wizard-dismiss', this.dismiss);
|
|
231
|
+
|
|
232
|
+
modal.addEventListener('typo3-modal-hidden', (): void => {
|
|
233
|
+
cmp.trigger('wizard-dismissed');
|
|
234
|
+
});
|
|
235
|
+
modal.addEventListener('typo3-modal-shown', (): void => {
|
|
236
|
+
cmp.trigger('wizard-visible');
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
private runSlideCallback(slide: Slide, $slide: JQuery): void {
|
|
241
|
+
if (typeof slide.callback === 'function') {
|
|
242
|
+
slide.callback($slide, this.setup.settings, slide.identifier);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
private addProgressBar(): void {
|
|
247
|
+
const realSlideCount = this.setup.$carousel.find('.carousel-item').length;
|
|
248
|
+
const slideCount = Math.max(1, realSlideCount);
|
|
249
|
+
const initialStep = Math.round(100 / slideCount);
|
|
250
|
+
const $modal = this.setup.$carousel.closest('.modal');
|
|
251
|
+
const $modalFooter = $modal.find('.modal-footer');
|
|
252
|
+
|
|
253
|
+
this.setup.$carousel
|
|
254
|
+
.data('initialStep', initialStep)
|
|
255
|
+
.data('slideCount', slideCount)
|
|
256
|
+
.data('realSlideCount', realSlideCount)
|
|
257
|
+
.data('currentIndex', 0)
|
|
258
|
+
.data('currentSlide', 1);
|
|
259
|
+
|
|
260
|
+
// Append progress bar to modal footer
|
|
261
|
+
if (slideCount > 1) {
|
|
262
|
+
const progressBar = document.createElement('typo3-backend-progress-bar');
|
|
263
|
+
progressBar.value = 0;
|
|
264
|
+
progressBar.max = slideCount - 1; // progress is index-based
|
|
265
|
+
progressBar.label = top.TYPO3.lang['wizard.progress']
|
|
266
|
+
.replace('{0}', '1')
|
|
267
|
+
.replace('{1}', slideCount.toString());
|
|
268
|
+
$modalFooter.prepend(progressBar);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
private generateSlides(): JQuery {
|
|
273
|
+
// Check whether the slides were already generated
|
|
274
|
+
if (this.setup.$carousel !== null) {
|
|
275
|
+
return this.setup.$carousel;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
let slides = '<div class="carousel slide" data-bs-ride="false">'
|
|
279
|
+
+ '<div class="carousel-inner" role="listbox">';
|
|
280
|
+
|
|
281
|
+
for (const currentSlide of Object.values(this.setup.slides)) {
|
|
282
|
+
let slideContent = currentSlide.content;
|
|
283
|
+
|
|
284
|
+
if (typeof slideContent === 'object') {
|
|
285
|
+
slideContent = slideContent.html();
|
|
286
|
+
}
|
|
287
|
+
slides += '<div class="carousel-item" data-bs-slide="' + currentSlide.identifier + '">' + slideContent + '</div>';
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
slides += '</div></div>';
|
|
291
|
+
|
|
292
|
+
this.setup.$carousel = $(slides);
|
|
293
|
+
this.setup.$carousel.find('.carousel-item').first().addClass('active');
|
|
294
|
+
|
|
295
|
+
return this.setup.$carousel;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
let wizardObject: Wizard;
|
|
300
|
+
try {
|
|
301
|
+
// fetch from opening window
|
|
302
|
+
if (window.opener && window.opener.TYPO3 && window.opener.TYPO3.Wizard) {
|
|
303
|
+
wizardObject = window.opener.TYPO3.Wizard;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// fetch from parent
|
|
307
|
+
if (parent && parent.window.TYPO3 && parent.window.TYPO3.Wizard) {
|
|
308
|
+
wizardObject = parent.window.TYPO3.Wizard;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// fetch object from outer frame
|
|
312
|
+
if (top && top.TYPO3 && top.TYPO3.Wizard) {
|
|
313
|
+
wizardObject = top.TYPO3.Wizard;
|
|
314
|
+
}
|
|
315
|
+
} catch {
|
|
316
|
+
// This only happens if the opener, parent or top is some other url (eg a local file)
|
|
317
|
+
// which loaded the current window. Then the browser's cross domain policy jumps in
|
|
318
|
+
// and raises an exception.
|
|
319
|
+
// For this case we are safe and we can create our global object below.
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
if (!wizardObject) {
|
|
323
|
+
wizardObject = new Wizard();
|
|
324
|
+
|
|
325
|
+
// attach to global frame
|
|
326
|
+
if (typeof TYPO3 !== 'undefined') {
|
|
327
|
+
TYPO3.Wizard = wizardObject;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
export default wizardObject;
|
|
@@ -0,0 +1,88 @@
|
|
|
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 Modal from '@typo3/backend/modal';
|
|
15
|
+
import DocumentService from '@typo3/core/document-service';
|
|
16
|
+
import DateTimePicker from '@typo3/backend/date-time-picker';
|
|
17
|
+
import '@typo3/backend/input/clearable';
|
|
18
|
+
import { MessageUtility } from '@typo3/backend/utility/message-utility';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Module: @typo3/belog/backend-log
|
|
22
|
+
* JavaScript for backend log
|
|
23
|
+
* @exports @typo3/belog/backend-log
|
|
24
|
+
*/
|
|
25
|
+
class BackendLog {
|
|
26
|
+
private clearableElements: NodeListOf<HTMLInputElement> = null;
|
|
27
|
+
private dateTimePickerElements: NodeListOf<HTMLInputElement> = null;
|
|
28
|
+
private elementBrowserElements: NodeListOf<HTMLAnchorElement> = null;
|
|
29
|
+
|
|
30
|
+
constructor() {
|
|
31
|
+
DocumentService.ready().then((): void => {
|
|
32
|
+
this.clearableElements = document.querySelectorAll('.t3js-clearable') as NodeListOf<HTMLInputElement>;
|
|
33
|
+
this.dateTimePickerElements = document.querySelectorAll('.t3js-datetimepicker');
|
|
34
|
+
this.elementBrowserElements = document.querySelectorAll('.t3js-element-browser');
|
|
35
|
+
this.initializeClearableElements();
|
|
36
|
+
this.initializeDateTimePickerElements();
|
|
37
|
+
this.initializeElementBrowserElements();
|
|
38
|
+
this.initializeElementBrowserEventListener();
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
private initializeClearableElements(): void {
|
|
43
|
+
this.clearableElements.forEach(
|
|
44
|
+
(clearableField) => clearableField.clearable()
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
private initializeDateTimePickerElements(): void {
|
|
49
|
+
this.dateTimePickerElements.forEach(
|
|
50
|
+
(dateTimePickerElement: HTMLInputElement) => DateTimePicker.initialize(dateTimePickerElement)
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
private initializeElementBrowserElements(): void {
|
|
55
|
+
this.elementBrowserElements.forEach((element: HTMLAnchorElement): void => {
|
|
56
|
+
const triggerField = <HTMLInputElement>document.getElementById(element.dataset.triggerFor);
|
|
57
|
+
element.dataset.params = triggerField.name + '|||pages';
|
|
58
|
+
element.addEventListener('click', (event: Event): void => {
|
|
59
|
+
event.preventDefault();
|
|
60
|
+
const target = <HTMLAnchorElement>event.currentTarget;
|
|
61
|
+
Modal.advanced({
|
|
62
|
+
type: Modal.types.iframe,
|
|
63
|
+
content: target.dataset.target + '&mode=' + target.dataset.mode + '&bparams=' + target.dataset.params,
|
|
64
|
+
size: Modal.sizes.large
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
private initializeElementBrowserEventListener(): void {
|
|
71
|
+
window.addEventListener('message', (e: MessageEvent): void => {
|
|
72
|
+
if (!MessageUtility.verifyOrigin(e.origin)
|
|
73
|
+
|| e.data.actionName !== 'typo3:elementBrowser:elementAdded'
|
|
74
|
+
|| typeof e.data.fieldName !== 'string'
|
|
75
|
+
|| typeof e.data.value !== 'string'
|
|
76
|
+
) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const field = <HTMLInputElement>document.querySelector('input[name="' + e.data.fieldName + '"]');
|
|
81
|
+
if (field) {
|
|
82
|
+
field.value = e.data.value.split('_').pop();
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export default new BackendLog();
|
|
@@ -0,0 +1,40 @@
|
|
|
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 RegularEvent from '@typo3/core/event/regular-event';
|
|
15
|
+
import DocumentService from '@typo3/core/document-service';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Module: @typo3/beuser/backend-user-listing
|
|
19
|
+
* JavaScript for backend user listing
|
|
20
|
+
* @exports @typo3/beuser/backend-user-listing
|
|
21
|
+
*/
|
|
22
|
+
class BackendUserListing {
|
|
23
|
+
private readonly searchField: HTMLInputElement = document.querySelector('#tx_Beuser_username');
|
|
24
|
+
private readonly activeSearch: boolean = this.searchField ? (this.searchField.value !== '') : false;
|
|
25
|
+
|
|
26
|
+
constructor() {
|
|
27
|
+
DocumentService.ready().then((): void => {
|
|
28
|
+
// Respond to browser related clearable event
|
|
29
|
+
if (this.searchField) {
|
|
30
|
+
new RegularEvent('search', (): void => {
|
|
31
|
+
if (this.searchField.value === '' && this.activeSearch) {
|
|
32
|
+
this.searchField.closest('form').submit();
|
|
33
|
+
}
|
|
34
|
+
}).bindTo(this.searchField);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export default new BackendUserListing();
|