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