Commit Graph

8460 Commits

Author SHA1 Message Date
Toby Zerner
cb1dfe1726 Remove box from excerpts again 2015-05-21 13:07:46 +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
7ab72a5f28 Fix for new activity API 2015-05-21 06:49:27 +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
ba31890aa4 Update for new notifications API 2015-05-20 12:32:17 +09:30
Toby Zerner
360b503357 Update for new notifications API, add user activity feed integration 2015-05-20 12:32:08 +09:30
Toby Zerner
ee7044615b Make sure we don't parse post mentions as user mentions 2015-05-20 12:31:35 +09:30
Toby Zerner
cfb6ad7902 Update for new activity API 2015-05-20 12:31:07 +09:30
Toby Zerner
72a676ddfd Update for new notifications API 2015-05-20 12:30:57 +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
643726df43 Fix undefined variables 2015-05-19 11:23:35 +09:30
Toby Zerner
978ecd369d Email notifications. Too easy! 2015-05-19 11:02:02 +09:30
Toby Zerner
4080a76a99 Don't parse user mentions with a # ahead of them 2015-05-19 11:01:50 +09:30
Toby Zerner
2101250eaa Only notify when a post is created, not edited 2015-05-19 11:01:11 +09:30
Toby Zerner
fdc82b5273 Add notification preferences 2015-05-19 11:00:49 +09:30
Toby Zerner
2a6403a6a7 Reset original content before inserting the mention 2015-05-19 11:00:29 +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
Franz Liedke
eb403d7bae Fix the config table seeder
It should include the "extensions_enabled" key which is read
when initializing all extensions.
2015-05-19 01:53:37 +02:00
Toby Zerner
9fdafcc014 Disable composer textarea before it has fully slid up
Prevents early focusing of the textarea while it is still off the edge
of the viewport, which was causing scroll position to jump
2015-05-19 09:17:48 +09:30
Franz Liedke
50ed24698d Travis: Only test against PHP 5.4
This is enough for now since we don't have any unit tests, only
code standard checks.
2015-05-19 01:24:11 +02:00
Franz Liedke
3200697489 Update PHPCS dependency 2015-05-19 01:22:52 +02:00
Franz Liedke
07e3556cab Also check code style in migrations folder. 2015-05-19 01:22:34 +02:00
Franz Liedke
fc20c0dd09 Fix migrations to comply with PSR-2 2015-05-19 01:22:09 +02:00
Franz Liedke
803d446bbb Fix remaining PSR-2 issues. 2015-05-19 01:07:22 +02:00
Franz Liedke
0ca4e1ab7b Fix coding standards to conform to PSR-2 2015-05-19 01:03:12 +02:00
Franz Liedke
dcd67b9d5c Primary key for access tokens table 2015-05-19 00:46:04 +02:00
Franz Liedke
0f8968ee63 Explicitly specify length for string columns.
The missing length attributes caused problems with too long indices.
2015-05-19 00:20:36 +02:00
Franz Liedke
5b5a213143 Fix code error, static methods can not be abstract. 2015-05-18 17:17:10 +02:00
Toby Zerner
e0401469dd Tweak notifications appearance 2015-05-18 18:56:11 +09:30
Toby Zerner
ed98a18681 Rename JS sub-components so that descriptors are before the noun, not after 2015-05-18 18:50:58 +09:30
Toby Zerner
6bfecec9f2 Rename JS sub-components so that descriptors are before the noun, not after 2015-05-18 18:50:54 +09:30
Toby Zerner
736824d45c Rename JS sub-components so that descriptors are before the noun, not after 2015-05-18 18:50:50 +09:30
Toby Zerner
9befc68ea3 GitHub for Mac sucks, why does it leave out a file sometimes? 2015-05-18 18:50:43 +09:30
Toby Zerner
58adcfa3c4 Rename JS sub-components so that descriptors are before the noun, not after
To be consistent with the naming in PHP world.

e.g. ReplyComposer instead of ComposerReply
2015-05-18 18:50:24 +09:30
Toby Zerner
2be7c4affc Rename ActivityPost to EventPost 2015-05-18 18:47:55 +09:30
Toby Zerner
c99055c6a3 Rename ActivityPost to EventPost 2015-05-18 18:47:49 +09:30
Toby Zerner
6bdf36253c Rename ActivityPost to EventPost 2015-05-18 18:47:34 +09:30