Commit Graph

3236 Commits

Author SHA1 Message Date
8a57922833 For now, inject URL generator instead of providing helper method. 2015-05-28 23:46:56 +02:00
76114f2979 Implement helper for generating routes in API actions. 2015-05-27 23:59:41 +02:00
9526dbf210 Create URL generator interface.
Also bind a default implementation to the container.
2015-05-27 23:58:43 +02:00
2741923714 Improvements to change/forgot password 2015-05-27 16:25:44 +09:30
696bfe5a07 Improve email changing/confirmation stuff 2015-05-27 16:24:54 +09:30
8f0989fb80 Various appearance tweaks 2015-05-27 16:22:02 +09:30
6fed357605 Allow ActionButtons to be disabled 2015-05-27 16:21:15 +09:30
c5d820a92d Hide "mark all as read" button from guests 2015-05-27 16:19:40 +09:30
796c2590a2 Add unread indicator to scrubber. closes #94 2015-05-27 16:18:21 +09:30
7ab3437136 Switch admin app to new PSR-7 driven architecture 2015-05-27 03:02:10 +02:00
95677e05e3 Add another abstract action base class for dealing with returned views 2015-05-27 03:01:09 +02:00
cff0e96eaa Implement helper method for redirecting 2015-05-27 02:48:08 +02:00
05cecf080e Fixes to comply with PSR-2 2015-05-27 02:37:27 +02:00
97e43c5431 Update ForgotAction to comply with changes in base class 2015-05-27 01:58:39 +02:00
343da9fc40 Extract another middleware from API routing 2015-05-27 01:55:46 +02:00
3ff230dc26 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
910d96f905 Fix a typo 2015-05-27 01:49:14 +02:00
be97f5f303 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
22c0f3ec9e Require FastRoute and the PSR-7 interfaces. 2015-05-27 01:49:14 +02:00
1ec2a4c742 Update email address confirmation subject 2015-05-26 18:07:27 +09:30
dee9bb1c6d Tweak post-signup welcome appearance 2015-05-26 18:05:20 +09:30
20dfc6c341 Retain relevant data when switching between login/signup modals 2015-05-26 18:05:07 +09:30
e5532d9618 Roughly implement change password/email, delete account modals 2015-05-26 18:03:02 +09:30
a4a0092513 Fix error when rendering deleted user 2015-05-26 18:02:04 +09:30
4849e423eb Redraw discussion list items if user marks all as read 2015-05-26 18:01:05 +09:30
61e110b245 Don't show load more button unnecessarily 2015-05-26 18:00:41 +09:30
85ba97ed5c Improve appearance/behaviour of login/signup/forgot modals 2015-05-26 16:25:25 +09:30
5fc2f3aeee Better handling of API server errors 2015-05-26 11:43:20 +09:30
feb4676aa0 Very rough implementation of forgot password 2015-05-26 11:14:06 +09:30
d481a38029 Old code, don't need these! 2015-05-23 08:36:14 +09:30
d1dfa92d6b Prevent composer from accidentally redrawing when reply button is clicked 2015-05-23 08:36:00 +09:30
1dc036da65 Only do double redraw if there is a component we need to get rid of 2015-05-23 08:35:12 +09:30
c4614788c6 Make the invoker responsible for positioning the composer cursor 2015-05-23 08:34:54 +09:30
9d7be35837 Fix notification grid row/column not toggling when first cell is disabled 2015-05-21 15:59:35 +09:30
7a1ae67192 Make loading indicators stand out less when using a custom primary color 2015-05-21 15:58:56 +09:30
f54acebaf0 Fix bad logic in edit permission that was allowing guests to edit posts. Closes #88 2015-05-21 15:53:59 +09:30
d69e481037 Make hero light 2015-05-21 13:10:25 +09:30
ca343edf00 Bump up discussion list title size again 2015-05-21 13:09:26 +09:30
935e2d272a Force redraw of composer component when switching in a new one 2015-05-21 13:08:33 +09:30
e1201c968b Maintain scroll position relative to bottom of hero when switching categories 2015-05-21 08:15:58 +09:30
41ecfa348d Performance improvements 2015-05-21 06:49:07 +09:30
edc59f37e3 PSR-2: Remove empty lines 2015-05-20 12:33:26 +09:30
3c7078b423 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
98b3d0f89e 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
f2d1100ec3 Fix broken DeleteAction 2015-05-20 11:13:32 +09:30
80c0900388 Just being picky 2015-05-20 11:12:48 +09:30
5fede6fe6d Limit notifications to one per user when dispatching events 2015-05-19 11:24:43 +09:30
248c19de73 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
0724aec77e Fix broken notification emailer 2015-05-19 10:53:17 +09:30
54c2eaff8e Fix notification preferences not being enabled by default 2015-05-19 10:12:19 +09:30