GitHub/WoltLab/WCF.git
2 years agoRemove __wcfVersion template variable
Tim Düsterhus [Fri, 5 Aug 2022 07:46:47 +0000 (09:46 +0200)]
Remove __wcfVersion template variable

This one is long-deprecated, breaks very obviously and is trivially replaced.

2 years agoMerge branch '5.5'
Tim Düsterhus [Fri, 5 Aug 2022 07:29:55 +0000 (09:29 +0200)]
Merge branch '5.5'

2 years agoMerge branch '5.4' into 5.5
Tim Düsterhus [Fri, 5 Aug 2022 07:29:45 +0000 (09:29 +0200)]
Merge branch '5.4' into 5.5

2 years agoMerge pull request #4923 from WoltLab/crontab
Tim Düsterhus [Thu, 4 Aug 2022 12:22:38 +0000 (14:22 +0200)]
Merge pull request #4923 from WoltLab/crontab

Offload cronjob calculations to a library

2 years agoDeprecate CronjobUtil
Tim Düsterhus [Thu, 4 Aug 2022 12:09:36 +0000 (14:09 +0200)]
Deprecate CronjobUtil

2 years agoReplace use of CronjobUtil by dragonmantank/cron-expression
Tim Düsterhus [Thu, 4 Aug 2022 12:08:18 +0000 (14:08 +0200)]
Replace use of CronjobUtil by dragonmantank/cron-expression

2 years agoAdd dragonmantank/cron-expression composer dependency
Tim Düsterhus [Thu, 4 Aug 2022 11:36:55 +0000 (13:36 +0200)]
Add dragonmantank/cron-expression composer dependency

2 years agoMerge branch '5.5'
Tim Düsterhus [Thu, 4 Aug 2022 11:47:54 +0000 (13:47 +0200)]
Merge branch '5.5'

2 years agoFix PHPDoc type in IFormField
Tim Düsterhus [Thu, 4 Aug 2022 11:47:22 +0000 (13:47 +0200)]
Fix PHPDoc type in IFormField

2 years agoMerge pull request #4918 from WoltLab/diff
Tim Düsterhus [Thu, 4 Aug 2022 10:47:05 +0000 (12:47 +0200)]
Merge pull request #4918 from WoltLab/diff

Use sebastian/diff for diff generation

2 years agoMerge branch '5.5'
Tim Düsterhus [Thu, 4 Aug 2022 10:21:14 +0000 (12:21 +0200)]
Merge branch '5.5'

2 years agoMerge pull request #4920 from WoltLab/row-format
Tim Düsterhus [Thu, 4 Aug 2022 10:20:26 +0000 (12:20 +0200)]
Merge pull request #4920 from WoltLab/row-format

Set an explicit `ROW_FORMAT=dynamic` in CREATE TABLE

2 years agoMerge pull request #4921 from SoftCreatR/patch-2
Tim Düsterhus [Thu, 4 Aug 2022 07:04:07 +0000 (09:04 +0200)]
Merge pull request #4921 from SoftCreatR/patch-2

Fix Facebook media provider

2 years agoFixed Facebook media provider
Sascha Greuel [Thu, 4 Aug 2022 04:58:21 +0000 (06:58 +0200)]
Fixed Facebook media provider

Usernames CAN contain periods, but they're currently not supported. There's also no need for a trailing slash.

Example: https://www.facebook.com/RaiPlay.it/videos/1059491774481091

2 years agoRemove useless array-emptiness checks in WCFSetup::logFiles()
Tim Düsterhus [Wed, 3 Aug 2022 13:17:40 +0000 (15:17 +0200)]
Remove useless array-emptiness checks in WCFSetup::logFiles()

a) It is impossible for theses arrays to be empty, unless the installation is
seriously broken.
b) Even if they were empty, it would not cause issues, as the foreach loop
simply won't be entered.

2 years agoStore SHA-256 hashes in wcf1_package_installation_file_log during WCFSetup
Tim Düsterhus [Wed, 3 Aug 2022 13:16:48 +0000 (15:16 +0200)]
Store SHA-256 hashes in wcf1_package_installation_file_log during WCFSetup

see 01ec69848a725e649b045f26cd16720581071076

2 years agoStop referencing WCF_N in WCFSetup
Tim Düsterhus [Wed, 3 Aug 2022 12:59:15 +0000 (14:59 +0200)]
Stop referencing WCF_N in WCFSetup

