Commit Graph

630 Commits

Author SHA1 Message Date
Franz Liedke
4bb83f060c For now, inject URL generator instead of providing helper method. 2015-05-28 23:46:56 +02:00
Franz Liedke
c76fbd03c7 Implement helper for generating routes in API actions. 2015-05-27 23:59:41 +02:00
Franz Liedke
c4012ed718 Create URL generator interface.
Also bind a default implementation to the container.
2015-05-27 23:58:43 +02:00
Franz Liedke
bbd2625752 Switch admin app to new PSR-7 driven architecture 2015-05-27 03:02:10 +02:00
Franz Liedke
c3c82a9b4f Add another abstract action base class for dealing with returned views 2015-05-27 03:01:09 +02:00
Franz Liedke
fd2ee008fa Implement helper method for redirecting 2015-05-27 02:48:08 +02:00
Franz Liedke
69038857fa Fixes to comply with PSR-2 2015-05-27 02:37:27 +02:00
Franz Liedke
ee8e30910b Update ForgotAction to comply with changes in base class 2015-05-27 01:58:39 +02:00
Franz Liedke
a773970956 Extract another middleware from API routing 2015-05-27 01:55:46 +02:00
Franz Liedke
26c9c17a1b Change API to use PSR-7 style requests and responses
This required some interface changes (mostly changing Laravel's or
Symfony's request and response classes to those of Zend's Diactoros.
Some smaller changes to the execution flow in a few of the abstract
action base classes, but nothing substantial.

Note: The request and response classes are immutable, so we usually
need to return new instances after modifying the old ones.
2015-05-27 01:55:05 +02:00
Franz Liedke
ff3196db4b Fix a typo 2015-05-27 01:49:14 +02:00
Franz Liedke
bc1cecd0b0 Implement a minimal router using FastRoute.
This will be able to dispatch PSR-7-style requests to any callback
that returns a proper response object.

Largely based on my original work for FluxBB 2.0.
2015-05-27 01:49:14 +02:00
Franz Liedke
c1e79858d6 Require FastRoute and the PSR-7 interfaces. 2015-05-27 01:49:14 +02:00
Toby Zerner
86603a1399 Update email address confirmation subject 2015-05-26 18:07:27 +09:30
Toby Zerner
ceacff6be8 Tweak post-signup welcome appearance 2015-05-26 18:05:20 +09:30
Toby Zerner
d6bd6356e3 Retain relevant data when switching between login/signup modals 2015-05-26 18:05:07 +09:30
Toby Zerner
b6be2cddab Roughly implement change password/email, delete account modals 2015-05-26 18:03:02 +09:30
Toby Zerner
5a266ed305 Fix error when rendering deleted user 2015-05-26 18:02:04 +09:30
Toby Zerner
652e41a235 Redraw discussion list items if user marks all as read 2015-05-26 18:01:05 +09:30
Toby Zerner
b3623449c8 Don't show load more button unnecessarily 2015-05-26 18:00:41 +09:30
Toby Zerner
95e5a2d69d Improve appearance/behaviour of login/signup/forgot modals 2015-05-26 16:25:25 +09:30
Toby Zerner
17e57c9baa Better handling of API server errors 2015-05-26 11:43:20 +09:30
Toby Zerner
e47678f403 Very rough implementation of forgot password 2015-05-26 11:14:06 +09:30
Toby Zerner
35b362e393 Old code, don't need these! 2015-05-23 08:36:14 +09:30
Toby Zerner
37fd81c80b Prevent composer from accidentally redrawing when reply button is clicked 2015-05-23 08:36:00 +09:30
Toby Zerner
e86b796fa4 Only do double redraw if there is a component we need to get rid of 2015-05-23 08:35:12 +09:30
Toby Zerner
25ca1135b2 Make the invoker responsible for positioning the composer cursor 2015-05-23 08:34:54 +09:30
Toby Zerner
7232c51290 Fix notification grid row/column not toggling when first cell is disabled 2015-05-21 15:59:35 +09:30
Toby Zerner
7399c75374 Make loading indicators stand out less when using a custom primary color 2015-05-21 15:58:56 +09:30
Toby Zerner
089dafa93d Fix bad logic in edit permission that was allowing guests to edit posts. Closes #88 2015-05-21 15:53:59 +09:30
Toby Zerner
88fee92cd5 Make hero light 2015-05-21 13:10:25 +09:30
Toby Zerner
9f4a475aa8 Bump up discussion list title size again 2015-05-21 13:09:26 +09:30
Toby Zerner
e272ae77e1 Force redraw of composer component when switching in a new one 2015-05-21 13:08:33 +09:30
Toby Zerner
c95b8838ac Maintain scroll position relative to bottom of hero when switching categories 2015-05-21 08:15:58 +09:30
Toby Zerner
8f7e563036 Performance improvements 2015-05-21 06:49:07 +09:30
Toby Zerner
ec65a15767 PSR-2: Remove empty lines 2015-05-20 12:33:26 +09:30
Toby Zerner
500c279fb3 New user activity feed API.
Originally the user activity feed was implemented using UNIONs. I was
looking at make an API to add activity “sources”, or extra UNION
queries (select from posts, mentions, etc.) but quickly realised that
this is too slow and there’s no way to make it scale.

So I’ve implemented an API which is very similar to how notifications
work (see previous commit). The `activity` table is an aggregation of
stuff that happens, and it’s kept in sync by an ActivitySyncer which is
used whenever a post it created/edited/deleted, a user is
mentioned/unmentioned, etc.

Again, the API is very simple (see Core\Activity\PostedActivity +
Core\Handlers\Events\UserActivitySyncer)
2015-05-20 12:30:27 +09:30
Toby Zerner
8edb684ea9 Simplify and improve notifications API.
It turns out that the idea of “sending” a notification is flawed. (What
happens if the notification subject is deleted shortly after? The
notified user would end up with a dud notification which would be
confusing. What about if a post is edited to mention an extra user? If
you sent out notifications, the users who’ve already been mentioned
would get a duplicate notification.)

Instead, I’ve introduced the idea of notification “syncing”. Whenever a
change is made to a piece of data (e.g. a post is created, edited, or
deleted), you make a common notification and “sync” it to a set of
users. The users who’ve received this notification before won’t get it
again. It will be sent out to new users, and hidden from users who’ve
received it before but are no longer recipients (e.g. users who’ve been
“unmentioned” in a post).

To keep track of this, we use the existing notifications database
table, with an added `is_deleted` column. The syncing/diffing is
handled all behind the scenes; the API is extremely simple (see
Core\Notifications\DiscussionRenamedNotification +
Core\Events\Handlers\DiscussionRenamedNotifier)
2015-05-20 12:24:01 +09:30
Toby Zerner
fe8763c3d0 Fix broken DeleteAction 2015-05-20 11:13:32 +09:30
Toby Zerner
de690fad16 Just being picky 2015-05-20 11:12:48 +09:30
Toby Zerner
26fad11f6f Limit notifications to one per user when dispatching events 2015-05-19 11:24:43 +09:30
Toby Zerner
53357ad56f Experimenting with some new ways to handle config
For now I’ve chucked it on Flarum\Core as a static method, but
ultimately I think we will need a ConfigRepository abstraction (whether
it replaces or sits underneath the Flarum\Core static method I’m not
sure).

Also starting to think about multisite scenarios, I think this is
important. The Forum model could actually end up with a database table
behind it, and each forum would have its own config settings? Haven’t
really thought about it too hard yet…
2015-05-19 10:59:57 +09:30
Toby Zerner
1adfe5d867 Fix broken notification emailer 2015-05-19 10:53:17 +09:30
Toby Zerner
48a8beea52 Fix notification preferences not being enabled by default 2015-05-19 10:12:19 +09:30
Toby Zerner
8095809c3f Prevent moment deprecation warning 2015-05-19 10:12:18 +09:30
Franz Liedke
ce742e416b Travis: Send an email for the first failed build
This will notify the committer whenever a build starts failing,
but not on subsequent failures (in order not to annoy @tobscure).
2015-05-19 02:14:56 +02:00
Franz Liedke
48a65ab1a6 Let's not test migrations for code style.
PHPCS (on Travis, not locally?) is complaining about these classes
not being namespaced. Meh.
2015-05-19 02:08:47 +02:00
Toby Zerner
1e5a3d5ea5 Give all users guest permissions as well 2015-05-19 09:36:20 +09:30
Toby Zerner
9fd5995703 Actually implement persistent avatar removal in the front-end 2015-05-19 09:27:04 +09:30
Toby Zerner
927f6e3c9b Fix errors in DeleteAvatarAction/Command 2015-05-19 09:27:04 +09:30