GitHub/WoltLab/WCF.git
3 years agoEnable npm caching in GitHub Actions
Tim Düsterhus [Wed, 18 Aug 2021 14:57:25 +0000 (16:57 +0200)]
Enable npm caching in GitHub Actions

3 years agoAdd new template event `pagesTabMenuContent` on `boxAdd.tpl`
joshuaruesweg [Tue, 17 Aug 2021 19:41:30 +0000 (21:41 +0200)]
Add new template event `pagesTabMenuContent` on `boxAdd.tpl`

3 years agoRemove whitespaces on empty lines in `boxAdd.tpl`
joshuaruesweg [Tue, 17 Aug 2021 19:40:51 +0000 (21:40 +0200)]
Remove whitespaces on empty lines in `boxAdd.tpl`

3 years agoMerge remote-tracking branch 'origin/master'
Tim Düsterhus [Tue, 17 Aug 2021 07:55:04 +0000 (09:55 +0200)]
Merge remote-tracking branch 'origin/master'

3 years agoMerge branch '5.4'
Tim Düsterhus [Tue, 17 Aug 2021 07:54:17 +0000 (09:54 +0200)]
Merge branch '5.4'

3 years agoMark as read doesn't removed the badge from submenu entries
Marcel Werk [Mon, 16 Aug 2021 13:08:54 +0000 (15:08 +0200)]
Mark as read doesn't removed the badge from submenu entries

3 years agoMissing informal variant
Marcel Werk [Mon, 16 Aug 2021 12:56:30 +0000 (14:56 +0200)]
Missing informal variant

3 years agoTypo
Marcel Werk [Mon, 16 Aug 2021 12:52:59 +0000 (14:52 +0200)]
Typo

3 years agoWhitelist `abs` in enterprise mode
Tim Düsterhus [Mon, 16 Aug 2021 10:53:46 +0000 (12:53 +0200)]
Whitelist `abs` in enterprise mode

3 years agoMerge pull request #4463 from WoltLab/smiley-unicode-title
Tim Düsterhus [Mon, 16 Aug 2021 09:02:42 +0000 (11:02 +0200)]
Merge pull request #4463 from WoltLab/smiley-unicode-title

Fix Unicode in smiley titles

3 years agoFix Unicode in smiley titles
Tim Düsterhus [Mon, 16 Aug 2021 07:09:10 +0000 (09:09 +0200)]
Fix Unicode in smiley titles

see 5d0bf3ec233f62c6a5a68629e32b7eaa8c9d1dd3
see #4156

3 years agoMerge pull request #4462 from WoltLab/email-log-message-id
Tim Düsterhus [Mon, 16 Aug 2021 07:05:03 +0000 (09:05 +0200)]
Merge pull request #4462 from WoltLab/email-log-message-id

Add Message-ID filter to email log

3 years agoFix localization of PAGE_TITLE in __multifactorTotpSecretField.tpl
Tim Düsterhus [Sun, 15 Aug 2021 12:33:39 +0000 (14:33 +0200)]
Fix localization of PAGE_TITLE in __multifactorTotpSecretField.tpl

3 years agoAdd Message-ID filter to email log
Tim Düsterhus [Fri, 13 Aug 2021 13:52:11 +0000 (15:52 +0200)]
Add Message-ID filter to email log

3 years agoAdd `required` attributes to acptemplates/login
Tim Düsterhus [Fri, 13 Aug 2021 10:31:32 +0000 (12:31 +0200)]
Add `required` attributes to acptemplates/login

3 years agoShow article labels in recent activities
Marcel Werk [Fri, 13 Aug 2021 09:35:44 +0000 (11:35 +0200)]
Show article labels in recent activities

3 years agoMerge branch '5.4'
Tim Düsterhus [Fri, 13 Aug 2021 09:00:24 +0000 (11:00 +0200)]
Merge branch '5.4'

3 years agoMerge pull request #4461 from WoltLab/php7.3
Tim Düsterhus [Fri, 13 Aug 2021 08:57:41 +0000 (10:57 +0200)]
Merge pull request #4461 from WoltLab/php7.3

Move PHP 7.3 from recommended to sufficient in SystemCheckPage

