diff --git a/Build/Sources/TypeScript/workspaces/backend.ts b/Build/Sources/TypeScript/workspaces/backend.ts
index f3c07ca887e8a7be99b19faf38e399e4d5af7c43..0f433a52028713f68fb08245f8a58d4de1269be0 100644
--- a/Build/Sources/TypeScript/workspaces/backend.ts
+++ b/Build/Sources/TypeScript/workspaces/backend.ts
@@ -14,6 +14,7 @@
 import { AjaxResponse } from '@typo3/core/ajax/ajax-response';
 import DocumentService from '@typo3/core/document-service';
 import $ from 'jquery';
+import { html } from 'lit';
 import '@typo3/backend/element/icon-element';
 import { SeverityEnum } from '@typo3/backend/enum/severity';
 import '@typo3/backend/input/clearable';
@@ -23,13 +24,12 @@ import Workspaces from './workspaces';
 import { default as Modal, ModalElement } from '@typo3/backend/modal';
 import Persistent from '@typo3/backend/storage/persistent';
 import Utility from '@typo3/backend/utility';
-import Wizard from '@typo3/backend/wizard';
-import SecurityUtility from '@typo3/core/security-utility';
 import windowManager from '@typo3/backend/window-manager';
 import RegularEvent from '@typo3/core/event/regular-event';
 import { topLevelModuleImport } from '@typo3/backend/utility/top-level-module-import';
 import { selector } from '@typo3/core/literals';
 import IconHelper from '@typo3/workspaces/utility/icon-helper';
