TYPO3 v15 dev-main snapshot ()

This commit is contained in:
2026-08-10 22:31:33 +02:00
commit 1a6eae9988
124 changed files with 11393 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
<svg version="1.1" id="Layer_1"
xmlns="http://www.w3.org/2000/svg"
x="0px" y="0px"
width="64px" height="64px"
viewBox="0 0 64 64">
<path fill="#5599ff" d="M-0.5-0.5h64v64h-64V-0.5z"/>
<path fill="#ffffff" d="M31.9,18.254c3.639,0.008,6.943,1.439,9.385,3.771l1.961-1.959c0.828-0.832,2.25-0.244,2.25,0.932
v7.363c0,0.729-0.594,1.316-1.32,1.316h-7.359c-1.176,0-1.758-1.42-0.93-2.252l2.289-2.291c-1.695-1.584-3.887-2.469-6.219-2.484
c-5.076-0.045-9.354,4.061-9.309,9.303c0.039,4.977,4.072,9.148,9.227,9.148c2.258,0,4.395-0.806,6.082-2.281
c0.258-0.228,0.648-0.215,0.898,0.031l2.176,2.18c0.266,0.262,0.254,0.703-0.027,0.953c-2.414,2.18-5.617,3.508-9.129,3.508
c-7.523,0-13.619-6.094-13.619-13.617C18.252,24.361,24.385,18.242,31.9,18.254z"/>
</svg>

After

Width:  |  Height:  |  Size: 750 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" xml:space="preserve"><path fill="#5599ff" d="M15,12c0,1.657-1.344,3-3,3H4c-1.657,0-3-1.343-3-3V4c0-1.657,1.343-3,3-3h8c1.656,0,3,1.343,3,3V12z"/><path fill="#ffffff" d="M8.007,4c1.069,0.002,2.039,0.423,2.757,1.107l0.576-0.575C11.582,4.287,12,4.46,12,4.805v2.162 c0,0.215-0.175,0.386-0.388,0.386H9.451c-0.345,0-0.517-0.417-0.273-0.66l0.673-0.673c-0.498-0.465-1.143-0.726-1.827-0.73 C6.533,5.278,5.276,6.484,5.29,8.023C5.302,9.484,6.486,10.709,8,10.709c0.663,0,1.292-0.236,1.787-0.668 c0.075-0.067,0.191-0.065,0.264,0.008l0.639,0.641c0.078,0.076,0.075,0.205-0.008,0.279C9.972,11.609,9.032,12,8,12 c-2.209,0-4-1.792-4-4C3.999,5.793,5.8,3.996,8.007,4z"/></svg>

After

Width:  |  Height:  |  Size: 717 B

