GitHub/WoltLab/WCF.git
3 years agoUse the `tslib` helper library
Alexander Ebert [Wed, 28 Oct 2020 14:00:59 +0000 (15:00 +0100)]
Use the `tslib` helper library

3 years agoConvert `Ui/File/Delete` to TypeScript
Alexander Ebert [Wed, 28 Oct 2020 10:09:49 +0000 (11:09 +0100)]
Convert `Ui/File/Delete` to TypeScript

3 years agoConvert `Ui/Page/Action` to TypeScript
Alexander Ebert [Tue, 27 Oct 2020 15:26:59 +0000 (16:26 +0100)]
Convert `Ui/Page/Action` to TypeScript

3 years agoConvert `Ui/Toggle/Input` to TypeScript
Alexander Ebert [Tue, 27 Oct 2020 14:04:15 +0000 (15:04 +0100)]
Convert `Ui/Toggle/Input` to TypeScript

3 years agoConvert `Ui/Article/MarkAllAsRead` to TypeScript
Alexander Ebert [Tue, 27 Oct 2020 13:26:33 +0000 (14:26 +0100)]
Convert `Ui/Article/MarkAllAsRead` to TypeScript

3 years agoConvert `Ui/Article/Search` to TypeScript
Alexander Ebert [Tue, 27 Oct 2020 12:03:48 +0000 (13:03 +0100)]
Convert `Ui/Article/Search` to TypeScript

3 years agoConvert `Ui/Acl/Simple` to TypeScript
Alexander Ebert [Tue, 27 Oct 2020 11:25:26 +0000 (12:25 +0100)]
Convert `Ui/Acl/Simple` to TypeScript

3 years agoConvert `Ui/User/Search/Input` to TypeScript
Alexander Ebert [Tue, 27 Oct 2020 11:00:23 +0000 (12:00 +0100)]
Convert `Ui/User/Search/Input` to TypeScript

3 years agoConvert `Ui/Smiley/Insert` to TypeScript
Alexander Ebert [Tue, 27 Oct 2020 10:33:52 +0000 (11:33 +0100)]
Convert `Ui/Smiley/Insert` to TypeScript

3 years agoConvert `Ui/User/Trophy/List` to TypeScript
Alexander Ebert [Tue, 27 Oct 2020 10:15:41 +0000 (11:15 +0100)]
Convert `Ui/User/Trophy/List` to TypeScript

3 years agoConvert `Ui/Page/Search` to TypeScript
Alexander Ebert [Mon, 26 Oct 2020 22:38:40 +0000 (23:38 +0100)]
Convert `Ui/Page/Search` to TypeScript

3 years agoRemoved the `createOnly` parameter, it was never really implemented
Alexander Ebert [Mon, 26 Oct 2020 21:58:49 +0000 (22:58 +0100)]
Removed the `createOnly` parameter, it was never really implemented

3 years agoExpose the internal `_toggle` method for backwards compatibility
Alexander Ebert [Mon, 26 Oct 2020 21:57:32 +0000 (22:57 +0100)]
Expose the internal `_toggle` method for backwards compatibility

3 years agoConvert `Ui/Search/Page` to TypeScript
Alexander Ebert [Mon, 26 Oct 2020 15:38:50 +0000 (16:38 +0100)]
Convert `Ui/Search/Page` to TypeScript

3 years agoConvert `Ui/Search/Input` to TypeScript
Alexander Ebert [Sun, 25 Oct 2020 23:13:23 +0000 (00:13 +0100)]
Convert `Ui/Search/Input` to TypeScript

3 years agoConvert `Ui/User/Editor` to TypeScript
Alexander Ebert [Sun, 25 Oct 2020 20:28:24 +0000 (21:28 +0100)]
Convert `Ui/User/Editor` to TypeScript

3 years agoConvert `Ui/User/Ignore` to TypeScript
Alexander Ebert [Sun, 25 Oct 2020 14:54:12 +0000 (15:54 +0100)]
Convert `Ui/User/Ignore` to TypeScript