This is guaranteed to be 1 since e3fd38fd7ef7e3bb1dbb871fdd6786c7009aa36d.

2 years agoFix use of `->prepare()` in FilesFileHandler
Tim Düsterhus [Wed, 3 Aug 2022 12:56:39 +0000 (14:56 +0200)]
Fix use of `->prepare()` in FilesFileHandler

see 01ec69848a725e649b045f26cd16720581071076

2 years agoUse `->prepare()` in SQL queries with static table names in PIPs
Tim Düsterhus [Wed, 3 Aug 2022 12:55:55 +0000 (14:55 +0200)]
Use `->prepare()` in SQL queries with static table names in PIPs

2 years agoSet an explicit `ROW_FORMAT=dynamic` in CREATE TABLE
Tim Düsterhus [Wed, 3 Aug 2022 12:14:07 +0000 (14:14 +0200)]
Set an explicit `ROW_FORMAT=dynamic` in CREATE TABLE

Resolves #4910.

2 years agoMigrate to sebastian/diff
Tim Düsterhus [Wed, 3 Aug 2022 10:55:27 +0000 (12:55 +0200)]
Migrate to sebastian/diff

2 years agoDeprecate the majority of methods in \wcf\util\Diff
Tim Düsterhus [Wed, 3 Aug 2022 10:45:23 +0000 (12:45 +0200)]
Deprecate the majority of methods in \wcf\util\Diff

2 years agoAdd Diff::rawDiffFromSebastianDiff()
Tim Düsterhus [Wed, 3 Aug 2022 10:41:56 +0000 (12:41 +0200)]
Add Diff::rawDiffFromSebastianDiff()

This eases the migration, because consumers can switch to sebastian/diff's
generation logic, while preserving the legacy output format.

2 years agoAdd sebastian/diff composer dependency
Tim Düsterhus [Wed, 3 Aug 2022 10:18:20 +0000 (12:18 +0200)]
Add sebastian/diff composer dependency

2 years agoAdd `sort-packages: true` to composer.json
Tim Düsterhus [Wed, 3 Aug 2022 10:28:09 +0000 (12:28 +0200)]
Add `sort-packages: true` to composer.json

2 years agoMerge branch '5.5'
Tim Düsterhus [Wed, 3 Aug 2022 09:48:37 +0000 (11:48 +0200)]
Merge branch '5.5'

2 years agoDetect incorrect system font stack inserted in Chrome
Alexander Ebert [Tue, 2 Aug 2022 15:46:46 +0000 (17:46 +0200)]
Detect incorrect system font stack inserted in Chrome

2 years agoMerge pull request #4917 from WoltLab/attachment-tab-a11y
Alexander Ebert [Tue, 2 Aug 2022 11:46:03 +0000 (13:46 +0200)]
Merge pull request #4917 from WoltLab/attachment-tab-a11y

Add missing button role in attachment management tab

2 years agoMerge branch '5.5'
Tim Düsterhus [Tue, 2 Aug 2022 11:44:41 +0000 (13:44 +0200)]
Merge branch '5.5'

2 years agoAdd missing button role in attachment management tab
Marcel Werk [Tue, 2 Aug 2022 11:38:02 +0000 (13:38 +0200)]
Add missing button role in attachment management tab

2 years agoMerge pull request #4916 from WoltLab/assert
Tim Düsterhus [Tue, 2 Aug 2022 10:51:06 +0000 (12:51 +0200)]
Merge pull request #4916 from WoltLab/assert

Attempt to enable proper `assert()` handling

2 years agoAttempt to enable `zend.assertions` if debug mode is enabled
Tim Düsterhus [Tue, 2 Aug 2022 10:26:01 +0000 (12:26 +0200)]
Attempt to enable `zend.assertions` if debug mode is enabled

2 years agoForce enable `AssertionError` for assertion failures
Tim Düsterhus [Tue, 2 Aug 2022 10:21:48 +0000 (12:21 +0200)]
Force enable `AssertionError` for assertion failures

2 years agoFix missing copying of conditions when copying boxes
Marcel Werk [Mon, 1 Aug 2022 15:45:32 +0000 (17:45 +0200)]
Fix missing copying of conditions when copying boxes

