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 h from"@typo3/core/ajax/ajax-request.js";class n{constructor(){this.requests=[],this.requestCount=0,this.threshold=5,this.queue=[]}add(e){this.queue.push(e),this.handleNext()}flush(){this.queue=[],this.requests.forEach(e=>e.abort()),this.requests=[]}handleNext(){this.queue.length>0&&this.requestCount<this.threshold&&(this.incrementRequestCount(),this.sendRequest(this.queue.shift()).finally(()=>{this.decrementRequestCount(),this.handleNext()}))}async sendRequest(e){const t=new h(e.url);let s;return typeof e.method<"u"&&e.method.toUpperCase()==="POST"?s=t.post(e.data):s=t.withQueryArguments(e.data||{}).get(),this.requests.push(t),s.then(e.onfulfilled,e.onrejected).then(()=>{const u=this.requests.indexOf(t);this.requests.splice(u,1)})}incrementRequestCount(){this.requestCount++}decrementRequestCount(){this.requestCount>0&&this.requestCount--}}var i=new n;export{i 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!
*/
self.TYPO3={},import("@typo3/install/install.js");
@@ -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!
*/
self.TYPO3={},import("@typo3/install/installer.js");
+13
View File
@@ -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 t from"@typo3/core/document-service.js";import r from"@typo3/install/router.js";class e{constructor(){t.ready().then(()=>{r.initialize()})}}var o=new e;export{o as default};
+13
View File
@@ -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 h from"@typo3/core/document-service.js";import l from"@typo3/core/event/regular-event.js";import r from"@typo3/core/ajax/ajax-request.js";import d from"@typo3/install/module/password-strength.js";import{InfoBox as u}from"@typo3/install/renderable/info-box.js";import"@typo3/backend/element/icon-element.js";import{selector as m}from"@typo3/core/literals.js";import"@typo3/backend/element/progress-bar-element.js";var n;(function(i){i.body=".t3js-body",i.moduleContent=".t3js-module-content",i.mainContent=".t3js-installer-content",i.progressBar=".t3js-installer-progress",i.databaseConnectOutput=".t3js-installer-databaseConnect-output",i.databaseSelectOutput=".t3js-installer-databaseSelect-output",i.databaseDataOutput=".t3js-installer-databaseData-output"})(n||(n={}));class g{constructor(){this.initializeEvents(),h.ready().then(()=>{this.initialize()})}initializeEvents(){new l("click",e=>{e.preventDefault(),this.showEnvironmentAndFolders()}).delegateTo(document,".t3js-installer-environmentFolders-retry"),new l("click",e=>{e.preventDefault(),this.executeEnvironmentAndFolders()}).delegateTo(document,".t3js-installer-environmentFolders-execute"),new l("click",e=>{e.preventDefault(),this.executeDatabaseConnect()}).delegateTo(document,".t3js-installer-databaseConnect-execute"),new l("click",e=>{e.preventDefault(),this.executeDatabaseSelect()}).delegateTo(document,".t3js-installer-databaseSelect-execute"),new l("click",e=>{e.preventDefault(),this.executeDatabaseData()}).delegateTo(document,".t3js-installer-databaseData-execute"),new l("click",e=>{e.preventDefault(),this.executeDefaultConfiguration()}).delegateTo(document,".t3js-installer-defaultConfiguration-execute"),new l("click",(e,t)=>{e.preventDefault();const a=document.querySelector(t.dataset.toggleTarget);t.dataset.toggleState==="invisible"?(t.dataset.toggleState="visible",a.setAttribute("type","text")):(t.dataset.toggleState="invisible",a.setAttribute("type","password"))}).delegateTo(document,".t3-install-form-password-toggle"),new l("change",(e,t)=>{const a=t.value;document.querySelectorAll(".t3-install-driver-data").forEach(s=>s.setAttribute("hidden","")),document.querySelectorAll(".t3-install-driver-data input").forEach(s=>s.setAttribute("disabled","disabled")),document.querySelectorAll(m`#${a} input`).forEach(s=>s.removeAttribute("disabled")),document.querySelector("#"+a)?.removeAttribute("hidden")}).delegateTo(document,"#t3js-connect-database-driver")}initialize(){this.setProgress(0),this.getMainLayout()}getUrl(e){const t=new URL(window.location.toString());return t.search="?__typo3_install",e!==void 0&&t.searchParams.set("install[action]",e),t.toString()}setProgress(e){const t=document.querySelector(n.progressBar);t!==null&&e!==0&&(t.value=e,t.label=`Step ${e} of 5 completed`)}getMainLayout(){new r(this.getUrl("mainLayout")).get({cache:"no-cache"}).then(async e=>{const t=await e.resolve();document.querySelector(n.body).innerHTML=t.html,this.checkInstallerAvailable()})}checkInstallerAvailable(){new r(this.getUrl("checkInstallerAvailable")).get({cache:"no-cache"}).then(async e=>{(await e.resolve()).success?this.checkEnvironmentAndFolders():this.showInstallerNotAvailable()})}showInstallerNotAvailable(){const e=document.querySelector(n.mainContent);new r(this.getUrl("showInstallerNotAvailable")).get({cache:"no-cache"}).then(async t=>{const a=await t.resolve();a.success===!0&&(e.innerHTML=a.html)})}checkEnvironmentAndFolders(){this.setProgress(1),new r(this.getUrl("checkEnvironmentAndFolders")).get({cache:"no-cache"}).then(async e=>{(await e.resolve()).success===!0?this.checkTrustedHostsPattern():this.showEnvironmentAndFolders()})}showEnvironmentAndFolders(){const e=document.querySelector(n.mainContent);new r(this.getUrl("showEnvironmentAndFolders")).get({cache:"no-cache"}).then(async t=>{const a=await t.resolve();if(a.success===!0){e.innerHTML=a.html;const s=document.querySelector(".t3js-installer-environment-details");let o=!1;Array.isArray(a.environmentStatusErrors)&&a.environmentStatusErrors.forEach(c=>{o=!0,s.append(u.create(c.severity,c.title,c.message))}),Array.isArray(a.environmentStatusWarnings)&&a.environmentStatusWarnings.forEach(c=>{o=!0,s.append(u.create(c.severity,c.title,c.message))}),Array.isArray(a.structureErrors)&&a.structureErrors.forEach(c=>{o=!0,s.append(u.create(c.severity,c.title,c.message))}),o?(s.removeAttribute("hidden"),document.querySelectorAll(".t3js-installer-environmentFolders-bad").forEach(c=>c.removeAttribute("hidden"))):document.querySelectorAll(".t3js-installer-environmentFolders-good").forEach(c=>c.removeAttribute("hidden"))}})}executeEnvironmentAndFolders(){new r(this.getUrl("executeEnvironmentAndFolders")).get({cache:"no-cache"}).then(async e=>{(await e.resolve()).success===!0&&this.checkTrustedHostsPattern()})}checkTrustedHostsPattern(){new r(this.getUrl("checkTrustedHostsPattern")).get({cache:"no-cache"}).then(async e=>{(await e.resolve()).success===!0?this.checkDatabaseConnect():this.executeAdjustTrustedHostsPatLine 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!
*/
class s{setButtonState(t,e){t.disabled=!e}}export{s as AbstractInlineModule};
@@ -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{topLevelModuleImport as d}from"@typo3/backend/utility/top-level-module-import.js";var n;(function(a){a.modalBody=".t3js-modal-body",a.modalContent=".t3js-module-content",a.modalFooter=".t3js-modal-footer"})(n||(n={}));class s{initialize(o){this.currentModal=o}getModalBody(){return this.findInModal(n.modalBody)}getModuleContent(){return this.findInModal(n.modalContent)}getModalFooter(){return this.findInModal(n.modalFooter)}findInModal(o){return this.currentModal.querySelector(o)}setModalButtonsState(o){this.getModalFooter()?.querySelectorAll("button").forEach(e=>{this.setModalButtonState(e,o)})}setModalButtonState(o,e){o.classList.toggle("disabled",!e),o.disabled=!e}async loadModuleFrameAgnostic(o){window.location!==window.parent.location?await d(o):await import(o)}renderProgressBar(o,e,l){this.loadModuleFrameAgnostic("@typo3/backend/element/progress-bar-element.js"),o=o||this.currentModal;const t=o.ownerDocument.createElement("typo3-backend-progress-bar");return typeof e=="object"&&Object.keys(e).forEach(r=>{t[r]=e[r]}),l==="append"?o.append(t):l==="prepend"?o.prepend(t):o.replaceChildren(t),t}}export{s as AbstractInteractableModule};
@@ -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 c}from"@typo3/install/module/abstract-interactable-module.js";import l from"@typo3/backend/modal.js";import m from"@typo3/backend/notification.js";import f from"@typo3/core/ajax/ajax-request.js";import{InfoBox as h}from"@typo3/install/renderable/info-box.js";import i from"@typo3/install/router.js";import p from"@typo3/core/event/regular-event.js";var o;(function(n){n.executeTrigger=".t3js-environmentCheck-execute",n.outputContainer=".t3js-environmentCheck-output"})(o||(o={}));class d extends c{initialize(e){super.initialize(e),this.loadModuleFrameAgnostic("@typo3/install/renderable/info-box.js").then(()=>{this.runTests()}),new p("click",s=>{s.preventDefault(),this.runTests()}).delegateTo(e,o.executeTrigger)}runTests(){this.setModalButtonsState(!1);const e=this.getModalBody(),s=e.querySelector(o.outputContainer);s!==null&&this.renderProgressBar(s),new f(i.getUrl("environmentCheckGetStatus")).get({cache:"no-cache"}).then(async r=>{const t=await r.resolve();if(e.innerHTML=t.html,l.setButtons(t.buttons),t.success===!0&&typeof t.status=="object")for(const u of Object.values(t.status))for(const a of u)e.querySelector(o.outputContainer).append(h.create(a.severity,a.title,a.message));else m.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},r=>{i.handleAjaxError(r,e)}).finally(()=>{this.setModalButtonsState(!0)})}}var g=new d;export{g 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 y}from"@typo3/install/module/abstract-interactable-module.js";import f from"@typo3/backend/modal.js";import p from"@typo3/backend/notification.js";import d from"@typo3/core/ajax/ajax-request.js";import{InfoBox as l}from"@typo3/install/renderable/info-box.js";import S from"@typo3/install/renderable/severity.js";import u from"@typo3/install/router.js";import g from"@typo3/core/event/regular-event.js";var o;(function(a){a.outputContainer=".t3js-folderStructure-output",a.errorContainer=".t3js-folderStructure-errors",a.errorList=".t3js-folderStructure-errors-list",a.errorFixTrigger=".t3js-folderStructure-errors-fix",a.okContainer=".t3js-folderStructure-ok",a.okList=".t3js-folderStructure-ok-list",a.permissionContainer=".t3js-folderStructure-permissions"})(o||(o={}));class c extends y{static removeLoadingMessage(e){e.querySelector("typo3-backend-progress-bar").remove()}initialize(e){super.initialize(e),this.loadModuleFrameAgnostic("@typo3/install/renderable/info-box.js").then(()=>{this.getStatus()}),new g("click",r=>{r.preventDefault(),this.fix()}).delegateTo(e,o.errorFixTrigger)}getStatus(){const e=this.getModalBody();new d(u.getUrl("folderStructureGetStatus")).get({cache:"no-cache"}).then(async r=>{const t=await r.resolve();e.innerHTML=t.html,f.setButtons(t.buttons),t.success===!0&&Array.isArray(t.errorStatus)&&(t.errorStatus.length>0?(e.querySelector(o.errorContainer).style.display="block",e.querySelector(o.errorList).innerHTML="",t.errorStatus.forEach(i=>{e.querySelector(o.errorList).appendChild(l.create(i.severity,i.title,i.message))})):e.querySelector(o.errorContainer).style.display="none"),t.success===!0&&Array.isArray(t.okStatus)&&(t.okStatus.length>0?(e.querySelector(o.okContainer).style.display="block",e.querySelector(o.okList).innerHTML="",t.okStatus.forEach(i=>{e.querySelector(o.okList).appendChild(l.create(i.severity,i.title,i.message))})):e.querySelector(o.okContainer).style.display="none");let s=t.folderStructureFilePermissionStatus;const n=e.querySelector(o.permissionContainer);n.replaceChildren(l.create(s.severity,s.title,s.message)),s=t.folderStructureDirectoryPermissionStatus,n.appendChild(l.create(s.severity,s.title,s.message))},r=>{u.handleAjaxError(r,e)})}fix(){this.setModalButtonsState(!1);const e=this.getModalBody(),r=this.findInModal(o.outputContainer);r.style.display="block",this.renderProgressBar(r),new d(u.getUrl("folderStructureFix")).get({cache:"no-cache"}).then(async t=>{const s=await t.resolve();c.removeLoadingMessage(r),s.success===!0&&Array.isArray(s.fixedStatus)?(s.fixedStatus.length>0?s.fixedStatus.forEach(n=>{r.append(l.create(n.severity,n.title,n.message))}):r.append(l.create(S.warning,"Nothing fixed")),this.getStatus()):(r.style.display="none",p.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log."))},t=>{r.style.display="none",u.handleAjaxError(t,e)}).finally(()=>{this.setModalButtonsState(!0)})}}var h=new c;export{h as default};
@@ -0,0 +1,16 @@
/*
* 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 w from"@typo3/backend/modal.js";import y from"@typo3/backend/notification.js";import h from"@typo3/core/ajax/ajax-request.js";import{InfoBox as f}from"@typo3/install/renderable/info-box.js";import x from"@typo3/install/renderable/severity.js";import m from"@typo3/install/router.js";import A from"@typo3/core/event/regular-event.js";var o;(function(n){n.executeTrigger=".t3js-imageProcessing-execute",n.testContainer=".t3js-imageProcessing-twinContainer",n.twinImageTemplate="#t3js-imageProcessing-twinImage-template",n.commandContainer=".t3js-imageProcessing-command",n.commandText=".t3js-imageProcessing-command-text",n.twinImages=".t3js-imageProcessing-images"})(o||(o={}));class P extends T{initialize(t){super.initialize(t),this.loadModuleFrameAgnostic("@typo3/install/renderable/info-box.js").then(()=>{this.getData()}),new A("click",a=>{a.preventDefault(),this.runTests()}).delegateTo(t,o.executeTrigger)}getData(){const t=this.getModalBody();new h(m.getUrl("imageProcessingGetData")).get({cache:"no-cache"}).then(async a=>{const r=await a.resolve();r.success===!0?(t.innerHTML=r.html,w.setButtons(r.buttons),this.runTests()):y.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},a=>{m.handleAjaxError(a,t)})}runTests(){const t=this.getModalBody();this.setModalButtonsState(!1);const a=this.findInModal(o.twinImageTemplate),r=[];t.querySelectorAll(o.testContainer).forEach(c=>{c.replaceChildren(f.create(x.loading,"Loading..."));const p=new h(m.getUrl(c.dataset.test)).get({cache:"no-cache"}).then(async l=>{const e=await l.resolve();if(e.success===!0){c.innerHTML="",Array.isArray(e.status)&&e.status.forEach(s=>{c.append(f.create(s.severity,s.title,s.message))});const i=a.content.cloneNode(!0);if(e.fileExists===!0&&(i.querySelector("img.reference")?.setAttribute("src",e.referenceFile),i.querySelector("img.result")?.setAttribute("src",e.outputFile),i.querySelectorAll(o.twinImages).forEach(s=>s.hidden=!1)),Array.isArray(e.command)&&e.command.length>0){const s=i.querySelector(o.commandContainer);s!==null&&(s.hidden=!1);const g=[];e.command.forEach(u=>{g.push(`<strong>Command:</strong>
`+u[1]),u.length===3&&g.push(`<strong>Result:</strong>
`+u[2])});const d=i.querySelector(o.commandText);d!==null&&(d.innerHTML=g.join(`
`))}c.append(i)}},l=>{m.handleAjaxError(l,t)});r.push(p)}),Promise.all(r).then(()=>{this.setModalButtonsState(!0)})}}var j=new P;export{j 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 m}from"@typo3/install/module/abstract-interactable-module.js";import h from"@typo3/backend/modal.js";import i 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 l from"@typo3/install/router.js";import d from"@typo3/core/event/regular-event.js";var a;(function(r){r.outputContainer=".t3js-mailTest-output",r.mailTestButton=".t3js-mailTest-execute"})(a||(a={}));class f extends m{initialize(s){super.initialize(s),this.loadModuleFrameAgnostic("@typo3/install/renderable/info-box.js").then(()=>{this.getData()}),new d("click",e=>{e.preventDefault(),this.send()}).delegateTo(s,a.mailTestButton),new d("submit",e=>{e.preventDefault(),this.send()}).delegateTo(s,"form")}getData(){const s=this.getModalBody();new c(l.getUrl("mailTestGetData")).get({cache:"no-cache"}).then(async e=>{const t=await e.resolve();if(t.success===!0){s.innerHTML=t.html;const n=this.findInModal(a.outputContainer);t.messages&&Array.isArray(t.messages)&&t.messages.forEach(o=>{n.append(u.create(o.severity,o.title,o.message))}),t.sendPossible&&h.setButtons(t.buttons)}else i.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},e=>{l.handleAjaxError(e,s)})}send(){this.setModalButtonsState(!1);const s=this.getModuleContent().dataset.mailTestToken,e=this.findInModal(a.outputContainer);this.renderProgressBar(e),new c(l.getUrl()).post({install:{action:"mailTest",token:s,email:this.findInModal(".t3js-mailTest-email").value}}).then(async t=>{const n=await t.resolve();e.innerHTML="",Array.isArray(n.status)?n.status.forEach(o=>{e.innerHTML="",e.append(u.create(o.severity,o.title,o.message))}):i.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},()=>{i.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")}).finally(()=>{this.setModalButtonsState(!0)})}}var p=new f;export{p 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 r from"@typo3/backend/notification.js";import s from"@typo3/core/ajax/ajax-request.js";import a from"@typo3/install/router.js";import{AbstractInteractableModule as n}from"@typo3/install/module/abstract-interactable-module.js";class i extends n{initialize(e){super.initialize(e),this.getData()}getData(){const e=this.getModalBody();new s(a.getUrl("phpInfoGetData")).get({cache:"no-cache"}).then(async t=>{const o=await t.resolve();o.success===!0?e.innerHTML=o.html:r.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},t=>{a.handleAjaxError(t,e)})}}var c=new i;export{c 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 s from"@typo3/backend/notification.js";import r from"@typo3/core/ajax/ajax-request.js";import a from"@typo3/install/router.js";import{AbstractInteractableModule as n}from"@typo3/install/module/abstract-interactable-module.js";class i extends n{initialize(e){super.initialize(e),this.getData()}getData(){const e=this.getModalBody();new r(a.getUrl("systemInformationGetData")).get({cache:"no-cache"}).then(async t=>{const o=await t.resolve();o.success===!0?e.innerHTML=o.html:s.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},t=>{a.handleAjaxError(t,e)})}}var c=new i;export{c 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 t from"@typo3/backend/notification.js";import o from"@typo3/core/ajax/ajax-request.js";import n from"@typo3/install/router.js";import{AbstractInlineModule as i}from"@typo3/install/module/abstract-inline-module.js";class c extends i{initialize(r){this.setButtonState(r,!1),new o(n.getUrl("cacheClearAll","maintenance")).get({cache:"no-cache"}).then(async s=>{const e=await s.resolve();e.success===!0&&Array.isArray(e.status)?e.status.length>0&&e.status.forEach(a=>{t.success(a.title,a.message)}):t.error("Something went wrong clearing caches")},()=>{t.error("Clearing caches failed","Clearing caches went wrong on the server side. Check the system for broken extensions or missing database tables and try again. Also ensure you are properly authenticated and the server does not report specific PHP parse errors or JavaScript errors are listed in the browser console.")}).finally(()=>{this.setButtonState(r,!0)})}}var l=new c;export{l 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{AbstractInteractableModule as T}from"@typo3/install/module/abstract-interactable-module.js";import h from"@typo3/backend/modal.js";import c from"@typo3/backend/notification.js";import u from"@typo3/core/ajax/ajax-request.js";import n from"@typo3/install/router.js";import g from"@typo3/core/event/regular-event.js";var t;(function(l){l.clearTrigger=".t3js-clearTables-clear",l.statsTrigger=".t3js-clearTables-stats",l.statContainer=".t3js-clearTables-stat-container",l.statTemplate="#t3js-clearTables-stat-template",l.statDescription=".t3js-clearTables-stat-description",l.statRows=".t3js-clearTables-stat-rows",l.statName=".t3js-clearTables-stat-name"})(t||(t={}));class b extends T{initialize(e){super.initialize(e),this.getStats(),new g("click",r=>{r.preventDefault(),e.querySelector(t.statContainer).innerHTML="",this.getStats()}).delegateTo(e,t.statsTrigger),new g("click",(r,s)=>{const a=s.closest(t.clearTrigger).dataset.table;r.preventDefault(),this.clear(a)}).delegateTo(e,t.clearTrigger)}getStats(){this.setModalButtonsState(!1);const e=this.getModalBody();new u(n.getUrl("clearTablesStats")).get({cache:"no-cache"}).then(async r=>{const s=await r.resolve();s.success===!0?(e.innerHTML=s.html,h.setButtons(s.buttons),Array.isArray(s.stats)&&s.stats.length>0&&s.stats.forEach(a=>{if(a.rowCount>0){const o=e.querySelector(t.statTemplate).content.cloneNode(!0);o.querySelector(t.statDescription).innerText=a.description,o.querySelector(t.statName).innerText=a.name,o.querySelector(t.statRows).innerText=a.rowCount,o.querySelector(t.clearTrigger).setAttribute("data-table",a.name),e.querySelector(t.statContainer).append(o)}})):c.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},r=>{n.handleAjaxError(r,e)}).finally(()=>{this.setModalButtonsState(!0)})}clear(e){const r=this.getModalBody(),s=this.getModuleContent().dataset.clearTablesClearToken;new u(n.getUrl()).post({install:{action:"clearTablesClear",token:s,table:e}}).then(async a=>{const o=await a.resolve();o.success===!0&&Array.isArray(o.status)?o.status.forEach(i=>{c.success(i.title,i.message)}):c.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log."),this.getStats()},a=>{n.handleAjaxError(a,r)})}}var d=new b;export{d 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{AbstractInteractableModule as g}from"@typo3/install/module/abstract-interactable-module.js";import y from"@typo3/backend/modal.js";import c from"@typo3/backend/notification.js";import u from"@typo3/core/ajax/ajax-request.js";import n from"@typo3/install/router.js";import p from"@typo3/core/event/regular-event.js";var a;(function(l){l.deleteTrigger=".t3js-clearTypo3temp-delete",l.statContainer=".t3js-clearTypo3temp-stat-container",l.statsTrigger=".t3js-clearTypo3temp-stats",l.statTemplate="#t3js-clearTypo3temp-stat-template",l.statNumberOfFiles=".t3js-clearTypo3temp-stat-numberOfFiles",l.statDirectory=".t3js-clearTypo3temp-stat-directory"})(a||(a={}));class m extends g{initialize(t){super.initialize(t),this.getStats(),new p("click",o=>{o.preventDefault(),t.querySelector(a.statContainer).innerHTML="",this.getStats()}).delegateTo(t,a.statsTrigger),new p("click",(o,e)=>{o.preventDefault();const r=e.dataset.folder,s=e.dataset.storageUid!==void 0?parseInt(e.dataset.storageUid,10):void 0;this.delete(r,s)}).delegateTo(t,a.deleteTrigger)}getStats(){this.setModalButtonsState(!1);const t=this.getModalBody();new u(n.getUrl("clearTypo3tempFilesStats")).get({cache:"no-cache"}).then(async o=>{const e=await o.resolve();e.success===!0?(t.innerHTML=e.html,y.setButtons(e.buttons),Array.isArray(e.stats)&&e.stats.length>0&&e.stats.forEach(r=>{if(r.numberOfFiles>0){const s=t.querySelector(a.statTemplate).content.cloneNode(!0);s.querySelector(a.statNumberOfFiles).innerText=r.numberOfFiles,s.querySelector(a.statDirectory).innerText=r.directory,s.querySelector(a.deleteTrigger).setAttribute("data-folder",r.directory),r.storageUid!==void 0&&s.querySelector(a.deleteTrigger).setAttribute("data-storage-uid",r.storageUid),t.querySelector(a.statContainer).append(s)}})):c.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},o=>{n.handleAjaxError(o,t)}).finally(()=>{this.setModalButtonsState(!0)})}delete(t,o){const e=this.getModalBody(),r=this.getModuleContent().dataset.clearTypo3tempDeleteToken;new u(n.getUrl()).post({install:{action:"clearTypo3tempFiles",token:r,folder:t,storageUid:o}}).then(async s=>{const i=await s.resolve();i.success===!0&&Array.isArray(i.status)?(i.status.forEach(d=>{c.success(d.title,d.message)}),this.getStats()):c.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},s=>{n.handleAjaxError(s,e)})}}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 c from"@typo3/backend/modal.js";import l from"@typo3/backend/notification.js";import u from"@typo3/core/ajax/ajax-request.js";import o from"@typo3/install/router.js";import m from"@typo3/install/module/password-strength.js";import{AbstractInteractableModule as h}from"@typo3/install/module/abstract-interactable-module.js";import p from"@typo3/core/event/regular-event.js";var e;(function(t){t.adminCreateButton=".t3js-createAdmin-create",t.adminUserInput=".t3js-createAdmin-user",t.adminRealNameInput=".t3js-createAdmin-realname",t.adminPasswordInput=".t3js-createAdmin-password",t.adminPasswordCheckInput=".t3js-createAdmin-password-check",t.adminEmailInput=".t3js-createAdmin-email",t.adminSysMaintainterInput=".t3js-createAdmin-system-maintainer"})(e||(e={}));class f extends h{initialize(a){super.initialize(a),this.getData(),new p("click",s=>{s.preventDefault(),this.create()}).delegateTo(a,e.adminCreateButton)}getData(){const a=this.getModalBody();new u(o.getUrl("createAdminGetData")).get({cache:"no-cache"}).then(async s=>{const r=await s.resolve();r.success===!0?(a.innerHTML=r.html,m.initialize(a.querySelector(".t3-install-form-password-strength")),c.setButtons(r.buttons)):l.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},s=>{o.handleAjaxError(s,a)})}create(){this.setModalButtonsState(!1);const a=this.getModalBody(),r={install:{action:"createAdmin",token:this.getModuleContent().dataset.createAdminToken,userName:this.findInModal(e.adminUserInput).value,userPassword:this.findInModal(e.adminPasswordInput).value,userPasswordCheck:this.findInModal(e.adminPasswordCheckInput).value,userEmail:this.findInModal(e.adminEmailInput).value,realName:this.findInModal(e.adminRealNameInput).value,userSystemMaintainer:this.findInModal(e.adminSysMaintainterInput).checked?1:0}};this.getModuleContent().querySelectorAll("input").forEach(n=>{n.disabled=!0}),new u(o.getUrl()).post(r).then(async n=>{const i=await n.resolve();i.success===!0&&Array.isArray(i.status)?(i.status.forEach(d=>{l.showMessage(d.title,d.message,d.severity)}),i.userCreated&&(this.findInModal(e.adminUserInput).value="",this.findInModal(e.adminPasswordInput).value="",this.findInModal(e.adminPasswordCheckInput).value="",this.findInModal(e.adminEmailInput).value="",this.findInModal(e.adminSysMaintainterInput).checked=!1)):l.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},n=>{o.handleAjaxError(n,a)}).finally(()=>{this.setModalButtonsState(!0),this.getModuleContent().querySelectorAll("input").forEach(n=>{n.disabled=!1})})}}var w=new f;export{w as default};
@@ -0,0 +1,27 @@
/*
* 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 f}from"@typo3/install/module/abstract-interactable-module.js";import z from"@typo3/backend/modal.js";import p from"@typo3/backend/notification.js";import k from"@typo3/core/ajax/ajax-request.js";import{InfoBox as A}from"@typo3/install/renderable/info-box.js";import S from"@typo3/install/renderable/severity.js";import d from"@typo3/install/router.js";import h from"@typo3/core/event/regular-event.js";import x from"@typo3/core/security-utility.js";var e;(function(t){t.analyzeTrigger=".t3js-databaseAnalyzer-analyze",t.executeTrigger=".t3js-databaseAnalyzer-execute",t.outputContainer=".t3js-databaseAnalyzer-output",t.notificationContainer=".t3js-databaseAnalyzer-notification",t.suggestionBlock="#t3js-databaseAnalyzer-suggestion-block",t.suggestionBlockCheckbox=".t3js-databaseAnalyzer-suggestion-block-checkbox",t.suggestionBlockLegend=".t3js-databaseAnalyzer-suggestion-block-legend",t.suggestionBlockLabel=".t3js-databaseAnalyzer-suggestion-block-label",t.suggestionList=".t3js-databaseAnalyzer-suggestion-list",t.suggestionLineTemplate="#t3js-databaseAnalyzer-suggestion-line-template",t.suggestionLineCheckbox=".t3js-databaseAnalyzer-suggestion-line-checkbox",t.suggestionLineLabel=".t3js-databaseAnalyzer-suggestion-line-label",t.suggestionLineStatement=".t3js-databaseAnalyzer-suggestion-line-statement",t.suggestionLineCurrent=".t3js-databaseAnalyzer-suggestion-line-current",t.suggestionLineCurrentValue=".t3js-databaseAnalyzer-suggestion-line-current-value",t.suggestionLineCount=".t3js-databaseAnalyzer-suggestion-line-count",t.suggestionLineCountValue=".t3js-databaseAnalyzer-suggestion-line-count-value"})(e||(e={}));class q extends f{initialize(s){super.initialize(s),this.loadModuleFrameAgnostic("@typo3/install/renderable/info-box.js").then(()=>{this.getData()}),new h("click",(a,r)=>{r.closest("fieldset").querySelectorAll('input[type="checkbox"]').forEach(c=>{c.checked=r.checked})}).delegateTo(s,e.suggestionBlockCheckbox),new h("click",a=>{a.preventDefault(),this.clearNotifications(),this.analyze()}).delegateTo(s,e.analyzeTrigger),new h("click",a=>{a.preventDefault(),this.clearNotifications(),this.execute()}).delegateTo(s,e.executeTrigger)}getData(){const s=this.getModalBody();new k(d.getUrl("databaseAnalyzer")).get({cache:"no-cache"}).then(async a=>{const r=await a.resolve();r.success===!0?(s.innerHTML=r.html,z.setButtons(r.buttons),this.analyze()):p.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},a=>{d.handleAjaxError(a,s)})}analyze(){this.setModalButtonsState(!1);const s=this.getModalBody(),a=s.querySelector(e.outputContainer),r=this.renderProgressBar(a,{label:"Analyzing current database schema..."});new h("change",()=>{const c=a.querySelectorAll(":checked").length>0;this.setModalButtonState(this.getModalFooter().querySelector(e.executeTrigger),c)}).delegateTo(a,'input[type="checkbox"]'),new k(d.getUrl("databaseAnalyzerAnalyze")).get({cache:"no-cache"}).then(async c=>{const l=await c.resolve();l.success===!0?(Array.isArray(l.status)&&(r.remove(),l.status.forEach(o=>{a.append(A.create(o.severity,o.title,o.message))})),Array.isArray(l.suggestions)&&(l.suggestions.forEach(o=>{const u=s.querySelector(e.suggestionBlock).content.cloneNode(!0),g=o.key;u.querySelector(e.suggestionBlockLegend).innerText=o.label,u.querySelector(e.suggestionBlockCheckbox).setAttribute("id","t3-install-"+g+"-checkbox"),o.enabled&&u.querySelector(e.suggestionBlockCheckbox).setAttribute("checked","checked"),u.querySelector(e.suggestionBlockLabel).setAttribute("for","t3-install-"+g+"-checkbox"),o.children.forEach(n=>{const i=s.querySelector(e.suggestionLineTemplate).content.cloneNode(!0),y=n.hash,b=i.querySelector(e.suggestionLineCheckbox);b.setAttribute("id","t3-install-db-"+y),b.setAttribute("data-hash",y),o.enabled&&b.setAttribute("checked","checked"),i.querySelector(e.suggestionLineLabel).setAttribute("for","t3-install-db-"+y),i.querySelector(e.suggestionLineStatement).innerText=n.statement,typeof n.current<"u"&&(i.querySelector(e.suggestionLineCurrentValue).innerText=n.current,i.querySelector(e.suggestionLineCurrent).style.display="inline"),typeof n.rowCount<"u"&&(i.querySelector(e.suggestionLineCountValue).innerText=n.rowCount,i.querySelector(e.suggestionLineCount).style.display="inline"),u.querySelector(e.suggestionList).append(i)}),a.append(u)}),this.setModalButtonState(this.getModalFooter().querySelector(e.analyzeTrigger),!0),this.setModalButtonState(this.getModalFooter().querySelector(e.executeTrigger),a.querySelectorAll(":checked").length>0)),l.suggestions.length===0&&l.status.length===0&&a.append(A.create(S.ok,"Database schema is up to date. Good job!"))):(p.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log."),this.setModalButtonState(this.getModalFooter().querySelector(e.analyzeTrigger),!0),this.setModalButtonState(this.getModalFooter().queryLine truncated
<div class="alert-inner">
<div class="alert-icon">
<span class="icon-emphasized">
<typo3-backend-icon identifier="actions-close" size="small"></typo3-backend-icon>
</span>
</div>
<div class="alert-content">
<div class="alert-title">Database update failed</div>
<div class="alert-message">
<ul>${g}</ul>
</div>
</div>
</div>
</div>`)}this.analyze()},o=>{d.handleAjaxError(o,s)}).finally(()=>{this.setModalButtonState(this.getModalFooter().querySelector(e.analyzeTrigger),!0),this.setModalButtonState(this.getModalFooter().querySelector(e.executeTrigger),!1)})}clearNotifications(){this.currentModal.querySelector(e.notificationContainer).replaceChildren("")}}var C=new q;export{C 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 t from"@typo3/backend/notification.js";import r from"@typo3/core/ajax/ajax-request.js";import n from"@typo3/install/router.js";import{AbstractInlineModule as u}from"@typo3/install/module/abstract-inline-module.js";class i extends u{initialize(s){this.setButtonState(s,!1),new r(n.getUrl("dumpAutoload")).get({cache:"no-cache"}).then(async o=>{const e=await o.resolve();e.success===!0&&Array.isArray(e.status)?e.status.length>0&&e.status.forEach(a=>{t.success(a.message)}):t.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},()=>{t.error("Autoloader not dumped","Dumping autoload files failed for unknown reasons. Check the system for broken extensions and try again.")}).finally(()=>{this.setButtonState(s,!0)})}}var l=new i;export{l 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 m}from"@typo3/install/module/abstract-interactable-module.js";import f from"@typo3/core/ajax/ajax-request.js";import{FlashMessage as v}from"@typo3/install/renderable/flash-message.js";import{InfoBox as h}from"@typo3/install/renderable/info-box.js";import"@typo3/install/renderable/language-packs.js";import k from"@typo3/install/renderable/severity.js";import d from"@typo3/install/router.js";var c;(function(U){U.outputContainer=".t3js-languagePacks-output",U.contentContainer=".t3js-languagePacks-mainContent",U.notifications=".t3js-languagePacks-notifications"})(c||(c={}));class r extends m{constructor(){super(...arguments),this.activeLanguages=[],this.activeExtensions=[],this.packsUpdateDetails={toHandle:0,handled:0,updated:0,new:0,failed:0,skipped:0},this.notifications=[]}static pluralize(t,a="pack",i="s",n=0){return t!==1&&n!==1?a+i:a}initialize(t){super.initialize(t),Promise.all([this.loadModuleFrameAgnostic("@typo3/install/renderable/info-box.js"),this.loadModuleFrameAgnostic("@typo3/install/renderable/flash-message.js"),this.loadModuleFrameAgnostic("@typo3/install/renderable/language-packs.js")]).then(()=>{this.getData()})}getData(){const t=this.getModalBody();new f(d.getUrl("languagePacksGetData")).get({cache:"no-cache"}).then(async a=>{const i=await a.resolve(),{success:n,html:e,...s}=i;if(n===!0){this.activeLanguages=i.activeLanguages,this.activeExtensions=i.activeExtensions,t.innerHTML=e;const p=t.parentElement.querySelector(c.contentContainer);p.innerHTML="";const u=window.location!==window.parent.location?parent.document:document,l=u.createElement("typo3-install-language-matrix");l.data=s,this.getModuleContent().dataset.configurationIsWritable==="true"&&l.setAttribute("configurationIsWritable",""),l.addEventListener("activate-language",o=>{this.activateLanguage(o.detail.iso)}),l.addEventListener("deactivate-language",o=>{this.deactivateLanguage(o.detail.iso)}),l.addEventListener("download-packs",o=>{this.updatePacks(o.detail?.iso||void 0,void 0)});const g=u.createElement("typo3-install-extension-matrix");g.data=s,g.addEventListener("download-packs",o=>{this.updatePacks(o.detail?.iso||void 0,o.detail?.extension||void 0)}),p.append(l,g)}else this.addNotification(h.create(k.error,"Something went wrong"));this.renderNotifications()},a=>{d.handleAjaxError(a,t)})}activateLanguage(t){const a=this.getModalBody(),i=this.findInModal(c.outputContainer);this.renderProgressBar(i),this.getNotificationBox().innerHTML="",new f(d.getUrl()).post({install:{action:"languagePacksActivateLanguage",token:this.getModuleContent().dataset.languagePacksActivateLanguageToken,iso:t}}).then(async n=>{const e=await n.resolve();i.innerHTML="",e.success===!0&&Array.isArray(e.status)?e.status.forEach(s=>{this.addNotification(h.create(s.severity,s.title,s.message))}):this.addNotification(h.create(k.error,"Something went wrong")),this.getData()},n=>{d.handleAjaxError(n,a)})}deactivateLanguage(t){const a=this.getModalBody(),i=this.findInModal(c.outputContainer);this.renderProgressBar(i),this.getNotificationBox().innerHTML="",new f(d.getUrl()).post({install:{action:"languagePacksDeactivateLanguage",token:this.getModuleContent().dataset.languagePacksDeactivateLanguageToken,iso:t}}).then(async n=>{const e=await n.resolve();i.innerHTML="",e.success===!0&&Array.isArray(e.status)?e.status.forEach(s=>{this.addNotification(h.create(s.severity,s.title,s.message))}):this.addNotification(h.create(k.error,"Something went wrong")),this.getData()},n=>{d.handleAjaxError(n,a)})}updatePacks(t,a){const i=this.findInModal(c.outputContainer),n=this.findInModal(c.contentContainer),e=t===void 0?this.activeLanguages:[t];let s=!0,p=this.activeExtensions;a!==void 0&&(p=[a],s=!1),this.packsUpdateDetails={toHandle:e.length*p.length,handled:0,updated:0,new:0,failed:0,skipped:0};const u=this.renderProgressBar(i,this.packsUpdateDetails.toHandle===1?void 0:{value:0,max:this.packsUpdateDetails.toHandle,label:"0 of "+this.packsUpdateDetails.toHandle+" language "+r.pluralize(this.packsUpdateDetails.toHandle)+" updated"});n.innerHTML="",e.forEach(l=>{p.forEach(g=>{this.getNotificationBox().innerHTML="",new f(d.getUrl()).post({install:{action:"languagePacksUpdatePack",token:this.getModuleContent().dataset.languagePacksUpdatePackToken,iso:l,extension:g}}).then(async o=>{const D=await o.resolve();D.success===!0?(this.packsUpdateDetails.handled++,D.packResult==="new"?this.packsUpdateDetails.new++:D.packResult==="update"?this.packsUpdateDetails.updated++:D.packResult==="skipped"?this.packsUpdateDetails.skipped++:this.packsUpdateDetails.failed++,this.packUpdateDone(s,e,u)):(this.packsUpdateDetails.handled++,this.packsUpdateDetails.failed++,this.packUpdateDone(s,e,u))},()=>{this.packsUpdateDetails.handled++,this.packsUpdateDetails.failed++,this.packUpdateDone(s,e,u)})})})}packUpdateDone(t,a,i){const n=this.getModalBody();this.packsUpdateDetails.handled===this.packsUpdateDetails.toHandle?(this.addNotification(h.create(k.oLine truncated
@@ -0,0 +1,25 @@
/*
* 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 v}from"@typo3/install/module/abstract-interactable-module.js";import I from"@typo3/backend/modal.js";import k from"@typo3/backend/notification.js";import d from"@typo3/core/ajax/ajax-request.js";import a from"@typo3/install/router.js";import u from"@typo3/core/event/regular-event.js";import"@typo3/backend/element/icon-element.js";var o;(function(r){r.checkButton=".t3js-referenceIndex-check",r.updateButton=".t3js-referenceIndex-update",r.resultContainer=".t3js-referenceIndex-result"})(o||(o={}));class y extends v{initialize(t){super.initialize(t),this.loadContent(),new u("click",e=>{e.preventDefault(),this.check()}).delegateTo(t,o.checkButton),new u("click",e=>{e.preventDefault(),this.update()}).delegateTo(t,o.updateButton)}loadContent(){const t=this.getModalBody();new d(a.getUrl("referenceIndex")).get({cache:"no-cache"}).then(async e=>{const n=await e.resolve();n.success===!0&&n.html!==void 0&&(t.innerHTML=n.html,n.buttons!==void 0&&I.setButtons(n.buttons))},e=>{a.handleAjaxError(e,t)})}check(){this.processReferenceIndex(!0)}update(){this.processReferenceIndex(!1)}processReferenceIndex(t){this.setModalButtonsState(!1);const e=this.getModalBody(),n=e.querySelector(o.resultContainer),f=this.renderProgressBar(n,{label:t?"Checking reference index...":"Updating reference index..."});new d(a.getUrl()).post({install:{action:"referenceIndexUpdate",token:this.getModuleContent().dataset.referenceIndexToken,checkOnly:t?"1":"0"}}).then(async l=>{const s=await l.resolve();if(f.remove(),s.success===!0&&s.result&&n){const c=s.result.errors&&s.result.errors.length>0,h=c?"warning":"success",p=c?"actions-exclamation":"actions-check",m=s.result.resultText||(c?"Issues Found":"Reference index is up to date");let i="";c?i=`<ul class="list-unstyled">${s.result.errors.map(g=>`<li>${g}</li>`).join("")}</ul>`:i="Index integrity is perfect.";const x=`
<div class="callout callout-${h}">
<div class="callout-icon">
<span class="icon-emphasized">
<typo3-backend-icon identifier="${p}" size="small"></typo3-backend-icon>
</span>
</div>
<div class="callout-content">
<div class="callout-title">${m}</div>
<div class="callout-body">${i}</div>
</div>
</div>
`;n.innerHTML=x}else k.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},l=>{a.handleAjaxError(l,e)}).finally(()=>{this.setModalButtonsState(!0)})}}var w=new y;export{w 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 o from"@typo3/core/ajax/ajax-request.js";import{AbstractInlineModule as n}from"@typo3/install/module/abstract-inline-module.js";import s from"@typo3/backend/notification.js";import c from"@typo3/install/router.js";class i extends n{initialize(t){this.setButtonState(t,!1),new o(c.getUrl("resetBackendUserUc")).get({cache:"no-cache"}).then(async a=>{const e=await a.resolve();e.success===!0&&Array.isArray(e.status)?e.status.length>0&&e.status.forEach(r=>{s.success(r.title,r.message)}):s.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},()=>{s.error("Reset preferences of all backend users failed","Resetting preferences of all backend users failed for an unknown reason. Please check your server's logs for further investigation.")}).finally(()=>{this.setButtonState(t,!0)})}}var l=new i;export{l 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 r from"@typo3/core/event/regular-event.js";class o{initialize(s){new r("keyup",a=>{const e=a.target;this.checkPassword(e)}).bindTo(s),new r("blur",a=>{a.target.classList.remove("has-error","has-success","has-warning")}).bindTo(s),new r("focus",a=>{const e=a.target;this.checkPassword(e)}).bindTo(s)}checkPassword(s){const a=s.value,e=new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$","g"),t=new RegExp("^(?=.{8,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$","g"),c=new RegExp("(?=.{8,}).*","g");s.classList.remove("has-error","has-success","has-warning"),a.length===0?s.classList.add("has-error"):c.test(a)?e.test(a)?s.classList.add("has-success"):(t.test(a),s.classList.add("has-warning")):s.classList.add("has-error")}}var n=new o;export{n 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 d from"@typo3/backend/modal.js";import l from"@typo3/backend/notification.js";import c from"@typo3/core/ajax/ajax-request.js";import o from"@typo3/install/router.js";import h from"@typo3/install/module/password-strength.js";import{AbstractInteractableModule as g}from"@typo3/install/module/abstract-interactable-module.js";import u from"@typo3/core/event/regular-event.js";var r;(function(i){i.changeButton=".t3js-changeInstallToolPassword-change"})(r||(r={}));class w extends g{initialize(s){super.initialize(s),this.getData(),new u("click",t=>{t.preventDefault(),this.change()}).delegateTo(s,r.changeButton)}getData(){const s=this.getModalBody();new c(o.getUrl("changeInstallToolPasswordGetData")).get({cache:"no-cache"}).then(async t=>{const e=await t.resolve();e.success===!0?(s.innerHTML=e.html,h.initialize(s.querySelector(".t3-install-form-password-strength")),d.setButtons(e.buttons)):l.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},t=>{o.handleAjaxError(t,s)})}change(){this.setModalButtonsState(!1);const s=this.getModalBody(),t=this.getModuleContent().dataset.installToolToken;new c(o.getUrl()).post({install:{action:"changeInstallToolPassword",token:t,password:this.findInModal(".t3js-changeInstallToolPassword-password").value,passwordCheck:this.findInModal(".t3js-changeInstallToolPassword-password-check").value}}).then(async e=>{const a=await e.resolve();a.success===!0&&Array.isArray(a.status)?a.status.forEach(n=>{l.showMessage(n.title,n.message,n.severity)}):l.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},e=>{o.handleAjaxError(e,s)}).finally(()=>{this.findInModal(".t3js-changeInstallToolPassword-password").value="",this.findInModal(".t3js-changeInstallToolPassword-password-check").value="",this.setModalButtonsState(!0)})}}var f=new w;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 h}from"bootstrap";import"@typo3/install/renderable/wrap-group.js";import"@typo3/install/renderable/offset-group.js";import{AbstractInteractableModule as w}from"@typo3/install/module/abstract-interactable-module.js";import g from"@typo3/backend/module-menu.js";import u from"@typo3/backend/notification.js";import p from"@typo3/core/ajax/ajax-request.js";import l from"@typo3/install/router.js";import{topLevelModuleImport as f}from"@typo3/backend/utility/top-level-module-import.js";import c from"@typo3/core/event/regular-event.js";import y from"@typo3/core/event/debounce-event.js";var n;(function(d){d.formListener=".t3js-extensionConfiguration-form",d.searchInput=".t3js-extensionConfiguration-search"})(n||(n={}));class m extends w{initialize(o){super.initialize(o),this.getContent(),new c("keydown",e=>{const t=o.querySelector(n.searchInput);(e.ctrlKey||e.metaKey)&&(e.key==="f"||e.key==="F")&&(e.preventDefault(),t.focus())}).bindTo(o),new y("input",(e,t)=>{const a=t.value;this.search(a)},100).delegateTo(o,n.searchInput),new c("change",(e,t)=>{const a=t.value;this.search(a)}).delegateTo(o,n.searchInput),new c("submit",(e,t)=>{e.preventDefault(),this.write(t)}).delegateTo(o,n.formListener)}search(o){this.currentModal.querySelectorAll(".search-item").forEach(e=>{o===""||e.textContent.toLowerCase().trim().includes(o.toLowerCase())?(e.classList.add("searchhit"),e.classList.remove("hidden")):(e.classList.remove("searchhit"),e.classList.add("hidden"))}),this.currentModal.querySelectorAll(".searchhit").forEach(e=>{h.getOrCreateInstance(e).show()})}getContent(){const o=this.getModalBody();new p(l.getUrl("extensionConfigurationGetContent")).get({cache:"no-cache"}).then(async e=>{const t=await e.resolve();t.success===!0&&(o.innerHTML=t.html,this.initializeWrap(),this.initializeColorPicker())},e=>{l.handleAjaxError(e,o)})}initializeColorPicker(){window.location!==window.parent.location?f("@typo3/backend/color-picker.js"):import("@typo3/backend/color-picker.js")}write(o){const e=this.getModalBody(),t=this.getModuleContent().dataset.extensionConfigurationWriteToken,a={};for(const[i,s]of new FormData(o))a[i]=s.toString();new p(l.getUrl()).post({install:{token:t,action:"extensionConfigurationWrite",extensionKey:o.dataset.extensionKey,extensionConfiguration:a}}).then(async i=>{const s=await i.resolve();s.success===!0&&Array.isArray(s.status)?(s.status.forEach(r=>{u.showMessage(r.title,r.message,r.severity)}),document.body.dataset.context==="backend"&&g.App.refreshMenu()):u.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},i=>{l.handleAjaxError(i,e)})}initializeWrap(){window.location!==window.parent.location&&(f("@typo3/install/renderable/wrap-group.js"),f("@typo3/install/renderable/offset-group.js")),this.currentModal.querySelectorAll(".t3js-emconf-offset").forEach(e=>{const t=e.parentElement;e.setAttribute("data-offsetfield-x","#"+e.id+"_offset_x"),e.setAttribute("data-offsetfield-y","#"+e.id+"_offset_y"),e.classList.add("hidden");const a=t.ownerDocument.createElement("typo3-install-offset-group");a.offsetId=e.id,a.values=e.value.split(","),t.appendChild(a),new c("keyup",(i,s)=>{const r=t.querySelector(s.dataset.target);r.value=t.querySelector(r.dataset.offsetfieldX).value+","+t.querySelector(r.dataset.offsetfieldY).value}).delegateTo(t,".t3js-emconf-offsetfield")}),this.currentModal.querySelectorAll(".t3js-emconf-wrap").forEach(e=>{const t=e.parentElement;e.setAttribute("data-wrapfield-start","#"+e.id+"_wrap_start"),e.setAttribute("data-wrapfield-end","#"+e.id+"_wrap_end"),e.classList.add("hidden");const a=t.ownerDocument.createElement("typo3-install-wrap-group");a.wrapId=e.id,a.values=e.value.split("|"),t.appendChild(a),new c("keyup",(i,s)=>{const r=t.querySelector(s.dataset.target);r.value=t.querySelector(r.dataset.wrapfieldStart).value+"|"+t.querySelector(r.dataset.wrapfieldEnd).value}).delegateTo(t,".t3js-emconf-wrapfield")})}}var v=new m;export{v 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{AbstractInteractableModule as h}from"@typo3/install/module/abstract-interactable-module.js";import d from"@typo3/backend/modal.js";import i from"@typo3/backend/notification.js";import u from"@typo3/core/ajax/ajax-request.js";import n from"@typo3/install/router.js";import g from"@typo3/core/event/regular-event.js";var l;(function(c){c.saveTrigger=".t3js-features-save"})(l||(l={}));class m extends h{initialize(t){super.initialize(t),this.getContent(),new g("click",s=>{s.preventDefault(),this.save()}).delegateTo(t,l.saveTrigger)}getContent(){const t=this.getModalBody();new u(n.getUrl("featuresGetContent")).get({cache:"no-cache"}).then(async s=>{const e=await s.resolve();e.success===!0&&e.html!=="undefined"&&e.html.length>0?(t.innerHTML=e.html,d.setButtons(e.buttons)):i.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},s=>{n.handleAjaxError(s,t)})}save(){this.setModalButtonsState(!1);const t=this.getModalBody(),s=this.getModuleContent().dataset.featuresSaveToken,e={},f=new FormData(this.findInModal("form"));for(const[o,a]of f)e[o]=a.toString();e["install[action]"]="featuresSave",e["install[token]"]=s,new u(n.getUrl()).post(e).then(async o=>{const a=await o.resolve();a.success===!0&&Array.isArray(a.status)?(a.status.forEach(r=>{i.showMessage(r.title,r.message,r.severity)}),this.getContent()):i.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},o=>{n.handleAjaxError(o,t)}).finally(()=>{this.setModalButtonsState(!0)})}}var w=new m;export{w 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 w}from"bootstrap";import{AbstractInteractableModule as A}from"@typo3/install/module/abstract-interactable-module.js";import C from"@typo3/backend/modal.js";import m from"@typo3/backend/notification.js";import v from"@typo3/core/ajax/ajax-request.js";import h from"@typo3/install/router.js";import f from"@typo3/core/event/regular-event.js";var l;(function(n){n.item=".t3js-localConfiguration-item",n.toggleAllTrigger=".t3js-localConfiguration-toggleAll",n.writeTrigger=".t3js-localConfiguration-write",n.searchTrigger=".t3js-localConfiguration-search",n.createRowTrigger=".t3js-localConfiguration-createRow",n.removeRowTrigger=".t3js-localConfiguration-removeRow",n.configurationItem=".t3js-localConfiguration-configuration-item"})(l||(l={}));class T extends A{constructor(){super(...arguments),this.toggleAll=!1}initialize(r){super.initialize(r),this.getContent(),new f("click",e=>{e.preventDefault(),this.write()}).delegateTo(r,l.writeTrigger),new f("click",()=>{const e=this.getModalBody(),o=e.querySelectorAll(".panel-collapse");this.toggleAll=!this.toggleAll;const a=this.toggleAll?"show":"hide";o.forEach(i=>{const t=e.querySelector(`[data-bs-target="#${i.id}"]`);t&&t.classList.toggle("collapsed",!this.toggleAll),w.getOrCreateInstance(i)[a]()})}).delegateTo(r,l.toggleAllTrigger),new f("keydown",e=>{const o=r.querySelector(l.searchTrigger);(e.ctrlKey||e.metaKey)&&(e.key==="f"||e.key==="F")&&(e.preventDefault(),o.focus())}).bindTo(r),new f("input",(e,o)=>{const a=o.value;this.search(a)}).delegateTo(r,l.searchTrigger),new f("change",(e,o)=>{const a=o.value;this.search(a)}).delegateTo(r,l.searchTrigger),new f("click",(e,o)=>{e.preventDefault(),o.closest(l.configurationItem)?.remove()}).delegateTo(r,l.removeRowTrigger),new f("click",(e,o)=>{e.preventDefault();const a=o.closest(".t3js-configuration-list");if(a===null)return;const i=g=>{const c=a.querySelectorAll(g);return c.item(c.length-1)},t=a.querySelectorAll(l.configurationItem);for(const g of t){const c=g.querySelectorAll('input[type="text"]');let d,p;if(a.dataset.type==="map")d=c.item(0).value.trim(),p=c.item(1).value.trim();else if(a.dataset.type==="element-list")d=void 0,p=c[0].value.trim();else return;if(d===""||p===""){for(const y of c)if(y.value===""){y.focus();return}}}const s=a.querySelector("#"+a.dataset.namespace).content.cloneNode(!0);a.querySelector(".configuration-map-item-collection").append(s),i(l.configurationItem).querySelector('input[type="text"]')?.focus()}).delegateTo(r,l.createRowTrigger)}search(r){this.currentModal.querySelectorAll(l.item).forEach(e=>{e.textContent.toLowerCase().trim().includes(r.toLowerCase())?(e.classList.remove("hidden"),e.classList.add("searchhit")):(e.classList.remove("searchhit"),e.classList.add("hidden"))}),this.currentModal.querySelectorAll(".searchhit").forEach(e=>{const o=e.closest(".panel-collapse");w.getOrCreateInstance(o).show()})}getContent(){const r=this.getModalBody();new v(h.getUrl("localConfigurationGetContent")).get({cache:"no-cache"}).then(async e=>{const o=await e.resolve();o.success===!0&&(r.innerHTML=o.html,C.setButtons(o.buttons))},e=>{h.handleAjaxError(e,r)})}write(){this.setModalButtonsState(!1);const r=this.getModalBody(),e=this.getModuleContent().dataset.localConfigurationWriteToken,o={},a={},i={};this.currentModal.querySelectorAll(".t3js-localConfiguration-pathValue").forEach(t=>{if(t.type==="checkbox")t.checked?o[t.dataset.path]="1":o[t.dataset.path]="0";else if(t.dataset.valuetype==="map"||t.dataset.valuetype==="element-list"){if(t.dataset.path.includes("/key[]")&&t.value!==""){const s=t.dataset.path.replace("/key[]","");a[s]===void 0&&(a[s]=[]),a[s].push(t.value)}else if(t.dataset.path.includes("/value[]")&&t.value!==""){const s=t.dataset.path.replace("/value[]","");i[s]===void 0&&(i[s]=[]),i[s].push(t.value)}}else o[t.dataset.path]=t.value});for(const t in i)if(Object.prototype.hasOwnProperty.call(i,t)){o[t]===void 0&&(o[t]={});const s=o[t];i[t].forEach((u,g)=>{if(u!=="")if(a[t]&&a[t][g]!==void 0&&a[t][g]!==""){const c=a[t][g];s[c]=u}else s[g]=u})}new v(h.getUrl()).post({install:{action:"localConfigurationWrite",token:e,configurationValues:o}}).then(async t=>{const s=await t.resolve();s.success===!0&&Array.isArray(s.status)?s.status.forEach(u=>{m.showMessage(u.title,u.message,u.severity)}):m.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},t=>{h.handleAjaxError(t,r)}).finally(()=>{this.setModalButtonsState(!0)})}}var S=new T;export{S 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 d}from"@typo3/install/module/abstract-interactable-module.js";import m from"@typo3/backend/modal.js";import c from"@typo3/backend/notification.js";import u from"@typo3/core/ajax/ajax-request.js";import o from"@typo3/install/router.js";import h from"@typo3/core/event/regular-event.js";var l;(function(i){i.activateTrigger=".t3js-presets-activate",i.imageExecutable=".t3js-presets-image-executable",i.imageExecutableTrigger=".t3js-presets-image-executable-trigger"})(l||(l={}));class p extends d{initialize(t){super.initialize(t),this.getContent(),new h("click",s=>{s.preventDefault(),this.getCustomImagePathContent()}).delegateTo(t,l.imageExecutableTrigger),new h("click",s=>{s.preventDefault(),this.activate()}).delegateTo(t,l.activateTrigger),t.querySelectorAll(".t3js-custom-preset").forEach(s=>{new h("input",(e,a)=>{t.querySelector(`#${a.dataset.radio}`).checked=!0}).delegateTo(s,".t3js-custom-preset")})}getContent(){const t=this.getModalBody();new u(o.getUrl("presetsGetContent")).get({cache:"no-cache"}).then(async s=>{const e=await s.resolve();e.success===!0&&e.html!=="undefined"&&e.html.length>0?(t.innerHTML=e.html,m.setButtons(e.buttons)):c.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},s=>{o.handleAjaxError(s,t)})}getCustomImagePathContent(){const t=this.getModalBody(),s=this.getModuleContent().dataset.presetsContentToken;new u(o.getUrl()).post({install:{token:s,action:"presetsGetContent",values:{Image:{additionalSearchPath:this.findInModal(l.imageExecutable).value}}}}).then(async e=>{const a=await e.resolve();a.success===!0&&a.html!=="undefined"&&a.html.length>0?t.innerHTML=a.html:c.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},e=>{o.handleAjaxError(e,t)})}activate(){this.setModalButtonsState(!1);const t=this.getModalBody(),s=this.getModuleContent().dataset.presetsActivateToken,e={},a=new FormData(this.findInModal("form"));for(const[n,r]of a)e[n]=r.toString();e["install[action]"]="presetsActivate",e["install[token]"]=s,new u(o.getUrl()).post(e).then(async n=>{const r=await n.resolve();r.success===!0&&Array.isArray(r.status)?r.status.forEach(g=>{c.showMessage(g.title,g.message,g.severity)}):c.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},n=>{o.handleAjaxError(n,t)}).finally(()=>{this.setModalButtonsState(!0)})}}var f=new p;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"bootstrap";import{AbstractInteractableModule as d}from"@typo3/install/module/abstract-interactable-module.js";import m from"@typo3/backend/modal.js";import c from"@typo3/backend/notification.js";import u from"@typo3/core/ajax/ajax-request.js";import a from"@typo3/install/router.js";import h from"@typo3/core/event/regular-event.js";var r;(function(i){i.writeTrigger=".t3js-systemMaintainer-write",i.selectPureField=".t3js-systemMaintainer-select-pure"})(r||(r={}));class g extends d{initialize(e){super.initialize(e),this.loadModuleFrameAgnostic("select-pure").then(()=>{this.getList()}),new h("click",t=>{t.preventDefault(),this.write()}).delegateTo(e,r.writeTrigger)}getList(){const e=this.getModalBody();new u(a.getUrl("systemMaintainerGetList")).get({cache:"no-cache"}).then(async t=>{const s=await t.resolve();s.success===!0&&(e.innerHTML=s.html,m.setButtons(s.buttons))},t=>{a.handleAjaxError(t,e)})}write(){this.setModalButtonsState(!1);const e=this.getModalBody(),t=this.getModuleContent().dataset.systemMaintainerWriteToken,s=this.findInModal(r.selectPureField).values;new u(a.getUrl()).post({install:{users:s,token:t,action:"systemMaintainerWrite"}}).then(async n=>{const o=await n.resolve();o.success===!0?Array.isArray(o.status)&&o.status.forEach(l=>{c.success(l.title,l.message)}):c.error("Something went wrong","The request was not processed successfully. Please check the browser's console and TYPO3's log.")},n=>{a.handleAjaxError(n,e)}).finally(()=>{this.setModalButtonsState(!0)})}}var f=new g;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{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
@@ -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 f from"@typo3/install/renderable/severity.js";import{property as p,customElement as d}from"lit/decorators.js";import{LitElement as u,nothing as v,html as m}from"lit";var c=function(l,e,o,n){var i=arguments.length,t=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,o):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(l,e,o,n);else for(var a=l.length-1;a>=0;a--)(s=l[a])&&(t=(i<3?s(t):i>3?s(e,o,t):s(e,o))||t);return i>3&&t&&Object.defineProperty(e,o,t),t};let r=class extends u{static create(e,o,n=""){const s=(window.location!==window.parent.location?window.parent.document:document).createElement("typo3-install-flashmessage");return s.severity=e,s.subject=o,n&&(s.content=n),s}createRenderRoot(){return this}render(){let e=v;return this.content&&(e=m`<p class=alert-message>${this.content}</p>`),m`<div class="t3js-message alert alert-${f.getCssClass(this.severity)}"><div class=alert-title>${this.subject}</div>${e}</div>`}};c([p({type:Number})],r.prototype,"severity",void 0),c([p({type:String})],r.prototype,"subject",void 0),c([p({type:String})],r.prototype,"content",void 0),r=c([d("typo3-install-flashmessage")],r);export{r as FlashMessage};
@@ -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 d from"@typo3/install/renderable/severity.js";import{property as f,customElement as u}from"lit/decorators.js";import{LitElement as m,nothing as v,html as p}from"lit";var s=function(l,t,n,i){var c=arguments.length,e=c<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,n):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")e=Reflect.decorate(l,t,n,i);else for(var a=l.length-1;a>=0;a--)(o=l[a])&&(e=(c<3?o(e):c>3?o(t,n,e):o(t,n))||e);return c>3&&e&&Object.defineProperty(t,n,e),e};let r=class extends m{static create(t,n,i=""){const o=(window.location!==window.parent.location?window.parent.document:document).createElement("typo3-install-infobox");return o.severity=t,o.subject=n,i&&(o.content=i),o}createRenderRoot(){return this}render(){let t=v;return this.content&&(t=p`<div class=callout-body>${this.content}</div>`),p`<div class="t3js-infobox callout callout-sm callout-${d.getCssClass(this.severity)}"><div class=callout-content><div class=callout-title>${this.subject}</div>${t}</div></div>`}};s([f({type:Number})],r.prototype,"severity",void 0),s([f({type:String})],r.prototype,"subject",void 0),s([f({type:String})],r.prototype,"content",void 0),r=s([u("typo3-install-infobox")],r);export{r as InfoBox};
@@ -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{property as p,state as f,customElement as b}from"lit/decorators.js";import{LitElement as g,html as a,nothing as u}from"lit";import{classMap as v}from"lit/directives/class-map.js";var d=function(c,t,n,o){var i=arguments.length,e=i<3?t:o===null?o=Object.getOwnPropertyDescriptor(t,n):o,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")e=Reflect.decorate(c,t,n,o);else for(var r=c.length-1;r>=0;r--)(s=c[r])&&(e=(i<3?s(e):i>3?s(t,n,e):s(t,n))||e);return i>3&&e&&Object.defineProperty(t,n,e),e};let l=class extends g{constructor(){super(...arguments),this.configurationIsWritable=!1,this.data=null,this.addLanguagesActive=!1}createRenderRoot(){return this}render(){return a`<div><h2>Active languages</h2><div class=table-fit><table class="table table-striped"><thead><tr><th><div class=btn-group>${this.globalActions()}</div></th><th>Locale</th><th>Dependencies</th><th>Last update</th></tr></thead><tbody>${this.renderLanguages()}</tbody></table></div></div>`}globalActions(){const t={btn:!0,"btn-default":!0,"update-all":!0,disabled:!this.hasActiveLanguages()};return a`${this.configurationIsWritable?a`<button class="btn btn-default t3js-languagePacks-addLanguage-toggle" @click=${()=>this.addLanguagesActive=!this.addLanguagesActive}><typo3-backend-icon identifier=${this.addLanguagesActive?"actions-minus":"actions-plus"} size=small></typo3-backend-icon>Add language</button>`:u} <button class=${v(t)} ?disabled=${!this.hasActiveLanguages()} @click=${()=>this.dispatchEvent(new CustomEvent("download-packs"))}><typo3-backend-icon identifier=actions-download size=small></typo3-backend-icon>Update all</button>`}renderLanguageActions(t){const n=[],{iso:o}=t,i={detail:{iso:o}};return t.active?(this.configurationIsWritable&&n.push(a`<button class="btn btn-default" title=Deactivate @click=${()=>this.dispatchEvent(new CustomEvent("deactivate-language",i))}><typo3-backend-icon identifier=actions-minus size=small></typo3-backend-icon></button>`),n.push(a`<button class="btn btn-default" title="Download language packs" @click=${()=>this.dispatchEvent(new CustomEvent("download-packs",i))}><typo3-backend-icon identifier=actions-download size=small></typo3-backend-icon></button>`)):this.configurationIsWritable&&n.push(a`<button class="btn btn-default" title=Activate @click=${()=>this.dispatchEvent(new CustomEvent("activate-language",i))}><typo3-backend-icon identifier=actions-plus size=small></typo3-backend-icon></button>`),n}renderLanguages(){return this.data.languages.filter(t=>this.addLanguagesActive?!t.active:t.active).map(t=>a`<tr class=${v({"t3-languagePacks-inactive":!t.active})}><td><div class=btn-group>${this.renderLanguageActions(t)}</div><span class=ms-2>${t.name}</span></td><td>${t.iso}</td><td>${t.dependencies.join(", ")}</td><td>${t.lastUpdate===null?"":t.lastUpdate}</td></tr>`)}hasActiveLanguages(){return Array.isArray(this.data.activeLanguages)&&this.data.activeLanguages.length}};d([p({type:Boolean})],l.prototype,"configurationIsWritable",void 0),d([p({type:Object})],l.prototype,"data",void 0),d([f()],l.prototype,"addLanguagesActive",void 0),l=d([b("typo3-install-language-matrix")],l);let h=class extends g{constructor(){super(...arguments),this.data=null}createRenderRoot(){return this}render(){return this.data.extensions.length===0?a`<typo3-install-infobox severity=0 subject="Language packs have been found for every installed extension." content="To download the latest changes, use the refresh button in the list above."></typo3-install-infobox>`:a`<div><h2>Translation status</h2><div class=table-fit><table class="table table-striped"><thead><tr><th>Extension</th><th>Key</th>${this.headerActions()}</tr></thead><tbody>${this.renderExtensions()}</tbody></table></div></div>`}headerActions(){return this.data.activeLanguages.map(t=>a`<th><button class="btn btn-default" title="Download and update all language packs" @click=${()=>this.dispatchEvent(new CustomEvent("download-packs",{detail:{iso:t}}))}><typo3-backend-icon identifier=actions-download size=small></typo3-backend-icon>${t}</button></th>`)}renderExtensions(){return this.data.extensions.map(t=>a`<tr><td>${t.icon?a`<img src=${t.icon} alt=${t.title} style=max-height:16px;max-width:16px>`:u} ${t.title}</td><td>${t.key}</td>${this.renderExtensionActions(t)}</tr>`)}renderExtensionActions(t){const n=[];return this.data.activeLanguages.forEach(o=>{let i=u;t.packs.forEach(e=>{if(e.iso!==o)return;let s;e.exists!==!0?e.lastUpdate!==null?s="No language pack available for "+e.iso+" when tried at "+e.lastUpdate+". Click to re-try.":s="Language pack not downloaded. Click to download":e.lastUpdate===null?s="Downloaded. Click to renew":s="Language pack downloaded at "+e.lastUpdate+". Click to renew";const r={detail:{iso:e.iso,extension:t.key}};i=a`<td><button class="btn btn-default" title=${s} @click=${()=>this.dispatchEvent(new CustomEvent("download-packs",r))}><typo3-backend-icon identifier=actions-download size=small></typo3-backend-icon>${o}</button></td>`}),i===u&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{LitElement as d,html as a}from"lit";import{property as p,customElement as c}from"lit/decorators.js";var n=function(r,e,o,s){var i=arguments.length,t=i<3?e:s===null?s=Object.getOwnPropertyDescriptor(e,o):s,f;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(r,e,o,s);else for(var u=r.length-1;u>=0;u--)(f=r[u])&&(t=(i<3?f(t):i>3?f(e,o,t):f(e,o))||t);return i>3&&t&&Object.defineProperty(e,o,t),t};let l=class extends d{constructor(){super(...arguments),this.offsetId=null,this.values=null}createRenderRoot(){return this}render(){return a`<div class=form-multigroup-wrap><div class=form-multigroup-item><div class=input-group><div class=input-group-text>x</div><input id=${this.offsetId}_offset_x class="form-control t3js-emconf-offsetfield" data-target=#${this.offsetId} value=${this.values[0]?.trim()}></div></div><div class=form-multigroup-item><div class=input-group><div class=input-group-text>y</div><input id=${this.offsetId}_offset_y class="form-control t3js-emconf-offsetfield" data-target=#${this.offsetId} value=${this.values[1]?.trim()}></div></div></div>`}};n([p({type:String})],l.prototype,"offsetId",void 0),n([p({type:Array})],l.prototype,"values",void 0),l=n([c("typo3-install-offset-group")],l);
@@ -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!
*/
class i{constructor(){this.loading=-3,this.notice=-2,this.info=-1,this.ok=0,this.warning=1,this.error=2}getCssClass(e){let s;switch(e){case this.loading:case this.notice:s="notice";break;case this.ok:s="success";break;case this.warning:s="warning";break;case this.error:s="danger";break;case this.info:default:s="info"}return s}}var t=new i;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{LitElement as d,html as m}from"lit";import{property as u,customElement as c}from"lit/decorators.js";var n=function(i,r,e,o){var p=arguments.length,t=p<3?r:o===null?o=Object.getOwnPropertyDescriptor(r,e):o,l;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")t=Reflect.decorate(i,r,e,o);else for(var s=i.length-1;s>=0;s--)(l=i[s])&&(t=(p<3?l(t):p>3?l(r,e,t):l(r,e))||t);return p>3&&t&&Object.defineProperty(r,e,t),t};let a=class extends d{constructor(){super(...arguments),this.wrapId=null,this.values=null}createRenderRoot(){return this}render(){return m`<div class=form-multigroup-wrap><div class=form-multigroup-item><div class=input-group><input id=${this.wrapId}_wrap_start class="form-control t3js-emconf-wrapfield" data-target=#${this.wrapId} value=${this.values[0]?.trim()}></div></div><div class=form-multigroup-item><div class=input-group><input id=${this.wrapId}_wrap_end class="form-control t3js-emconf-wrapfield" data-target=#${this.wrapId} value=${this.values[1]?.trim()}></div></div></div>`}};n([u({type:String})],a.prototype,"wrapId",void 0),n([u({type:Array})],a.prototype,"values",void 0),a=n([c("typo3-install-wrap-group")],a);
+13
View File
@@ -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{html as f}from"lit";import o from"@typo3/core/ajax/ajax-request.js";import c from"@typo3/backend/modal.js";import{InfoBox as s}from"@typo3/install/renderable/info-box.js";import l from"@typo3/install/renderable/severity.js";import"@typo3/backend/element/spinner-element.js";import r from"@typo3/core/event/regular-event.js";import"@typo3/backend/element/progress-bar-element.js";import{ScaffoldState as h}from"@typo3/backend/viewport/scaffold-state.js";import"@typo3/backend/element/sidebar-toggle-element.js";import"bootstrap";class m{constructor(){this.rootSelector=".t3js-body",this.contentSelector=".t3js-module-body-container"}setContent(e){const t=this.rootContainer.querySelector(this.contentSelector);typeof e=="string"&&(e=document.createRange().createContextualFragment(e)),t.replaceChildren(e)}initialize(){this.rootContainer=document.querySelector(this.rootSelector),this.context=this.rootContainer.dataset.context??"",this.controller=this.rootContainer.dataset.controller??"",this.registerInstallToolRoutes(),new r("click",e=>{e.preventDefault(),this.logout()}).delegateTo(document,".t3js-login-lockInstallTool"),new r("click",e=>{e.preventDefault(),this.login()}).delegateTo(document,".t3js-login-login"),new r("keydown",e=>{e.key==="Enter"&&(e.preventDefault(),this.login())}).delegateTo(document,"#t3-install-form-password"),new r("click",(e,t)=>{e.preventDefault();const a=t.dataset.import,n=t.dataset.inline;if(typeof n<"u"&&parseInt(n,10)===1)import(a).then(({default:i})=>{i.initialize(t)});else{const i=t.closest(".card").querySelector(".card-title").innerHTML,u=t.dataset.modalSize||c.sizes.large;c.advanced({type:c.types.default,title:i,size:u,content:f`<div class=modal-loading><typo3-backend-spinner size=large></typo3-backend-spinner></div>`,additionalCssClasses:["install-tool-modal"],staticBackdrop:!0,callback:g=>{import(a).then(({default:p})=>{p.initialize(g)})}})}}).delegateTo(document,".card .btn"),this.context==="backend"?this.executeSilentConfigurationUpdate():this.preAccessCheck()}registerInstallToolRoutes(){typeof TYPO3.settings>"u"&&(TYPO3.settings={ajaxUrls:{icons:window.location.origin+window.location.pathname+"?__typo3_install&install[controller]=icon&install[action]=getIcon"}})}getUrl(e,t,a){const n=new URL(location.href,window.origin);if(n.searchParams.set("__typo3_install",""),n.searchParams.set("install[controller]",t??this.controller),n.searchParams.set("install[context]",this.context),e!==void 0&&n.searchParams.set("install[action]",e),a!==void 0)for(const[d,i]of Object.entries(a))n.searchParams.set(d,i);return n.toString()}executeSilentConfigurationUpdate(){this.updateLoadingInfo("Checking session and executing silent configuration update"),new o(this.getUrl("executeSilentConfigurationUpdate","layout")).get({cache:"no-cache"}).then(async e=>{(await e.resolve()).success===!0?this.executeSilentTemplateFileUpdate():this.executeSilentConfigurationUpdate()},e=>{this.handleAjaxError(e)})}executeSilentTemplateFileUpdate(){this.updateLoadingInfo("Checking session and executing silent template file update"),new o(this.getUrl("executeSilentTemplateFileUpdate","layout")).get({cache:"no-cache"}).then(async e=>{(await e.resolve()).success===!0?this.executeSilentExtensionConfigurationSynchronization():this.executeSilentTemplateFileUpdate()},e=>{this.handleAjaxError(e)})}executeSilentExtensionConfigurationSynchronization(){this.updateLoadingInfo("Executing silent extension configuration synchronization"),new o(this.getUrl("executeSilentExtensionConfigurationSynchronization","layout")).get({cache:"no-cache"}).then(async e=>{(await e.resolve()).success===!0?this.loadMainLayout():this.setContent(s.create(l.error,"Something went wrong"))},e=>{this.handleAjaxError(e)})}loadMainLayout(){this.updateLoadingInfo("Loading main layout"),new o(this.getUrl("mainLayout","layout",{"install[module]":this.controller})).get({cache:"no-cache"}).then(async e=>{const t=await e.resolve();t.success===!0&&t.html!=="undefined"&&t.html.length>0?(this.rootContainer.innerHTML=t.html,this.context!=="backend"&&(this.rootContainer.querySelector('[data-installroute-controller="'+this.controller+'"]').classList.add("modulemenu-action-active"),this.registerScaffoldEvents()),this.loadCards()):this.rootContainer.replaceChildren(s.create(l.error,"Something went wrong"))},e=>{this.handleAjaxError(e)})}async handleAjaxError(e,t){if(e.response?.status===403)this.context==="backend"?this.rootContainer.replaceChildren(s.create(l.error,"The Install Tool session expired. Please reload the backend and try again.")):this.checkEnableInstallToolFile();else{const n='<div class="t3js-infobox callout callout-sm callout-danger"><div class="callout-content"><div class="callout-title">Something went wrong</div><div class="callout-body"><p>Please use <b><a href="'+this.getUrl(void 0,"upgrade")+`">Check for broken extensions</a></b> to see if a loaded extension breaks this part of the Install Tool and unload it.</p><p>The box below may additionally revea Line truncated