GitHub/WoltLab/WCF.git
3 years agoPage title could not be renamed via page management
Marcel Werk [Wed, 30 Sep 2020 14:09:23 +0000 (16:09 +0200)]
Page title could not be renamed via page management

3 years agoFixed broken autofocus in login form
Marcel Werk [Wed, 30 Sep 2020 12:51:54 +0000 (14:51 +0200)]
Fixed broken autofocus in login form

3 years agoFix (non)empty dependency for radiobuttons
Matthias Schmidt [Tue, 29 Sep 2020 14:07:57 +0000 (16:07 +0200)]
Fix (non)empty dependency for radiobuttons

3 years agoShow always an no selection option in custom select options build with the OptionHandler
joshuaruesweg [Mon, 28 Sep 2020 14:56:10 +0000 (16:56 +0200)]
Show always an no selection option in custom select options build with the OptionHandler
Fixes #3579

3 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Mon, 28 Sep 2020 14:48:26 +0000 (16:48 +0200)]
Merge branch '3.1' into 5.2

3 years agoIncorrect link to the user edit form
Alexander Ebert [Mon, 28 Sep 2020 14:48:13 +0000 (16:48 +0200)]
Incorrect link to the user edit form

3 years agoMerge pull request #3577 from WoltLab/filereader-range
Tim Düsterhus [Mon, 28 Sep 2020 09:32:57 +0000 (11:32 +0200)]
Merge pull request #3577 from WoltLab/filereader-range

Disable 'Range' handling for 0-byte files in FileReader

3 years agoDisable 'Range' handling for 0-byte files in FileReader
Tim Düsterhus [Mon, 28 Sep 2020 08:50:36 +0000 (10:50 +0200)]
Disable 'Range' handling for 0-byte files in FileReader

see https://community.woltlab.com/thread/285960-download-eines-leeren-textdokuments-gibt-http-error-416-aus/

3 years agoAdd missing language variables
joshuaruesweg [Sun, 27 Sep 2020 11:35:02 +0000 (13:35 +0200)]
Add missing language variables

3 years agoUpdating minified JavaScript files
woltlab.com [Wed, 23 Sep 2020 16:31:37 +0000 (16:31 +0000)]
Updating minified JavaScript files

3 years agoIncreased the z-index of the reaction popover
Alexander Ebert [Tue, 22 Sep 2020 11:34:16 +0000 (13:34 +0200)]
Increased the z-index of the reaction popover

This prevents the reactions from being overlapped by an adjacent tab menu on mobile devices.

3 years agoDo not block the installation of not yet installed projects
Alexander Ebert [Tue, 22 Sep 2020 11:28:12 +0000 (13:28 +0200)]
Do not block the installation of not yet installed projects

Fixes #3572

This commit rectifies the change in d70a577df3662d168612e40035a4237c19bed5b0

3 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Mon, 21 Sep 2020 10:06:00 +0000 (12:06 +0200)]
Merge branch '3.1' into 5.2

3 years agoPrevent data being pasted twice in Chromium on Android
Alexander Ebert [Mon, 21 Sep 2020 10:05:45 +0000 (12:05 +0200)]
Prevent data being pasted twice in Chromium on Android

3 years agoUse the `selectionchange` event to suppress the selection of the quote tooltip
Alexander Ebert [Sun, 20 Sep 2020 14:08:39 +0000 (16:08 +0200)]
Use the `selectionchange` event to suppress the selection of the quote tooltip

3 years agoPrevent the read access to devtools projects without a valid path
Alexander Ebert [Sun, 20 Sep 2020 10:25:30 +0000 (12:25 +0200)]
Prevent the read access to devtools projects without a valid path

3 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Fri, 18 Sep 2020 15:03:31 +0000 (17:03 +0200)]
Merge branch '3.1' into 5.2

3 years agoMissing link target causes buttons to be unresponsive in some touch browers
Alexander Ebert [Fri, 18 Sep 2020 15:02:47 +0000 (17:02 +0200)]
Missing link target causes buttons to be unresponsive in some touch browers

3 years agoUse consistent hostname in description of mail_smtp_host
Tim Düsterhus [Wed, 16 Sep 2020 13:48:16 +0000 (15:48 +0200)]
Use consistent hostname in description of mail_smtp_host