2 years agoAdd `str_contains`, `str_starts_with`, `str_ends_with` to allowed template modifiers
Tim Düsterhus [Mon, 1 Aug 2022 12:07:32 +0000 (14:07 +0200)]
Add `str_contains`, `str_starts_with`, `str_ends_with` to allowed template modifiers

2 years agoReplace `mt_rand()` with `random_int()` in non-deprecated methods
Tim Düsterhus [Mon, 1 Aug 2022 09:35:15 +0000 (11:35 +0200)]
Replace `mt_rand()` with `random_int()` in non-deprecated methods

2 years agoUpdate composer dependencies
Tim Düsterhus [Mon, 1 Aug 2022 09:28:49 +0000 (11:28 +0200)]
Update composer dependencies

2 years agoMerge branch '5.5'
Tim Düsterhus [Mon, 1 Aug 2022 09:28:31 +0000 (11:28 +0200)]
Merge branch '5.5'

2 years agoUpdate composer dependencies
Tim Düsterhus [Mon, 1 Aug 2022 09:28:11 +0000 (11:28 +0200)]
Update composer dependencies

2 years agoMerge branch '5.5'
Tim Düsterhus [Fri, 29 Jul 2022 10:15:26 +0000 (12:15 +0200)]
Merge branch '5.5'

2 years agoUpdate composer dependencies
Tim Düsterhus [Thu, 28 Jul 2022 14:50:33 +0000 (16:50 +0200)]
Update composer dependencies

2 years agoScroll to the editor after inserting the quote
Alexander Ebert [Thu, 28 Jul 2022 11:11:57 +0000 (13:11 +0200)]
Scroll to the editor after inserting the quote

See https://www.woltlab.com/community/thread/296552-zitieren-von-kompletten-beitr%C3%A4gen-springt-nicht-in-den-editor/

2 years agoMerge pull request #4914 from WoltLab/file-log-sha256
Tim Düsterhus [Thu, 28 Jul 2022 10:30:41 +0000 (12:30 +0200)]
Merge pull request #4914 from WoltLab/file-log-sha256

Store SHA-256 hashes in `wcf1_package_installation_file_log`

2 years agoStore SHA-256 hashes in `wcf1_package_installation_file_log`
Tim Düsterhus [Thu, 28 Jul 2022 09:25:01 +0000 (11:25 +0200)]
Store SHA-256 hashes in `wcf1_package_installation_file_log`

It is not planned to actively check them anywhere, but having something is
often better than needing them. They might ease manual verification of the
installation's consistency.

2 years agoMerge branch '5.5'
Tim Düsterhus [Thu, 28 Jul 2022 09:38:53 +0000 (11:38 +0200)]
Merge branch '5.5'

2 years agoUpdate composer dependencies
Tim Düsterhus [Thu, 28 Jul 2022 09:38:39 +0000 (11:38 +0200)]
Update composer dependencies

2 years agoUpdate laminas/laminas-progressbar composer dependency
Tim Düsterhus [Thu, 28 Jul 2022 09:36:34 +0000 (11:36 +0200)]
Update laminas/laminas-progressbar composer dependency

see 8443392598404a0334b8770b910437f0592a996b

2 years agoMerge branch '5.5'
Tim Düsterhus [Thu, 28 Jul 2022 09:36:13 +0000 (11:36 +0200)]
Merge branch '5.5'

2 years agoCommit missing file
Tim Düsterhus [Thu, 28 Jul 2022 09:35:17 +0000 (11:35 +0200)]
Commit missing file

see 8443392598404a0334b8770b910437f0592a996b

2 years agoUpdate laminas-progressbar to a custom fork
Tim Düsterhus [Thu, 28 Jul 2022 09:34:40 +0000 (11:34 +0200)]
Update laminas-progressbar to a custom fork

see laminas/laminas-progressbar#14

2 years agoMerge branch '5.5'
Tim Düsterhus [Thu, 28 Jul 2022 08:56:52 +0000 (10:56 +0200)]
Merge branch '5.5'

2 years agoUnify error handling of DatabaseTableIndex with DatabaseTableForeignKey
Tim Düsterhus [Thu, 28 Jul 2022 08:45:37 +0000 (10:45 +0200)]
Unify error handling of DatabaseTableIndex with DatabaseTableForeignKey

This fixes a misleading error message if `->getData()` is called, but no
columns have been set:

