TYPO3 v15 dev-main snapshot ()
This commit is contained in:
@@ -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}">
|
||||
<h2 class="card-title">{title}</h2>
|
||||
</f:if>
|
||||
<f:if condition="{subtitle}">
|
||||
<span class="card-subtitle">{subtitle}</span>
|
||||
</f:if>
|
||||
</div>
|
||||
</div>
|
||||
</html>
|
||||
@@ -0,0 +1,10 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:if condition="!{isWritable}">
|
||||
<f:be.infobox state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::WARNING')}" disableIcon="true">
|
||||
The configuration file system/settings.php is not writable by TYPO3. Changing any configuration is
|
||||
therefore not possible.
|
||||
</f:be.infobox>
|
||||
</f:if>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,195 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
|
||||
xmlns:i="http://typo3.org/ns/TYPO3/CMS/Install/ViewHelpers"
|
||||
xmlns:core="http://typo3.org/ns/TYPO3/CMS/Core/ViewHelpers"
|
||||
data-namespace-typo3-fluid="true"
|
||||
>
|
||||
|
||||
<div class="panel panel-default searchhit">
|
||||
<h2 class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
class="panel-button collapsed"
|
||||
type="button"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-target="#collapse-{extensionKey}"
|
||||
aria-controls="collapse-{extensionKey}"
|
||||
aria-expanded="false"
|
||||
id="heading-{extensionKey}"
|
||||
>
|
||||
<div class="panel-title">
|
||||
<strong>{extensionKey}</strong>
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
<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}" as="category" key="categoryName" iteration="iteration">
|
||||
<f:if condition="{categoryName}">
|
||||
<li role="presentation" class="nav-item">
|
||||
<button
|
||||
type="button"
|
||||
class="nav-link{f:if(condition:'{iteration.isFirst}', then:' active')}"
|
||||
data-typo3-tab="#{i:format.noSpace(value:'category-{extensionKey}-{categoryName}')}"
|
||||
aria-controls="category-{extensionKey}-{categoryName}"
|
||||
role="tab"
|
||||
>
|
||||
{category.label ? category.label : categoryName}
|
||||
</button>
|
||||
</li>
|
||||
</f:if>
|
||||
</f:for>
|
||||
</ul>
|
||||
|
||||
<form action="#" name="configurationform" autocomplete="off" class="t3js-extensionConfiguration-form extensionConfiguration-form" data-extension-key="{extensionKey}" spellcheck="false">
|
||||
|
||||
<div class="tab-content">
|
||||
<f:for each="{extensionData}" as="subcategories" key="categoryName" iteration="iterator">
|
||||
<div role="tabpanel" class="tab-pane {f:if(condition:'{iterator.isFirst}', then:'active')}" id="{i:format.noSpace(value:'category-{extensionKey}-{categoryName}')}">
|
||||
<f:for each="{subcategories.items}" as="subcategory">
|
||||
<div class="form-section">
|
||||
<f:for each="{subcategory.items}" 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 class="form-label" for="em-{extensionKey}-{configurationItem.name}">
|
||||
<span>{configurationItem.label}</span> <code>({categoryName}.{configurationItem.name} [{configurationItem.type}])</code>
|
||||
</label>
|
||||
<f:if condition="{configurationItem.description}">
|
||||
<div class="form-description">{configurationItem.description -> f:format.nl2br()}</div>
|
||||
</f:if>
|
||||
<f:if condition="{configurationItem.typeHint}">
|
||||
<div class="form-description">{configurationItem.typeHint}</div>
|
||||
</f:if>
|
||||
<div class="form-control-wrap">
|
||||
<f:switch expression="{configurationItem.type}">
|
||||
|
||||
<f:case value="int+">
|
||||
<input
|
||||
class="form-control"
|
||||
id="em-{extensionKey}-{configurationItem.name}"
|
||||
type="number"
|
||||
name="{configurationItem.name}"
|
||||
value="{configurationItem.value}"
|
||||
{f:if(condition: '{configurationItem.typeIntPlusMin} || {configurationItem.typeIntPlusMin == 0}', then: 'min="{configurationItem.typeIntPlusMin}"')}
|
||||
{f:if(condition: configurationItem.typeIntPlusMax, then: 'max="{configurationItem.typeIntPlusMax}"')}
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
>
|
||||
</f:case>
|
||||
<f:case value="int">
|
||||
<input
|
||||
class="form-control"
|
||||
id="em-{extensionKey}-{configurationItem.name}"
|
||||
type="number"
|
||||
name="{configurationItem.name}"
|
||||
value="{configurationItem.value}"
|
||||
{f:if(condition: '{configurationItem.typeIntMin} || {configurationItem.typeIntMin == 0}', then: 'min="{configurationItem.typeIntMin}"')}
|
||||
{f:if(condition: '{configurationItem.typeIntMax} || {configurationItem.typeIntMax == 0}', then: 'max="{configurationItem.typeIntMax}"')}
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
>
|
||||
</f:case>
|
||||
<f:case value="string">
|
||||
<input
|
||||
class="form-control"
|
||||
id="em-{extensionKey}-{configurationItem.name}"
|
||||
type="text"
|
||||
name="{configurationItem.name}"
|
||||
value="{configurationItem.value}"
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
</f:case>
|
||||
<f:case value="color">
|
||||
<typo3-backend-color-picker>
|
||||
<input
|
||||
class="form-control"
|
||||
type="text"
|
||||
id="em-{extensionKey}-{configurationItem.name}"
|
||||
name="{configurationItem.name}"
|
||||
value="{configurationItem.value}"
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
</typo3-backend-color-picker>
|
||||
</f:case>
|
||||
<f:case value="wrap">
|
||||
<input
|
||||
class="form-control t3js-emconf-wrap"
|
||||
type="text"
|
||||
id="em-{extensionKey}-{configurationItem.name}"
|
||||
name="{configurationItem.name}"
|
||||
value="{configurationItem.value}"
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
</f:case>
|
||||
<f:case value="offset">
|
||||
<input
|
||||
type="text"
|
||||
class="form-control t3js-emconf-offset"
|
||||
id="em-{extensionKey}-{configurationItem.name}"
|
||||
name="{configurationItem.name}"
|
||||
value="{configurationItem.value}"
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
</f:case>
|
||||
<f:case value="options">
|
||||
<select
|
||||
class="form-select"
|
||||
id="em-{extensionKey}-{configurationItem.name}"
|
||||
name="{configurationItem.name}"
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
>
|
||||
<f:for each="{configurationItem.labelValueArray}" as="labelAndValue">
|
||||
<option value="{labelAndValue.value}" {f:if(condition: '{labelAndValue.value} == {configurationItem.value}', then: 'selected')}>
|
||||
{labelAndValue.label}
|
||||
</option>
|
||||
</f:for>
|
||||
</select>
|
||||
</f:case>
|
||||
<f:case value="boolean">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="hidden"
|
||||
name="{configurationItem.name}"
|
||||
value="0"
|
||||
/>
|
||||
<input
|
||||
type="checkbox"
|
||||
name="{configurationItem.name}"
|
||||
id="em-{extensionKey}-{configurationItem.name}"
|
||||
class="form-check-input"
|
||||
value="{configurationItem.trueValue}"
|
||||
{f:if(condition: '{configurationItem.value} == {configurationItem.trueValue}', then: 'checked')}
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
</div>
|
||||
</f:case>
|
||||
<f:case value="user">
|
||||
{configurationItem.html -> f:format.raw()}
|
||||
</f:case>
|
||||
|
||||
</f:switch>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
</div>
|
||||
</f:for>
|
||||
</div>
|
||||
</f:for>
|
||||
</div>
|
||||
|
||||
<f:if condition="{isWritable}">
|
||||
<button type="submit" class="btn btn-primary" name="save">Save "{extensionKey}" configuration</button>
|
||||
</f:if>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,259 @@
|
||||
<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">
|
||||
<h2 class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
class="panel-button collapsed"
|
||||
type="button"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-parent="#accordion"
|
||||
data-bs-target="#collapse-{sectionName}"
|
||||
aria-controls="collapse-{sectionName}"
|
||||
aria-expanded="false"
|
||||
id="heading-{sectionName}"
|
||||
>
|
||||
<div class="panel-title">
|
||||
<strong>{sectionData.description}</strong> [{sectionName}]
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
<div id="collapse-{sectionName}" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-{sectionName}">
|
||||
<div class="panel-body">
|
||||
<div class="localconf-list">
|
||||
<f:for each="{sectionData.items}" as="item">
|
||||
<div class="localconf-item searchhit t3js-localConfiguration-item" id="{sectionName}-{item.key}">
|
||||
<div class="localconf-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 -> i:format.cropText(maxCharacters: 40)}
|
||||
</f:if>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
<div class="localconf-item-body">
|
||||
<f:render partial="Settings/ReadonlyInfo" arguments="{configuration: item}" />
|
||||
<f:if condition="{item.differentValueInCurrentConfiguration}">
|
||||
<div class="t3js-infobox callout callout-warning">
|
||||
<div class="callout-content">
|
||||
<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 system/additional.php.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
<!-- @see typo3-formengine-table-wizard -->
|
||||
<f:if condition="{item.type} == 'map' || {item.type} == 'element-list'">
|
||||
<f:variable name="configurationListNamespace" value="item-{item.type}-{sectionName}-{item.key}" />
|
||||
|
||||
<f:if condition="{item.description}">
|
||||
<div class="form-description">{item.description -> f:sanitize.html()}</div>
|
||||
</f:if>
|
||||
|
||||
<div class="configuration-map-container t3js-configuration-list" data-namespace="{configurationListNamespace}" data-type="{item.type}">
|
||||
<div class="configuration-map-item-collection">
|
||||
<div class="configuration-map-item">
|
||||
<f:if condition="{item.type} == 'map'">
|
||||
<div class="configuration-map-item-header">{item.arrayKey}</div>
|
||||
</f:if>
|
||||
<div class="configuration-map-item-header">{item.arrayValue}</div>
|
||||
</div>
|
||||
<f:for each="{item.values}" as="value" key="key">
|
||||
<div class="configuration-map-item t3js-localConfiguration-configuration-item">
|
||||
<div class="input-group">
|
||||
<f:if condition="{item.type} == 'map'">
|
||||
<input
|
||||
type="text"
|
||||
value="{key}"
|
||||
placeholder="{item.arrayKey} [enumerated when empty]"
|
||||
data-path="{sectionName}/{item.key}/key[]"
|
||||
data-valuetype="{item.type}"
|
||||
class="t3-install-form-input-text form-control t3js-localConfiguration-pathValue"
|
||||
autocomplete="off"
|
||||
{f:if(condition: '!{isWritable} || {item.readonly}', then: 'disabled')}
|
||||
/>
|
||||
</f:if>
|
||||
<input
|
||||
type="text"
|
||||
value="{value}"
|
||||
placeholder="{item.arrayValue} [required]"
|
||||
data-path="{sectionName}/{item.key}/value[]"
|
||||
data-valuetype="{item.type}"
|
||||
class="t3-install-form-input-text form-control t3js-localConfiguration-pathValue"
|
||||
autocomplete="off"
|
||||
{f:if(condition: '!{isWritable} || {item.readonly}', then: 'disabled')}
|
||||
/>
|
||||
<f:if condition="{isWritable} && !{item.readonly}">
|
||||
<button class="btn btn-default t3js-localConfiguration-removeRow"><core:icon identifier="actions-remove" /></button>
|
||||
</f:if>
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
</div>
|
||||
<f:if condition="{isWritable} && !{item.readonly}">
|
||||
<template id="{configurationListNamespace}">
|
||||
<div class="configuration-map-item t3js-localConfiguration-configuration-item">
|
||||
<div class="input-group">
|
||||
<f:if condition="{item.type} == 'map'">
|
||||
<input
|
||||
type="text"
|
||||
value=""
|
||||
placeholder="{item.arrayKey} [enumerated when empty]"
|
||||
data-path="{sectionName}/{item.key}/key[]"
|
||||
data-valuetype="{item.type}"
|
||||
class="t3-install-form-input-text form-control t3js-localConfiguration-pathValue"
|
||||
autocomplete="off"
|
||||
{f:if(condition: '!{isWritable} || {item.readonly}', then: 'disabled')}
|
||||
/>
|
||||
</f:if>
|
||||
<input
|
||||
type="text"
|
||||
value=""
|
||||
placeholder="{item.arrayValue} [required]"
|
||||
data-path="{sectionName}/{item.key}/value[]"
|
||||
data-valuetype="{item.type}"
|
||||
class="t3-install-form-input-text form-control t3js-localConfiguration-pathValue"
|
||||
autocomplete="off"
|
||||
{f:if(condition: '!{isWritable} || {item.readonly}', then: 'disabled')}
|
||||
/>
|
||||
<button class="btn btn-default t3js-localConfiguration-removeRow"><core:icon identifier="actions-remove" /></button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<button type="button" class="btn btn-default btn-configuration-map-add t3js-localConfiguration-createRow"><core:icon identifier="actions-add" /> Add item</button>
|
||||
</f:if>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{f:count(subject: item.allowedValues)} || {item.dataType} == 'dropdown'">
|
||||
<f:then>
|
||||
<div class="form-group">
|
||||
<div class="form-description">{item.description -> f:sanitize.html()}</div>
|
||||
<select data-path="{sectionName}/{item.key}" class="t3-install-form-input-text form-select t3js-localConfiguration-pathValue"
|
||||
{f:if(condition: '!{isWritable} || {item.readonly}', then: 'disabled')}
|
||||
>
|
||||
<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="form-check">
|
||||
<input
|
||||
type="checkbox"
|
||||
value="1"
|
||||
class="form-check-input t3js-localConfiguration-pathValue"
|
||||
id="{sectionName}_{item.key}"
|
||||
data-path="{sectionName}/{item.key}"
|
||||
{f:if(condition: item.checked, then:'checked="checked"')}
|
||||
{f:if(condition: '!{isWritable} || {item.readonly}', then: 'disabled')}
|
||||
/>
|
||||
<label class="form-check-label" for="{sectionName}_{item.key}">
|
||||
{item.description -> f:sanitize.html()}
|
||||
</label>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{item.type} == 'input'">
|
||||
<div class="form-group">
|
||||
<f:if condition="{item.description}">
|
||||
<div class="form-description">{item.description -> f:sanitize.html()}</div>
|
||||
</f:if>
|
||||
<input
|
||||
type="text"
|
||||
value="{item.value}"
|
||||
data-path="{sectionName}/{item.key}"
|
||||
class="t3-install-form-input-text form-control t3js-localConfiguration-pathValue"
|
||||
autocomplete="off"
|
||||
{f:if(condition: '!{isWritable} || {item.readonly}', then: 'disabled')}
|
||||
/>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{item.type} == 'password'">
|
||||
<div class="form-group">
|
||||
<f:if condition="{item.description}">
|
||||
<div class="form-description">{item.description -> f:sanitize.html()}</div>
|
||||
</f:if>
|
||||
<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"
|
||||
{f:if(condition: '!{isWritable} || {item.readonly}', then: 'disabled')}
|
||||
/>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{item.type} == 'number'">
|
||||
<div class="form-group">
|
||||
<f:if condition="{item.description}">
|
||||
<div class="form-description">{item.description -> f:sanitize.html()}</div>
|
||||
</f:if>
|
||||
<input
|
||||
type="number"
|
||||
value="{item.value}"
|
||||
data-path="{sectionName}/{item.key}"
|
||||
class="t3-
|
||||
install-form-input-text form-control t3js-localConfiguration-pathValue"
|
||||
autocomplete="off"
|
||||
{f:if(condition: '!{isWritable} || {item.readonly}', then: 'disabled')}
|
||||
/>
|
||||
</div>
|
||||
</f:if>
|
||||
|
||||
<f:if condition="{item.type} == 'textarea'">
|
||||
<div class="form-group">
|
||||
<f:if condition="{item.description}">
|
||||
<div class="form-description">{item.description -> f:sanitize.html()}</div>
|
||||
</f:if>
|
||||
<textarea
|
||||
rows="5"
|
||||
cols="60"
|
||||
data-path="{sectionName}/{item.key}"
|
||||
class="form-control t3js-localConfiguration-pathValue"
|
||||
{f:if(condition: '!{isWritable} || {item.readonly}', then: 'disabled')}
|
||||
>{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 class="alert alert-warning m-0">
|
||||
No settings have been found.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,70 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<div class="panel panel-default">
|
||||
<h2 class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
class="panel-button collapsed"
|
||||
type="button"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-parent="#accordion"
|
||||
data-bs-target="#collapseSeven"
|
||||
aria-controls="collapseSeven"
|
||||
aria-expanded="false"
|
||||
id="headingSeven"
|
||||
>
|
||||
<div class="panel-title">
|
||||
<strong>Cache settings</strong>
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
<div id="collapseSeven" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingSeven">
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
Configure how TYPO3 caches are stored to optimize performance for your hosting environment.
|
||||
</p>
|
||||
<p>
|
||||
<strong>The default configuration</strong> works well for most installations. Depending on your setup,
|
||||
performance can be improved by choosing a different cache storage type.<br>
|
||||
<strong>Database storage</strong> is typically the best choice for standard environments and installations
|
||||
using network file systems (NFS), where frequent file access may reduce performance.<br>
|
||||
<strong>File-based caches</strong> can be more efficient in shared hosting environments or when using
|
||||
distributed databases.<br>
|
||||
For advanced installations, <strong>memory-based cache backends</strong> such as Redis
|
||||
or Memcached can provide additional performance improvements. These require further
|
||||
configuration in <code>system/settings.php.</code>
|
||||
</p>
|
||||
<p>
|
||||
Select <strong>Custom settings</strong> to configure the storage backend for each
|
||||
cache individually.
|
||||
</p>
|
||||
|
||||
<p>Cache types:</p>
|
||||
<dl>
|
||||
<dt>Page</dt>
|
||||
<dd>Stores the cached content of individual pages.</dd>
|
||||
|
||||
<dt>Page Section</dt>
|
||||
<dd>Stores TypoScript instructions and data required to generate page content and the
|
||||
handling of non-cacheable objects.</dd>
|
||||
|
||||
<dt>Hash</dt>
|
||||
<dd>Stores internal data used during page generation, such as menu structures.</dd>
|
||||
|
||||
<dt>Rootline</dt>
|
||||
<dd>Stores the full hierarchy of pages leading to the current page, including translation
|
||||
and timing information. Used for menus and link generation.</dd>
|
||||
|
||||
<dt>Image Sizes</dt>
|
||||
<dd>Stores calculated image dimensions separately to reduce file system access.</dd>
|
||||
</dl>
|
||||
<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,38 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:be.infobox state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::WARNING')}" disableIcon="true">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-cache-custom"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-cache-custom" class="form-check-label">
|
||||
<strong>Custom configuration</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<p>Custom cache settings:</p>
|
||||
<f:for each="{preset.configurationDescriptors}" as="configuration" key="configurationKey">
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-6 col-form-label" for="{feature.name}{preset.name}{configurationKey}">{configurationKey}</label>
|
||||
<div class="col-sm-6">
|
||||
<f:render partial="Settings/ReadonlyInfo" arguments="{configuration: configuration}" />
|
||||
<input
|
||||
id="{feature.name}{preset.name}{configurationKey}"
|
||||
type="text"
|
||||
name="install[values][{feature.name}][{preset.name}][{configurationKey}]"
|
||||
value="{configuration.value}"
|
||||
class="form-control t3js-custom-preset"
|
||||
data-radio="t3-install-tool-configuration-cache-custom"
|
||||
{f:if(condition: '!{isWritable} || {configuration.readonly}', then: 'disabled')}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
</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">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-cache-database"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: '{preset.isAvailable} && {isWritable}', then:'', else:'disabled="disabled"')}
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-cache-database" class="form-check-label">
|
||||
<strong>Prefer database storage for caching</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
</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">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-cache-file"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: '{preset.isAvailable} && {isWritable}', then:'', else:'disabled="disabled"')}
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-cache-file" class="form-check-label">
|
||||
<strong>Prefer File storage for caching</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
</f:be.infobox>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,46 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<div class="panel panel-default">
|
||||
<h2 class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
class="panel-button collapsed"
|
||||
type="button"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-parent="#accordion"
|
||||
data-bs-target="#collapseTwo"
|
||||
aria-controls="collapseTwo"
|
||||
aria-expanded="false"
|
||||
id="headingTwo"
|
||||
>
|
||||
<div class="panel-title">
|
||||
<strong>Debug settings</strong>
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
<div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
Choose a configuration preset optimized for development or production environments.
|
||||
</p>
|
||||
<p>
|
||||
The <strong>Live</strong> preset prioritizes performance and hides debug and error
|
||||
messages from website visitors.
|
||||
</p>
|
||||
<p>
|
||||
The <strong>Debug</strong> preset enables detailed debug and error messages to support
|
||||
development and troubleshooting.
|
||||
</p>
|
||||
<p>
|
||||
Select <strong>Custom configuration</strong> to adjust each setting individually.
|
||||
</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,39 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:be.infobox state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::WARNING')}" disableIcon="true">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-context-custom"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-context-custom" class="form-check-label">
|
||||
<strong>Custom configuration</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<p>Custom configuration mixture if no other preset fits.</p>
|
||||
|
||||
<f:for each="{preset.configurationDescriptors}" as="configuration" key="configurationKey">
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-4 col-form-label" for="{feature.name}{preset.name}{configurationKey}">{configurationKey}</label>
|
||||
<div class="col-sm-8">
|
||||
<f:render partial="Settings/ReadonlyInfo" arguments="{configuration: configuration}" />
|
||||
<input
|
||||
id="{feature.name}{preset.name}{configurationKey}"
|
||||
type="text"
|
||||
name="install[values][{feature.name}][{preset.name}][{configurationKey}]"
|
||||
value="{configuration.value}"
|
||||
class="form-control t3js-custom-preset"
|
||||
data-radio="t3-install-tool-configuration-context-custom"
|
||||
{f:if(condition: '!{isWritable} || {configuration.readonly}', then: 'disabled')}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
</f:be.infobox>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,21 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:be.infobox state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::OK')}" disableIcon="true">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-context-debug"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-context-debug" class="form-check-label">
|
||||
<strong>Debug</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<p>Enable debug output and set logging to info level.</p>
|
||||
</f:be.infobox>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,21 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:be.infobox state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::OK')}" disableIcon="true">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-context-live"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-context-live" class="form-check-label">
|
||||
<strong>Live</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<p>Turn off debug output and set logging to warnings and errors only.</p>
|
||||
</f:be.infobox>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,68 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<div class="panel panel-default">
|
||||
<h2 class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
class="panel-button collapsed"
|
||||
type="button"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-parent="#accordion"
|
||||
data-bs-target="#collapseFour"
|
||||
aria-controls="collapseFour"
|
||||
aria-expanded="false"
|
||||
id="headingFour"
|
||||
>
|
||||
<div class="panel-title">
|
||||
<strong>Image handling settings</strong>
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
<div id="collapseFour" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingFour">
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
Configure the image processing tool used by TYPO3.
|
||||
</p>
|
||||
<p>
|
||||
TYPO3 uses <strong>GraphicsMagick</strong> or <strong>ImageMagick</strong> for advanced
|
||||
image processing. The correct configuration depends on the version available on your system.
|
||||
Available image processing tools are detected automatically and appropriate settings are
|
||||
recommended.<br>
|
||||
When configured correctly, image processing tests in the
|
||||
<strong>Install Tool → Test Setup</strong> section should pass.
|
||||
</p>
|
||||
<p>
|
||||
If the <strong>ImageMagick</strong> or <strong>GraphicsMagick</strong> executables
|
||||
are installed in a non-standard location, specify the absolute path to the directory here.
|
||||
</p>
|
||||
<div class="row mb-3">
|
||||
<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"
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
<button
|
||||
class="btn btn-default t3js-presets-image-executable-trigger"
|
||||
type="button"
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
>
|
||||
Find executables in this directory
|
||||
</button>
|
||||
</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,40 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:be.infobox state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::WARNING')}" disableIcon="true">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-image-custom"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-image-custom" class="form-check-label">
|
||||
<strong>Custom configuration</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<p>Custom configuration mixture if no other preset fits.</p>
|
||||
|
||||
<f:for each="{preset.configurationDescriptors}" as="configuration" key="configurationKey">
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-4 col-form-label" for="{feature.name}{preset.name}{configurationKey}">{configurationKey}</label>
|
||||
<div class="col-sm-8">
|
||||
<f:render partial="Settings/ReadonlyInfo" arguments="{configuration: configuration}" />
|
||||
<input
|
||||
id="{feature.name}{preset.name}{configurationKey}"
|
||||
type="text"
|
||||
name="install[values][{feature.name}][{preset.name}][{configurationKey}]"
|
||||
value="{configuration.value}"
|
||||
class="form-control t3js-custom-preset"
|
||||
data-radio="t3-install-tool-configuration-image-custom"
|
||||
{f:if(condition: '!{isWritable} || {configuration.readonly}', then: 'disabled')}
|
||||
/>
|
||||
</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">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-image-graphicsmagick"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: '{preset.isAvailable} && {isWritable}', then:'', else:'disabled="disabled"')}
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-image-graphicsmagick" class="form-check-label">
|
||||
<strong>Graphics Magick</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<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,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">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-image-imagemagick6"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: '{preset.isAvailable} && {isWritable}', then:'', else:'disabled="disabled"')}
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-image-imagemagick6" class="form-check-label">
|
||||
<strong>Image Magick version 6 or higher</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<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,44 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<div class="panel panel-default">
|
||||
<h2 class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
class="panel-button collapsed"
|
||||
type="button"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-parent="#accordion"
|
||||
data-bs-target="#collapseFive"
|
||||
aria-controls="collapseFive"
|
||||
aria-expanded="false"
|
||||
id="headingFive"
|
||||
>
|
||||
<div class="panel-title">
|
||||
<strong>Mail handling settings</strong>
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
<div id="collapseFive" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingFive">
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
Configure how TYPO3 sends email messages.
|
||||
</p>
|
||||
<p>
|
||||
TYPO3 can use the <strong>sendmail</strong> command line tool when the mail
|
||||
transport is set to <code>sendmail</code>.
|
||||
The correct executable path depends on the binary available on your system
|
||||
</p>
|
||||
<p>
|
||||
The current sendmail path is detected from the PHP configuration and can be applied
|
||||
to the 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,40 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:be.infobox state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::WARNING')}" disableIcon="true">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-mail-custom"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
{f:if(condition: '!{isWritable}', then: 'disabled')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-mail-custom" class="form-check-label">
|
||||
<strong>Custom configuration</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<p>Custom mail settings:</p>
|
||||
|
||||
<f:for each="{preset.configurationDescriptors}" as="configuration" key="configurationKey">
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-6 col-form-label" for="{feature.name}{preset.name}{configurationKey}">{configurationKey}</label>
|
||||
<div class="col-sm-6">
|
||||
<f:render partial="Settings/ReadonlyInfo" arguments="{configuration: configuration}" />
|
||||
<input
|
||||
id="{feature.name}{preset.name}{configurationKey}"
|
||||
type="{f:if(condition: '{configurationKey} == "MAIL/transport_smtp_password"', then: 'password', else: 'text')}"
|
||||
autocomplete="{f:if(condition: '{configurationKey} == "MAIL/transport_smtp_password"', then: 'new-password', else: 'off')}"
|
||||
name="install[values][{feature.name}][{preset.name}][{configurationKey}]"
|
||||
value="{configuration.value}"
|
||||
class="form-control t3js-custom-preset"
|
||||
data-radio="t3-install-tool-configuration-mail-custom"
|
||||
{f:if(condition: '!{isWritable} || {configuration.readonly}', then: 'disabled')}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
</f:be.infobox>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,29 @@
|
||||
<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">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-mail-sendmail"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: '{preset.isAvailable} && {isWritable}', then:'', else:'disabled="disabled"')}
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-mail-sendmail" class="form-check-label">
|
||||
<strong>Import sendmail command from PHP settings</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<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,22 @@
|
||||
<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">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-mail-smtp"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: '{preset.isAvailable} && {isWritable}', then:'', else:'disabled="disabled"')}
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-mail-smtp" class="form-check-label">
|
||||
<strong>SMTP Settings</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<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,46 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<div class="panel panel-default">
|
||||
<h2 class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
class="panel-button collapsed"
|
||||
type="button"
|
||||
data-bs-toggle="collapse"
|
||||
data-bs-parent="#accordion"
|
||||
data-bs-target="#collapseSix"
|
||||
aria-controls="collapseSix"
|
||||
aria-expanded="false"
|
||||
id="headingSix"
|
||||
>
|
||||
<div class="panel-title">
|
||||
<strong>Password hashing settings</strong>
|
||||
</div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
</div>
|
||||
</h2>
|
||||
<div id="collapseSix" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingSix">
|
||||
<div class="panel-body">
|
||||
<p>
|
||||
Configure the password hashing algorithm used for frontend and backend users.
|
||||
</p>
|
||||
<p>
|
||||
TYPO3 never stores passwords in plain text. Instead, passwords are stored using
|
||||
a salted one-way hash.
|
||||
Available hashing algorithms are detected automatically.
|
||||
</p>
|
||||
<p>
|
||||
<strong>If unsure, select the first available option, which represents the most secure algorithm
|
||||
supported by the system.</strong><br>
|
||||
The selected algorithm is used for new backend and frontend users. Existing users
|
||||
are automatically upgraded to the new algorithm after their next 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,35 @@
|
||||
<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">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-passwordHashing-argon2i"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: '{preset.isAvailable} && {isWritable}', then:'', else:'disabled="disabled"')}
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-passwordHashing-argon2i" class="form-check-label">
|
||||
<strong>Argon2i</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<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,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">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-passwordHashing-argon2id"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: '{preset.isAvailable} && {isWritable}', then:'', else:'disabled="disabled"')}
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-passwordHashing-argon2id" class="form-check-label">
|
||||
<strong>Argon2id</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<p>
|
||||
<f:if condition="{preset.isAvailable}">
|
||||
<f:then>
|
||||
<strong>Use Argon2id if you are using PHP >= 7.3 on all instances (local, test, production, ...)!</strong><br />
|
||||
Argon2id is a modern key derivation function. It provides better resistance
|
||||
to some forms of attack compared to Argon2i.
|
||||
</f:then>
|
||||
<f:else>
|
||||
Argon2id is not available on this system. If you want to use Argon2id make sure you are using PHP >= 7.3
|
||||
with Argon support.
|
||||
</f:else>
|
||||
</f:if>
|
||||
</p>
|
||||
</f:be.infobox>
|
||||
|
||||
</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="{f:if(condition:'{preset.isAvailable}', then:'0', else:'2')}" disableIcon="true">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-passwordHashing-bcrypt"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: '{preset.isAvailable} && {isWritable}', then:'', else:'disabled="disabled"')}
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-passwordHashing-bcrypt" class="form-check-label">
|
||||
<strong>bcrypt</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<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 Argon2id or 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 available to use this algorithm. One of these or both are missing.
|
||||
bcrypt is also used as a fallback if Argon2id or Argon2i are not available.
|
||||
Reach out to your hoster to fix these issues and prefer installation of Argon2id or Argon2i.
|
||||
</f:else>
|
||||
</f:if>
|
||||
</p>
|
||||
</f:be.infobox>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,40 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:be="http://typo3.org/ns/TYPO3/CMS/Backend/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
|
||||
<f:be.infobox state="{f:constant(name: 'TYPO3\CMS\Core\Type\ContextualFeedbackSeverity::WARNING')}" disableIcon="true">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
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="form-check-label">
|
||||
<strong>Custom configuration</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<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 <be:link.documentation identifier="t3coreapi:password-hashing" class="text-decoration-underline">documentation</be:link.documentation> for details.</p>
|
||||
<f:for each="{preset.configurationDescriptors}" as="configuration" key="configurationKey">
|
||||
<div class="row mb-3">
|
||||
<label class="col-sm-6 col-form-label" for="{feature.name}{preset.name}{configurationKey}">{configurationKey}</label>
|
||||
<div class="col-sm-6">
|
||||
<f:render partial="Settings/ReadonlyInfo" arguments="{configuration: configuration}" />
|
||||
<input
|
||||
id="{feature.name}{preset.name}{configurationKey}"
|
||||
type="text"
|
||||
name="install[values][{feature.name}][{preset.name}][{configurationKey}]"
|
||||
value="{configuration.value}"
|
||||
class="form-control t3js-custom-preset"
|
||||
data-radio="t3-install-tool-configuration-passwordHashing-custom"
|
||||
{f:if(condition: '!{isWritable} || {configuration.readonly}', then: 'disabled')}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</f:for>
|
||||
</f:be.infobox>
|
||||
|
||||
</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="{f:if(condition:'{preset.isAvailable}', then:'0', else:'2')}" disableIcon="true">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-passwordHashing-pbkdf2"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: '{preset.isAvailable} && {isWritable}', then:'', else:'disabled="disabled"')}
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-passwordHashing-pbkdf2" class="form-check-label">
|
||||
<strong>PBKDF2</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<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 Argon2id or 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 Argon2id or Argon2i if available as hash algorithm is ideal.
|
||||
</f:then>
|
||||
<f:else>
|
||||
PBKDF2 is not available on this system. This is very uncommon. If Argon2id, Argon2i and bcrypt are also not available,
|
||||
you should reach out to your hoster to fix this as soon as possible.
|
||||
</f:else>
|
||||
</f:if>
|
||||
</p>
|
||||
</f:be.infobox>
|
||||
|
||||
</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="{f:if(condition:'{preset.isAvailable}', then:'0', else:'2')}" disableIcon="true">
|
||||
<div class="form-check">
|
||||
<input
|
||||
type="radio"
|
||||
class="form-check-input"
|
||||
id="t3-install-tool-configuration-passwordHashing-phpass"
|
||||
name="install[values][{feature.name}][enable]"
|
||||
value="{preset.name}"
|
||||
{f:if(condition: '{preset.isAvailable} && {isWritable}', then:'', else:'disabled="disabled"')}
|
||||
{f:if(condition: preset.isActive, then:'checked="checked"')}
|
||||
/>
|
||||
<label for="t3-install-tool-configuration-passwordHashing-phpass" class="form-check-label">
|
||||
<strong>phpass</strong> {f:if(condition: preset.isActive, then:' [Active]')}
|
||||
</label>
|
||||
</div>
|
||||
<p>
|
||||
<f:if condition="{preset.isAvailable}">
|
||||
<f:then>
|
||||
In almost all cases, a modern hash algorithm like Argon2id or Argon2i should be preferred.
|
||||
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,12 @@
|
||||
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
|
||||
<f:if condition="{configuration.readonly}">
|
||||
<div class="t3js-infobox callout callout-info">
|
||||
<div class="callout-content">
|
||||
<div class="callout-body">
|
||||
For security reasons, this option cannot be changed here.<br>
|
||||
Please configure via <code>system/settings.php</code> or <code>system/additional.php</code>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</f:if>
|
||||
</html>
|
||||
@@ -0,0 +1,54 @@
|
||||
<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" data-item-tags="{fileArray.tagList}" data-item-version="{fileArray.version}" data-item-state="{state}" id="heading{id}">
|
||||
<h2 class="panel-heading" role="tab">
|
||||
<div class="panel-heading-row">
|
||||
<button
|
||||
class="panel-button order-2 collapsed"
|
||||
type="button"
|
||||
data-bs-target="#collapse{id}"
|
||||
data-bs-toggle="collapse"
|
||||
aria-expanded="false"
|
||||
aria-controls="collapse{id}"
|
||||
>
|
||||
<div class="panel-title"><strong>{fileArray.headline}</strong></div>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<f:if condition="{read}">
|
||||
<f:then>
|
||||
<button type="button" class="btn btn-link t3js-upgradeDocs-unmarkRead" data-filepath="{fileArray.filepath}" title="Mark as not read">
|
||||
<core:icon identifier="actions-ban" size="small" />
|
||||
<span class="visually-hidden">restore this document</span>
|
||||
</button>
|
||||
</f:then>
|
||||
<f:else>
|
||||
<button type="button" class="btn btn-link t3js-upgradeDocs-markRead" data-filepath="{fileArray.filepath}" title="Mark as read">
|
||||
<core:icon identifier="actions-check" size="small" />
|
||||
<span class="visually-hidden">ignore this document</span>
|
||||
</button>
|
||||
</f:else>
|
||||
</f:if>
|
||||
</div>
|
||||
</h2>
|
||||
<div id="collapse{id}" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading{id}">
|
||||
<div class="rst-tags">
|
||||
<f:for each="{fileArray.tags}" as="tag">
|
||||
<span class="badge">{tag}</span>
|
||||
</f:for>
|
||||
</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 class="panel-body"><f:format.raw>{fileArray.parsedContent}</f:format.raw></pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user