Commit Graph

319 Commits

Author SHA1 Message Date
Toby Zerner
49e9ab362a Persist modal across routes
Don't hide it unless it's already been shown, otherwise bootstrap JS
won't be initialized correctly
2015-07-22 09:54:00 +09:30
Toby Zerner
a66db6323a Fix search routing
Blurring the input causes a redraw, which hides the results and
invalidates the current index. So the routing wasn't working.

Drawer is now hidden on IndexPage construction.
2015-07-22 09:52:58 +09:30
Toby Zerner
9af141ce0b Hide the drawer/modal when constructing all pages
Might be better to do this on config... also extract it into a parent
"Page" component
2015-07-22 09:51:41 +09:30
Toby Zerner
d0c8777430 PERF: fix subtrees never being retained if "mark all as read" was clicked
I didn't realise, performance was terrible for people who have ever
clicked the "mark all as read" button!
2015-07-22 09:50:55 +09:30
Toby Zerner
a7baab8a86 Fix discussion composer title field not focusing editor on 'enter' 2015-07-22 09:49:25 +09:30
Toby Zerner
0cb3378658 Merge branch 'evented-api' 2015-07-21 10:40:38 +09:30
Toby Zerner
aff859d7ea Cleanup unused import 2015-07-20 18:14:03 +09:30
Toby Zerner
b31a290f00 Don't override username if already set 2015-07-20 18:13:56 +09:30
Toby Zerner
6b601ae2d6 Only render posts with the discussion relationship 2015-07-20 18:13:40 +09:30
Toby Zerner
7dd7b3f32c Separate icon from notification grid labels 2015-07-20 18:12:30 +09:30
Toby Zerner
53c621d999 Update event post API
- Use more appropriate component class name
- Allow username to be moved in translation
2015-07-20 18:12:08 +09:30
Toby Zerner
82f1daeef4 Change discussion list sorting labels 2015-07-20 18:11:04 +09:30
Toby Zerner
23dd966b45 Rename method 2015-07-20 18:10:32 +09:30
Toby Zerner
741b9b0ea5 Render discussion hero badges properly 2015-07-20 18:10:21 +09:30
Toby Zerner
930ddf3253 Get rid of extension convenience method
We might reintroduce this later, but for now I want to keep the
extensions API as light as possible and get input before we add stuff
2015-07-20 18:09:37 +09:30
Toby Zerner
6b7cf1b6bf Rework extension bootstrapping
System JS modules don't execute when they're registered, so we need to
import them explicitly. While we're at it, we may as well make the
locale bootstrapper a module too.
2015-07-20 18:08:28 +09:30
Toby Zerner
f977658417 PERF: Only show search results when field has focus 2015-07-18 22:58:26 +09:30
Toby Zerner
9ca4feb6e8 Add some comments 2015-07-18 10:56:01 +09:30
Toby Zerner
24f100899c Don't apply background color if there is none 2015-07-18 10:55:56 +09:30
Toby Zerner
0af9784a59 Fix bad translation key 2015-07-18 10:11:42 +09:30
Toby Zerner
f93ff7cb3f Make front-end localizable 2015-07-17 17:43:28 +09:30
Toby Zerner
a9ded36b57 Major CSS revamp
- Get rid of Bootstrap (except we still rely on some JS)
- Use BEM class names
- Rework variables/theme config
- Fix various bugs, including some on mobile

The CSS is still not ideal – it needs to be cleaned up some more. But
that can be a focus for after beta.
2015-07-17 14:47:49 +09:30
Toby Zerner
76678f72f2 Case-sensitive filename changes 2015-07-15 15:54:34 +09:30
Toby Zerner
ab6c03c0cc Massive JavaScript cleanup
- Use JSX for templates
- Docblock/comment everything
- Mostly passes ESLint (still some work to do)
- Lots of renaming, refactoring, etc.

CSS hasn't been updated yet.
2015-07-15 14:01:11 +09:30
Toby Zerner
9fa3492c0e Clean up discussion model 2015-07-08 10:51:30 +09:30
Toby Zerner
a74623c718 Make admin open in a new window 2015-07-08 10:51:16 +09:30
Toby Zerner
42f1fa1272 Improve fulltext search API and interface 2015-07-07 20:35:18 +09:30
Toby Zerner
4c5cf96b95 Fix discussion search result suggestion excerpts
So that they show the relevant part of the post
2015-07-07 16:16:20 +09:30
Toby Zerner
013d11554d Add discussion list refresh button
Closes flarum/core#139. Haven’t done pull to refresh yet though, but
that can come later.
2015-07-07 15:32:08 +09:30
Toby Zerner
e1a65380ef Tweak discussion list styles some more 2015-07-07 15:30:48 +09:30
Toby Zerner
99876e9e36 Initial refactor of client actions, data preloading, SEO
An initial stab at flarum/core#126. Still WIP. Preliminary
implementation of flarum/core#128 and flarum/core#13.
2015-07-07 15:29:21 +09:30
Toby Zerner
fcc5aa17ea Tweak discussion list contextual controls 2015-07-07 09:21:43 +09:30
Toby Zerner
c06639fdc8 This should've been with the last commit
I blame GitHub for Mac again :]
2015-07-07 09:21:27 +09:30
Toby Zerner
5fe88e448e Improve post stream
- Return all discussion post IDs from API requests which add/remove
posts, so the post stream updates appropriately. Related to #146
- Always unload posts that are two pages away, no matter how fast
you’re scrolling
- Retrieve posts from cache instead of reloading them
- Fix various bugs. Maybe #152, needs confirmation
2015-07-06 16:26:27 +09:30
Toby Zerner
330e60871a Fix read tracking not working 2015-07-05 13:58:07 +09:30
Toby Zerner
31474764ee Fix post scrubber unread indicator overflow 2015-07-05 13:53:06 +09:30
Toby Zerner
1d21670663 New look for discussion reply/unread count
Also decrease the max page width by 100px
2015-07-05 13:52:46 +09:30
Toby Zerner
a74b40fe47 Massive refactor
- Use contextual namespaces within Flarum\Core
- Clean up and docblock everything
- Refactor Activity/Notification blueprint stuff
- Refactor Formatter stuff
- Refactor Search stuff
- Upgrade to JSON-API 1.0
- Removed “addedPosts” and “removedPosts” relationships from discussion
API. This was used for adding/removing event posts after renaming a
discussion etc. Instead we should make an additional request to get all
new posts

