8498 Commits

Author SHA1 Message Date
Alexander Skvortsov
e335e316af Fix exception in bootExtensions
Frontend extenders exist in a weird state of limbo, where they are technically defined, but aren't used or tested at all. In 114779bcfdaa34152bfb0dd13f0212c403f3155c, we shifted from passing `extension.extend` to `flattenDeep` to calling `flat` on `extension.extend`. If an extension doesn't define extenders (as is the case for most extensions), the change breaks the forum. All we do here is add a null check.
2021-05-07 12:29:10 -04:00
flarum-bot
d8ad125014 Bundled output for commit 114779bcfdaa34152bfb0dd13f0212c403f3155c [skip ci] 2021-05-05 23:29:41 +00:00
David Wheatley
114779bcfd Remove lodash from core (#2827)
* Remove `lodash-es` dependency

* Replace `escapeRegExp` with home-made util

* Replace `throttle` with `throttle-debounce` library

* Use native browser methods for `deepFlatten`

We need a polyfill for iOS 11 and below. I think using a native method with this polyfill is better than having our own function instead, even if the bundle size is ~150B more.

* Save a few bytes in `escapeRegExp`

* Fix typo in comment

* Undo import re-organisation

* Use spread instead of slice

* Use smaller Array.flat polyfill from MDN

* Export new utils in `compat.js`
2021-05-06 00:28:22 +01:00
flarum-bot
529e5bb559 Bundled output for commit 340f7d0dd178a2fb458196aa8df757d72032eb5b [skip ci] 2021-05-05 14:47:48 +00:00
David Wheatley
340f7d0dd1 Remove unneeded delete (#2835) 2021-05-05 15:46:23 +01:00
Alexander Skvortsov
d16bd5a72e Remove unused variable 2021-05-04 18:15:05 -04:00
Alexander Skvortsov
8ed08b63cd Fix mentioned filtering (#67) 2021-05-04 14:57:29 -04:00
flarum-bot
42a1c97371 Bundled output for commit a1edbdc9b0e13f2f1ac6fc540dadadd295a8de7d [skip ci] 2021-05-04 17:58:54 +00:00
Daniël Klabbers
a1edbdc9b0 Initial tag load performance improvement (#87)
- Only load lastPostedDiscussion on TagsPage
- For forum payload, only load top-level primary tags and top 3 secondary tags.
- In other cases, load tags in dynamically when needed.


Co-authored-by: Alexander Skvortsov <sasha.skvortsov109@gmail.com>
Co-authored-by: Sami Mazouz <sychocouldy@gmail.com>
2021-05-04 13:57:55 -04:00
Alexander Skvortsov
f8421b47b2 Centralize permission caching (#2832) 2021-05-04 13:56:14 -04:00
David Wheatley
a7f98f54fa Mark JS dist folder as generated code (#2828)
This excludes it from the repo's language stats and are suppressed in Linguist diffs.

See: https://github.com/github/linguist/blob/master/docs/overrides.md#generated-code
2021-05-04 18:13:42 +01:00
Alexander Skvortsov
712286151f Optimize tag permissions (#126)
The new implementation generates a subquery of IDs instead of sending big arrays of data to/from the database. This massively speeds up performance.
2021-05-04 12:53:20 -04:00
Robert Korulczyk
02d9033349 Update validation.yml. (#2829)
source: https://github.com/laravel/laravel/blob/v8.5.16/resources/lang/en/validation.php
2021-05-03 19:47:18 -04:00
David Wheatley
8c2642b2f2 Fix Flarum on iOS 10 and below (#9)
* Ignore .vscode folder

* Add Prettier config

* Change author to 'Flarum Team'

* Bump deps to latest version

* Format with prettier; add `loose` where needed

* Don't exclude node modules from Babel processing
2021-05-04 00:39:10 +01:00
Matt Kilgore
b6a811bbcc Harden Headers (#2721)
* Basic security headers

* Remove XSS Header (not relevent)

* Fix config name

* Use Arr::get()

* Add tests

* Re-fix the StoreConfig step for fresh installs

Co-authored-by: luceos <luceos@users.noreply.github.com>
Co-authored-by: Alexander Skvortsov <askvortsov1@users.noreply.github.com>
2021-05-03 12:42:06 -04:00
Alexander Skvortsov
87024fc8b7 Apply fixes from StyleCI
[ci skip] [skip ci]
2021-05-03 05:36:06 +00:00
Alexander Skvortsov
a22fed10a7 Use latest version of settings package
This allows us to get rid of hacks for configuring settings and config
2021-05-03 01:35:46 -04:00
Alexander Skvortsov
bd613ba70c Remove second beginTransaction
The transaction is already started in the proper `BeginTransactionAndSetDatabase` extender.
2021-05-03 01:27:06 -04:00
flarum-bot
e2b309ad95 Bundled output for commit 02d3355989e3fc179b5807584478a4b7b2bee588 [skip ci] 2021-05-02 20:38:50 +00:00
SychO9
02d3355989 Add space when inserting a post mention 2021-05-02 21:37:31 +01:00
flarum-bot
5e0d59eedb Bundled output for commit 3893d92d4a31f4430e2cf0540a4e7879046caab5 [skip ci] 2021-05-02 16:14:09 +00:00
David Wheatley
3893d92d4a Revamp notifications stylesheet (grid and flex) (#2822) 2021-05-02 17:13:04 +01:00
flarum-bot
6f07235be0 Bundled output for commit f3eb142a57f88ee71359d4bcc5cbb40fc3d680a5 [skip ci] 2021-05-02 10:38:26 +00:00
David Wheatley
f3eb142a57 Allow multiple methods to be provided to extend and override 2021-05-02 11:37:19 +01:00
flarum-bot
1f1c17628a Bundled output for commit b32fc37df401361c8c494e8cdefaa113ac310ff5 [skip ci] 2021-04-30 17:00:49 +00:00
Alexander Skvortsov
b32fc37df4 Fix package-lock
b5ee8a034b accidentially commited a package-lock with symlinks, breaking the JS build process
2021-04-30 12:59:33 -04:00
Alexander Skvortsov
b5ee8a034b Switch to ICU MessageFormat (#2759) 2021-04-30 12:44:39 -04:00
Alexander Skvortsov
9461df8803 Remove unnecessary laravel config (#2796) 2021-04-30 00:31:19 +02:00
Matt Kilgore
9aa50ca6e3 Move Powered By Header to headers config (#2777)
* Move Powered By Header to headers config
* Use Arr::get()
2021-04-30 00:30:01 +02:00
David Wheatley
56a02944f1 [A11Y] Add focus ring mixin to restore ring to elements which no longer have it (#2814)
* Add focus ring mixin

These mixins allow us to restore default browser focus rings on elements which no longer have them.

* Add info about custom outline styles; use `#private` namespace and fix mixin name

I just learned that Less has namespaces! https://lesscss.org/features/#mixins-feature-namespaces
2021-04-29 22:10:17 +01:00
David Wheatley
f7d3150ce5 LESS should be capitalised as Less
See http://lesscss.org/
2021-04-29 22:07:46 +01:00
Daniël Klabbers
27e0002738 Revision compiler revised (#2805)
- revisions now use <asset>.<type>?v=<revision> instead of <asset>-<revision>.<type>- remove deprecated filename for revision method
- reconsider use of cache differentiator and implement something that
prevents recompiling css every single time
- allow force recompilation
2021-04-29 16:49:36 -04:00
Daniël Klabbers
b64698d79f error handling when extending flarum from extensions fails (#2740) 2021-04-29 16:17:41 -04:00
Daniël Klabbers
d77cc5440b fixed container bindings use of container (#2807) 2021-04-29 15:33:51 -04:00
Sami Mazouz
53467fa5a1 Remove ExtensionPage CSS over-specification (#2792) 2021-04-29 16:31:37 +01:00
Daniël Klabbers
15fab7cd9b clarify callable arguments for password checker (#2812) 2021-04-29 10:19:06 -04:00
flarum-bot
231744b3b7 Bundled output for commit b75aa9c4968409923ab7a992f2dbeb793373ddf3 [skip ci] 2021-04-26 16:15:37 +00:00
Sami Mazouz
b75aa9c496 Fix class naming (#2811) 2021-04-26 17:14:22 +01:00
Alexander Skvortsov
148f810d96 Don't resolve routes early.
In normal Flarum, extensions are only enabled during requests. Here, however, we enable some during boot. This resolves the FilesystemManager early, which resolves the Url Generator early. To fix this, we directly provide a filesystem disk for assets instead of getting it from the filesystem manager.
2021-04-23 18:26:41 -04:00
Alexander Skvortsov
04b04f3635 Ensure app is booted when getting database 2021-04-23 15:20:29 -04:00
flarum-bot
75222f7eae Bundled output for commit 3db457c0f93a4b36b4404018c880edc7feae23ec [skip ci] 2021-04-22 22:37:03 +00:00
David Wheatley
3db457c0f9 Add users list to admin dashboard (#2626)
* Commit initial WIP code

* Fix squashed grid on mobile

* Add pagination support; rename to userList

* Improve grid sizing

* Improve grid row shading

* Move EditUserModal to common

* Add link to profile page in grid

* Use Less styling vars

* Move EditUserModal translations to lib

* Add edit user button to grid

* Fix incorrect profile link priority

* Update profile link translation key

* Add priorities to other columns

* Add group badges to grid

* Add username to profile link tooltip

* Organise imports

* Use variable for header border bottom color

* Fix broken export

* Add total user count to API payload's metadata

* Add new metadata to ApiPayload type

* Implement correct page number

* Remove debug code

* Use function to get the total pages

This allows us to use the raw count elsewhere in the component (pssst... check the next commit!)

* Center profile link in column

* Add profile link header

* Show total users above table

* Use ItemList's itemName property for column data attributes

* Add user email column, hidden by default

This column is hidden by default using a placeholder email and blur filter. These are then removed when the visibility toggle is pressed.

This prevents any over-the-shoulder accidental data leakage, as emails are classed as PII under GDPR.

* Fix incorrect tooltip translation keys

* Add extra padding between email and visibility toggle button

* Prevent selection of blurred email

* Fix incorrect icon state for email toggle

* Update API response type to include metadata (for now)

* Increase number of users per page to 50

* Update compat files with new locations

* Format

* Add @deprecated notices for forum compat export

* Use AdminPayload for user count instead of supplying as REST API metadata

* Make nav look less squashed using bottom margin

* Suppress TS warning

* StyleCI fixes

* Fix TS error

* Update based on review comments

* Rename user list -> users

* Rename internal instances of user_list to users

* Fix formatting

* Use CSS custom properties for the table column count

* Use .Button--icon instead of custom style

* Make fake email more realistic length

* Add a11y attributes

* Use padding bottom instead of margin bottom for page spacing

* Make compatible with new CSS LoadingIndicator

I won't let it break here! :P

* Integrate profile link into username column

* Don't force columns to be 300px

This made the grid look very bloated and intimidating -- lets instead increase the padding between items and make it only the width it needs to be.

* Center edit user button in column

* Increase spacing between email and visibility toggle button

* Rename `statistics` to `modelStatistics` in Admin payload

This prevents any possible conflicts with core and `flarum/statistics`. We might want to consider migrating the stats extension to extend this object in the future.

* Update comments, fix TS error

* Various translation key changes

* Change gmail.com -> example.com

* Stretch 'edit user' button to entire cell size

* Update translations

* Is the YAML formatted right this time? 🙈

* Remove email placeholder

Fixes an issue where the table would jump if an email was unhidden that was longer than the placeholder.

* Re-order lib translations

* Clicking blurred email now unblurs

* Correct header class

* Improve edit user button centring

* Improve vertical row item centering

* Fix incorrect column length in aria attribute

* Use .Button--text!
2021-04-22 23:35:42 +01:00
flarum-bot
88fcc352a5 Bundled output for commit 90ffa6305649116b4ce3d85320af5d7f039a0892 [skip ci] 2021-04-21 11:27:23 +00:00
David Wheatley
90ffa63056 Fix uses of loading spinner (#2797)
* Update Loading Indicator

- Fix mistake in LoadingIndicator Less
- Middle align the loading indicator when inline
- Fix Loading Indicator not correctly accepting container class names
- Add inline and block attributes

* Fix loading indicator in composer

* Fix loading indicator on notification list

* Fix loading indicator on discussion page

* Fix loading indicator on button

* Update more uses of loading indicator

* Fix loading indicator in Search box

* Fix AvatarEditor loading spinner

* Set default spinner props

* Replace "tiny" with "small" in Less

* Improve spinner vertical centring in buttons

* Reduce size specificity

* Use single attribute for block/inline

* Use new display attribute

* Use classes for different sizes

* Use `display=block` by default
2021-04-21 12:26:09 +01:00
flarum-bot
83ed624223 Bundled output for commit e407c6678471368273eb6fadc4a018849149816e [skip ci] 2021-04-21 09:59:51 +00:00
Sami Mazouz
e407c66784 New mentions format, decouple usernames from mentions (#65)
* Convert user mentions to new `@"Display Name"#ID` format

* Handle deleted user's mentions

* Convert post mentions to `@"Display Name"#pID` format

* Handle deleted user's post mentions and deleted posts mentions

* Clean display name of `"#{letters}{numbers}` (replace with underscore _)

* Adapt integration tests to new mention formats

* Use a deleted attribute for user mentions

* Introduce cleanDisplayName util

* Detect new format with autocomplete

* Slug needed on rendering only

* Invalidate user mention tag when ID is invalid
This used to be implicitly done, when there was a username attribute configured, formatter would check that all attributes are available and if not invalidate.

since we now only have `displayname` and `id` attributes which are both available from the regex matching, formatter doesn't implicitly invalidate anymore and therefore validates ANY matches. So we explicitly invalidate the tag when the ID does not match a user.

* Allow username mention format with a setting

* Add tests for turning setting on/off

* Move setting check to tag filter
Because the configurator caches, changing the setting only takes effect after the cache is cleared.

* fix: showing autocomplete at the right moment

* Add dockblocks to explain unparsing process
2021-04-21 10:58:54 +01:00
Alexander Skvortsov
401672aac4 Combine search tests
#b4738febaa2e9a34cea181b621016b50a145115d and #0fb3548f46719090579a5ef4e8cda26234d24943
 both added/improved searching tests, but did so in separate files. As a result, the tests did not consider each other, and when both were merged, started failing. This commit combines the tests into one file that tests both order and search in titles.
2021-04-20 19:16:59 -04:00
Sami Mazouz
b4738febaa Add user id slug driver (#2787) 2021-04-20 23:52:53 +01:00
Alexander Skvortsov
04115e28c1 Fix searching titles in discussions (#2698)
* Fix searching titles in discussions

* Apply fixes from StyleCI

* Fix tests

* Distinct by discussion ID

* Replace distinct with groupBy

Co-authored-by: Alexander Skvortsov <askvortsov1@users.noreply.github.com>
2021-04-20 18:52:14 -04:00
Alexander Skvortsov
3b3cbdc82f Fix conflicts with other extension visibility scoping (#26)
Wrapping all `wheres` in an `orWhere` ensures that there's no conflict.

See https://github.com/flarum/core/issues/2798, https://github.com/flarum/docs/pull/200
2021-04-20 14:51:01 -04:00