+import DeferredAction from '@typo3/backend/action-button/deferred-action';
 
 enum Identifiers {
   searchForm = '#workspace-settings-form',
@@ -305,32 +305,12 @@ class Backend extends Workspaces {
         },
       ).then(async (response: AjaxResponse): Promise<void> => {
         if ((await response.resolve())[0].result.result === 'warning') {
-          this.addIntegrityCheckWarningToWizard();
-        }
-
-        Wizard.setForceSelection(false);
-        Wizard.addSlide(
-          'publish-confirm',
-          TYPO3.lang['window.publish.title'],
-          TYPO3.lang['window.publish.message'],
-          SeverityEnum.info,
-        );
-        Wizard.addFinalProcessingSlide((): void => {
-          // We passed this slide, publish the record now
-          this.sendRemoteRequest(
-            this.generateRemoteActionsPayload('publishSingleRecord', [
-              row.dataset.table,
-              row.dataset.t3ver_oid,
-              row.dataset.uid,
-            ]),
-          ).then((): void => {
-            Wizard.dismiss();
-            this.getWorkspaceInfos();
-            Backend.refreshPageTree();
+          this.openIntegrityWarningModal().addEventListener('confirm.button.ok', (): void => {
+            this.renderPublishModal(row)
           });
-        }).then((): void => {
-          Wizard.show();
-        });
+        } else {
+          this.renderPublishModal(row);
+        }
       });
     }).on('click', '[data-action="prevstage"]', (e: JQueryEventObject): void => {
       this.sendToStage($(e.currentTarget).closest('tr'), 'prev');
@@ -862,8 +842,7 @@ class Backend extends Workspaces {
     }
 
     if (!integrityCheckRequired) {
-      Wizard.setForceSelection(false);
-      this.renderSelectionActionWizard(selectedAction, affectedRecords);
+      this.renderSelectionActionModal(selectedAction, affectedRecords);
     } else {
       this.checkIntegrity(
         {
@@ -871,60 +850,92 @@ class Backend extends Workspaces {
           type: 'selection',
         },
       ).then(async (response: AjaxResponse): Promise<void> => {
-        Wizard.setForceSelection(false);
         if ((await response.resolve())[0].result.result === 'warning') {
-          this.addIntegrityCheckWarningToWizard();
+          this.openIntegrityWarningModal().addEventListener('confirm.button.ok', (): void => {
+            this.renderSelectionActionModal(selectedAction, affectedRecords);
+          });
+        } else {
+          this.renderSelectionActionModal(selectedAction, affectedRecords);
         }
-        this.renderSelectionActionWizard(selectedAction, affectedRecords);
       });
     }
   };
 
-  /**
-   * Adds a slide to the wizard concerning an integrity check warning.
-   */
-  private readonly addIntegrityCheckWarningToWizard = (): void => {
-    Wizard.addSlide(
-      'integrity-warning',
+  private readonly openIntegrityWarningModal = (): ModalElement => {
+    const modal = Modal.confirm(
       TYPO3.lang['window.integrity_warning.title'],
-      TYPO3.lang['integrity.hasIssuesDescription'] + '<br>' + TYPO3.lang['integrity.hasIssuesQuestion'],
-      SeverityEnum.warning,
+      html`<p>${TYPO3.lang['integrity.hasIssuesDescription']}<br>${TYPO3.lang['integrity.hasIssuesQuestion']}</p>`,
+      SeverityEnum.warning
     );
+    modal.addEventListener('button.clicked', (): void => modal.hideModal());
+
+    return modal;
   };
 
-  /**
-   * Renders the wizard for selection actions
-   *
-   * @param {String} selectedAction
-   * @param {Array<object>} affectedRecords
-   */
-  private renderSelectionActionWizard(selectedAction: string, affectedRecords: Array<object>): void {
-    Wizard.addSlide(
-      'mass-action-confirmation',
-      TYPO3.lang['window.selectionAction.title'],
-      '<p>'
-      + new SecurityUtility().encodeHtml(TYPO3.lang['tooltip.' + selectedAction + 'Selected'])
-      + '</p>',
-      SeverityEnum.warning,
-    );
-    Wizard.addFinalProcessingSlide((): void => {
-      this.sendRemoteRequest(
-        this.generateRemoteActionsPayload('executeSelectionAction', {
-          action: selectedAction,
-          selection: affectedRecords,
-        }),
-      ).then((): void => {
-        this.markedRecordsForMassAction = [];
-        this.getWorkspaceInfos();
-        Wizard.dismiss();
-        Backend.refreshPageTree();
-      });
-    }).then((): void => {
-      Wizard.show();
+  private renderPublishModal(row: HTMLTableRowElement): void {
+    const modal = Modal.advanced({
+      title: TYPO3.lang['window.publish.title'],
+      content: TYPO3.lang['window.publish.message'],
+      severity: SeverityEnum.info,
+      staticBackdrop: true,
+      buttons: [
+        {
+          text: TYPO3.lang.cancel,
+          btnClass: 'btn-default',
+          trigger: function(): void {
+            modal.hideModal();
+          },
+        }, {
+          text: TYPO3.lang.label_doaction_publish,
+          btnClass: 'btn-info',
+          action: new DeferredAction(async (): Promise<void> => {
+            await this.sendRemoteRequest(
+              this.generateRemoteActionsPayload('publishSingleRecord', [
+                row.dataset.table,
+                row.dataset.t3ver_oid,
+                row.dataset.uid,
+              ]),
+            );
+            this.getWorkspaceInfos();
+            Backend.refreshPageTree();
+          }),
+        },
+      ]
+    });
+  }
 
-      Wizard.getComponent().on('wizard-dismissed', (): void => {
-        this.elements.$chooseSelectionAction.val('');
-      });
+  private renderSelectionActionModal(selectedAction: string, affectedRecords: Array<object>): void {
+    const modal = Modal.advanced({
+      title: TYPO3.lang['window.selectionAction.title'],
+      content: html`<p>${TYPO3.lang['tooltip.' + selectedAction + 'Selected']}</p>`,
+      severity: SeverityEnum.warning,
+      staticBackdrop: true,
+      buttons: [
+        {
+          text: TYPO3.lang.cancel,
+          btnClass: 'btn-default',
+          trigger: function(): void {
+            modal.hideModal();
+          },
+        }, {
+          text: TYPO3.lang['label_doaction_' + selectedAction],
+          btnClass: 'btn-warning',
+          action: new DeferredAction(async (): Promise<void> => {
+            await this.sendRemoteRequest(
+              this.generateRemoteActionsPayload('executeSelectionAction', {
+                action: selectedAction,
+                selection: affectedRecords,
+              }),
+            );
+            this.markedRecordsForMassAction = [];
+            this.getWorkspaceInfos();
+            Backend.refreshPageTree();
+          }),
+        },
+      ]
+    });
+    modal.addEventListener('typo3-modal-hidden', (): void => {
+      this.elements.$chooseSelectionAction.val('');
     });
   }
 
@@ -941,8 +952,7 @@ class Backend extends Workspaces {
     }
 
     if (!integrityCheckRequired) {
-      Wizard.setForceSelection(false);
-      this.renderMassActionWizard(selectedAction);
+      this.renderMassActionModal(selectedAction);
     } else {
       this.checkIntegrity(
         {
@@ -950,46 +960,34 @@ class Backend extends Workspaces {
           type: selectedAction,
         },
       ).then(async (response: AjaxResponse): Promise<void> => {
-        Wizard.setForceSelection(false);
         if ((await response.resolve())[0].result.result === 'warning') {
-          this.addIntegrityCheckWarningToWizard();
+          this.openIntegrityWarningModal().addEventListener('confirm.button.ok', (): void => {
+            this.renderMassActionModal(selectedAction);
+          });
+        } else {
+          this.renderMassActionModal(selectedAction);
         }
-        this.renderMassActionWizard(selectedAction);
       });
     }
   };
 
-  /**
-   * Renders the wizard for mass actions
-   *
-   * @param {String} selectedAction
-   */
-  private renderMassActionWizard(selectedAction: string): void {
+  private renderMassActionModal(selectedAction: string): void {
     let massAction: string;
+    let continueButtonLabel: string;
 
     switch (selectedAction) {
       case 'publish':
         massAction = 'publishWorkspace';
+        continueButtonLabel = TYPO3.lang.label_doaction_publish;
         break;
       case 'discard':
         massAction = 'flushWorkspace';
+        continueButtonLabel = TYPO3.lang.label_doaction_discard;
         break;
       default:
         throw 'Invalid mass action ' + selectedAction + ' called.';
     }
 
-    const securityUtility = new SecurityUtility();
-    Wizard.setForceSelection(false);
-    Wizard.addSlide(
-      'mass-action-confirmation',
-      TYPO3.lang['window.massAction.title'],
-      '<p>'
-      + securityUtility.encodeHtml(TYPO3.lang['tooltip.' + selectedAction + 'All']) + '<br><br>'
-      + securityUtility.encodeHtml(TYPO3.lang['tooltip.affectWholeWorkspace'])
-      + '</p>',
-      SeverityEnum.warning,
-    );
-
     const sendRequestsUntilAllProcessed = async (response: AjaxResponse): Promise<void> => {
       const result = (await response.resolve())[0].result;
       // Make sure to process all items
@@ -999,25 +997,44 @@ class Backend extends Workspaces {
         ).then(sendRequestsUntilAllProcessed);
       } else {
         this.getWorkspaceInfos();
-        Wizard.dismiss();
+        Modal.dismiss();
       }
     };
 
-    Wizard.addFinalProcessingSlide((): void => {
-      this.sendRemoteRequest(
-        this.generateRemoteMassActionsPayload(massAction, {
-          init: true,
-          total: 0,
-          processed: 0,
-          language: this.settings.language
-        }),
-      ).then(sendRequestsUntilAllProcessed);
-    }).then((): void => {
-      Wizard.show();
-
-      Wizard.getComponent().on('wizard-dismissed', (): void => {
-        this.elements.$chooseMassAction.val('');
-      });
+    const modal = Modal.advanced({
+      title: TYPO3.lang['window.massAction.title'],
+      content: html`
+        <p>${TYPO3.lang['tooltip.' + selectedAction + 'All']}</p>
+        <p>${TYPO3.lang['tooltip.affectWholeWorkspace']}</p>
+      `,
+      severity: SeverityEnum.warning,
+      staticBackdrop: true,
+      buttons: [
+        {
+          text: TYPO3.lang.cancel,
+          btnClass: 'btn-default',
+          trigger: function(): void {
+            modal.hideModal();
+          },
+        }, {
+          text: continueButtonLabel,
+          btnClass: 'btn-warning',
+          action: new DeferredAction(async (): Promise<void> => {
+            const response = await this.sendRemoteRequest(
+              this.generateRemoteMassActionsPayload(massAction, {
+                init: true,
+                total: 0,
+                processed: 0,
+                language: this.settings.language
+              }),
+            );
+            await sendRequestsUntilAllProcessed(response);
+          }),
+        },
+      ]
+    });
+    modal.addEventListener('typo3-modal-hidden', (): void => {
+      this.elements.$chooseMassAction.val('');
     });
   }
 
diff --git a/typo3/sysext/core/Tests/Acceptance/Application/Workspace/WorkspaceModuleCest.php b/typo3/sysext/core/Tests/Acceptance/Application/Workspace/WorkspaceModuleCest.php
index d05097504ce51fac604255824ac907cca32c69c0..ef959dfb99195e3fa39f26da47086b8528be9993 100644
--- a/typo3/sysext/core/Tests/Acceptance/Application/Workspace/WorkspaceModuleCest.php
+++ b/typo3/sysext/core/Tests/Acceptance/Application/Workspace/WorkspaceModuleCest.php
@@ -84,7 +84,7 @@ final class WorkspaceModuleCest
         $I->selectOption('select[name=mass-action]', 'Publish');
 
         $modalDialog->canSeeDialog();
-        $modalDialog->clickButtonInDialog('Next');
+        $modalDialog->clickButtonInDialog('Publish');
 
         $I->dontSee(self::$newPageTitle, '#workspace-panel');
     }
diff --git a/typo3/sysext/workspaces/Resources/Public/JavaScript/backend.js b/typo3/sysext/workspaces/Resources/Public/JavaScript/backend.js
index c9e5101e50de8fa0bbeb7419cf9a7bd2ce6d9131..065f420005f27974b8191c123668ed8b2ddef16b 100644
--- a/typo3/sysext/workspaces/Resources/Public/JavaScript/backend.js
+++ b/typo3/sysext/workspaces/Resources/Public/JavaScript/backend.js
@@ -10,4 +10,7 @@
  *
  * The TYPO3 project - inspiring people to share!
  */
-import DocumentService from"@typo3/core/document-service.js";import $ from"jquery";import"@typo3/backend/element/icon-element.js";import{SeverityEnum}from"@typo3/backend/enum/severity.js";import"@typo3/backend/input/clearable.js";import"@typo3/workspaces/renderable/record-table.js";import"@typo3/workspaces/renderable/pagination.js";import Workspaces from"@typo3/workspaces/workspaces.js";import{default as Modal}from"@typo3/backend/modal.js";import Persistent from"@typo3/backend/storage/persistent.js";import Utility from"@typo3/backend/utility.js";import Wizard from"@typo3/backend/wizard.js";import SecurityUtility from"@typo3/core/security-utility.js";import windowManager from"@typo3/backend/window-manager.js";import RegularEvent from"@typo3/core/event/regular-event.js";import{topLevelModuleImport}from"@typo3/backend/utility/top-level-module-import.js";import{selector}from"@typo3/core/literals.js";import IconHelper from"@typo3/workspaces/utility/icon-helper.js";var Identifiers;!function(e){e.searchForm="#workspace-settings-form",e.searchTextField='#workspace-settings-form input[name="search-text"]',e.searchSubmitBtn='#workspace-settings-form button[type="submit"]',e.depthSelector='#workspace-settings-form [name="depth"]',e.languageSelector='#workspace-settings-form select[name="languages"]',e.stagesSelector='#workspace-settings-form select[name="stages"]',e.workspaceActions=".workspace-actions",e.chooseStageAction='.workspace-actions [name="stage-action"]',e.chooseSelectionAction='.workspace-actions [name="selection-action"]',e.chooseMassAction='.workspace-actions [name="mass-action"]',e.container="#workspace-panel",e.contentsContainer="#workspace-contents",e.noContentsContainer="#workspace-contents-empty",e.previewLinksButton=".t3js-preview-link",e.pagination="#workspace-pagination"}(Identifiers||(Identifiers={}));class Backend extends Workspaces{constructor(){super(),this.elements={},this.settings={dir:"ASC",id:TYPO3.settings.Workspaces.id,depth:1,language:"all",limit:30,query:"",sort:"label_Live",start:0,filterTxt:""},this.paging={currentPage:1,totalPages:1,totalItems:0},this.markedRecordsForMassAction=[],this.indentationPadding=26,this.handleCheckboxStateChanged=e=>{const t=$(e.target),s=t.parents("tr"),a=t.prop("checked"),n=s.data("table")+":"+s.data("uid")+":"+s.data("t3ver_oid");if(a)this.markedRecordsForMassAction.push(n);else{const e=this.markedRecordsForMassAction.indexOf(n);e>-1&&this.markedRecordsForMassAction.splice(e,1)}s.data("collectionCurrent")?Backend.changeCollectionChildrenState(s.data("collectionCurrent"),a):s.data("collection")&&(Backend.changeCollectionChildrenState(s.data("collection"),a),Backend.changeCollectionParentState(s.data("collection"),a)),this.elements.$chooseMassAction.prop("disabled",this.markedRecordsForMassAction.length>0)},this.viewChanges=e=>{e.preventDefault();const t=$(e.currentTarget).closest("tr");this.sendRemoteRequest(this.generateRemotePayload("getRowDetails",{stage:t.data("stage"),t3ver_oid:t.data("t3ver_oid"),table:t.data("table"),uid:t.data("uid"),filterFields:!0})).then((async e=>{const s=(await e.resolve())[0].result.data[0],a=$("<div />"),n=$("<ul />",{class:"nav nav-tabs",role:"tablist"}),i=$("<div />",{class:"tab-content"}),o=[];a.append($("<p />").html(TYPO3.lang.path.replace("{0}",s.path_Live)),$("<p />").html(TYPO3.lang.current_step.replace("{0}",s.label_Stage).replace("{1}",s.stage_position).replace("{2}",s.stage_count))),s.diff.length>0&&(n.append($("<li />",{role:"presentation",class:"nav-item"}).append($("<a />",{class:"nav-link",href:"#workspace-changes","aria-controls":"workspace-changes",role:"tab","data-bs-toggle":"tab"}).text(TYPO3.lang["window.recordChanges.tabs.changeSummary"]))),i.append($("<div />",{role:"tabpanel",class:"tab-pane",id:"workspace-changes"}).append($("<div />",{class:"form-section"}).append(Backend.generateDiffView(s.diff))))),s.comments.length>0&&(n.append($("<li />",{role:"presentation",class:"nav-item"}).append($("<a />",{class:"nav-link",href:"#workspace-comments","aria-controls":"workspace-comments",role:"tab","data-bs-toggle":"tab"}).html(TYPO3.lang["window.recordChanges.tabs.comments"]+"&nbsp;").append($("<span />",{class:"badge"}).text(s.comments.length)))),i.append($("<div />",{role:"tabpanel",class:"tab-pane",id:"workspace-comments"}).append($("<div />",{class:"form-section"}).append(Backend.generateCommentView(s.comments))))),s.history.total>0&&(n.append($("<li />",{role:"presentation",class:"nav-item"}).append($("<a />",{class:"nav-link",href:"#workspace-history","aria-controls":"workspace-history",role:"tab","data-bs-toggle":"tab"}).text(TYPO3.lang["window.recordChanges.tabs.history"]))),i.append($("<div />",{role:"tabpanel",class:"tab-pane",id:"workspace-history"}).append($("<div />",{class:"form-section"}).append(Backend.generateHistoryView(s.history.data))))),n.find("li > a").first().addClass("active"),i.find(".tab-pane").first().addClass("active"),a.append($("<div />").append(n,i)),!1!==s.label_PrevStage&&t.data("stage")!==t.data("prevStage")&&o.push({text:s.label_PrevStage.title,active:!0,btnClass:"btn-default",name:"prevstage",trigger:(e,s)=>{s.hideModal(),this.sendToStage(t,"prev")}}),!1!==s.label_NextStage&&o.push({text:s.label_NextStage.title,active:!0,btnClass:"btn-default",name:"nextstage",trigger:(e,s)=>{s.hideModal(),this.sendToStage(t,"next")}}),o.push({text:TYPO3.lang.close,active:!0,btnClass:"btn-info",name:"cancel",trigger:(e,t)=>t.hideModal()}),Modal.advanced({type:Modal.types.default,title:TYPO3.lang["window.recordInformation"].replace("{0}",t.find(".t3js-title-live").text().trim()),content:a,severity:SeverityEnum.info,buttons:o,size:Modal.sizes.medium})}))},this.confirmDeleteRecordFromWorkspace=e=>{const t=$(e.target).closest("tr"),s=Modal.confirm(TYPO3.lang["window.discard.title"],TYPO3.lang["window.discard.message"],SeverityEnum.warning,[{text:TYPO3.lang.cancel,active:!0,btnClass:"btn-default",name:"cancel",trigger:()=>{s.hideModal()}},{text:TYPO3.lang.ok,btnClass:"btn-warning",name:"ok"}]);s.addEventListener("button.clicked",(e=>{"ok"===e.target.name&&this.sendRemoteRequest([this.generateRemoteActionsPayload("deleteSingleRecord",[t.data("table"),t.data("uid")])]).then((()=>{s.hideModal(),this.getWorkspaceInfos(),Backend.refreshPageTree()}))}))},this.runSelectionAction=e=>{const t=$(e.currentTarget).val(),s="discard"!==t;if(0===t.length)return;const a=[];for(let e=0;e<this.markedRecordsForMassAction.length;++e){const t=this.markedRecordsForMassAction[e].split(":");a.push({table:t[0],liveId:t[2],versionId:t[1]})}s?this.checkIntegrity({selection:a,type:"selection"}).then((async e=>{Wizard.setForceSelection(!1),"warning"===(await e.resolve())[0].result.result&&this.addIntegrityCheckWarningToWizard(),this.renderSelectionActionWizard(t,a)})):(Wizard.setForceSelection(!1),this.renderSelectionActionWizard(t,a))},this.addIntegrityCheckWarningToWizard=()=>{Wizard.addSlide("integrity-warning",TYPO3.lang["window.integrity_warning.title"],TYPO3.lang["integrity.hasIssuesDescription"]+"<br>"+TYPO3.lang["integrity.hasIssuesQuestion"],SeverityEnum.warning)},this.runMassAction=e=>{const t=$(e.currentTarget).val(),s="discard"!==t;0!==t.length&&(s?this.checkIntegrity({language:this.settings.language,type:t}).then((async e=>{Wizard.setForceSelection(!1),"warning"===(await e.resolve())[0].result.result&&this.addIntegrityCheckWarningToWizard(),this.renderMassActionWizard(t)})):(Wizard.setForceSelection(!1),this.renderMassActionWizard(t)))},this.sendToSpecificStageAction=e=>{const t=[],s=$(e.currentTarget).val();for(let e=0;e<this.markedRecordsForMassAction.length;++e){const s=this.markedRecordsForMassAction[e].split(":");t.push({table:s[0],uid:s[1],t3ver_oid:s[2]})}this.sendRemoteRequest(this.generateRemoteActionsPayload("sendToSpecificStageWindow",[s,t])).then((async e=>{const a=this.renderSendToStageWindow(await e.resolve());a.addEventListener("button.clicked",(e=>{if("ok"===e.target.name){const e=Utility.convertFormToObject(a.querySelector("form"));e.affects={elements:t,nextStage:s},this.sendRemoteRequest([this.generateRemoteActionsPayload("sendToSpecificStageExecute",[e]),this.generateRemotePayload("getWorkspaceInfos",this.settings)]).then((async e=>{const t=await e.resolve();a.hideModal(),this.renderWorkspaceInfos(t[1].result),Backend.refreshPageTree()}))}})),a.addEventListener("typo3-modal-hide",(()=>{this.elements.$chooseStageAction.val("")}))}))},this.generatePreviewLinks=()=>{this.sendRemoteRequest(this.generateRemoteActionsPayload("generateWorkspacePreviewLinksForAllLanguages",[this.settings.id])).then((async e=>{const t=(await e.resolve())[0].result,s=$("<dl />");for(const[e,a]of Object.entries(t))s.append($("<dt />").text(e),$("<dd />").append($("<a />",{href:a,target:"_blank"}).text(a)));Modal.show(TYPO3.lang.previewLink,s,SeverityEnum.info,[{text:TYPO3.lang.ok,active:!0,btnClass:"btn-info",name:"ok",trigger:(e,t)=>t.hideModal()}],["modal-inner-scroll"])}))},topLevelModuleImport("@typo3/workspaces/renderable/send-to-stage-form.js"),topLevelModuleImport("@typo3/workspaces/renderable/comment-view.js"),DocumentService.ready().then((()=>{this.getElements(),this.registerEvents(),this.notifyWorkspaceSwitchAction(),this.settings.depth=this.elements.$depthSelector.val(),this.settings.language=this.elements.$languageSelector.val(),this.settings.stage=this.elements.$stagesSelector.val(),this.elements.$container.length&&this.getWorkspaceInfos()}))}static refreshPageTree(){top.document.dispatchEvent(new CustomEvent("typo3:pagetree:refresh"))}static generateDiffView(e){const t=$("<div />",{class:"diff"});for(const s of e)t.append($("<div />",{class:"diff-item"}).append($("<div />",{class:"diff-item-title"}).text(s.label),$("<div />",{class:"diff-item-result"}).html(s.content)));return t}static generateCommentView(e){const t=document.createElement("typo3-workspaces-comment-view");return t.comments=e,t}static generateHistoryView(e){const t=$("<div />");for(const s of e){const e=$("<div />",{class:"panel panel-default"});let a;if("object"==typeof s.differences){if(0===s.differences.length)continue;a=$("<div />",{class:"diff"});for(let e=0;e<s.differences.length;++e)a.append($("<div />",{class:"diff-item"}).append($("<div />",{class:"diff-item-title"}).text(s.differences[e].label),$("<div />",{class:"diff-item-result"}).html(s.differences[e].html)));e.append($("<div />").append(a))}else e.append($("<div />",{class:"panel-body"}).text(s.differences));e.append($("<div />",{class:"panel-footer"}).append($("<span />",{class:"badge badge-info"}).text(s.datetime))),t.append($("<div />",{class:"media"}).append($("<div />",{class:"media-left text-center"}).text(s.user).prepend($("<div />").html(s.user_avatar)),$("<div />",{class:"media-body"}).append(e)))}return t}static changeCollectionParentState(e,t){const s=document.querySelector('tr[data-collection-current="'+e+'"] input[type=checkbox]');null!==s&&s.checked!==t&&(s.checked=t,s.dataset.manuallyChanged="true",s.dispatchEvent(new CustomEvent("multiRecordSelection:checkbox:state:changed",{bubbles:!0,cancelable:!1})))}static changeCollectionChildrenState(e,t){const s=document.querySelectorAll(selector`tr[data-collection="${e}"] input[type=checkbox]`);s.length&&s.forEach((e=>{e.checked!==t&&(e.checked=t,e.dataset.manuallyChanged="true",e.dispatchEvent(new CustomEvent("multiRecordSelection:checkbox:state:changed",{bubbles:!0,cancelable:!1})))}))}notifyWorkspaceSwitchAction(){const e=document.querySelector("main[data-workspace-switch-action]");if(e.dataset.workspaceSwitchAction){const t=JSON.parse(e.dataset.workspaceSwitchAction);top.TYPO3.WorkspacesMenu.performWorkspaceSwitch(t.id,t.title),top.document.dispatchEvent(new CustomEvent("typo3:pagetree:refresh")),top.TYPO3.ModuleMenu.App.refreshMenu()}}checkIntegrity(e){return this.sendRemoteRequest(this.generateRemotePayload("checkIntegrity",e))}getElements(){this.elements.$searchForm=$(Identifiers.searchForm),this.elements.$searchTextField=$(Identifiers.searchTextField),this.elements.$searchSubmitBtn=$(Identifiers.searchSubmitBtn),this.elements.$depthSelector=$(Identifiers.depthSelector),this.elements.$languageSelector=$(Identifiers.languageSelector),this.elements.$stagesSelector=$(Identifiers.stagesSelector),this.elements.$container=$(Identifiers.container),this.elements.$contentsContainer=$(Identifiers.contentsContainer),this.elements.$noContentsContainer=$(Identifiers.noContentsContainer),this.elements.$tableBody=this.elements.$contentsContainer.find("tbody"),this.elements.$workspaceActions=$(Identifiers.workspaceActions),this.elements.$chooseStageAction=$(Identifiers.chooseStageAction),this.elements.$chooseSelectionAction=$(Identifiers.chooseSelectionAction),this.elements.$chooseMassAction=$(Identifiers.chooseMassAction),this.elements.$previewLinksButton=$(Identifiers.previewLinksButton),this.elements.$pagination=$(Identifiers.pagination)}registerEvents(){$(document).on("click",'[data-action="publish"]',(e=>{const t=e.target.closest("tr");this.checkIntegrity({selection:[{liveId:t.dataset.uid,versionId:t.dataset.t3ver_oid,table:t.dataset.table}],type:"selection"}).then((async e=>{"warning"===(await e.resolve())[0].result.result&&this.addIntegrityCheckWarningToWizard(),Wizard.setForceSelection(!1),Wizard.addSlide("publish-confirm",TYPO3.lang["window.publish.title"],TYPO3.lang["window.publish.message"],SeverityEnum.info),Wizard.addFinalProcessingSlide((()=>{this.sendRemoteRequest(this.generateRemoteActionsPayload("publishSingleRecord",[t.dataset.table,t.dataset.t3ver_oid,t.dataset.uid])).then((()=>{Wizard.dismiss(),this.getWorkspaceInfos(),Backend.refreshPageTree()}))})).then((()=>{Wizard.show()}))}))})).on("click",'[data-action="prevstage"]',(e=>{this.sendToStage($(e.currentTarget).closest("tr"),"prev")})).on("click",'[data-action="nextstage"]',(e=>{this.sendToStage($(e.currentTarget).closest("tr"),"next")})).on("click",'[data-action="changes"]',this.viewChanges).on("click",'[data-action="preview"]',this.openPreview.bind(this)).on("click",'[data-action="open"]',(e=>{const t=e.currentTarget.closest("tr"),s=TYPO3.settings.FormEngine.moduleUrl+"&returnUrl="+encodeURIComponent(document.location.href)+"&id="+TYPO3.settings.Workspaces.id+"&edit["+t.dataset.table+"]["+t.dataset.uid+"]=edit";window.location.href=s})).on("click",'[data-action="version"]',(e=>{const t=e.currentTarget.closest("tr"),s="pages"===t.dataset.table?t.dataset.t3ver_oid:t.dataset.pid;window.location.href=TYPO3.settings.WebLayout.moduleUrl+"&id="+s})).on("click",'[data-action="remove"]',this.confirmDeleteRecordFromWorkspace).on("click",'[data-action="expand"]',(e=>{const t=$(e.currentTarget);let s;s="true"===t.first().attr("aria-expanded")?"actions-caret-down":"actions-caret-right",t.empty().append(IconHelper.getIcon(s))})),$(window.top.document).on("click",".t3js-workspace-recipients-selectall",(()=>{$(".t3js-workspace-recipient",window.top.document).not(":disabled").prop("checked",!0)})).on("click",".t3js-workspace-recipients-deselectall",(()=>{$(".t3js-workspace-recipient",window.top.document).not(":disabled").prop("checked",!1)})),this.elements.$searchForm.on("submit",(e=>{e.preventDefault(),this.settings.filterTxt=this.elements.$searchTextField.val(),this.getWorkspaceInfos()})),this.elements.$searchTextField.on("keyup",(e=>{""!==e.target.value?this.elements.$searchSubmitBtn.removeClass("disabled"):(this.elements.$searchSubmitBtn.addClass("disabled"),this.getWorkspaceInfos())}));const e=this.elements.$searchTextField.get(0);void 0!==e&&e.clearable({onClear:()=>{this.elements.$searchSubmitBtn.addClass("disabled"),this.settings.filterTxt="",this.getWorkspaceInfos()}}),new RegularEvent("multiRecordSelection:checkbox:state:changed",this.handleCheckboxStateChanged).bindTo(document),this.elements.$depthSelector.on("change",(e=>{const t=e.target.value;Persistent.set("moduleData.workspaces_admin.depth",t),this.settings.depth=t,this.getWorkspaceInfos()})),this.elements.$previewLinksButton.on("click",this.generatePreviewLinks),this.elements.$languageSelector.on("change",(e=>{const t=$(e.target);Persistent.set("moduleData.workspaces_admin.language",t.val()),this.settings.language=t.val(),this.sendRemoteRequest(this.generateRemotePayload("getWorkspaceInfos",this.settings)).then((async e=>{const s=await e.resolve();this.elements.$languageSelector.prev().html(t.find(":selected").data("icon")),this.renderWorkspaceInfos(s[0].result)}))})),this.elements.$stagesSelector.on("change",(e=>{const t=e.target.value;Persistent.set("moduleData.workspaces_admin.stage",t),this.settings.stage=t,this.getWorkspaceInfos()})),this.elements.$chooseStageAction.on("change",this.sendToSpecificStageAction),this.elements.$chooseSelectionAction.on("change",this.runSelectionAction),this.elements.$chooseMassAction.on("change",this.runMassAction),this.elements.$pagination.on("click","[data-action]",(e=>{e.preventDefault();const t=$(e.currentTarget);let s=!1;switch(t.data("action")){case"previous":this.paging.currentPage>1&&(this.paging.currentPage--,s=!0);break;case"next":this.paging.currentPage<this.paging.totalPages&&(this.paging.currentPage++,s=!0);break;case"page":this.paging.currentPage=parseInt(t.data("page"),10),s=!0;break;default:throw'Unknown action "'+t.data("action")+'"'}s&&(this.settings.start=parseInt(this.settings.limit.toString(),10)*(this.paging.currentPage-1),this.getWorkspaceInfos())}))}sendToStage(e,t){let s,a,n;if("next"===t)s=e.data("nextStage"),a="sendToNextStageWindow",n="sendToNextStageExecute";else{if("prev"!==t)throw"Invalid direction given.";s=e.data("prevStage"),a="sendToPrevStageWindow",n="sendToPrevStageExecute"}this.sendRemoteRequest(this.generateRemoteActionsPayload(a,[e.data("uid"),e.data("table"),e.data("t3ver_oid")])).then((async t=>{const a=this.renderSendToStageWindow(await t.resolve());a.addEventListener("button.clicked",(t=>{if("ok"===t.target.name){const t=Utility.convertFormToObject(a.querySelector("form"));t.affects={table:e.data("table"),nextStage:s,t3ver_oid:e.data("t3ver_oid"),uid:e.data("uid"),elements:[]},this.sendRemoteRequest([this.generateRemoteActionsPayload(n,[t]),this.generateRemotePayload("getWorkspaceInfos",this.settings)]).then((async e=>{const t=await e.resolve();a.hideModal(),this.renderWorkspaceInfos(t[1].result),Backend.refreshPageTree()}))}}))}))}getWorkspaceInfos(){this.sendRemoteRequest(this.generateRemotePayload("getWorkspaceInfos",this.settings)).then((async e=>{this.renderWorkspaceInfos((await e.resolve())[0].result)}))}renderWorkspaceInfos(e){this.resetMassActionState(e.data.length),this.buildPagination(e.total),0===e.total?(this.elements.$contentsContainer.hide(),this.elements.$noContentsContainer.show()):(this.elements.$contentsContainer.show(),this.elements.$noContentsContainer.hide());document.querySelector("typo3-workspaces-record-table").results=e.data}buildPagination(e){if(0===e)return void this.elements.$pagination.contents().remove();if(this.paging.totalItems=e,this.paging.totalPages=Math.ceil(e/parseInt(this.settings.limit.toString(),10)),1===this.paging.totalPages)return void this.elements.$pagination.contents().remove();const t=document.createElement("typo3-workspaces-pagination");t.paging=this.paging,this.elements.$pagination.empty().append(t)}openPreview(e){const t=$(e.currentTarget).closest("tr");this.sendRemoteRequest(this.generateRemoteActionsPayload("viewSingleRecord",[t.data("table"),t.data("uid")])).then((async e=>{const t=(await e.resolve())[0].result;windowManager.localOpen(t)}))}renderSelectionActionWizard(e,t){Wizard.addSlide("mass-action-confirmation",TYPO3.lang["window.selectionAction.title"],"<p>"+(new SecurityUtility).encodeHtml(TYPO3.lang["tooltip."+e+"Selected"])+"</p>",SeverityEnum.warning),Wizard.addFinalProcessingSlide((()=>{this.sendRemoteRequest(this.generateRemoteActionsPayload("executeSelectionAction",{action:e,selection:t})).then((()=>{this.markedRecordsForMassAction=[],this.getWorkspaceInfos(),Wizard.dismiss(),Backend.refreshPageTree()}))})).then((()=>{Wizard.show(),Wizard.getComponent().on("wizard-dismissed",(()=>{this.elements.$chooseSelectionAction.val("")}))}))}renderMassActionWizard(e){let t;switch(e){case"publish":t="publishWorkspace";break;case"discard":t="flushWorkspace";break;default:throw"Invalid mass action "+e+" called."}const s=new SecurityUtility;Wizard.setForceSelection(!1),Wizard.addSlide("mass-action-confirmation",TYPO3.lang["window.massAction.title"],"<p>"+s.encodeHtml(TYPO3.lang["tooltip."+e+"All"])+"<br><br>"+s.encodeHtml(TYPO3.lang["tooltip.affectWholeWorkspace"])+"</p>",SeverityEnum.warning);const a=async e=>{const s=(await e.resolve())[0].result;s.processed<s.total?this.sendRemoteRequest(this.generateRemoteMassActionsPayload(t,s)).then(a):(this.getWorkspaceInfos(),Wizard.dismiss())};Wizard.addFinalProcessingSlide((()=>{this.sendRemoteRequest(this.generateRemoteMassActionsPayload(t,{init:!0,total:0,processed:0,language:this.settings.language})).then(a)})).then((()=>{Wizard.show(),Wizard.getComponent().on("wizard-dismissed",(()=>{this.elements.$chooseMassAction.val("")}))}))}resetMassActionState(e){this.markedRecordsForMassAction=[],e&&(this.elements.$workspaceActions.removeClass("hidden"),this.elements.$chooseMassAction.prop("disabled",!1)),document.dispatchEvent(new CustomEvent("multiRecordSelection:actions:hide"))}}export default new Backend;
\ No newline at end of file
+import DocumentService from"@typo3/core/document-service.js";import $ from"jquery";import{html}from"lit";import"@typo3/backend/element/icon-element.js";import{SeverityEnum}from"@typo3/backend/enum/severity.js";import"@typo3/backend/input/clearable.js";import"@typo3/workspaces/renderable/record-table.js";import"@typo3/workspaces/renderable/pagination.js";import Workspaces from"@typo3/workspaces/workspaces.js";import{default as Modal}from"@typo3/backend/modal.js";import Persistent from"@typo3/backend/storage/persistent.js";import Utility from"@typo3/backend/utility.js";import windowManager from"@typo3/backend/window-manager.js";import RegularEvent from"@typo3/core/event/regular-event.js";import{topLevelModuleImport}from"@typo3/backend/utility/top-level-module-import.js";import{selector}from"@typo3/core/literals.js";import IconHelper from"@typo3/workspaces/utility/icon-helper.js";import DeferredAction from"@typo3/backend/action-button/deferred-action.js";var Identifiers;!function(e){e.searchForm="#workspace-settings-form",e.searchTextField='#workspace-settings-form input[name="search-text"]',e.searchSubmitBtn='#workspace-settings-form button[type="submit"]',e.depthSelector='#workspace-settings-form [name="depth"]',e.languageSelector='#workspace-settings-form select[name="languages"]',e.stagesSelector='#workspace-settings-form select[name="stages"]',e.workspaceActions=".workspace-actions",e.chooseStageAction='.workspace-actions [name="stage-action"]',e.chooseSelectionAction='.workspace-actions [name="selection-action"]',e.chooseMassAction='.workspace-actions [name="mass-action"]',e.container="#workspace-panel",e.contentsContainer="#workspace-contents",e.noContentsContainer="#workspace-contents-empty",e.previewLinksButton=".t3js-preview-link",e.pagination="#workspace-pagination"}(Identifiers||(Identifiers={}));class Backend extends Workspaces{constructor(){super(),this.elements={},this.settings={dir:"ASC",id:TYPO3.settings.Workspaces.id,depth:1,language:"all",limit:30,query:"",sort:"label_Live",start:0,filterTxt:""},this.paging={currentPage:1,totalPages:1,totalItems:0},this.markedRecordsForMassAction=[],this.indentationPadding=26,this.handleCheckboxStateChanged=e=>{const t=$(e.target),n=t.parents("tr"),a=t.prop("checked"),s=n.data("table")+":"+n.data("uid")+":"+n.data("t3ver_oid");if(a)this.markedRecordsForMassAction.push(s);else{const e=this.markedRecordsForMassAction.indexOf(s);e>-1&&this.markedRecordsForMassAction.splice(e,1)}n.data("collectionCurrent")?Backend.changeCollectionChildrenState(n.data("collectionCurrent"),a):n.data("collection")&&(Backend.changeCollectionChildrenState(n.data("collection"),a),Backend.changeCollectionParentState(n.data("collection"),a)),this.elements.$chooseMassAction.prop("disabled",this.markedRecordsForMassAction.length>0)},this.viewChanges=e=>{e.preventDefault();const t=$(e.currentTarget).closest("tr");this.sendRemoteRequest(this.generateRemotePayload("getRowDetails",{stage:t.data("stage"),t3ver_oid:t.data("t3ver_oid"),table:t.data("table"),uid:t.data("uid"),filterFields:!0})).then((async e=>{const n=(await e.resolve())[0].result.data[0],a=$("<div />"),s=$("<ul />",{class:"nav nav-tabs",role:"tablist"}),i=$("<div />",{class:"tab-content"}),o=[];a.append($("<p />").html(TYPO3.lang.path.replace("{0}",n.path_Live)),$("<p />").html(TYPO3.lang.current_step.replace("{0}",n.label_Stage).replace("{1}",n.stage_position).replace("{2}",n.stage_count))),n.diff.length>0&&(s.append($("<li />",{role:"presentation",class:"nav-item"}).append($("<a />",{class:"nav-link",href:"#workspace-changes","aria-controls":"workspace-changes",role:"tab","data-bs-toggle":"tab"}).text(TYPO3.lang["window.recordChanges.tabs.changeSummary"]))),i.append($("<div />",{role:"tabpanel",class:"tab-pane",id:"workspace-changes"}).append($("<div />",{class:"form-section"}).append(Backend.generateDiffView(n.diff))))),n.comments.length>0&&(s.append($("<li />",{role:"presentation",class:"nav-item"}).append($("<a />",{class:"nav-link",href:"#workspace-comments","aria-controls":"workspace-comments",role:"tab","data-bs-toggle":"tab"}).html(TYPO3.lang["window.recordChanges.tabs.comments"]+"&nbsp;").append($("<span />",{class:"badge"}).text(n.comments.length)))),i.append($("<div />",{role:"tabpanel",class:"tab-pane",id:"workspace-comments"}).append($("<div />",{class:"form-section"}).append(Backend.generateCommentView(n.comments))))),n.history.total>0&&(s.append($("<li />",{role:"presentation",class:"nav-item"}).append($("<a />",{class:"nav-link",href:"#workspace-history","aria-controls":"workspace-history",role:"tab","data-bs-toggle":"tab"}).text(TYPO3.lang["window.recordChanges.tabs.history"]))),i.append($("<div />",{role:"tabpanel",class:"tab-pane",id:"workspace-history"}).append($("<div />",{class:"form-section"}).append(Backend.generateHistoryView(n.history.data))))),s.find("li > a").first().addClass("active"),i.find(".tab-pane").first().addClass("active"),a.append($("<div />").append(s,i)),!1!==n.label_PrevStage&&t.data("stage")!==t.data("prevStage")&&o.push({text:n.label_PrevStage.title,active:!0,btnClass:"btn-default",name:"prevstage",trigger:(e,n)=>{n.hideModal(),this.sendToStage(t,"prev")}}),!1!==n.label_NextStage&&o.push({text:n.label_NextStage.title,active:!0,btnClass:"btn-default",name:"nextstage",trigger:(e,n)=>{n.hideModal(),this.sendToStage(t,"next")}}),o.push({text:TYPO3.lang.close,active:!0,btnClass:"btn-info",name:"cancel",trigger:(e,t)=>t.hideModal()}),Modal.advanced({type:Modal.types.default,title:TYPO3.lang["window.recordInformation"].replace("{0}",t.find(".t3js-title-live").text().trim()),content:a,severity:SeverityEnum.info,buttons:o,size:Modal.sizes.medium})}))},this.confirmDeleteRecordFromWorkspace=e=>{const t=$(e.target).closest("tr"),n=Modal.confirm(TYPO3.lang["window.discard.title"],TYPO3.lang["window.discard.message"],SeverityEnum.warning,[{text:TYPO3.lang.cancel,active:!0,btnClass:"btn-default",name:"cancel",trigger:()=>{n.hideModal()}},{text:TYPO3.lang.ok,btnClass:"btn-warning",name:"ok"}]);n.addEventListener("button.clicked",(e=>{"ok"===e.target.name&&this.sendRemoteRequest([this.generateRemoteActionsPayload("deleteSingleRecord",[t.data("table"),t.data("uid")])]).then((()=>{n.hideModal(),this.getWorkspaceInfos(),Backend.refreshPageTree()}))}))},this.runSelectionAction=e=>{const t=$(e.currentTarget).val(),n="discard"!==t;if(0===t.length)return;const a=[];for(let e=0;e<this.markedRecordsForMassAction.length;++e){const t=this.markedRecordsForMassAction[e].split(":");a.push({table:t[0],liveId:t[2],versionId:t[1]})}n?this.checkIntegrity({selection:a,type:"selection"}).then((async e=>{"warning"===(await e.resolve())[0].result.result?this.openIntegrityWarningModal().addEventListener("confirm.button.ok",(()=>{this.renderSelectionActionModal(t,a)})):this.renderSelectionActionModal(t,a)})):this.renderSelectionActionModal(t,a)},this.openIntegrityWarningModal=()=>{const e=Modal.confirm(TYPO3.lang["window.integrity_warning.title"],html`<p>${TYPO3.lang["integrity.hasIssuesDescription"]}<br>${TYPO3.lang["integrity.hasIssuesQuestion"]}</p>`,SeverityEnum.warning);return e.addEventListener("button.clicked",(()=>e.hideModal())),e},this.runMassAction=e=>{const t=$(e.currentTarget).val(),n="discard"!==t;0!==t.length&&(n?this.checkIntegrity({language:this.settings.language,type:t}).then((async e=>{"warning"===(await e.resolve())[0].result.result?this.openIntegrityWarningModal().addEventListener("confirm.button.ok",(()=>{this.renderMassActionModal(t)})):this.renderMassActionModal(t)})):this.renderMassActionModal(t))},this.sendToSpecificStageAction=e=>{const t=[],n=$(e.currentTarget).val();for(let e=0;e<this.markedRecordsForMassAction.length;++e){const n=this.markedRecordsForMassAction[e].split(":");t.push({table:n[0],uid:n[1],t3ver_oid:n[2]})}this.sendRemoteRequest(this.generateRemoteActionsPayload("sendToSpecificStageWindow",[n,t])).then((async e=>{const a=this.renderSendToStageWindow(await e.resolve());a.addEventListener("button.clicked",(e=>{if("ok"===e.target.name){const e=Utility.convertFormToObject(a.querySelector("form"));e.affects={elements:t,nextStage:n},this.sendRemoteRequest([this.generateRemoteActionsPayload("sendToSpecificStageExecute",[e]),this.generateRemotePayload("getWorkspaceInfos",this.settings)]).then((async e=>{const t=await e.resolve();a.hideModal(),this.renderWorkspaceInfos(t[1].result),Backend.refreshPageTree()}))}})),a.addEventListener("typo3-modal-hide",(()=>{this.elements.$chooseStageAction.val("")}))}))},this.generatePreviewLinks=()=>{this.sendRemoteRequest(this.generateRemoteActionsPayload("generateWorkspacePreviewLinksForAllLanguages",[this.settings.id])).then((async e=>{const t=(await e.resolve())[0].result,n=$("<dl />");for(const[e,a]of Object.entries(t))n.append($("<dt />").text(e),$("<dd />").append($("<a />",{href:a,target:"_blank"}).text(a)));Modal.show(TYPO3.lang.previewLink,n,SeverityEnum.info,[{text:TYPO3.lang.ok,active:!0,btnClass:"btn-info",name:"ok",trigger:(e,t)=>t.hideModal()}],["modal-inner-scroll"])}))},topLevelModuleImport("@typo3/workspaces/renderable/send-to-stage-form.js"),topLevelModuleImport("@typo3/workspaces/renderable/comment-view.js"),DocumentService.ready().then((()=>{this.getElements(),this.registerEvents(),this.notifyWorkspaceSwitchAction(),this.settings.depth=this.elements.$depthSelector.val(),this.settings.language=this.elements.$languageSelector.val(),this.settings.stage=this.elements.$stagesSelector.val(),this.elements.$container.length&&this.getWorkspaceInfos()}))}static refreshPageTree(){top.document.dispatchEvent(new CustomEvent("typo3:pagetree:refresh"))}static generateDiffView(e){const t=$("<div />",{class:"diff"});for(const n of e)t.append($("<div />",{class:"diff-item"}).append($("<div />",{class:"diff-item-title"}).text(n.label),$("<div />",{class:"diff-item-result"}).html(n.content)));return t}static generateCommentView(e){const t=document.createElement("typo3-workspaces-comment-view");return t.comments=e,t}static generateHistoryView(e){const t=$("<div />");for(const n of e){const e=$("<div />",{class:"panel panel-default"});let a;if("object"==typeof n.differences){if(0===n.differences.length)continue;a=$("<div />",{class:"diff"});for(let e=0;e<n.differences.length;++e)a.append($("<div />",{class:"diff-item"}).append($("<div />",{class:"diff-item-title"}).text(n.differences[e].label),$("<div />",{class:"diff-item-result"}).html(n.differences[e].html)));e.append($("<div />").append(a))}else e.append($("<div />",{class:"panel-body"}).text(n.differences));e.append($("<div />",{class:"panel-footer"}).append($("<span />",{class:"badge badge-info"}).text(n.datetime))),t.append($("<div />",{class:"media"}).append($("<div />",{class:"media-left text-center"}).text(n.user).prepend($("<div />").html(n.user_avatar)),$("<div />",{class:"media-body"}).append(e)))}return t}static changeCollectionParentState(e,t){const n=document.querySelector('tr[data-collection-current="'+e+'"] input[type=checkbox]');null!==n&&n.checked!==t&&(n.checked=t,n.dataset.manuallyChanged="true",n.dispatchEvent(new CustomEvent("multiRecordSelection:checkbox:state:changed",{bubbles:!0,cancelable:!1})))}static changeCollectionChildrenState(e,t){const n=document.querySelectorAll(selector`tr[data-collection="${e}"] input[type=checkbox]`);n.length&&n.forEach((e=>{e.checked!==t&&(e.checked=t,e.dataset.manuallyChanged="true",e.dispatchEvent(new CustomEvent("multiRecordSelection:checkbox:state:changed",{bubbles:!0,cancelable:!1})))}))}notifyWorkspaceSwitchAction(){const e=document.querySelector("main[data-workspace-switch-action]");if(e.dataset.workspaceSwitchAction){const t=JSON.parse(e.dataset.workspaceSwitchAction);top.TYPO3.WorkspacesMenu.performWorkspaceSwitch(t.id,t.title),top.document.dispatchEvent(new CustomEvent("typo3:pagetree:refresh")),top.TYPO3.ModuleMenu.App.refreshMenu()}}checkIntegrity(e){return this.sendRemoteRequest(this.generateRemotePayload("checkIntegrity",e))}getElements(){this.elements.$searchForm=$(Identifiers.searchForm),this.elements.$searchTextField=$(Identifiers.searchTextField),this.elements.$searchSubmitBtn=$(Identifiers.searchSubmitBtn),this.elements.$depthSelector=$(Identifiers.depthSelector),this.elements.$languageSelector=$(Identifiers.languageSelector),this.elements.$stagesSelector=$(Identifiers.stagesSelector),this.elements.$container=$(Identifiers.container),this.elements.$contentsContainer=$(Identifiers.contentsContainer),this.elements.$noContentsContainer=$(Identifiers.noContentsContainer),this.elements.$tableBody=this.elements.$contentsContainer.find("tbody"),this.elements.$workspaceActions=$(Identifiers.workspaceActions),this.elements.$chooseStageAction=$(Identifiers.chooseStageAction),this.elements.$chooseSelectionAction=$(Identifiers.chooseSelectionAction),this.elements.$chooseMassAction=$(Identifiers.chooseMassAction),this.elements.$previewLinksButton=$(Identifiers.previewLinksButton),this.elements.$pagination=$(Identifiers.pagination)}registerEvents(){$(document).on("click",'[data-action="publish"]',(e=>{const t=e.target.closest("tr");this.checkIntegrity({selection:[{liveId:t.dataset.uid,versionId:t.dataset.t3ver_oid,table:t.dataset.table}],type:"selection"}).then((async e=>{"warning"===(await e.resolve())[0].result.result?this.openIntegrityWarningModal().addEventListener("confirm.button.ok",(()=>{this.renderPublishModal(t)})):this.renderPublishModal(t)}))})).on("click",'[data-action="prevstage"]',(e=>{this.sendToStage($(e.currentTarget).closest("tr"),"prev")})).on("click",'[data-action="nextstage"]',(e=>{this.sendToStage($(e.currentTarget).closest("tr"),"next")})).on("click",'[data-action="changes"]',this.viewChanges).on("click",'[data-action="preview"]',this.openPreview.bind(this)).on("click",'[data-action="open"]',(e=>{const t=e.currentTarget.closest("tr"),n=TYPO3.settings.FormEngine.moduleUrl+"&returnUrl="+encodeURIComponent(document.location.href)+"&id="+TYPO3.settings.Workspaces.id+"&edit["+t.dataset.table+"]["+t.dataset.uid+"]=edit";window.location.href=n})).on("click",'[data-action="version"]',(e=>{const t=e.currentTarget.closest("tr"),n="pages"===t.dataset.table?t.dataset.t3ver_oid:t.dataset.pid;window.location.href=TYPO3.settings.WebLayout.moduleUrl+"&id="+n})).on("click",'[data-action="remove"]',this.confirmDeleteRecordFromWorkspace).on("click",'[data-action="expand"]',(e=>{const t=$(e.currentTarget);let n;n="true"===t.first().attr("aria-expanded")?"actions-caret-down":"actions-caret-right",t.empty().append(IconHelper.getIcon(n))})),$(window.top.document).on("click",".t3js-workspace-recipients-selectall",(()=>{$(".t3js-workspace-recipient",window.top.document).not(":disabled").prop("checked",!0)})).on("click",".t3js-workspace-recipients-deselectall",(()=>{$(".t3js-workspace-recipient",window.top.document).not(":disabled").prop("checked",!1)})),this.elements.$searchForm.on("submit",(e=>{e.preventDefault(),this.settings.filterTxt=this.elements.$searchTextField.val(),this.getWorkspaceInfos()})),this.elements.$searchTextField.on("keyup",(e=>{""!==e.target.value?this.elements.$searchSubmitBtn.removeClass("disabled"):(this.elements.$searchSubmitBtn.addClass("disabled"),this.getWorkspaceInfos())}));const e=this.elements.$searchTextField.get(0);void 0!==e&&e.clearable({onClear:()=>{this.elements.$searchSubmitBtn.addClass("disabled"),this.settings.filterTxt="",this.getWorkspaceInfos()}}),new RegularEvent("multiRecordSelection:checkbox:state:changed",this.handleCheckboxStateChanged).bindTo(document),this.elements.$depthSelector.on("change",(e=>{const t=e.target.value;Persistent.set("moduleData.workspaces_admin.depth",t),this.settings.depth=t,this.getWorkspaceInfos()})),this.elements.$previewLinksButton.on("click",this.generatePreviewLinks),this.elements.$languageSelector.on("change",(e=>{const t=$(e.target);Persistent.set("moduleData.workspaces_admin.language",t.val()),this.settings.language=t.val(),this.sendRemoteRequest(this.generateRemotePayload("getWorkspaceInfos",this.settings)).then((async e=>{const n=await e.resolve();this.elements.$languageSelector.prev().html(t.find(":selected").data("icon")),this.renderWorkspaceInfos(n[0].result)}))})),this.elements.$stagesSelector.on("change",(e=>{const t=e.target.value;Persistent.set("moduleData.workspaces_admin.stage",t),this.settings.stage=t,this.getWorkspaceInfos()})),this.elements.$chooseStageAction.on("change",this.sendToSpecificStageAction),this.elements.$chooseSelectionAction.on("change",this.runSelectionAction),this.elements.$chooseMassAction.on("change",this.runMassAction),this.elements.$pagination.on("click","[data-action]",(e=>{e.preventDefault();const t=$(e.currentTarget);let n=!1;switch(t.data("action")){case"previous":this.paging.currentPage>1&&(this.paging.currentPage--,n=!0);break;case"next":this.paging.currentPage<this.paging.totalPages&&(this.paging.currentPage++,n=!0);break;case"page":this.paging.currentPage=parseInt(t.data("page"),10),n=!0;break;default:throw'Unknown action "'+t.data("action")+'"'}n&&(this.settings.start=parseInt(this.settings.limit.toString(),10)*(this.paging.currentPage-1),this.getWorkspaceInfos())}))}sendToStage(e,t){let n,a,s;if("next"===t)n=e.data("nextStage"),a="sendToNextStageWindow",s="sendToNextStageExecute";else{if("prev"!==t)throw"Invalid direction given.";n=e.data("prevStage"),a="sendToPrevStageWindow",s="sendToPrevStageExecute"}this.sendRemoteRequest(this.generateRemoteActionsPayload(a,[e.data("uid"),e.data("table"),e.data("t3ver_oid")])).then((async t=>{const a=this.renderSendToStageWindow(await t.resolve());a.addEventListener("button.clicked",(t=>{if("ok"===t.target.name){const t=Utility.convertFormToObject(a.querySelector("form"));t.affects={table:e.data("table"),nextStage:n,t3ver_oid:e.data("t3ver_oid"),uid:e.data("uid"),elements:[]},this.sendRemoteRequest([this.generateRemoteActionsPayload(s,[t]),this.generateRemotePayload("getWorkspaceInfos",this.settings)]).then((async e=>{const t=await e.resolve();a.hideModal(),this.renderWorkspaceInfos(t[1].result),Backend.refreshPageTree()}))}}))}))}getWorkspaceInfos(){this.sendRemoteRequest(this.generateRemotePayload("getWorkspaceInfos",this.settings)).then((async e=>{this.renderWorkspaceInfos((await e.resolve())[0].result)}))}renderWorkspaceInfos(e){this.resetMassActionState(e.data.length),this.buildPagination(e.total),0===e.total?(this.elements.$contentsContainer.hide(),this.elements.$noContentsContainer.show()):(this.elements.$contentsContainer.show(),this.elements.$noContentsContainer.hide());document.querySelector("typo3-workspaces-record-table").results=e.data}buildPagination(e){if(0===e)return void this.elements.$pagination.contents().remove();if(this.paging.totalItems=e,this.paging.totalPages=Math.ceil(e/parseInt(this.settings.limit.toString(),10)),1===this.paging.totalPages)return void this.elements.$pagination.contents().remove();const t=document.createElement("typo3-workspaces-pagination");t.paging=this.paging,this.elements.$pagination.empty().append(t)}openPreview(e){const t=$(e.currentTarget).closest("tr");this.sendRemoteRequest(this.generateRemoteActionsPayload("viewSingleRecord",[t.data("table"),t.data("uid")])).then((async e=>{const t=(await e.resolve())[0].result;windowManager.localOpen(t)}))}renderPublishModal(e){const t=Modal.advanced({title:TYPO3.lang["window.publish.title"],content:TYPO3.lang["window.publish.message"],severity:SeverityEnum.info,staticBackdrop:!0,buttons:[{text:TYPO3.lang.cancel,btnClass:"btn-default",trigger:function(){t.hideModal()}},{text:TYPO3.lang.label_doaction_publish,btnClass:"btn-info",action:new DeferredAction((async()=>{await this.sendRemoteRequest(this.generateRemoteActionsPayload("publishSingleRecord",[e.dataset.table,e.dataset.t3ver_oid,e.dataset.uid])),this.getWorkspaceInfos(),Backend.refreshPageTree()}))}]})}renderSelectionActionModal(e,t){const n=Modal.advanced({title:TYPO3.lang["window.selectionAction.title"],content:html`<p>${TYPO3.lang["tooltip."+e+"Selected"]}</p>`,severity:SeverityEnum.warning,staticBackdrop:!0,buttons:[{text:TYPO3.lang.cancel,btnClass:"btn-default",trigger:function(){n.hideModal()}},{text:TYPO3.lang["label_doaction_"+e],btnClass:"btn-warning",action:new DeferredAction((async()=>{await this.sendRemoteRequest(this.generateRemoteActionsPayload("executeSelectionAction",{action:e,selection:t})),this.markedRecordsForMassAction=[],this.getWorkspaceInfos(),Backend.refreshPageTree()}))}]});n.addEventListener("typo3-modal-hidden",(()=>{this.elements.$chooseSelectionAction.val("")}))}renderMassActionModal(e){let t,n;switch(e){case"publish":t="publishWorkspace",n=TYPO3.lang.label_doaction_publish;break;case"discard":t="flushWorkspace",n=TYPO3.lang.label_doaction_discard;break;default:throw"Invalid mass action "+e+" called."}const a=async e=>{const n=(await e.resolve())[0].result;n.processed<n.total?this.sendRemoteRequest(this.generateRemoteMassActionsPayload(t,n)).then(a):(this.getWorkspaceInfos(),Modal.dismiss())},s=Modal.advanced({title:TYPO3.lang["window.massAction.title"],content:html`
+        <p>${TYPO3.lang["tooltip."+e+"All"]}</p>
+        <p>${TYPO3.lang["tooltip.affectWholeWorkspace"]}</p>
+      `,severity:SeverityEnum.warning,staticBackdrop:!0,buttons:[{text:TYPO3.lang.cancel,btnClass:"btn-default",trigger:function(){s.hideModal()}},{text:n,btnClass:"btn-warning",action:new DeferredAction((async()=>{const e=await this.sendRemoteRequest(this.generateRemoteMassActionsPayload(t,{init:!0,total:0,processed:0,language:this.settings.language}));await a(e)}))}]});s.addEventListener("typo3-modal-hidden",(()=>{this.elements.$chooseMassAction.val("")}))}resetMassActionState(e){this.markedRecordsForMassAction=[],e&&(this.elements.$workspaceActions.removeClass("hidden"),this.elements.$chooseMassAction.prop("disabled",!1)),document.dispatchEvent(new CustomEvent("multiRecordSelection:actions:hide"))}}export default new Backend;
\ No newline at end of file