3 years agoRenamed the Ajax/Dialog `CallbackObject`
Alexander Ebert [Sun, 25 Oct 2020 14:39:55 +0000 (15:39 +0100)]
Renamed the Ajax/Dialog `CallbackObject`

3 years agoConvert `Ui/User/List` to TypeScript
Alexander Ebert [Sun, 25 Oct 2020 14:35:11 +0000 (15:35 +0100)]
Convert `Ui/User/List` to TypeScript

3 years agoConvert `Ui/ItemList` to TypeScript
Alexander Ebert [Sun, 25 Oct 2020 14:13:44 +0000 (15:13 +0100)]
Convert `Ui/ItemList` to TypeScript

3 years agoConvert `Ui/Dropdown/Builder` to TypeScript
Alexander Ebert [Sat, 24 Oct 2020 23:42:41 +0000 (01:42 +0200)]
Convert `Ui/Dropdown/Builder` to TypeScript

3 years agoConvert `Ui/Dropdown/Reusable` to TypeScript
Alexander Ebert [Sat, 24 Oct 2020 22:07:30 +0000 (00:07 +0200)]
Convert `Ui/Dropdown/Reusable` to TypeScript

3 years agoConvert `Ui/TabMenu` to TypeScript
Alexander Ebert [Sat, 24 Oct 2020 21:47:08 +0000 (23:47 +0200)]
Convert `Ui/TabMenu` to TypeScript

3 years agoConvert `Ui/TabMenu/Simple` to TypeScript
Alexander Ebert [Sat, 24 Oct 2020 16:08:25 +0000 (18:08 +0200)]
Convert `Ui/TabMenu/Simple` to TypeScript

3 years agoConvert `Ui/Suggestion` to TypeScript
Alexander Ebert [Sat, 24 Oct 2020 15:07:27 +0000 (17:07 +0200)]
Convert `Ui/Suggestion` to TypeScript

3 years agoConvert `Ui/Pagination` to TypeScript
Alexander Ebert [Sat, 24 Oct 2020 11:39:46 +0000 (13:39 +0200)]
Convert `Ui/Pagination` to TypeScript

3 years agoConvert `Ui/Page/JumpTo` to TypeScript
Alexander Ebert [Fri, 23 Oct 2020 23:20:54 +0000 (01:20 +0200)]
Convert `Ui/Page/JumpTo` to TypeScript

3 years agoConvert `Ui/FlexibleMenu` to TypeScript
Alexander Ebert [Fri, 23 Oct 2020 19:02:27 +0000 (21:02 +0200)]
Convert `Ui/FlexibleMenu` to TypeScript

3 years agoImproved the code style
Alexander Ebert [Fri, 23 Oct 2020 11:53:28 +0000 (13:53 +0200)]
Improved the code style

3 years agoConvert `Date/Picker` to TypeScript
Alexander Ebert [Thu, 22 Oct 2020 23:16:03 +0000 (01:16 +0200)]
Convert `Date/Picker` to TypeScript

3 years agoConvert `Date/Time/Relative` to TypeScript
Alexander Ebert [Thu, 22 Oct 2020 12:55:57 +0000 (14:55 +0200)]
Convert `Date/Time/Relative` to TypeScript

3 years agoConvert `Date/Util` to TypeScript
Alexander Ebert [Wed, 21 Oct 2020 23:58:01 +0000 (01:58 +0200)]
Convert `Date/Util` to TypeScript

3 years agoConvert `Ui/Tooltip` to TypeScript
Alexander Ebert [Wed, 21 Oct 2020 23:40:17 +0000 (01:40 +0200)]
Convert `Ui/Tooltip` to TypeScript

3 years agoConvert `Ui/Dropdown/Simple` to TypeScript
Alexander Ebert [Wed, 21 Oct 2020 23:10:49 +0000 (01:10 +0200)]
Convert `Ui/Dropdown/Simple` to TypeScript

