Commit Graph

514 Commits

Author SHA1 Message Date
Toby Zerner
f42c3cd1ed Allow admins to delete users 2015-08-05 12:08:28 +09:30
Toby Zerner
1679f1e27b Implement edit user modal
EditUserHandler is a bit rough
2015-08-05 11:49:37 +09:30
Toby Zerner
f49d0e5341 Allow locale to be selected in footer 2015-08-05 09:50:57 +09:30
Toby Zerner
48df9bb678 Fix syntax error 2015-08-04 21:50:44 +09:30
Toby Zerner
187517a9c7 Remove ability for users to delete themselves 2015-08-04 21:35:41 +09:30
Toby Zerner
5fa7a8c555 Add the parsedBody to API request input 2015-08-04 21:22:40 +09:30
Franz Liedke
eee34598f1 Include editUser relationship when editing posts.
Closes flarum/core#214. Hopefully. :)
2015-08-04 13:15:56 +02:00
Toby Zerner
e091b037f3 Radically simplify user activity system
The activity system we were using was built around a separate table.
Whenever the user posted something, or deleted a post, we would sync
the table. The advantage of this was that we could aggregate activity
of all different types very efficiently.

It turns out that it came with a huge disadvantage: there was no
efficient way to enforce permissions on activity. If a user posted
something in a private tag, everyone could still see it on their
activity feed. My stopgap solution was to only sync activity for posts
that are viewable by guests, but that was way too limited.

It also turns out that aggregating activity of different types is
really not that useful, especially considering most of it is the user
making posts. So I've gotten rid of that whole overly-complicated
system, and just made the user profile display separate lists of posts
and discussions, retrieved from those respective APIs. The discussions
page is an actual discussion list too, which is pretty cool.

It's still technically possible to aggregate different activity types
(basically just aggregate API responses together), but we can do that
later if there's a need for it.