> implode(): Argument #1 ($pieces) must be of type array, string given

2 years agoPrevent closing unclosable dialogs with the escape key
Alexander Ebert [Wed, 27 Jul 2022 17:18:27 +0000 (19:18 +0200)]
Prevent closing unclosable dialogs with the escape key

See https://www.woltlab.com/community/thread/296571-esc-schlie%C3%9Ft-login-dialog-im-acp/

2 years agoDetect changes to the HEX value using the `input` event
Alexander Ebert [Wed, 27 Jul 2022 17:07:45 +0000 (19:07 +0200)]
Detect changes to the HEX value using the `input` event

The `keypress` event does not fire while making changes to some parts of the value. This becomes an issue when the dialog is submitted through the enter key without a blur happening.

See https://www.woltlab.com/community/thread/296596-farbw%C3%A4hler-durch-enter-speichert-den-wert-nicht/

2 years agoAdd PHP 8.2 to the php.yml workflow
Tim Düsterhus [Wed, 27 Jul 2022 09:59:28 +0000 (11:59 +0200)]
Add PHP 8.2 to the php.yml workflow

2 years agoMerge branch '5.5'
Tim Düsterhus [Wed, 27 Jul 2022 08:28:36 +0000 (10:28 +0200)]
Merge branch '5.5'

2 years agoAllow @-sign in username
Sascha Greuel [Wed, 27 Jul 2022 08:17:14 +0000 (10:17 +0200)]
Allow @-sign in username

Currently, the check for email addresses as username is too strict, as an email
address in user@host format is valid. However, this results in usernames no
longer being allowed to contain an @ character, otherwise they will be
recognized as a valid email address.

See https://www.woltlab.com/community/thread/296653-benutzernamen-mit-im-namen-bei-5-5-nicht-mehr-m%C3%B6glich

Resolves #4912

2 years agoMerge branch '5.5'
Tim Düsterhus [Wed, 27 Jul 2022 07:45:47 +0000 (09:45 +0200)]
Merge branch '5.5'

2 years agoUpdate composer dependencies
Tim Düsterhus [Wed, 27 Jul 2022 07:45:31 +0000 (09:45 +0200)]
Update composer dependencies

2 years agoMerge branch '5.5'
Tim Düsterhus [Wed, 27 Jul 2022 07:44:18 +0000 (09:44 +0200)]
Merge branch '5.5'

2 years agoSilence the PHP_ICO class in StyleAction
Tim Düsterhus [Wed, 27 Jul 2022 07:42:55 +0000 (09:42 +0200)]
Silence the PHP_ICO class in StyleAction

It is planned to remove it with #4885.

Resolves #4911

2 years agoPass `\DateTimeImmutable` to Totp in TotpMultifactorMethod
Tim Düsterhus [Tue, 26 Jul 2022 07:44:50 +0000 (09:44 +0200)]
Pass `\DateTimeImmutable` to Totp in TotpMultifactorMethod

2 years agoAccept `\DateTimeInterface` in Totp
Tim Düsterhus [Tue, 26 Jul 2022 07:44:08 +0000 (09:44 +0200)]
Accept `\DateTimeInterface` in Totp

2 years agoRemove obsolete import in Mailbox
Tim Düsterhus [Mon, 25 Jul 2022 13:43:20 +0000 (15:43 +0200)]
Remove obsolete import in Mailbox

2 years agoMerge branch '5.4' into 5.5
Tim Düsterhus [Thu, 21 Jul 2022 09:08:44 +0000 (11:08 +0200)]
Merge branch '5.4' into 5.5

2 years agoMerge branch '5.5'
Tim Düsterhus [Wed, 20 Jul 2022 13:06:14 +0000 (15:06 +0200)]
Merge branch '5.5'

2 years agoFix typo in de.xml
Tim Düsterhus [Wed, 20 Jul 2022 12:51:10 +0000 (14:51 +0200)]
Fix typo in de.xml

see e1fa341f67d936b14006a70962734504c1a165cd

2 years agoRelease 5.5.3 5.5.3
Alexander Ebert [Wed, 20 Jul 2022 11:56:41 +0000 (13:56 +0200)]
Release 5.5.3

2 years agoMerge branch '5.4' into 5.5
Alexander Ebert [Wed, 20 Jul 2022 11:48:45 +0000 (13:48 +0200)]
Merge branch '5.4' into 5.5