@@ -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/core/ajax/ajax-request.js";import n from"@typo3/backend/notification.js";import a from"@typo3/backend/action-button/deferred-action.js";import i from"~labels/redirects.slug_service";class l{constructor(){document.addEventListener("typo3:redirects:slugChanged",e=>this.onSlugChanged(e.detail))}dispatchCustomEvent(e,r=null){const o=new CustomEvent(e,{detail:r});document.dispatchEvent(o)}onSlugChanged(e){const r=[],o=e.correlations;e.autoUpdateSlugs&&r.push({label:i.get("notification.redirects.button.revert_update"),action:new a(async()=>{await this.revert([o.correlationIdPageUpdate,o.correlationIdSlugUpdate,o.correlationIdRedirectCreation])})}),e.autoCreateRedirects&&r.push({label:i.get("notification.redirects.button.revert_redirect"),action:new a(async()=>{await this.revert([o.correlationIdRedirectCreation])})});let t=i.get("notification.slug_only.title"),s=i.get("notification.slug_only.message");e.autoCreateRedirects&&(t=i.get("notification.slug_and_redirects.title"),s=i.get("notification.slug_and_redirects.message")),n.info(t,s,0,r)}revert(e){const r=new c(TYPO3.settings.ajaxUrls.redirects_revert_correlation).post({correlation_ids:e});return r.then(async o=>{const t=await o.resolve();t.status==="ok"&&(n.success(t.title,t.message),window.location.reload(),top.document.dispatchEvent(new CustomEvent("typo3:pagetree:refresh"))),t.status==="error"&&n.error(t.title,t.message)}).catch(()=>{n.error(i.get("redirects_error_title"),i.get("redirects_error_message"))}),r}}var d=new l;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 r from"@typo3/backend/form-engine-validation.js";class o{static registerCustomEvaluation(t){r.registerCustomEvaluation(t,o.evaluateSourceHost)}static evaluateSourceHost(t){return t==="*"?t:(t.includes("://")||(t="http://"+t),new URL(t).host)}}export{o as FormEngineEvaluation};
@@ -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/event/regular-event.js";class i{constructor(){const e=document.querySelector('form[data-on-submit="processNavigate"]');e!==null&&(new o("change",this.executeSubmit.bind(this)).delegateTo(document,'[data-on-change="submit"]'),new o("submit",this.processNavigate.bind(this)).bindTo(e))}executeSubmit(e){const t=e.target;(t instanceof HTMLSelectElement||t instanceof HTMLInputElement&&t.type==="checkbox")&&t.form.submit()}processNavigate(e){const t=e.target;if(!(t instanceof HTMLFormElement))return;e.preventDefault();const n=t.elements.namedItem("paginator-target-page"),s=parseInt(n.dataset.numberOfPages,10);let r=n.dataset.url,a=parseInt(n.value,10);a>s?a=s:a<1&&(a=1),r=r.replace("987654322",a.toString()),self.location.href=r}}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 n from"@typo3/core/document-service.js";import d from"@typo3/backend/form-engine.js";import t from"@typo3/backend/form-engine-validation.js";import o from"@typo3/core/ajax/ajax-request.js";import l from"@typo3/backend/notification.js";class h{constructor(e){this.controlElement=null,this.humanReadableField=null,this.sourceHostField=null,this.debounceTimer=null,this.hasDuplicateError=!1,n.ready().then(()=>{this.controlElement=document.getElementById(e),this.humanReadableField=document.querySelector('input[data-formengine-input-name="'+this.controlElement.dataset.itemName.replace("[short_url]","[source_path]")+'"]'),this.sourceHostField=document.querySelector('input[data-formengine-input-name="'+this.controlElement.dataset.itemName.replace("[short_url]","[source_host]")+'"]'),this.controlElement.addEventListener("click",this.generateShortUrl.bind(this)),this.humanReadableField.addEventListener("input",this.debouncedValidate.bind(this)),this.sourceHostField&&this.sourceHostField.addEventListener("input",this.debouncedValidate.bind(this))})}debouncedValidate(){this.debounceTimer&&clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{this.validateShortUrl()},400)}validateShortUrl(){const e=this.humanReadableField.value,a=this.sourceHostField?this.sourceHostField.value:"";if(e===""){this.setFieldError(!1);return}new o(TYPO3.settings.ajaxUrls.short_url_validate).post({source_host:a,source_path:e}).then(async i=>{const s=await i.resolve(),r=!s.isUnique;this.setFieldError(r),r&&!this.hasDuplicateError&&s.message&&l.warning(s.message),this.hasDuplicateError=r}).catch(()=>{})}setFieldError(e){if(e){const a=[this.humanReadableField,this.sourceHostField].filter(Boolean);for(const i of a)i.classList.add(t.errorClass),i.setAttribute("aria-invalid","true");this.humanReadableField.closest(t.markerSelector)?.querySelector(t.labelSelector)?.classList.add(t.errorClass),t.markParentTab(this.humanReadableField,!1),this.humanReadableField.closest("form")?.dispatchEvent(new CustomEvent("t3-formengine-postfieldvalidation",{detail:{field:this.humanReadableField,isValid:!1},cancelable:!1,bubbles:!0}))}else this.sourceHostField&&(this.sourceHostField.classList.remove(t.errorClass),this.sourceHostField.removeAttribute("aria-invalid")),t.validateField(this.humanReadableField)}generateShortUrl(e){e.preventDefault();const a=this.sourceHostField?this.sourceHostField.value:"";new o(TYPO3.settings.ajaxUrls.short_url_generate).post({source_host:a}).then(async i=>{const s=await i.resolve();s.success===!0?(this.humanReadableField.value=s.shortUrl,this.humanReadableField.dispatchEvent(new Event("change")),t.validateField(this.humanReadableField),d.markFieldAsChanged(this.humanReadableField),this.setFieldError(!1)):l.warning(s.message||"No Short URL was generated")}).catch(()=>{l.error("Short URL could not be generated")})}}export{h as default};