3 years agoMove PHP 7.3 from recommended to sufficient in SystemCheckPage
Tim Düsterhus [Fri, 13 Aug 2021 08:50:00 +0000 (10:50 +0200)]
Move PHP 7.3 from recommended to sufficient in SystemCheckPage

3 years agoFix PHP 8.1 compatibility in DatabaseObject::getDatabaseTableIndexName()
Tim Düsterhus [Fri, 13 Aug 2021 08:45:58 +0000 (10:45 +0200)]
Fix PHP 8.1 compatibility in DatabaseObject::getDatabaseTableIndexName()

3 years agoRemove obsolete import
Tim Düsterhus [Fri, 13 Aug 2021 08:11:45 +0000 (10:11 +0200)]
Remove obsolete import

Fixes 2f37e5b400b80ecd8342d11f6d9e54e8f2e6c51e

3 years agoUse PSR-7 responses in PollAction
Tim Düsterhus [Fri, 13 Aug 2021 07:59:35 +0000 (09:59 +0200)]
Use PSR-7 responses in PollAction

3 years agoMark RequestHandler::checkOfflineMode() and ::checkAppEvaluation() as private
Tim Düsterhus [Fri, 13 Aug 2021 07:51:14 +0000 (09:51 +0200)]
Mark RequestHandler::checkOfflineMode() and ::checkAppEvaluation() as private

3 years agoMerge pull request #4460 from WoltLab/laminas-progressbar
Tim Düsterhus [Fri, 13 Aug 2021 07:25:35 +0000 (09:25 +0200)]
Merge pull request #4460 from WoltLab/laminas-progressbar

Replace Zend/ProgressBar by laminas-progressbar

3 years agoMerge branch '5.3' into 5.4
Tim Düsterhus [Fri, 13 Aug 2021 07:20:30 +0000 (09:20 +0200)]
Merge branch '5.3' into 5.4

3 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Fri, 13 Aug 2021 07:19:27 +0000 (09:19 +0200)]
Merge branch '5.2' into 5.3

3 years agoMerge pull request #4459 from SoftCreatR/bugfix/custom-errors
Tim Düsterhus [Fri, 13 Aug 2021 07:18:36 +0000 (09:18 +0200)]
Merge pull request #4459 from SoftCreatR/bugfix/custom-errors

Unify error handling in several templates

3 years agoUnified error handling in several templates
Sascha Greuel [Thu, 12 Aug 2021 16:08:27 +0000 (18:08 +0200)]
Unified error handling in several templates

3 years agoUpdate Zend\ProgressBar imports to Laminas\ProgressBar
Tim Düsterhus [Thu, 12 Aug 2021 12:21:31 +0000 (14:21 +0200)]
Update Zend\ProgressBar imports to Laminas\ProgressBar

3 years agoReplace Zend/ProgressBar by laminas-progressbar
Tim Düsterhus [Thu, 12 Aug 2021 12:05:04 +0000 (14:05 +0200)]
Replace Zend/ProgressBar by laminas-progressbar

This is a drop-in replacement for our use-case due to laminas-zendframework-bridge.

3 years agoSlightly improve phrasing in de.xml
Tim Düsterhus [Thu, 12 Aug 2021 15:22:34 +0000 (17:22 +0200)]
Slightly improve phrasing in de.xml

3 years agoMerge branch '5.4'
Tim Düsterhus [Thu, 12 Aug 2021 14:32:55 +0000 (16:32 +0200)]
Merge branch '5.4'

3 years agoMerge pull request #4437 from WoltLab/meta-psr-7
Tim Düsterhus [Thu, 12 Aug 2021 14:19:04 +0000 (16:19 +0200)]
Merge pull request #4437 from WoltLab/meta-psr-7

Meta: PSR-7

3 years agoMerge pull request #4447 from WoltLab/psr-7-full
Tim Düsterhus [Thu, 12 Aug 2021 14:14:29 +0000 (16:14 +0200)]
Merge pull request #4447 from WoltLab/psr-7-full

Use PSR-7 responses in additional actions

3 years agoConsistently use `getControllerLink` in Facebook|Github|GoogleAuthAction
Tim Düsterhus [Thu, 12 Aug 2021 11:45:54 +0000 (13:45 +0200)]
Consistently use `getControllerLink` in Facebook|Github|GoogleAuthAction

