TYPO3 v15 dev-main snapshot ()
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
<f:layout name="SystemEmail" />
|
||||
<f:section name="Title">{headline}</f:section>
|
||||
<f:section name="Main">
|
||||
<h4>{introduction}</h4>
|
||||
<p>There has been a successful Install Tool login at TYPO3 site "{typo3.sitename}" from the IP address <strong>{normalizedParams.remoteAddress}</strong>.</p>
|
||||
</f:section>
|
||||
@@ -0,0 +1,5 @@
|
||||
<f:layout name="SystemEmail" />
|
||||
<f:section name="Title">{headline}</f:section>
|
||||
<f:section name="Main">{introduction}
|
||||
There has been a successful Install Tool login at TYPO3 site "{typo3.sitename}" from the IP address "{normalizedParams.remoteAddress}".
|
||||
</f:section>
|
||||
@@ -0,0 +1,6 @@
|
||||
<f:layout name="SystemEmail" />
|
||||
<f:section name="Title">{headline}</f:section>
|
||||
<f:section name="Main">
|
||||
<h4>{introduction}</h4>
|
||||
<p>There has been an Install Tool login attempt at TYPO3 site "{typo3.sitename}" from the IP address <strong>{normalizedParams.remoteAddress}</strong>.</p>
|
||||
</f:section>
|
||||
@@ -0,0 +1,5 @@
|
||||
<f:layout name="SystemEmail" />
|
||||
<f:section name="Title">{headline}</f:section>
|
||||
<f:section name="Main">{introduction}
|
||||
There has been an Install Tool login attempt at TYPO3 site "{typo3.sitename}" from the IP address "{normalizedParams.remoteAddress}".
|
||||
</f:section>
|
||||
@@ -0,0 +1,62 @@
|
||||
<f:layout name="Cards"/>
|
||||
|
||||
<f:section name="headline">
|
||||
<h1>Environment</h1>
|
||||
</f:section>
|
||||
|
||||
<f:section name="cards">
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Environment Overview', subtitle: 'Environment', icon: 'EXT:install/Resources/Public/Icons/modules/install-show-environment.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Review details of the host environment, including web server, PHP version, selected database, and the application context.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-modal-size="small" data-import="@typo3/install/module/environment/system-information.js">Show System Information…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Environment Status', subtitle: 'PHP', icon: 'EXT:install/Resources/Public/Icons/modules/install-test-environment.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Analyze host environment for conditions that could prevent TYPO3 from operating correctly.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/environment/environment-check.js">Check Environment…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Directory Status', subtitle: 'Permissions', icon: 'EXT:install/Resources/Public/Icons/modules/install-check-directory.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Analyze folder structure to verify file and directory permissions and detect missing items.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/environment/folder-structure.js">Check Directory Status…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'PHP Info', subtitle: 'PHP', icon: 'EXT:install/Resources/Public/Icons/modules/install-php-info.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">View detailed information about the PHP installation, including version details and enabled extensions.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/environment/php-info.js">View PHP Info…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Test Mail Setup', subtitle: 'Mail', icon: 'EXT:install/Resources/Public/Icons/modules/install-test-mail.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Test your mail configuration by sending out a dummy email via TYPO3.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-modal-size="small" data-import="@typo3/install/module/environment/mail-test.js">Test Mail Setup…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Image Processing', subtitle: 'Image Processing', icon: 'EXT:install/Resources/Public/Icons/modules/install-test-image.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Create test images and compare them with reference images to verify that image processing works correctly in your environment.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/environment/image-processing.js">Test Images…</button>
|
||||
</div>
|
||||
</div>
|
||||
</f:section>
|
||||
@@ -0,0 +1,5 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<div class="t3js-environmentCheck-output"></div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>Root Directory: <strong>{publicPath}</strong></p>
|
||||
|
||||
<div class="t3js-folderStructure-output mt-4" style="display:none"></div>
|
||||
|
||||
<div class="t3js-folderStructure-errors mt-4" style="display:none">
|
||||
<h3>These files or folders have errors and may be fixed automatically:</h3>
|
||||
<div class="t3js-folderStructure-errors-list"></div>
|
||||
</div>
|
||||
|
||||
<h3 class="mt-4">Default File and Directory permissions</h3>
|
||||
<div class="t3js-folderStructure-permissions"></div>
|
||||
|
||||
<div class="t3js-folderStructure-ok mt-4" style="display:none">
|
||||
<h3>These structures don't need to be fixed:</h3>
|
||||
<div class="t3js-folderStructure-ok-list"></div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,380 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<h2>True type font tests</h2>
|
||||
<f:be.infobox title="FreeType2 hint" state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::INFO')}">
|
||||
<p>If the two images below do not look the same, please check your FreeType 2 module.</p>
|
||||
</f:be.infobox>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingTrueType"></div>
|
||||
|
||||
<h2>Convert image formats to jpg</h2>
|
||||
<p>
|
||||
This verifies that your ImageMagick / GraphicsMagick installation is able to read the default
|
||||
formats <code>jpg</code>, <code>gif</code>, <code>png</code>, <code>tif</code>, <code>pdf</code> and
|
||||
<code>ai</code>, <code>webp</code> and <code>avif</code>.
|
||||
The tool <code>identify</code> is used to read the pixel dimensions of non-web formats and 'convert' is used to
|
||||
read the image and convert it to <code>jpg</code>.
|
||||
</p>
|
||||
<f:be.infobox title="Dark images" state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::INFO')}">
|
||||
<p>
|
||||
In case the images appear remarkably darker than the reference images,
|
||||
try to set<br/> <code>$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_colorspace'] = 'sRGB';</code>.
|
||||
</p>
|
||||
</f:be.infobox>
|
||||
|
||||
<h3>Read jpg</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingReadJpg"></div>
|
||||
|
||||
<h3>Read gif</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingReadGif"></div>
|
||||
|
||||
<h3>Read png</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingReadPng"></div>
|
||||
|
||||
<h3>Read webp</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingReadWebp"></div>
|
||||
|
||||
<h3>Read avif</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingReadAvif"></div>
|
||||
|
||||
<h3>Read tif</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingReadTif"></div>
|
||||
|
||||
<h3>Read pdf</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingReadPdf"></div>
|
||||
|
||||
<h3>Read ai</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingReadAi"></div>
|
||||
|
||||
<h2>Writing gif, png, webp, avif</h2>
|
||||
<p>
|
||||
This verifies that ImageMagick / GraphicsMagick is able to write GIF, PNG, WEBP and AVIF files.
|
||||
</p>
|
||||
|
||||
<h3>Write gif</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingWriteGif"></div>
|
||||
|
||||
<h3>Write png</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingWritePng"></div>
|
||||
|
||||
<h3>Write webp</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingWriteWebp"></div>
|
||||
|
||||
<h3>Write avif</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingWriteAvif"></div>
|
||||
|
||||
<h2>Scaling images</h2>
|
||||
<p>
|
||||
This shows how ImageMagick / GraphicsMagick reacts when scaling transparent GIF and PNG files.
|
||||
</p>
|
||||
|
||||
<h3>gif to gif</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingGifToGif"></div>
|
||||
|
||||
<h3>png to png</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingPngToPng"></div>
|
||||
|
||||
<h3>gif to jpg</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingGifToJpg"></div>
|
||||
|
||||
<h3>transparent svg to webp</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingSvgToWebp"></div>
|
||||
|
||||
<h3>transparent svg to png</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingSvgToPng"></div>
|
||||
|
||||
<h2>Special image formats</h2>
|
||||
<p>
|
||||
This shows how ImageMagick /GraphicsMagicks reacts when converting to image formats like WEBP and AVIF.
|
||||
</p>
|
||||
|
||||
<h3>jpg to webp</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingJpgToWebp"></div>
|
||||
|
||||
<h3>jpg to avif</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingJpgToAvif"></div>
|
||||
|
||||
<h3>png to webp</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingPngToWebp"></div>
|
||||
|
||||
<h3>png to avif</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingPngToAvif"></div>
|
||||
|
||||
<h2>Combining images</h2>
|
||||
<p>
|
||||
This verifies that the ImageMagick / GraphicsMagick tools, <code>combine</code>, <code>composite</code>, are able to
|
||||
combine two images through a grayscale mask.
|
||||
</p>
|
||||
|
||||
<h3>Combine using a GIF mask with only black and white</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingCombineGifMask"></div>
|
||||
|
||||
<h3>Combine using a JPG mask with graylevels</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingCombineJpgMask"></div>
|
||||
|
||||
<h2>GDlib</h2>
|
||||
<p>
|
||||
This verifies that the GDLib installation works properly.
|
||||
</p>
|
||||
|
||||
<h3>Create simple image</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingGdlibSimple"></div>
|
||||
|
||||
<h3>Create image with box from file</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingGdlibFromFile"></div>
|
||||
|
||||
<h3>Create webp image with box from webp file</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingGdlibFromFileToWebp"></div>
|
||||
|
||||
<h3>Create avif image with box from file</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingGdlibFromFileToAvif"></div>
|
||||
|
||||
<h3>Render text with TrueType font</h3>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingGdlibRenderText"></div>
|
||||
|
||||
<h3>Render text with TrueType font using 'niceText' option</h3>
|
||||
<f:be.infobox title="Note on 'niceText'" state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::INFO')}">
|
||||
<p>
|
||||
'niceText' is a concept that tries to improve the antialiasing of the rendered type by actually
|
||||
rendering the textstring in double size on a black/white mask, downscaling the mask and masking
|
||||
the text onto the image through this mask. This involves ImageMagick / GraphicsMagick 'combine'/'composite' and 'convert'.
|
||||
</p>
|
||||
</f:be.infobox>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingGdlibNiceText"></div>
|
||||
|
||||
<h3>Render 'niceText' with a shadow under</h3>
|
||||
<f:be.infobox title="Note on 'shadow'" state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::INFO')}">
|
||||
<p>
|
||||
This test makes sense only if the above test had a correct output. But if so, you may not see
|
||||
a soft drop-shadow from the third text string as you should. In that case you are most likely using
|
||||
ImageMagick 5 and should set the flag <code>$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_effects']</code>.
|
||||
</p>
|
||||
</f:be.infobox>
|
||||
<div class="t3js-imageProcessing-twinContainer" data-test="imageProcessingGdlibNiceTextShadow"></div>
|
||||
|
||||
<div class="panel-group mb-0" id="accordion" role="tablist" aria-multiselectable="true">
|
||||
<div class="panel panel-default">
|
||||
<h2 class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
type="button"
|
||||
class="panel-button collapsed"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-parent="#accordion"
|
||||
data-bs-target="#collapseConfiguration"
|
||||
aria-controls="collapseConfiguration"
|
||||
aria-expanded="false"
|
||||
id="headingConfiguration"
|
||||
>
|
||||
<div class="panel-title">
|
||||
<strong>Current configuration</strong>
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
<div id="collapseConfiguration" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingConfiguration">
|
||||
<div class="table-fit">
|
||||
<table class="table table-striped">
|
||||
<tr>
|
||||
<td>{imageProcessingProcessor} enabled:</td>
|
||||
<td>{f:if(condition:imageProcessingEnabled, then:'Yes', else:'No')}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ImageMagick or GraphicsMagick:</td>
|
||||
<td>{imageProcessingProcessor}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{imageProcessingProcessor} path:</td>
|
||||
<td>{imageProcessingPath}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{imageProcessingProcessor} version:</td>
|
||||
<td>{imageProcessingVersion}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{imageProcessingProcessor} effects enabled:</td>
|
||||
<td>{imageProcessingEffects} <span>(Blurring/Sharpening with {imageProcessingProcessor})</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>GDLib enabled:</td>
|
||||
<td>{f:if(condition:imageProcessingGdlibEnabled, then:'Yes', else:'No')}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>GDLib using PNG:</td>
|
||||
<td>{f:if(condition:imageProcessingGdlibPng, then:'Yes', else:'No')}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>File Formats:</td>
|
||||
<td>{imageProcessingFileFormats}</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<h2 class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
type="button"
|
||||
class="panel-button collapsed"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-parent="#accordion"
|
||||
data-bs-target="#collapseVerify"
|
||||
aria-controls="collapseVerify"
|
||||
aria-expanded="false"
|
||||
id="headingVerify"
|
||||
>
|
||||
<div class="panel-title">
|
||||
<strong>Verify test results</strong>
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
<div id="collapseVerify" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingVerify">
|
||||
<div class="panel-body">
|
||||
<h3>Verify test results</h3>
|
||||
<p>
|
||||
This page performs image processing and displays the result. It's a thorough check
|
||||
that everything you've configured is working correctly.
|
||||
</p>
|
||||
<p>
|
||||
It's quite simple to verify your installation; Just look down the page, the images
|
||||
in pairs should look like each other. If some images are not alike, something is
|
||||
wrong. You may also notice warnings and errors if this tool found signs of any problems.
|
||||
</p>
|
||||
<p>
|
||||
The image to the left is the reference image (how it should be) and to the right
|
||||
the image made by your server.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<h2 class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
type="button"
|
||||
class="panel-button collapsed"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-parent="#accordion"
|
||||
data-bs-target="#collapseAbout"
|
||||
aria-controls="collapseAbout"
|
||||
aria-expanded="false"
|
||||
id="headingAbout"
|
||||
>
|
||||
<div class="panel-title">
|
||||
<strong>About image handling</strong>
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
<div id="collapseAbout" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingAbout">
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
TYPO3 is known for its ability to process images on the server.
|
||||
</p>
|
||||
<p>
|
||||
In the backend interface (TBE) thumbnails are automatically generated
|
||||
as well as icons, menu items and pane tabs (by GDLib).
|
||||
In the frontend all kinds of graphical elements are processed. Typically, images are
|
||||
scaled down to fit the pages (by ImageMagick/GraphicsMagick) and menu items, graphical headers and
|
||||
such are generated automatically (by GDLib + ImageMagick/GraphicsMagick). In addition, TYPO3 is able
|
||||
to handle many file formats (thanks to ImageMagick/GraphicsMagick), for example TIF, BMP, PCX, TGA,
|
||||
AI and PDF in addition to the standard web formats; JPG, GIF, PNG. Additional image formats like WEBP
|
||||
and AVIF are available depending on installed codecs on the system.
|
||||
</p>
|
||||
<p>
|
||||
In order to do this, TYPO3 uses two sets of tools:
|
||||
</p>
|
||||
<strong>
|
||||
ImageMagick / GraphicsMagick:
|
||||
</strong>
|
||||
<p>
|
||||
For conversion of non-web formats to web formats, combining images with alpha-masks,
|
||||
performing image-effects like blurring and sharpening.
|
||||
</p>
|
||||
<p>
|
||||
ImageMagick is a collection of external programs on the server called by the exec()
|
||||
function in PHP. TYPO3 uses three of these, namely 'convert' (converting file formats,
|
||||
scaling, effects), 'combine'/'composite' (combining images with masks) and 'identify'
|
||||
(returns image information). GraphicsMagick is an alternative to ImageMagick and can
|
||||
be enabled by setting [GFX][processor] to 'GraphicsMagick'. This is recommended and enabled
|
||||
by default. Because ImageMagick and GraphicsMagick are external programs, a requirement
|
||||
must be met: The programs must be installed on the server and working. ImageMagick is
|
||||
available for both Windows and Unix. The current version is 6+. ImageMagick homepage is
|
||||
at <a href="https://www.imagemagick.org/">https://www.imagemagick.org/</a>
|
||||
</p>
|
||||
<strong>GDLib:</strong>
|
||||
<p>
|
||||
For drawing boxes and rendering text on images with TrueType fonts. Also used for
|
||||
icons, menuitems and generally the TypoScript GIFBUILDER object is based on GDlib,
|
||||
but extensively utilizing ImageMagick to process intermediate results.
|
||||
</p>
|
||||
<p>
|
||||
GDLib is accessed through internal functions in PHP, you'll need a version of PHP
|
||||
with GDLib compiled in. Also in order to use TrueType fonts with GDLib you'll
|
||||
need FreeType compiled in as well.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<h2 class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
type="button"
|
||||
class="panel-button collapsed"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-parent="#accordion"
|
||||
data-bs-target="#collapseTestImages"
|
||||
aria-controls="collapseTestImages"
|
||||
aria-expanded="false"
|
||||
id="headingTestImages"
|
||||
>
|
||||
<div class="panel-title">
|
||||
<strong>About test images</strong>
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
<div id="collapseTestImages" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTestImages">
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
Test-Image by Rotkaeppchen68 (in de.wikipedia) [<a href="http://www.gnu.org/copyleft/fdl.html">GFDL</a> or
|
||||
<a href="http://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA-3.0</a>],
|
||||
<a href="https://commons.wikimedia.org/wiki/File%3AFuBK-Testbild.png">via Wikimedia Commons</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="t3js-imageProcessing-twinImage-template">
|
||||
<div class="t3-install-displaytwinimageimages t3js-imageProcessing-images" hidden>
|
||||
<div class="row">
|
||||
<div class="col-12 col-md-6">
|
||||
<h3>Reference</h3>
|
||||
<div class="bg-transparent-emulation">
|
||||
<img class="reference"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6">
|
||||
<h3>Your system</h3>
|
||||
<div class="bg-transparent-emulation">
|
||||
<img class="result"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="t3-install-displaytwinimagetextarea t3js-imageProcessing-command" hidden>
|
||||
<pre class="language-bash"><code class="language-bash t3js-imageProcessing-command-text"></code></pre>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,45 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>
|
||||
Check the basic mail functionality by entering your email address here and clicking the button.
|
||||
You should then receive a test email from "{mailTestSenderAddress}".
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If no email is received, your setup might be broken. Check the following:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
If <code>$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport']</code> is set to mail or sendmail, TYPO3 tries to use
|
||||
the operating systems' sendmail application. There might be no such program installed.
|
||||
</li>
|
||||
<li>
|
||||
If <code>$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport']</code> is set to smtp, check if the data given in
|
||||
<code>$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_smtp_*']</code> is valid. Wrong data here results in faulty
|
||||
requests to the mail server. You can find the resulting messages in the mail server log.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
Not receiving the test email could also be a consequence of it being intercepted by a spam filter or due to the
|
||||
sending domain's email security settings, such as SPF record, which may prevent successful delivery.
|
||||
</p>
|
||||
|
||||
<div class="t3js-module-content" data-mail-test-token="{mailTestToken}">
|
||||
<div class="t3js-mailTest-output"></div>
|
||||
|
||||
<f:if condition="{isSendPossible}">
|
||||
<form id="t3js-mailTest-form" spellcheck="false">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="t3-install-checkmail">Email address:</label>
|
||||
<input
|
||||
id="t3-install-checkmail"
|
||||
type="email"
|
||||
class="t3-install-form-input-text form-control t3js-mailTest-email"
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
</form>
|
||||
</f:if>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,7 @@
|
||||
<html xmlns:i="http://typo3.org/ns/TYPO3/CMS/Install/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<div id="phpinfo">
|
||||
<i:phpInfo/>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,62 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:i="http://typo3.org/ns/TYPO3/CMS/Install/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<td>Operating system:</td>
|
||||
<td><strong>{systemInformationOperatingSystem}</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PHP version:</td>
|
||||
<td>
|
||||
<strong>{phpVersion}</strong>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PHP CGI detected:</td>
|
||||
<td><strong>{f:if(condition:systemInformationCgiDetected, then:'Yes', else:'No')}</strong></td>
|
||||
</tr>
|
||||
<f:if condition="{systemInformationDatabaseConnections -> f:count()} > 1">
|
||||
<tr>
|
||||
<td>Number of database connections:</td>
|
||||
<td><strong>{systemInformationDatabaseConnections -> f:count()}</strong></td>
|
||||
</tr>
|
||||
</f:if>
|
||||
<f:for each="{systemInformationDatabaseConnections}" as="connection">
|
||||
<tr>
|
||||
<td>Database connection <strong>'{connection.connectionName}'</strong></td>
|
||||
<td>
|
||||
<ul>
|
||||
<li><strong>Database name:</strong> {connection.databaseName}</li>
|
||||
<li><strong>Username:</strong> {connection.username}</li>
|
||||
<li><strong>Host:</strong> {connection.host}</li>
|
||||
<f:if condition="{connection.port}">
|
||||
<f:then>
|
||||
<li><strong>Port:</strong> {connection.port}</li>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<li>
|
||||
<strong>Socket:</strong>
|
||||
{f:if(condition:connection.socket, then: '{connection.socket}', else:'<em>PHP default</em>')}
|
||||
</li>
|
||||
</f:else>
|
||||
</f:if>
|
||||
<li>
|
||||
<strong>Version:</strong> {connection.version}
|
||||
</li>
|
||||
<li><strong>Tables:</strong> {connection.numberOfTables}</li>
|
||||
<f:if condition="{connection.numberOfMappedTables}">
|
||||
<f:then>
|
||||
<li><strong>Mapped tables:</strong> {connection.numberOfMappedTables}</li>
|
||||
</f:then>
|
||||
</f:if>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</f:for>
|
||||
<tr>
|
||||
<td>Application Context:</td>
|
||||
<td><strong class="text-{systemInformationApplicationContext.status}">{systemInformationApplicationContext.context}</strong></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</html>
|
||||
@@ -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>
|
||||
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en"
|
||||
{f:if(condition: colorScheme, then: ' data-color-scheme="{colorScheme}"')}{f:if(condition: theme, then: ' data-theme="{theme}"')}
|
||||
data-icon-cache-identifier="{iconCacheIdentifier}"
|
||||
>
|
||||
<head>
|
||||
<title>Install Tool on site {siteName}</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<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()}
|
||||
<script type="module" src="{initModule}"></script>
|
||||
</head>
|
||||
<body class="t3js-body" data-controller="{controller}" data-context="{context}">
|
||||
<div id="t3js-ui-block" class="ui-block">
|
||||
<core:icon identifier="spinner-circle" size="large" />
|
||||
<h2 id="t3js-ui-block-detail">Initializing</h2>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,174 @@
|
||||
<html
|
||||
xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers"
|
||||
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true"
|
||||
>
|
||||
|
||||
<f:if condition="{context} == 'backend'">
|
||||
<f:then>
|
||||
|
||||
<div class="module module-layout-normal" data-module-id="" data-module-name="{moduleName}">
|
||||
<div class="module-docheader module-docheader-navigation t3js-module-docheader-navigation">
|
||||
<div class="module-docheader-column module-docheader-column-breadcrumb"></div>
|
||||
<div class="module-docheader-column"></div>
|
||||
</div>
|
||||
<div class="module-body t3js-module-body">
|
||||
<div class="module-body-container t3js-module-body-container">
|
||||
<div id="t3js-ui-block" class="ui-block">
|
||||
<core:icon identifier="spinner-circle" size="large" />
|
||||
<h2 id="t3js-ui-block-detail">Loading cards</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</f:then>
|
||||
<f:else>
|
||||
|
||||
<div class="scaffold t3js-scaffold">
|
||||
<div class="scaffold-header t3js-scaffold-header">
|
||||
<div class="scaffold-topbar t3js-scaffold-topbar">
|
||||
<div class="topbar t3js-topbar">
|
||||
<typo3-backend-sidebar-toggle
|
||||
class="topbar-button topbar-button-modulemenu"
|
||||
label-collapse="Collapse sidebar"
|
||||
label-expand="Expand sidebar"
|
||||
></typo3-backend-sidebar-toggle>
|
||||
<a class="topbar-site" href="" target="_top" title="TYPO3.CMS">
|
||||
<span class="topbar-site-logo">
|
||||
<img src="{f:uri.resource(path: 'EXT:install/Resources/Public/Images/typo3_logo_orange.svg')}" width="22" height="22" title="TYPO3 Content Management System" alt="TYPO3 Content Management System">
|
||||
</span>
|
||||
<span class="topbar-site-title">
|
||||
<span class="topbar-site-name">Install Tool<f:if condition="{siteName}"> on site: {siteName}</f:if></span>
|
||||
<span class="topbar-site-version">TYPO3 CMS {currentTypo3Version}</span>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="scaffold-sidebar t3js-scaffold-sidebar">
|
||||
<div class="sidebar-container">
|
||||
<div class="sidebar-component">
|
||||
<div class="modulemenu t3js-modulemenu" role="menubar" data-role="modulemenu" id="modulemenu">
|
||||
<ul class="modulemenu-group-container">
|
||||
<li data-level="1">
|
||||
<a
|
||||
href="?__typo3_install&{f:format.urlencode(value: 'install[controller]')}=maintenance"
|
||||
title="Maintenance"
|
||||
class="modulemenu-action"
|
||||
role="menuitem"
|
||||
data-installroute-controller="maintenance"
|
||||
>
|
||||
<span class="modulemenu-icon" aria-hidden="true"><core:icon identifier="module-install-maintenance" size="medium" alternativeMarkupIdentifier="inline"/></span>
|
||||
<span class="modulemenu-name">Maintenance</span>
|
||||
<span class="modulemenu-indicator" aria-hidden="true"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li data-level="1">
|
||||
<a
|
||||
href="?__typo3_install&{f:format.urlencode(value: 'install[controller]')}=settings"
|
||||
title="Settings"
|
||||
class="modulemenu-action"
|
||||
role="menuitem"
|
||||
data-installroute-controller="settings"
|
||||
>
|
||||
<span class="modulemenu-icon" aria-hidden="true"><core:icon identifier="module-install-settings" size="medium" alternativeMarkupIdentifier="inline"/></span>
|
||||
<span class="modulemenu-name">Settings</span>
|
||||
<span class="modulemenu-indicator" aria-hidden="true"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li data-level="1">
|
||||
<a
|
||||
href="?__typo3_install&{f:format.urlencode(value: 'install[controller]')}=upgrade"
|
||||
title="Upgrade"
|
||||
class="modulemenu-action"
|
||||
role="menuitem"
|
||||
data-installroute-controller="upgrade"
|
||||
>
|
||||
<span class="modulemenu-icon" aria-hidden="true"><core:icon identifier="module-install-upgrade" size="medium" alternativeMarkupIdentifier="inline"/></span>
|
||||
<span class="modulemenu-name">Upgrade</span>
|
||||
<span class="modulemenu-indicator" aria-hidden="true"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li data-level="1">
|
||||
<a
|
||||
href="?__typo3_install&{f:format.urlencode(value: 'install[controller]')}=environment"
|
||||
title="Environment"
|
||||
class="modulemenu-action"
|
||||
role="menuitem"
|
||||
data-installroute-controller="environment"
|
||||
>
|
||||
<span class="modulemenu-icon" aria-hidden="true"><core:icon identifier="module-install-environment" size="medium" alternativeMarkupIdentifier="inline"/></span>
|
||||
<span class="modulemenu-name">Environment</span>
|
||||
<span class="modulemenu-indicator" aria-hidden="true"></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="modulemenu-group-spacer"></li>
|
||||
|
||||
<li data-level="1">
|
||||
<a
|
||||
href="{backendUrl}"
|
||||
title="Switch to Backend"
|
||||
class="modulemenu-action"
|
||||
role="menuitem"
|
||||
>
|
||||
<span class="modulemenu-icon" aria-hidden="true"><core:icon identifier="module-web" size="medium" alternativeMarkupIdentifier="inline"/></span>
|
||||
<span class="modulemenu-name">Switch to Backend</span>
|
||||
<span class="modulemenu-indicator" aria-hidden="true"></span>
|
||||
</a>
|
||||
</li>
|
||||
<li data-level="1">
|
||||
<a
|
||||
href="{frontendUrl}"
|
||||
title="Switch to Frontend"
|
||||
class="modulemenu-action"
|
||||
role="menuitem"
|
||||
>
|
||||
<span class="modulemenu-icon" aria-hidden="true"><core:icon identifier="module-site" size="medium" alternativeMarkupIdentifier="inline"/></span>
|
||||
<span class="modulemenu-name">Switch to Frontend</span>
|
||||
<span class="modulemenu-indicator" aria-hidden="true"></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="modulemenu-group-spacer"></li>
|
||||
|
||||
<li data-level="1">
|
||||
<a
|
||||
title="Logout"
|
||||
class="modulemenu-action t3js-login-lockInstallTool"
|
||||
role="menuitem"
|
||||
id="logout"
|
||||
href=""
|
||||
>
|
||||
<span class="modulemenu-icon" aria-hidden="true"><core:icon identifier="actions-logout" alternativeMarkupIdentifier="inline"/></span>
|
||||
<span class="modulemenu-name">Logout</span>
|
||||
<span class="modulemenu-indicator" aria-hidden="true"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="scaffold-content t3js-scaffold-content">
|
||||
<div class="scaffold-content-module t3js-scaffold-content-module">
|
||||
<div class="module">
|
||||
<div class="module-body t3js-module-body">
|
||||
<div class="module-body-container t3js-module-body-container">
|
||||
<div id="t3js-ui-block" class="ui-block">
|
||||
<core:icon identifier="spinner-circle" size="large" />
|
||||
<h2 id="t3js-ui-block-detail">Loading cards</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="scaffold-overlay"></div>
|
||||
</div>
|
||||
|
||||
</f:else>
|
||||
</f:if>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,43 @@
|
||||
<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="logo" alt="TYPO3 logo" />
|
||||
<h1>The Install Tool is locked</h1>
|
||||
</div>
|
||||
<div class="typo3-install-content-body">
|
||||
<div class="callout callout-warning">
|
||||
<div class="callout-content">
|
||||
<div class="callout-title">The Install Tool is locked</div>
|
||||
<div class="callout-body">
|
||||
<ul>
|
||||
<li>
|
||||
<strong>If you are installing TYPO3</strong>, please create the file
|
||||
<code>FIRST_INSTALL</code> in the document root of your web server.
|
||||
New to TYPO3? We recommend reading the
|
||||
<a href="https://docs.typo3.org/permalink/t3start:start" target="_blank" rel="noreferrer"><u>Getting Started Documentation</u></a>.
|
||||
</li>
|
||||
<li>
|
||||
<strong>For an existing TYPO3 installation</strong>, please create the file
|
||||
<code>ENABLE_INSTALL_TOOL</code> in the directory <code>{enableInstallToolPath}</code>.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
Either file must be writable by the web server user.
|
||||
The filename is case-sensitive. The file can be empty.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Security note:</strong>
|
||||
When you are finished with your task, you should rename or delete any <code>FIRST_INSTALL</code>
|
||||
and <code>ENABLE_INSTALL_TOOL</code> files. They will automatically be deleted if you log out of
|
||||
the Install Tool or if the file is older than one hour.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,73 @@
|
||||
<html xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers" xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:i="http://typo3.org/ns/TYPO3/CMS/Install/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="logo" alt="TYPO3 logo" />
|
||||
<h1>Login to TYPO3 Install Tool</h1>
|
||||
<f:if condition="{siteName}"><p>Site: {siteName}</p></f:if>
|
||||
</div>
|
||||
<div class="typo3-install-content-body">
|
||||
|
||||
<form method="post" id="t3-install-form-login" data-login-token="{loginToken}" spellcheck="false">
|
||||
<div class="form-group">
|
||||
<label class="form-label" for="t3-install-form-password">Password</label>
|
||||
<input class="form-control t3-install-form-input-text" id="t3-install-form-password" type="password" name="install[password]" autofocus="autofocus" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="button" class="btn btn-primary t3js-login-login">
|
||||
Login
|
||||
</button>
|
||||
<f:if condition="!{installToolEnableFilePermanent}">
|
||||
<button type="button" class="btn btn-default t3js-login-lockInstallTool">
|
||||
<core:icon identifier="actions-lock" size="small" /> Lock Install Tool again
|
||||
</button>
|
||||
</f:if>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="t3js-login-output"></div>
|
||||
|
||||
<f:if condition="{installToolEnableFilePermanent}">
|
||||
<div class="callout callout-danger">
|
||||
<div class="callout-content">
|
||||
<div class="callout-title">Install Tool is permanently enabled</div>
|
||||
<div class="callout-body">
|
||||
The Install Tool is permanently enabled because our <code>ENABLE_INSTALL_TOOL</code> file contains
|
||||
the text <em>KEEP_FILE</em>. <strong>Never use this on production systems!</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<div class="callout callout-info">
|
||||
<div class="callout-content">
|
||||
<div class="callout-title">Information</div>
|
||||
<div class="callout-body">
|
||||
By default the Install Tool password is the one specified during the installation.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="callout callout-warning">
|
||||
<div class="callout-content">
|
||||
<div class="callout-title">Important</div>
|
||||
<div class="callout-body">
|
||||
If you don't know the current password, you can set a new one by setting the value of
|
||||
<code>$GLOBALS['TYPO3_CONF_VARS']['BE']['installToolPassword']</code> in <code>{configFile}</code> to
|
||||
the hash value of the password you desire, which will be shown if you enter the desired password
|
||||
in this form and submit it.
|
||||
<br /><br />
|
||||
You can also use the <code>bin/typo3 install:password:set</code> command to set this password via
|
||||
the command line interface (CLI).
|
||||
<br /><br />
|
||||
This password gives an attacker full control over your instance if cracked. It should be strong
|
||||
(include lower and upper case characters, special characters and numbers) and at least eight characters long.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,99 @@
|
||||
<f:layout name="Cards"/>
|
||||
|
||||
<f:section name="headline">
|
||||
<h1>Maintenance</h1>
|
||||
</f:section>
|
||||
|
||||
<f:section name="cards">
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Flush TYPO3 and PHP Cache', subtitle: 'Caching', icon: 'EXT:install/Resources/Public/Icons/modules/install-clear-cache.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Clear all registered TYPO3 caches, including opcode and dependency injection cache.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-inline="1" data-import="@typo3/install/module/maintenance/cache.js">Flush cache</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Analyze Database Structure', subtitle: 'Database', icon: 'EXT:install/Resources/Public/Icons/modules/install-database-analyze.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Compare and update the database table and field definitions of your installation against the specification defined for activated extension.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/maintenance/database-analyzer.js">Analyze database…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Remove Temporary Assets', subtitle: 'Caching', icon: 'EXT:install/Resources/Public/Icons/modules/install-clear-files.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Clear temporary files including concatenated JS/CSS files and processed images.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/maintenance/clear-typo3temp-files.js">Scan temporary files…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small {f:if(condition:'{composerMode}', then: 'card-disabled')}">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Rebuild PHP Autoload Information', subtitle: 'Caching', icon: 'EXT:install/Resources/Public/Icons/modules/install-clear-autoload.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Reset autoload information for active third party extensions.</p>
|
||||
</div>
|
||||
<f:if condition="{composerMode}">
|
||||
<f:then>
|
||||
<div class="card-footer text-variant">
|
||||
This feature is unavailable because the installation is running in Composer mode.
|
||||
Guide: <a href="https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Autoloading/Index.html#loading-classes-with-composer-mode" target="_blank" rel="noreferrer">Composer dumpautoload</a>.
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-inline="1" data-import="@typo3/install/module/maintenance/dump-autoload.js">Dump autoload</button>
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Clear Persistent Database Tables', subtitle: 'Database', icon: 'EXT:install/Resources/Public/Icons/modules/install-clear-database.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Truncate persistent database tables which are not related to caching.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/maintenance/clear-tables.js">Scan tables…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Check and Update Reference Index', subtitle: 'Database', icon: 'EXT:install/Resources/Public/Icons/modules/install-database-analyze.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Verify the reference index for inconsistencies or rebuild it to update database relations.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/maintenance/reference-index.js">Manage reference index…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Create Administrative User', subtitle: 'Backend Users', icon: 'EXT:install/Resources/Public/Icons/modules/install-create-admin.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Create new administrative users and grant them system maintainer privileges (optional).</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-modal-size="small" data-import="@typo3/install/module/maintenance/create-admin.js">Create Administrator…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Reset Backend User Preferences', subtitle: 'Backend Users', icon: 'EXT:install/Resources/Public/Icons/modules/install-reset-user.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Clear preferences and settings for all backend users. This action permanently deletes all user-specific data in the database table <code>be_users</code>.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-inline="1" data-import="@typo3/install/module/maintenance/reset-backend-user-uc.js">Reset backend user preferences</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Manage Language Packs', subtitle: 'Language', icon: 'EXT:install/Resources/Public/Icons/modules/install-manage-language.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Download and update language packs for installed extensions and the TYPO3 backend.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/maintenance/language-packs.js">Manage languages…</button>
|
||||
</div>
|
||||
</div>
|
||||
</f:section>
|
||||
@@ -0,0 +1,35 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>
|
||||
Clear semi-temporary data stored in persistent database tables that are not affected by the
|
||||
<strong>"Clear All Cache"</strong> action.
|
||||
</p>
|
||||
<p>
|
||||
This removes all records from the selected tables and may be useful in specific maintenance scenarios.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Use with caution.</strong> Clearing these tables can affect site functionality, for example by logging out users,
|
||||
removing session or basket data, and deleting log information.
|
||||
</p>
|
||||
|
||||
<div class="t3js-module-content" data-clear-tables-clear-token="{clearTablesClearToken}">
|
||||
<div class="module-action-list t3js-clearTables-stat-container"></div>
|
||||
</div>
|
||||
|
||||
<template id="t3js-clearTables-stat-template">
|
||||
<div class="module-action-item">
|
||||
<div class="module-action-item-body">
|
||||
<div class="module-action-item-title t3js-clearTables-stat-description">{clearTableStatistic.description}</div>
|
||||
<div class="module-action-item-description">
|
||||
<strong class="t3js-clearTables-stat-rows"></strong> row(s) found in table <code class="t3js-clearTables-stat-name"></code>
|
||||
</div>
|
||||
</div>
|
||||
<div class="module-action-item-action">
|
||||
<button type="button" class="btn btn-default btn-sm t3js-clearTables-clear">
|
||||
<core:icon identifier="actions-delete" size="small" /> Delete rows
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,36 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>
|
||||
Remove processed files and cached images stored by TYPO3 to free up disk space.
|
||||
</p>
|
||||
<p>
|
||||
TYPO3 stores processed files (such as image variants and thumbnails) in a dedicated directory
|
||||
that can grow quickly over time.<br>
|
||||
Use this action to delete these files. Afterward, clear the cache database tables to ensure consistency.
|
||||
</p>
|
||||
<p>
|
||||
The File Abstraction Layer (FAL) also keeps database records for processed files. If image processing settings
|
||||
have changed (see <strong>System → Settings → Configure Installation-Wide Options → [GFX]</strong>),
|
||||
removing processed files forces them to be regenerated with the updated configuration.
|
||||
</p>
|
||||
|
||||
<div class="t3js-module-content" data-clear-typo3temp-delete-token="{clearTypo3tempFilesToken}">
|
||||
<div class="module-action-list t3js-clearTypo3temp-stat-container"></div>
|
||||
</div>
|
||||
|
||||
<template id="t3js-clearTypo3temp-stat-template">
|
||||
<div class="module-action-item">
|
||||
<div class="module-action-item-body">
|
||||
<div class="module-action-item-description">
|
||||
<strong class="t3js-clearTypo3temp-stat-directory"></strong> contains <output class="t3js-clearTypo3temp-stat-numberOfFiles"></output> files
|
||||
</div>
|
||||
</div>
|
||||
<div class="module-action-item-action">
|
||||
<button type="button" class="btn btn-default btn-sm t3js-clearTypo3temp-delete">
|
||||
<core:icon identifier="actions-delete" size="small" /> Delete files
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,78 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<div class="t3js-module-content" data-create-admin-token="{createAdminToken}">
|
||||
<form action="" id="t3js-createAdmin-form" method="post" spellcheck="false">
|
||||
<div class="form-group">
|
||||
<label for="t3-install-admin-username" class="form-label">Username:</label>
|
||||
<input
|
||||
id="t3-install-admin-username"
|
||||
class="t3-install-form-input-text t3js-createAdmin-user form-control"
|
||||
type="text"
|
||||
autocomplete="off"
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="t3-install-admin-password" class="form-label">Password:</label>
|
||||
<input
|
||||
id="t3-install-admin-password"
|
||||
class="t3-install-form-input-text t3-install-form-password-strength t3js-createAdmin-password form-control"
|
||||
type="password"
|
||||
autocomplete="off"
|
||||
required
|
||||
/>
|
||||
<f:if condition="{passwordPolicyRequirements}">
|
||||
<p class="mt-2 mb-1 text-variant">Password must match the following requirements:</p>
|
||||
<ul>
|
||||
<f:for each="{passwordPolicyRequirements}" as="requirement">
|
||||
<li class="text-variant">{requirement}</li>
|
||||
</f:for>
|
||||
</ul>
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="t3-install-admin-password-repeat" class="form-label">Repeat password:</label>
|
||||
<input
|
||||
id="t3-install-admin-password-repeat"
|
||||
class="t3-install-form-input-text t3js-createAdmin-password-check form-control"
|
||||
type="password"
|
||||
autocomplete="off"
|
||||
required
|
||||
/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="t3-install-admin-realname" class="form-label">Name</label>
|
||||
<input
|
||||
type="text"
|
||||
class="t3-install-form-input-text t3js-createAdmin-realname form-control"
|
||||
name="realName"
|
||||
id="t3-install-admin-realname"
|
||||
/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="t3-install-admin-email" class="form-label">Email address</label>
|
||||
<input
|
||||
type="email"
|
||||
class="t3-install-form-input-text t3js-createAdmin-email form-control"
|
||||
name="email"
|
||||
id="t3-install-admin-email"
|
||||
/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-check">
|
||||
<input
|
||||
class="t3-install-form-input-checkbox t3js-createAdmin-system-maintainer form-check-input"
|
||||
type="checkbox"
|
||||
id="typo3-install-admin-add-as-system-maintainer"
|
||||
/>
|
||||
<label for="typo3-install-admin-add-as-system-maintainer" class="form-check-label">
|
||||
Add as system maintainer
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="t3js-createAdmin-output"></div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,55 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>
|
||||
Compare the current database structure with the definitions provided by all loaded extensions
|
||||
(<code>ext_tables.sql</code>).<br>
|
||||
Apply suggested changes to update, modify, or remove tables and fields as needed.
|
||||
</p>
|
||||
|
||||
<div class="t3js-databaseAnalyzer-notification"></div>
|
||||
|
||||
<div class="t3js-module-content" data-database-analyzer-execute-token="{databaseAnalyzerExecuteToken}">
|
||||
<div class="t3js-databaseAnalyzer-output"></div>
|
||||
</div>
|
||||
|
||||
<template id="t3js-databaseAnalyzer-suggestion-block">
|
||||
<fieldset>
|
||||
<h4 class="t3js-databaseAnalyzer-suggestion-block-legend"></h4>
|
||||
<ol class="list-unstyled t3js-databaseAnalyzer-suggestion-list">
|
||||
<li class="t3-install-form-label-after">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="checkbox"
|
||||
class="form-check-input t3js-databaseAnalyzer-suggestion-block-checkbox"
|
||||
/>
|
||||
<label class="form-check-label t3js-databaseAnalyzer-suggestion-block-label">select/deselect all</label>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</fieldset>
|
||||
</template>
|
||||
|
||||
<template id="t3js-databaseAnalyzer-suggestion-line-template">
|
||||
<li class="t3js-databaseAnalyzer-suggestion-line t3-install-form-label-after">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="checkbox"
|
||||
class="form-check-input t3js-databaseAnalyzer-suggestion-line-checkbox"
|
||||
value="1"
|
||||
/>
|
||||
<label class="form-check-label t3js-databaseAnalyzer-suggestion-line-label">
|
||||
<span class="t3js-databaseAnalyzer-suggestion-line-statement"></span>
|
||||
<span class="t3js-databaseAnalyzer-suggestion-line-current" style="display:none;">
|
||||
<br>
|
||||
Current value: <span class="t3js-databaseAnalyzer-suggestion-line-current-value"></span>
|
||||
</span>
|
||||
<span class="t3js-databaseAnalyzer-suggestion-line-count" style="display:none;">
|
||||
<br>
|
||||
Rows in table: <span class="t3js-databaseAnalyzer-suggestion-line-count-value"></span>
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
</template>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,33 @@
|
||||
<html xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<div
|
||||
class="t3js-module-content"
|
||||
data-language-packs-activate-language-token="{languagePacksActivateLanguageToken}"
|
||||
data-language-packs-deactivate-language-token="{languagePacksDeactivateLanguageToken}"
|
||||
data-language-packs-update-pack-token="{languagePacksUpdatePackToken}"
|
||||
data-language-packs-update-iso-times-token="{languagePacksUpdateIsoTimesToken}"
|
||||
data-configuration-is-writable="{f:if(condition: isWritable, then: 'true', else: 'false')}"
|
||||
>
|
||||
<p>
|
||||
Manage available language packs for your TYPO3 installation.
|
||||
</p>
|
||||
<p>
|
||||
View available languages (excluding the default English), enable or disable localizations, and update language packs
|
||||
from the <a target="_blank" rel="noreferrer" href="https://localize.typo3.org/xliff/status.html">
|
||||
<u>TYPO3 translation server</u></a>.
|
||||
</p>
|
||||
<p>
|
||||
Missing or incorrect translations can be improved by contributing through
|
||||
<a target="_blank" rel="noreferrer" href="https://crowdin.com/profile/TYPO3">
|
||||
<u>Crowdin</u></a>. See the <a target="_blank" rel="noreferrer" href="https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Localization/TranslationServer/Crowdin.html">
|
||||
<u>TYPO3 documentation</u></a> for details.
|
||||
</p>
|
||||
|
||||
<f:render partial="Generic/ConfigurationNotWritable" arguments="{_all}"/>
|
||||
|
||||
<div class="t3js-languagePacks-notifications"></div>
|
||||
<div class="t3js-languagePacks-output"></div>
|
||||
<div class="t3js-languagePacks-mainContent"></div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,31 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>
|
||||
Check and update the reference index, which tracks relations between database records in TYPO3.<br>
|
||||
Use this tool to verify the integrity of existing references or to rebuild the index to ensure all relations are correctly recorded.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Check:</strong> Verifies the reference index and reports issues without making changes.<br>
|
||||
<strong>Update:</strong> Rebuilds the entire reference index. This may take some time on large installations.
|
||||
</p>
|
||||
|
||||
<div class="t3js-module-content mb-4" data-reference-index-token="{referenceIndexToken}">
|
||||
<div class="t3js-referenceIndex-result"></div>
|
||||
</div>
|
||||
|
||||
<f:be.infobox
|
||||
title="Using the command line interface"
|
||||
state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::INFO')}"
|
||||
>
|
||||
<p>You can also run the check as a shell script using CLI if the processing takes longer than the PHP max_execution_time allows.</p>
|
||||
<p>
|
||||
To check the reference index use:<br>
|
||||
<code>php {binaryPath} referenceindex:update -c</code>
|
||||
</p>
|
||||
<p>
|
||||
To update the reference index use:<br>
|
||||
<code>php {binaryPath} referenceindex:update</code>
|
||||
</p>
|
||||
</f:be.infobox>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,66 @@
|
||||
<f:layout name="Cards"/>
|
||||
|
||||
<f:section name="headline">
|
||||
<h1>Settings</h1>
|
||||
</f:section>
|
||||
|
||||
<f:section name="header">
|
||||
<f:render partial="Generic/ConfigurationNotWritable" arguments="{_all}"/>
|
||||
</f:section>
|
||||
|
||||
<f:section name="cards">
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Extension Configuration', subtitle: 'Global Configuration', icon: 'EXT:install/Resources/Public/Icons/modules/install-extension-settings.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Configure settings for enabled extensions.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/settings/extension-configuration.js">Configure extensions…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Change Install Tool Password', subtitle: 'Access', icon: 'EXT:install/Resources/Public/Icons/modules/install-password.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Set a new password for the Install Tool when accessed in Standalone mode.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-modal-size="small" data-import="@typo3/install/module/settings/change-install-tool-password.js">Change Install Tool Password…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Manage System Maintainers', subtitle: 'Access', icon: 'EXT:install/Resources/Public/Icons/modules/install-manage-maintainer.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Specify which backend administrators can access System modules and the Install Tool in Standalone Mode.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-modal-size="medium" data-import="@typo3/install/module/settings/system-maintainer.js">Manage System Maintainers…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Configuration Presets', subtitle: 'Global Configuration', icon: 'EXT:install/Resources/Public/Icons/modules/install-manage-presets.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Configure image processing, debug/live mode and mail settings.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/settings/presets.js">Choose Preset…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Feature Toggles', subtitle: 'Global Configuration', icon: 'EXT:install/Resources/Public/Icons/modules/install-manage-features.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Enable and disable core features.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-modal-size="medium" data-import="@typo3/install/module/settings/features.js">Configure Features…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Configure Installation-Wide Options', subtitle: 'Global Configuration', icon: 'EXT:install/Resources/Public/Icons/modules/install-manage-settings.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Modify settings written to <code>system/settings.php</code>.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/settings/local-configuration.js">Configure options…</button>
|
||||
</div>
|
||||
</div>
|
||||
</f:section>
|
||||
@@ -0,0 +1,39 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>
|
||||
Set a new password for the Install Tool. The password hash is stored in <code>system/settings.php</code>,
|
||||
and replaces the previously configured password.
|
||||
</p>
|
||||
|
||||
<f:render partial="Generic/ConfigurationNotWritable" arguments="{_all}"/>
|
||||
|
||||
<div class="t3js-module-content" data-install-tool-token="{changeInstallToolPasswordToken}">
|
||||
<form action="" id="t3js-changeInstallToolPassword-form" method="post" spellcheck="false">
|
||||
<div class="form-group">
|
||||
<label for="t3-install-tool-password" class="form-label">Enter new password:</label>
|
||||
<input
|
||||
id="t3-install-tool-password"
|
||||
class="t3-install-form-input-text t3-install-form-password-strength t3js-changeInstallToolPassword-password form-control"
|
||||
type="password"
|
||||
autocomplete="off"
|
||||
required
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="t3-install-tool-password-repeat" class="form-label">Repeat password:</label>
|
||||
<input
|
||||
id="t3-install-tool-password-repeat"
|
||||
class="t3-install-form-input-text t3js-changeInstallToolPassword-password-check form-control"
|
||||
type="password"
|
||||
autocomplete="off"
|
||||
required
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="t3js-changeInstallToolPassword-output"></div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,31 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<div class="t3js-module-content" data-extension-configuration-write-token="{extensionConfigurationWriteToken}">
|
||||
<f:render partial="Generic/ConfigurationNotWritable" arguments="{_all}"/>
|
||||
|
||||
<div class="t3js-extensionConfiguration-output"></div>
|
||||
|
||||
<div class="form-group">
|
||||
<label
|
||||
for="extension-configuration-search"
|
||||
class="visually-hidden"
|
||||
>
|
||||
Filter by
|
||||
</label>
|
||||
<input
|
||||
id="extension-configuration-search"
|
||||
type="search"
|
||||
autocomplete="off"
|
||||
class="form-control t3js-extensionConfiguration-search"
|
||||
placeholder="search setting"
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="panel-group" role="tablist" aria-multiselectable="true">
|
||||
<f:for each="{extensionsWithConfigurations}" as="extensionData" key="extensionKey">
|
||||
<f:render partial="Settings/ExtensionConfiguration/ExtensionForm" arguments="{_all}"/>
|
||||
</f:for>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,41 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>
|
||||
Feature toggles allow new TYPO3 Core functionalities to be activated for testing on upgraded installations,
|
||||
while maintaining the previous behaviour. These features are enabled by default on new TYPO3 installations.
|
||||
</p>
|
||||
|
||||
<f:render partial="Generic/ConfigurationNotWritable" arguments="{_all}"/>
|
||||
|
||||
<h2>Available features</h2>
|
||||
<div class="t3js-module-content" data-features-save-token="{featuresSaveToken}">
|
||||
<form method="post">
|
||||
<div class="card-container">
|
||||
<f:for each="{features}" as="feature" iteration="iterator">
|
||||
<div class="card card-size-large">
|
||||
<div class="card-header">
|
||||
<h3>{feature.label}</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="form-check form-switch">
|
||||
<input
|
||||
type="checkbox"
|
||||
class="form-check-input"
|
||||
value="1"
|
||||
name="install[values][{feature.name}]"
|
||||
id="t3-install-tool-features-{feature.name}"
|
||||
{f:if(condition: '{feature.value} == 1', then: 'checked="checked"')}
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
<label class="form-check-label" for="t3-install-tool-features-{feature.name}">
|
||||
<p>{feature.description -> f:sanitize.html()}</p>
|
||||
<strong>Default setting: {f:if(condition: '{feature.default} == 1', then: 'Enabled', else: 'Disabled')}</strong>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,37 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>
|
||||
TYPO3 writes modified values to the file system/settings.php.
|
||||
You can manually override most configuration options by storing them in the optional file system/additional.php.
|
||||
The TYPO3 Core does not change the content of this file.
|
||||
</p>
|
||||
|
||||
<f:render partial="Generic/ConfigurationNotWritable" arguments="{_all}"/>
|
||||
|
||||
<div class="t3js-module-content" data-local-configuration-write-token="{localConfigurationWriteToken}">
|
||||
<div class="form-group">
|
||||
<label
|
||||
for="localconfiguration-search"
|
||||
class="visually-hidden"
|
||||
>
|
||||
Filter by
|
||||
</label>
|
||||
<input
|
||||
id="localconfiguration-search"
|
||||
type="search"
|
||||
autocomplete="off"
|
||||
class="form-control t3js-localConfiguration-search"
|
||||
placeholder="search setting"
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
|
||||
<f:for each="{localConfigurationData}" as="sectionData" key="sectionName">
|
||||
<f:if condition="{sectionData.items}">
|
||||
<f:render partial="Settings/LocalConfiguration/SubSection" arguments="{_all}"/>
|
||||
</f:if>
|
||||
</f:for>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,30 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>
|
||||
Review and apply recommended configuration presets based on the detected environment setup.
|
||||
</p>
|
||||
<p>
|
||||
TYPO3 can also run in a specific application context defined through an environment variable
|
||||
in the web server configuration. This context can be accessed in <code>system/additional.php</code>
|
||||
or in TypoScript to customize configuration accordingly.
|
||||
</p>
|
||||
<p>
|
||||
Changed values are written to <code>system/settings.php</code>. The optional file
|
||||
<code>system/additional.php</code> is not managed by the TYPO3 core and may override certain
|
||||
settings. Administrators must maintain this file manually and should use it with caution.
|
||||
</p>
|
||||
|
||||
<f:render partial="Generic/ConfigurationNotWritable" arguments="{_all}"/>
|
||||
|
||||
<div class="t3js-module-content" data-presets-activate-token="{presetsActivateToken}" data-presets-content-token="{presetsGetContentToken}">
|
||||
<form method="post">
|
||||
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
|
||||
<f:for each="{presetFeatures}" as="feature">
|
||||
<f:render partial="Settings/Presets/{feature.name}" arguments="{_all}"/>
|
||||
</f:for>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="t3js-presets-output"></div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,40 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>
|
||||
Define backend administrative users who will have full access to the System modules in the backend.
|
||||
Note that all backend administrative users have access to this module when the system is running in <strong>Development mode</strong>.
|
||||
</p>
|
||||
|
||||
<f:render partial="Generic/ConfigurationNotWritable" arguments="{_all}"/>
|
||||
|
||||
<f:if condition="{systemMaintainerIsDevelopmentContext}">
|
||||
<div class="alert alert-info">
|
||||
<div class="alert-message">
|
||||
This TYPO3 instance is set to "Development" context, all backend admin users
|
||||
can see the system maintenance related main module entries.
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<div class="t3js-module-content" data-system-maintainer-write-token="{systemMaintainerWriteToken}">
|
||||
<div class="form-group">
|
||||
<div class="input-group flex-nowrap">
|
||||
<span class="input-group-text">System Maintainer:</span>
|
||||
<select-pure
|
||||
multiple
|
||||
default-label="Select system maintainers"
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
class="t3js-systemMaintainer-select-pure">
|
||||
<f:for each="{users}" as="user">
|
||||
<option-pure value="{user.uid}" {f:if(condition: user.isSystemMaintainer, then: 'selected')}>
|
||||
{f:if(condition: user.disable, then: '[DISABLED] ')} {user.username}
|
||||
</option-pure>
|
||||
</f:for>
|
||||
</select-pure>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="t3js-systemMaintainer-output"></div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,81 @@
|
||||
<f:layout name="Cards"/>
|
||||
|
||||
<f:section name="headline">
|
||||
<h1>Upgrade</h1>
|
||||
</f:section>
|
||||
|
||||
<f:section name="cards">
|
||||
<div class="card card-size-small {f:if(condition:'{composerMode}', then: 'card-disabled')}">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Update TYPO3 Core', subtitle: 'Core Upgrade', icon: 'EXT:install/Resources/Public/Icons/modules/install-update.svg'}"/>
|
||||
<div class="card-body">
|
||||
<p class="card-text">Update your TYPO3 installation (support for symbolic links required).</p>
|
||||
</div>
|
||||
<f:if condition="{composerMode}">
|
||||
<f:then>
|
||||
<div class="card-footer text-variant">
|
||||
This function is not available as your installation is in composer mode. Please refer to the
|
||||
<a href="https://docs.typo3.org/upgrade" target="_blank" rel="noreferrer">TYPO3 upgrade guide</a> for more information on how to upgrade your instance.
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/upgrade/core-update.js">Update Core…</button>
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Upgrade Wizard', subtitle: 'Core Upgrade', icon: 'EXT:install/Resources/Public/Icons/modules/install-wizards.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Finalise the upgrade process when moving to a major release of TYPO3.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/upgrade/upgrade-wizards.js">Run Upgrade Wizard…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'View Upgrade Documentation', subtitle: 'Core Upgrade', icon: 'EXT:install/Resources/Public/Icons/modules/install-documentation.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">View and search for important changes that have been made in major and minor releases of TYPO3.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/upgrade/upgrade-docs.js">View Upgrade Documentation…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Check for Broken Extensions', subtitle: 'Extensions', icon: 'EXT:install/Resources/Public/Icons/modules/install-check-brokenextension.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Check compatibility of active extensions with the current TYPO3 installation.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-modal-size="small" data-import="@typo3/install/module/upgrade/extension-compat-tester.js">Check Extension Compatibility…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Check TCA Migrations', subtitle: 'TCA', icon: 'EXT:install/Resources/Public/Icons/modules/install-check-tca.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Identify any third-party extensions with an outdated TCA configuration which should be adapted for the installed version of TYPO3.</p>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/upgrade/tca-migrations-check.js">Check TCA Migrations…</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card card-size-small {f:if(condition:'!{hasExtensions}', then: 'card-disabled')}">
|
||||
<f:render partial="Card/Header" arguments="{ title: 'Scan Extension Files', subtitle: 'Extensions', icon: 'EXT:install/Resources/Public/Icons/modules/install-scan-extensions.svg'}" />
|
||||
<div class="card-body">
|
||||
<p class="card-text">Scan extensions for deprecated or outdated TYPO3 API calls.</p>
|
||||
</div>
|
||||
<f:if condition="{hasExtensions}">
|
||||
<f:then>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-default" data-import="@typo3/install/module/upgrade/extension-scanner.js">Scan Extension Files…</button>
|
||||
</div>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<div class="card-footer text-variant">
|
||||
This feature is not available because no extension folders were found.
|
||||
</div>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:section>
|
||||
@@ -0,0 +1,26 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>Automatically updates the TYPO3 CMS core to its latest minor release if these criteria are met:</p>
|
||||
<ul>
|
||||
<li>It only works under Unix and MacOS (support of symbolic links is required).</li>
|
||||
<li><code>typo3_src</code> must be a symbolic link to the extracted TYPO3 source directory.</li>
|
||||
<li>The symbolic link needs to be writable (and deletable) by the web server user.</li>
|
||||
<li>The document root directory needs to be writable.</li>
|
||||
<li>One path above document root (<code>../</code>) needs to be writable (new directories will be created).</li>
|
||||
<li>The <code>tar</code> command must be available for extracting the TYPO3 source package.</li>
|
||||
</ul>
|
||||
|
||||
<div class="t3js-coreUpdate-output">
|
||||
<f:if condition="!{coreIsUpdatable}">
|
||||
<f:be.infobox title="This feature is disabled in this installation">
|
||||
<p>
|
||||
<f:if condition="{coreUpdateComposerMode}">Composer Mode is active. Please update using composer commands.<br></f:if>
|
||||
<f:if condition="!{coreUpdateEnabled}">The environment variable was set <code>TYPO3_DISABLE_CORE_UPDATER=1</code>.<br></f:if>
|
||||
<f:if condition="!{coreUpdateIsReleasedVersion}">This system uses an unreleased TYPO3 core version.<br></f:if>
|
||||
<f:if condition="!{coreUpdateIsSymLinkedCore}">This action can only be used with a linked <code>typo3_src</code>.</f:if>
|
||||
</p>
|
||||
</f:be.infobox>
|
||||
</f:if>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>
|
||||
Checks whether the local extensions' ext_localconf files can be included without errors,
|
||||
meaning they can be loaded without breaking the system.
|
||||
</p>
|
||||
|
||||
<div
|
||||
class="t3js-module-content"
|
||||
data-extension-compat-tester-load-ext_localconf-token="{extensionCompatTesterLoadExtLocalconfToken}"
|
||||
data-extension-compat-tester-uninstall-extension-token="{extensionCompatTesterUninstallToken}"
|
||||
>
|
||||
<div class="t3js-extensionCompatTester-output"></div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,132 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>
|
||||
This module scans extensions for usage of deprecated and removed TYPO3 API calls.
|
||||
The module can be a great help for extension developers and site maintainers when
|
||||
upgrading to new core versions. However, the detection approach - based on static
|
||||
code analysis - is limited by concept: false positives/negatives are impossible to avoid.
|
||||
Further details can be found at
|
||||
<a style="text-decoration: underline;" target="_blank" rel="noreferrer" href="https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/ExtensionScanner/Index.html">
|
||||
the official docs.
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<div style="display: none">
|
||||
<div id="t3js-extensionScanner-file-hit-template">
|
||||
<div class="panel t3js-extensionScanner-hit-panel risk-medium">
|
||||
<h2 class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
type="button"
|
||||
class="panel-button collapsed t3js-extensionScanner-hit-file-panel-head"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#collapse"
|
||||
aria-controls="collapse"
|
||||
aria-expanded="false"
|
||||
id="heading-not-affected"
|
||||
>
|
||||
<div class="panel-title">
|
||||
<div><strong class="t3js-extensionScanner-hit-filename">aFile</strong></div>
|
||||
<div class="t3js-extensionScanner-hit-message">aMessage</div>
|
||||
</div>
|
||||
<div class="panel-badge t3js-extensionScanner-hit-badges">
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
<div id="collapse" class="panel-collapse collapse t3js-extensionScanner-hit-file-panel-body">
|
||||
<div class="panel-body">
|
||||
<pre class="language-php"><strong class="t3js-extensionScanner-hit-file-line"></strong><span class="t3js-extensionScanner-hit-file-lineContent"></span></pre>
|
||||
<div class="panel-group t3js-extensionScanner-hit-file-rest-container"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="t3js-extensionScanner-file-hit-rest-template">
|
||||
<div class="panel t3js-extensionScanner-hit-rest-panel risk-medium">
|
||||
<h2 class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
type="button"
|
||||
class="panel-button collapsed t3js-extensionScanner-hit-rest-panel-head"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#collapse-rest"
|
||||
aria-controls="collapse-rest"
|
||||
aria-expanded="false"
|
||||
>
|
||||
<div class="panel-title">
|
||||
<strong class="t3js-extensionScanner-hit-rest-headline">restFileHeadline</strong>
|
||||
</div>
|
||||
<div class="panel-badge">
|
||||
<span class="badge badge-default t3js-extensionScanner-hit-rest-badge">aBadge</span>
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
<div id="collapse-rest" class="panel-collapse collapse t3js-extensionScanner-hit-rest-panel-body">
|
||||
<pre class="panel-body t3js-extensionScanner-hit-rest-body">restFileContent</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
class="t3js-module-content"
|
||||
data-extension-scanner-files-token="{extensionScannerFilesToken}"
|
||||
data-extension-scanner-scan-file-token="{extensionScannerScanFileToken}"
|
||||
data-extension-scanner-mark-fully-scanned-rest-files-token="{extensionScannerMarkFullyScannedRestFilesToken}"
|
||||
>
|
||||
<typo3-backend-progress-bar class="t3js-extensionScanner-progress-all-extension" value="0" hidden></typo3-backend-progress-bar>
|
||||
|
||||
<h2>Extensions</h2>
|
||||
|
||||
<div class="panel-group panel-group-scanner-extensions">
|
||||
<f:for each="{extensionScannerExtensionList}" as="extension" iteration="iterator">
|
||||
<div
|
||||
class="panel panel-default t3js-extensionScanner-extension t3js-extensionScanner-extension-{extension}"
|
||||
data-extension="{extension}">
|
||||
<div class="panel-progress">
|
||||
<div class="panel-progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0;">
|
||||
<span class="visually-hidden">0%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
type="button"
|
||||
class="panel-button collapsed"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#extension-{iterator.index}"
|
||||
aria-controls="extension-{iterator.index}"
|
||||
aria-expanded="false"
|
||||
>
|
||||
<div class="panel-title">
|
||||
Extension: <strong>{extension}</strong>
|
||||
</div>
|
||||
<div class="panel-heading-text t3js-extensionScanner-number-of-files">
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-collapse collapse" id="extension-{iterator.index}">
|
||||
<div class="panel-body hide t3js-extensionScanner-extension-body"></div>
|
||||
<div class="panel-footer">
|
||||
<p>
|
||||
<span>Effective lines of code: <span class="t3js-extensionScanner-extension-body-loc">0</span></span><br>
|
||||
<span>Files ignored by scanner: <span class="t3js-extensionScanner-extension-body-ignored-files">0</span></span><br>
|
||||
<span>Code lines ignored by scanner: <span class="t3js-extensionScanner-extension-body-ignored-lines">0</span></span>
|
||||
</p>
|
||||
<button type="submit" class="btn btn-default t3js-extensionScanner-scan-single">
|
||||
Scanning…
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,9 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>
|
||||
Checks whether the current TCA needs migrations and displays the new migration paths which need to be adjusted
|
||||
manually.
|
||||
</p>
|
||||
<div class="t3js-tcaMigrationsCheck-output"></div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,15 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:for each="{upgradeDocsFiles}" key="fileId" as="fileArray">
|
||||
<f:render partial="Upgrade/UpgradeDocs/PanelItem" arguments="{id: 'file-{fileId}', fileArray: fileArray, state: 'regular'}"/>
|
||||
</f:for>
|
||||
|
||||
<f:for each="{upgradeDocsReadFiles}" key="fileId" as="fileArray">
|
||||
<f:render partial="Upgrade/UpgradeDocs/PanelItem" arguments="{id: 'file-{fileId}', fileArray: fileArray, state: 'read', read: 'true'}"/>
|
||||
</f:for>
|
||||
|
||||
<f:for each="{upgradeDocsNotAffectedFiles}" key="fileId" as="fileArray">
|
||||
<f:render partial="Upgrade/UpgradeDocs/PanelItem" arguments="{id: 'file-{fileId}', fileArray: fileArray, state: 'notAffected', read: 'true'}"/>
|
||||
</f:for>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,109 @@
|
||||
<html xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers" xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<div class="t3js-module-content" data-upgrade-docs-mark-read-token="{upgradeDocsMarkReadToken}" data-upgrade-docs-unmark-read-token="{upgradeDocsUnmarkReadToken}">
|
||||
|
||||
<div class="form-group">
|
||||
<label for="upgrade-docs-search-field" class="visually-hidden">Search</label>
|
||||
<input
|
||||
type="search"
|
||||
autocomplete="off"
|
||||
id="upgrade-docs-search-field"
|
||||
class="form-control t3js-upgradeDocs-fulltext-search"
|
||||
placeholder="Enter searchword"
|
||||
disabled
|
||||
>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="input-group flex-nowrap">
|
||||
<span class="input-group-text">Filter by:</span>
|
||||
<select-pure
|
||||
default-label="Select category"
|
||||
class="t3js-upgradeDocs-select-pure"
|
||||
multiple
|
||||
tabindex=""
|
||||
disabled
|
||||
>
|
||||
</select-pure>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel-group" role="tablist" aria-multiselectable="true">
|
||||
<f:for each="{upgradeDocsVersions}" as="version" iteration="iterator">
|
||||
<div class="panel panel-default panel-version t3js-version-changes" data-version="{version}">
|
||||
<div class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
type="button"
|
||||
class="panel-button collapsed"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#version-{iterator.index}"
|
||||
aria-controls="version-{iterator.index}"
|
||||
aria-expanded="false"
|
||||
id="heading-{iterator.index}"
|
||||
>
|
||||
<div class="panel-title">
|
||||
Version: <strong>{version}</strong>
|
||||
<span class="t3js-panel-loading"><core:icon identifier="spinner-circle" size="small" /></span>
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-collapse collapse"
|
||||
id="version-{iterator.index}" role="tabpanel" data-group-version="{version}">
|
||||
<div class="panel-body t3js-changelog-list" role="tablist" aria-multiselectable="false"></div>
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
|
||||
<div class="panel panel-default panel-version">
|
||||
<div class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
type="button"
|
||||
class="panel-button collapsed"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#collapseRead"
|
||||
aria-controls="collapseRead"
|
||||
aria-expanded="false"
|
||||
id="heading-read"
|
||||
>
|
||||
<div class="panel-title">
|
||||
Files marked as read
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-collapse collapse" id="collapseRead" role="tabpanel" data-group-version="read">
|
||||
<div class="panel-body panel-body-read t3js-changelog-list" role="tablist" aria-multiselectable="false"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default panel-version">
|
||||
<div class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
type="button"
|
||||
class="panel-button collapsed"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#collapseNotAffected"
|
||||
aria-controls="collapseNotAffected"
|
||||
aria-expanded="false"
|
||||
id="heading-not-affected"
|
||||
>
|
||||
<div class="panel-title">
|
||||
Files marked as not affected by extension scanner
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-collapse collapse" id="collapseNotAffected" role="tabpanel" data-group-version="notAffected">
|
||||
<div class="panel-body panel-body-not-affected t3js-changelog-list" role="tablist" aria-multiselectable="false"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,122 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<p>
|
||||
If you upgrade your TYPO3 installation from one major version to another (e.g. {currentVersion - 1} LTS to {currentVersion} LTS),
|
||||
then the Upgrade Wizards guide you through the necessary steps to upgrade your database
|
||||
records or explicitly install extensions that ship with the latest TYPO3 version.
|
||||
</p>
|
||||
|
||||
<div class="t3js-upgrade-status-section">
|
||||
<div class="t3js-upgradeWizards-wizards-messages-output"></div>
|
||||
<div class="upgradeWizards-wizards-output t3js-upgradeWizards-wizards-output"></div>
|
||||
|
||||
<h4 class="mt-4">Wizards marked as done</h4>
|
||||
<p>
|
||||
Some wizards fully automatically check whether they should be executed, while others just
|
||||
set a flag in the system registry if they have been executed once. This "I have been executed"
|
||||
flag can be reset by selecting specific wizards from the list below, so the according wizards
|
||||
show up as possible upgrade wizards again.
|
||||
</p>
|
||||
<div
|
||||
class="t3js-module-content"
|
||||
data-upgrade-wizards-mark-undone-token="{upgradeWizardsMarkUndoneToken}"
|
||||
data-upgrade-wizards-input-token="{upgradeWizardsInputToken}"
|
||||
data-upgrade-wizards-execute-token="{upgradeWizardsExecuteToken}"
|
||||
>
|
||||
<div class="t3js-upgradeWizards-done-output"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="t3js-upgradeWizards-blocking-charset-template">
|
||||
<p>
|
||||
The default database charset of the main MySQL database is not utf-8.
|
||||
<br />
|
||||
You have to run this update wizard before you can run any other update
|
||||
wizard to make sure new tables and fields are created with the correct
|
||||
charset.
|
||||
<br />
|
||||
WARNING: This will NOT convert any existing data.
|
||||
</p>
|
||||
<button type="button" class="btn btn-default t3js-upgradeWizards-blocking-charset-fix">
|
||||
Set default charset to utf8
|
||||
</button>
|
||||
</template>
|
||||
|
||||
<template id="t3js-upgradeWizards-blocking-adds-template">
|
||||
<p class="mt-4">
|
||||
There are tables or fields in the database which need to be created.
|
||||
<br />
|
||||
You have to run this update wizard before you can run any other update
|
||||
wizard to make sure all needed tables and fields are present.
|
||||
</p>
|
||||
<p class="t3js-upgradeWizards-blocking-adds-rows"></p>
|
||||
<button type="button" class="btn btn-default t3js-upgradeWizards-blocking-adds-execute">
|
||||
Create missing tables and fields
|
||||
</button>
|
||||
</template>
|
||||
|
||||
<template id="t3js-upgradeWizards-list-template">
|
||||
<f:comment><!--
|
||||
@todo: this whole "partial" gets reloaded everytime the "Upgrade status" is re-calculated
|
||||
this is an issue with the progress bar as it thus is re-rendered all the time
|
||||
--></f:comment>
|
||||
<h4 class="mt-4">Upgrade status</h4>
|
||||
<typo3-backend-progress-bar value="0" max="100"></typo3-backend-progress-bar>
|
||||
<div class="module-action-list t3js-upgradeWizards-list-rows mt-4"></div>
|
||||
</template>
|
||||
|
||||
<template id="t3js-upgradeWizards-list-row-template">
|
||||
<div class="module-action-item">
|
||||
<div class="module-action-item-body">
|
||||
<div class="module-action-item-title t3js-upgradeWizards-list-row-title"></div>
|
||||
<div class="module-action-item-description t3js-upgradeWizards-list-row-explanation"></div>
|
||||
</div>
|
||||
<div class="module-action-item-action">
|
||||
<button type="button" class="btn btn-default t3js-upgradeWizards-list-row-execute">
|
||||
<core:icon identifier="actions-play" size="small" /> Execute
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template id="t3js-upgradeWizards-input">
|
||||
<form class="card">
|
||||
<div class="card-header">
|
||||
<h4 class="t3js-upgradeWizards-input-title">{updateData.title}</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="t3js-upgradeWizards-input-description">{updateData.description}</p>
|
||||
<div class="t3js-upgradeWizards-input-html"></div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<button type="button" class="btn btn-warning t3js-upgradeWizards-input-perform">
|
||||
Perform updates
|
||||
</button>
|
||||
<button type="button" class="btn btn-default t3js-upgradeWizards-input-abort">
|
||||
Abort
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
|
||||
<template id="t3js-upgradeWizards-done-body-template">
|
||||
<div class="table-fit mb-0">
|
||||
<table class="table table-striped">
|
||||
<tbody class="t3js-upgradeWizards-done-rows"></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template id="t3js-upgradeWizards-done-row-template">
|
||||
<tr>
|
||||
<td>
|
||||
<button type="button" class="btn btn-default t3js-upgradeWizards-done-markUndone">
|
||||
Mark undone
|
||||
</button>
|
||||
</td>
|
||||
<td class="t3js-upgradeWizards-done-title">
|
||||
</td>
|
||||
</tr>
|
||||
</template>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user