3 years agoConvert `Ui/Alignment` to TypeScript
Alexander Ebert [Wed, 21 Oct 2020 20:26:35 +0000 (22:26 +0200)]
Convert `Ui/Alignment` to TypeScript

3 years agoConvert `Ui/CloseOverlay` to TypeScript
Alexander Ebert [Wed, 21 Oct 2020 20:26:25 +0000 (22:26 +0200)]
Convert `Ui/CloseOverlay` to TypeScript

3 years agoConvert `Ui/Scroll` to TypeScript
Alexander Ebert [Wed, 21 Oct 2020 16:29:04 +0000 (18:29 +0200)]
Convert `Ui/Scroll` to TypeScript

3 years agoConvert `Ui/Notification` to TypeScript
Alexander Ebert [Wed, 21 Oct 2020 14:19:58 +0000 (16:19 +0200)]
Convert `Ui/Notification` to TypeScript

3 years agoConvert `Ui/Confirmation` to TypeScript
Alexander Ebert [Wed, 21 Oct 2020 14:07:07 +0000 (16:07 +0200)]
Convert `Ui/Confirmation` to TypeScript

3 years agoUse `HTMLElement.dataset` for access to data attributes
Alexander Ebert [Wed, 21 Oct 2020 10:57:12 +0000 (12:57 +0200)]
Use `HTMLElement.dataset` for access to data attributes

3 years agoConvert `Ui/Dialog` to TypeScript
Alexander Ebert [Tue, 20 Oct 2020 22:24:21 +0000 (00:24 +0200)]
Convert `Ui/Dialog` to TypeScript

3 years agoAdded DomUtil.innerError() and code cleanup
Alexander Ebert [Tue, 20 Oct 2020 22:24:10 +0000 (00:24 +0200)]
Added DomUtil.innerError() and code cleanup

3 years agoHelper methods to work with DOM elements
Alexander Ebert [Mon, 19 Oct 2020 14:47:48 +0000 (16:47 +0200)]
Helper methods to work with DOM elements

3 years agoConvert `Wrapper/FacebookSdk` to TypeScript
Tim Düsterhus [Mon, 19 Oct 2020 11:54:32 +0000 (13:54 +0200)]
Convert `Wrapper/FacebookSdk` to TypeScript

see DefinitelyTyped/DefinitelyTyped#48916

3 years agoCopy unconverted .js modules to ts/ folder
Tim Düsterhus [Mon, 19 Oct 2020 10:50:05 +0000 (12:50 +0200)]
Copy unconverted .js modules to ts/ folder

3 years agoConvert `Clipboard` to TypeScript
Tim Düsterhus [Mon, 19 Oct 2020 09:33:47 +0000 (11:33 +0200)]
Convert `Clipboard` to TypeScript

3 years agoConvert `BackgroundQueue` to TypeScript
Alexander Ebert [Fri, 16 Oct 2020 23:52:17 +0000 (01:52 +0200)]
Convert `BackgroundQueue` to TypeScript

3 years agoConvert `Ajax` to TypeScript
Alexander Ebert [Fri, 16 Oct 2020 23:28:55 +0000 (01:28 +0200)]
Convert `Ajax` to TypeScript

Moved the interfaces and types into a separate file to prevent a circular dependency.

3 years agoIncorrect access of map values
Alexander Ebert [Fri, 16 Oct 2020 23:28:23 +0000 (01:28 +0200)]
Incorrect access of map values

3 years agoConvert `Ajax/Request` to TypeScript
Alexander Ebert [Fri, 16 Oct 2020 16:32:56 +0000 (18:32 +0200)]
Convert `Ajax/Request` to TypeScript

There are two missing components that will later be added.

3 years agoConvert `Timer/Repeating` to TypeScript
Alexander Ebert [Fri, 16 Oct 2020 15:24:18 +0000 (17:24 +0200)]
Convert `Timer/Repeating` to TypeScript

