GitHub/WoltLab/WCF.git
3 years agoAdd Buck to spiderList.xml
Sascha Moser [Sat, 10 Apr 2021 09:18:03 +0000 (11:18 +0200)]
Add Buck to spiderList.xml

User-Agent: `Buck/2.2; (+https://app.hypefactors.com/media-monitoring/about.html)`

see #3111

3 years agoAdd ZoominfoBot to spiderList.xml
Sascha Moser [Fri, 9 Apr 2021 17:28:00 +0000 (19:28 +0200)]
Add ZoominfoBot to spiderList.xml

User-Agent: `ZoominfoBot (zoominfobot at zoominfo dot com)`

see #3111

3 years agoFix SCSS code style
Matthias Schmidt [Mon, 12 Apr 2021 04:16:20 +0000 (06:16 +0200)]
Fix SCSS code style

3 years agoMerge branch '5.3'
Matthias Schmidt [Mon, 12 Apr 2021 04:12:23 +0000 (06:12 +0200)]
Merge branch '5.3'

3 years agoLogical separation of attachments in messages and signatures
Alexander Ebert [Sun, 11 Apr 2021 16:24:54 +0000 (18:24 +0200)]
Logical separation of attachments in messages and signatures

Fixes #3835

3 years agoUse consistent title for flood control delay time
Matthias Schmidt [Sun, 11 Apr 2021 15:43:56 +0000 (17:43 +0200)]
Use consistent title for flood control delay time

Close #3801

3 years agoConsistently use "entered" in English phrases instead of "given"
Matthias Schmidt [Sun, 11 Apr 2021 11:06:32 +0000 (13:06 +0200)]
Consistently use "entered" in English phrases instead of "given"

See #3801

3 years agoAdd missing url attribute for message share buttons' container
Matthias Schmidt [Sun, 11 Apr 2021 10:57:21 +0000 (12:57 +0200)]
Add missing url attribute for message share buttons' container

See #4108

3 years agoHide the quote tooltip while dragging the touch selection
Alexander Ebert [Sat, 10 Apr 2021 14:02:36 +0000 (16:02 +0200)]
Hide the quote tooltip while dragging the touch selection

3 years agoImproved the behavior of page action buttons on mobile
Alexander Ebert [Sat, 10 Apr 2021 13:35:47 +0000 (15:35 +0200)]
Improved the behavior of page action buttons on mobile

3 years agoWork-around for the scroll position when inserting quotes on iOS
Alexander Ebert [Sat, 10 Apr 2021 12:35:53 +0000 (14:35 +0200)]
Work-around for the scroll position when inserting quotes on iOS

3 years agoDetection of pasted blob uris in iOS
Alexander Ebert [Fri, 9 Apr 2021 16:48:41 +0000 (18:48 +0200)]
Detection of pasted blob uris in iOS

3 years agoBlock the form submit if one or more editors are still in source code mode
Alexander Ebert [Fri, 9 Apr 2021 15:34:56 +0000 (17:34 +0200)]
Block the form submit if one or more editors are still in source code mode

3 years agoDetection of repeated mentions with the first mention at index 0
Alexander Ebert [Fri, 9 Apr 2021 14:38:22 +0000 (16:38 +0200)]
Detection of repeated mentions with the first mention at index 0

3 years agoWork-around for the HTML entity in notifications for reactions
Alexander Ebert [Fri, 9 Apr 2021 14:29:44 +0000 (16:29 +0200)]
Work-around for the HTML entity in notifications for reactions

3 years agoRevert "Do not encode link in `Ui/Message/Share/Dialog`"
Matthias Schmidt [Fri, 9 Apr 2021 12:36:50 +0000 (14:36 +0200)]
Revert "Do not encode link in `Ui/Message/Share/Dialog`"

This reverts commit e1fc63b48550f147b2c331949bf1bc438adf8dbb.

3 years agoDo not encode link in `Ui/Message/Share/Dialog`
Matthias Schmidt [Fri, 9 Apr 2021 12:29:50 +0000 (14:29 +0200)]
Do not encode link in `Ui/Message/Share/Dialog`

It is already encoded in the template.