3 years agoFix typo in error message in MultipleSelectionFormField
Tim Düsterhus [Mon, 14 Sep 2020 18:36:48 +0000 (20:36 +0200)]
Fix typo in error message in MultipleSelectionFormField

3 years agoFix PHP 8 compatibility in GDImageAdapter (#3558)
Sascha Greuel [Wed, 9 Sep 2020 08:03:04 +0000 (10:03 +0200)]
Fix PHP 8 compatibility in GDImageAdapter (#3558)

Fixed image resource validation

Resolves #3492

3 years agoFix PHP 8 compatibility in HTTPRequest (#3557)
Sascha Greuel [Wed, 9 Sep 2020 08:01:20 +0000 (10:01 +0200)]
Fix PHP 8 compatibility in HTTPRequest (#3557)

Fixed PHP8 related error message (Argument #1 ($arg) must be passed by reference, value given)

Closes #3554

3 years agoFixed icon alignment in the "login with google" button
Marcel Werk [Tue, 8 Sep 2020 09:53:37 +0000 (11:53 +0200)]
Fixed icon alignment in the "login with google" button

3 years agoMerge branch '3.1' into 5.2
Tim Düsterhus [Tue, 8 Sep 2020 08:54:51 +0000 (10:54 +0200)]
Merge branch '3.1' into 5.2

3 years agoPrevent Android from collapsing the keyboard on [Enter]
Tim Düsterhus [Tue, 8 Sep 2020 07:43:31 +0000 (09:43 +0200)]
Prevent Android from collapsing the keyboard on [Enter]

Somehow the linkify redactor plugin causes Android to collapse the on-screen
keyboard if a new line is entered.

This plugin was already removed for 5.2 in commit 19af26fc22bc31d699db6021dee2eda1d23b8a14,
so let's effectively disable it for 3.1 as well.

see https://community.woltlab.com/thread/285573-wsc-3-1-17-smartphone-tastatur-schlie%C3%9Ft-sich-unbeabsichtigt/?postID=1816848#post1816848

4 years agoFix changing monolingual to multilingual package data via devtools
Matthias Schmidt [Thu, 3 Sep 2020 14:46:14 +0000 (16:46 +0200)]
Fix changing monolingual to multilingual package data via devtools

Close #3550

4 years agoFix typo in German language item
Matthias Schmidt [Thu, 3 Sep 2020 14:41:30 +0000 (16:41 +0200)]
Fix typo in German language item

4 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Wed, 2 Sep 2020 13:49:40 +0000 (15:49 +0200)]
Merge branch '3.1' into 5.2

4 years agoIncorrect calculation of the last 2 digits of the year
Alexander Ebert [Wed, 2 Sep 2020 13:47:34 +0000 (15:47 +0200)]
Incorrect calculation of the last 2 digits of the year

Fixes #3547

4 years agoMerge pull request #3548 from WoltLab/acp-headContent
Marcel Werk [Wed, 2 Sep 2020 09:51:05 +0000 (11:51 +0200)]
Merge pull request #3548 from WoltLab/acp-headContent

Add `$headContent` placeholder variable to header.tpl in ACP

4 years agoAdd `$headContent` placeholder variable to header.tpl in ACP
Tim Düsterhus [Wed, 2 Sep 2020 09:46:56 +0000 (11:46 +0200)]
Add `$headContent` placeholder variable to header.tpl in ACP

This allows the developer to easily add page specific `<style>` tags in
the appropriate location.

4 years agoRelease 5.2.9 5.2.9
Alexander Ebert [Fri, 28 Aug 2020 13:27:09 +0000 (15:27 +0200)]
Release 5.2.9

4 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Fri, 28 Aug 2020 13:15:59 +0000 (15:15 +0200)]
Merge branch '3.1' into 5.2

4 years agoRelease 3.1.17 3.1.17
Alexander Ebert [Fri, 28 Aug 2020 11:09:35 +0000 (13:09 +0200)]
Release 3.1.17

4 years agoRevert "Fix deprecation warnings in form builder in PHP 8"
Tim Düsterhus [Thu, 27 Aug 2020 10:21:00 +0000 (12:21 +0200)]
Revert "Fix deprecation warnings in form builder in PHP 8"

This reverts commit 5ae5d6c5621c8fe1f30d6a2c787024b9bcadee87.

As commented on the original commit this change is not compatible with PHP
7.0 which is the lowest PHP version we support as of right now. Revert
this commit for now to not break compatibility with existing installations
of 5.2 until a proper solution for 5.3 and later is developed.

See #3489.

4 years ago`http_build_query()` is now allowed for calls from within a template
Alexander Ebert [Wed, 26 Aug 2020 17:05:45 +0000 (19:05 +0200)]
`http_build_query()` is now allowed for calls from within a template

4 years agoFix notifications with are triggered by merged users
joshuaruesweg [Wed, 26 Aug 2020 16:51:12 +0000 (18:51 +0200)]
Fix notifications with are triggered by merged users
Objects of merged users are rewritten to the new user. This is currently done but not by the notification authors. There the author is simply deleted from the notification. This works for most notifications, but not for reactions, because they always expect a concrete author (a guest cannot assign reactions). If users are deleted, it works as intended, since the corresponding reaction object is then also deleted.

4 years agoRelease 5.2.9
Alexander Ebert [Wed, 26 Aug 2020 15:57:54 +0000 (17:57 +0200)]
Release 5.2.9

4 years agoUpdating minified JavaScript files
woltlab.com [Wed, 26 Aug 2020 13:37:07 +0000 (13:37 +0000)]
Updating minified JavaScript files

4 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Wed, 26 Aug 2020 13:34:52 +0000 (15:34 +0200)]
Merge branch '3.1' into 5.2

4 years agoUpdating minified JavaScript files
woltlab.com [Wed, 26 Aug 2020 13:29:47 +0000 (13:29 +0000)]
Updating minified JavaScript files

4 years agoMerge branch '3.1'
joshuaruesweg [Sat, 22 Aug 2020 14:29:45 +0000 (16:29 +0200)]
Merge branch '3.1'

4 years agoRemove fullscreen mode in template diff
joshuaruesweg [Sat, 22 Aug 2020 14:26:44 +0000 (16:26 +0200)]
Remove fullscreen mode in template diff
The fullscreen mode does not have any advantage at this point because the diff is also displayed with a height of 700px (just like without fullscreen mode).

4 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Sat, 22 Aug 2020 13:36:25 +0000 (15:36 +0200)]
Merge branch '3.1' into 5.2

4 years agoImproved visuals of the fullscreen template comparison
Alexander Ebert [Sat, 22 Aug 2020 13:35:42 +0000 (15:35 +0200)]
Improved visuals of the fullscreen template comparison

Fixes #3473

4 years agoMerge branch '3.1' into 5.2
joshuaruesweg [Sat, 22 Aug 2020 12:22:50 +0000 (14:22 +0200)]
Merge branch '3.1' into 5.2

4 years agoFix trophy icon size in badges on groupedUserTrophyList
joshuaruesweg [Sat, 22 Aug 2020 12:22:21 +0000 (14:22 +0200)]
Fix trophy icon size in badges on groupedUserTrophyList

4 years agoDuplicate `<br>` inserted on paste
Alexander Ebert [Sat, 22 Aug 2020 11:11:15 +0000 (13:11 +0200)]
Duplicate `<br>` inserted on paste

Fixes #3454

4 years agoWorkaround for Safari when removing the text formatting with a collapsed selection
Alexander Ebert [Fri, 21 Aug 2020 22:14:40 +0000 (00:14 +0200)]
Workaround for Safari when removing the text formatting with a collapsed selection

4 years agoMerge branch '3.1' into 5.2
Marcel Werk [Fri, 21 Aug 2020 15:44:30 +0000 (17:44 +0200)]
Merge branch '3.1' into 5.2

4 years agoAdjusted appearance of the "sign in with google" button
Marcel Werk [Fri, 21 Aug 2020 15:42:29 +0000 (17:42 +0200)]
Adjusted appearance of the "sign in with google" button

4 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Fri, 21 Aug 2020 11:43:23 +0000 (13:43 +0200)]
Merge branch '3.1' into 5.2