3 years agoUse named types for improve readability
Alexander Ebert [Fri, 16 Oct 2020 15:02:52 +0000 (17:02 +0200)]
Use named types for improve readability

3 years agoConvert `Event/Key` to TypeScript
Alexander Ebert [Fri, 16 Oct 2020 14:57:29 +0000 (16:57 +0200)]
Convert `Event/Key` to TypeScript

3 years agoConvert `Event/Handler` to TypeScript
Alexander Ebert [Fri, 16 Oct 2020 14:22:12 +0000 (16:22 +0200)]
Convert `Event/Handler` to TypeScript

3 years agoConvert `Image/Resizer` to TypeScript
Tim Düsterhus [Fri, 16 Oct 2020 14:16:51 +0000 (16:16 +0200)]
Convert `Image/Resizer` to TypeScript

3 years agoConvert `Image/ExifUtil` to TypeScript
Tim Düsterhus [Fri, 16 Oct 2020 13:49:31 +0000 (15:49 +0200)]
Convert `Image/ExifUtil` to TypeScript

3 years agoConvert `Image/ImageUtil` to TypeScript
Tim Düsterhus [Fri, 16 Oct 2020 13:26:30 +0000 (15:26 +0200)]
Convert `Image/ImageUtil` to TypeScript

3 years agoConvert `Dom/Change/Listener` to TypeScript
Alexander Ebert [Fri, 16 Oct 2020 14:08:30 +0000 (16:08 +0200)]
Convert `Dom/Change/Listener` to TypeScript

3 years agoImproved the code to avoid @ts-ignore
Alexander Ebert [Fri, 16 Oct 2020 14:00:44 +0000 (16:00 +0200)]
Improved the code to avoid @ts-ignore

3 years agoConvert `Dom/Traverse` to TypeScript
Alexander Ebert [Fri, 16 Oct 2020 13:59:05 +0000 (15:59 +0200)]
Convert `Dom/Traverse` to TypeScript

3 years agoHousekeeping
Alexander Ebert [Fri, 16 Oct 2020 13:00:22 +0000 (15:00 +0200)]
Housekeeping

3 years agoConvert `Ui/Screen` to TypeScript
Alexander Ebert [Fri, 16 Oct 2020 12:37:02 +0000 (14:37 +0200)]
Convert `Ui/Screen` to TypeScript

3 years agoConvert `CallbackList` to TypeScript
Alexander Ebert [Fri, 16 Oct 2020 12:36:48 +0000 (14:36 +0200)]
Convert `CallbackList` to TypeScript

3 years agoUse the shorthand function declaration
Alexander Ebert [Fri, 16 Oct 2020 11:14:24 +0000 (13:14 +0200)]
Use the shorthand function declaration

3 years agoUse generic getters for the User module
Alexander Ebert [Fri, 16 Oct 2020 11:05:18 +0000 (13:05 +0200)]
Use generic getters for the User module

3 years agoConverted modules to TypeScript
Alexander Ebert [Fri, 16 Oct 2020 00:02:23 +0000 (02:02 +0200)]
Converted modules to TypeScript

3 years agoConverted additional modules to TypeScript
Alexander Ebert [Thu, 15 Oct 2020 23:13:13 +0000 (01:13 +0200)]
Converted additional modules to TypeScript

3 years agoUpdated the Dictionary implementation
Alexander Ebert [Thu, 15 Oct 2020 17:47:12 +0000 (19:47 +0200)]
Updated the Dictionary implementation

3 years agoAdd global.d.ts and adjust TypeScript target
Tim Düsterhus [Wed, 28 Oct 2020 11:11:33 +0000 (12:11 +0100)]
Add global.d.ts and adjust TypeScript target

3 years agoDo not enforce quotes (Prettier handles it)
Alexander Ebert [Fri, 16 Oct 2020 14:50:32 +0000 (16:50 +0200)]
Do not enforce quotes (Prettier handles it)