2 years agoRelease 5.4.21 5.4.21
Alexander Ebert [Wed, 20 Jul 2022 11:15:40 +0000 (13:15 +0200)]
Release 5.4.21

2 years agoMerge branch '5.4' into 5.5
Tim Düsterhus [Wed, 20 Jul 2022 10:55:36 +0000 (12:55 +0200)]
Merge branch '5.4' into 5.5

2 years agoMerge pull request #4908 from WoltLab/upgrade-override-success
Tim Düsterhus [Wed, 20 Jul 2022 10:54:50 +0000 (12:54 +0200)]
Merge pull request #4908 from WoltLab/upgrade-override-success

Add explicit “success” message to PackageEnableUpgradeOverrideForm

2 years agoImprove wording for success message in PackageEnableUpgradeOverrideForm
Tim Düsterhus [Wed, 20 Jul 2022 10:50:39 +0000 (12:50 +0200)]
Improve wording for success message in PackageEnableUpgradeOverrideForm

Co-authored-by: Alexander Ebert <ebert@woltlab.com>
2 years agoAdd explicit “success” message to PackageEnableUpgradeOverrideForm
Tim Düsterhus [Wed, 20 Jul 2022 07:59:59 +0000 (09:59 +0200)]
Add explicit “success” message to PackageEnableUpgradeOverrideForm

2 years agoMerge branch '5.5'
Tim Düsterhus [Wed, 20 Jul 2022 07:38:21 +0000 (09:38 +0200)]
Merge branch '5.5'

2 years agoUpdating minified JavaScript files
WoltLab [Wed, 20 Jul 2022 07:37:17 +0000 (07:37 +0000)]
Updating minified JavaScript files

2 years agoMerge branch '5.4' into 5.5
Tim Düsterhus [Wed, 20 Jul 2022 07:35:29 +0000 (09:35 +0200)]
Merge branch '5.4' into 5.5

2 years agoMerge branch '5.4' into 5.5
Tim Düsterhus [Wed, 20 Jul 2022 07:33:16 +0000 (09:33 +0200)]
Merge branch '5.4' into 5.5

2 years agoUpdating minified JavaScript files
WoltLab [Wed, 20 Jul 2022 07:30:22 +0000 (07:30 +0000)]
Updating minified JavaScript files

2 years agoUpdate npm dependencies in extra/
Tim Düsterhus [Wed, 20 Jul 2022 07:26:10 +0000 (09:26 +0200)]
Update npm dependencies in extra/

2 years agoMerge branch '5.5'
Tim Düsterhus [Wed, 20 Jul 2022 07:20:17 +0000 (09:20 +0200)]
Merge branch '5.5'

2 years agoRelease 5.5.3 dev 2 5.5.3_dev_2
Alexander Ebert [Tue, 19 Jul 2022 14:30:02 +0000 (16:30 +0200)]
Release 5.5.3 dev 2

2 years agoUpdating minified JavaScript files
WoltLab [Tue, 19 Jul 2022 14:21:11 +0000 (14:21 +0000)]
Updating minified JavaScript files

2 years agoRestore the selection after closing a dialog
Alexander Ebert [Tue, 19 Jul 2022 13:34:26 +0000 (15:34 +0200)]
Restore the selection after closing a dialog

Attempting to restore it too early will cause the focus trap in Safari to move the selection immediately back.

See https://www.woltlab.com/community/thread/296469-beitragserstellung-bilder-werden-nicht-an-der-gew%C3%BCnschten-stelle-eingef%C3%BCgt/

2 years agoWait for `markAllAsRead` before updating the UI
Alexander Ebert [Tue, 19 Jul 2022 11:02:09 +0000 (13:02 +0200)]
Wait for `markAllAsRead` before updating the UI

The number of unread items relies on an internal counter that is updated based on the server-side value of the `markAllAsRead` action.

Not waiting for the action to complete will cause the UI to become out-of-sync. Notably the unread indicator of the mobile UI tab relies on the internal counter that is updated at a later stage.

See https://www.woltlab.com/community/thread/296509-mobiles-kontrollzentrum-icon-bleibt/

2 years agoMove the focus into the first input field in dialogs
Alexander Ebert [Tue, 19 Jul 2022 10:26:06 +0000 (12:26 +0200)]
Move the focus into the first input field in dialogs

