Commit Graph

857 Commits

Author SHA1 Message Date
Toby Zerner
feffe53a86 Add ability to upload a logo + favicon, and add custom header HTML
Closes #268. Not going to bother with a preview SVG or anything fancy for now – we can think about that as part of #746. Right now it's just good to finally get this functionality in!

Also need to think about apple-touch-icon, msTile stuff, and social sharing image. Not sure if this is all too much for core, but it's definitely too much for the current Appearance page layout. Again, something to think about as part of #746.

Code is a bit rough around the edges, but figured there's not much point in using the command bus properly since #870.
2016-06-04 18:05:46 +09:30
Dominion
01a6dccb83 Add newline to locale switch (#974)
- Added to match format of other sections and increase readability.
2016-06-04 13:43:47 +09:30
Toby Zerner
786c2fcfa5 Convert EditCustomCssModal into a SettingsModal 2016-06-03 14:51:51 +09:30
Toby Zerner
8600d81a5e Recompile dist JS using latest version of babel 2016-06-03 10:57:42 +09:30
Toby Zerner
31997b8fdf Make Post component subclasses build on parent content
Extensions may wish to add attributes/content to all posts, regardless of type, by extending methods on the Post component. Now the subclasses will not overwrite, but rather append to, these additions.
2016-05-28 09:44:44 +09:30
Toby Zerner
2d5a7ce064 Make discussion "hidden" state more explicit
Previously a discussion was classified on the front-end as "hidden" if it had zero posts. This was technically a correct statement as the discussion would not be visible to the public... but it also meant that a discussion with zero posts (like one awaiting approval) was impossible for the OP to delete/hide (i.e. indicate that they made a mistake and they don't want the discussion to be approved).
2016-05-28 09:43:21 +09:30
Toby Zerner
a380424de4 Remove space characters from in-between list items
They were causing some weirdness with spacing between redraws.
2016-05-28 09:38:58 +09:30
Toby Zerner
fd44db407c Fix notifications dropdown not showing 2016-05-27 13:53:50 +09:30
Toby Zerner
240aa9e83b Improve permissions page
- Introduce the concept of "required permissions" - basically a permission dependency tree. In order for a group to be granted one permission, they must also have another.
- Improve redraw performance by not building dropdown menu contents until dropdown is opened

ref #904
2016-05-27 12:42:19 +09:30
Toby Zerner
607b3a66ae Fix PostEdited tooltip not updating 2016-05-27 12:38:28 +09:30
Davis
2b9ec71a81 Trim spaces in getPlainContent, prevent images from loading
fixes #834 closes #963
2016-05-27 07:34:57 +09:30
Toby Zerner
6aa017659f Recompile dist JS 2016-05-27 07:32:36 +09:30
Davis
f0f668fb93 Fix Permission Name (#965) 2016-05-26 23:54:25 +09:00
Toby Zerner
9bfb797fdc Refactor the web app bootstrapping code
- All custom JS variables are now preloaded into the `app.data` object, rather than directly on the `app` object. This means that admin settings are available in `app.data.settings` rather than `app.settings`, etc.
- Cleaner route handler generation
- Renamed ConfigureClientView to ConfigureWebApp, though the former still exists and is deprecated
- Partial fix for #881 (strips ?nojs=1 from URL if possible, so that refreshing will attempt to load JS version again)
2016-05-26 19:04:24 +09:30
Franz Liedke
2525e3e7ad
Recompile dist JS 2016-05-23 22:54:48 +09:00
Dominion
a14562b100 Pluralize Turkish (#967)
- Changes the pluralization category of Turkish.
- See: https://discuss.flarum.org/d/2937-pluralization-problems
2016-05-23 22:53:33 +09:00
Dominion
ac096926af Clean up translation keys (#964)
- Corrects the suffix on a key in the Change Email modal.
- Extracts the title of the Edit User modal.
2016-05-21 22:03:57 +09:30
Davis
909f52522b Show post IP address in meta dropdown. closes #956 closes #657 2016-05-21 22:02:42 +09:30
Toby Zerner
38c15c5a08 Correct order of compiled JavaScript modules 2016-05-21 20:32:06 +09:30
Toby Zerner
c05f8b732d Move details from post edited indicator back into a tooltip
Showing the username and time of edit is TMI (too much information). This commit changes the visible text to "Edited", and shows the full edit information in a tooltip.

ref #446
2016-05-21 20:27:56 +09:30
Toby Zerner
58c9a6164a Automatically support basic HTML tags in translations
This allows front-end translations to use basic (attributeless) HTML tags freely, without the need for the translator call to supply a matching vdom element. Translations can thus make use of styling (<em>, <code>, etc.) as they see fit. The translator call can still optionally supply a vdom element to substitute in more complex tags where necessary (e.g. hyperlinks).

/cc @dcsjapan
2016-05-21 20:25:32 +09:30
Franz Liedke
60e50713e7
Customize behavior for various navigation callbacks, pass KeyboardEvent instance to callback
Refs #264.
2016-05-15 23:09:59 +09:00
Franz Liedke
513c586be3
Make key callback registration more concise
Refs #264.
2016-05-15 22:58:41 +09:00
Franz Liedke
9f8c2ed458
First shot at extracting keyboard navigation code to separate util class
Refs #264.
2016-05-15 22:34:16 +09:00
Franz Liedke
0cc75be55e
Add a heading to the admin mail page 2016-05-15 20:46:58 +09:00
Franz Liedke
fa7871cc16
Admin menu: Move email tab closer to the top 2016-05-15 20:31:23 +09:00
Franz Liedke
a884a3592b
Tweak structure of mail settings page
Refs #258 and #933.
2016-05-15 20:28:05 +09:00
Franz Liedke
9637d27b56
Fix translation keys 2016-05-15 12:08:11 +09:00
Franz Liedke
9d2d302f2d
Cleanup code (unused import, variable name) 2016-05-14 17:19:01 +09:00
David Sevilla Martín
99dbea4524 Replace pencil & tooltip w/ just text; Fixes #446 (#954) 2016-05-14 17:06:02 +09:00
Franz Liedke
dd0dc44dd8
Merge branch 'pr/933'
Closes #258.
2016-05-13 00:25:27 +09:00
Franz Liedke
18ee8578e8
Remove unused import 2016-05-13 00:25:11 +09:00
Franz Liedke
7256122a43
Compile dist JS for 3c6429a 2016-05-12 23:58:09 +09:00
Augustus D'Souza
3c6429aba8 Fixes #945 - Incorrect Scrubber count value (#946)
* Fixes #945 - Incorrect Scrubber count value

Clicking and dragging the Scrubber beyond the final post causes the counter to exceed the total post count. This commit fixes that issue.

* Updated post calculating logic
2016-05-10 10:52:20 +09:00
David Sevilla Martín
6b108d99cb Changed "Advanced" to "Mail"
+ Added labels above inputs
-  Removed Placeholders
2016-04-23 09:19:02 -04:00
David Sevilla Martín
45045a2ac1 Added "Advanced" page on admin & SMTP settings
Refs #258
2016-04-17 09:54:41 -04:00
Franz Liedke
3000ec695d
Add a tooltip to the avatar icon
Refs #249.
2016-04-17 22:34:03 +09:00
Franz Liedke
323339190c
Use a slightly different icon for suggesting upload functionality
Refs #249.
2016-04-17 22:24:09 +09:00
David Sevilla Martín
af5f47bb90 If no avatar uploaded user will see the upload button directly on "avatar" without full opacity
Refs #249
2016-04-16 13:09:09 -04:00
Franz Liedke
cd16adfa69
Remove unused imports 2016-04-14 23:22:33 +09:00
Toby Zerner
603537c3d1 Scroll to reply preview initially 2016-04-08 13:51:23 +09:30
Toby Zerner
0f975da403 Don't show username/email fields when editing own account. fixes #903 2016-04-08 13:40:37 +09:30
Toby Zerner
66a39bbbf5 Fix buttons being given incorrect title 2016-04-08 13:38:50 +09:30
Toby Zerner
6dd190114d Retain global page components between routes 2016-04-08 13:38:16 +09:30
Sajjad Hasehmian
ffaafb92d4 Update app.js 2016-04-07 22:59:01 +04:30
Franz Liedke
37d7f315d3 Fix locale key 2016-04-01 10:49:11 +09:00
Toby Zerner
b799039c29 Fix commas in new DiscussionRenamedPost tooltip. ref #428 2016-04-01 12:02:51 +10:30
Franz Liedke
895281acb2 DiscussionRenamedPost: Always show new title, show old title in tooltip
Refs #428.
2016-04-01 10:07:34 +09:00
Franz Liedke
42c9086c32 Improve Button component to only show tooltip if textual content is available 2016-04-01 09:51:18 +09:00
Toby Zerner
210bbc800a Fix settings not automatically showing when an extension is enabled 2016-03-31 17:11:23 +10:30
Franz Liedke
f97ebfcbc0 Remove leftover function 2016-03-31 15:12:07 +09:00
Franz Liedke
328a244f92 Fix DiscussionRenamedPost not being redrawn when toggling
Closes #428.
2016-03-31 09:35:19 +09:00
Franz Liedke
d6c6e78193 Make DiscussionRenamedPost spread across three lines
This also adds a little button for expanding / collapsing this additional information.
It is expanded by default right now because I could not get the toggling to work yet.

Refs #428.
2016-03-30 22:13:08 +09:00
Franz Liedke
bc11ec68dd Extract EventPost description into separate method
This makes it easier to override in subclasses.
In preparation for #428.
2016-03-30 20:41:15 +09:00
Franz Liedke
9ae189bb9f Only update human time objects every ten seconds 2016-03-30 19:47:40 +09:00
Franz Liedke
179fcfb3ca Show full button content as tooltip
Refs #494.
2016-03-30 10:04:08 +09:00
Franz Liedke
51da153592 extractText: Avoid unnecessary variable 2016-03-30 09:59:54 +09:00
Franz Liedke
25d18d79fb Revert "Use GroupBadge component since we already have that"
This reverts commit eb76767e70.
2016-03-29 22:46:23 +09:00
Franz Liedke
eb76767e70 Use GroupBadge component since we already have that 2016-03-29 22:39:26 +09:00
Franz Liedke
98c4883cfd Remove unused mixin imports 2016-03-29 22:32:15 +09:00
Franz Liedke
dbbbc689bb Prevent humanTime helper to generate future times
Fixes #592.
2016-03-29 22:23:11 +09:00
Franz Liedke
16b229649a Use group ID instead of name in generated class names
This fixes #847.
2016-03-29 22:08:44 +09:00
Toby Zerner
76ea6f3695 Clean up unused code 2016-03-28 15:46:52 +10:30
Toby Zerner
7120ba2050 Add specific error message when an email address is not found in forgot password modal 2016-03-28 15:46:20 +10:30
Toby Zerner
a5c8ef0566 Tweak user email confirmation alert
- Make sure is_activated is serialized to a bool (otherwise "0" will evaluate to true)
- Remove "error" class from message so it's more friendly
- Make the alert more prominent by mounting it into a new div at the top of the page
- Add loading UX to the resend button
2016-03-23 22:17:42 +10:30
Sajjad Hasehmian
b13adfec84 Show alert for unverified User 2016-03-22 18:52:32 +04:30
Toby Zerner
820752f61c Oops, back to Mithril 0.2.3! 2016-03-21 21:25:00 +10:30
Toby Zerner
1ca1639139 Extract sortMap variable
Also revert previous uncommitted change in dist file
2016-03-18 10:06:58 +10:30
Toby Zerner
65f2d84d55 Fix "sort by" dropdown being empty
Must be something in the latest version of Chrome that caused this to start being a problem, because @franzliedke started experiencing it a few days ago, and I only just experienced it for the first time yesterday.
2016-03-18 09:37:25 +10:30
Toby Zerner
cf63e063ba Fix regression with maintenance of scroll position when jumping between discussion list filters 2016-03-18 09:36:09 +10:30
Toby Zerner
1395ce6c30 Upgrade to flarum-gulp 0.2.0 / Babel 6 2016-03-18 09:31:01 +10:30
Sajjad Hasehmian
5097d7f9a4 Update Mithril 2016-03-16 00:48:01 +03:30
Toby Zerner
8087d9ea47 Add missing super.init calls 2016-03-11 13:45:38 +10:30
Toby Zerner
d1c436c4d5 Dramatically improve performance when typing in a modal
Since Mithril doesn't really offer granular redraw control, typing in a text input on a modal would trigger a redraw for the whole page (including the page content behind the modal) on every keystroke. This commit allows components to be "paused" so that their vdom subtree will be retained instead of reconstructed on subsequent redraws. When a modal is opened, we pause the main page component, and when it's closed, we unpause it. This means that while a modal is visible, only the content inside of the modal will be redrawn, dramatically improving performance.
2016-03-11 13:18:16 +10:30
Toby Zerner
e37c7a9b06 Remove sudo mode and add password confirmation when changing email address
closes #674
2016-03-11 12:44:18 +10:30
Toby Zerner
e2e5ac8c0c Fix browser back button losing scroll position. ref #835 2016-03-10 17:55:35 +10:30
Toby Zerner
cdbc4b9717 Fix regressions related to deleting posts
- On the front-end, correct the check to see if the discussion has no more posts
- On the back-end, run a query to count the posts instead of using the comments_count, because the comments_count does not include other deleted posts
2016-02-29 18:41:59 +10:30
Toby Zerner
c7b6426fd4 Delete a discussion when its last post is deleted. fixes #823 2016-02-26 13:26:09 +10:30
Toby Zerner
acdb1ff749 Revert #687 + #197. fixes #785
Unfortunately we have no way to calculate the number of comment posts that are previous to the current viewing position of the discussion, without loading all of the posts which is going to be too expensive (even if we do it selectively somehow).
2016-02-26 13:11:52 +10:30
Toby Zerner
50e56ac0a1 Recompile admin JS 2016-02-26 12:50:03 +10:30
Toby Zerner
82fc4dd483 Refactor Composer rendering for smoother animations
Also fixes a couple of miscellaneous bugs:
- Minimise the Composer when clicking the preview button in full-screen mode on desktop.
- Minimise the Composer when clicking the link to the discussion/post in the header on mobile/full-screen mode.
2016-02-26 12:49:49 +10:30
Toby Zerner
05fe4446bf Fix crash when displaying a discussion with no posts. closes #823 2016-02-22 22:22:49 +10:30
Toby Zerner
71d2e71908 Condense into value/oninput into bidi 2016-02-22 21:22:18 +10:30
Sajjad Hasehmian
2143a96c19 Fix login box autocomplete 2016-02-16 21:08:45 +03:30
Daniel Klabbers
191589e2b1 Implemented extensions as an object, usable by backend and frontend. 2016-02-10 15:13:51 +01:00
Sajjad Hasehmian
b3035c18b6 Remove "Mark as Read" confirmation fixes #782 2016-02-10 10:50:24 +03:30
Toby Zerner
24ed2c0d8f Update Mithril 2016-02-06 18:58:34 +10:30
Toby Zerner
173f88da92 Better post scrubber size calculations. fixes #109 2016-02-06 18:47:09 +10:30
Franz Liedke
97979b2189 Store discussion slug in database table
In preparation for #646.
2016-02-04 11:46:30 +01:00
Toby Zerner
efff4c1801 Add priorities to user page sidebar items 2016-01-31 17:11:13 +10:30
Toby Zerner
db06b8c71a Fix mistake in previous commit 2016-01-19 19:07:06 +10:30
Toby Zerner
3cec7e8b46 Patch Mithril bug causing redraws to fail
Turns out there's a little more to the regression in e5a7013. First, we need to give the spaces in between list items a key too. Second, there's a bug in the latest Mithril code where using string keys can break the diffing algorithm. I've patched it manually in our dist JS files for now, and reported the issue: https://github.com/lhorie/mithril.js/issues/934
2016-01-19 18:55:57 +10:30
Toby Zerner
60d78cedef Update bower dependencies, fix redraw regression
- In Mithril, `finally` has been removed from promise objects as it is not part of the ES spec. See https://gist.github.com/jish/e9bcd75e391a2b21206b for info on the substitute.
- Fix a regression introduced in e5a7013 which broke some redraws
2016-01-19 17:59:19 +10:30
Toby Zerner
9b5ec9d7ba Commit latest dist files
See https://github.com/flarum/core/issues/727#issuecomment-172384020
2016-01-19 16:52:01 +10:30
dcsjapan
be924c4fa0 Extract translations for the Add Extension modal
- Extracts three translations for this placeholder dialog.
- Adds a forum link to one of the translations.
2016-01-19 10:16:07 +09:00
Toby Zerner
aaab2cc86e Clear search when input is empty and enter is pressed. fixes #650 2016-01-13 10:06:04 +10:30
Toby Zerner
e5a7013c2c Key item lists to maintain identity across redraws
Fixes #667. This issue was due to the fact that Mithril would change the "Lock" badge into a "Sticky" badge, but the tooltip initialization would not be triggered because it was using the same element. By maintaining element identity, the "Lock" badge will remain untouched, and a new element for the "Sticky" badge will be inserted before it. See https://lhorie.github.io/mithril/mithril.html#dealing-with-focus for more information.
2016-01-13 09:34:12 +10:30
Sajjad Hasehmian
02bcb0f898 Add flash animation when scrolling to post preview fixes #666 🤘 2016-01-12 10:58:19 +03:30
Bogdan Teodoru
5120d9577e #679 Ask for confirmation before "Mark all as Read" 2016-01-12 08:23:02 +02:00
Sajjad Hasehmian
15398fcc6d Add rel="nofollow" to bio links (fixes #449) 2016-01-11 13:29:01 +03:30
Bogdan Teodoru
1f5219f2a2 #679 Ask for confirmation before "Mark all as Read" 2016-01-10 17:20:01 +02:00
Toby Zerner
1aaf588341 Merge branch 'scrubber-display-only-comments' of https://github.com/ahsanity/core 2016-01-02 12:04:04 +10:30
Toby Zerner
0fcc8dca46 Merge pull request #676 from petermein/user-online-indicators
User online indicators
2016-01-02 09:34:11 +10:30
Toby Zerner
bf87518161 Use username helper when displaying user search results 2015-12-30 15:26:54 +10:30
Peter Mein
8c8de8eb22 Fixed name to camel case 2015-12-26 13:06:58 +01:00
Peter Mein
5431a90dbd Changed case on helper function
Stub for renaming case of file
2015-12-26 13:06:31 +01:00
Ahsanul Bari
7a8c7518bd Issue #197: Make PostStreamScrubber display numbers relating to only comment posts 2015-12-25 13:01:42 +06:00
Toby Zerner
9cb45c98d8 Extract notification settings into an item list 2015-12-21 10:38:15 +10:30
Peter Mein
fbcd2cf88c Added missing import 2015-12-16 13:48:38 +01:00
Peter Mein
e55b7a14e5 Added user online indicator to post 2015-12-16 13:43:46 +01:00
Toby Zerner
c97b01a445 Log in immediately after registration
Newly-created accounts are allowed to log in straight away, but they still have the permissions of a guest until they've confirmed their email address. Instead of showing a success message after registration, we reload the page since they're already logged in.

Still todo: show a message explaining that they need to verify their email address to do anything, and allow it to be resent.
2015-12-05 15:22:25 +10:30
Toby Zerner
b0b3af0305 Improve LoginButton styles, make popup window smaller 2015-12-05 15:19:24 +10:30
Toby Zerner
1cfae4ad14 Merge branch 'sudo-mode'
# Conflicts:
#	CHANGELOG.md
2015-12-03 15:12:51 +10:30
Toby Zerner
9896378b59 Overhaul sessions, tokens, and authentication
- Use cookies + CSRF token for API authentication in the default client. This mitigates potential XSS attacks by making the token unavailable to JavaScript. The Authorization header is still supported, but not used by default.
- Make sensitive/destructive actions (editing a user, permanently deleting anything, visiting the admin CP) require the user to re-enter their password if they haven't entered it in the last 30 minutes.
- Refactor and clean up the authentication middleware.
- Add an `onhide` hook to the Modal component. (+1 squashed commit)
2015-12-03 15:11:57 +10:30
Toby Zerner
81a1c0955b Fix some issues with dropdown positioning 2015-12-03 14:51:55 +10:30
Toby Zerner
05386b1259 Clean up 2015-12-03 14:51:35 +10:30
dcsjapan
c432ed7d5c Add third-level namespacing to deleted_user_text 2015-11-30 11:17:11 +09:00
dcsjapan
4bfbf68bca Extract leftover strings
Extracts strings that were missed previously in:
- Dashboard page of admin interface.
- Edit Custom CSS modal of admin interface.
- Settings modal of admin interface.
- Post activity list on user page of forum UI.
Hopefully there aren't any more!
2015-11-28 17:14:22 +09:00
Franz Liedke
b3a5822ddb Rename HTTP method override header
This is the name recommended by the JSON-API spec:
http://jsonapi.org/recommendations/#patchless-clients
2015-11-26 17:43:32 +01:00
young
a80d72d165 Fix #627 2015-11-26 02:03:00 +08:00
Toby Zerner
2c4fae60bc Allow provision of an avatar URL to upload during sign up
This can be used by authentication extensions (i.e. mirror Facebook/Twitter profile picture). Rough implementation, needs refactoring.
2015-11-23 11:53:57 +10:30
Toby Zerner
7eab206f91 Don't pad the body when the composer is positioned absolutely (on mobile) 2015-11-23 10:07:23 +10:30
Toby Zerner
599958354c Refactor composer preview logic 2015-11-23 08:47:16 +10:30
Toby Zerner
c79bda6279 Fix composer preview button on mobile. closes #196 2015-11-21 13:16:25 +10:30
Toby Zerner
6374f92676 Improve composer appearance/usability on mobile
On mobile:
- Move submit button to right side of toolbar
- Move first header item to toolbar
- Size textarea correctly
2015-11-21 13:16:05 +10:30
Toby Zerner
1f4e03d1fa Make sure dropdowns stay within the viewport horizontally too 2015-11-20 12:35:07 +10:30
Toby Zerner
acf67ca416 Add a "load more" button to the end of the post stream
This is necessary if the page is viewed in a context with no scrolling, i.e. an auto-resizing iframe
2015-11-20 12:35:07 +10:30
young
095e8164e8 Update LogInModal.js 2015-11-06 15:54:06 +08:00
Franz Liedke
0bdf873e65 Fix another error handling regression 2015-11-05 14:17:48 +01:00
Toby Zerner
4734dbf46d Release 0.1.0-beta.4 2015-11-05 16:29:13 +10:30
Toby Zerner
783a14610a Revert back button behaviour
As of 25932cf, the back button was no longer shown if the user came in directly to a discussion. This caused problems on mobile where it was kind of hard to get back home without the button.
2015-11-05 16:24:04 +10:30
Toby Zerner
96b85f1330 Use icon instead of "Discussions" text, fix bugs
- Fix admin page crash
- Only show invisible pin button on desktop; hide it completely on ≤ tablet
2015-11-03 15:54:06 +10:30
Toby Zerner
25932cf7c4 Add label to back button, change behaviour
The back button longer shows if the user hasn't actually navigated anywhere. e.g. if they come in directly to a discussion, it will be hidden.
2015-11-03 15:54:05 +10:30
Toby Zerner
d497782f65 Release 0.1.0-beta.3 2015-11-03 10:01:52 +10:30
Toby Zerner
119d1721e0 Revert e1315d2; always attempt to parse JSON
This way if there is a PHP error which outputs a 200 OK text/html response, Flarum will correctly show an error message.
2015-10-31 14:49:14 +10:30
Toby Zerner
eb571c5595 Change ItemList API 2015-10-30 22:45:58 +10:30
Toby Zerner
e1315d27a4 Only parse as JSON if appropriate content type 2015-10-29 17:52:52 +10:30
Toby Zerner
7127bea15e Solidify ItemList API 2015-10-29 17:52:52 +10:30
Toby Zerner
5e2f659f54 Extract method to get the permalink to a post
Necessary so that the embed extension can override it.
2015-10-27 12:09:24 +10:30
Toby Zerner
f3612261ec Improve logic to see if post has been fully loaded
Should fix #295 once and for all.
2015-10-24 13:17:25 +10:30
Franz Liedke
e95cb09caa Recompile JavaScript 2015-10-22 10:16:08 +02:00
Toby Zerner
415b68f84f Add flood control
closes #271
2015-10-22 16:57:48 +10:30
Toby Zerner
c0364cbc9d Clean up some old code 2015-10-22 12:25:22 +10:30
dcsjapan
323ced8b00 Rename the key for the "Hidden" badge tooltip
- Shortens the key name for consistency with `badge:` namespace.
- Revised YAML to follow.
2015-10-22 09:31:13 +09:00
Toby Zerner
ea98e4bda9 More helpful avatar upload error messages
ref #165, #118
2015-10-22 10:40:38 +10:30
dcsjapan
2903a7068c Add namespacing for badges
- Adds a `lib.badge` namespace to match extension handling.
2015-10-21 16:30:53 +09:00
Toby Zerner
2a5c0c1c7a Improve request error debug output 2015-10-21 10:47:07 +10:30
Toby Zerner
14af6c0e8b Remove app.trans shortcut
Use `app.translator.trans` instead.
2015-10-21 10:31:28 +10:30
Toby Zerner
c2f802878a Fix translation keys 2015-10-21 10:27:09 +10:30
Toby Zerner
b23e821013 Merge branch 'key-adjustment' of https://github.com/dcsjapan/flarum-core into dcsjapan-key-adjustment
# Conflicts:
#	js/forum/src/components/LogInModal.js
2015-10-21 10:02:07 +10:30
Toby Zerner
12830265d9 Change back to 401 error on invalid login
See 26a821e3e2 (commitcomment-13866552)
2015-10-21 09:04:58 +10:30
Toby Zerner
6d7b826133 Fix bad filename 2015-10-20 22:52:47 +10:30
Toby Zerner
9b0aa574f0 Update broken bower resource paths 2015-10-20 22:48:32 +10:30
Toby Zerner
067552efe5 Revert error handling regression 2015-10-20 22:07:08 +10:30
dcsjapan
659cfb72ad Fix the double correction
- Fixes one mangled app.translator call.
2015-10-20 15:44:58 +09:00
dcsjapan
49d59089e4 Add third tier to key namespacing
- Changes all `app.trans` calls to `app.translator.trans` calls.
- Changes existing keys to [three-tier namespace structure](https://github.com/flarum/english/pull/12).
- Extracts additional strings for `lib:` namespace.
- Extracts two previously missed strings for EditGroupModal.js.
2015-10-20 13:04:43 +09:00
Toby Zerner
a9eb62880e Remove behaviour where backspace re-focuses on title field 2015-10-20 12:49:19 +10:30
Toby Zerner
26a821e3e2 Improve client XHR error handling
The default XHR error handler produce an alert which is appropriate to the response status code. It can be overridden per-request (by specifying the `errorHandler` option) so that the alert can be suppressed or displayed in a different position (e.g. inside a modal).

ref #118
2015-10-20 12:48:26 +10:30
Toby Zerner
5cd2d6a79f Add error handling to edit group modal 2015-10-19 15:44:00 +10:30
Toby Zerner
a3a64749c5 Only decrease unread count if notification is unread
closes #590
2015-10-19 15:27:46 +10:30
Toby Zerner
d8eed9d171 Allow pluralisation of event post description 2015-10-16 12:50:12 +10:30
Toby Zerner
c08b62af80 Refactor translation and validation
We now use Symfony's Translation component. Yay! We get more powerful pluralisation and better a fallback mechanism. Will want to implement the caching mechanism at some point too. The API is replicated in JavaScript, which could definitely use some testing.

Validators have been refactored so that they are decoupled from models completely (i.e. they simply validate arrays of user input). Language packs should include Laravel's validation messages.

ref #267
2015-10-15 22:30:45 +10:30
Toby Zerner
044d730480 Potential fix for #381
Have not yet been able to test in situ.
2015-10-14 16:35:48 +10:30
Toby Zerner
4b3e1b16d9 Remove forum. prefix from permissions
closes #425
2015-10-14 16:11:00 +10:30
Toby Zerner
bdf626b552 Basic parsing of HTML tags in translations
This allows text to be wrapped with a virtual element:

	key: "This is a <test>Test</test>"

	app.trans('key', {test: <a href="#"/>});

closes #574
2015-10-14 15:24:28 +10:30
Toby Zerner
68a7886cec Merge pull request #577 from dcsjapan/leftover-string-extraction
Extract leftover core strings
2015-10-14 14:48:02 +10:30
Toby Zerner
a3c11587b7 Merge pull request #575 from dcsjapan/admin-string-extraction 2015-10-14 14:45:29 +10:30
Toby Zerner
c7c2d9a755 Fake PATCH/PUT/DELETE requests
closes #502
2015-10-14 12:46:59 +10:30
Toby Zerner
9772e398f6 Evaluate <script> tags in TextFormatter output
This allows us to rely on TextFormatter's highlight.js loading code instead of implementing our own.

closes #532
2015-10-14 11:45:33 +10:30
Toby Zerner
e3569d39cc Clean up, don't use mixin
PhpStorm/WebStorm doesn't like the mixin syntax, and it's clearer to just use Object.assign.
2015-10-13 16:57:18 +10:30
Toby Zerner
33dd5fff36 Initialise component state in init() instead of constructor
This allows component state to be overridden via monkey-patch. ref #246
2015-10-13 16:55:56 +10:30
Toby Zerner
6f7cce5adf Further refinements to admin extensions page 2015-10-13 12:27:10 +10:30
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