4 years agoReopened dialogs were hidden behind new dialogs
Alexander Ebert [Fri, 21 Aug 2020 11:43:04 +0000 (13:43 +0200)]
Reopened dialogs were hidden behind new dialogs

4 years agoIncorrect blacklisting of `register_activation_method`
Alexander Ebert [Fri, 21 Aug 2020 11:24:46 +0000 (13:24 +0200)]
Incorrect blacklisting of `register_activation_method`

4 years agoPrevent the focus being trapped if the user intentionally clicks outside
Alexander Ebert [Thu, 20 Aug 2020 22:28:22 +0000 (00:28 +0200)]
Prevent the focus being trapped if the user intentionally clicks outside

Clicking on a link or button outside of the overlay caused the browser to close the drop-down and shift the focus on the menu element.

4 years agoMerge pull request #3525 from WoltLab/rich-metacode-in-quick-reply
Alexander Ebert [Thu, 20 Aug 2020 09:52:30 +0000 (11:52 +0200)]
Merge pull request #3525 from WoltLab/rich-metacode-in-quick-reply

Prevent rich metacode being dysfunctional in new messages

4 years agoMerge pull request #3523 from WoltLab/dropdown-scrollbar-large-tablets-fix
Alexander Ebert [Wed, 19 Aug 2020 22:50:13 +0000 (00:50 +0200)]
Merge pull request #3523 from WoltLab/dropdown-scrollbar-large-tablets-fix