2 years agoFix TypeScript code style
Tim Düsterhus [Tue, 19 Jul 2022 09:30:21 +0000 (11:30 +0200)]
Fix TypeScript code style

2 years agoFix querying possible update versions in PackageUpdateDispatcher::getAvailableUpdates()
Tim Düsterhus [Tue, 19 Jul 2022 09:04:00 +0000 (11:04 +0200)]
Fix querying possible update versions in PackageUpdateDispatcher::getAvailableUpdates()

The previous `LEFT JOIN` might return `packageVersion = NULL` if a package
server does not have any accessible versions for an installed package,
ultimately erroring out in PHP 8.1, because `NULL` is passed to a `string`
parameter.

see https://www.woltlab.com/community/thread/296513-passing-null-to-parameter-3-subject-of-type-array-string-is-deprecated/

2 years agoFix the color of the search icon in the mobile header
Alexander Ebert [Mon, 18 Jul 2022 16:25:27 +0000 (18:25 +0200)]
Fix the color of the search icon in the mobile header

See https://www.woltlab.com/community/thread/296499-mobiles-men%C3%BC-mit-falschen-farbzuweisungen/

2 years agoFix javascript error when viewing polls as a guest
Marcel Werk [Mon, 18 Jul 2022 15:01:05 +0000 (17:01 +0200)]
Fix javascript error when viewing polls as a guest

The view mistakenly assumed that the button for showing the results was always present. This caused a javascript error for guests or for users who could only see the result.

2 years agoFix the enable/disable option for styles
Alexander Ebert [Mon, 18 Jul 2022 11:12:58 +0000 (13:12 +0200)]
Fix the enable/disable option for styles

Clicks to toggle the style are only recognized on the icon which is not visible on mobile devices. Forward clicks on the link to the icon in these cases.

See https://www.woltlab.com/community/thread/296437-stile-lassen-sich-mobil-nicht-deaktivieren/

2 years agoRevert "Replace use of a PHP 8+ feature"
Tim Düsterhus [Mon, 18 Jul 2022 10:31:11 +0000 (12:31 +0200)]
Revert "Replace use of a PHP 8+ feature"

The minimum version is PHP 8.1 for this branch.

This reverts commit c70a77e262ed65c0d92cc3ecb0e1cb1967d5b74d.

2 years agoMerge branch '5.5'
Tim Düsterhus [Mon, 18 Jul 2022 10:31:02 +0000 (12:31 +0200)]
Merge branch '5.5'

2 years agoReplace use of a PHP 8+ feature
Alexander Ebert [Mon, 18 Jul 2022 10:20:11 +0000 (12:20 +0200)]
Replace use of a PHP 8+ feature

`DOMElement::$childElementCount` is supported in PHP 8.0+ only, for PHP 7 we need to manually check for child elements.

See https://www.woltlab.com/community/thread/296485-zitat-von-user-nochmal-zitieren/

2 years agoMerge branch '5.5' of https://github.com/WoltLab/WCF into 5.5
Marcel Werk [Fri, 15 Jul 2022 13:35:03 +0000 (15:35 +0200)]
Merge branch '5.5' of https://github.com/WoltLab/WCF into 5.5

2 years agoFix missing cache reset after deleting custom language variables
Marcel Werk [Fri, 15 Jul 2022 13:35:01 +0000 (15:35 +0200)]
Fix missing cache reset after deleting custom language variables

2 years agoRelease 5.5.3 dev 1 5.5.3_dev_1
Alexander Ebert [Fri, 15 Jul 2022 13:01:05 +0000 (15:01 +0200)]
Release 5.5.3 dev 1

2 years agoUpdating minified JavaScript files
WoltLab [Fri, 15 Jul 2022 12:46:31 +0000 (12:46 +0000)]
Updating minified JavaScript files

2 years agoMerge branch '5.5'
Tim Düsterhus [Fri, 15 Jul 2022 11:37:56 +0000 (13:37 +0200)]
Merge branch '5.5'

2 years agoRemove the redundant `role="article"` attribute on `<article>`
Alexander Ebert [Fri, 15 Jul 2022 11:20:31 +0000 (13:20 +0200)]
Remove the redundant `role="article"` attribute on `<article>`

Fixes #4905