first commit

This commit is contained in:
salam committed 2026-10-19 08:18:39 +02:00
commit 1218dd1517
12716 files changed
+989233

No files matched your search

@@ -0,0 +1,17 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="card-header">
<f:if condition="{icon}">
<div class="card-icon">
<img src="{f:uri.resource(path: icon)}" width="64" height="64" class="card-header-icon-image" />
</div>
</f:if>
<div class="card-header-body">
<f:if condition="{title}">
<h1 class="card-title">{title}</h1>
</f:if>
<f:if condition="{subtitle}">
<span class="card-subtitle">{subtitle}</span>
</f:if>
</div>
</div>
</html>
@@ -0,0 +1,16 @@
<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">
<li class="modulemenu-item t3js-mainmodule" data-controller="{controller}">
<a class="modulemenu-item-link" href="{i:uri.action(controller: controller)}">
<span class="modulemenu-icon modulemenu-item-icon">
<span class="t3js-icon icon icon-size-default icon-state-default">
<span class="icon-markup">
<img src="{f:uri.resource(path: 'Icons/module-install-{controller}.svg')}" width="32" height="32">
</span>
</span>
</span>
<span class="modulemenu-item-title">{label}</span>
</a>
</li>
</html>
@@ -0,0 +1,69 @@
<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">
<div class="panel panel-default panel-flat searchhit">
<div class="panel-heading" role="tab" id="heading-{extensionKey}">
<h3 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-{extensionKey}" aria-expanded="true" aria-controls="collapse-{extensionKey}" class="collapsed">
<span class="caret"></span>
<strong>{extensionData.packageInfo.packageKey}</strong>
</a>
</h3>
</div>
<div id="collapse-{extensionKey}" class="panel-collapse collapse search-item" role="tabpanel" aria-labelledby="heading-{extensionKey}">
<div class="panel-body">
<div role="tabpanel">
<ul class="nav nav-tabs" role="tablist">
<f:for each="{extensionData.configuration}" as="category" key="categoryName" iteration="iteration">
<f:if condition="{categoryName}">
<li role="presentation" class="{f:if(condition:'{iteration.isFirst}', then:'active')}">
<a class="text-capitalize" href="#{i:format.noSpace(value:'category-{extensionKey}-{categoryName}')}" aria-controls="category-{extensionKey}-{categoryName}" role="tab" data-toggle="tab">{categoryName}</a>
</li>
</f:if>
</f:for>
</ul>
<form action="#" name="configurationform" autocomplete="off" class="t3js-extensionConfiguration-form extensionConfiguration-form" data-extensionKey="{extensionKey}">
<div class="tab-content">
<f:for each="{extensionData.configuration}" as="subcategories" key="categoryName" iteration="iteration">
<f:if condition="{categoryName}">
<div role="tabpanel" class="tab-pane {f:if(condition:'{iteration.isFirst}', then:'active')}" id="{i:format.noSpace(value:'category-{extensionKey}-{categoryName}')}">
<f:for each="{subcategories}" as="subcategory">
<div class="form-section">
<f:for each="{subcategory}" as="configurationItem" iteration="itemIterator">
<f:if condition="{itemIterator.isFirst}">
<h2 class="h4 form-section-headline">{configurationItem.subcat_label}</h2>
</f:if>
<div class="form-group form-group-dashed">
<label for="em-{configurationItem.extensionKey}-{configurationItem.name}">
{configurationItem.labels.0}
</label>
<p>
{categoryName}.{configurationItem.name}
<f:if condition="{configurationItem.type} != 'user'">
<f:if condition="{configurationItem.type}">
({configurationItem.type})
</f:if>
</f:if>
</p>
<div class="form-control-wrap">
<i:form.typoScriptConstants configuration="{configurationItem}"/>
</div>
<f:if condition="{configurationItem.labels.1}">
<div class="help-block">{configurationItem.labels.1 -> f:format.nl2br()}</div>
</f:if>
</div>
</f:for>
</div>
</f:for>
</div>
</f:if>
</f:for>
</div>
<button type="submit" class="btn btn-default" name="save">Save "{extensionKey}" configuration</button>
</form>
</div>
</div>
</div>
</div>
</html>
@@ -0,0 +1,136 @@
<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">
<div class="panel panel-default panel-flat">
<div class="panel-heading" role="tab" id="heading-{sectionName}">
<h3 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-{sectionName}" aria-expanded="true" aria-controls="collapse-{sectionName}" class="collapsed">
<span class="caret"></span>
<strong>{sectionData.description}</strong> [{sectionName}]
</a>
</h3>
</div>
<div id="collapse-{sectionName}" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-{sectionName}">
<f:for each="{sectionData.items}" as="item">
<a id="{sectionName}-{item.key}"></a>
<div class="item">
<div class="item-heading">
<strong>[{sectionName}]{item.path} </strong>
<f:if condition="{item.type} == 'checkbox'">
<f:then>
=
<f:if condition="{item.value}">
<f:then>true</f:then>
<f:else>false</f:else>
</f:if>
</f:then>
<f:else>
<f:if condition="{item.value} && !{item.hideValue}">
= {item.value -> f:format.crop(maxCharacters: 40, respectWordBoundaries:0, respectHtml:0)}
</f:if>
</f:else>
</f:if>
</div>
<div class="item-body">
<f:if condition="{item.differentValueInCurrentConfiguration}">
<div class="t3js-infobox callout callout-sm callout-warning">
<div class="callout-body">
Note that <code>$GLOBALS['TYPO3_CONF_VARS']</code> currently contains a different value.
This could mean that the value is overwritten in AdditionalConfiguration.php.
</div>
</div>
</f:if>
<f:if condition="{f:count(subject: item.allowedValues)} || {item.dataType} == 'dropdown'">
<f:then>
<div class="form-group">
<span class="help-block">{item.description -> f:format.raw()}</span>
<select data-path="{sectionName}/{item.key}" class="t3-install-form-input-text form-control t3js-localConfiguration-pathValue">
<f:for each="{item.allowedValues}" key="optionKey" as="optionLabel">
<option value="{optionKey}" {f:if(condition: '{item.value} == {optionKey}', then: 'selected="selected"')}>{optionLabel} ({optionKey})</option>
</f:for>
</select>
</div>
</f:then>
<f:else>
<f:if condition="{item.type} == 'checkbox'">
<div class="checkbox">
<label>
<input
type="checkbox"
value="1"
class="t3js-localConfiguration-pathValue"
data-path="{sectionName}/{item.key}"
{f:if(condition: item.checked, then:'checked="checked"')}
/>
{item.description -> f:format.raw()}
</label>
</div>
</f:if>
<f:if condition="{item.type} == 'input'">
<div class="form-group">
<span class="help-block">{item.description -> f:format.raw()}</span>
<input
type="text"
value="{item.value}"
data-path="{sectionName}/{item.key}"
class="t3-install-form-input-text form-control t3js-localConfiguration-pathValue"
autocomplete="off"
/>
</div>
</f:if>
<f:if condition="{item.type} == 'password'">
<div class="form-group">
<span class="help-block">{item.description -> f:format.raw()}</span>
<input
type="password"
value="{item.value}"
data-path="{sectionName}/{item.key}"
class="t3-install-form-input-text form-control t3js-localConfiguration-pathValue"
autocomplete="new-password"
/>
</div>
</f:if>
<f:if condition="{item.type} == 'number'">
<div class="form-group">
<span class="help-block">{item.description -> f:format.raw()}</span>
<input
type="number"
value="{item.value}"
data-path="{sectionName}/{item.key}"
class="t3-install-form-input-text form-control t3js-localConfiguration-pathValue"
autocomplete="off"
/>
</div>
</f:if>
<f:if condition="{item.type} == 'textarea'">
<span class="help-block">{item.description -> f:format.raw()}</span>
<div class="form-group">
<textarea
rows="5"
cols="60"
data-path="{sectionName}/{item.key}"
class="form-control t3js-localConfiguration-pathValue"
autocomplete="off"
>{item.value}</textarea>
</div>
</f:if>
</f:else>
</f:if>
<f:if condition="{item.phpErrorCode}">
<div class="fieldNote">
Current PHP error code <strong>{item.value}</strong> represents:<br/>
<code>
<i:format.phpErrorCode phpErrorCode="{item.value}"/>
</code>
</div>
</f:if>
</div>
</div>
</f:for>
</div>
</div>
</html>
@@ -0,0 +1,29 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="panel panel-default panel-flat">
<div class="panel-heading" role="tab" id="headingTwo">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="true" aria-controls="collapseTwo" class="collapsed">
<span class="caret"></span>
Debug settings
</a>
</h4>
</div>
<div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
<div class="panel-body">
<p>
In this panel it is possible to select a configuration preset which optimizes multiple settings
to be suited best for production or development environments.
The "Live" preset configures your TYPO3 installation for maximum performance
and suppresses debug and error messages, so that nothing is disclosed to website visitors.
The "Debug" preset enables most debug and error messages which is helpful during development.
As a third option it is possible to manually customize each setting for specific needs.
</p>
<f:for each="{feature.presetsOrderedByPriority}" as="preset">
<f:render partial="Settings/Presets/{feature.name}/{preset.name}" arguments="{_all}" />
</f:for>
</div>
</div>
</div>
</html>
@@ -0,0 +1,34 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:be.infobox state="1" disableIcon="true">
<input
type="radio"
class="t3-install-tool-configuration-radio"
id="t3-install-tool-configuration-context-custom"
name="install[values][{feature.name}][enable]"
value="{preset.name}"
{f:if(condition: preset.isActive, then:'checked="checked"')}
/>
<label for="t3-install-tool-configuration-context-custom" class="t3-install-tool-configuration-radio-label">
<strong>Custom configuration</strong> {f:if(condition: preset.isActive, then:' [Active]')}
</label>
<p>Custom configuration mixture if no other preset fits.</p>
<f:for each="{preset.configurationValues}" as="configurationValue" key="configurationKey">
<div class="form-group">
<label class="col-sm-4 control-label" for="{feature.name}{preset.name}{configurationKey}">{configurationKey}</label>
<div class="col-sm-8">
<input
id="{feature.name}{preset.name}{configurationKey}"
type="text"
name="install[values][{feature.name}][{preset.name}][{configurationKey}]"
value="{configurationValue}"
class="form-control t3js-custom-preset"
data-radio="t3-install-tool-configuration-context-custom"
/>
</div>
</div>
</f:for>
</f:be.infobox>
</html>
@@ -0,0 +1,18 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:be.infobox state="0" disableIcon="true">
<input
type="radio"
class="t3-install-tool-configuration-radio"
id="t3-install-tool-configuration-context-debug"
name="install[values][{feature.name}][enable]"
value="{preset.name}"
{f:if(condition: preset.isActive, then:'checked="checked"')}
/>
<label for="t3-install-tool-configuration-context-debug" class="t3-install-tool-configuration-radio-label">
<strong>Debug</strong> {f:if(condition: preset.isActive, then:' [Active]')}
</label>
<p>Enable debug output and set logging to info level.</p>
</f:be.infobox>
</html>
@@ -0,0 +1,18 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:be.infobox state="0" disableIcon="true">
<input
type="radio"
class="t3-install-tool-configuration-radio"
id="t3-install-tool-configuration-context-live"
name="install[values][{feature.name}][enable]"
value="{preset.name}"
{f:if(condition: preset.isActive, then:'checked="checked"')}
/>
<label for="t3-install-tool-configuration-context-live" class="t3-install-tool-configuration-radio-label">
<strong>Live</strong> {f:if(condition: preset.isActive, then:' [Active]')}
</label>
<p>Turn off debug output and set logging to warnings and errors only.</p>
</f:be.infobox>
</html>
@@ -0,0 +1,57 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="panel panel-default panel-flat">
<div class="panel-heading" role="tab" id="headingFour">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseFour" aria-expanded="true" aria-controls="collapseFour" class="collapsed">
<span class="caret"></span>
Image handling settings
</a>
</h4>
</div>
<div id="collapseFour" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingFour">
<div class="panel-body">
<p>
Advanced image handling in TYPO3 CMS uses the command line tool
GraphicsMagick or ImageMagick. The tool needs to be configured
correctly depending on the version that is available on the system.
</p>
<p>
This module detects the available image handling versions and sets
the system accordingly. If everything is correctly set up the image
tests of the install tool section "Test setup" should be fine.
</p>
<p>
If ImageMagick or GraphicsMagick executables are located in an unusual place,
set the absolute directory name here.
</p>
<div class="form-group">
<div class="col-sm-12">
<div class="input-group">
<input
type="text"
name="install[values][{feature.name}][additionalSearchPath]"
value="{feature.additionalSearchPath}"
class="form-control t3js-presets-image-executable"
/>
<div class="input-group-btn">
<button
class="btn btn-default t3js-presets-image-executable-trigger"
type="button"
>
Find executables in this directory
</button>
</div>
</div>
</div>
</div>
<f:for each="{feature.presetsOrderedByPriority}" as="preset">
<f:render partial="Settings/Presets/{feature.name}/{preset.name}" arguments="{_all}" />
</f:for>
</div>
</div>
</div>
</html>
@@ -0,0 +1,35 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:be.infobox state="1" disableIcon="true">
<input
type="radio"
class="t3-install-tool-configuration-radio"
id="t3-install-tool-configuration-image-custom"
name="install[values][{feature.name}][enable]"
value="{preset.name}"
{f:if(condition: preset.isActive, then:'checked="checked"')}
/>
<label for="t3-install-tool-configuration-image-custom" class="t3-install-tool-configuration-radio-label">
<strong>Custom configuration</strong> {f:if(condition: preset.isActive, then:' [Active]')}
</label>
<p>Custom configuration mixture if no other preset fits.</p>
<f:for each="{preset.configurationValues}" as="configurationValue" key="configurationKey">
<div class="form-group">
<label class="col-sm-4 control-label" for="{feature.name}{preset.name}{configurationKey}">{configurationKey}</label>
<div class="col-sm-8">
<input
id="{feature.name}{preset.name}{configurationKey}"
type="text"
name="install[values][{feature.name}][{preset.name}][{configurationKey}]"
value="{configurationValue}"
class="form-control t3js-custom-preset"
data-radio="t3-install-tool-configuration-image-custom"
/>
</div>
</div>
</f:for>
</f:be.infobox>
</html>
@@ -0,0 +1,30 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:be.infobox state="{f:if(condition:'{preset.isAvailable}', then:'0', else:'2')}" disableIcon="true">
<input
type="radio"
class="t3-install-tool-configuration-radio"
id="t3-install-tool-configuration-image-graphicsmagick"
name="install[values][{feature.name}][enable]"
value="{preset.name}"
{f:if(condition:'{preset.isAvailable}', then:'', else:'disabled="disabled"')}
{f:if(condition: preset.isActive, then:'checked="checked"')}
/>
<label for="t3-install-tool-configuration-image-graphicsmagick" class="t3-install-tool-configuration-radio-label">
<strong>Graphics Magick</strong> {f:if(condition: preset.isActive, then:' [Active]')}
</label>
<p>
<f:if condition="{preset.isAvailable}">
<f:then>
GraphicsMagick was found in path <code>{preset.foundPath}</code>.
</f:then>
<f:else>
GraphicsMagick was not found in standard system paths. If it is
installed in an unusual location on your system, set the path in the
input box above and search again.
</f:else>
</f:if>
</p>
</f:be.infobox>
</html>
@@ -0,0 +1,30 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:be.infobox state="{f:if(condition:'{preset.isAvailable}', then:'0', else:'2')}" disableIcon="true">
<input
type="radio"
class="t3-install-tool-configuration-radio"
id="t3-install-tool-configuration-image-imagemagick6"
name="install[values][{feature.name}][enable]"
value="{preset.name}"
{f:if(condition:'{preset.isAvailable}', then:'', else:'disabled="disabled"')}
{f:if(condition: preset.isActive, then:'checked="checked"')}
/>
<label for="t3-install-tool-configuration-image-imagemagick6" class="t3-install-tool-configuration-radio-label">
<strong>Image Magick version 6 or higher</strong> {f:if(condition: preset.isActive, then:' [Active]')}
</label>
<p>
<f:if condition="{preset.isAvailable}">
<f:then>
An ImageMagick version 6 or higher was found in path <code>{preset.foundPath}</code>.
</f:then>
<f:else>
ImageMagick version 6 or higher was not found in standard system paths.
If it is installed in an unusual location on your system, set the path in the
input box above and search again.
</f:else>
</f:if>
</p>
</f:be.infobox>
</html>
@@ -0,0 +1,31 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="panel panel-default panel-flat">
<div class="panel-heading" role="tab" id="headingFive">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseFive" aria-expanded="true" aria-controls="collapseFive" class="collapsed">
<span class="caret"></span>
Mail handling settings
</a>
</h4>
</div>
<div id="collapseFive" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingFive">
<div class="panel-body">
<p>
Mailer agent in TYPO3 CMS can use the sendmail command line tool
if transport is configured to sendmail. The tool path needs to be
configured correctly depending on the binary that is available
on the system.
</p>
<p>
This module detects the current sendmail path from PHP settings
and allows to set the correct value in TYPO3 settings.
</p>
<f:for each="{feature.presetsOrderedByPriority}" as="preset">
<f:render partial="Settings/Presets/{feature.name}/{preset.name}" arguments="{_all}" />
</f:for>
</div>
</div>
</div>
</html>
@@ -0,0 +1,33 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:be.infobox state="1" disableIcon="true">
<input
type="radio"
class="t3-install-tool-configuration-radio"
id="t3-install-tool-configuration-mail-custom"
name="install[values][{feature.name}][enable]"
value="{preset.name}"
{f:if(condition: preset.isActive, then:'checked="checked"')}
/>
<label for="t3-install-tool-configuration-mail-custom" class="t3-install-tool-configuration-radio-label">
<strong>Custom configuration</strong> {f:if(condition: preset.isActive, then:' [Active]')}
</label>
<p>Custom mail settings:</p>
<f:for each="{preset.configurationValues}" as="configurationValue" key="configurationKey">
<div class="form-group">
<label class="col-sm-6 control-label" for="{feature.name}{preset.name}{configurationKey}">{configurationKey}</label>
<div class="col-sm-6">
<input
id="{feature.name}{preset.name}{configurationKey}"
type="text"
name="install[values][{feature.name}][{preset.name}][{configurationKey}]"
value="{configurationValue}"
class="form-control t3js-custom-preset"
data-radio="t3-install-tool-configuration-mail-custom"
/>
</div>
</div>
</f:for>
</f:be.infobox>
</html>
@@ -0,0 +1,27 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:be.infobox state="{f:if(condition:'{preset.isAvailable}', then:'0', else:'2')}" disableIcon="true">
<input
type="radio"
class="t3-install-tool-configuration-radio"
id="t3-install-tool-configuration-mail-sendmail"
name="install[values][{feature.name}][enable]"
value="{preset.name}"
{f:if(condition:'{preset.isAvailable}', then:'', else:'disabled="disabled"')}
{f:if(condition: preset.isActive, then:'checked="checked"')}
/>
<label for="t3-install-tool-configuration-mail-sendmail" class="t3-install-tool-configuration-radio-label">
<strong>Import sendmail command from PHP settings</strong> {f:if(condition: preset.isActive, then:' [Active]')}
</label>
<f:if condition="{preset.isAvailable}">
<f:then>
<p>If you enable this setting the sendmail command will be set to:</p>
<p><pre>{preset.sendmailPath}</pre></p>
</f:then>
<f:else>
<p>Sendmail was not found in your PHP settings.</p>
</f:else>
</f:if>
</f:be.infobox>
</html>
@@ -0,0 +1,20 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:be.infobox state="{f:if(condition:'{preset.isAvailable}', then:'0', else:'2')}" disableIcon="true">
<input
type="radio"
class="t3-install-tool-configuration-radio"
id="t3-install-tool-configuration-mail-smtp"
name="install[values][{feature.name}][enable]"
value="{preset.name}"
{f:if(condition:'{preset.isAvailable}', then:'', else:'disabled="disabled"')}
{f:if(condition: preset.isActive, then:'checked="checked"')}
/>
<label for="t3-install-tool-configuration-mail-smtp" class="t3-install-tool-configuration-radio-label">
<strong>SMTP Settings</strong> {f:if(condition: preset.isActive, then:' [Active]')}
</label>
<p>To set up the mailer agent in TYPO3 CMS to use SMTP it's necessary to configure a SMTP server that will take care of the delivery of your emails.
Luckily, the configuration of a SMTP server is generally very easy. This option set some default values for you.</p>
</f:be.infobox>
</html>
@@ -0,0 +1,32 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<div class="panel panel-default panel-flat">
<div class="panel-heading" role="tab" id="headingSix">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseSix" aria-expanded="true" aria-controls="collapseSix" class="collapsed">
<span class="caret"></span>
Password hashing settings
</a>
</h4>
</div>
<div id="collapseSix" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingSix">
<div class="panel-body">
<p>
Passwords in TYPO3 for frontend and backend users are never stored in
plain text in the database. A salted one-way hash algorithm is
used.
</p>
<p>
This module detects available password hash algorithms. If in doubt, select the first
selectable one, it represents the most secure hash algorithm available
on this system. The selected algorithm will be used for new frontend and backend users
and existing users are upgraded to the selected algorithm upon their first successful login.
</p>
<f:for each="{feature.presetsOrderedByPriority}" as="preset">
<f:render partial="Settings/Presets/{feature.name}/{preset.name}" arguments="{_all}" />
</f:for>
</div>
</div>
</div>
</html>
@@ -0,0 +1,33 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:be.infobox state="{f:if(condition:'{preset.isAvailable}', then:'0', else:'2')}" disableIcon="true">
<input
type="radio"
class="t3-install-tool-configuration-radio"
id="t3-install-tool-configuration-passwordHashing-argon2i"
name="install[values][{feature.name}][enable]"
value="{preset.name}"
{f:if(condition:'{preset.isAvailable}', then:'', else:'disabled="disabled"')}
{f:if(condition: preset.isActive, then:'checked="checked"')}
/>
<label for="t3-install-tool-configuration-passwordHashing-argon2i" class="t3-install-tool-configuration-radio-label">
<strong>Argon2i</strong> {f:if(condition: preset.isActive, then:' [Active]')}
</label>
<p>
<f:if condition="{preset.isAvailable}">
<f:then>
Select this one if in doubt: Argon2i is a modern key derivation function that was selected as
the winner of the Password Hashing Competition in July 2015.
</f:then>
<f:else>
Argon2i is not available on this system. This is sad since it is a modern password hash
algorithm and the winner of the Password Hashing Competition in July 2015. It is easily
available on all platforms since PHP version 7.2. There is no sane reason to run PHP >7.2
without argon2i. Please reach out to your hoster to fix this and select this hash algorithm
as soon as it is available.
</f:else>
</f:if>
</p>
</f:be.infobox>
</html>
@@ -0,0 +1,32 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:be.infobox state="{f:if(condition:'{preset.isAvailable}', then:'0', else:'2')}" disableIcon="true">
<input
type="radio"
class="t3-install-tool-configuration-radio"
id="t3-install-tool-configuration-passwordHashing-bcrypt"
name="install[values][{feature.name}][enable]"
value="{preset.name}"
{f:if(condition:'{preset.isAvailable}', then:'', else:'disabled="disabled"')}
{f:if(condition: preset.isActive, then:'checked="checked"')}
/>
<label for="t3-install-tool-configuration-passwordHashing-bcrypt" class="t3-install-tool-configuration-radio-label">
<strong>bcrypt</strong> {f:if(condition: preset.isActive, then:' [Active]')}
</label>
<p>
<f:if condition="{preset.isAvailable}">
<f:then>
bcrypt is a good password hashing algorithm. It however needs some additional quirks
for long passwords in PHP and should only be used if Argon2i is not available.
</f:then>
<f:else>
bcrypt is not available on this system. TYPO3 password storage not only requires bcrypt itself,
but also sha384 to be availble to use this algorithm. One of these or both are missing. bcrypt however
can be used as a fallback if Argon2i is not available, too. Ask reach out to your hoster to fix both
and prefer Argon2i.
</f:else>
</f:if>
</p>
</f:be.infobox>
</html>
@@ -0,0 +1,37 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:be.infobox state="1" disableIcon="true">
<input
type="radio"
class="t3-install-tool-configuration-radio"
id="t3-install-tool-configuration-passwordHashing-custom"
name="install[values][{feature.name}][enable]"
value="{preset.name}"
disabled="disabled"
{f:if(condition: preset.isActive, then:'checked="checked"')}
/>
<label for="t3-install-tool-configuration-passwordHashing-custom" class="t3-install-tool-configuration-radio-label">
<strong>Custom configuration</strong> {f:if(condition: preset.isActive, then:' [Active]')}
</label>
<p>Custom password hash settings. This interface does not allow modification of the values, they are just shown.
Configuring custom hash settings is for advanced users who know exactly what they are doing. Refer to the
core documentation for details.</p>
<f:for each="{preset.configurationValues}" as="configurationValue" key="configurationKey">
<div class="form-group">
<label class="col-sm-6 control-label" for="{feature.name}{preset.name}{configurationKey}">{configurationKey}</label>
<div class="col-sm-6">
<input
id="{feature.name}{preset.name}{configurationKey}"
type="text"
name="install[values][{feature.name}][{preset.name}][{configurationKey}]"
value="{configurationValue}"
disabled="disabled"
class="form-control t3js-custom-preset"
data-radio="t3-install-tool-configuration-passwordHashing-custom"
/>
</div>
</div>
</f:for>
</f:be.infobox>
</html>
@@ -0,0 +1,32 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:be.infobox state="{f:if(condition:'{preset.isAvailable}', then:'0', else:'2')}" disableIcon="true">
<input
type="radio"
class="t3-install-tool-configuration-radio"
id="t3-install-tool-configuration-passwordHashing-pbkdf2"
name="install[values][{feature.name}][enable]"
value="{preset.name}"
{f:if(condition:'{preset.isAvailable}', then:'', else:'disabled="disabled"')}
{f:if(condition: preset.isActive, then:'checked="checked"')}
/>
<label for="t3-install-tool-configuration-passwordHashing-pbkdf2" class="t3-install-tool-configuration-radio-label">
<strong>PBKDF2</strong> {f:if(condition: preset.isActive, then:' [Active]')}
</label>
<p>
<f:if condition="{preset.isAvailable}">
<f:then>
PBKDF2 is a key derivation function recommended by IETF in RFC 8018 as part of the PKCS series, even
though newer password hashing functions such as Argon2i are designed to address weaknesses of PBKDF2.
It could be a preferred password hash algorithm if storing passwords in a FIPS compliant way is necessary.
Usually, selecting Argon2i as hash algorithm is good to go.
</f:then>
<f:else>
PBKDF2 is not available on this system. This is very uncommon. If Argon2i and bcrypt are also not available,
you should seriously question the quality of your current hoster and reach them out to fix this as soon as possible.
</f:else>
</f:if>
</p>
</f:be.infobox>
</html>
@@ -0,0 +1,32 @@
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:be.infobox state="{f:if(condition:'{preset.isAvailable}', then:'0', else:'2')}" disableIcon="true">
<input
type="radio"
class="t3-install-tool-configuration-radio"
id="t3-install-tool-configuration-passwordHashing-phpass"
name="install[values][{feature.name}][enable]"
value="{preset.name}"
{f:if(condition:'{preset.isAvailable}', then:'', else:'disabled="disabled"')}
{f:if(condition: preset.isActive, then:'checked="checked"')}
/>
<label for="t3-install-tool-configuration-passwordHashing-phpass" class="t3-install-tool-configuration-radio-label">
<strong>phpass</strong> {f:if(condition: preset.isActive, then:' [Active]')}
</label>
<p>
<f:if condition="{preset.isAvailable}">
<f:then>
In almost all cases, a modern hash algorithm like Argon2i should be preferred and is good to go.
phpass is a portable public domain password hashing framework for use in PHP applications since 2005.
The implementation should work on almost all PHP builds. It might be a suitable password storage hash
method in seldom cases if third party systems must use the same password hash on a low database level
and no sane different authentication service can be used for whatever reason.
</f:then>
<f:else>
That's funny: phpass is always available!
</f:else>
</f:if>
</p>
</f:be.infobox>
</html>
@@ -0,0 +1,43 @@
<html
xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers"
data-namespace-typo3-fluid="true">
<div class="t3js-upgrade-doc panel panel-rst panel-{fileArray.class} risk-medium item" data-item-tags="{fileArray.tagList}" data-item-version="{fileArray.version}" data-item-state="{state}" id="heading{id}">
<div class="panel-heading" role="tab">
<h3 class="panel-title">
<f:if condition="{read}">
<f:then>
<a class="link-action t3js-upgradeDocs-unmarkRead pull-right" data-filepath="{fileArray.filepath}" data-toggle="tooltip" data-placement="top" title="Mark as not read">
<i class="fa fa-lg fa-ban"></i>
<span class="sr-only">restore this document</span>
</a>
</f:then>
<f:else>
<a class="link-action t3js-upgradeDocs-markRead pull-right" data-filepath="{fileArray.filepath}" data-toggle="tooltip" data-placement="top" title="Mark as read">
<i class="fa fa-lg fa-check"></i>
<span class="sr-only">ignore this document</span>
</a>
</f:else>
</f:if>
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse{id}" aria-expanded="true" aria-controls="collapse{id}" class="collapsed">
<span class="caret"></span>
<strong>{fileArray.headline}</strong>
</a>
</h3>
</div>
<div id="collapse{id}" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading{id}">
<div class="rst-tags t3js-tags"></div>
<div class="rst-links">
<f:if condition="{fileArray.url.issue}">
<a href="{fileArray.url.issue}" target="_blank" rel="noreferrer" class="nowrap"><core:icon identifier="actions-window-open" /> Open issue</a>
</f:if>
<f:if condition="{fileArray.url.documentation}">
<a href="{fileArray.url.documentation}" target="_blank" rel="noreferrer" class="nowrap"><core:icon identifier="actions-window-open" /> Open rendered version</a>
</f:if>
</div>
<pre><f:format.raw>{fileArray.parsedContent}</f:format.raw></pre>
</div>
</div>
</html>