Toby Zerner
a09c86e42d
Revert from a while ago: always append if reference item not found
...
API still needs some work though
2015-06-23 11:12:37 +09:30
Toby Zerner
6e5329047c
Add light horizontal rule between posts. closes flarum/core#133
...
Also remove time information from event posts (it’s not useful)
2015-06-23 10:36:36 +09:30
Toby Zerner
64e5d50533
Allow author to delete discussion if there are no replies
...
Also disallow the first post in a discussion to be deleted or hidden
(thus preventing discussions with zero posts)
closes flarum/core#90 closes flarum/core#92
2015-06-23 10:34:33 +09:30
Toby Zerner
3a7efe202e
Gracefully handle discussions with no posts
...
Although this should never happen
2015-06-23 10:30:06 +09:30
Toby Zerner
45ba693154
Speed up committing of scroll position in URL/marking as read
2015-06-23 10:29:08 +09:30
Toby Zerner
f35a9357f0
Default submit handler for form modals
2015-06-23 10:28:24 +09:30
Toby Zerner
a20e2591e6
Fix broken forgot password form. closes #116
2015-06-20 10:29:57 +09:30
Toby Zerner
63654bf195
Actually sort notifications (please)
2015-06-19 19:10:54 +09:30
Toby Zerner
07e2698504
Make sure notifications are sorted
2015-06-19 19:05:03 +09:30
Toby Zerner
056bf669c8
Ensure we make a new separator
2015-06-19 17:19:27 +09:30
Toby Zerner
004e8919b6
Fix infinite loop when @mentioning in a discussion composer
2015-06-19 15:48:51 +09:30
Toby Zerner
840bbfd995
Don't destroy discussion list in case of a redraw
...
i.e. the one in index-page’s onunload → composer.minimize
2015-06-19 14:34:52 +09:30
Toby Zerner
a714f12f8f
Change criteria to work out which posts are intended to be displayed
2015-06-19 11:19:24 +09:30
Toby Zerner
46347023cc
Implement time gap indicators
...
Get rid of short human times (1m, 1h, 1d) for now
2015-06-19 10:00:19 +09:30
Toby Zerner
32beab9238
Prevent JS error if discussion has been loaded without posts
2015-06-18 17:42:08 +09:30
Toby Zerner
f2b500a6e5
Use truncate for search suggestions
2015-06-18 17:41:47 +09:30
Toby Zerner
822a216cc9
Roughly implement routes and data preloading
...
Only preloading data for basic requests w/o query params, at least for
the moment - if we have to preload for something like
/?q=test&sort=newest, we end up having to duplicate a whole lot of
logic between JS/PHP.
2015-06-18 17:41:37 +09:30
Toby Zerner
2786dbd157
Simplify composer animation
2015-06-18 12:53:19 +09:30
Toby Zerner
bb651899b1
Extract into truncate helper
2015-06-17 18:22:14 +09:30
Toby Zerner
27b9dbe4c4
Clear the page's min-height when navigating away
2015-06-16 17:23:14 +09:30
Toby Zerner
0aed5f44bf
Maintain scroll position when hiding the composer
2015-06-15 12:17:19 +09:30
Toby Zerner
1ff5e06525
Don't add duplicate posts to a discussion
2015-06-15 08:59:57 +09:30
Toby Zerner
66da905763
Fix saving of to-many relationships
2015-06-12 16:41:13 +09:30
Toby Zerner
40c9c7ef59
Add a separator above the delete control
2015-06-12 16:40:57 +09:30
Toby Zerner
5b6f86320d
Return a promise from the new discussion action
2015-06-12 16:40:47 +09:30
Toby Zerner
81dc3a1c48
Make the FormModal component more flexible
2015-06-12 16:40:20 +09:30
Toby Zerner
5c21efe09d
Move between title/post inputs with return and backspace keys
2015-06-12 16:37:43 +09:30
Toby Zerner
52ff2f25ba
Don't pad the body when the composer is minimized
2015-06-12 16:37:19 +09:30
Toby Zerner
4582c18a3d
Improve ordering of list items when specified key doesn't exist
2015-06-11 18:41:13 +09:30
Toby Zerner
525e2b1b3f
Don't anchor scroll when the top of the page has been reached
2015-06-11 18:40:21 +09:30
Toby Zerner
070d8fb04d
Fix scrolling to first post not working
2015-06-11 18:39:36 +09:30
Toby Zerner
0f5156afd4
Fix incorrect visible range in post scrubber
2015-06-11 18:39:12 +09:30
Toby Zerner
ac83cb1cf4
Fix sort menu not displaying the current option
2015-06-11 18:38:48 +09:30
Toby Zerner
16c714012f
Fix incorrect highlighting of post excerpts
2015-06-10 14:42:14 +09:30
Toby Zerner
8b162344cd
Lay the groundwork for translation & refactor asset compilation
...
Ditched the idea of having language packs as extensions. Reasoning:
1. Because we use machine keys for translations (rather than English
keys), extensions need to be able to define default translations. If
English translations are to be included in extensions and not in a
language pack extension, then it doesn’t make sense to have other
languages as language pack extensions. Inconsistency → complexity.
2. Translations should maintain version parity with their respective
extensions. There’s no way to do this if extension translations are
external to the extension.
Instead, localisation will be a core effort, as well as a per-extension
effort. Translators will be encouraged to send PRs to core + extensions.
In core, each locale has a directory containing three files:
- translations.yml
- config.js: contains pluralisation logic for the JS app, as well as
moment.js localisation if necessary
- config.php: contains pluralisation logic for the PHP app
Extensions can use the Flarum\Extend\Locale extender to add/override
translations/config to a locale.
Asset compilation has been completely refactored with a better
architecture. Translations + config.js are compiled and cached for the
currently active locale.
2015-06-10 14:23:56 +09:30
Toby Zerner
77601870e0
Clean up, use time helper rather than util
2015-06-10 13:59:25 +09:30
Toby Zerner
8f856f85db
Externalize babel helpers.
...
Saves 2kB after minify+gzip :D
2015-06-08 15:28:45 +09:30
Toby Zerner
31a3de641f
Use new flarum-gulp package.
2015-06-08 14:57:23 +09:30
Toby Zerner
250e16d970
Make composer sliding animation less jumpy when replying
2015-06-08 09:47:28 +09:30
Toby Zerner
a5ad1fded7
Fix user profile activity regression
2015-06-07 10:12:48 +09:30
Toby Zerner
73396e3e9c
Fix error
2015-06-04 11:12:04 +09:30
Toby Zerner
42851f425b
Rejig formatting API. closes flarum/core#85
...
It works but it’s not the most pretty thing in the world. @franzliedke
Would be great if you could take a look at the whole formatting API and
work your magic on it sometime… my brain is fried!
2015-06-04 10:48:07 +09:30
Toby Zerner
5d89618bbd
Implement search on front end
2015-06-03 18:10:56 +09:30
Toby Zerner
ea510b5ea0
Fix composer only sliding down some of the way
2015-06-03 18:06:39 +09:30
Toby Zerner
5d29265a73
Use icon instead in composer title when replying to another thread
2015-06-01 17:55:05 +09:30
Toby Zerner
8638e9c9ca
Tweak reply placeholder appearance
2015-06-01 17:54:37 +09:30
Toby Zerner
0f9549f4b9
Remove default relationships from serializers
2015-06-01 12:24:06 +09:30
Toby Zerner
7a35f5faf6
Fix/simplify timestamp live updating. closes flarum/core#101
2015-06-01 11:10:15 +09:30
Toby Zerner
be249cbcb5
Scroll to the bottom of the last post when jumping to last
2015-06-01 11:09:39 +09:30
Toby Zerner
47560dbc86
Force redraw to ensure focusing works
2015-06-01 10:43:16 +09:30
Toby Zerner
bfc4201338
Add icon to post edit composer
2015-06-01 10:29:11 +09:30
Toby Zerner
7362aff345
Make replyAction into a promise. closes #100
2015-06-01 10:29:01 +09:30
Toby Zerner
56981c1297
Add reply placeholder to bottom of post stream
2015-06-01 10:28:24 +09:30
Toby Zerner
3f6a3de863
Add 'state helpers', shortcuts to make querying app state easier
2015-06-01 10:26:23 +09:30
Toby Zerner
1153e41b7a
Add text-editor API to get selection range
2015-06-01 08:49:46 +09:30
Toby Zerner
f8d681d9ab
Fix bug where switching composer component would lead to incorrect rendering
2015-06-01 08:49:23 +09:30
Toby Zerner
44a4e31fe1
Simplify active discussion detection
2015-05-31 13:53:02 +09:30
Toby Zerner
8e7634e36d
Fix post scrubber closing on mobile
2015-05-31 11:17:41 +09:30
Toby Zerner
e1f8fbdc32
Prevent error when trying to get relationship and no links have been loaded
2015-05-30 13:58:21 +09:30
Toby Zerner
8e4f4a549c
Re-add event after a discussion has loaded
...
replyAction uses it
2015-05-30 12:06:48 +09:30
Toby Zerner
5db1751660
Add helper to format number with commas
2015-05-30 08:40:29 +09:30
Toby Zerner
ba1ddc0a14
Implement abbreviate-number helper. closes flarum/core#96
2015-05-30 08:08:57 +09:30
Toby Zerner
4edb95e9e2
Sync the discussion model/post stream when posts are added/removed
2015-05-29 18:56:29 +09:30
Toby Zerner
0d1b67274d
Fix edge cases where posts would not be added/removed
2015-05-29 18:55:53 +09:30
Toby Zerner
102a9e498e
Fix incorrect class name
2015-05-29 18:55:29 +09:30
Toby Zerner
456af4273b
Sort included posts
...
They can be out of order in the payload due to relationship loading,
e.g. post #1 includes post #14 that has mentioned it, therefore #14
will be the first post in the payload. The new post stream doesn’t take
kindly to out of order posts.
2015-05-29 18:55:19 +09:30
Toby Zerner
2e82fb4015
Refactor discussion list styles, fix loading indicator height in pane
2015-05-29 18:31:17 +09:30
Toby Zerner
cafa6c7b5d
New and improved post stream.
2015-05-29 18:17:50 +09:30
Toby Zerner
2741923714
Improvements to change/forgot password
2015-05-27 16:25:44 +09:30
Toby Zerner
696bfe5a07
Improve email changing/confirmation stuff
2015-05-27 16:24:54 +09:30
Toby Zerner
6fed357605
Allow ActionButtons to be disabled
2015-05-27 16:21:15 +09:30
Toby Zerner
c5d820a92d
Hide "mark all as read" button from guests
2015-05-27 16:19:40 +09:30
Toby Zerner
796c2590a2
Add unread indicator to scrubber. closes #94
2015-05-27 16:18:21 +09:30
Toby Zerner
20dfc6c341
Retain relevant data when switching between login/signup modals
2015-05-26 18:05:07 +09:30
Toby Zerner
e5532d9618
Roughly implement change password/email, delete account modals
2015-05-26 18:03:02 +09:30
Toby Zerner
a4a0092513
Fix error when rendering deleted user
2015-05-26 18:02:04 +09:30
Toby Zerner
4849e423eb
Redraw discussion list items if user marks all as read
2015-05-26 18:01:05 +09:30
Toby Zerner
61e110b245
Don't show load more button unnecessarily
2015-05-26 18:00:41 +09:30
Toby Zerner
85ba97ed5c
Improve appearance/behaviour of login/signup/forgot modals
2015-05-26 16:25:25 +09:30
Toby Zerner
5fc2f3aeee
Better handling of API server errors
2015-05-26 11:43:20 +09:30
Toby Zerner
feb4676aa0
Very rough implementation of forgot password
2015-05-26 11:14:06 +09:30
Toby Zerner
d1dfa92d6b
Prevent composer from accidentally redrawing when reply button is clicked
2015-05-23 08:36:00 +09:30
Toby Zerner
1dc036da65
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
c4614788c6
Make the invoker responsible for positioning the composer cursor
2015-05-23 08:34:54 +09:30
Toby Zerner
9d7be35837
Fix notification grid row/column not toggling when first cell is disabled
2015-05-21 15:59:35 +09:30
Toby Zerner
935e2d272a
Force redraw of composer component when switching in a new one
2015-05-21 13:08:33 +09:30
Toby Zerner
e1201c968b
Maintain scroll position relative to bottom of hero when switching categories
2015-05-21 08:15:58 +09:30
Toby Zerner
41ecfa348d
Performance improvements
2015-05-21 06:49:07 +09:30
Toby Zerner
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
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