TYPO3 v15 dev-main snapshot ()

This commit is contained in:
wappler committed 2026-08-10 22:31:31 +02:00
commit 3e43c11539
407 files changed
+51272

No files matched your search

@@ -0,0 +1,13 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
import{AbstractInteractableModule as l}from"@typo3/install/module/abstract-interactable-module.js";import u from"@typo3/backend/modal.js";import h from"@typo3/backend/notification.js";import d from"@typo3/core/ajax/ajax-request.js";import{FlashMessage as p}from"@typo3/install/renderable/flash-message.js";import r from"@typo3/install/renderable/severity.js";import s from"@typo3/install/router.js";import g from"@typo3/core/event/regular-event.js";var o;(function(i){i.output=".t3js-coreUpdate-output",i.updateButton=".t3js-coreUpdate-button"})(o||(o={}));class f extends l{constructor(){super(...arguments),this.actionQueue={coreUpdateIsUpdateAvailable:{loadingMessage:"Checking for possible regular or security update",finishMessage:void 0,nextActionName:void 0},coreUpdateCheckPreConditions:{loadingMessage:"Checking if update is possible",finishMessage:"System can be updated",nextActionName:"coreUpdateDownload"},coreUpdateDownload:{loadingMessage:"Downloading new core",finishMessage:void 0,nextActionName:"coreUpdateVerifyChecksum"},coreUpdateVerifyChecksum:{loadingMessage:"Verifying checksum of downloaded core",finishMessage:void 0,nextActionName:"coreUpdateUnpack"},coreUpdateUnpack:{loadingMessage:"Unpacking core",finishMessage:void 0,nextActionName:"coreUpdateMove"},coreUpdateMove:{loadingMessage:"Moving core",finishMessage:void 0,nextActionName:"coreUpdateActivate"},coreUpdateActivate:{loadingMessage:"Activating core",finishMessage:"Core updated - please reload your browser",nextActionName:void 0}},this.buttonTemplate=null}initialize(e){super.initialize(e),this.loadModuleFrameAgnostic("@typo3/install/renderable/flash-message.js").then(async()=>{await this.getData(),this.buttonTemplate=this.findInModal(o.updateButton)?.cloneNode(!0)}),new g("click",(t,a)=>{if(t.preventDefault(),!a.hasAttribute("data-action")){this.callAction("coreUpdateIsUpdateAvailable");return}const n=a.dataset.action;switch(this.findInModal(o.output).innerHTML="",n){case"updateDevelopment":this.update("development");break;case"updateRegular":this.update("regular");break;default:throw'Unknown update action "'+n+'"'}}).delegateTo(e,".t3js-coreUpdate-init")}getData(){const e=this.getModalBody();return new d(s.getUrl("coreUpdateGetData")).get({cache:"no-cache"}).then(async t=>{const a=await t.resolve();a.success===!0?(e.innerHTML=a.html,u.setButtons(a.buttons)):h.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},t=>{s.handleAjaxError(t,e)})}update(e){e!=="development"&&(e="regular"),this.callAction("coreUpdateCheckPreConditions",e)}callAction(e,t){const a={install:{action:e}};t!==void 0&&(a.install.type=t),this.addLoadingMessage(this.actionQueue[e].loadingMessage),new d(s.getUrl()).withQueryArguments(a).get({cache:"no-cache"}).then(async n=>{const c=await n.resolve();this.handleResult(c,this.actionQueue[e].finishMessage)===!0&&this.actionQueue[e].nextActionName!==void 0&&this.callAction(this.actionQueue[e].nextActionName,t)},n=>{s.handleAjaxError(n,this.getModalBody())})}handleResult(e,t){const a=e.success;return this.removeLoadingMessage(),e.status&&typeof e.status=="object"&&this.showStatusMessages(e.status),e.action&&typeof e.action=="object"&&this.showActionButton(e.action),a&&t&&this.addMessage(r.ok,t),a}addLoadingMessage(e){this.addMessage(r.loading,e)}removeLoadingMessage(){this.findInModal(o.output).querySelector("typo3-install-flashmessage")?.remove()}showStatusMessages(e){for(const t of e)this.addMessage(t.severity,t.title??"",t.message??"")}showActionButton(e){const t=this.buttonTemplate;e.action&&t.setAttribute("data-action",e.action),e.title&&(t.innerText=e.title),this.findInModal(o.updateButton).replaceWith(t)}addMessage(e,t,a){this.findInModal(o.output).append(p.create(e,t,a))}}var m=new f;export{m as default};
@@ -0,0 +1,13 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
import"bootstrap";import{AbstractInteractableModule as g}from"@typo3/install/module/abstract-interactable-module.js";import f from"@typo3/backend/modal.js";import p from"@typo3/backend/notification.js";import c from"@typo3/core/ajax/ajax-request.js";import{InfoBox as u}from"@typo3/install/renderable/info-box.js";import h from"@typo3/install/renderable/severity.js";import r from"@typo3/install/router.js";import x from"@typo3/core/event/regular-event.js";var n;(function(l){l.checkTrigger=".t3js-extensionCompatTester-check",l.uninstallTrigger=".t3js-extensionCompatTester-uninstall",l.outputContainer=".t3js-extensionCompatTester-output"})(n||(n={}));class m extends g{initialize(t){super.initialize(t),this.loadModuleFrameAgnostic("@typo3/install/renderable/info-box.js").then(()=>{this.getLoadedExtensionList()}),new x("click",()=>{this.findInModal(n.uninstallTrigger)?.classList?.add("hidden");const s=this.findInModal(n.outputContainer);s&&(s.innerHTML=""),this.getLoadedExtensionList()}).delegateTo(t,n.checkTrigger),new x("click",(s,a)=>{this.uninstallExtension(a.dataset.extension)}).delegateTo(t,n.uninstallTrigger)}getLoadedExtensionList(){this.setModalButtonsState(!1);const t=this.getModalBody(),s=this.findInModal(n.outputContainer);s&&this.renderProgressBar(s,{},"append"),new c(r.getUrl("extensionCompatTesterLoadedExtensionList")).get({cache:"no-cache"}).then(async a=>{const o=await a.resolve();t.innerHTML=o.html,f.setButtons(o.buttons);const e=this.findInModal(n.outputContainer);this.renderProgressBar(e,{},"append"),o.success===!0?this.loadExtLocalconf().then(()=>{e.append(u.create(h.ok,"ext_localconf.php of all loaded extensions successfully loaded"))},async i=>{this.renderFailureMessages("ext_localconf.php",(await i.response.json()).brokenExtensions,e)}).finally(()=>{this.unlockModal()}):(p.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log."),this.unlockModal())},a=>{r.handleAjaxError(a,t),this.unlockModal()})}unlockModal(){this.findInModal(n.outputContainer)?.querySelector("typo3-backend-progress-bar")?.remove(),this.setModalButtonsState(!0)}renderFailureMessages(t,s,a){for(const o of s){let e;o.isProtected||(e=document.createElement("button"),e.classList.add("btn","btn-danger","t3js-extensionCompatTester-uninstall"),e.dataset.extension=o.name,e.innerText='Uninstall extension "'+o.name+'"'),a.append(u.create(h.error,"Loading "+t+' of extension "'+o.name+'" failed',o.isProtected?"Extension is mandatory and cannot be uninstalled.":""),e)}this.unlockModal()}loadExtLocalconf(){const t=this.getModuleContent().dataset.extensionCompatTesterLoadExt_localconfToken;return new c(r.getUrl()).post({install:{action:"extensionCompatTesterLoadExtLocalconf",token:t}})}uninstallExtension(t){const s=this.getModuleContent().dataset.extensionCompatTesterUninstallExtensionToken,a=this.getModalBody(),o=this.findInModal(n.outputContainer);this.renderProgressBar(o,{},"append"),new c(r.getUrl()).post({install:{action:"extensionCompatTesterUninstallExtension",token:s,extension:t}}).then(async e=>{const i=await e.resolve();i.success?(Array.isArray(i.status)&&i.status.forEach(d=>{a.querySelector(n.outputContainer).replaceChildren(u.create(d.severity,d.title,d.message))}),this.findInModal(n.uninstallTrigger).classList.add("hidden"),this.getLoadedExtensionList()):p.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},e=>{r.handleAjaxError(e,a)})}}var T=new m;export{T as default};
@@ -0,0 +1,13 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
import"bootstrap";import j from"@typo3/core/ajax/ajax-request.js";import{AbstractInteractableModule as E}from"@typo3/install/module/abstract-interactable-module.js";import k from"@typo3/backend/modal.js";import p from"@typo3/backend/notification.js";import M from"@typo3/install/ajax/ajax-queue.js";import S from"@typo3/install/router.js";import b from"@typo3/core/event/regular-event.js";var i;(function(h){h.extensionContainer=".t3js-extensionScanner-extension",h.numberOfFiles=".t3js-extensionScanner-number-of-files",h.scanSingleTrigger=".t3js-extensionScanner-scan-single",h.extensionScanButton=".t3js-extensionScanner-scan-all"})(i||(i={}));class I extends E{constructor(){super(...arguments),this.listOfAffectedRestFileHashes=[]}initialize(n){super.initialize(n),Promise.all([this.loadModuleFrameAgnostic("@typo3/backend/element/progress-bar-element.js")]).then(()=>{this.getData()}),new b("typo3-modal-hide",()=>{M.flush()}).bindTo(n),new b("click",(s,t)=>{s.preventDefault();const e=t.closest(i.extensionContainer).dataset.extension;this.scanSingleExtension(e)}).delegateTo(n,i.scanSingleTrigger),new b("click",s=>{s.preventDefault(),this.setModalButtonsState(!1);const t=n.querySelectorAll(i.extensionContainer);this.scanAll(t)}).delegateTo(n,i.extensionScanButton)}getData(){const n=this.getModalBody();new j(S.getUrl("extensionScannerGetData")).get().then(async s=>{const t=await s.resolve();t.success===!0?(n.innerHTML=t.html,k.setButtons(t.buttons),this.setupEventListeners()):p.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},s=>{S.handleAjaxError(s,n)})}setupEventListeners(){this.currentModal.querySelectorAll(i.extensionContainer).forEach(n=>{new b("show.bs.collapse",s=>{const t=s.currentTarget;if(typeof t.dataset.scanned>"u"){const e=t.dataset.extension;this.scanSingleExtension(e),t.dataset.scanned=String(!0)}}).bindTo(n)})}getExtensionSelector(n){return i.extensionContainer+"-"+n}async scanAll(n){n.forEach(t=>{t.classList.remove("panel-danger","panel-warning","panel-success");const e=t.querySelector(".panel-progress-bar");e.style.width=String(0),e.setAttribute("aria-valuenow",String(0)),e.querySelector("span").innerText="0%"}),this.setProgressForAll();const s=[...n].map(async t=>{const e=t.dataset.extension;try{await this.scanSingleExtension(e)}finally{t.dataset.scanned=String(!0)}});try{await Promise.allSettled(s)}finally{this.setModalButtonsState(!0),p.success("Scan finished","All extensions have been scanned.");try{const e=await(await new j(S.getUrl()).post({install:{action:"extensionScannerMarkFullyScannedRestFiles",token:this.getModuleContent().dataset.extensionScannerMarkFullyScannedRestFilesToken,hashes:Array.from(new Set(this.listOfAffectedRestFileHashes))}})).resolve();e.success===!0&&p.success("Marked not affected files","Marked "+e.markedAsNotAffected+" ReST files as not affected.")}catch(t){S.handleAjaxError(t,this.getModalBody())}}}setStatusMessageForScan(n,s,t){const y=this.findInModal(this.getExtensionSelector(n)).querySelector(i.numberOfFiles);y.innerText="Checked "+s+" of "+t+" files"}setProgressForScan(n,s,t){const e=s/t*100,g=this.findInModal(this.getExtensionSelector(n)).querySelector(".panel-progress-bar");g.style.width=e+"%",g.setAttribute("aria-valuenow",String(e)),g.querySelector("span").innerText=e+"%"}setProgressForAll(){const n=this.currentModal.querySelectorAll(i.extensionContainer).length,s=this.currentModal.querySelectorAll(i.extensionContainer+".t3js-extensionscan-finished").length,t=`Scanning extensions (${s} of ${n} done)\u2026`,e=this.findInModal(".t3js-extensionScanner-progress-all-extension");e.removeAttribute("hidden"),e.max=n,e.value=s,e.label=t}async scanSingleExtension(n){const s=this.getModuleContent().dataset.extensionScannerFilesToken,t=this.getModalBody(),e=this.findInModal(this.getExtensionSelector(n)),y="#t3js-extensionScanner-file-hit-template",g="#t3js-extensionScanner-file-hit-rest-template";let q=!1;e.classList.add("panel-default"),e.classList.remove("panel-danger","panel-warning","panel-success","t3js-extensionscan-finished"),e.dataset.hasRun="true";const T=e.querySelector(".t3js-extensionScanner-scan-single");T.innerText="Scanning...",T.disabled=!0,e.querySelector(".t3js-extensionScanner-extension-body-loc").innerText="0",e.querySelector(".t3js-extensionScanner-extension-body-ignored-files").innerText="0",e.querySelector(".t3js-extensionScanner-extension-body-ignored-lines").innerText="0",this.setProgressForAll();try{const f=await(await new j(S.getUrl()).post({install:{action:"extensionScannerFiles",token:s,extension:n}})).resolve();if(f.success===!0&&Array.isArray(f.files)){const x=f.files.length;if(x<=0){p.warning("No files found","The extension "+n+" contains no scannable files");return}this.setStatusMessageForScan(n,0,x),e.querySelector(".t3js-extensionScanner-extension-body").innerText="",e.classList.add("panel-has-progress");let c=0;const F=f.files.map(v=>new Promise((P,C)=>{M.Line truncated
@@ -0,0 +1,13 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
import{AbstractInteractableModule as u}from"@typo3/install/module/abstract-interactable-module.js";import p from"@typo3/backend/modal.js";import h from"@typo3/core/ajax/ajax-request.js";import{FlashMessage as d}from"@typo3/install/renderable/flash-message.js";import{InfoBox as i}from"@typo3/install/renderable/info-box.js";import c from"@typo3/install/renderable/severity.js";import l from"@typo3/install/router.js";import g from"@typo3/core/event/regular-event.js";var t;(function(a){a.checkTrigger=".t3js-tcaMigrationsCheck-check",a.outputContainer=".t3js-tcaMigrationsCheck-output"})(t||(t={}));class m extends u{initialize(r){super.initialize(r),Promise.all([this.loadModuleFrameAgnostic("@typo3/install/renderable/info-box.js"),this.loadModuleFrameAgnostic("@typo3/install/renderable/flash-message.js")]).then(()=>{this.check()}),new g("click",e=>{e.preventDefault(),this.check()}).delegateTo(r,t.checkTrigger)}check(){this.setModalButtonsState(!1);const r=document.querySelector(t.outputContainer);r!==null&&this.renderProgressBar(r,{},"append");const e=this.getModalBody();new h(l.getUrl("tcaMigrationsCheck")).get({cache:"no-cache"}).then(async n=>{const o=await n.resolve();e.innerHTML=o.html,p.setButtons(o.buttons),o.success===!0&&Array.isArray(o.status)?o.status.length>0?(e.querySelector(t.outputContainer).append(i.create(c.warning,"TCA migrations need to be applied","Check the following list and apply needed changes.")),o.status.forEach(s=>{e.querySelector(t.outputContainer).append(i.create(s.severity,s.title,s.message))})):e.querySelector(t.outputContainer).append(i.create(c.ok,"No TCA migrations need to be applied","Your TCA looks good.")):e.querySelector(t.outputContainer).append(d.create(c.error,"Something went wrong",'Use "Check for broken extensions"'))},n=>{l.handleAjaxError(n,e)}).finally(()=>{this.setModalButtonsState(!0)})}}var f=new m;export{f as default};
@@ -0,0 +1,13 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
import{Collapse as u}from"bootstrap";import{AbstractInteractableModule as g}from"@typo3/install/module/abstract-interactable-module.js";import m from"@typo3/backend/notification.js";import d from"@typo3/core/ajax/ajax-request.js";import r from"@typo3/install/router.js";import f from"@typo3/core/event/debounce-event.js";import"@typo3/backend/element/icon-element.js";import h from"@typo3/core/event/regular-event.js";var n;(function(i){i.fulltextSearch=".t3js-upgradeDocs-fulltext-search",i.changeLogsForVersionContainer=".t3js-version-changes",i.changeLogsForVersion=".t3js-changelog-list",i.selectPureField=".t3js-upgradeDocs-select-pure",i.upgradeDoc=".t3js-upgrade-doc"})(n||(n={}));class y extends g{initialize(o){super.initialize(o),this.loadModuleFrameAgnostic("select-pure").then(()=>{this.getContent()}),new h("click",(s,a)=>{this.markRead(a)}).delegateTo(o,".t3js-upgradeDocs-markRead"),new h("click",(s,a)=>{this.unmarkRead(a)}).delegateTo(o,".t3js-upgradeDocs-unmarkRead")}getContent(){const o=this.getModalBody();new d(r.getUrl("upgradeDocsGetContent")).get({cache:"no-cache"}).then(async s=>{const a=await s.resolve();a.success===!0&&a.html!=="undefined"&&a.html.length>0&&(o.innerHTML=a.html,this.initializeFullTextSearch(),this.initializeSelectPure(),this.loadChangelogs())},s=>{r.handleAjaxError(s,o)})}loadChangelogs(){const o=[],s=this.getModalBody();this.currentModal.querySelectorAll(n.changeLogsForVersionContainer).forEach(a=>{const e=new d(r.getUrl("upgradeDocsGetChangelogForVersion")).withQueryArguments({install:{version:a.dataset.version}}).get({cache:"no-cache"}).then(async t=>{const l=await t.resolve();if(l.success===!0){const c=a,p=c.querySelector(n.changeLogsForVersion);p.innerHTML=l.html,this.moveNotRelevantDocuments(p),c.querySelector(".t3js-panel-loading").remove()}else m.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},t=>{r.handleAjaxError(t,s)});o.push(e)}),Promise.all(o).then(()=>{this.fulltextSearchField.disabled=!1,this.appendItemsToSelectPure()})}initializeFullTextSearch(){this.fulltextSearchField=this.findInModal(n.fulltextSearch);const o=this.fulltextSearchField;new h("search",()=>{o.value===""&&this.combinedFilterSearch()}).bindTo(o),o.focus(),new f("keyup",()=>{this.combinedFilterSearch()}).bindTo(o)}initializeSelectPure(){this.selectPureField=this.getModalBody().querySelector(n.selectPureField),this.selectPureField.addEventListener("change",()=>{this.combinedFilterSearch(),this.selectPureField.close()})}appendItemsToSelectPure(){let o="";this.currentModal.querySelectorAll(n.upgradeDoc).forEach(e=>{o+=e.dataset.itemTags+","});const a=[...new Set(o.slice(0,-1).split(",")).values()].reduce((e,t)=>{const l=t.toLowerCase();return e.every(c=>c.toLowerCase()!==l)&&e.push(t),e},[]).sort((e,t)=>e.toLowerCase().localeCompare(t.toLowerCase()));this.selectPureField.enable();for(const e of a){const t=this.selectPureField.ownerDocument.createElement("option-pure");t.textContent=e,t.setAttribute("value",e),this.selectPureField.appendChild(t)}}combinedFilterSearch(){const o=this.getModalBody(),s=o.querySelectorAll(n.upgradeDoc);if(this.selectPureField.values.length<1&&this.fulltextSearchField.value.length<1){this.currentModal.querySelectorAll(".panel-version .panel-collapse.show").forEach(t=>{new h("hidden.bs.collapse",()=>{this.currentModal.querySelectorAll(".panel-version .panel-collapse.collapsing").length===0&&s.forEach(l=>{l.classList.remove("hidden","searchhit","filterhit")})},{once:!0}).bindTo(t),u.getOrCreateInstance(t).hide()});return}if(s.forEach(e=>{e.classList.remove("searchhit","filterhit")}),this.selectPureField.values.length>0){s.forEach(t=>{t.classList.add("hidden"),t.classList.remove("filterhit")});const e=this.selectPureField.values.map(t=>'[data-item-tags*="'+t+'"]').join("");o.querySelectorAll(e).forEach(t=>{t.classList.remove("hidden"),t.classList.add("searchhit","filterhit")})}else s.forEach(e=>{e.classList.add("filterhit"),e.classList.remove("hidden")});const a=this.fulltextSearchField.value;o.querySelectorAll(".filterhit").forEach(e=>{e.textContent.toLowerCase().trim().includes(a.toLowerCase())?(e.classList.remove("hidden"),e.classList.add("searchhit")):(e.classList.remove("searchhit"),e.classList.add("hidden"))}),o.querySelectorAll(".searchhit").forEach(e=>{const t=e.closest(".panel-collapse");window.setTimeout(()=>{u.getOrCreateInstance(t).show()},20)}),o.querySelectorAll(".panel-version").forEach(e=>{if(e.querySelectorAll(".searchhit, .filterhit").length<1){const t=e.querySelector(":scope > .panel-collapse");u.getOrCreateInstance(t).hide()}})}moveNotRelevantDocuments(o){this.findInModal(".panel-body-read").append(o.querySelector('[data-item-state="read"]')??""),this.findInModal(".panel-body-not-affected").append(o.querySelector('[data-item-state="notAffected"]')??"")}markRead(o){const s=this.getModalBody(),a=this.getModuleContent().dataset.upgradeDocsMarkReadToken,e=o.closest("button");e.classLiLine truncated
@@ -0,0 +1,13 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
import"bootstrap";import{AbstractInteractableModule as T}from"@typo3/install/module/abstract-interactable-module.js";import z from"@typo3/backend/notification.js";import g from"@typo3/core/ajax/ajax-request.js";import k from"@typo3/core/security-utility.js";import{FlashMessage as f}from"@typo3/install/renderable/flash-message.js";import{InfoBox as m}from"@typo3/install/renderable/info-box.js";import C from"@typo3/install/renderable/severity.js";import u from"@typo3/install/router.js";import w from"@typo3/core/event/regular-event.js";var t;(function(d){d.outputWizardsContainer=".t3js-upgradeWizards-wizards-output",d.outputMessagesContainer=".t3js-upgradeWizards-wizards-messages-output",d.outputDoneContainer=".t3js-upgradeWizards-done-output",d.wizardsBlockingAddsTemplate="#t3js-upgradeWizards-blocking-adds-template",d.wizardsBlockingAddsRows=".t3js-upgradeWizards-blocking-adds-rows",d.wizardsBlockingAddsExecute=".t3js-upgradeWizards-blocking-adds-execute",d.wizardsBlockingCharsetTemplate="#t3js-upgradeWizards-blocking-charset-template",d.wizardsBlockingCharsetFix=".t3js-upgradeWizards-blocking-charset-fix",d.wizardsDoneBodyTemplate="#t3js-upgradeWizards-done-body-template",d.wizardsDoneRows=".t3js-upgradeWizards-done-rows",d.wizardsDoneRowTemplate="#t3js-upgradeWizards-done-row-template",d.wizardsDoneRowMarkUndone=".t3js-upgradeWizards-done-markUndone",d.wizardsDoneRowTitle=".t3js-upgradeWizards-done-title",d.wizardsListTemplate="#t3js-upgradeWizards-list-template",d.wizardsListRows=".t3js-upgradeWizards-list-rows",d.wizardsListRowTemplate="#t3js-upgradeWizards-list-row-template",d.wizardsListRowTitle=".t3js-upgradeWizards-list-row-title",d.wizardsListRowExplanation=".t3js-upgradeWizards-list-row-explanation",d.wizardsListRowExecute=".t3js-upgradeWizards-list-row-execute",d.wizardsInputTemplate="#t3js-upgradeWizards-input",d.wizardsInputTitle=".t3js-upgradeWizards-input-title",d.wizardsInputDescription=".t3js-upgradeWizards-input-description",d.wizardsInputHtml=".t3js-upgradeWizards-input-html",d.wizardsInputPerform=".t3js-upgradeWizards-input-perform",d.wizardsInputAbort=".t3js-upgradeWizards-input-abort"})(t||(t={}));class y extends T{constructor(){super(),this.securityUtility=new k}static removeLoadingMessage(s){s.querySelectorAll("typo3-backend-progress-bar").forEach(r=>{r.remove()})}initialize(s){super.initialize(s),Promise.all([this.loadModuleFrameAgnostic("@typo3/install/renderable/info-box.js"),this.loadModuleFrameAgnostic("@typo3/install/renderable/flash-message.js")]).then(async()=>{await this.getData(),this.doneUpgrades()}),new w("click",(r,a)=>{a.disabled=!0,this.markUndone(a.dataset.identifier)}).delegateTo(s,t.wizardsDoneRowMarkUndone),new w("click",()=>{this.blockingUpgradesDatabaseCharsetFix()}).delegateTo(s,t.wizardsBlockingCharsetFix),new w("click",()=>{this.blockingUpgradesDatabaseAddsExecute()}).delegateTo(s,t.wizardsBlockingAddsExecute),new w("click",(r,a)=>{this.wizardInput(a.dataset.identifier,a.dataset.title)}).delegateTo(s,t.wizardsListRowExecute),new w("click",(r,a)=>{this.wizardExecute(a.dataset.identifier,a.dataset.title)}).delegateTo(s,t.wizardsInputPerform),new w("click",()=>{this.findInModal(t.outputWizardsContainer).innerHTML="",this.wizardsList()}).delegateTo(s,t.wizardsInputAbort)}getData(){const s=this.getModalBody(),r=this.findInModal(t.outputWizardsContainer);return new g(u.getUrl("upgradeWizardsGetData")).get({cache:"no-cache"}).then(async a=>{const e=await a.resolve();e.success===!0?(s.innerHTML=e.html,this.blockingUpgradesDatabaseCharsetTest()):z.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},a=>{u.handleAjaxError(a,r)})}blockingUpgradesDatabaseCharsetTest(){const s=this.getModalBody(),r=this.findInModal(t.outputWizardsContainer);this.renderProgressBar(r,{label:"Checking database charset..."}),new g(u.getUrl("upgradeWizardsBlockingDatabaseCharsetTest")).get({cache:"no-cache"}).then(async a=>{const e=await a.resolve();e.success===!0&&(e.needsUpdate===!0?(y.removeLoadingMessage(r),s.querySelector(t.outputWizardsContainer).appendChild(s.querySelector(t.wizardsBlockingCharsetTemplate).content.cloneNode(!0))):this.blockingUpgradesDatabaseAdds())},a=>{u.handleAjaxError(a,r)})}blockingUpgradesDatabaseCharsetFix(){const s=this.findInModal(t.outputWizardsContainer);this.renderProgressBar(s,{label:"Setting database charset to UTF-8..."}),new g(u.getUrl("upgradeWizardsBlockingDatabaseCharsetFix")).get({cache:"no-cache"}).then(async r=>{const a=await r.resolve();a.success===!0?Array.isArray(a.status)&&a.status.length>0&&a.status.forEach(e=>{s.append(m.create(e.severity,e.title,e.message))}):(y.removeLoadingMessage(s),s.append(f.create(C.error,"Something went wrong")))},r=>{u.handleAjaxError(r,s)})}blockingUpgradesDatabaseAdds(){const s=this.getModalBody(),r=this.findInModal(t.outputWizardsContainer);this.renderProgressBar(r,{label:"Check for missing mandatory database tables and fields..."}),new g(uLine truncated