3 years agoMerge branch '5.3' into 5.4
Tim Düsterhus [Thu, 12 Aug 2021 08:09:17 +0000 (10:09 +0200)]
Merge branch '5.3' into 5.4

3 years agoAdd missing call to ->loadVariables() before downloading Google Font during style...
Tim Düsterhus [Thu, 12 Aug 2021 08:07:08 +0000 (10:07 +0200)]
Add missing call to ->loadVariables() before downloading Google Font during style import

3 years agoRename `Ui/Object/Action/Toogle` to `Toggle` (#4450)
Joshua Rüsweg [Thu, 12 Aug 2021 07:23:30 +0000 (09:23 +0200)]
Rename `Ui/Object/Action/Toogle` to `Toggle` (#4450)

3 years agoMerge pull request #4457 from WoltLab/proxy-sourcemap-laminas
Tim Düsterhus [Wed, 11 Aug 2021 14:44:44 +0000 (16:44 +0200)]
Merge pull request #4457 from WoltLab/proxy-sourcemap-laminas

Simplify proxy_sourcemap.php using the Laminas libraries

3 years agoDeprecate AbstractAjaxAction
Tim Düsterhus [Tue, 10 Aug 2021 14:23:03 +0000 (16:23 +0200)]
Deprecate AbstractAjaxAction

3 years agoUse PSR-7 responses in NotificationConfirmAction
Tim Düsterhus [Tue, 10 Aug 2021 14:12:31 +0000 (16:12 +0200)]
Use PSR-7 responses in NotificationConfirmAction

3 years agoUse PSR-7 responses in AbstractDialogAction
Tim Düsterhus [Tue, 10 Aug 2021 13:40:45 +0000 (15:40 +0200)]
Use PSR-7 responses in AbstractDialogAction

3 years agoUse PSR-7 responses in MessageQuoteAction
Tim Düsterhus [Tue, 10 Aug 2021 13:25:29 +0000 (15:25 +0200)]
Use PSR-7 responses in MessageQuoteAction

3 years agoUse PSR-7 responses in AJAXUploadAction
Tim Düsterhus [Tue, 10 Aug 2021 12:49:29 +0000 (14:49 +0200)]
Use PSR-7 responses in AJAXUploadAction

The IE 9 fallback technically should no longer be required, but the (legacy)
JavaScript still references the `isFallback` parameter.

3 years agoUse PSR-7 responses in NotificationDisableAction
Tim Düsterhus [Tue, 10 Aug 2021 12:44:21 +0000 (14:44 +0200)]
Use PSR-7 responses in NotificationDisableAction

3 years agoUse PSR-7 responses in GithubAuthAction
Tim Düsterhus [Fri, 6 Aug 2021 13:59:01 +0000 (15:59 +0200)]
Use PSR-7 responses in GithubAuthAction

3 years agoUse PSR-7 responses in FacebookAuthAction
Tim Düsterhus [Fri, 6 Aug 2021 13:58:09 +0000 (15:58 +0200)]
Use PSR-7 responses in FacebookAuthAction

3 years agoUse PSR-7 responses in GoogleAuthAction
Tim Düsterhus [Fri, 6 Aug 2021 13:56:48 +0000 (15:56 +0200)]
Use PSR-7 responses in GoogleAuthAction

3 years agoSupport returning PSR-7 responses in AbstractOauth2Action
Tim Düsterhus [Fri, 6 Aug 2021 13:55:13 +0000 (15:55 +0200)]
Support returning PSR-7 responses in AbstractOauth2Action

3 years agoUse PSR-7 responses in CoreRewriteTestAction
Tim Düsterhus [Fri, 6 Aug 2021 13:51:37 +0000 (15:51 +0200)]
Use PSR-7 responses in CoreRewriteTestAction

3 years agoUse PSR-7 responses in BackgroundQueuePerformAction
Tim Düsterhus [Fri, 6 Aug 2021 13:49:17 +0000 (15:49 +0200)]
Use PSR-7 responses in BackgroundQueuePerformAction

3 years agoUse PSR-7 responses in UserQuickSearchAction
Tim Düsterhus [Fri, 6 Aug 2021 13:43:16 +0000 (15:43 +0200)]
Use PSR-7 responses in UserQuickSearchAction

3 years agoUse PSR-7 responses in UserExportGdprAction
Tim Düsterhus [Fri, 6 Aug 2021 13:37:58 +0000 (15:37 +0200)]
Use PSR-7 responses in UserExportGdprAction

3 years agoAdd HeaderUtil::withNoCacheHeaders()
Tim Düsterhus [Fri, 6 Aug 2021 13:36:30 +0000 (15:36 +0200)]
Add HeaderUtil::withNoCacheHeaders()

3 years agoUse PSR-7 responses in FullLogoutAction
Tim Düsterhus [Fri, 6 Aug 2021 13:29:44 +0000 (15:29 +0200)]
Use PSR-7 responses in FullLogoutAction

3 years agoUse PSR-7 responses in CacheClearAction
Tim Düsterhus [Fri, 6 Aug 2021 13:28:51 +0000 (15:28 +0200)]
Use PSR-7 responses in CacheClearAction

3 years agoSimplify proxy_sourcemap.php using the Laminas libraries
Tim Düsterhus [Wed, 11 Aug 2021 14:25:45 +0000 (16:25 +0200)]
Simplify proxy_sourcemap.php using the Laminas libraries

3 years agoMerge pull request #4456 from WoltLab/style-edit-description
Tim Düsterhus [Wed, 11 Aug 2021 13:31:13 +0000 (15:31 +0200)]
Merge pull request #4456 from WoltLab/style-edit-description

Prevent StyleEditForm from creating phrases with empty name

3 years agoDelete the empty phrase when updating to 5.4.5
Tim Düsterhus [Wed, 11 Aug 2021 12:22:10 +0000 (14:22 +0200)]
Delete the empty phrase when updating to 5.4.5

3 years agoValidate the languageVariable in I18nHandler::save()
Tim Düsterhus [Wed, 11 Aug 2021 12:19:53 +0000 (14:19 +0200)]
Validate the languageVariable in I18nHandler::save()

3 years agoAdd LanguageEditor::validateItemName()
Tim Düsterhus [Wed, 11 Aug 2021 12:17:49 +0000 (14:17 +0200)]
Add LanguageEditor::validateItemName()

3 years agoStore deterministic language variable for style description in StyleEditForm
Tim Düsterhus [Wed, 11 Aug 2021 12:12:42 +0000 (14:12 +0200)]
Store deterministic language variable for style description in StyleEditForm

If the `styleDescription` was empty (as it might be for the default style) this
attempted to store the description in the language item with empty name.

3 years agoMerge pull request #4454 from WoltLab/psr-7-cache-control-private
Tim Düsterhus [Wed, 11 Aug 2021 11:40:48 +0000 (13:40 +0200)]
Merge pull request #4454 from WoltLab/psr-7-cache-control-private

Add `cache-control: private` to PSR-7 responses

3 years agoClean up the `cache-control` processing in RequestHandler::sendPsr7Response()
Tim Düsterhus [Wed, 11 Aug 2021 11:32:06 +0000 (13:32 +0200)]
Clean up the `cache-control` processing in RequestHandler::sendPsr7Response()

3 years agoMissing information who reported a content, if report was made by a guest
Marcel Werk [Wed, 11 Aug 2021 11:26:02 +0000 (13:26 +0200)]
Missing information who reported a content, if report was made by a guest

3 years agoAdd `cache-control: private` to PSR-7 responses
Tim Düsterhus [Tue, 10 Aug 2021 15:21:31 +0000 (17:21 +0200)]
Add `cache-control: private` to PSR-7 responses

see #4273

3 years agoMerge branch '5.3' into 5.4
Tim Düsterhus [Wed, 11 Aug 2021 09:56:40 +0000 (11:56 +0200)]
Merge branch '5.3' into 5.4

3 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Wed, 11 Aug 2021 09:56:10 +0000 (11:56 +0200)]
Merge branch '5.2' into 5.3

3 years agoMerge pull request #4453 from WoltLab/iformbutton-is-available
Tim Düsterhus [Wed, 11 Aug 2021 09:37:23 +0000 (11:37 +0200)]
Merge pull request #4453 from WoltLab/iformbutton-is-available

Check whether an IFormButton is available before rendering

3 years agoCheck whether an IFormButton is available before rendering
Tim Düsterhus [Wed, 11 Aug 2021 07:54:12 +0000 (09:54 +0200)]
Check whether an IFormButton is available before rendering

3 years agoMerge branch 'master' into meta-psr-7
Tim Düsterhus [Tue, 10 Aug 2021 14:08:56 +0000 (16:08 +0200)]
Merge branch 'master' into meta-psr-7

3 years agoMerge branch '5.4'
Tim Düsterhus [Tue, 10 Aug 2021 14:06:44 +0000 (16:06 +0200)]
Merge branch '5.4'

3 years agoAdd missing `@since` tags for PSR-7 methods
Tim Düsterhus [Tue, 10 Aug 2021 14:06:04 +0000 (16:06 +0200)]
Add missing `@since` tags for PSR-7 methods

3 years agoMerge pull request #4436 from WoltLab/psr-7
Tim Düsterhus [Tue, 10 Aug 2021 13:48:44 +0000 (15:48 +0200)]
Merge pull request #4436 from WoltLab/psr-7

Add initial support for sending PSR-7 responses

3 years agoMerge pull request #4452 from WoltLab/markQuotesForRemoval
Tim Düsterhus [Tue, 10 Aug 2021 13:40:25 +0000 (15:40 +0200)]
Merge pull request #4452 from WoltLab/markQuotesForRemoval

Deprecate MessageQuoteAction::markForRemoval()

3 years agoUpdating minified JavaScript files 5.4.4
WoltLab [Tue, 10 Aug 2021 13:30:36 +0000 (13:30 +0000)]
Updating minified JavaScript files

3 years agoRelease 5.4.4
Alexander Ebert [Tue, 10 Aug 2021 13:26:04 +0000 (15:26 +0200)]
Release 5.4.4

3 years agoDeprecate MessageQuoteAction::markForRemoval()
Tim Düsterhus [Tue, 10 Aug 2021 13:15:22 +0000 (15:15 +0200)]
Deprecate MessageQuoteAction::markForRemoval()

This method is no longer used as of commit
9d118fa4c035827b399acdcb4c6c05ad1be5f3c5 (3.0.x).

3 years agoRebuild JavaScript
Tim Düsterhus [Tue, 10 Aug 2021 12:36:32 +0000 (14:36 +0200)]
Rebuild JavaScript

see 33e803caa3e934a078a240687d452f54825379d9

3 years agoFix typo in Ui/Reaction/Handler.ts
Tim Düsterhus [Tue, 10 Aug 2021 12:34:12 +0000 (14:34 +0200)]
Fix typo in Ui/Reaction/Handler.ts

see 679d5fe8a2353c69b75fd103753831dc785f83a8

3 years agoMerge branch '5.4'
Tim Düsterhus [Tue, 10 Aug 2021 10:19:35 +0000 (12:19 +0200)]
Merge branch '5.4'

3 years agouse the sessions language id instead of the user's default in `I18nDatabaseObjectList`
mutec [Tue, 10 Aug 2021 10:06:27 +0000 (12:06 +0200)]
use the sessions language id instead of the user's default in `I18nDatabaseObjectList`

`WCF::getUser()->languageID` doesn't return a valid language id as integer in every case. Additionally we (normally) want to use a specific language or the session's language - which might be different from the user's default in some moments.

see #4407

3 years agoRelease 5.4.3 5.4.3
Alexander Ebert [Tue, 10 Aug 2021 09:05:07 +0000 (11:05 +0200)]
Release 5.4.3

3 years agoUpdating minified JavaScript files
WoltLab [Mon, 9 Aug 2021 16:39:16 +0000 (16:39 +0000)]
Updating minified JavaScript files

3 years agoWorkaround for unfreezing the screen in iOS Safari
Alexander Ebert [Mon, 9 Aug 2021 16:36:13 +0000 (18:36 +0200)]
Workaround for unfreezing the screen in iOS Safari

The change to the CSS class and the properties cause a recalculation that could sometimes interfere with the page scrolling.

Forcing the scrolling into the next iteration of the event loop solves this issue by separating both actions. Since the scrolling does depend on the actions in the lines above it, this is reasonably safe to do.

3 years agoMerge pull request #4451 from WoltLab/multiselect-condition
Tim Düsterhus [Mon, 9 Aug 2021 15:18:13 +0000 (17:18 +0200)]
Merge pull request #4451 from WoltLab/multiselect-condition

Fix conditions for MultiSelectOptionType

3 years agoFix sorting status column in emailLogList.tpl
joshuaruesweg [Mon, 9 Aug 2021 13:22:31 +0000 (15:22 +0200)]
Fix sorting status column in emailLogList.tpl

3 years agoFix conditions for MultiSelectOptionType
Tim Düsterhus [Fri, 9 Jul 2021 14:58:42 +0000 (16:58 +0200)]
Fix conditions for MultiSelectOptionType

This cleans up the SQL conditions used for searching for users with a specific
selection and fixes the following issues:

- It avoids the use of `escapeString()` in favor of proper prepared statements.
- It avoids the use of `preg_quote()` to escape a regular expression for use in
  MySQL, which might not be safe.
- It fixes matching when the options are later reordered, as the saved value is
  not being normalized and instead reused the order of the options within the
  select.

The generated query does not look great, but is not really worse than the
regular expression either.

In the future it might be possible to migrate this option type to a JSON based
storage and to use `JSON_CONTAINS()`.

3 years agoMerge branch '5.4'
Tim Düsterhus [Mon, 9 Aug 2021 12:39:01 +0000 (14:39 +0200)]
Merge branch '5.4'

3 years agoSkip XML that have been unchanged for 5.3 -> 5.4
Alexander Ebert [Mon, 9 Aug 2021 12:00:00 +0000 (14:00 +0200)]
Skip XML that have been unchanged for 5.3 -> 5.4

3 years agoMerge pull request #4445 from WoltLab/template-sandbox-foreachvars
Alexander Ebert [Mon, 9 Aug 2021 10:53:43 +0000 (12:53 +0200)]
Merge pull request #4445 from WoltLab/template-sandbox-foreachvars

Sandbox `foreachVars` in templates

3 years agoMerge branch '5.4'
Tim Düsterhus [Mon, 9 Aug 2021 09:48:45 +0000 (11:48 +0200)]
Merge branch '5.4'

3 years agoMerge pull request #4446 from WoltLab/mfa-setup-allocation-failed
Marcel Werk [Mon, 9 Aug 2021 09:35:07 +0000 (11:35 +0200)]
Merge pull request #4446 from WoltLab/mfa-setup-allocation-failed

Show nicer error message if allocating the MFA setup fails

3 years agoShow nicer error message if allocating the MFA setup fails
Tim Düsterhus [Mon, 9 Aug 2021 09:27:51 +0000 (11:27 +0200)]
Show nicer error message if allocating the MFA setup fails

`Setup::allocateSetUpId` can deadlock if the form is submitted twice at the
same time. This error should not be normally seen by the user. If they do they
will be directed to "Try again" and then see that MFA is active, because one of
the requests succeeded. They will also receive the info mail letting them know
where to regenerate their backup codes if necessary.

3 years agoAdd RejectEverythingFormField if email MFA is already active
Tim Düsterhus [Mon, 9 Aug 2021 09:07:27 +0000 (11:07 +0200)]
Add RejectEverythingFormField if email MFA is already active

We must not allow submitting the form in this case, because we will trigger the
assertion otherwise.

3 years agoFix assertion in EmailMultifactorMethod::processManagementForm()
Tim Düsterhus [Mon, 9 Aug 2021 09:06:39 +0000 (11:06 +0200)]
Fix assertion in EmailMultifactorMethod::processManagementForm()

3 years agoSandbox `foreachVars` in templates
Alexander Ebert [Sun, 8 Aug 2021 09:29:26 +0000 (11:29 +0200)]
Sandbox `foreachVars` in templates

Nesting the same template inside a `foreach` loop that is also accessed inside the nested call will overwrite the values from the outer template due to identical identifiers being used.

The sandbox did not protected `$this->foreachVars` despite being stateful.

See #4431
Fixes #4444

3 years agoSearch for not filled user option fields was not possible
Marcel Werk [Sat, 7 Aug 2021 09:42:38 +0000 (11:42 +0200)]
Search for not filled user option fields was not possible

3 years agoImproved acp search
Marcel Werk [Sat, 7 Aug 2021 09:18:22 +0000 (11:18 +0200)]
Improved acp search

Closes #3335

3 years agoMerge branch '5.4'
Alexander Ebert [Sat, 7 Aug 2021 08:48:34 +0000 (10:48 +0200)]
Merge branch '5.4'