Fix the scrollbar for dropdowns on large tablets

4 years agoPrevent rich metacode being dysfunctional in messages just created by replying
Alexander Ebert [Wed, 19 Aug 2020 17:26:11 +0000 (19:26 +0200)]
Prevent rich metacode being dysfunctional in messages just created by replying

The `isset` strategy does not work properly, because in some cases the HTML is evaluated before being placed in the final template, causing the variable to be set already.

This changes modifies the behavior to always attempt to initialize the JavaScript, but made changes to ensure that each subsequent call is idempotent.

4 years agoFix the scrollbar for dropdowns on large tablets
joshuaruesweg [Wed, 19 Aug 2020 13:32:27 +0000 (15:32 +0200)]
Fix the scrollbar for dropdowns on large tablets
Because tablets are not the platform "desktop", the scrollbar is not shown for tablets, even though they are rendered with desktop view.
Fixes #3522

4 years agoDisable the search for updates buttons while active
Alexander Ebert [Wed, 19 Aug 2020 08:40:47 +0000 (10:40 +0200)]
Disable the search for updates buttons while active

4 years agoMerge pull request #3521 from Krymonota/patch-13
Joshua Rüsweg [Tue, 18 Aug 2020 17:22:02 +0000 (19:22 +0200)]
Merge pull request #3521 from Krymonota/patch-13

Remove redundant `implements IWorker`

4 years agoRemove redundant `implements IWorker`
Niklas [Tue, 18 Aug 2020 17:14:12 +0000 (19:14 +0200)]
Remove redundant `implements IWorker`

4 years agoFix deprecation warnings in form builder in PHP 8
Matthias Schmidt [Sat, 15 Aug 2020 12:46:51 +0000 (14:46 +0200)]
Fix deprecation warnings in form builder in PHP 8

Close #3489

4 years agoUpdating minified JavaScript files
woltlab.com [Mon, 17 Aug 2020 10:29:28 +0000 (10:29 +0000)]
Updating minified JavaScript files

4 years agoPrefer longer group names for mentions
Alexander Ebert [Sat, 15 Aug 2020 17:35:58 +0000 (19:35 +0200)]
Prefer longer group names for mentions

4 years agoSkip display-name of Mailbox if display-name == addr-spec
Tim Düsterhus [Fri, 14 Aug 2020 10:22:16 +0000 (12:22 +0200)]
Skip display-name of Mailbox if display-name == addr-spec

If the human readable $name of a Mailbox matches the $address then leave
out the $name within the header representation and specify a bare email
address. The name is redundant in cases like this and this might lead to
negative spam scoring.

4 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Thu, 13 Aug 2020 11:31:37 +0000 (13:31 +0200)]
Merge branch '3.1' into 5.2

