TYPO3 v15 dev-main snapshot ()

This commit is contained in:
2026-08-10 22:31:31 +02:00
commit 3e43c11539
407 changed files with 51272 additions and 0 deletions
@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
data-icon-cache-identifier="{iconCacheIdentifier}"
>
<head>
<title>Installing TYPO3 CMS</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="{f:uri.resource(path: 'EXT:backend/Resources/Public/Css/backend.css')}?{bust}" />
<link rel="stylesheet" href="{f:uri.resource(path: 'EXT:backend/Resources/Public/Css/webfonts.css')}?{bust}" />
<link rel="icon" type="image/vnd.microsoft.icon" href="{f:uri.resource(path: 'EXT:install/Resources/Public/Icons/favicon.ico')}?{bust}" />
{importmap->f:format.raw()}
</head>
<body class="t3js-body typo3-install">
<script type="module" src="{initModule}"></script>
</body>
</html>
@@ -0,0 +1,15 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="typo3-install-container">
<div class="typo3-install-content">
<div class="typo3-install-content-header">
<img src="{f:uri.resource(path: 'EXT:core/Resources/Public/Images/typo3_light_dark.svg')}" width="130" class="typo3-install-content-header-logo" />
<h1>Installing TYPO3 CMS</h1>
</div>
<div class="typo3-install-content-progress">
<typo3-backend-progress-bar class="t3js-installer-progress" value="0" max="5" label="Step 0 of 5 completed"></typo3-backend-progress-bar>
</div>
<div class="t3js-installer-content">
</div>
</div>
</div>
</html>
@@ -0,0 +1,403 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="t3js-module-content" data-installer-database-connect-execute-token="{executeDatabaseConnectToken}">
<div class="typo3-install-content-body">
<h2>Connect to database</h2>
<f:if condition="{hasAtLeastOneOption}">
<f:then>
<p>
You will need to create a database user with the appropriate privileges to access your database.
</p>
<div class="typo3-install-content-spacer"></div>
<div class="t3js-installer-databaseConnect-output"></div>
<div class="typo3-install-content-spacer"></div>
<form method="post" spellcheck="false">
<div class="form-group">
<label for="t3js-connect-database-driver" class="form-label">Connection</label>
<select id="t3js-connect-database-driver" class="form-select" name="install[values][availableSet]" placeholder="sqlite">
<f:if condition="{hasMysqliManualConfiguration}">
<option
value="mysqliManualConfiguration"
{f:if(condition:'{activeAvailableOption} == mysqliManualConfiguration', then: 'selected="selected"')}
>
[MySQLi] Manually configured MySQL TCP/IP connection
</option>
</f:if>
<f:if condition="{hasMysqliSocketManualConfiguration}">
<option
value="mysqliSocketManualConfiguration"
{f:if(condition:'{activeAvailableOption} == mysqliSocketManualConfiguration', then: 'selected="selected"')}
>
[MySQLi] Manually configured MySQL socket connection
</option>
</f:if>
<f:if condition="{hasPdoMysqlManualConfiguration}">
<option
value="pdoMysqlManualConfiguration"
{f:if(condition:'{activeAvailableOption} == pdoMysqlManualConfiguration', then: 'selected="selected"')}
>
[PDO] Manually configured MySQL TCP/IP connection
</option>
</f:if>
<f:if condition="{hasPdoMysqlSocketManualConfiguration}">
<option
value="pdoMysqlSocketManualConfiguration"
{f:if(condition:'{activeAvailableOption} == pdoMysqlSocketManualConfiguration', then: 'selected="selected"')}
>
[PDO] Manually configured MySQL socket connection
</option>
</f:if>
<f:if condition="{hasPostgresManualConfiguration}">
<option
value="postgresManualConfiguration"
{f:if(condition:'{activeAvailableOption} == postgresManualConfiguration', then: 'selected="selected"')}
>
Manually configured PostgreSQL connection
</option>
</f:if>
<f:if condition="{hasSqliteManualConfiguration}">
<option
value="sqliteManualConfiguration"
{f:if(condition:'{activeAvailableOption} == sqliteManualConfiguration', then: 'selected="selected"')}
>
Manually configured SQLite connection
</option>
</f:if>
<f:if condition="{hasConfigurationFromEnvironment}">
<option
value="configurationFromEnvironment"
{f:if(condition:'{activeAvailableOption} == configurationFromEnvironment', then: 'selected="selected"')}
>
Configuration from environment variables
</option>
</f:if>
</select>
</div>
<f:if condition="{hasMysqliManualConfiguration}">
<div id="mysqliManualConfiguration" class="t3-install-driver-data" hidden>
<input type="hidden" value="mysqli" name="install[values][driver]"/>
<div class="row">
<div class="form-group col-md-6">
<label for="t3-install-step-mysqliManualConfiguration-username" class="form-label">
Username
</label>
<input
id="t3-install-step-mysqliManualConfiguration-username"
class="form-control"
type="text"
value="{mysqliManualConfigurationOptions.username}"
name="install[values][username]"
autocomplete="off"
placeholder="db-user"
/>
</div>
<div class="form-group col-md-6">
<label for="t3-install-step-mysqliManualConfiguration-password" class="form-label">
Password
</label>
<input
id="t3-install-step-mysqliManualConfiguration-password"
class="form-control"
type="password"
value="{mysqliManualConfigurationOptions.password}"
name="install[values][password]"
autocomplete="off"
placeholder="password"
/>
</div>
<div class="form-group col-md-6">
<label for="t3-install-step-mysqliManualConfiguration-host" class="form-label">
Host
</label>
<input
id="t3-install-step-mysqliManualConfiguration-host"
class="t3-install-form-input-text form-control"
type="text"
value="{mysqliManualConfigurationOptions.host}"
name="install[values][host]"
placeholder="127.0.0.1"
/>
</div>
<div class="form-group col-md-6">
<label for="t3-install-step-mysqliManualConfiguration-port" class="form-label">
Port
</label>
<input
id="t3-install-step-mysqliManualConfiguration-port"
class="t3-install-form-input-text form-control"
type="text"
value="{mysqliManualConfigurationOptions.port}"
name="install[values][port]"
placeholder="3306"
/>
</div>
</div>
</div>
</f:if>
<f:if condition="{hasMysqliSocketManualConfiguration}">
<div id="mysqliSocketManualConfiguration" class="t3-install-driver-data" hidden>
<input type="hidden" value="mysqli" name="install[values][driver]"/>
<div class="row">
<div class="form-group col-md-6">
<label for="t3-install-step-mysqliSocketManualConfiguration-username" class="form-label">
Username
</label>
<input
id="t3-install-step-mysqliSocketManualConfiguration-username"
class="form-control"
type="text"
value="{mysqliSocketManualConfigurationOptions.username}"
name="install[values][username]"
autocomplete="off"
placeholder="db-user"
/>
</div>
<div class="form-group col-md-6">
<label for="t3-install-step-mysqliSocketManualConfiguration-password" class="form-label">
Password
</label>
<input
id="t3-install-step-mysqliSocketManualConfiguration-password"
class="form-control"
type="password"
value="{mysqliSocketManualConfigurationOptions.password}"
name="install[values][password]"
autocomplete="off"
placeholder="password"
/>
</div>
</div>
<input type="hidden" value="localhost" name="install[values][host]"/>
<div class="form-group">
<label for="t3-install-step-mysqliSocketManualConfiguration-socket" class="form-label">
Socket
</label>
<input
id="t3-install-step-mysqliSocketManualConfiguration-socket"
class="t3-install-form-input-text form-control"
type="text"
value="{mysqliSocketManualConfigurationOptions.socket}"
name="install[values][socket]"
placeholder="Default socket or enter name"
/>
</div>
</div>
</f:if>
<f:if condition="{hasPdoMysqlManualConfiguration}">
<div id="pdoMysqlManualConfiguration" class="t3-install-driver-data" hidden>
<input type="hidden" value="pdo_mysql" name="install[values][driver]"/>
<div class="row">
<div class="form-group col-md-6">
<label for="t3-install-step-pdoMysqlManualConfiguration-username" class="form-label">
Username
</label>
<input
id="t3-install-step-pdoMysqlManualConfiguration-username"
class="form-control"
type="text"
value="{mysqliManualConfigurationOptions.username}"
name="install[values][username]"
autocomplete="off"
placeholder="db-user"
/>
</div>
<div class="form-group col-md-6">
<label for="t3-install-step-pdoMysqlManualConfiguration-password" class="form-label">
Password
</label>
<input
id="t3-install-step-pdoMysqlManualConfiguration-password"
class="form-control"
type="password"
value="{pdoMysqlManualConfigurationOptions.password}"
name="install[values][password]"
autocomplete="off"
placeholder="password"
/>
</div>
<div class="form-group col-md-6">
<label for="t3-install-step-pdoMysqlManualConfiguration-host" class="form-label">
Host
</label>
<input
id="t3-install-step-pdoMysqlManualConfiguration-host"
class="t3-install-form-input-text form-control"
type="text"
value="{pdoMysqlManualConfigurationOptions.host}"
name="install[values][host]"
placeholder="127.0.0.1"
/>
</div>
<div class="form-group col-md-6">
<label for="t3-install-step-pdoMysqlManualConfiguration-port" class="form-label">
Port
</label>
<input
id="t3-install-step-pdoMysqlManualConfiguration-port"
class="t3-install-form-input-text form-control"
type="text"
value="{pdoMysqlManualConfigurationOptions.port}"
name="install[values][port]"
placeholder="port"
/>
</div>
</div>
</div>
</f:if>
<f:if condition="{hasPdoMysqlSocketManualConfiguration}">
<div id="pdoMysqlSocketManualConfiguration" class="t3-install-driver-data" hidden>
<input type="hidden" value="pdo_mysql" name="install[values][driver]"/>
<div class="row">
<div class="form-group col-md-6">
<label for="t3-install-step-pdoMysqlSocketManualConfiguration-username" class="form-label">
Username
</label>
<input
id="t3-install-step-pdoMysqlSocketManualConfiguration-username"
class="form-control"
type="text"
value="{pdoMysqlSocketManualConfigurationOptions.username}"
name="install[values][username]"
autocomplete="off"
placeholder="db-user"
/>
</div>
<div class="form-group col-md-6">
<label for="t3-install-step-pdoMysqlSocketManualConfiguration-password" class="form-label">
Password
</label>
<input
id="t3-install-step-pdoMysqlSocketManualConfiguration-password"
class="form-control"
type="password"
value="{pdoMysqlSocketManualConfigurationOptions.password}"
name="install[values][password]"
autocomplete="off"
placeholder="password"
/>
</div>
</div>
<input type="hidden" value="localhost" name="install[values][host]"/>
<div class="form-group">
<label for="t3-install-step-pdoMysqlSocketManualConfiguration-socket" class="form-label">
Socket
</label>
<input
id="t3-install-step-pdoMysqlSocketManualConfiguration-socket"
class="t3-install-form-input-text form-control"
type="text"
value="{pdoMysqlSocketManualConfigurationOptions.socket}"
name="install[values][socket]"
placeholder="Default socket or enter name"
/>
</div>
</div>
</f:if>
<f:if condition="{hasPostgresManualConfiguration}">
<div id="postgresManualConfiguration" class="t3-install-driver-data" hidden>
<input type="hidden" value="pdo_pgsql" name="install[values][driver]"/>
<div class="form-group">
<label for="t3-install-step-postgresManualConfiguration-database" class="form-label">
Database
</label>
<input
id="t3-install-step-postgresManualConfiguration-database"
class="t3-install-form-input-text form-control"
type="text"
value="{postgresManualConfigurationOptions.database}"
name="install[values][database]"
placeholder="database"
/>
</div>
<div class="row">
<div class="form-group col-md-6">
<label for="t3-install-step-postgresManualConfiguration-username" class="form-label">
Username
</label>
<input
id="t3-install-step-postgresManualConfiguration-username"
class="form-control"
type="text"
value="{postgresManualConfigurationOptions.username}"
name="install[values][username]"
autocomplete="off"
placeholder="db-user"
/>
</div>
<div class="form-group col-md-6">
<label for="t3-install-step-postgresManualConfiguration-password" class="form-label">
Password
</label>
<input
id="t3-install-step-postgresManualConfiguration-password"
class="form-control"
type="password"
value="{postgresManualConfigurationOptions.password}"
name="install[values][password]"
autocomplete="off"
placeholder="password"
/>
</div>
<div class="form-group col-md-6">
<label for="t3-install-step-postgresManualConfiguration-host" class="form-label">
Host
</label>
<input
id="t3-install-step-postgresManualConfiguration-host"
class="t3-install-form-input-text form-control"
type="text"
value="{postgresManualConfigurationOptions.host}"
name="install[values][host]"
placeholder="127.0.0.1"
/>
</div>
<div class="form-group col-md-6">
<label for="t3-install-step-postgresManualConfiguration-port" class="form-label">
Port
</label>
<input
id="t3-install-step-postgresManualConfiguration-port"
class="t3-install-form-input-text form-control"
type="text"
value="{postgresManualConfigurationOptions.port}"
name="install[values][port]"
placeholder=""
/>
</div>
</div>
</div>
</f:if>
<f:if condition="{hasSqliteManualConfiguration}">
<div id="sqliteManualConfiguration" class="t3-install-driver-data" hidden>
<input type="hidden" value="pdo_sqlite" name="install[values][driver]"/>
</div>
</f:if>
<f:if condition="{hasConfigurationFromEnvironment}">
<div id="configurationFromEnvironment" class="t3-install-driver-data" hidden>
</div>
</f:if>
<div class="text-end">
<button type="submit" class="btn btn-primary t3js-installer-databaseConnect-execute">
Continue
</button>
</div>
</form>
</f:then>
<f:else>
<div class="t3js-message alert alert-danger" role="alert">
<h4 class="alert-title">No database driver found</h4>
<p class="alert-message">You have no database driver installed or enabled. Please install a driver in order to complete the database connection.</p>
</div>
</f:else>
</f:if>
</div>
</div>
</html>
@@ -0,0 +1,91 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="t3js-module-content" data-installer-database-data-execute-token="{executeDatabaseDataToken}">
<div class="typo3-install-content-body">
<h2>Create administrative user and specify site name</h2>
<p>
Use this account to log into the backend of your site.<br>
The password you provide for this account is also used to access the <strong>Install Tool</strong>.
</p>
<p>On this page you can also set a name for your new website.</p>
<div class="typo3-install-content-spacer"></div>
<div class="t3js-installer-databaseData-output"></div>
<div class="typo3-install-content-spacer"></div>
<form method="post" id="stepInstaller-databaseData" class="t3-install-form-label-before" spellcheck="false">
<input type="hidden" value="execute" name="install[set]" />
<div class="form-group">
<label for="username" class="form-label">Username</label>
<input
class="t3-install-form-input-text form-control"
name="install[values][username]"
id="username"
placeholder="admin"
autocomplete="off"
/>
</div>
<div class="form-group" style="position:relative">
<label for="password" class="form-label">Password</label>
<input
class="t3-install-form-input-text t3-install-form-password-strength form-control"
name="install[values][password]"
id="password"
type="password"
autocomplete="off"
placeholder="random password"
/>
<f:comment><!-- @todo: Add API for input group addons in floating forms--></f:comment>
<button
type="button"
class="t3-install-form-password-toggle btn btn-link"
data-toggle-target="#password" data-toggle-state="invisible"
style="position:absolute;bottom:.65em;right:.8em;outline:none;box-shadow:none"
aria-label="Toggle password visibility"
>
<core:icon identifier="actions-lock" size="small" />
<core:icon identifier="actions-eye" size="small" />
</button>
</div>
<f:be.infobox
title="Password security"
state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::INFO')}"
>
If compromised, this account will provide an attacker with complete access to your installation.<br>
A strong password is recommended. Include lower and upper case characters, special characters and numbers. Your password must be at least eight characters long.
</f:be.infobox>
<div class="form-group">
<label for="email" class="form-label">Email address</label>
<input
type="email"
class="t3-install-form-input-text form-control"
name="install[values][email]"
id="email"
placeholder="you@me.com"
/>
</div>
<div class="form-group">
<label for="sitename" class="form-label">Site name</label>
<input
class="t3-install-form-input-text form-control"
name="install[values][sitename]"
id="sitename"
type="text"
value="{siteName}"
placeholder="Your new website"
/>
</div>
<div class="text-end">
<button type="submit" class="btn btn-primary t3js-installer-databaseData-execute">
Continue
</button>
</div>
</form>
</div>
</div>
</html>
@@ -0,0 +1,97 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="t3js-module-content" data-installer-database-select-execute-token="{executeDatabaseSelectToken}" data-installer-database-check-requirements-execute-token="{executeCheckDatabaseRequirementsToken}">
<div class="typo3-install-content-body">
<h2>Select a database</h2>
<div class="typo3-install-content-spacer"></div>
<div class="t3js-installer-databaseSelect-output"></div>
<div class="typo3-install-content-spacer"></div>
<f:if condition="{errors -> f:count()}">
<f:for each="{errors}" as="error">
<f:be.infobox
title="Exception"
state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::ERROR')}"
>
{error}
</f:be.infobox>
</f:for>
</f:if>
<form method="post" id="stepInstaller-databaseSelect" spellcheck="false">
<div class="form-group">
<div class="form-check">
<input
id="t3-install-form-db-select-type-existing"
type="radio"
name="install[values][type]"
value="existing"
checked="checked"
class="form-check-input"
/>
<label class="form-check-label" for="t3-install-form-db-select-type-existing">
Use an existing empty database:
</label>
</div>
<div class="form-group">
<label class="form-label" for="t3-install-step-database-existing">
Select a database
</label>
<select
id="t3-install-step-database-existing"
name="install[values][existing]"
class="form-select"
onfocus="document.getElementById('t3-install-form-db-select-type-existing').checked=true;"
>
<option value="">-- Choose --</option>
<f:for each="{databaseList}" as="database">
<f:if condition="{database.tables} || {database.readonly}">
<f:then>
<option value="{database.name}" disabled="disabled">{database.name} ({f:if(condition: database.readonly, then: 'readonly', else: '{database.tables} Tables')})</option>
</f:then>
<f:else>
<option value="{database.name}">{database.name}</option>
</f:else>
</f:if>
</f:for>
</select>
</div>
</div>
<div class="form-group">
<div class="form-check">
<input
id="t3-install-form-db-select-type-new"
type="radio"
name="install[values][type]"
value="new"
class="form-check-input"
/>
<label class="form-check-label" for="t3-install-form-db-select-type-new">
Create a new database:
</label>
</div>
<div class="form-group">
<label class="form-label" for="t3-install-step-database-new">
Specify a name for your TYPO3 database
</label>
<input
id="t3-install-step-database-new"
class="t3-install-form-input-text form-control"
type="text"
name="install[values][new]"
checked="checked"
onfocus="document.getElementById('t3-install-form-db-select-type-new').checked=true;"
/>
</div>
</div>
<div class="text-end">
<button type="submit" class="btn btn-primary t3js-installer-databaseSelect-execute">
Continue
</button>
</div>
</form>
</div>
</div>
</html>
@@ -0,0 +1,116 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="t3js-module-content" data-installer-default-configuration-execute-token="{executeDefaultConfigurationToken}">
<div class="typo3-install-content-body">
<h2>Installation complete</h2>
<div class="typo3-install-content-spacer"></div>
<div class="t3js-installer-defaultConfiguration-output"></div>
<div class="typo3-install-content-spacer"></div>
<h3>Initial site setup</h3>
<p>
Your TYPO3 installation is ready. You can now set up your first website.
</p>
<form method="post" spellcheck="false">
<f:if condition="{distributions.active}">
<f:then>
<div class="panel panel-default">
<h3 class="panel-heading">Active distributions</h3>
<div class="panel-body">
<p>
These pre-configured distribution will have their demo content, pages, and site configuration being imported.
</p>
<ul>
<f:for each="{distributions.active}" as="distribution">
<li>
<strong>{distribution.title}</strong>
<f:if condition="{distribution.description}">
<br /><small>{distribution.description}</small>
</f:if>
</li>
</f:for>
</ul>
</div>
</div>
</f:then>
<f:else>
<f:if condition="{distributions.inactive}">
<div class="panel panel-default">
<h3 class="panel-heading">Available distributions</h3>
<div class="panel-body">
<p>
Import a pre-configured distribution with demo content, pages, and site configuration.
</p>
<f:for each="{distributions.inactive}" as="distribution" iteration="iterator">
<div class="form-check">
<input class="form-check-input" type="radio" id="create-site-{distribution.packageKey}" name="install[values][sitesetup]" value="createsite:{distribution.packageKey}"{f:if(condition: iterator.isFirst, then: ' checked="checked"')} />
<label class="form-check-label" for="create-site-{distribution.packageKey}">
<strong>{distribution.title}</strong>
<f:if condition="{distribution.description}">
<br /><small>{distribution.description}</small>
</f:if>
</label>
</div>
</f:for>
</div>
</div>
</f:if>
<div class="panel panel-default">
<h3 class="panel-heading">Other options</h3>
<div class="panel-body">
<f:if condition="!{composerMode}">
<div class="form-check">
<input class="form-check-input" type="radio" id="load-distributions" name="install[values][sitesetup]" value="loaddistribution" />
<label class="form-check-label" for="load-distributions">
<strong>Browse all distributions</strong>
<br /><small>View a list of available distributions after login</small>
</label>
</div>
</f:if>
<f:if condition="{offerToCreateBasicSite}">
<div class="form-check">
<input class="form-check-input" type="radio" id="create-site" name="install[values][sitesetup]" value="createsite"{f:if(condition: '{distributions.inactive -> f:count()} === 0', then: ' checked="checked"')} />
<label class="form-check-label" for="create-site">
<strong>Create a basic starter website</strong>
<br /><small>Set up a root page, site configuration and basic content rendering</small>
</label>
</div>
</f:if>
<div class="form-check">
<input class="form-check-input" type="radio" id="do-nothing" name="install[values][sitesetup]" value="donothing" />
<label class="form-check-label" for="do-nothing">
<strong>Skip setup</strong>
<br /><small>Do nothing, take me straight to the backend</small>
</label>
</div>
</div>
</div>
</f:else>
</f:if>
<div class="panel panel-default">
<h3 class="panel-heading">Pre-configured backend user groups</h3>
<div class="panel-body">
<div class="form-check form-check-type-toggle">
<input class="form-check-input" type="checkbox" id="create-groups" name="install[values][backendgroups]" value="creategroups" />
<label class="form-check-label" for="create-groups">
<strong>Create default backend user groups</strong>
<br /><small>Pre-configured "Editor" and "Advanced Editor" groups, ready to use</small>
</label>
</div>
</div>
</div>
<div class="text-end">
<button type="submit" class="btn btn-primary t3js-installer-defaultConfiguration-execute">
Finish installation
</button>
</div>
</form>
</div>
</div>
</html>
@@ -0,0 +1,36 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="typo3-install-content-body">
<h2>Environment Overview</h2>
<p>First the Install Wizard needs to inspect your web server and identify any issues that may prevent TYPO3 from running correctly.</p>
<div class="t3js-installer-environment-details" hidden>
<h3>Problems Detected</h3>
</div>
<div class="row justify-content-between">
<form class="col-auto t3js-installer-environmentFolders-bad" hidden>
<div class="typo3-install-content-spacer-small">
<button type="submit" class="btn btn-default t3js-installer-environmentFolders-retry">
Scan environment again
</button>
</div>
</form>
<form class="col-auto t3js-installer-environmentFolders-bad" hidden>
<div class="typo3-install-content-spacer-small">
<button type="submit" class="btn btn-danger t3js-installer-environmentFolders-execute float-end">
Continue with errors
</button>
</div>
</form>
<form class="col-auto t3js-installer-environmentFolders-good" hidden>
<div class="typo3-install-content-spacer-small">
<button type="submit" class="btn btn-success t3js-installer-environmentFolders-execute float-end">
No problems detected, continue with installation
</button>
</div>
</form>
</div>
</div>
</html>
@@ -0,0 +1,19 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="typo3-install-content-body">
<h2>Thank you for choosing TYPO3</h2>
<p>The Installation Wizard will guide you through the necessary steps required to install TYPO3 on your web server.</p>
<p>To begin the installation, create an empty file called
<code>FIRST_INSTALL</code> in the document root of your web server.</p>
<p class="text-variant">
<strong>Please note:</strong>
The filename is case-sensitive, and it will be deleted once the installation process is complete.
</p>
<f:be.infobox title="New to TYPO3?" state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::INFO')}">
We recommend reading the
<a href="https://docs.typo3.org/Home/GettingStarted.html" target="_blank" rel="noreferrer"><u>Getting Started Documentation</u></a>.
</f:be.infobox>
</div>
</html>