3 years agoAdd `Ui/Message/Share/Dialog` as reusable share dialog module (#4108)
Matthias Schmidt [Fri, 9 Apr 2021 11:54:30 +0000 (13:54 +0200)]
Add `Ui/Message/Share/Dialog` as reusable share dialog module (#4108)

* Add `Ui/Message/Share/Dialog` as reusable share dialog module

Close  #4026

* Apply suggestions from code review

* Apply suggestions from code review

3 years agoAvoid the use of gradients involving the `transparent` keyboard
Alexander Ebert [Fri, 9 Apr 2021 10:14:42 +0000 (12:14 +0200)]
Avoid the use of gradients involving the `transparent` keyboard

3 years agoUse a separate shadow link for embedded content
Alexander Ebert [Fri, 9 Apr 2021 10:07:10 +0000 (12:07 +0200)]
Use a separate shadow link for embedded content

Avoid conflicts with complex HTML inside the excerpt similar to how articles work.

3 years agoImplement `_dialogSubmit()` for confirmation dialogs
Alexander Ebert [Fri, 9 Apr 2021 09:14:36 +0000 (11:14 +0200)]
Implement `_dialogSubmit()` for confirmation dialogs

See #3234

3 years agoMerge pull request #4110 from WoltLab/xars-oof
Tim Düsterhus [Fri, 9 Apr 2021 08:49:47 +0000 (10:49 +0200)]
Merge pull request #4110 from WoltLab/xars-oof

Set X-Auto-Response-Suppress: OOF header on all mail

3 years agoSet X-Auto-Response-Suppress: OOF header on all mail
Tim Düsterhus [Fri, 9 Apr 2021 08:43:57 +0000 (10:43 +0200)]
Set X-Auto-Response-Suppress: OOF header on all mail

I was not able to think of a case where out-of-office notifications would be
desired in response to an email sent by WoltLab Suite, so onto all emails it
goes.

Resolves #4104

3 years agoConsistently use "The entered X" in English phrases (#4109)
Matthias Schmidt [Fri, 9 Apr 2021 07:31:12 +0000 (09:31 +0200)]
Consistently use "The entered X" in English phrases (#4109)

See #3801

3 years agoMerge branch '5.3'
Matthias Schmidt [Fri, 9 Apr 2021 06:46:02 +0000 (08:46 +0200)]
Merge branch '5.3'

3 years agoMerge pull request #4103 from WoltLab/acp-user-email-search
Joshua Rüsweg [Wed, 7 Apr 2021 10:50:45 +0000 (12:50 +0200)]
Merge pull request #4103 from WoltLab/acp-user-email-search

Add acp user email search

3 years agoFix codestyle
Joshua Rüsweg [Wed, 7 Apr 2021 10:50:37 +0000 (12:50 +0200)]
Fix codestyle

Co-authored-by: Tim Düsterhus <duesterhus@woltlab.com>
3 years agoRemove German language tag for spider URL
joshuaruesweg [Wed, 7 Apr 2021 10:49:03 +0000 (12:49 +0200)]
Remove German language tag for spider URL

See 2f4ab6f10ee34601a2931307cc6cc1601943fcd7

3 years agoMerge branch '5.3'
Marcel Werk [Wed, 7 Apr 2021 10:01:50 +0000 (12:01 +0200)]
Merge branch '5.3'

3 years agoMerge branch '5.2' into 5.3
Marcel Werk [Wed, 7 Apr 2021 09:54:07 +0000 (11:54 +0200)]
Merge branch '5.2' into 5.3

3 years agoLack of filtering of content from ignored users
Marcel Werk [Wed, 7 Apr 2021 09:53:54 +0000 (11:53 +0200)]
Lack of filtering of content from ignored users

3 years agoMerge branch '5.3'
Tim Düsterhus [Wed, 7 Apr 2021 08:14:52 +0000 (10:14 +0200)]
Merge branch '5.3'

3 years agoMerge pull request #4105 from WoltLab/notification-markAllAsRead
Tim Düsterhus [Wed, 7 Apr 2021 07:18:44 +0000 (09:18 +0200)]
Merge pull request #4105 from WoltLab/notification-markAllAsRead

Attempt to prevent deadlocks involving marking all notifications as read

3 years agoAttempt to prevent deadlocks involving marking all notifications as read
Tim Düsterhus [Tue, 6 Apr 2021 14:24:49 +0000 (16:24 +0200)]
Attempt to prevent deadlocks involving marking all notifications as read

The previous implementation, UPDATEing all rows with a specific userID, needed
to create pretty coarse locks on the `userID` INDEX. Specifically it also
created gap locks, preventing concurrent *creation* of INDEX records that would
have been matched.

My current understanding of MySQL's locking behavior is that the `confirmTime`
being part of the INDEX is what caused the issue:

The `userID` INDEX includes the columns userID, eventID, objectID and
confirmTime. Now consider the following:

Thread 1: Marks all notifications for userID = A as read.
Thread 2: Marks objects X, Y and Z for userID A as read.

Thread 1 will lock all existing notifications for userID = A as well as all
insertions into the `userID` INDEX with that specific userID. This includes
marking notifications as read, because this will delete the old index record
and insert a new index record with an updated confirmTime.

Thread 2 will lock the specific notifications for userID = A as well as all
insertions into the `userID` INDEX with that specific userID and objectIDs.
This includes marking notifications as read, because this will delete the old
index record and insert a new index record with an updated confirmTime.

Now consider the following timeline:

T1: Locks the gaps for userID = A.
T2: Locks the gaps for userID = A, objects X, Y, Z.

These locks are allowed to coexist:

> Gap locks in InnoDB are “purely inhibitive”, which means that their only
> purpose is to prevent other transactions from inserting to the gap.
(https://dev.mysql.com/doc/refman/8.0/en/innodb-locking.html)

T1: Wants to UPDATE the confirmTime for userID = A, object X.

-> This is prevented by the gap lock held by T2, thus T1 waits.

T2: Wants to UPDATE the confirmTime for userID = A, object X.

-> This is prevented by the gap lock held by T1, thus T2 waits.

Now we have a deadlock.

As the current query needs to UPDATE a large number of rows it is fairly slow,
holding the locks for a long time and also needing to update the rows
one-by-one. This gives other threads enough opportunity to run in-between,
wreaking havoc.

Fix this issue by first selecting the exact notifications we need to mark as
read using a simple SELECT. This SELECT should not be able to deadlock with
concurrent write statements.

Afterwards we update the notifications based off a condition matching specific
rows within the PRIMARY KEY. As these must match existing rows only, no gap
locks will be needed, thus reducing the chance to block concurrent threads.

Additionally we only need to update a very small number of rows (should be less
than 50 in the vast majority of cases), reducing the time spent in the query,
further closing the window for concurrent requests and possibly making the
process faster due to less rows being updated (and thus needing to be written
to disk).

3 years agoUpdate to Guzzle 7.3
Tim Düsterhus [Tue, 6 Apr 2021 12:57:48 +0000 (14:57 +0200)]
Update to Guzzle 7.3

3 years agoMerge pull request #4098 from netzhuffle/patch-4
Tim Düsterhus [Tue, 6 Apr 2021 10:20:40 +0000 (12:20 +0200)]
Merge pull request #4098 from netzhuffle/patch-4

Fix param type for handleException

3 years agoAdd acp user email search
joshuaruesweg [Sun, 4 Apr 2021 20:23:09 +0000 (22:23 +0200)]
Add acp user email search

3 years agoAdd meta tags for trophy page
joshuaruesweg [Sun, 4 Apr 2021 19:49:45 +0000 (21:49 +0200)]
Add meta tags for trophy page

3 years agoAdd PetalBot
joshuaruesweg [Sun, 4 Apr 2021 15:29:33 +0000 (17:29 +0200)]
Add PetalBot

3 years agoAdd Googlebot-Video
joshuaruesweg [Sun, 4 Apr 2021 15:13:58 +0000 (17:13 +0200)]
Add Googlebot-Video

3 years agoAdd WoltLab Suite bot
joshuaruesweg [Sun, 4 Apr 2021 15:11:36 +0000 (17:11 +0200)]
Add WoltLab Suite bot

3 years agoAdd meta tags for CategoryArticleListPage
joshuaruesweg [Sun, 4 Apr 2021 15:02:20 +0000 (17:02 +0200)]
Add meta tags for CategoryArticleListPage

3 years agoFix code style
Matthias Schmidt [Wed, 31 Mar 2021 11:33:12 +0000 (13:33 +0200)]
Fix code style

3 years agoFix code style
Matthias Schmidt [Wed, 31 Mar 2021 11:16:37 +0000 (13:16 +0200)]
Fix code style

3 years agoMerge branch '5.3'
Matthias Schmidt [Wed, 31 Mar 2021 11:15:21 +0000 (13:15 +0200)]
Merge branch '5.3'

3 years agoPreview images and cover photos were exported twice
Marcel Werk [Wed, 31 Mar 2021 09:16:59 +0000 (11:16 +0200)]
Preview images and cover photos were exported twice

3 years agoRemove/replace nbsp when copying code to the clipboard
Marcel Werk [Tue, 30 Mar 2021 17:54:29 +0000 (19:54 +0200)]
Remove/replace nbsp when copying code to the clipboard

3 years agoMerge branch '5.3'
Matthias Schmidt [Tue, 30 Mar 2021 16:44:40 +0000 (18:44 +0200)]
Merge branch '5.3'

3 years agoCover photo deletion was not saved properly
Marcel Werk [Tue, 30 Mar 2021 16:39:32 +0000 (18:39 +0200)]
Cover photo deletion was not saved properly

3 years agoAlways fetch package information using the default language
Marcel Werk [Tue, 30 Mar 2021 13:24:21 +0000 (15:24 +0200)]
Always fetch package information using the default language

3 years agoImprove `Ui/Object/Action` implementation (#4101)
Matthias Schmidt [Tue, 30 Mar 2021 13:08:34 +0000 (15:08 +0200)]
Improve `Ui/Object/Action` implementation (#4101)

* Improve `Ui/Object/Action` implementation

1. The `objectAction` callback of `Ui/Object/Action/Handler` no gets the whole `data: ObjectActionData` data structure instead of each element separately.
2. `ObjectActionData` now also contains the container element.
3. Add support for `data-object-action-handler` for action buttons. The default actions ignore actions triggered by buttons with such attributes. Instead, custom handlers can react to specific actions by checking for the value of this attribute.

* Use `insertAdjacentElement` in `Ui/Object/Action/Delete`

Co-authored-by: Alexander Ebert <ebert@woltlab.com>
3 years agoFixed missing language variables for error messages
Marcel Werk [Tue, 30 Mar 2021 13:08:03 +0000 (15:08 +0200)]
Fixed missing language variables for error messages

3 years agoRemoved obsolete language variables
Marcel Werk [Tue, 30 Mar 2021 13:04:08 +0000 (15:04 +0200)]
Removed obsolete language variables

3 years agoMerge branch '5.2' into 5.3
Marcel Werk [Mon, 29 Mar 2021 16:24:45 +0000 (18:24 +0200)]
Merge branch '5.2' into 5.3

3 years agoMerge branch '3.1' into 5.2
Marcel Werk [Mon, 29 Mar 2021 16:24:08 +0000 (18:24 +0200)]
Merge branch '3.1' into 5.2

3 years agoUpdate the user rank after users change their profile
Marcel Werk [Mon, 29 Mar 2021 16:23:50 +0000 (18:23 +0200)]
Update the user rank after users change their profile

3 years agoFix identifier of DOM change listener in `Ui/Object/Action`
Matthias Schmidt [Mon, 29 Mar 2021 14:13:03 +0000 (16:13 +0200)]
Fix identifier of DOM change listener in `Ui/Object/Action`

3 years agoRemoved obsolete Chrome workaround for dialogs with scrollbars
Marcel Werk [Mon, 29 Mar 2021 13:52:14 +0000 (15:52 +0200)]
Removed obsolete Chrome workaround for dialogs with scrollbars

3 years agoRemoved obsolete whitespaces
Marcel Werk [Sun, 28 Mar 2021 12:29:18 +0000 (14:29 +0200)]
Removed obsolete whitespaces

3 years agoDelete trophy images when deleting tropies
Marcel Werk [Sun, 28 Mar 2021 12:13:50 +0000 (14:13 +0200)]
Delete trophy images when deleting tropies

3 years agoFixed wrong parameter type
Marcel Werk [Sun, 28 Mar 2021 12:13:14 +0000 (14:13 +0200)]
Fixed wrong parameter type

3 years agoMissing margin for trophies with images
Marcel Werk [Sun, 28 Mar 2021 11:17:59 +0000 (13:17 +0200)]
Missing margin for trophies with images

3 years agoHide comment counter when comments are disabled
Marcel Werk [Sun, 28 Mar 2021 11:02:52 +0000 (13:02 +0200)]
Hide comment counter when comments are disabled

3 years agoMade sure ids in toc are unique
Marcel Werk [Sun, 28 Mar 2021 10:48:19 +0000 (12:48 +0200)]
Made sure ids in toc are unique

3 years agoMerge branch '5.2' into 5.3
Marcel Werk [Sun, 28 Mar 2021 09:51:29 +0000 (11:51 +0200)]
Merge branch '5.2' into 5.3

3 years agoMerge branch '3.1' into 5.2
Marcel Werk [Sun, 28 Mar 2021 09:38:13 +0000 (11:38 +0200)]
Merge branch '3.1' into 5.2

3 years agoStrip rtl override char
Marcel Werk [Sun, 28 Mar 2021 09:37:09 +0000 (11:37 +0200)]
Strip rtl override char

3 years agoMerge pull request #4093 from WoltLab/redirect-guard
Joshua Rüsweg [Fri, 26 Mar 2021 13:58:27 +0000 (14:58 +0100)]
Merge pull request #4093 from WoltLab/redirect-guard

Add RedirectGuard

3 years agoPermit the use of `array_diff` in templates
Alexander Ebert [Fri, 26 Mar 2021 11:36:18 +0000 (12:36 +0100)]
Permit the use of `array_diff` in templates

If only developers would stop moving business logic into templates…

3 years agoMerge pull request #4080 from WoltLab/ts_dbo_action
Matthias Schmidt [Wed, 24 Mar 2021 12:40:48 +0000 (13:40 +0100)]
Merge pull request #4080 from WoltLab/ts_dbo_action

Add global `WCF.Action.(Delete|Toggle)` replacement modules

3 years agoMerge branch 'master' into ts_dbo_action
Matthias Schmidt [Wed, 24 Mar 2021 12:37:19 +0000 (13:37 +0100)]
Merge branch 'master' into ts_dbo_action

3 years agoAvoid using template compiler in `ObjectActionFunctionTemplatePlugin`
Matthias Schmidt [Wed, 24 Mar 2021 12:35:46 +0000 (13:35 +0100)]
Avoid using template compiler in `ObjectActionFunctionTemplatePlugin`

Language items in `wcf.global.` do not support template scripting by default. Instead of "manually" adding support for template scripting for this specific case, the relevant language item has been moved to a different language item category.

3 years agoReplace use of `WCF.Search.User` with `Ui/User/Search/Input` (#4096)
Matthias Schmidt [Wed, 24 Mar 2021 08:02:24 +0000 (09:02 +0100)]
Replace use of `WCF.Search.User` with `Ui/User/Search/Input` (#4096)

* Replace use of `WCF.Search.User` with `Ui/User/Search/Input`

See #3876

* Remove obsolete TODO

See 9d7cfda776e5c3809babfeb003d1212c29413619

Co-authored-by: Alexander Ebert <ebert@woltlab.com>
Co-authored-by: Alexander Ebert <ebert@woltlab.com>
3 years agoFix param type for handleException
Jannis Grimm [Tue, 23 Mar 2021 19:32:39 +0000 (20:32 +0100)]
Fix param type for handleException

WCF::handleException incorrectly stated it would receive only \Exception, while it is registered to receive any \Throwable.

3 years agoIncorrect position of the suggestion drop-down
Alexander Ebert [Tue, 23 Mar 2021 18:16:23 +0000 (19:16 +0100)]
Incorrect position of the suggestion drop-down

Related issue: #4096

3 years agoRemove duplicate colon
Matthias Schmidt [Mon, 22 Mar 2021 12:21:17 +0000 (13:21 +0100)]
Remove duplicate colon

3 years agoRemove trailing whitespace in ObjectActionFunctionTemplatePlugin documentation
Matthias Schmidt [Mon, 22 Mar 2021 12:04:08 +0000 (13:04 +0100)]
Remove trailing whitespace in ObjectActionFunctionTemplatePlugin documentation

3 years agoExtend documentation of `ObjectActionFunctionTemplatePlugin`
Matthias Schmidt [Mon, 22 Mar 2021 11:58:39 +0000 (12:58 +0100)]
Extend documentation of `ObjectActionFunctionTemplatePlugin`

3 years agoMake `wcf.global.button.delete.confirmMessage` globally available in JS code
Matthias Schmidt [Mon, 22 Mar 2021 11:45:18 +0000 (12:45 +0100)]
Make `wcf.global.button.delete.confirmMessage` globally available in JS code

3 years agoUpdate obsolete comment in `Media/Manager/Base`
Matthias Schmidt [Sun, 21 Mar 2021 13:50:23 +0000 (14:50 +0100)]
Update obsolete comment in `Media/Manager/Base`

3 years agoDeprecate `WCF.Action.*` classes
Matthias Schmidt [Sun, 21 Mar 2021 13:49:29 +0000 (14:49 +0100)]
Deprecate `WCF.Action.*` classes

3 years agoUse `Ui/Object/Action/Delete` for attachments
Matthias Schmidt [Sun, 21 Mar 2021 13:47:16 +0000 (14:47 +0100)]
Use `Ui/Object/Action/Delete` for attachments

3 years agoAdd Applebot as spider
joshuaruesweg [Sun, 21 Mar 2021 11:30:10 +0000 (12:30 +0100)]
Add Applebot as spider

3 years agoRemove obsolete import
Matthias Schmidt [Sun, 21 Mar 2021 09:54:05 +0000 (10:54 +0100)]
Remove obsolete import

3 years agoReplace use of `WCF.Action.SimpleProxy` with `Ui/Object/Action`
Matthias Schmidt [Sun, 21 Mar 2021 09:48:28 +0000 (10:48 +0100)]
Replace use of `WCF.Action.SimpleProxy` with `Ui/Object/Action`

3 years agoRemove obsolete JavaScript function
Matthias Schmidt [Sun, 21 Mar 2021 09:47:20 +0000 (10:47 +0100)]
Remove obsolete JavaScript function

3 years agoUse `Ui/Object/Action` for media files
Matthias Schmidt [Sun, 21 Mar 2021 09:42:34 +0000 (10:42 +0100)]
Use `Ui/Object/Action` for media files

3 years agoUse `Ui/Object/Action/Delete` in more places in ACP
Matthias Schmidt [Sun, 21 Mar 2021 08:54:16 +0000 (09:54 +0100)]
Use `Ui/Object/Action/Delete` in more places in ACP

3 years agoSupport nested structures in `Ui/Object/Action/Delete`
Matthias Schmidt [Sun, 21 Mar 2021 08:43:42 +0000 (09:43 +0100)]
Support nested structures in `Ui/Object/Action/Delete`

3 years agoConvert last uses of `WCF.Action.Toggle` to `Ui/Action/Toggle`
Matthias Schmidt [Sun, 21 Mar 2021 08:33:51 +0000 (09:33 +0100)]
Convert last uses of `WCF.Action.Toggle` to `Ui/Action/Toggle`

3 years agoAdd support for `(enable|disable)Title` for toggling in `{objectAction}`
Matthias Schmidt [Sun, 21 Mar 2021 08:33:13 +0000 (09:33 +0100)]
Add support for `(enable|disable)Title` for toggling in `{objectAction}`

3 years agoFix code formatting in ObjectActionFunctionTemplatePlugin
Matthias Schmidt [Sat, 20 Mar 2021 12:22:53 +0000 (13:22 +0100)]
Fix code formatting in ObjectActionFunctionTemplatePlugin

3 years agoUse `Ui/Object/Action/Delete` in frontend
Matthias Schmidt [Sat, 20 Mar 2021 12:15:38 +0000 (13:15 +0100)]
Use `Ui/Object/Action/Delete` in frontend

3 years agoUse ObjectActionFunctionTemplatePlugin in more places in ACP
Matthias Schmidt [Sat, 20 Mar 2021 12:09:28 +0000 (13:09 +0100)]
Use ObjectActionFunctionTemplatePlugin in more places in ACP

3 years agoAdd and use ObjectActionFunctionTemplatePlugin
Matthias Schmidt [Thu, 18 Mar 2021 10:04:08 +0000 (11:04 +0100)]
Add and use ObjectActionFunctionTemplatePlugin

3 years agoUse new templates for object action delete and toggle icons
Matthias Schmidt [Wed, 17 Mar 2021 15:07:32 +0000 (16:07 +0100)]
Use new templates for object action delete and toggle icons

3 years agoAdd templates for object action delete and toggle icons
Matthias Schmidt [Wed, 17 Mar 2021 15:07:16 +0000 (16:07 +0100)]
Add templates for object action delete and toggle icons

3 years agoStart using `Ui/Object/Action/*` in ACP
Matthias Schmidt [Tue, 16 Mar 2021 13:56:07 +0000 (14:56 +0100)]
Start using `Ui/Object/Action/*` in ACP

3 years agoApply suggestions from code review
Matthias Schmidt [Mon, 15 Mar 2021 09:13:46 +0000 (10:13 +0100)]
Apply suggestions from code review

3 years agoMove `Controller/ClipboardData` to `Controller/Clipboard/Data`
Matthias Schmidt [Mon, 15 Mar 2021 09:00:04 +0000 (10:00 +0100)]
Move `Controller/ClipboardData` to `Controller/Clipboard/Data`