4 years agoMerge pull request #3500 from Krymonota/patch-12
Alexander Ebert [Thu, 13 Aug 2020 11:31:16 +0000 (13:31 +0200)]
Merge pull request #3500 from Krymonota/patch-12

Add missing phrases to English 3rd party register language items

4 years agoFix resizing images in Safari
joshuaruesweg [Thu, 13 Aug 2020 07:44:48 +0000 (09:44 +0200)]
Fix resizing images in Safari
Fixes #3506

4 years agoMerge branch '3.1' into 5.2
Marcel Werk [Wed, 12 Aug 2020 16:22:56 +0000 (18:22 +0200)]
Merge branch '3.1' into 5.2

4 years agoPrevent username overflow in the message sidebar
Marcel Werk [Wed, 12 Aug 2020 16:22:37 +0000 (18:22 +0200)]
Prevent username overflow in the message sidebar

4 years agoMerge branch '3.1' into 5.2
Marcel Werk [Wed, 12 Aug 2020 15:51:54 +0000 (17:51 +0200)]
Merge branch '3.1' into 5.2

4 years agoPrevent changes to the showOrder setting of system boxes during an update
Marcel Werk [Wed, 12 Aug 2020 15:51:25 +0000 (17:51 +0200)]
Prevent changes to the showOrder setting of system boxes during an update

4 years agoMerge branch '3.1' into 5.2
Marcel Werk [Wed, 12 Aug 2020 15:47:22 +0000 (17:47 +0200)]
Merge branch '3.1' into 5.2

4 years agoPrevent changes to the visibility settings of system boxes during an update/upgrade
Alexander Ebert [Wed, 29 Jan 2020 13:38:56 +0000 (14:38 +0100)]
Prevent changes to the visibility settings of system boxes during an update/upgrade

4 years agoMerge pull request #3502 from Krymonota/timing-safe-comparison-social-login
Tim Düsterhus [Wed, 12 Aug 2020 14:13:05 +0000 (16:13 +0200)]
Merge pull request #3502 from Krymonota/timing-safe-comparison-social-login

Use timing safe comparison to validate `state` parameter for social login

