Toby Zerner
4c2ff6e82d
Revamp admin extensions page
...
- New look
- Groups extensions by keywords
2015-10-12 15:02:59 +10:30
Toby Zerner
208d90293d
Fix extension settings
2015-10-11 23:18:57 +10:30
Toby Zerner
4580ebe100
Show posts even if they don't have a user
2015-10-11 22:28:23 +10:30
Toby Zerner
cf42765513
External helpers are included by default now
2015-10-11 11:37:23 +10:30
Toby Zerner
7387dfb7da
Concatenate items in {second}, not {first}
2015-10-11 10:09:22 +10:30
Toby Zerner
18def302d6
Bundle unminified JS; minify via ClosureCompilerService when in production
...
Falls back to a less effective minification library if ClosureCompilerService errors or is unavailable. Minification takes a while (20 seconds or so), but it only happens when assets are modified. Still, this means enabling/disabling extensions is taking far too long. Possible solutions:
- Don't minify initially; set a process running in the background to do minification, and server unminified assets in the meantime.
- Refactor compiler to send each JS file to CCS individually, only if that particular file has been modified.
flarum/gulp has also been updated to no longer support uglification.
closes #582
2015-10-09 00:33:53 +10:30
Toby Zerner
bddbf24055
Make punctuate
translatable, rename to punctuateSeries
2015-10-08 22:42:03 +10:30
Toby Zerner
c3cf5fe074
Only show restore button for comment posts
2015-10-08 17:45:44 +10:30
Toby Zerner
dd67291ce0
Major refactor and improvements
...
- Reorganised all namespaces and class names for consistency and structure. Following PSR bylaws (Abstract prefix, Interface/Trait suffix).
- Move models into root of Core, because writing `use Flarum\Core\Discussion` is nice. Namespace the rest by type. (Namespacing by entity was too arbitrary.)
- Moved some non-domain stuff out of Core: Database, Formatter, Settings.
- Renamed config table and all references to "settings" for consistency.
- Remove Core class and add url()/isInstalled()/inDebugMode() as instance methods of Foundation\Application.
- Cleanup, docblocking, etc.
- Improvements to HTTP architecture
- API and forum/admin Actions are now actually all the same thing (simple PSR-7 Request handlers), renamed to Controllers.
- Upgrade to tobscure/json-api 0.2 branch.
- Where possible, moved generic functionality to tobscure/json-api (e.g. pagination links). I'm quite happy with the backend balance now re: #262
- Improvements to other architecture
- Use Illuminate's Auth\Access\Gate interface/implementation instead of our old Locked trait. We still use events to actually determine the permissions though. Our Policy classes are actually glorified event subscribers.
- Extract model validation into Core\Validator classes.
- Make post visibility permission stuff much more efficient and DRY.
- Renamed Flarum\Event classes for consistency. ref #246
- `Configure` prefix for events dedicated to configuring an object.
- `Get` prefix for events whose listeners should return something.
- `Prepare` prefix when a variable is passed by reference so it can be modified.
- `Scope` prefix when a query builder is passed.
- Miscellaneous improvements/bug-fixes. I'm easily distracted!
- Increase default height of post composer.
- Improve post stream redraw flickering in Safari by keying loading post placeholders with their IDs. ref #451
- Use a PHP JavaScript minification library for minifying TextFormatter's JavaScript, instead of ClosureCompilerService (can't rely on external service!)
- Use UrlGenerator properly in various places. closes #123
- Make Api\Client return Response object. closes #128
- Allow extensions to specify custom icon images.
- Allow external API/admin URLs to be optionally specified in config.php. If the value or "url" is an array, we look for the corresponding path inside. Otherwise, we append the path to the base URL, using the corresponding value in "paths" if present. closes #244
2015-10-08 14:28:02 +10:30
dcsjapan
1a3e085a9c
Fixes namespace errors in keys for the two extracted strings.
2015-10-06 09:56:12 +09:00
dcsjapan
78cd35d93c
Extract leftover core strings
...
Adds app.trans calls for a couple strings in core:
- The "there are no discussions" message in DiscussionList.js
- The user deletion confirmation message in UserControls.js
- Also adds new HTML-style tags to LogInModal.js and SignUpModal.js
2015-10-06 05:52:03 +09:00
dcsjapan
4725ac4131
Extract admin strings
...
Adds app.trans calls for strings used by the admin UI.
- Strings for AddExtensionModal.js not included.
- Corresponding YAML will be sent later w/ more extracted strings.
2015-10-05 19:06:41 +09:00
Toby Zerner
2223e1a13c
Add compiled JS
2015-10-03 16:59:53 +09:30
Toby Zerner
296b822636
Merge branch 'master' into composer
2015-10-03 16:41:23 +09:30
Mike Nolan
56e10ce6ba
Read documentation link broken
...
This fixes #510 by putting in the link to the themes documentation
2015-10-02 17:24:01 +01:00
Toby Zerner
03f862fe8c
Merge branch 'master' into composer
2015-10-02 17:57:24 +09:30
Toby Zerner
e251cf34c4
Use composer.json for extension metadata
2015-10-02 17:49:16 +09:30
dcsjapan
a590150698
Fixes core.deleted_username as well.
2015-10-02 16:37:09 +09:00
dcsjapan
0a66229169
Add "forum" namespacing to previously renamed core keys
...
- Does not affect "core.deleted_user" global string.
- Corresponding YAML will be sent later w/ more extracted strings.
2015-10-02 15:54:39 +09:00
Toby Zerner
4e5b3099f8
Fix scrubber dragging division by zero
...
closes #64
2015-09-29 17:46:05 +09:30
Toby Zerner
e0aa99fabb
Properly mark all notifications as read
...
Previously, clicking the "mark all notifications as read" button would individually mark each of the visible notifications as read. Since we now always show a badge with the number of unread notifications, we need to make sure that all notifications (not just the visible ones) can be marked as read. Otherwise it would be possible to get stuck with an unread badge there.
This commit adds a new API endpoint which marks *all* of a user's notifications as read. The JSON-API spec doesn't cover this kind of thing (updating all instances of a certain resource type), so I'm a bit unsure regarding what the endpoint should actually be. For now I've gone with POST /notifications/read, but I'm open to suggestions.
ref #500
2015-09-29 16:41:05 +09:30
Toby Zerner
6463d912a9
Properly handle errors in change email modal
2015-09-29 15:19:06 +09:30
Toby Zerner
b39a991940
Remove "go to email provider" buttons
...
closes #541
2015-09-29 15:18:55 +09:30
Toby Zerner
0db4708ef9
Add missing semicolon
2015-09-29 14:29:40 +09:30
Franz Liedke
ce094be83e
Sync notification count when clicking on them or marking all as read
...
Refs #500 .
2015-09-29 01:28:47 +02:00
Franz Liedke
f5b5d9ca5c
Use correct method for notification drawer on mobile
...
Refs #500 .
2015-09-29 01:28:47 +02:00
Franz Liedke
040ce52724
Return both unread and new notification count from the API
...
Related to #500 .
2015-09-29 01:28:47 +02:00
Franz Liedke
1f7afb3e4a
Implement third state for notification list dropdown
...
Related to #500 .
2015-09-29 00:50:28 +02:00
Toby Zerner
538a3e5e98
Prevent infinite redraw loop in IE
...
Welp, this is probably the most subtle bug I've ever tracked down and fixed.
Turns out that IE has this bug where the "oninput" event will be triggered whenever the "placeholder" attribute is changed. Most placeholders get their value from app.trans. The app.trans method returns a VirtualElement – which is an array, not a string! That means when Mithril's diffing algorithm was comparing the old value to the new value, it was comparing two different array instances, and thus deciding the value was dirty and the placeholder attribute needed to be updated. Due to the IE bug, that was leading to the "oninput" event being triggered... and then through Mithril's auto-redraw mechanism, a redraw would be triggered, and so the cycle continued.
Since the inputs in the LogInModal (among others) only update the component state on the "onchange" event (i.e. when the input loses focus), the intermittent redraws would cause the input's value to be cleared continuously. That's what was causing #464 . Could've been easily and superficially patched by changing them to use "oninput" events, but luckily I dived a little deeper!
Glad that's over. Running IE11's buggy dev tools in an underpowered VM isn't fun. Would not recommend.
closes #464
2015-09-25 23:44:15 +09:30
Toby Zerner
f1c40eeccc
Prevent empty beforeunload dialog on Internet Explorer
2015-09-25 23:21:10 +09:30
dcsjapan
4851596c78
Revises the dashboard links to emphasize beta testing procedure.
...
Closes flarum/core#542
- Includes a disclaimer stating that the software is provided mainly
for testing.
- Directs bug reports to the Support tag in the forums instead of the
issue tracker
- Directs feedback to the Features tag in the forums
2015-09-25 12:55:13 +09:00
Toby Zerner
88372640aa
Remove core key reorganization comments
2015-09-24 14:22:32 +09:30
Toby Zerner
fdb598187f
Revert to "go to email provider" button
2015-09-24 14:22:14 +09:30
Toby Zerner
b126055611
Add "last reply" icon to discussion list
2015-09-24 09:05:52 +09:30
dcsjapan
c2ad1181b1
Merge remote-tracking branch 'flarum/master' into core-key-reorganization
2015-09-23 14:58:34 +09:00
dcsjapan
d5d7185794
Primary key renaming
...
Improved consistency for existing core translation key names.
See flarum/core#265
- Completely overhauled core en.yml
- Replaced existing key names in all core JS files to match
- Extracted a hardcoded string in IndexPage.js
- Combined two app.trans calls in DiscussionControls.js
- Removed hardcoded spaces from LogInModal.js and SignUpModal.js
- Added two new keys from DiscussionControls.js (soft delete)
- Created two new “reused keys” to YML to accommodate same
2015-09-23 14:58:33 +09:00
Toby Zerner
a0267d9515
Add extra check to make sure post has been fully loaded
...
Ref #295
2015-09-23 12:22:37 +09:30
Toby Zerner
3020710959
Move post Restore control into same section as Delete Forever
2015-09-22 17:58:19 +09:30
Toby Zerner
5598e885b7
Improve admin permissions page with icons, visual tweaks
2015-09-22 17:52:16 +09:30
Toby Zerner
264725d872
Allow discussions to be hidden and restored
2015-09-22 17:48:21 +09:30
Toby Zerner
c7ed189cf3
Use ES6 syntax
2015-09-22 17:23:47 +09:30
Toby Zerner
ab6e3351b4
Redraw old data after unsuccessful save
2015-09-22 17:23:28 +09:30
Toby Zerner
f591851cb2
Patch Mithril with a route shortcut attribute
...
Instead of:
<a href={app.route.user(user)} config={m.route}>
We can use:
<a route={app.route.user(user)}>
2015-09-22 17:09:38 +09:30
Toby Zerner
f55d95c9b7
Select contents of search input on focus
2015-09-22 17:06:06 +09:30
Toby Zerner
d610ea663f
Keep post actions visible when controls dropdown is open
...
Also show without hover on touch devices
2015-09-22 17:05:14 +09:30
Toby Zerner
8ab0686666
Properly hide loading spinner on unsuccessful post edit
2015-09-22 16:57:06 +09:30
Toby Zerner
efca923d30
Add "Debug" button to inspect the response of a failed AJAX request
...
Related to #118
2015-09-18 16:46:46 +09:30
Toby Zerner
4041c18014
Further tweaks to post layout
...
Move footer after actions so that we'll be able to have larger things
in the footer (e.g. Answers) without pushing down the controls.
2015-09-18 14:38:57 +09:30
Toby Zerner
514eec7466
Clean up
2015-09-18 13:29:50 +09:30
Toby Zerner
4752142c11
Reflect composer's focus state in a property
2015-09-18 13:15:58 +09:30
Toby Zerner
6582c5fcf0
Smooth out initial composer slide animation
2015-09-18 13:14:12 +09:30
Toby Zerner
6fff3cc0dc
Add abstract SettingsModal component in admin app
...
Makes building settings modals (that update basic config values) a
whole lot quicker/easier.
2015-09-18 13:13:25 +09:30
Toby Zerner
0b406a06a1
Patch Mithril with a bidi attribute
...
Enables quick bidirectional bindings. So instead of this:
<input value={prop()} oninput={m.withAttr('value', prop)}/>
... we can do this:
<input bidi={prop}/>
2015-09-18 13:06:37 +09:30
Toby Zerner
1fc369c59e
Cleanup, update changelog
2015-09-18 13:01:31 +09:30
Toby Zerner
dbd33f687c
Remove "custom" home page input
...
Also add an API to let extensions define additional default route
options.
Allowing default routes with parameters (e.g. /d/123) is very difficult
because of the way Mithril routing works, and it doesn't have a
convincing use-case to justify the trouble. So I've removed the custom
input altogether.
closes #427
2015-09-17 12:56:39 +09:30
Franz Liedke
9767bce1e3
Move dropdown mouseover to correct location
...
Related to #496 .
2015-09-16 09:00:33 +02:00
Franz Liedke
ffcba1f173
Always use label as tooltip for header icons
...
Closes #496 .
2015-09-16 08:45:45 +02:00
Toby Zerner
b0da51309e
Copy properties when monkey-patching
2015-09-16 16:03:25 +09:30
Toby Zerner
8414a59908
Don't use a default dropdown label
2015-09-16 10:12:49 +09:30
Toby Zerner
e524c59f97
Improve external authentication API
...
Some providers (e.g. Twitter) don't expose user email addresses, so it
turns out we can't use that as the sole form of identification/account
matching.
This commit introduces a new `auth_tokens` table which stores arbitrary
attributes during the sign up process. For example, when Twitter is
authenticated, a new auth token containing the user's Twitter ID will
be created. When sign up is completed with this token, that Twitter ID
will be set as an attribute on the user's account.
2015-09-15 15:56:48 +09:30
Toby Zerner
cac670e699
Focus on username field when login buttons are present
2015-09-15 13:04:45 +09:30
Toby Zerner
fa265152c7
Clean up new post layout
2015-09-15 12:42:03 +09:30
Toby Zerner
5c98a08e0f
Merge branch 'master' into compact-posts
2015-09-15 11:27:49 +09:30
Toby Zerner
6beb4fe898
Add external authenticator (social login) API
...
Allows registrations to be completed with a pre-confirmed email address
and no password.
2015-09-15 11:27:31 +09:30
Toby Zerner
8cccaaaf6b
Improve API error handling
...
- Change 'path' key to 'source.pointer', as per spec
- Add 500 error detail if debug mode is on
2015-09-14 15:40:07 +09:30
Toby Zerner
d5b58b3146
Only set XHR authorization header if token isn't empty
2015-09-14 14:49:11 +09:30
Toby Zerner
f00d2b1363
Remove unused component
2015-09-14 14:48:05 +09:30
Toby Zerner
efff485d6c
Restyle posts to be more compact, relocate controls
2015-09-08 10:29:00 +09:30
Toby Zerner
6a5427b600
Make unread discussion titles less overwhelming
2015-09-08 10:27:50 +09:30
Toby Zerner
e8621636c5
Add init hook as a way to effectively monkey patch constructors
...
Related to #246
2015-09-08 10:27:02 +09:30
Toby Zerner
8c4e095f23
Allow first post to be hidden/restored
...
Anti-spam extensions may automatically hide the first post in a
discussion, and thus we had to implement smarter permissions so
discussions with zero posts wouldn't be visible to users other than the
author/mods. This change allows those hidden posts to be restored again.
2015-09-07 16:03:45 +09:30
Toby Zerner
f6e21b75e1
Remove unused translations
2015-09-05 16:05:02 +09:30
Toby Zerner
695df18be0
Don't show placeholder when loading discussions
2015-09-04 13:50:17 +09:30
Toby Zerner
7a6c48c30b
Correct check that a translation is an object
...
typeof translation === 'object' returns true when translation is null
2015-09-04 12:19:02 +09:30
Toby Zerner
9bf6862c6d
Clean up Post CSS
2015-09-04 12:17:30 +09:30
Toby Zerner
44f460cb11
Prevent ItemList crash when item is a number
2015-09-04 12:17:01 +09:30
Toby Zerner
7cce5b02ba
Allow non-array value to be passed into listItems
...
Useful in some scenarios when using JSX
2015-09-04 12:16:23 +09:30
Toby Zerner
722058f2fb
Move generic util into lib
...
Might come in handy for the admin section later on
2015-09-04 12:15:41 +09:30
Toby Zerner
70815b024a
Make Dropdown and NotificationsDropdown components more extensible
2015-09-04 12:15:11 +09:30
Toby Zerner
7269385786
Make a copy of props passed into a component
...
Prevents some rare errors where the props object is read-only, and is
generally safer.
2015-09-04 12:13:55 +09:30
Toby Zerner
2f8a449b74
Simplify notification markup
2015-09-04 12:12:48 +09:30
Toby Zerner
b3aa0298d5
Fix use of "new" keyword making eslint angry
2015-09-04 12:12:21 +09:30
Toby Zerner
e192402a42
Add item priorities
2015-09-04 12:11:45 +09:30
Franz Liedke
f0c240f863
Add a first empty state to the discussion list
2015-09-03 09:59:33 +02:00
Franz Liedke
bd47653377
Merge pull request #403 from mtotheikle/allow-extra-signup-data
...
Allow support for passing extra signup data to API
2015-09-01 18:28:53 +02:00
Michael Williams
07ed4d10c0
Allow support for passing extra signup data to API
2015-09-01 07:58:14 -07:00
Toby Zerner
bf83b36882
Remove redundant call
2015-09-01 10:08:37 +09:30
Toby Zerner
2438bbfd41
Reload post if user relationship isn't loaded
...
May fix #295 , but haven't been able to reproduce/test.
2015-08-31 14:03:08 +09:30
Toby Zerner
e7f4e5060c
Use GroupBadge component to display user badges
...
closes #277
2015-08-31 13:44:05 +09:30
Toby Zerner
283abb88c2
Fix reply composer preview button
...
closes #238
2015-08-31 13:27:04 +09:30
Toby Zerner
af2307868a
Fix JavaScript style
2015-08-31 13:19:51 +09:30
Toby Zerner
f9d724738c
Add syntax highlighting for code blocks
...
We might consider extracting this into an extension, but TextFormatter
does syntax highlighting for code blocks by default in live previews
anyway.
closes #248
2015-08-31 13:17:16 +09:30
Toby Zerner
42e722d824
Fix incorrect translation output
...
app.trans returns a VirtualElement, so there's no need to wrap it in
m.trust.
closes #237
2015-08-31 12:41:36 +09:30
Toby Zerner
0ae2d18f28
Extract base Page class
2015-08-31 12:05:33 +09:30
Toby Zerner
0474f410a4
Refactor start/endComputation into lazyRedraw method
2015-08-31 12:04:51 +09:30
Toby Zerner
f44e9f5140
Remove <script> tags from plain post content
...
closes #362
2015-08-31 10:49:24 +09:30
Franz Liedke
a04acca92e
Allow Ctrl key for submitting posts, too
...
Closes #276 .
2015-08-29 17:09:14 +02:00
Toby Zerner
67f6b8599d
Allow string primitives to be added to ItemLists
2015-08-29 15:25:36 +09:30
Toby Zerner
d352c49e29
Reorganise dashboard help text
2015-08-27 10:59:50 +09:30
Toby Zerner
b0db7bf751
Polish admin dashboard
2015-08-27 10:50:15 +09:30
Toby Zerner
3e4a8fe769
Collapse search input on tablets. closes flarum/core#162
...
While this solution isn't perfect (perhaps a search icon which opens a
dropdown would be better, like Discourse does) - it'll do for now :)
2015-08-27 08:34:19 +09:30
Toby Zerner
dea759d5b8
Fix JS docblock
2015-08-26 17:11:54 +09:30
Toby Zerner
734badb4bc
Begin JavaScript cleanup
2015-08-26 16:56:33 +09:30
Toby Zerner
c5edf48bf2
Fix error on index page
2015-08-26 16:56:32 +09:30
Toby Zerner
df385b7df2
Monkey patch mithril so we can use JSX component syntax
...
<Alert foo="bar"/> instead of Alert.component({foo: 'bar'})
2015-08-26 16:56:32 +09:30
Toby Zerner
e2bb399db9
Make sure active discussion is highlighted
2015-08-26 11:02:12 +09:30
Toby Zerner
b8fc0bc376
Make discussion slug URL parameter optional
2015-08-25 19:32:41 +09:30
Toby Zerner
52bf8b3c1c
Add notification excerpts to help distinguish posts
2015-08-21 09:54:41 +09:30
Toby Zerner
4e8f69a18c
Remove old code
2015-08-19 14:54:08 +09:30
Toby Zerner
9489173082
Fix some front-end bugs
2015-08-14 12:50:39 +09:30
Toby Zerner
014bacb7ab
Add ability to uninstall an extension
2015-08-14 12:48:29 +09:30
Toby Zerner
fa77ad7e0d
Update class name
2015-08-13 13:07:30 +09:30
Toby Zerner
dc56e7dc0f
Fix unnecessary ?near=1 in some URLs
2015-08-13 13:06:55 +09:30
Toby Zerner
c4992407aa
Reuse CommentPost component for PostsUserPage
2015-08-13 13:06:23 +09:30
Toby Zerner
430665e3c8
Don't hide login modal; wait for page to refresh
2015-08-13 13:05:38 +09:30
Toby Zerner
5f3bbabea8
Move locale dropdown to right side of header
2015-08-13 13:05:12 +09:30
Toby Zerner
011701e483
Make sure user cards disappear properly on old browsers
...
closes flarum/core#222
2015-08-13 13:04:24 +09:30
Toby Zerner
c3b2fa5a99
Prevent badge tooltips from being cut off
...
By overflow in the notifications dropdown. closes flarum/core#228
2015-08-13 13:01:13 +09:30
Toby Zerner
360f65e270
Fix broken signup
...
closes flarum/core#231
2015-08-13 13:00:26 +09:30
Toby Zerner
9c7fab5d8c
Support running in subdirectory with base_path config
2015-08-13 12:58:59 +09:30
Toby Zerner
3f809761d3
Improve extensions page
...
- Allow extensions to define an icon in their flarum.json
- Show a "please wait" modal when enabling/disabling an extension
- Styling tweaks
2015-08-07 08:51:03 +09:30
Toby Zerner
4979e4d614
Remove session event handler
2015-08-06 16:13:41 +09:30
Toby Zerner
9def5d2b5d
Clean up
2015-08-06 16:00:22 +09:30
Toby Zerner
a856aa8047
Make link to email provider open in new window
...
closes flarum/core#62
2015-08-06 15:09:55 +09:30
Toby Zerner
32648147e2
Reload page on login
...
closes flarum/core#145
2015-08-06 15:04:20 +09:30
Toby Zerner
de42c316c0
Remove blockquotes from post previews
...
Closes flarum/core#144
2015-08-06 13:28:26 +09:30
Toby Zerner
edddeeb553
Make some changes to facilitate updates to mentions extension
2015-08-06 13:16:53 +09:30
Toby Zerner
fa5c7cb123
Build very rough HTML-only content
...
And redirect to the "no JS" mode if the JS app crashes on boot.
ClientView/ClientAction is all a bit of a mess and will need to be
radically cleaned up at some point...
2015-08-06 12:21:11 +09:30
Toby Zerner
80e13ae289
Implement default route config setting
2015-08-06 12:18:59 +09:30
Toby Zerner
c8084c3925
Remove footer and move language selection to header
2015-08-06 12:16:55 +09:30
Toby Zerner
0d968536bc
Tweak dropdown caret margins
2015-08-05 19:21:00 +09:30
Toby Zerner
f182689c90
Allow extension of functions that may not be defined
2015-08-05 19:20:49 +09:30
Toby Zerner
4c06e78b57
Allow/disallow signup per config
2015-08-05 18:19:26 +09:30
Toby Zerner
3f0089e8bb
Determine user card editing permissions in one place
2015-08-05 16:22:05 +09:30
Toby Zerner
5005e37cfb
Focus on the first input too, in case it's not a text field
2015-08-05 16:07:43 +09:30
Toby Zerner
57e37e06ef
Disable "start discussion" button if no permission
2015-08-05 16:06:25 +09:30
Toby Zerner
8be5d5af0f
Still set username if user is undefined
...
Fixes "Started 12 hours ago by undefined" on discussion author avatar
tooltip
2015-08-05 12:17:36 +09:30
Toby Zerner
f42c3cd1ed
Allow admins to delete users
2015-08-05 12:08:28 +09:30
Toby Zerner
1679f1e27b
Implement edit user modal
...
EditUserHandler is a bit rough
2015-08-05 11:49:37 +09:30
Toby Zerner
fff2ffe847
Rename user page components for consistency
2015-08-05 11:48:35 +09:30
Toby Zerner
f49d0e5341
Allow locale to be selected in footer
2015-08-05 09:50:57 +09:30
Toby Zerner
187517a9c7
Remove ability for users to delete themselves
2015-08-04 21:35:41 +09:30
Toby Zerner
c74b3434e7
Refactor notification list loading
...
So that notifications are reloaded (if needed) every time the
notifications dropdown button is clicked
2015-08-04 21:22:40 +09:30
Toby Zerner
61a06abd59
Allow discussion list to be refreshed without clearing it
2015-08-04 19:13:42 +09:30
Toby Zerner
26c87de317
Add an API to show a count in the document title
2015-08-04 19:04:17 +09:30
Toby Zerner
e091b037f3
Radically simplify user activity system
...
The activity system we were using was built around a separate table.
Whenever the user posted something, or deleted a post, we would sync
the table. The advantage of this was that we could aggregate activity
of all different types very efficiently.
It turns out that it came with a huge disadvantage: there was no
efficient way to enforce permissions on activity. If a user posted
something in a private tag, everyone could still see it on their
activity feed. My stopgap solution was to only sync activity for posts
that are viewable by guests, but that was way too limited.
It also turns out that aggregating activity of different types is
really not that useful, especially considering most of it is the user
making posts. So I've gotten rid of that whole overly-complicated
system, and just made the user profile display separate lists of posts
and discussions, retrieved from those respective APIs. The discussions
page is an actual discussion list too, which is pretty cool.
It's still technically possible to aggregate different activity types
(basically just aggregate API responses together), but we can do that
later if there's a need for it.
This is probably my favourite commit of the day :)
2015-08-04 18:44:22 +09:30
Toby Zerner
186bdc7fd4
Tweak some text/comments
2015-08-04 17:14:54 +09:30
Toby Zerner
5b3484d3c8
Improve error handling somewhat
...
- Fix composer crashing/not showing alert on error
- Make a general ValidationException which takes an array of field ⇒
messages to be outputted nicely by the API
2015-08-04 13:03:46 +09:30
Toby Zerner
a14be00041
Sort out default dropdown caret icons
2015-08-04 11:42:24 +09:30
Toby Zerner
b8a224f87b
Implement basic bio formatting. closes flarum/core#203
2015-08-04 11:41:47 +09:30
Toby Zerner
e6e2cdd3e9
Responsive fixes
...
- Make composer absolutely positioned on mobile to work around iOS 8/9
bug
- Make search results dropdown appear on mobile
closes flarum/core#137
2015-08-04 11:27:51 +09:30
Toby Zerner
addb061458
Change default dropdown caret icon
2015-08-04 11:01:11 +09:30
Toby Zerner
00e5f94bce
Change the way composer is aligned
...
Also ensure that the correct body class is applied on the user page
2015-08-04 10:49:33 +09:30
Toby Zerner
ecb1023c66
Fix user bio placeholder not showing up
2015-08-04 10:42:37 +09:30
Toby Zerner
2e4d38b3e7
Move config/permission actions to API; clean up cache flushing
2015-08-04 10:40:04 +09:30
Toby Zerner
afe031f269
Validate color fields on appearance page
2015-08-04 10:38:49 +09:30
Toby Zerner
83e8503df1
Rough implementation of appearance settings
2015-08-03 14:35:51 +09:30
Toby Zerner
70901b1420
Rough extension management implementation
2015-08-03 12:03:30 +09:30
Toby Zerner
8f4ef28475
Make the back button a functional link
2015-08-02 17:26:57 +09:30
Toby Zerner
d44ffd1866
Remove modal responsibility for loading UI; using loading button state
2015-08-02 17:25:05 +09:30
Toby Zerner
5876ee30ed
Remove old code
2015-08-02 17:22:18 +09:30
Toby Zerner
fde7afd3e2
Finish admin permissions page and clean up everything
2015-07-31 20:16:47 +09:30
Toby Zerner
e204794b91
Allow custom variables to be set on the client app
2015-07-31 20:08:27 +09:30
Toby Zerner
42fd8e26c1
Begin implementing permissions page
2015-07-29 21:00:27 +09:30
Toby Zerner
f96cac6057
Implement basic settings page
2015-07-29 21:00:09 +09:30
Toby Zerner
d71d8f59c2
Clean up route definition code style
2015-07-29 20:58:49 +09:30
Toby Zerner
e863bd53d3
Get admin area working again
2015-07-29 20:58:22 +09:30
Toby Zerner
a58ac5345d
PERF: more efficient retaining of posts
2015-07-28 22:58:17 +09:30
Toby Zerner
fe16510e90
Prevent flicker when editing a post
2015-07-28 22:57:58 +09:30
Toby Zerner
1c1d4f5f37
PERF: more efficient retaining of discussion list items
2015-07-28 22:39:03 +09:30
Toby Zerner
42d02569ac
Make sure discussion list is refreshed if it needs to be
2015-07-28 21:24:38 +09:30
Toby Zerner
ce54f06e42
Don't close notifications dropdown if opening in a new tab
2015-07-28 18:51:53 +09:30
Toby Zerner
d3534fcda8
Ensure the correct relationship values are returned
2015-07-28 18:28:31 +09:30
Toby Zerner
acfa49b027
PERF: hide discussion list pane on mobile
2015-07-28 18:17:51 +09:30
Toby Zerner
5a2c00e41d
Make sure slidable parameters are reset correctly
2015-07-28 17:37:46 +09:30
Toby Zerner
85831a62ee
Update the composer height on redraw
...
For some reason, the text editor isn't being retained across route
changes, and it loses its height style. This reapplies it on every
redraw.
2015-07-28 17:26:03 +09:30
Toby Zerner
ff6f2ebf82
Properly disable buttons
2015-07-28 17:19:00 +09:30
Toby Zerner
97334bea12
Don't display notifications with deleted subjects
2015-07-28 17:15:09 +09:30
Toby Zerner
40112ae553
Refactor composer live previews for better performance
2015-07-28 16:06:25 +09:30
Toby Zerner
b87cd3ed53
Fix scrolling to the bottom of an item
2015-07-28 15:26:51 +09:30
Toby Zerner
697cb2ed63
Supporting routing of URL with nothing after the discussion ID
...
closes flarum/core#181
2015-07-28 13:46:43 +09:30
Toby Zerner
bb04eada7a
Prevent crash if user's groups aren't loaded. closes flarum/core#173
2015-07-28 13:35:07 +09:30
Toby Zerner
e2a4cf5ccb
Add preview button to composer
2015-07-28 13:34:42 +09:30
Toby Zerner
f07ab4633b
Add ability to refresh index page by clicking on logo. closes flarum/core#188
2015-07-28 12:27:45 +09:30
Toby Zerner
7a67d3ab95
Fix swiping to the right to mark as read
2015-07-28 12:15:45 +09:30
Toby Zerner
283dcad848
Fix Safari header redraw problem. closes flarum/core#187
2015-07-28 10:13:58 +09:30
Toby Zerner
427450f137
Fix attribute name
2015-07-27 19:54:15 +09:30
Toby Zerner
e257454343
Make formatText util an object so it can be extended
2015-07-27 14:17:12 +09:30
Toby Zerner
ab6b44f2db
Update gulp module configuration
2015-07-27 14:16:55 +09:30
Toby Zerner
aec641d65b
Use System.get instead of System.import
...
Means we get drop Promise polyfill
2015-07-27 14:16:39 +09:30
Toby Zerner
aaffbe4aa8
Selectively construct request params
2015-07-27 12:44:24 +09:30
Toby Zerner
b2badde77f
Always show results container to ensure it gets config'd
2015-07-27 12:32:30 +09:30
Toby Zerner
00de9ee9a4
Another pages loading count fix
2015-07-27 12:28:03 +09:30
Toby Zerner
cdb26eb226
Prevent pages loading count from going negative
2015-07-27 12:23:36 +09:30
Toby Zerner
de210108c3
Make sure pages loading count is kept in sync
2015-07-27 12:16:05 +09:30
Toby Zerner
3467aa9e90
Start loading the next page of posts immediately
2015-07-27 12:12:07 +09:30
Toby Zerner
b01b4b04d3
Fix user page display on mobile
2015-07-23 20:24:05 +09:30
Toby Zerner
52c9539be3
Appearance tweaks
2015-07-23 16:39:20 +09:30
Toby Zerner
e698e2220b
Fix translation key
2015-07-23 16:38:51 +09:30
Toby Zerner
512c2b10f4
Redraw after loading missing posts
2015-07-23 16:38:39 +09:30
Toby Zerner
6c8144f90a
Set default item priorities
2015-07-23 16:38:30 +09:30
Toby Zerner
61e4763c68
Componentize welcome hero close button
2015-07-23 14:47:27 +09:30
Toby Zerner
806f67f7eb
Anchor scroll to bottom when live previewing reply
2015-07-23 14:32:49 +09:30
Toby Zerner
1e74d57526
Fix notification list appearance
2015-07-23 14:32:21 +09:30
Toby Zerner
ce5e4b6c0f
Don't allow includes to be specified
...
Relations must be set to include by default on the API instead
2015-07-23 14:31:46 +09:30
Toby Zerner
65feedc891
Fix discussion list not rendering for guests
2015-07-23 14:31:07 +09:30
Toby Zerner
497b65289e
Fix sign up modal
2015-07-23 14:30:55 +09:30
Toby Zerner
a30f591c15
Fix activity page load more button appearance
2015-07-22 16:05:38 +09:30
Toby Zerner
017c258e46
Live preview of post editing/replying thanks to TextFormatter 👏
2015-07-22 16:05:00 +09:30
Toby Zerner
a0fe68272c
Implement TextFormatter for posts
...
Get rid of formatting on user bios, we'll do that with JavaScript
2015-07-22 16:03:48 +09:30
Toby Zerner
d40c28a370
Tweak display of badges in the discussion hero
2015-07-22 09:58:14 +09:30
Toby Zerner
e1a51f095f
Random cleanup
2015-07-22 09:57:25 +09:30
Toby Zerner
e82a50e53b
Update modal responsive control classes
2015-07-22 09:56:01 +09:30
Toby Zerner
e3c59732c2
Use stable sort for item lists
2015-07-22 09:55:36 +09:30
Toby Zerner
5b8705bfc4
Fix PostStream endless loading due to broken scroll anchor
2015-07-22 09:55:20 +09:30
Toby Zerner
23cd3320c0
Preload data just before boot, not when the store is initialised
2015-07-22 09:54:49 +09:30
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
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
Toby Zerner
46553de539
Fix admin URL
2015-05-06 11:35:21 +09:30
Toby Zerner
99dc94e238
Remove placeholder user controls for now
2015-05-06 11:29:58 +09:30
Toby Zerner
54f731942e
Add user group badges
2015-05-06 11:25:19 +09:30
Toby Zerner
707c60d3ab
Tweak user card UI
2015-05-06 11:24:42 +09:30
Toby Zerner
7f828fffbb
Cleanup
2015-05-06 11:22:03 +09:30
Toby Zerner
69b6266ea9
Fix avatar dropdown UI
2015-05-06 11:21:50 +09:30
Toby Zerner
ff6523a82a
Add icon to notification preferences
2015-05-06 08:33:12 +09:30
Toby Zerner
45033d7d59
Fix up hidden post styles; don't show user card
2015-05-06 08:33:00 +09:30
Toby Zerner
8e1ba5a2af
Dasherize post/notification type class names
2015-05-06 08:32:33 +09:30
Toby Zerner
cc73b5fc56
Fix notifications dropdown closing when unread count is updated
2015-05-05 17:30:36 +09:30
Toby Zerner
efeb236feb
Change notification type components to be like post types
2015-05-05 17:30:18 +09:30
Toby Zerner
a822deaa98
Clean up post type heritable view arguments
2015-05-05 17:29:43 +09:30
Toby Zerner
11b39605e2
Refactor post components and controls
2015-05-05 17:07:12 +09:30
Toby Zerner
762137c6df
Move discussion controls out of lib and into forum
2015-05-05 17:06:46 +09:30
Toby Zerner
0824634a83
Return true if the composer was shown
2015-05-05 17:06:05 +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
701eb6c2dd
Clean up discussion renamed notification
2015-05-05 14:27:59 +09:30
Toby Zerner
f0219de93f
Fix admin
2015-05-05 09:16:53 +09:30
Toby Zerner
342c8db5bd
Share bower components between forum/admin
2015-05-05 09:16:34 +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
2288be12ff
Fix issue with Mithril 0.2.0 (invalid m.route call)
2015-05-04 10:30:06 +09:30
Toby Zerner
041bef1f78
Update mithril
2015-05-04 10:29:38 +09:30
Toby Zerner
abe7b1fd2e
Don't enable pane pinned by default
2015-05-04 08:54:47 +09:30
Toby Zerner
9dd56bf0a4
Prevent error when discussion doesn't have any posts
2015-05-03 12:09:05 +09:30
Toby Zerner
d9d190b772
Gracefully handle non-existent/deleted users during rendering
2015-05-03 12:08:41 +09:30
Toby Zerner
f2e2d59e6f
Use new sort criteria format
2015-05-03 12:08:12 +09:30
Toby Zerner
318e8d2f33
Use new config property name in avatar editor
2015-05-03 11:53:11 +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
3796193291
Only add a post to the post stream once
2015-05-02 08:44:52 +09:30
Toby Zerner
e9f0ef83b0
Remove posts from the post stream by ID
2015-05-02 08:44:42 +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
288fd694a8
Extensibility: data when starting a new discussion
2015-05-02 08:39:44 +09:30
Toby Zerner
f15e7c6501
Extensibility: posts on user activity stream
2015-05-02 08:38:24 +09:30
Toby Zerner
fe0c2d0632
Extensibility: params for discussion page API request
2015-05-02 08:38:05 +09:30
Toby Zerner
8bc09551bb
Extract discussion controls into the model
2015-05-02 08:36:59 +09:30
Toby Zerner
fbdd730ce3
Make discussion hero extensible
2015-05-02 08:36:04 +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