Commit Graph

65 Commits

Author SHA1 Message Date
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