Commit Graph

65 Commits

Author SHA1 Message Date
bb651899b1 Extract into truncate helper 2015-06-17 18:22:14 +09:30
1ff5e06525 Don't add duplicate posts to a discussion 2015-06-15 08:59:57 +09:30
66da905763 Fix saving of to-many relationships 2015-06-12 16:41:13 +09:30
4582c18a3d Improve ordering of list items when specified key doesn't exist 2015-06-11 18:41:13 +09:30
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
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
5d89618bbd Implement search on front end 2015-06-03 18:10:56 +09:30
7a35f5faf6 Fix/simplify timestamp live updating. closes flarum/core#101 2015-06-01 11:10:15 +09:30
1153e41b7a Add text-editor API to get selection range 2015-06-01 08:49:46 +09:30
e1f8fbdc32 Prevent error when trying to get relationship and no links have been loaded 2015-05-30 13:58:21 +09:30
5db1751660 Add helper to format number with commas 2015-05-30 08:40:29 +09:30
ba1ddc0a14 Implement abbreviate-number helper. closes flarum/core#96 2015-05-30 08:08:57 +09:30
4edb95e9e2 Sync the discussion model/post stream when posts are added/removed 2015-05-29 18:56:29 +09:30
cafa6c7b5d New and improved post stream. 2015-05-29 18:17:50 +09:30
2741923714 Improvements to change/forgot password 2015-05-27 16:25:44 +09:30
6fed357605 Allow ActionButtons to be disabled 2015-05-27 16:21:15 +09:30
85ba97ed5c Improve appearance/behaviour of login/signup/forgot modals 2015-05-26 16:25:25 +09:30
5fc2f3aeee Better handling of API server errors 2015-05-26 11:43:20 +09:30
feb4676aa0 Very rough implementation of forgot password 2015-05-26 11:14:06 +09:30
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
1b4b03356a Better API error handling 2015-05-18 18:13:16 +09:30
e879a65a0c Show composer after discussion is reloaded following login 2015-05-18 15:38:19 +09:30
8cba7ad3f2 Clicking on an index nav item should always refresh the discussion list 2015-05-18 15:27:39 +09:30
3462dd68d2 Set document.title on every page 2015-05-18 14:28:15 +09:30
7f48a98af8 Make discussion edit permission specific to renaming 2015-05-18 12:34:03 +09:30
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
a8a2596228 Properly initialise subtree retainers 2015-05-18 10:35:12 +09:30
fe81f71d73 Note for the future 2015-05-14 22:41:08 +09:30
be6b620457 Transform post time into a date 2015-05-14 22:41:06 +09:30
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
28aa7ed62f Add methods for doing stuff in text editor
Used by the mentions extension
2015-05-14 22:41:06 +09:30
a06a973d89 Only give dropdown menu items padding if they have an icon 2015-05-14 22:41:06 +09:30
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
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
0f3d7ceafe Don't let a discussion have an empty slug as it messes with the router 2015-05-07 16:53:57 +09:30
16c6bd4f23 Clean up discussion list retaining mechanism 2015-05-07 10:27:29 +09:30
ad042fb0ef Fix discussion list pagination 2015-05-07 08:58:04 +09:30
54f731942e Add user group badges 2015-05-06 11:25:19 +09:30
8e1ba5a2af Dasherize post/notification type class names 2015-05-06 08:32:33 +09:30
762137c6df Move discussion controls out of lib and into forum 2015-05-05 17:06:46 +09:30
e0936d8100 Add convenience method to get a record by a property 2015-05-05 17:05:16 +09:30
1eef01da05 Simplify model registration 2015-05-05 17:05:02 +09:30
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
45ab262547 API for syncing added/removed posts after a discussion is updated 2015-05-04 12:17:26 +09:30
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
538784744c Show login modal when starting a discussion as a guest 2015-05-04 10:44:03 +09:30
ebcf045ca1 Ability to clear a retained subtree 2015-05-04 10:43:40 +09:30
95c192c380 Fix logout redirection 2015-05-04 10:30:38 +09:30
f31973981c Fix override util super context 2015-05-04 10:30:29 +09:30
3ff0b806a4 All method should return an array, not an object 2015-05-02 08:47:10 +09:30