Todo:
- Fix Extenders and extensions
- Get rid of repository interfaces
- Fix other bugs I’ve inevitably introduced
2015-07-04 12:24:48 +09:30
Toby Zerner
e18d8b35e5 Refactor component API a bit 2015-06-26 19:09:43 +09:30
Toby Zerner
5202ce00c4 Split up post controls into "user", "moderation", "destructive" 2015-06-26 16:15:30 +09:30
Toby Zerner
fe82631f95 Tweak user bio editing UI 2015-06-26 13:57:21 +09:30
Toby Zerner
3ba495091e Flattening items breaks things; recurse to get the first element instead 2015-06-26 13:52:54 +09:30
Toby Zerner
0526e223e4 Always show composer header. closes flarum/core#112 2015-06-26 12:18:13 +09:30
Toby Zerner
8f6b373ea1 Constrain the unread part of the scrubber to after the handle 2015-06-26 12:09:59 +09:30
Toby Zerner
e887d75b8b Show badges in notifications 2015-06-26 12:09:28 +09:30
Toby Zerner
6acc6698f5 Don't clear filter when search is cleared 2015-06-26 12:08:46 +09:30
Toby Zerner
9e6ad1f244 Only show search suggestion excerpt if we have it
We won’t have it if we didn’t do a fulltext search
2015-06-26 12:08:23 +09:30
Toby Zerner
35c05862a4 Fix unwanted onbeforeunload message 2015-06-26 11:57:52 +09:30
Toby Zerner
f2f23138b2 Tweak how discussion sidebar displays on mobile
Give all items in an item list a class on their <li>. Super helpful for
styling
2015-06-25 15:38:29 +09:30
Toby Zerner
099b910be9 Prevent incorrect badge redraw diffing 2015-06-25 15:35:11 +09:30
Toby Zerner
cbd3509ad2 More accurate scrubber height resizing 2015-06-25 15:34:34 +09:30
Toby Zerner
aec6a4b86c Fix faulty detection of touch device 2015-06-25 15:34:14 +09:30
Toby Zerner
2c70c4fa82 Fix active discussion not highlighting in pane 2015-06-25 15:33:56 +09:30
Toby Zerner
4778d15dcb Clean up 2015-06-25 15:33:37 +09:30
Toby Zerner
bda8b5d88d Give all components config on the root element
So that extensions can work on it no matter what
2015-06-25 15:33:29 +09:30
Toby Zerner
8fe2f54489 Split discussion controls into three groups:
- user (reply, subscription)
- moderation (rename, sticky, tags)
- destructive (delete)

Will keep extension-added items organised nicely
2015-06-25 15:31:15 +09:30
Toby Zerner
6881229702 Close the composer completely if the reply is empty 2015-06-25 10:34:37 +09:30
Toby Zerner
34ca6d4515 Implement onbeforeunload composer confirmation. closes flarum/core#113 2015-06-25 10:34:14 +09:30
Toby Zerner
f3b8c31e18 Make home button route correctly, not respond on middle click
Amends flarum/core#140, closes flarum/core#136
2015-06-25 08:14:51 +09:30
Toby Zerner
e8bb044701 Discussion list refactor, gestures
Also make base Component class automatically assign this.element :)
2015-06-24 17:56:39 +09:30
Toby Zerner
3b7c7de83b Fix deleting posts causing subsequent posts to display incorrectly 2015-06-24 11:46:43 +09:30
Toby Zerner
fee88508ba Only display the first page of posts
Extra posts may be in the payload (mention links etc.) but we do not
want to display them.
2015-06-24 11:45:58 +09:30
Toby Zerner
e466dcc626 Significantly improve mobile UX
Most of #137 done.

- Use FastClick to make everything feel more responsive
- Use transforms for animations to make them silky smooth
- Style the drawer the same as the header to keep things simple
- Revert to fixed composer, but allow it to be minimised
- Add a separate notifications page for mobile so it’s easy to go back
- Add indicator to the menu button when there are unread notifications
- Close the drawer when navigating away
- Make dropdowns/modals scrollable
- Many other mobile tweaks and bug fixes

Didn’t take much care to keep CSS clean, due to #103
2015-06-24 11:44:53 +09:30
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