4 years agoFix type of `options` parameter in HTTPRequest PHPDoc (#3504)
Niklas [Wed, 12 Aug 2020 14:08:29 +0000 (16:08 +0200)]
Fix type of `options` parameter in HTTPRequest PHPDoc (#3504)

4 years agoUse timing safe comparison to validate `state` parameter for social login
Niklas (Krymonota) [Wed, 12 Aug 2020 13:59:26 +0000 (15:59 +0200)]
Use timing safe comparison to validate `state` parameter for social login

The Twitter social login is left out because the implementation still uses OAuth 1.0, which does not support the `state` parameter.

Closes #3501

4 years agoAdd missing phrases to English 3rd party register language items
Niklas [Tue, 11 Aug 2020 16:16:41 +0000 (18:16 +0200)]
Add missing phrases to English 3rd party register language items

4 years agoMerge pull request #3499 from WoltLab/5.2-like-rebuild-data-fix
Joshua Rüsweg [Tue, 11 Aug 2020 09:32:34 +0000 (11:32 +0200)]
Merge pull request #3499 from WoltLab/5.2-like-rebuild-data-fix

Fix calculation the cached reactions

4 years agoUse proper placeholders for fetching the reactions
joshuaruesweg [Mon, 10 Aug 2020 16:36:49 +0000 (18:36 +0200)]
Use proper placeholders for fetching the reactions

4 years agoFix calculation the cached reactions
joshuaruesweg [Mon, 10 Aug 2020 15:57:26 +0000 (17:57 +0200)]
Fix calculation the cached reactions

4 years agoMerge pull request #3498 from WoltLab/dbo-action-php-8
Tim Düsterhus [Mon, 10 Aug 2020 15:19:21 +0000 (17:19 +0200)]
Merge pull request #3498 from WoltLab/dbo-action-php-8

Fix bogus call to `call_user_func_array` in AbstractDBOAction::validateAction()

4 years agoFix bogus call to `call_user_func_array` in AbstractDBOAction::validateAction()
Tim Düsterhus [Mon, 10 Aug 2020 14:16:37 +0000 (16:16 +0200)]
Fix bogus call to `call_user_func_array` in AbstractDBOAction::validateAction()

Fixes #3490

4 years agoRemove superfluous `array_unique` call
joshuaruesweg [Fri, 7 Aug 2020 13:43:27 +0000 (15:43 +0200)]
Remove superfluous `array_unique` call
No double value can occur in the array. When deleting, we already check if the object still exists in our file array and delete it only if it really still exists.

4 years agoFix return value of sort callback in TemplateListPage
Tim Düsterhus [Fri, 7 Aug 2020 09:56:58 +0000 (11:56 +0200)]
Fix return value of sort callback in TemplateListPage

Found using PHP 8's new warning:

> Message: uasort(): Returning bool from comparison function is deprecated,
> return an integer less than, equal to, or greater than zero

4 years agoFix PHP 8 compatibility for WCFSetup's error handler
Tim Düsterhus [Fri, 7 Aug 2020 09:31:45 +0000 (11:31 +0200)]
Fix PHP 8 compatibility for WCFSetup's error handler

see 0267fa9af7e18aa6449726f748e672cdac192d12

4 years agoAdded missing informal variant
Marcel Werk [Thu, 6 Aug 2020 14:25:45 +0000 (16:25 +0200)]
Added missing informal variant

4 years agoMerge pull request #3466 from Sir-Will/patch-1
Marcel Werk [Wed, 5 Aug 2020 16:49:12 +0000 (18:49 +0200)]
Merge pull request #3466 from Sir-Will/patch-1

Fixes exception when not using primary PayPal email

4 years agoMerge branch '3.1' into 5.2
Tim Düsterhus [Wed, 5 Aug 2020 14:21:45 +0000 (16:21 +0200)]
Merge branch '3.1' into 5.2

4 years agoFix PHP 5.5 compatibility
Tim Düsterhus [Wed, 5 Aug 2020 14:17:16 +0000 (16:17 +0200)]
Fix PHP 5.5 compatibility

see b044815dd9b6509fc44219684d7076cd28a80aa6
see #3480

4 years agoVerify if business argument is set in PayPal callback
Sir-Will [Wed, 5 Aug 2020 13:51:26 +0000 (15:51 +0200)]
Verify if business argument is set in PayPal callback

4 years agoFix handling of hidden form field values via AJAX
Matthias Schmidt [Wed, 5 Aug 2020 13:48:58 +0000 (15:48 +0200)]
Fix handling of hidden form field values via AJAX

See #3053

4 years agoMerge branch '3.1' into 5.2
Alexander Ebert [Wed, 5 Aug 2020 10:57:22 +0000 (12:57 +0200)]
Merge branch '3.1' into 5.2

4 years agoMerge pull request #3462 from SoftCreatR/patch-14
Alexander Ebert [Wed, 5 Aug 2020 10:56:18 +0000 (12:56 +0200)]
Merge pull request #3462 from SoftCreatR/patch-14

Add detection for Chromium based Edge browser

4 years agoMerge pull request #3471 from WoltLab/disable-spider-visit-tracking
Alexander Ebert [Wed, 5 Aug 2020 10:51:35 +0000 (12:51 +0200)]
Merge pull request #3471 from WoltLab/disable-spider-visit-tracking

Disable visit tracking for search engines

4 years agoMerge branch '3.1' into 5.2
Tim Düsterhus [Wed, 5 Aug 2020 10:06:26 +0000 (12:06 +0200)]
Merge branch '3.1' into 5.2

4 years agoDo not decrement wcf1_user.articles when deleting unpublished articles
Tim Düsterhus [Wed, 5 Aug 2020 10:05:08 +0000 (12:05 +0200)]
Do not decrement wcf1_user.articles when deleting unpublished articles

see b044815dd9b6509fc44219684d7076cd28a80aa6
see #3480

4 years agoMerge branch '3.1' into 5.2
Tim Düsterhus [Wed, 5 Aug 2020 09:59:38 +0000 (11:59 +0200)]
Merge branch '3.1' into 5.2

4 years agoUpdate wcf1_user.articles when deleting articles
Tim Düsterhus [Wed, 5 Aug 2020 09:58:13 +0000 (11:58 +0200)]
Update wcf1_user.articles when deleting articles

Fixes #3480