3 years agoAdd typescript workflow
Tim Düsterhus [Tue, 27 Oct 2020 09:40:57 +0000 (10:40 +0100)]
Add typescript workflow

3 years agoAdjusted the prototype implementation
Alexander Ebert [Thu, 15 Oct 2020 16:30:42 +0000 (18:30 +0200)]
Adjusted the prototype implementation

3 years agoPoC TypeScript support
Tim Düsterhus [Fri, 21 Aug 2020 10:01:28 +0000 (12:01 +0200)]
PoC TypeScript support

3 years agoAdd initial update instructions from 5.3 to 5.4
Tim Düsterhus [Wed, 28 Oct 2020 09:09:54 +0000 (10:09 +0100)]
Add initial update instructions from 5.3 to 5.4

This includes:

- files, acpTemplates and templates (obvious)
- update_5.4_db.php introduced in #3637
- options adjusted in #3636 and #3637
- objectTypeDefinition introduced in #3633

The database adjustments from #3633 are missing as of right now.

3 years agoMerge pull request #3637 from WoltLab/remove_meta_keywords
Marcel Werk [Wed, 28 Oct 2020 09:05:02 +0000 (10:05 +0100)]
Merge pull request #3637 from WoltLab/remove_meta_keywords

Remove meta keywords

3 years agoMerge branch 'master' into remove_meta_keywords
Tim Düsterhus [Wed, 28 Oct 2020 09:00:46 +0000 (10:00 +0100)]
Merge branch 'master' into remove_meta_keywords

3 years agoMerge branch '5.3'
Matthias Schmidt [Tue, 27 Oct 2020 17:06:50 +0000 (18:06 +0100)]
Merge branch '5.3'

3 years agoHide empty table after deleting last missing language item on page
Matthias Schmidt [Tue, 27 Oct 2020 17:06:36 +0000 (18:06 +0100)]
Hide empty table after deleting last missing language item on page

3 years agoRemove obsolete references to `missingLanguageItems.txt`
Matthias Schmidt [Tue, 27 Oct 2020 17:02:15 +0000 (18:02 +0100)]
Remove obsolete references to `missingLanguageItems.txt`

3 years agoMerge pull request #3627 from WoltLab/composer-deps
Tim Düsterhus [Tue, 27 Oct 2020 13:09:20 +0000 (14:09 +0100)]
Merge pull request #3627 from WoltLab/composer-deps

Update composer dependencies

3 years agoTighten up minimum version of scssphp/scssphp
Tim Düsterhus [Thu, 22 Oct 2020 08:11:14 +0000 (10:11 +0200)]
Tighten up minimum version of scssphp/scssphp

3 years agoUpdate to ezyang/htmlpurifier 4.13.*
Tim Düsterhus [Thu, 22 Oct 2020 08:07:40 +0000 (10:07 +0200)]
Update to ezyang/htmlpurifier 4.13.*

3 years agoMerge branch '5.3'
Tim Düsterhus [Tue, 27 Oct 2020 10:47:37 +0000 (11:47 +0100)]
Merge branch '5.3'

3 years agoFix possible "Invalid parameter number" error in UserStorageHandler
Tim Düsterhus [Tue, 27 Oct 2020 10:46:55 +0000 (11:46 +0100)]
Fix possible "Invalid parameter number" error in UserStorageHandler

3 years agoRemove `Promise` polyfill
Tim Düsterhus [Mon, 19 Oct 2020 09:45:03 +0000 (11:45 +0200)]
Remove `Promise` polyfill

3 years agoMerge branch '5.3'
Tim Düsterhus [Mon, 26 Oct 2020 16:31:39 +0000 (17:31 +0100)]
Merge branch '5.3'

3 years agoMerge branch '5.2' into 5.3
Tim Düsterhus [Mon, 26 Oct 2020 16:31:20 +0000 (17:31 +0100)]
Merge branch '5.2' into 5.3