This is probably my favourite commit of the day :)
2015-08-04 18:44:22 +09:30
Toby Zerner
a2c3c4e51b Only add posted activity if the post is visible publicly
This is very restrictive behaviour and we'll probably need to think of
something a bit more powerful in the future. But it's a good stopgap.
2015-08-04 17:47:46 +09:30
Toby Zerner
667fe56947 Use morphTo instead of mappedMorphTo
Turns out we don't need MappedMorphTo after all.
2015-08-04 17:33:58 +09:30
Toby Zerner
556b93e367 Add admin client JS/LESS to extension stub 2015-08-04 17:18:45 +09:30
Toby Zerner
9700fbbb0b Add API to add translations to admin client
Again, I'll split up these APIs soon enough
2015-08-04 17:16:34 +09:30
Toby Zerner
7ed3834dc9 Include discussion last user relationship in response after creating post 2015-08-04 17:15:57 +09:30
Toby Zerner
5b3484d3c8 Improve error handling somewhat
- Fix composer crashing/not showing alert on error
- Make a general ValidationException which takes an array of field ⇒
messages to be outputted nicely by the API
2015-08-04 13:03:46 +09:30
Toby Zerner
2e4d38b3e7 Move config/permission actions to API; clean up cache flushing 2015-08-04 10:40:04 +09:30
Toby Zerner
83e8503df1 Rough implementation of appearance settings 2015-08-03 14:35:51 +09:30
Toby Zerner
70901b1420 Rough extension management implementation 2015-08-03 12:03:30 +09:30
Toby Zerner
66ee6e57ee Convert permission IDs into strings 2015-08-02 18:02:35 +09:30
Toby Zerner
025d8f691d Add API methods to add POST/DELETE routes to the API 2015-08-02 17:26:30 +09:30
Toby Zerner
6f09ba6591 Clean up 2015-07-31 20:17:17 +09:30
Toby Zerner
fde7afd3e2 Finish admin permissions page and clean up everything 2015-07-31 20:16:47 +09:30
Toby Zerner
5706c71c86 Convert email/password token date fields 2015-07-31 20:14:19 +09:30
Toby Zerner
ba41c5313a Allow for the addition of admin assets
I think the `BuildClientView` event should ultimately be split into two
separate events for the forum/admin clients, but this is fine for now.
2015-07-31 20:13:13 +09:30
Toby Zerner
4e0cfdc1b2 Allow for the addition of new API endpoints 2015-07-31 20:11:44 +09:30
Toby Zerner
cea8e7f567 Add group management actions to API 2015-07-31 20:10:49 +09:30
Toby Zerner
6641af3ac3 Refactor some model stuff out into traits 2015-07-31 20:09:31 +09:30
Toby Zerner
e204794b91 Allow custom variables to be set on the client app 2015-07-31 20:08:27 +09:30
Toby Zerner
513d896f51 Fix more aspects of the password reset process 2015-07-31 14:13:35 +09:30
Toby Zerner
8db17b3fb8 Fix password saving 2015-07-31 14:00:42 +09:30
Toby Zerner
42fd8e26c1 Begin implementing permissions page 2015-07-29 21:00:27 +09:30
Toby Zerner
f96cac6057 Implement basic settings page 2015-07-29 21:00:09 +09:30
Toby Zerner
e863bd53d3 Get admin area working again 2015-07-29 20:58:22 +09:30
Toby Zerner
d8d9cac7c3 Enable caching of minified formatter JS 2015-07-29 20:54:48 +09:30
Toby Zerner
97334bea12 Don't display notifications with deleted subjects 2015-07-28 17:15:09 +09:30
Toby Zerner
8f29949016 Fix email confirmation 2015-07-28 17:14:08 +09:30
Toby Zerner
02944548a1 Clean up 2015-07-28 15:35:03 +09:30
Toby Zerner
697cb2ed63 Supporting routing of URL with nothing after the discussion ID
closes flarum/core#181
2015-07-28 13:46:43 +09:30
Toby Zerner
8c18ff3349 Tweak TextFormatter JS settings 2015-07-28 12:44:58 +09:30
Toby Zerner
62a01c69a9 Make sure sort key exists 2015-07-28 12:27:59 +09:30
Toby Zerner
3489791932 Allow customisation of the client layout 2015-07-27 14:45:35 +09:30
Toby Zerner
153a5b7ce4 PERF: avoid reinstantiation of event subscribers 2015-07-27 11:53:47 +09:30
Toby Zerner
c0d57fd399 PERF: further simplify User::hasPermission() 2015-07-27 11:20:18 +09:30
Toby Zerner
07b4a5125f PERF: cache the results of User::hasPermssion() 2015-07-27 11:17:21 +09:30
Toby Zerner
b04e7f96c8 Cache model dates 2015-07-27 10:59:24 +09:30
Toby Zerner
e5e737eca4 Update LESS variable names 2015-07-24 10:03:11 +09:30
Toby Zerner
ae3bbc1700 Replace duplicate tags instead of erroring 2015-07-23 20:29:39 +09:30
Toby Zerner
c1b12c7fc9 Extract emoticons, BBCode, and Markdown into extensions 2015-07-23 20:24:41 +09:30
Toby Zerner
cb3004b6de Various fixes to extension generator/stub 2015-07-23 20:24:28 +09:30
Toby Zerner
c8e6fbc338 Pass correct param to notification email views 2015-07-23 16:39:56 +09:30
Toby Zerner
8c6e87760c Docblock cleanup 2015-07-23 14:35:17 +09:30
Toby Zerner
53326e509c Number is a filter, not page param 2015-07-23 14:34:19 +09:30
Toby Zerner
5b54a122c9 Notification one-per-user limit should work between instances 2015-07-23 14:33:58 +09:30
Toby Zerner
6d57f902b3 Ensure we don't preload index data on non-index pages 2015-07-23 14:33:31 +09:30
Toby Zerner
b699bbadbc Make formatter extensible 2015-07-23 14:29:33 +09:30
Toby Zerner
34b7a2fbf6 Move locale files 2015-07-22 16:05:24 +09:30
Toby Zerner
8442f65cdf Fix post visibility scoping 2015-07-22 16:05:11 +09:30
Toby Zerner
017c258e46 Live preview of post editing/replying thanks to TextFormatter 👏 2015-07-22 16:05:00 +09:30
Toby Zerner
a0fe68272c Implement TextFormatter for posts
Get rid of formatting on user bios, we'll do that with JavaScript
2015-07-22 16:03:48 +09:30
Toby Zerner
6c50f1614b Group assets by client in extension stub 2015-07-22 10:12:11 +09:30
Toby Zerner
4fb292a777 Always use default includes when preloading discussion list
Making them explicit causes problems when extensions want to include
something by default (e.g. tags)
2015-07-22 10:11:23 +09:30
Toby Zerner
57f55c2dd6 Improve forum route registration API 2015-07-22 10:04:22 +09:30
Toby Zerner
c697c734d5 Don't run gambits if there's no search query 2015-07-22 09:57:52 +09:30
Toby Zerner
e1a51f095f Random cleanup 2015-07-22 09:57:25 +09:30
Toby Zerner
d410746c51 Fix new notifications on old subjects not appearing 2015-07-20 18:20:34 +09:30
Toby Zerner
c287d40072 Fix incorrect variable name 2015-07-20 18:10:11 +09:30
Toby Zerner
3820b8c65f Fix incorrect member visibility on event 2015-07-20 18:10:04 +09:30
Toby Zerner
605c56ce3c Update extension generator 2015-07-20 18:08:50 +09:30
Toby Zerner
6b7cf1b6bf Rework extension bootstrapping
System JS modules don't execute when they're registered, so we need to
import them explicitly. While we're at it, we may as well make the
locale bootstrapper a module too.
2015-07-20 18:08:28 +09:30
Toby Zerner
19fe138770 Change order of bootstrapping
See commit on flarum/flarum for explanation
2015-07-20 18:01:08 +09:30
Toby Zerner
57650fa648 Rework public API based on events 2015-07-18 22:59:47 +09:30
Toby Zerner
6ae270db95 Remove duplicates; replace missing commas 2015-07-17 17:47:53 +09:30
Toby Zerner
f93ff7cb3f Make front-end localizable 2015-07-17 17:43:28 +09:30
Toby Zerner
ea29bd42d8 Merge remote-tracking branch 'origin/master' 2015-07-17 15:05:03 +09:30
Toby Zerner
bc750c8694 Fix login action 2015-07-17 14:48:24 +09:30
Toby Zerner
e3bfa8e404 Fix notifications 2015-07-17 14:48:20 +09:30
Toby Zerner
6fa4d25a5b Fix forgot password action 2015-07-17 14:48:06 +09:30
Franz Liedke
fab9bdb0ef Remove unused import 2015-07-16 00:44:02 +02:00
Franz Liedke
48c5574c66 Try to fix some namespace imports 2015-07-16 00:43:49 +02:00
Franz Liedke
9af1519864 Rename import command 2015-07-16 00:38:27 +02:00
Franz Liedke
6b3a86dd87 Move extension loading to boot method
This will likely have to be reverted, to make things like $this->app->extend() work
reasonably well in extensions' service providers.

