Commit Graph

228 Commits

Author SHA1 Message Date
Toby Zerner
e18d8b35e5 Refactor component API a bit 2015-06-26 19:09:43 +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
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
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
e8bb044701 Discussion list refactor, gestures
Also make base Component class automatically assign this.element :)
2015-06-24 17:56:39 +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
3a7efe202e Gracefully handle discussions with no posts
Although this should never happen
2015-06-23 10:30:06 +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
bb651899b1 Extract into truncate helper 2015-06-17 18:22:14 +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
4582c18a3d Improve ordering of list items when specified key doesn't exist 2015-06-11 18:41:13 +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
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
7a35f5faf6 Fix/simplify timestamp live updating. closes flarum/core#101 2015-06-01 11:10:15 +09:30
Toby Zerner
1153e41b7a Add text-editor API to get selection range 2015-06-01 08:49:46 +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
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
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
6fed357605 Allow ActionButtons to be disabled 2015-05-27 16:21:15 +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
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
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
3462dd68d2 Set document.title on every page 2015-05-18 14:28:15 +09:30
Toby Zerner
7f48a98af8 Make discussion edit permission specific to renaming 2015-05-18 12:34:03 +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
a8a2596228 Properly initialise subtree retainers 2015-05-18 10:35:12 +09:30
Toby Zerner
fe81f71d73 Note for the future 2015-05-14 22:41:08 +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
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
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
16c6bd4f23 Clean up discussion list retaining mechanism 2015-05-07 10:27:29 +09:30
Toby Zerner
ad042fb0ef Fix discussion list pagination 2015-05-07 08:58:04 +09:30
Toby Zerner
54f731942e Add user group badges 2015-05-06 11:25:19 +09:30
Toby Zerner
8e1ba5a2af Dasherize post/notification type class names 2015-05-06 08:32:33 +09:30
Toby Zerner
762137c6df Move discussion controls out of lib and into forum 2015-05-05 17:06:46 +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
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
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
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
8bc09551bb Extract discussion controls into the model 2015-05-02 08:36:59 +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