3 years agoMerge pull request #3648 from WoltLab/actions
Tim Düsterhus [Mon, 26 Oct 2020 16:31:08 +0000 (17:31 +0100)]
Merge pull request #3648 from WoltLab/actions

Refactor Workflows

3 years agoAdd javascript workflow
Tim Düsterhus [Mon, 26 Oct 2020 15:53:33 +0000 (16:53 +0100)]
Add javascript workflow

3 years agoRename php-syntax workflow to php
Tim Düsterhus [Mon, 26 Oct 2020 15:53:17 +0000 (16:53 +0100)]
Rename php-syntax workflow to php

3 years agoAdjust human readable name for CodeSniffer check
Tim Düsterhus [Mon, 26 Oct 2020 16:02:03 +0000 (17:02 +0100)]
Adjust human readable name for CodeSniffer check

3 years agoMerge pull request #3636 from WoltLab/remove-gzip
Tim Düsterhus [Mon, 26 Oct 2020 15:30:13 +0000 (16:30 +0100)]
Merge pull request #3636 from WoltLab/remove-gzip

Remove in-application gzip compression

3 years agoRemove in-application gzip compression
Tim Düsterhus [Fri, 23 Oct 2020 14:17:19 +0000 (16:17 +0200)]
Remove in-application gzip compression

Resolves #3634

3 years agoMerge branch '5.3'
Tim Düsterhus [Mon, 26 Oct 2020 15:18:58 +0000 (16:18 +0100)]
Merge branch '5.3'

3 years agoMerge pull request #3646 from WoltLab/user-storage-refactor
Alexander Ebert [Mon, 26 Oct 2020 14:48:46 +0000 (15:48 +0100)]
Merge pull request #3646 from WoltLab/user-storage-refactor

Clean up user storage update logic

3 years agoClean up user storage update logic
Tim Düsterhus [Fri, 23 Oct 2020 10:33:15 +0000 (12:33 +0200)]
Clean up user storage update logic

This commit attempts to reduce the lock contention during user storage
shutdown. The user storage is a constant source of deadlocks and the update
logic grew increasingly ugly over the years in attempts to fix this.

While the previous situation was acceptable in that errors did not surface due
to the automated retries it still trashed any useful information within `SHOW
ENGINE InnoDB STATUS`, making debugging other deadlocks unnecessarily hard.

The new updating logic uses a single `log` array, indexed by user and field.
`null` values indicate a reset, non-`null` values are an update.

When shutting the user storage down the database will be updated with one
transaction per user, ensuring a consistent view for that user. In most
requests it is expected that only a single user (the current one) is being
updated anyway. Before actually performing the updates the row in wcf1_user for
that user is locked using a SELECT FOR UPDATE query. This should cause
concurrent requests to wait at the `SELECT`, which hopefully stops them from
obtaining any locks that the later DELETE / INSERT will need.

Just locking the `wcf1_user_storage` will not work as the lock cannot be
grabbed atomically. Instead MySQL locks all the matching rows one-by-one.
Locking the user is not ideal, but the update of the user storage should happen
pretty quickly which makes it acceptable.

3 years agoSelect correct identifier in FloodControl::countGuestContent()
Tim Düsterhus [Mon, 26 Oct 2020 11:13:25 +0000 (12:13 +0100)]
Select correct identifier in FloodControl::countGuestContent()

see https://github.com/WoltLab/WCF/pull/3633/files#r511879902

3 years agoRemove deletion of options that were removed in 5.3
Tim Düsterhus [Mon, 26 Oct 2020 10:03:55 +0000 (11:03 +0100)]
Remove deletion of options that were removed in 5.3

3 years agoMerge branch '5.3'
joshuaruesweg [Sat, 24 Oct 2020 13:53:34 +0000 (15:53 +0200)]
Merge branch '5.3'

3 years agoMerge branch '5.2' into 5.3
joshuaruesweg [Sat, 24 Oct 2020 13:52:10 +0000 (15:52 +0200)]
Merge branch '5.2' into 5.3