For now, since we fetch the enabled extensions from the config, there is no other way
for us to guarantee that the config is already available.
2015-07-16 00:36:14 +02:00
Franz Liedke
c2bf0b6b3a Inject SettingsRepository where possible 2015-07-16 00:32:50 +02:00
Franz Liedke
31e9f44dfb Rename caching setting repository implementation
I'm foreseeing another implementation that uses real caching (across requests).
2015-07-16 00:10:52 +02:00
Franz Liedke
6a7889934c Register database and cache implementations as binding for the settings repository 2015-07-15 23:54:56 +02:00
Franz Liedke
ba3fa73f16 Build a caching repository decorator for settings 2015-07-15 23:22:25 +02:00
Franz Liedke
8e9cf4fd2e Move settings repositories to own namespace
Also add a third method to the contract. This will help with building a caching decorator.
2015-07-15 23:16:57 +02:00
Toby Zerner
88b754ee8d Don't include deleted notifications in the unread count 2015-07-15 14:01:11 +09:30
Toby Zerner
0bb00e4eb2 Fix broken user activity syncer 2015-07-15 14:01:11 +09:30
Toby Zerner
ab6c03c0cc Massive JavaScript cleanup
- Use JSX for templates
- Docblock/comment everything
- Mostly passes ESLint (still some work to do)
- Lots of renaming, refactoring, etc.

CSS hasn't been updated yet.
2015-07-15 14:01:11 +09:30
Toby Zerner
42f1fa1272 Improve fulltext search API and interface 2015-07-07 20:35:18 +09:30
Toby Zerner
38c2ff0306 Finish client action refactoring. closes flarum/core#126 2015-07-07 19:23:13 +09:30
Toby Zerner
8a54b362c7 Add todos to document magic properties on models 2015-07-07 19:20:18 +09:30
Toby Zerner
54daad6e7d CSRF protection on logout action 2015-07-07 15:30:13 +09:30
Toby Zerner
99876e9e36 Initial refactor of client actions, data preloading, SEO
An initial stab at flarum/core#126. Still WIP. Preliminary
implementation of flarum/core#128 and flarum/core#13.
2015-07-07 15:29:21 +09:30
Toby Zerner
5fe88e448e Improve post stream
- Return all discussion post IDs from API requests which add/remove
posts, so the post stream updates appropriately. Related to #146
- Always unload posts that are two pages away, no matter how fast
you’re scrolling
- Retrieve posts from cache instead of reloading them
- Fix various bugs. Maybe #152, needs confirmation
2015-07-06 16:26:27 +09:30
Toby Zerner
01ec661c3f PSR-2 fixes 2015-07-05 21:46:57 +09:30
Toby Zerner
873088750f Remove Interface suffix from some classes 2015-07-05 12:30:23 +09:30
Toby Zerner
2cc619a998 Remove todo 2015-07-05 12:25:51 +09:30
Toby Zerner
53e269fd89 Extract model validation into a trait
Also use Laravel’s ValidationException rather than our own custom one
2015-07-05 12:25:08 +09:30
Toby Zerner
04501545e3 Move Group to its own namespace
We’ll need to add commands etc. for group management in the future
2015-07-04 19:30:58 +09:30
Toby Zerner
81170980e0 Don't error if trying to serialise a non-existent relationship 2015-07-04 18:39:43 +09:30