Tim Düsterhus [Tue, 5 Jul 2022 13:43:23 +0000 (15:43 +0200)]
Merge pull request #4897 from WoltLab/user-option-output-null
Explicitly handle a `null` value in UserOptionOutput
Tim Düsterhus [Tue, 5 Jul 2022 13:35:08 +0000 (15:35 +0200)]
Explicitly handle a `null` value in UserOptionOutput
userOptions are commonly nullable, because no default value can be defined for
the `TEXT` column type family.
`null` needs to be handled explicitly, because PHP 8.1 deprecated passing
`null` to non-nullable string parameters of native functions. As an example
without this change, `null` could be passed to `StringUtil::trim()` in
`MessageUserOptioNOutput` which in turn passes it to `preg_replace()`.
Tim Düsterhus [Tue, 5 Jul 2022 12:39:03 +0000 (14:39 +0200)]
Update composer dependencies
Tim Düsterhus [Tue, 5 Jul 2022 11:28:08 +0000 (13:28 +0200)]
Merge branch '5.4' into 5.5
Tim Düsterhus [Tue, 5 Jul 2022 11:27:48 +0000 (13:27 +0200)]
Merge branch '5.3' into 5.4
Tim Düsterhus [Tue, 5 Jul 2022 11:25:39 +0000 (13:25 +0200)]
Merge pull request #4896 from WoltLab/abstract-category-edit-check-type
Verify that the category's objectType matches the form's objectType in AbstractCategoryEditForm
Tim Düsterhus [Tue, 5 Jul 2022 11:25:22 +0000 (13:25 +0200)]
Merge pull request #4895 from WoltLab/abstract-ajax-action
Make AbstractAjaxAction actually abstract
Tim Düsterhus [Tue, 5 Jul 2022 11:25:14 +0000 (13:25 +0200)]
Merge pull request #4894 from WoltLab/abstract-category-edit
Make AbstractCategoryEditForm actually abstract
Tim Düsterhus [Tue, 5 Jul 2022 11:25:01 +0000 (13:25 +0200)]
Merge pull request #4893 from WoltLab/tabmenu-select-invalid-container
Select the first erroneous tab in a form if multiple are erroneous
Tim Düsterhus [Tue, 5 Jul 2022 09:05:42 +0000 (11:05 +0200)]
Make AbstractAjaxAction actually abstract
Without a controller that inherits from it, the AbstractAjaxAction will do
absolutely nothing useful:
- It fires events that cannot usefully be handled in a generic way.
- It sends an empty HTML response (i.e. a white page).
Tim Düsterhus [Tue, 5 Jul 2022 09:02:19 +0000 (11:02 +0200)]
Improve type of exception for invalid object types in AbstractCategoryAddForm
This technically is a BC break, but this exception must not be caught anyway as
it indicates a clear programming error.
Tim Düsterhus [Mon, 27 Jun 2022 14:03:31 +0000 (16:03 +0200)]
Make AbstractCategoryEditForm actually abstract
This form is not functional, unless an objectType is defined in a child class.
Tim Düsterhus [Tue, 5 Jul 2022 08:37:50 +0000 (10:37 +0200)]
Handle invalid `<textarea>` elements when submitting a form within a TabMenu
Tim Düsterhus [Tue, 5 Jul 2022 07:51:24 +0000 (09:51 +0200)]
Select the first erroneous tab in a form if multiple are erroneous
This was incorrectly migrated to TypeScript. Before TypeScript this used a
regular `for` loop counting indices, allowing the `return;` to correctly leave
the loop.
see https://www.woltlab.com/community/thread/296198-formbuilder-tabmenuformcontainer-required-js-fehler/
Tim Düsterhus [Tue, 5 Jul 2022 07:48:39 +0000 (09:48 +0200)]
Add `DOM.Iterable` to tsconfig.json's `lib` list
This makes `NodeList`, `FormData` et al iterable. This is part of ES 2015 and
thus can be used.
Tim Düsterhus [Mon, 4 Jul 2022 15:06:02 +0000 (17:06 +0200)]
Merge remote-tracking branch 'origin/5.5' into 5.5
Tim Düsterhus [Mon, 4 Jul 2022 15:05:48 +0000 (17:05 +0200)]
Merge branch '5.4' into 5.5
Tim Düsterhus [Mon, 4 Jul 2022 15:05:13 +0000 (17:05 +0200)]
Merge pull request #4891 from WoltLab/fetch-template-plugin
Deprecate the `{fetch}` template plugin
Tim Düsterhus [Mon, 4 Jul 2022 14:27:39 +0000 (16:27 +0200)]
Deprecate the `{fetch}` template plugin
Alexander Ebert [Mon, 4 Jul 2022 14:45:04 +0000 (16:45 +0200)]
Add support for hover color in the user menu
See https://www.woltlab.com/community/thread/296209-wcfusermenulinkactive-fehlt/
Tim Düsterhus [Mon, 4 Jul 2022 14:11:58 +0000 (16:11 +0200)]
Merge branch '5.4' into 5.5
Tim Düsterhus [Mon, 4 Jul 2022 14:10:48 +0000 (16:10 +0200)]
Merge pull request #4890 from WoltLab/upgrade-override-always-disable
Always allow disabling the upgrade override if enabled
Tim Düsterhus [Mon, 4 Jul 2022 14:08:34 +0000 (16:08 +0200)]
Verify that the category's objectType matches the form's objectType in AbstractCategoryEditForm
Alexander Ebert [Mon, 4 Jul 2022 13:18:13 +0000 (15:18 +0200)]
Keep the unread indicator of user menu tabs in sync
See https://www.woltlab.com/community/thread/295243-pro-und-kontra-neues-kontrollzentrum/?postID=
1897875#post1897875
Alexander Ebert [Mon, 4 Jul 2022 13:17:43 +0000 (15:17 +0200)]
Always show the unread indicator of user menu tabs
Tim Düsterhus [Mon, 4 Jul 2022 12:39:49 +0000 (14:39 +0200)]
Always allow disabling the upgrade override if enabled
Previously the following might happen:
- A community is running 5.3.
- They enable the upgrade override and upgrade to 5.4.
- They are offered the upgrade to 5.5, but don't want to do that, yet.
- They access the PackageEnableUpgradeOverrideForm to disable the upgrade.
- It complains that the search index was not yet migrated to InnoDB, preventing
the disabling of the upgrade.
Alexander Ebert [Mon, 4 Jul 2022 11:50:56 +0000 (13:50 +0200)]
Apply the special box styling to the title
See https://www.woltlab.com/community/thread/296149-styling-infoboxen/
Alexander Ebert [Mon, 4 Jul 2022 11:45:01 +0000 (13:45 +0200)]
Preselect the hex input of the color picker
See https://www.woltlab.com/community/thread/296153-farbw%C3%A4hler-ohne-fokus/
Tim Düsterhus [Mon, 4 Jul 2022 11:22:41 +0000 (13:22 +0200)]
Alexander Ebert [Mon, 4 Jul 2022 11:19:01 +0000 (13:19 +0200)]
Fix the inconsistent return value of notifications
The API returned a different data structure when there are no notifications to show compared to when there are items. This causes the JS-API to break, because it always expects the later data structure.
This is a regression of
ec1a4a80d3a8f89105d6012ec857a7115f41c97e
See https://www.woltlab.com/community/thread/296174-benachrichtigungen-werden-nicht-mehr-angezeigt/
Alexander Ebert [Mon, 4 Jul 2022 11:04:37 +0000 (13:04 +0200)]
Fix the unconditional access to an optional element
See https://www.woltlab.com/community/thread/296182-js-fehler-beim-scrollen-in-mobiler-ansicht/
Alexander Ebert [Mon, 4 Jul 2022 10:07:51 +0000 (12:07 +0200)]
Add a unique CSS class to the article page section
See #4887
Alexander Ebert [Mon, 4 Jul 2022 10:05:52 +0000 (12:05 +0200)]
Merge pull request #4889 from WoltLab/5.5-fix-delete-button-unknown-images
Fix delete button appears on failed uploads
Alexander Ebert [Mon, 4 Jul 2022 08:13:34 +0000 (10:13 +0200)]
Merge tag '5.5.0_RC_3' into 5.5
Marcel Werk [Sun, 3 Jul 2022 13:26:28 +0000 (15:26 +0200)]
Fix shrinking of content navigation buttons in desktop version
https://github.com/WoltLab/WCF/commit/
a3e4ab16d9a566149de88e2d4b649accc768f012 caused the text on the buttons to be severely shortened when the content title became too long.
joshuaruesweg [Sat, 2 Jul 2022 12:04:43 +0000 (14:04 +0200)]
Fix delete button appears on failed uploads
Alexander Ebert [Fri, 1 Jul 2022 15:40:31 +0000 (17:40 +0200)]
Release 5.5.0 RC 3
Alexander Ebert [Fri, 1 Jul 2022 15:40:31 +0000 (17:40 +0200)]
Internal release 5.5.0 RC 3
WoltLab [Fri, 1 Jul 2022 15:31:58 +0000 (15:31 +0000)]
Updating minified JavaScript files
Alexander Ebert [Fri, 1 Jul 2022 14:02:44 +0000 (16:02 +0200)]
Merge pull request #4886 from WoltLab/user-menu-incorrect-counter-update
Update the Unread Counter Using the Server-side Counter
Tim Düsterhus [Fri, 1 Jul 2022 11:52:26 +0000 (13:52 +0200)]
Update focus-trap and tabbable
Tim Düsterhus [Fri, 1 Jul 2022 11:49:20 +0000 (13:49 +0200)]
Merge branch '5.4' into 5.5
Tim Düsterhus [Fri, 1 Jul 2022 11:44:06 +0000 (13:44 +0200)]
Update typescript
see
41b5a7f4fcc27a2fd4434d2feedb10e942930d51. We specifically upgrade
typescript also in 5.4 to ease merges, because the output of const enum
changed.
Tim Düsterhus [Fri, 1 Jul 2022 09:44:29 +0000 (11:44 +0200)]
Update gsactions/commit-message-checker
Tim Düsterhus [Fri, 1 Jul 2022 09:33:18 +0000 (11:33 +0200)]
Update npm dependencies
Alexander Ebert [Thu, 30 Jun 2022 17:00:04 +0000 (19:00 +0200)]
Update the unread badge using the server-side data
Alexander Ebert [Thu, 30 Jun 2022 16:47:58 +0000 (18:47 +0200)]
Update the unread badge using the server-side data
The previous implementation relied on the number of unread items currently visible in the user menu. This caused an incorrect number shown for >10 unread items.
Notice: This is a last-minute API change to report the correct number from the server-side.
Fixes #4877
Alexander Ebert [Thu, 30 Jun 2022 15:28:18 +0000 (17:28 +0200)]
Preserve the content when removing selection markers
In some rare cases the typed-in content could be placed within the selection markers, causing those to be removed whenever markers are being stripped.
This is a follow up for
dd829b643d403f403fae8748a8f00e2e448af490 which already mitigates some of these issues by more carefully handling selections.
Alexander Ebert [Thu, 30 Jun 2022 14:30:19 +0000 (16:30 +0200)]
Merge pull request #4883 from WoltLab/main-menu-data-binding
Partial Data Binding for the Main Menu
Alexander Ebert [Thu, 30 Jun 2022 13:55:24 +0000 (15:55 +0200)]
Use the `null` value to indicate a missing identifier
Alexander Ebert [Wed, 29 Jun 2022 16:23:13 +0000 (18:23 +0200)]
Sync the unread counters of the main menu and the mobile menu
Alexander Ebert [Wed, 29 Jun 2022 15:32:48 +0000 (17:32 +0200)]
Expose the identifier of a menu item
Alexander Ebert [Wed, 29 Jun 2022 14:44:30 +0000 (16:44 +0200)]
Close the mobile navigation drop-down on page scroll
All drop-down menus are expected to close whenever the page is being scrolled. This is implemented for regular drop-down menus, but this one bypasses the general API.
See https://www.woltlab.com/community/thread/296092-fenster-zitieren-inhalt-melden-%C3%BCberlagert-men%C3%BC-mobil/
Alexander Ebert [Wed, 29 Jun 2022 13:47:47 +0000 (15:47 +0200)]
Delay the auto focus of the submit button
Safari delays the execution of the `blur` event on the document which causes the focus shift to happen too early.
Delaying it by two event cycles are enough to provide a consistent experience and to avoid conflicts with the focus trap.
See https://www.woltlab.com/community/thread/296069-best%C3%A4tigung-bei-installation-von-paket-%C3%BCber-entwickler-werkzeuge-nicht-direkt-pe/
Alexander Ebert [Wed, 29 Jun 2022 13:29:06 +0000 (15:29 +0200)]
Preserve the minimum height of the user header without ranks
The `.userMenuItemSingleLine` class is shared with other elements that are not as tall as the user header.
The `min-height: 0` will cause the user header to collapse too much when the user rank module is disabled.
See https://www.woltlab.com/community/thread/296134-darstellungsfehler-im-kontrollzentrum-ohne-rangmodul/
Marcel Werk [Wed, 29 Jun 2022 13:26:29 +0000 (15:26 +0200)]
Fix missing check if conditions are available when adding a box
Marcel Werk [Wed, 29 Jun 2022 13:16:29 +0000 (15:16 +0200)]
Merge branch '5.5' of https://github.com/WoltLab/WCF into 5.5
Tim Düsterhus [Wed, 29 Jun 2022 12:45:37 +0000 (14:45 +0200)]
Ensure that avatars are world-readable in UserProfileAction::setAvatar()
Fixes #4769
Marcel Werk [Tue, 28 Jun 2022 14:01:24 +0000 (16:01 +0200)]
Merge branch '5.5' of https://github.com/WoltLab/WCF into 5.5
Marcel Werk [Tue, 28 Jun 2022 14:01:22 +0000 (16:01 +0200)]
Fix missing twitter icon
Alexander Ebert [Tue, 28 Jun 2022 12:45:30 +0000 (14:45 +0200)]
Merge pull request #4882 from WoltLab/secure-package-download
Improve the Security of the Plugin-Store StoreCode
Alexander Ebert [Tue, 28 Jun 2022 12:10:20 +0000 (14:10 +0200)]
Clearly mark the StoreCode as sensitive
The Plugin-Store StoreCode can contain credentials that are considered to be sensitive and should not be shared with third parties.
This change adds a unique prefix that serves as a warning to prevent users from unintentionally sharing these credentials with others.
In addition, this unique prefix makes it possible to block this string from appearing in messages using the censorship feature.
Alexander Ebert [Tue, 28 Jun 2022 11:06:20 +0000 (13:06 +0200)]
Guarantee integrity of packages downloaded via a Plugin-Store StoreCode
The package system was unaware of the context of an installation request and permitted the download from unintended package servers.
This can cause the download to be initiated from a different server than the user expected, potentially causing the download of a modified version.
This commit fixes this issue by restricting the package sources to official servers only when the download via the Plugin-Store‘s StoreCode is requested.
Alexander Ebert [Tue, 28 Jun 2022 12:17:31 +0000 (14:17 +0200)]
Explicitly define the text color in the mobile menu
The elements previously implicitly inherited the text color from the surrounding HTML context rather than the element itself. This caused the colors from the content area to bleed into the mobile menu.
See https://www.woltlab.com/community/thread/295243-pro-und-kontra-neues-kontrollzentrum/?postID=
1897430#post1897430 ff
Alexander Ebert [Mon, 27 Jun 2022 16:53:37 +0000 (18:53 +0200)]
Force restore saved selections after inserting links into the editor
Redactor‘s selection handling is very fragile and “forgetting” to restore the selection can cause some very strange side-effects.
The user will start typing inside a selection marker, which will not cause any visual effects, but the content will get lost once the editor removes the markers.
See https://www.woltlab.com/community/thread/296022-einf%C3%BCgen-von-links-im-editor-unter-ipados/
See https://www.woltlab.com/community/thread/296116-einf%C3%BCgen-von-links-im-editor-unter-ipados-text-verschwindet/
See https://www.woltlab.com/community/thread/294753-text-wird-beim-speichern-abgeschnitten/
Marcel Werk [Mon, 27 Jun 2022 16:04:38 +0000 (18:04 +0200)]
Merge branch '5.5' of https://github.com/WoltLab/WCF into 5.5
Marcel Werk [Mon, 27 Jun 2022 16:04:37 +0000 (18:04 +0200)]
Fix sorting of articles by number of comments
Sorting by comments resulted in an exception because the comments column is no longer present in the article table.
Tim Düsterhus [Mon, 27 Jun 2022 14:56:56 +0000 (16:56 +0200)]
Strengthen check for non-instantiable classes in ControllerMap::getClassData()
Alexander Ebert [Thu, 23 Jun 2022 16:56:28 +0000 (18:56 +0200)]
Refresh the mobile unread indicator on DOM update
The unread indicator might become out of sync if the menu is closed, but an action causes the last remaining element(s) to be marked as read.
Using a `MutationObserver` removes the need of signaling such change directly by all actions, for example a “Mark All as Read” button.
See https://www.woltlab.com/community/thread/296063-alle-als-gelesen-markieren-entfernt-badge-nicht/
Alexander Ebert [Thu, 23 Jun 2022 16:31:05 +0000 (18:31 +0200)]
Detect active menu items that have no children
Links with children have the `active` class set on them, but links without have it placed on the parent instead.
See https://www.woltlab.com/community/thread/296045-mobiles-hauptmen%C3%BC-teilweise-nicht-vorausgew%C3%A4hlt-wenn-man-auf-einer-unterseite-is/
Alexander Ebert [Thu, 23 Jun 2022 13:21:43 +0000 (15:21 +0200)]
Preserve the scroll position in CodeMirror on navigation
The previous code stopped working after the update of CodeMirror.
See https://www.woltlab.com/community/thread/296010-nach-css-%C3%A4nderung-nicht-an-selber-stelle/
Alexander Ebert [Thu, 23 Jun 2022 11:34:40 +0000 (13:34 +0200)]
Merge branch '5.4' into 5.5
Alexander Ebert [Thu, 23 Jun 2022 11:32:27 +0000 (13:32 +0200)]
Bind event listeners on editor elements only once
The previous code caused the event listeners to be bound with every iteration. Every invocation touches the DOM by updating the title, which in return caused `observe.load()` to be triggered again. This causes the number of bound event listeners (and thus DOM updates!) to increase exponentionally.
See https://www.woltlab.com/community/thread/296068-dialog-container-vom-spoiler-tag-kann-das-forum-aufh%C3%A4ngen/
Marcel Werk [Tue, 21 Jun 2022 13:31:13 +0000 (15:31 +0200)]
Fix appearance of content navigation buttons in mobile version
Buttons went beyond the edge of the screen instead of wrapping.
Tim Düsterhus [Tue, 21 Jun 2022 08:58:32 +0000 (10:58 +0200)]
Merge remote-tracking branch 'origin/5.5' into 5.5
Tim Düsterhus [Tue, 21 Jun 2022 08:58:08 +0000 (10:58 +0200)]
Merge branch '5.4' into 5.5
Tim Düsterhus [Tue, 21 Jun 2022 08:57:19 +0000 (10:57 +0200)]
Merge branch '5.3' into 5.4
Tim Düsterhus [Tue, 21 Jun 2022 08:52:30 +0000 (10:52 +0200)]
Tim Düsterhus [Tue, 21 Jun 2022 08:48:28 +0000 (10:48 +0200)]
Merge branch '5.4' into 5.5
Tim Düsterhus [Tue, 21 Jun 2022 08:47:11 +0000 (10:47 +0200)]
Merge branch '5.3' into 5.4
Tim Düsterhus [Tue, 21 Jun 2022 08:44:38 +0000 (10:44 +0200)]
Update guzzlehttp/psr7
This is a dependency for an updated Guzzle.
see guzzle/psr7@
e98e3e6d4f86621a9b75f623996e6bbdeb4b9318
see guzzle/guzzle@
a52f0440530b54fa079ce76e8c5d196a42cad981
Tim Düsterhus [Tue, 21 Jun 2022 08:44:10 +0000 (10:44 +0200)]
Merge branch '5.4' into 5.5
Tim Düsterhus [Tue, 21 Jun 2022 08:43:19 +0000 (10:43 +0200)]
Merge branch '5.3' into 5.4
Tim Düsterhus [Tue, 21 Jun 2022 08:41:51 +0000 (10:41 +0200)]
Regenerate composer files
Alexander Ebert [Mon, 20 Jun 2022 15:38:01 +0000 (17:38 +0200)]
Release 5.5.0 RC 2
WoltLab [Mon, 20 Jun 2022 15:02:28 +0000 (15:02 +0000)]
Updating minified JavaScript files
Tim Düsterhus [Mon, 20 Jun 2022 13:42:01 +0000 (15:42 +0200)]
Add missing newline at EOF in acp/style/layout.scss
see
89763fcf8fea68d5cda6bda419a5bd8326d4db58
Alexander Ebert [Sat, 18 Jun 2022 13:48:56 +0000 (15:48 +0200)]
Skip the search close handler if it was not open
Executing the callback causes some unintentional changes to the page state.
See https://www.woltlab.com/community/thread/295991-dialoge-hintergrund-scrollt/
Alexander Ebert [Sat, 18 Jun 2022 12:32:10 +0000 (14:32 +0200)]
Align the mobile ACP user drop-down to the right
See https://www.woltlab.com/community/thread/295980-acp-men%C3%BC-mobil-ausrichtung-%C3%A4ndern/
Marcel Werk [Fri, 17 Jun 2022 13:13:17 +0000 (15:13 +0200)]
Merge branch '5.5' of https://github.com/WoltLab/WCF into 5.5
Marcel Werk [Fri, 17 Jun 2022 13:13:15 +0000 (15:13 +0200)]
Fix non-functioning template scripting in language variable
Tim Düsterhus [Wed, 15 Jun 2022 13:56:41 +0000 (15:56 +0200)]
Merge branch '5.4' into 5.5
Tim Düsterhus [Wed, 15 Jun 2022 13:45:38 +0000 (15:45 +0200)]
Match foreign keys independent of referenced column casing in PHP DDL
Early versions of MySQL 8 contained a bug that would return the column names of
the referenced table in lowercase whenever querying the FOREIGN KEY or when
showing the table's structure:
https://bugs.mysql.com/bug.php?id=88718
This issue also affects the any created database dumps and is not corrected
when importing the dump into a fixed version of MySQL:
https://bugs.mysql.com/bug.php?id=98976
Thus any instances that were ever dumped with an affected version of MySQL 8
will have foreign keys with a mismatching column case.
The FOREIGN KEY itself will be completely functional, MySQL does not care about
the casing of column names.
However the PHP DDL considers those FOREIGN KEYs to be different when
attempting to find an existing FOREIGN KEY to update, thus believing that the
FOREIGN KEY does not yet exist. As a result it attemtps to create it,
generating a name that is identical to the existing FOREIGN KEY's, leading to
conflicts when attempting to log the change into package_installation_sql_log.
Fix this issue by lowercasing the referenced column names when grabbing the
`->getDiffData()`. The PHP DDL will then find the existing FOREIGN KEY, but it
will realize that it is different when diffing the `->getData()`.
This will lead to the "broken" FOREIGN KEY being dropped and it being recreated
correctly, both avoiding the duplicate key error and also actually correcting
the column name.
Tim Düsterhus [Wed, 15 Jun 2022 11:33:36 +0000 (13:33 +0200)]
Merge remote-tracking branch 'origin/5.5' into 5.5
Tim Düsterhus [Wed, 15 Jun 2022 11:33:13 +0000 (13:33 +0200)]
Merge branch 'php8.2-fixes' into 5.5
Tim Düsterhus [Fri, 10 Jun 2022 08:22:13 +0000 (10:22 +0200)]
Fix PHP 8.2 compatibility in TemplateEngine
> Creation of dynamic property wcf\system\template\TemplateEngine::$pluginObjects is deprecated
> Creation of dynamic property wcf\system\template\TemplateEngine::$tagStack is deprecated
Tim Düsterhus [Fri, 10 Jun 2022 08:03:15 +0000 (10:03 +0200)]
Fix PHP 8.2 compatibility in HascontentPrefilterTemplatePlugin
> Use of "self" in callables is deprecated
Marcel Werk [Wed, 15 Jun 2022 10:54:32 +0000 (12:54 +0200)]
Fix saving box for page assignments
The methods still contained code that became obsolete with the PR linked below.
see https://github.com/WoltLab/WCF/pull/4866
Marcel Werk [Tue, 14 Jun 2022 10:26:35 +0000 (12:26 +0200)]
Removed obsolete update script for box condition conversion
see https://github.com/WoltLab/WCF/pull/4866
Tim Düsterhus [Tue, 14 Jun 2022 07:25:11 +0000 (09:25 +0200)]
Merge remote-tracking branch 'origin/5.5' into 5.5