Toby Zerner
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
Toby Zerner
03b47c3591
Prevent moment deprecation warning
2015-05-19 10:12:18 +09:30
Toby Zerner
f35fe5d0e2
Actually implement persistent avatar removal in the front-end
2015-05-19 09:27:04 +09:30
Toby Zerner
5fff4791f8
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
Toby Zerner
0dda55d06a
GitHub for Mac sucks, why does it leave out a file sometimes?
2015-05-18 18:50:43 +09:30
Toby Zerner
9135749bb4
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
1b4b03356a
Better API error handling
2015-05-18 18:13:16 +09:30
Toby Zerner
e879a65a0c
Show composer after discussion is reloaded following login
2015-05-18 15:38:19 +09:30
Toby Zerner
8cba7ad3f2
Clicking on an index nav item should always refresh the discussion list
2015-05-18 15:27:39 +09:30
Toby Zerner
4c3712f9b0
Refresh discussion after logging in. Fixes #68
2015-05-18 15:07:04 +09:30
Toby Zerner
cfd6873461
Only allow user profile to be edited if user has permission. Fixes #72
2015-05-18 14:58:59 +09:30
Toby Zerner
e4b15d72da
Make avatar edit menu extensible
2015-05-18 14:58:23 +09:30
Toby Zerner
4534d8ddda
Fix broken login/signup links
...
They’re still broken, hoping that
https://github.com/babel/babel/issues/1150#issuecomment-102881157 will
fix
2015-05-18 14:58:08 +09:30
Toby Zerner
9d8afce204
Don't affix the sidebar if it is taller than the viewport. fixes #79
2015-05-18 14:47:08 +09:30
Toby Zerner
3462dd68d2
Set document.title on every page
2015-05-18 14:28:15 +09:30
Toby Zerner
d904efb556
Actually fade out post when it is being edited
2015-05-18 14:27:29 +09:30
Toby Zerner
7f48a98af8
Make discussion edit permission specific to renaming
2015-05-18 12:34:03 +09:30
Toby Zerner
895fad928d
Fix broken composer extensibility
2015-05-18 10:55:07 +09:30
Toby Zerner
e1a96fc284
Oops duplicate method name
2015-05-18 10:48:48 +09:30
Toby Zerner
aa2bc23039
Drastically improve how the composer looks and behaves
...
- New, cleaner, more prominent look
- Make it statically positioned down the bottom on mobile, so you can
still scroll up to look at posts
- Fix some bugs with animation, jumping between views
2015-05-18 10:40:14 +09:30
Toby Zerner
e6362a222e
Fix sometimes trying to jump to NaN in the stream
2015-05-18 10:37:47 +09:30
Toby Zerner
0a3daee326
Add a space between avatar/username for better display on mobile
2015-05-18 10:37:24 +09:30
Toby Zerner
39437c86bb
Minimise composer when exiting a page, rather than entering it
2015-05-18 10:37:07 +09:30
Toby Zerner
a8a2596228
Properly initialise subtree retainers
2015-05-18 10:35:12 +09:30
Toby Zerner
2820b76c9b
Make discussion list includes extensible
2015-05-14 23:10:11 +09:30
Toby Zerner
fe81f71d73
Note for the future
2015-05-14 22:41:08 +09:30
Toby Zerner
d96da61b1b
New look for notifications
2015-05-14 22:41:08 +09:30
Toby Zerner
3aab626b22
Add pulsate/flash animations for drawing attention to posts
2015-05-14 22:41:07 +09:30
Toby Zerner
be6b620457
Transform post time into a date
2015-05-14 22:41:06 +09:30
Toby Zerner
bb04d91b08
Add helper function for punctuating a list
...
e.g. [1,2,3] ⇒ [1, ‘, ‘, 2, ‘, and’, 3]
2015-05-14 22:41:06 +09:30
Toby Zerner
28aa7ed62f
Add methods for doing stuff in text editor
...
Used by the mentions extension
2015-05-14 22:41:06 +09:30
Toby Zerner
a06a973d89
Only give dropdown menu items padding if they have an icon
2015-05-14 22:41:06 +09:30
Toby Zerner
dbf6a043a6
Automatically hook up onload/config functions
...
So that every component's DOM can be config'd by extensions
2015-05-14 22:41:06 +09:30
Toby Zerner
228c9f1214
Add convenience route generation functions
...
Many instances throughout the app need to be updated to use these :)
2015-05-14 22:41:06 +09:30
Toby Zerner
e0b778729d
Make discussion actions public; use existing reply composer if it's already set up
2015-05-14 22:41:06 +09:30
Toby Zerner
ba437660db
Fix up post stream jumping to index
2015-05-14 22:41:06 +09:30
Toby Zerner
781dc2ef0c
New component for post excerpts, which will be shown in search results
...
Perhaps also in user activity stream. They are used in the mentions
extension.
In order to generate the excerpt, each formatter can implement a
“strip” method which basically converts block formatting into inline
formatting.
2015-05-14 22:41:05 +09:30
Toby Zerner
e5340b8ff7
Don't be so picky about the slug
2015-05-14 22:41:05 +09:30
Toby Zerner
aa765e3119
Only add initial posts to the post stream if they have content
2015-05-14 22:41:05 +09:30
Toby Zerner
4baac3fab1
Prevent JS error for now
2015-05-14 22:41:05 +09:30
Toby Zerner
25dd66028b
Nicer API for changing discussion request includes (array instead of string)
2015-05-14 22:41:05 +09:30
Toby Zerner
2c0b87f8c2
Don't bother confirming exit if there's no content
2015-05-14 22:41:05 +09:30
Toby Zerner
9328277961
Focus at the end of the textarea when showing composer
2015-05-14 22:41:05 +09:30
Toby Zerner
a8d762abff
Make text editor's controller accessible
2015-05-14 22:41:05 +09:30
Toby Zerner
6e6f81b6ff
Tweak composer anchoring/animation
2015-05-14 22:41:04 +09:30
Toby Zerner
e8e3bc005d
Prevent re-showing the composer when it's already showing
2015-05-14 22:41:04 +09:30
Toby Zerner
b682cf1575
Update the discussion's post relationship when a reply is added
2015-05-14 22:41:04 +09:30
Toby Zerner
7c1c5f07d3
Make it possible for extensions to modify data before saving
2015-05-14 22:41:04 +09:30
Toby Zerner
4d17e172a7
Close the drawer when page content is touched. Fixes #69
2015-05-11 11:03:40 +09:30
Toby Zerner
5aafc8ce62
Make sure discussion list subtrees don't go missing. Fixes #66
2015-05-11 10:47:42 +09:30
Toby Zerner
535276ca93
Remove circular dependency that was breaking the app
2015-05-07 22:14:31 +09:30
Toby Zerner
0f3d7ceafe
Don't let a discussion have an empty slug as it messes with the router
2015-05-07 16:53:57 +09:30
Toby Zerner
fb788168b4
Fix post deletion error
2015-05-07 16:53:39 +09:30
Toby Zerner
aa1e0ef687
Fix user activity load more
2015-05-07 16:53:30 +09:30
Toby Zerner
a5b2a3da03
Work around Mithril bug
2015-05-07 15:41:04 +09:30
Toby Zerner
16c6bd4f23
Clean up discussion list retaining mechanism
2015-05-07 10:27:29 +09:30
Toby Zerner
6b8dfdfb1c
Retain scroll position when navigating between index/discussion
2015-05-07 10:27:04 +09:30
Toby Zerner
a1ce2fa2ef
Prevent expensive redrawing in the discussion list
2015-05-07 09:19:57 +09:30
Toby Zerner
ad042fb0ef
Fix discussion list pagination
2015-05-07 08:58:04 +09:30
Toby Zerner
dc7d1fdefa
Tweak user card hover trigger
...
So that it doesn’t appear when hovering over badges
2015-05-06 12:23:48 +09:30
Toby Zerner
b839c721e1
Fix replying when not logged in
2015-05-06 12:13:25 +09:30
Toby Zerner
46553de539
Fix admin URL
2015-05-06 11:35:21 +09:30
Toby Zerner
99dc94e238
Remove placeholder user controls for now
2015-05-06 11:29:58 +09:30
Toby Zerner
54f731942e
Add user group badges
2015-05-06 11:25:19 +09:30
Toby Zerner
707c60d3ab
Tweak user card UI
2015-05-06 11:24:42 +09:30
Toby Zerner
7f828fffbb
Cleanup
2015-05-06 11:22:03 +09:30
Toby Zerner
69b6266ea9
Fix avatar dropdown UI
2015-05-06 11:21:50 +09:30
Toby Zerner
ff6523a82a
Add icon to notification preferences
2015-05-06 08:33:12 +09:30
Toby Zerner
45033d7d59
Fix up hidden post styles; don't show user card
2015-05-06 08:33:00 +09:30
Toby Zerner
8e1ba5a2af
Dasherize post/notification type class names
2015-05-06 08:32:33 +09:30
Toby Zerner
cc73b5fc56
Fix notifications dropdown closing when unread count is updated
2015-05-05 17:30:36 +09:30
Toby Zerner
efeb236feb
Change notification type components to be like post types
2015-05-05 17:30:18 +09:30
Toby Zerner
a822deaa98
Clean up post type heritable view arguments
2015-05-05 17:29:43 +09:30
Toby Zerner
11b39605e2
Refactor post components and controls
2015-05-05 17:07:12 +09:30
Toby Zerner
762137c6df
Move discussion controls out of lib and into forum
2015-05-05 17:06:46 +09:30
Toby Zerner
0824634a83
Return true if the composer was shown
2015-05-05 17:06:05 +09:30
Toby Zerner
e0936d8100
Add convenience method to get a record by a property
2015-05-05 17:05:16 +09:30
Toby Zerner
1eef01da05
Simplify model registration
2015-05-05 17:05:02 +09:30
Toby Zerner
220c1ac2d1
Change extend function so that a value doesn't have to be returned
...
override should be used instead to override the return value.
2015-05-05 17:04:42 +09:30
Toby Zerner
701eb6c2dd
Clean up discussion renamed notification
2015-05-05 14:27:59 +09:30
Toby Zerner
f0219de93f
Fix admin
2015-05-05 09:16:53 +09:30
Toby Zerner
342c8db5bd
Share bower components between forum/admin
2015-05-05 09:16:34 +09:30
Toby Zerner
45ab262547
API for syncing added/removed posts after a discussion is updated
2015-05-04 12:17:26 +09:30
Toby Zerner
ae2930dc35
Show login modal if replying as guest; disable button if no permission
...
Also hide the first item in dropdown-split menus
2015-05-04 11:08:45 +09:30
Toby Zerner
538784744c
Show login modal when starting a discussion as a guest
2015-05-04 10:44:03 +09:30
Toby Zerner
ebcf045ca1
Ability to clear a retained subtree
2015-05-04 10:43:40 +09:30
Toby Zerner
95c192c380
Fix logout redirection
2015-05-04 10:30:38 +09:30
Toby Zerner
f31973981c
Fix override util super context
2015-05-04 10:30:29 +09:30
Toby Zerner
2288be12ff
Fix issue with Mithril 0.2.0 (invalid m.route call)
2015-05-04 10:30:06 +09:30
Toby Zerner
041bef1f78
Update mithril
2015-05-04 10:29:38 +09:30
Toby Zerner
abe7b1fd2e
Don't enable pane pinned by default
2015-05-04 08:54:47 +09:30
Toby Zerner
9dd56bf0a4
Prevent error when discussion doesn't have any posts
2015-05-03 12:09:05 +09:30
Toby Zerner
d9d190b772
Gracefully handle non-existent/deleted users during rendering
2015-05-03 12:08:41 +09:30
Toby Zerner
f2e2d59e6f
Use new sort criteria format
2015-05-03 12:08:12 +09:30
Toby Zerner
318e8d2f33
Use new config property name in avatar editor
2015-05-03 11:53:11 +09:30
Toby Zerner
3ff0b806a4
All method should return an array, not an object
2015-05-02 08:47:10 +09:30
Toby Zerner
58833b9fdb
Allow list items to specify a wrapper class
2015-05-02 08:46:52 +09:30
Toby Zerner
ea9d49b15e
Allow extensions to easily override a function and call super
2015-05-02 08:46:38 +09:30
Toby Zerner
74bd697de9
Cleanup
2015-05-02 08:45:52 +09:30
Toby Zerner
b829edb07c
Redraw after hiding modal
2015-05-02 08:45:24 +09:30
Toby Zerner
7d12f7853b
Allow components to initialise props
2015-05-02 08:45:11 +09:30
Toby Zerner
3796193291
Only add a post to the post stream once
2015-05-02 08:44:52 +09:30
Toby Zerner
e9f0ef83b0
Remove posts from the post stream by ID
2015-05-02 08:44:42 +09:30
Toby Zerner
5fad4acd76
Use new config keys
2015-05-02 08:44:03 +09:30
Toby Zerner
ffc2863f70
Extensibility: discussion list params
...
Also give the root controller the name of the current route so they can
easily route back to it
2015-05-02 08:43:38 +09:30
Toby Zerner
288fd694a8
Extensibility: data when starting a new discussion
2015-05-02 08:39:44 +09:30
Toby Zerner
f15e7c6501
Extensibility: posts on user activity stream
2015-05-02 08:38:24 +09:30
Toby Zerner
fe0c2d0632
Extensibility: params for discussion page API request
2015-05-02 08:38:05 +09:30
Toby Zerner
8bc09551bb
Extract discussion controls into the model
2015-05-02 08:36:59 +09:30
Toby Zerner
fbdd730ce3
Make discussion hero extensible
2015-05-02 08:36:04 +09:30
Toby Zerner
4d04d801d1
Unify icon class name, change the way icons are floated in menus
2015-05-02 08:32:45 +09:30
Toby Zerner
e4a880c4f4
Skin colour tweaks
2015-05-02 08:29:43 +09:30
Toby Zerner
ec343cb442
Ability to merge list items
2015-05-02 08:28:02 +09:30
Toby Zerner
68c0cdb1a9
Combine route/query params in route construction
...
One params object is passed, and then route params are extracted into
the route and the rest are appended as query params.
2015-05-02 08:21:40 +09:30
Toby Zerner
72be607a17
Preload session as the last step in initialisation before boot
...
Can’t remember why…
2015-05-02 08:18:45 +09:30
Toby Zerner
a0ade68d65
Fix pin button active state
2015-04-25 23:26:43 +09:30
Toby Zerner
b68a4711dc
Replace Ember app with Mithril app
2015-04-25 22:28:39 +09:30