TYPO3 v15 dev-main snapshot ()
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
# This file restricts access to the fileadmin/_temp_ directory. It is
|
||||
# meant to protect temporary files which could contain sensible
|
||||
# information. Please do not touch.
|
||||
|
||||
# Apache < 2.3
|
||||
<IfModule !mod_authz_core.c>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
Satisfy All
|
||||
</IfModule>
|
||||
|
||||
# Apache ≥ 2.3
|
||||
<IfModule mod_authz_core.c>
|
||||
Require all denied
|
||||
</IfModule>
|
||||
@@ -0,0 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
<meta http-equiv=Refresh Content="0; Url=/"/>
|
||||
</head>
|
||||
</html>
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
# This file restricts access to the fileadmin/user_upload/_import_export_ directory. It is
|
||||
# meant to protect temporary files which could contain sensible
|
||||
# information. Please do not touch.
|
||||
|
||||
# Apache < 2.3
|
||||
<IfModule !mod_authz_core.c>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
Satisfy All
|
||||
</IfModule>
|
||||
|
||||
# Apache ≥ 2.3
|
||||
<IfModule mod_authz_core.c>
|
||||
Require all denied
|
||||
</IfModule>
|
||||
@@ -0,0 +1,37 @@
|
||||
# This file applies Content-Security-Policy (CSP) HTTP headers
|
||||
# to directories containing (user uploaded) resources like
|
||||
# /fileadmin/ or /uploads/
|
||||
|
||||
<IfModule mod_headers.c>
|
||||
# matching requested *.pdf files only (strict rules block Safari showing PDF documents)
|
||||
<FilesMatch "\.pdf$">
|
||||
Header set Content-Security-Policy "default-src 'self' 'unsafe-inline'; script-src 'none'; object-src 'self'; plugin-types application/pdf;"
|
||||
</FilesMatch>
|
||||
# matching requested *.svg files only (allows using inline styles when serving SVG files)
|
||||
<FilesMatch "\.svg">
|
||||
Header set Content-Security-Policy "default-src 'self'; script-src 'none'; style-src 'unsafe-inline'; object-src 'none'; sandbox;"
|
||||
</FilesMatch>
|
||||
# matching anything else, using negative lookbehind pattern
|
||||
<FilesMatch "(?<!\.(?:pdf|svg))$">
|
||||
Header set Content-Security-Policy "default-src 'self'; script-src 'none'; style-src 'none'; object-src 'none'; sandbox;"
|
||||
</FilesMatch>
|
||||
|
||||
# =================================================================
|
||||
# Variations to send CSP header only when it has not be set before.
|
||||
# Adjust all `Header set` instructions above
|
||||
# Header set Content-Security-Policy "<directives>"
|
||||
# with substitutes shown below
|
||||
#
|
||||
# -----------------------------------------------------------------
|
||||
# a) for Apache 2.4 (having `setifempty`)
|
||||
# -----------------------------------------------------------------
|
||||
# Header setifempty Content-Security-Policy "<directives>"
|
||||
#
|
||||
# -----------------------------------------------------------------
|
||||
# b) for Apache 2.2 (using fallbacks)
|
||||
# -----------------------------------------------------------------
|
||||
# Header append Content-Security-Policy ""
|
||||
# Header edit Content-Security-Policy "^$" "<directives>"
|
||||
#
|
||||
# =================================================================
|
||||
</IfModule>
|
||||
@@ -0,0 +1,394 @@
|
||||
#####
|
||||
#
|
||||
# Example .htaccess file for TYPO3 CMS - for use with Apache Webserver
|
||||
#
|
||||
# This file includes settings for the following configuration options:
|
||||
#
|
||||
# - Compression
|
||||
# - Caching
|
||||
# - MIME types
|
||||
# - Cross Origin requests
|
||||
# - Rewriting and Access
|
||||
# - Miscellaneous
|
||||
# - PHP optimisation
|
||||
#
|
||||
# If you want to use it, you have to copy it to the root folder of your TYPO3 installation (if its
|
||||
# not there already) and rename it to '.htaccess'. To make .htaccess files work, you might need to
|
||||
# adjust the 'AllowOverride' directive in your Apache configuration file.
|
||||
#
|
||||
# IMPORTANT: You may need to change this file depending on your TYPO3 installation!
|
||||
# Consider adding this file's content to your webserver's configuration directly for speed improvement
|
||||
#
|
||||
# Lots of the options are taken from https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess
|
||||
#
|
||||
####
|
||||
|
||||
|
||||
### Begin: Compression ###
|
||||
|
||||
<IfModule mod_deflate.c>
|
||||
# Force compression for mangled `Accept-Encoding` request headers
|
||||
<IfModule mod_setenvif.c>
|
||||
<IfModule mod_headers.c>
|
||||
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
|
||||
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
|
||||
# Compress all output labeled with one of the following media types.
|
||||
#
|
||||
# (!) For Apache versions below version 2.3.7 you don't need to
|
||||
# enable `mod_filter` and can remove the `<IfModule mod_filter.c>`
|
||||
# and `</IfModule>` lines as `AddOutputFilterByType` is still in
|
||||
# the core directives.
|
||||
#
|
||||
# https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype
|
||||
|
||||
<IfModule mod_filter.c>
|
||||
AddOutputFilterByType DEFLATE application/atom+xml \
|
||||
application/javascript \
|
||||
application/json \
|
||||
application/ld+json \
|
||||
application/manifest+json \
|
||||
application/rdf+xml \
|
||||
application/rss+xml \
|
||||
application/schema+json \
|
||||
application/vnd.geo+json \
|
||||
application/geo+json \
|
||||
application/vnd.ms-fontobject \
|
||||
application/x-font-ttf \
|
||||
application/x-javascript \
|
||||
application/x-web-app-manifest+json \
|
||||
application/xhtml+xml \
|
||||
application/xml \
|
||||
font/eot \
|
||||
font/opentype \
|
||||
font/otf \
|
||||
font/ttf \
|
||||
image/bmp \
|
||||
image/svg+xml \
|
||||
image/vnd.microsoft.icon \
|
||||
image/x-icon \
|
||||
text/cache-manifest \
|
||||
text/css \
|
||||
text/html \
|
||||
text/javascript \
|
||||
text/plain \
|
||||
text/vcard \
|
||||
text/vnd.rim.location.xloc \
|
||||
text/vtt \
|
||||
text/x-component \
|
||||
text/x-cross-domain-policy \
|
||||
text/xml
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_mime.c>
|
||||
AddEncoding gzip svgz
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
|
||||
### End: Compression ###
|
||||
|
||||
|
||||
|
||||
### Begin: Browser caching of resource files ###
|
||||
|
||||
# This affects Frontend and Backend and increases performance.
|
||||
<IfModule mod_expires.c>
|
||||
|
||||
ExpiresActive On
|
||||
ExpiresDefault "access plus 1 month"
|
||||
|
||||
ExpiresByType text/css "access plus 1 year"
|
||||
|
||||
ExpiresByType application/json "access plus 0 seconds"
|
||||
ExpiresByType application/ld+json "access plus 0 seconds"
|
||||
ExpiresByType application/schema+json "access plus 0 seconds"
|
||||
ExpiresByType application/vnd.geo+json "access plus 0 seconds"
|
||||
ExpiresByType application/geo+json "access plus 0 seconds"
|
||||
ExpiresByType application/xml "access plus 0 seconds"
|
||||
ExpiresByType text/xml "access plus 0 seconds"
|
||||
|
||||
ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
|
||||
ExpiresByType image/x-icon "access plus 1 week"
|
||||
|
||||
ExpiresByType text/x-component "access plus 1 month"
|
||||
|
||||
ExpiresByType text/html "access plus 0 seconds"
|
||||
|
||||
ExpiresByType application/javascript "access plus 1 year"
|
||||
ExpiresByType application/x-javascript "access plus 1 year"
|
||||
ExpiresByType text/javascript "access plus 1 year"
|
||||
|
||||
ExpiresByType application/manifest+json "access plus 1 week"
|
||||
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
|
||||
ExpiresByType text/cache-manifest "access plus 0 seconds"
|
||||
|
||||
ExpiresByType audio/ogg "access plus 1 month"
|
||||
ExpiresByType image/apng "access plus 1 month"
|
||||
ExpiresByType image/avif "access plus 1 month"
|
||||
ExpiresByType image/avif-sequence "access plus 1 month"
|
||||
ExpiresByType image/bmp "access plus 1 month"
|
||||
ExpiresByType image/gif "access plus 1 month"
|
||||
ExpiresByType image/jpeg "access plus 1 month"
|
||||
ExpiresByType image/jxl "access plus 1 month"
|
||||
ExpiresByType image/png "access plus 1 month"
|
||||
ExpiresByType image/svg+xml "access plus 1 month"
|
||||
ExpiresByType image/webp "access plus 1 month"
|
||||
ExpiresByType video/mp4 "access plus 1 month"
|
||||
ExpiresByType video/ogg "access plus 1 month"
|
||||
ExpiresByType video/webm "access plus 1 month"
|
||||
|
||||
ExpiresByType application/atom+xml "access plus 1 hour"
|
||||
ExpiresByType application/rdf+xml "access plus 1 hour"
|
||||
ExpiresByType application/rss+xml "access plus 1 hour"
|
||||
|
||||
ExpiresByType font/collection "access plus 1 month"
|
||||
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
|
||||
ExpiresByType font/eot "access plus 1 month"
|
||||
ExpiresByType font/opentype "access plus 1 month"
|
||||
ExpiresByType font/otf "access plus 1 month"
|
||||
ExpiresByType application/x-font-ttf "access plus 1 month"
|
||||
ExpiresByType font/ttf "access plus 1 month"
|
||||
ExpiresByType application/font-woff "access plus 1 month"
|
||||
ExpiresByType application/x-font-woff "access plus 1 month"
|
||||
ExpiresByType font/woff "access plus 1 month"
|
||||
ExpiresByType application/font-woff2 "access plus 1 month"
|
||||
ExpiresByType font/woff2 "access plus 1 month"
|
||||
|
||||
ExpiresByType text/x-cross-domain-policy "access plus 1 week"
|
||||
|
||||
<FilesMatch "^index\.php$">
|
||||
ExpiresActive Off
|
||||
</FilesMatch>
|
||||
|
||||
</IfModule>
|
||||
|
||||
### End: Browser caching of resource files ###
|
||||
|
||||
|
||||
### Begin: Caching of robots.txt ###
|
||||
|
||||
<IfModule mod_headers.c>
|
||||
<Files "robots.txt">
|
||||
Header unset Expires
|
||||
Header set Cache-Control "public, max-age=3600, must-revalidate"
|
||||
</Files>
|
||||
</IfModule>
|
||||
|
||||
### End: Caching of robots.txt ###
|
||||
|
||||
|
||||
### Begin: MIME types ###
|
||||
|
||||
# Proper MIME types for all files
|
||||
<IfModule mod_mime.c>
|
||||
# Security configuration
|
||||
RemoveType .html .htm
|
||||
<FilesMatch ".+\.html?$">
|
||||
AddType text/html .html .htm
|
||||
</FilesMatch>
|
||||
|
||||
RemoveType .svg .svgz
|
||||
<FilesMatch ".+\.svgz?$">
|
||||
AddType image/svg+xml .svg .svgz
|
||||
</FilesMatch>
|
||||
|
||||
# Data interchange
|
||||
AddType application/atom+xml atom
|
||||
AddType application/json json map topojson
|
||||
AddType application/ld+json jsonld
|
||||
AddType application/rss+xml rss
|
||||
AddType application/vnd.geo+json geojson
|
||||
AddType application/xml rdf xml
|
||||
|
||||
# JavaScript
|
||||
AddType application/javascript js mjs
|
||||
|
||||
# Manifest files
|
||||
AddType application/manifest+json webmanifest
|
||||
AddType application/x-web-app-manifest+json webapp
|
||||
AddType text/cache-manifest appcache
|
||||
|
||||
# Media files
|
||||
|
||||
AddType audio/mp4 f4a f4b m4a
|
||||
AddType audio/ogg oga ogg opus
|
||||
AddType image/avif avif
|
||||
AddType image/avif-sequence avifs
|
||||
AddType image/bmp bmp
|
||||
AddType image/jxl jxl
|
||||
AddType image/webp webp
|
||||
AddType video/mp4 f4v f4p m4v mp4
|
||||
AddType video/ogg ogv
|
||||
AddType video/webm webm
|
||||
AddType video/x-flv flv
|
||||
AddType image/x-icon cur ico
|
||||
|
||||
# Web fonts
|
||||
AddType font/woff woff
|
||||
AddType font/woff2 woff2
|
||||
AddType application/vnd.ms-fontobject eot
|
||||
AddType font/ttf ttc ttf
|
||||
AddType font/otf otf
|
||||
|
||||
# Other
|
||||
AddType application/octet-stream safariextz
|
||||
AddType application/x-bb-appworld bbaw
|
||||
AddType application/x-chrome-extension crx
|
||||
AddType application/x-opera-extension oex
|
||||
AddType application/x-xpinstall xpi
|
||||
AddType text/vcard vcard vcf
|
||||
AddType text/vnd.rim.location.xloc xloc
|
||||
AddType text/vtt vtt
|
||||
AddType text/x-component htc
|
||||
|
||||
</IfModule>
|
||||
|
||||
# UTF-8 encoding
|
||||
AddDefaultCharset utf-8
|
||||
<IfModule mod_mime.c>
|
||||
AddCharset utf-8 .atom .css .js .json .manifest .rdf .rss .vtt .webapp .webmanifest .xml
|
||||
</IfModule>
|
||||
|
||||
### End: MIME types ###
|
||||
|
||||
|
||||
|
||||
### Begin: Cross Origin ###
|
||||
|
||||
# Send the CORS header for images when browsers request it.
|
||||
<IfModule mod_setenvif.c>
|
||||
<IfModule mod_headers.c>
|
||||
<FilesMatch "\.(avifs?|bmp|cur|gif|ico|jpe?g|png|svgz?|webp)$">
|
||||
SetEnvIf Origin ":" IS_CORS
|
||||
Header set Access-Control-Allow-Origin "*" env=IS_CORS
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
|
||||
# Allow cross-origin access to web fonts.
|
||||
<IfModule mod_headers.c>
|
||||
<FilesMatch "\.(eot|otf|tt[cf]|woff2?)$">
|
||||
Header set Access-Control-Allow-Origin "*"
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
|
||||
### End: Cross Origin ###
|
||||
|
||||
|
||||
|
||||
### Begin: Rewriting and Access ###
|
||||
|
||||
<IfModule mod_rewrite.c>
|
||||
|
||||
# Enable URL rewriting
|
||||
RewriteEngine On
|
||||
|
||||
# Store the current location in an environment variable CWD to use
|
||||
# mod_rewrite in .htaccess files without knowing the RewriteBase
|
||||
RewriteCond $0#%{REQUEST_URI} ([^#]*)#(.*)\1$
|
||||
RewriteRule ^.*$ - [E=CWD:%2]
|
||||
|
||||
# Rules to set ApplicationContext based on hostname
|
||||
#RewriteCond %{HTTP_HOST} ^dev\.example\.com$
|
||||
#RewriteRule .? - [E=TYPO3_CONTEXT:Development]
|
||||
#RewriteCond %{HTTP_HOST} ^staging\.example\.com$
|
||||
#RewriteRule .? - [E=TYPO3_CONTEXT:Production/Staging]
|
||||
#RewriteCond %{HTTP_HOST} ^www\.example\.com$
|
||||
#RewriteRule .? - [E=TYPO3_CONTEXT:Production]
|
||||
|
||||
# Rule for versioned static files, configured through:
|
||||
# - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename']
|
||||
# - $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename']
|
||||
# IMPORTANT: This rule has to be the very first RewriteCond in order to work!
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^(.+)\.(\d+)\.(php|js|mjs|css|png|jpg|gif|svg|avif|webp|gz|xsl)$ %{ENV:CWD}$1.$3 [L]
|
||||
|
||||
# Access block for folders
|
||||
RewriteRule _(?:recycler|temp)_/ - [F]
|
||||
RewriteRule fileadmin/templates/.*\.(?:txt|ts)$ - [F]
|
||||
RewriteRule ^(?:vendor|typo3_src|typo3temp/var) - [F]
|
||||
RewriteRule (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/ - [F]
|
||||
|
||||
# Block access to all hidden files and directories with the exception of
|
||||
# the visible content from within the `/.well-known/` hidden directory (RFC 5785).
|
||||
RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/([^./]+./?)+$" [NC]
|
||||
RewriteCond %{SCRIPT_FILENAME} -d [OR]
|
||||
RewriteCond %{SCRIPT_FILENAME} -f
|
||||
RewriteRule (?:^|/)\. - [F]
|
||||
|
||||
# Stop rewrite processing, if we are in any known directory
|
||||
# NOTE: Add your additional local storages here
|
||||
RewriteRule ^(?:fileadmin/|typo3conf/|typo3temp/|_assets/) - [L]
|
||||
|
||||
# If the file/symlink/directory does not exist but is below /typo3/, redirect to the main TYPO3 entry point.
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteRule ^typo3/(.*)$ %{ENV:CWD}index.php [QSA,L]
|
||||
|
||||
# If the file/symlink/directory does not exist => Redirect to index.php.
|
||||
# For httpd.conf, you need to prefix each '%{REQUEST_FILENAME}' with '%{DOCUMENT_ROOT}'.
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_FILENAME} !-l
|
||||
RewriteRule ^.*$ %{ENV:CWD}index.php [QSA,L]
|
||||
|
||||
</IfModule>
|
||||
|
||||
# Access block for files
|
||||
# Apache < 2.3
|
||||
<IfModule !mod_authz_core.c>
|
||||
<FilesMatch "(?i:^\.|^#.*#|^(?:ChangeLog|ToDo|Readme|License)(?:\.md|\.txt)?|^composer\.(?:json|lock)|^ext_conf_template\.txt|^ext_typoscript_constants\.txt|^ext_typoscript_setup\.txt|flexform[^.]*\.xml|locallang[^.]*\.(?:xml|xlf)|\.(?:bak|co?nf|cfg|neon|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql(?:\..*)?|sqlite(?:\..*)?|sw[op]|git.*|rc)|.*~)$">
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
Satisfy All
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
# Apache ≥ 2.3
|
||||
<IfModule mod_authz_core.c>
|
||||
<If "%{REQUEST_URI} =~ m#(?i:/\.|/\x23.*\x23|/(?:ChangeLog|ToDo|Readme|License)(?:\.md|\.txt)?|/composer\.(?:json|lock)|/ext_conf_template\.txt|/ext_typoscript_constants\.txt|/ext_typoscript_setup\.txt|flexform[^.]*\.xml|locallang[^.]*\.(?:xml|xlf)|\.(?:bak|co?nf|cfg|neon|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql(?:\..*)?|sqlite(?:\..*)?|sw[op]|git.*|rc)|.*~)$#">
|
||||
Require all denied
|
||||
</If>
|
||||
</IfModule>
|
||||
|
||||
# Block access to vcs directories
|
||||
<IfModule mod_alias.c>
|
||||
RedirectMatch 404 /\.(?:git|svn|hg)/
|
||||
</IfModule>
|
||||
|
||||
### End: Rewriting and Access ###
|
||||
|
||||
|
||||
|
||||
### Begin: Miscellaneous ###
|
||||
|
||||
# 404 error prevention for non-existing redirected folders
|
||||
Options -MultiViews
|
||||
|
||||
# Make sure that directory listings are disabled.
|
||||
<IfModule mod_autoindex.c>
|
||||
Options -Indexes
|
||||
</IfModule>
|
||||
|
||||
<IfModule mod_headers.c>
|
||||
# Force IE to render pages in the highest available mode
|
||||
Header set X-UA-Compatible "IE=edge"
|
||||
<FilesMatch "\.(appcache|avifs?|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svgz?|ttf|vcf|webapp|webm|webp|woff2?|xml|xpi)$">
|
||||
Header unset X-UA-Compatible
|
||||
</FilesMatch>
|
||||
|
||||
# Reducing MIME type security risks
|
||||
Header set X-Content-Type-Options "nosniff"
|
||||
</IfModule>
|
||||
|
||||
# ETag removal
|
||||
<IfModule mod_headers.c>
|
||||
Header unset ETag
|
||||
</IfModule>
|
||||
FileETag None
|
||||
|
||||
### End: Miscellaneous ###
|
||||
|
||||
|
||||
# Add your own rules here.
|
||||
@@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<system.webServer>
|
||||
<httpProtocol>
|
||||
<customHeaders>
|
||||
<add name="X-UA-Compatible" value="IE=edge" />
|
||||
<add name="Cache-Control" value="Public" />
|
||||
</customHeaders>
|
||||
</httpProtocol>
|
||||
<rewrite>
|
||||
<rules>
|
||||
<clear />
|
||||
|
||||
<rule name="TYPO3 - Block access to composer files">
|
||||
<match url="composer\.(?:json|lock)" ignoreCase="true" />
|
||||
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
|
||||
</rule>
|
||||
<rule name="TYPO3 - Block access to flexform files">
|
||||
<match url="flexform[^.]*\.xml" ignoreCase="true" />
|
||||
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
|
||||
</rule>
|
||||
<rule name="TYPO3 - Block access to language files">
|
||||
<match url="locallang[^.]*\.(?:xml|xlf)$" ignoreCase="true" />
|
||||
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
|
||||
</rule>
|
||||
<rule name="TYPO3 - Block access to static typoscript files">
|
||||
<match url="ext_conf_template\.txt|ext_typoscript_constants\.txt|ext_typoscript_setup\.txt" ignoreCase="true" />
|
||||
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
|
||||
</rule>
|
||||
<rule name="TYPO3 - Block access to miscellaneous protected files">
|
||||
<match url="/.*\.(?:bak|co?nf|cfg|neon|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql|sqlite)$" ignoreCase="true" />
|
||||
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
|
||||
</rule>
|
||||
<rule name="TYPO3 - Block access to recycler and temporary directories">
|
||||
<match url="_(?:recycler|temp)_/" ignoreCase="false" />
|
||||
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
|
||||
</rule>
|
||||
<rule name="TYPO3 - Block access to configuration files stored in fileadmin">
|
||||
<match url="fileadmin/(?:templates)/.*\.(?:txt|ts)$" ignoreCase="false" />
|
||||
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
|
||||
</rule>
|
||||
<rule name="TYPO3 - Block access to libraries, source and temporary compiled data">
|
||||
<match url="^(?:vendor|typo3_src|typo3temp/var)" ignoreCase="false" />
|
||||
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
|
||||
</rule>
|
||||
<rule name="TYPO3 - Block access to protected extension directories">
|
||||
<match url="(?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|Resources/Private|Tests?|Documentation|docs?)/" ignoreCase="false" />
|
||||
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
|
||||
</rule>
|
||||
<rule name="TYPO3 - Static File Directories" stopProcessing="true">
|
||||
<match url="^/(typo3temp|typo3conf|t3lib|tslib|fileadmin|uploads|showpic\.php|favicon\.ico)$" />
|
||||
<action type="None" />
|
||||
</rule>
|
||||
<rule name="TYPO3 - If the file/directory does not exist but is below /typo3/, redirect to the main TYPO3 entry point." stopProcessing="true">
|
||||
<match url="^typo3/(.*)$" ignoreCase="false" />
|
||||
<conditions logicalGrouping="MatchAll">
|
||||
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
|
||||
<add input="{REQUEST_URI}" matchType="Pattern" pattern="^/typo3/.*$" />
|
||||
</conditions>
|
||||
<action type="Rewrite" url="index.php" appendQueryString="true" />
|
||||
</rule>
|
||||
<rule name="TYPO3 - Version Number in File Name (if set)" stopProcessing="true">
|
||||
<match url="^(.+)\.(\d+)\.(php|js|css|png|jpg|gif|svg|avif|webp|gz)$" ignoreCase="false" />
|
||||
<conditions logicalGrouping="MatchAll">
|
||||
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
|
||||
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
|
||||
</conditions>
|
||||
<action type="Rewrite" url="{R:1}.{R:3}" />
|
||||
</rule>
|
||||
<rule name="TYPO3 - If the file/directory does not exist => Redirect to index.php." stopProcessing="true">
|
||||
<match url="^.*$" ignoreCase="false" />
|
||||
<conditions logicalGrouping="MatchAll">
|
||||
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
|
||||
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
|
||||
</conditions>
|
||||
<action type="Rewrite" url="index.php" appendQueryString="true" />
|
||||
</rule>
|
||||
|
||||
</rules>
|
||||
</rewrite>
|
||||
<staticContent>
|
||||
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="8.00:00:00" />
|
||||
</staticContent>
|
||||
</system.webServer>
|
||||
</configuration>
|
||||
@@ -0,0 +1,15 @@
|
||||
# This file restricts access to the typo3temp/var/ directory. It is
|
||||
# meant to protect temporary files which could contain sensible
|
||||
# information. Please do not touch.
|
||||
|
||||
# Apache < 2.3
|
||||
<IfModule !mod_authz_core.c>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
Satisfy All
|
||||
</IfModule>
|
||||
|
||||
# Apache ≥ 2.3
|
||||
<IfModule mod_authz_core.c>
|
||||
Require all denied
|
||||
</IfModule>
|
||||
@@ -0,0 +1,137 @@
|
||||
*******************************************************************************
|
||||
Bitstream Vera Sans
|
||||
"vera.ttf" - A "verdana"-look-alike font. If you want to use the real Verdana
|
||||
font you should upload the verdana-normal ttf file from your Windows system
|
||||
(fonts/verdana.ttf).
|
||||
*******************************************************************************
|
||||
|
||||
This file was downloaded from <http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/>.
|
||||
|
||||
Copyright Holder: Bitstream, Inc.
|
||||
|
||||
License (vera.ttf):
|
||||
|
||||
Bitstream Vera Fonts Copyright
|
||||
|
||||
The fonts have a generous copyright, allowing derivative works (as
|
||||
long as "Bitstream" or "Vera" are not in the names), and full
|
||||
redistribution (so long as they are not *sold* by themselves). They
|
||||
can be be bundled, redistributed and sold with any software.
|
||||
|
||||
The fonts are distributed under the following copyright:
|
||||
|
||||
Copyright
|
||||
=========
|
||||
|
||||
Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream
|
||||
Vera is a trademark of Bitstream, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the fonts accompanying this license ("Fonts") and associated
|
||||
documentation files (the "Font Software"), to reproduce and distribute
|
||||
the Font Software, including without limitation the rights to use,
|
||||
copy, merge, publish, distribute, and/or sell copies of the Font
|
||||
Software, and to permit persons to whom the Font Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright and trademark notices and this permission notice
|
||||
shall be included in all copies of one or more of the Font Software
|
||||
typefaces.
|
||||
|
||||
The Font Software may be modified, altered, or added to, and in
|
||||
particular the designs of glyphs or characters in the Fonts may be
|
||||
modified and additional glyphs or characters may be added to the
|
||||
Fonts, only if the fonts are renamed to names not containing either
|
||||
the words "Bitstream" or the word "Vera".
|
||||
|
||||
This License becomes null and void to the extent applicable to Fonts
|
||||
or Font Software that has been modified and is distributed under the
|
||||
"Bitstream Vera" names.
|
||||
|
||||
The Font Software may be sold as part of a larger software package but
|
||||
no copy of one or more of the Font Software typefaces may be sold by
|
||||
itself.
|
||||
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
|
||||
BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL,
|
||||
OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT
|
||||
SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
Except as contained in this notice, the names of Gnome, the Gnome
|
||||
Foundation, and Bitstream Inc., shall not be used in advertising or
|
||||
otherwise to promote the sale, use or other dealings in this Font
|
||||
Software without prior written authorization from the Gnome Foundation
|
||||
or Bitstream Inc., respectively. For further information, contact:
|
||||
fonts at gnome dot org.
|
||||
|
||||
Copyright FAQ
|
||||
=============
|
||||
|
||||
1. I don't understand the resale restriction... What gives?
|
||||
|
||||
Bitstream is giving away these fonts, but wishes to ensure its
|
||||
competitors can't just drop the fonts as is into a font sale system
|
||||
and sell them as is. It seems fair that if Bitstream can't make money
|
||||
from the Bitstream Vera fonts, their competitors should not be able to
|
||||
do so either. You can sell the fonts as part of any software package,
|
||||
however.
|
||||
|
||||
2. I want to package these fonts separately for distribution and
|
||||
sale as part of a larger software package or system. Can I do so?
|
||||
|
||||
Yes. A RPM or Debian package is a "larger software package" to begin
|
||||
with, and you aren't selling them independently by themselves.
|
||||
See 1. above.
|
||||
|
||||
3. Are derivative works allowed?
|
||||
Yes!
|
||||
|
||||
4. Can I change or add to the font(s)?
|
||||
Yes, but you must change the name(s) of the font(s).
|
||||
|
||||
5. Under what terms are derivative works allowed?
|
||||
|
||||
You must change the name(s) of the fonts. This is to ensure the
|
||||
quality of the fonts, both to protect Bitstream and Gnome. We want to
|
||||
ensure that if an application has opened a font specifically of these
|
||||
names, it gets what it expects (though of course, using fontconfig,
|
||||
substitutions could still could have occurred during font
|
||||
opening). You must include the Bitstream copyright. Additional
|
||||
copyrights can be added, as per copyright law. Happy Font Hacking!
|
||||
|
||||
6. If I have improvements for Bitstream Vera, is it possible they might get
|
||||
adopted in future versions?
|
||||
|
||||
Yes. The contract between the Gnome Foundation and Bitstream has
|
||||
provisions for working with Bitstream to ensure quality additions to
|
||||
the Bitstream Vera font family. Please contact us if you have such
|
||||
additions. Note, that in general, we will want such additions for the
|
||||
entire family, not just a single font, and that you'll have to keep
|
||||
both Gnome and Jim Lyles, Vera's designer, happy! To make sense to add
|
||||
glyphs to the font, they must be stylistically in keeping with Vera's
|
||||
design. Vera cannot become a "ransom note" font. Jim Lyles will be
|
||||
providing a document describing the design elements used in Vera, as a
|
||||
guide and aid for people interested in contributing to Vera.
|
||||
|
||||
7. I want to sell a software package that uses these fonts: Can I do so?
|
||||
|
||||
Sure. Bundle the fonts with your software and sell your software
|
||||
with the fonts. That is the intent of the copyright.
|
||||
|
||||
8. If applications have built the names "Bitstream Vera" into them,
|
||||
can I override this somehow to use fonts of my choosing?
|
||||
|
||||
This depends on exact details of the software. Most open source
|
||||
systems and software (e.g., Gnome, KDE, etc.) are now converting to
|
||||
use fontconfig (see www.fontconfig.org) to handle font configuration,
|
||||
selection and substitution; it has provisions for overriding font
|
||||
names and substituting alternatives. An example is provided by the
|
||||
supplied local.conf file, which chooses the family Bitstream Vera for
|
||||
"sans", "serif" and "monospace". Other software (e.g., the XFree86
|
||||
core server) has other mechanisms for font substitution.
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" datatype="plaintext" original="EXT:install/Resources/Private/Language/Modules/environment.xlf" date="2026-11-10T13:37:37Z" product-name="environment">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="short_description">
|
||||
<source>Environment</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="description">
|
||||
<source>Provides a simple link to the Install Tool. Notice the Install Tool (in typo3/install/) must be enabled.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="title">
|
||||
<source>Environment</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" datatype="plaintext" original="EXT:install/Resources/Private/Language/Modules/maintenance.xlf" date="2026-11-10T13:37:37Z" product-name="maintenance">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="short_description">
|
||||
<source>Maintenance</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="description">
|
||||
<source>Provides a simple link to the Install Tool. Notice the Install Tool (in typo3/install/) must be enabled.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="title">
|
||||
<source>Maintenance</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" datatype="plaintext" original="EXT:install/Resources/Private/Language/Modules/settings.xlf" date="2026-11-10T13:37:37Z" product-name="settings">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="short_description">
|
||||
<source>Settings</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="description">
|
||||
<source>Provides a simple link to the Install Tool. Notice the Install Tool (in typo3/install/) must be enabled.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="title">
|
||||
<source>Settings</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" datatype="plaintext" original="EXT:install/Resources/Private/Language/Modules/upgrade.xlf" date="2026-11-10T13:37:37Z" product-name="upgrade">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="short_description">
|
||||
<source>Upgrade</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="description">
|
||||
<source>Provides a simple link to the Install Tool. Notice the Install Tool (in typo3/install/) must be enabled.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="title">
|
||||
<source>Upgrade</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -0,0 +1,110 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file source-language="en" datatype="plaintext" original="EXT:install/Resources/Private/Language/Report/locallang.xlf" date="2011-10-17T20:22:33Z" product-name="install">
|
||||
<header/>
|
||||
<body>
|
||||
<trans-unit id="environment.status.title">
|
||||
<source>System environment check</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="environment.status.value">
|
||||
<source>%1$s Test(s)</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="environment.status.message.error">
|
||||
<source>The system environment check returned errors. Those errors will affect the functionality and stability of your TYPO3 CMS instance. Please check the install tool "System environment" for all details.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="environment.status.message.warning">
|
||||
<source>The system environment check returned warnings. Those warnings might have a negative effect on the functionality and stability of your TYPO3 CMS instance. Please check the install tool "System environment" for all details.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="environment.status.message.notice">
|
||||
<source>The system environment check returned notices. Those should not affect the functionality and stability of your TYPO3 CMS instance. Please check the install tool "System environment" for all details.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="environment.status.message.ok">
|
||||
<source/>
|
||||
</trans-unit>
|
||||
<trans-unit id="environment.status.message.info">
|
||||
<source/>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_fileSystem">
|
||||
<source>File System</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_writable">
|
||||
<source>Writable</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_missingDirectory">
|
||||
<source>Required directory missing</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_nonExistingDirectory">
|
||||
<source>Directory not existing</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_recommendedWritableDirectory">
|
||||
<source>Directory should be writable</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_requiredWritableDirectory">
|
||||
<source>Directory not writable</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_directoryDoesNotExist">
|
||||
<source>%s does not exist.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_directoryDoesNotExistCouldNotCreate">
|
||||
<source>%s does not exist and could not be created.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_directoryShouldAlsoBeWritable">
|
||||
<source>Also note that it should be writable, if it did exist.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_directoryShouldBeWritable">
|
||||
<source>%s should be writable.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_directoryMustBeWritable">
|
||||
<source>%s must be writable.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_remainingUpdates">
|
||||
<source>Remaining updates</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_remoteFetchException">
|
||||
<source>Could not fetch version matrix of TYPO3. Maybe this instance is blocked by a firewall?</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_isDevelopmentVersion">
|
||||
<source>This version of TYPO3 seems to be a development version. Thus no update information exists.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_patchLevelNotFoundInReleaseMatrix">
|
||||
<source>It seems that this TYPO3 version has never been released. Thus no update information exists.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_newVersionSecurityRelevant">
|
||||
<source>There is a new version of TYPO3 available, updating is security relevant. Please update to version %s.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_newVersion">
|
||||
<source>There is a new version of TYPO3 available. You can update to version %s.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_elts_information">
|
||||
<source>The currently installed TYPO3 version %s doesn't receive any community-driven updates anymore, consider subscribing to Extended Long Term Support (ELTS) releases. Get more information at %s.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_elts_download">
|
||||
<source>Please visit %s to download the release in your ELTS area.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_elts_subscribe">
|
||||
<source>The currently installed TYPO3 version %s doesn't receive any community-driven updates anymore, consider subscribing to Extended Long Term Support (ELTS) releases. Get more information at %s.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_versionOutdated">
|
||||
<source>The TYPO3 version you're using is not supported anymore. You should update to a supported version.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_noAutomaticCheck">
|
||||
<source>Automatic update checking failed, please check for updates manually.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_uptodate">
|
||||
<source>Your TYPO3 version is up-to-date.</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_installTool">
|
||||
<source>Install Tool</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_enabledPermanently">
|
||||
<source>Enabled permanently</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_enabledTemporarily">
|
||||
<source>Enabled temporarily</source>
|
||||
</trans-unit>
|
||||
<trans-unit id="status_installEnabledTemporarily">
|
||||
<source>The Install Tool is temporarily enabled. Delete the file "%s" when you have finished setting up TYPO3. If not used the Install Tool will be disabled automatically in %s minutes.</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
@@ -0,0 +1,5 @@
|
||||
<f:render section="headline"/>
|
||||
<f:render section="header" optional="true"/>
|
||||
<div class="card-container">
|
||||
<f:render section="cards"/>
|
||||
</div>
|
||||
@@ -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>
|
||||
@@ -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