Toby Zerner
5e22458014
Installer: Prevent crash when views directory is not writable
...
Use plain PHP templates instead of Blade templates so there is nothing
that needs to be written.
closes #376
2015-08-31 14:25:16 +09:30
Toby Zerner
c72bdc8238
Fix Laravel 5.1 compat
...
closes #307
2015-08-31 14:07:11 +09:30
Toby Zerner
bcc16a3329
Add target="_blank" and rel="nofollow" to all formatted links
...
closes #247
2015-08-31 13:36:54 +09:30
Toby Zerner
f5517fbd88
Validate password length
...
We can't do this using the ValidatesBeforeSave trait because the
password has been hashed by then. Instead, we must validate the
original password as it comes in.
2015-08-31 12:38:15 +09:30
Toby Zerner
6a0e3fcf2d
Validate post length to prevent truncation
...
closes #235
2015-08-31 12:36:19 +09:30
Toby Zerner
9f28b4e8dc
Require extensions directory to be writable
2015-08-31 11:22:57 +09:30
Franz Liedke
1d1cc9e443
Fix asset URL generation
...
This is important when Flarum is deployed in a subfolder.
Closes #291 .
2015-08-29 22:38:31 +02:00
Franz Liedke
f5d2d2ff79
Installer: Check for openssl extension
...
Closes #296 .
2015-08-29 22:07:50 +02:00
Lorenz Bausch
a4fe6f3ce3
limit max title length to 80 characters
2015-08-29 11:26:18 +02:00
Lorenz Bausch
ae06b45bc1
remove executable flag from file
2015-08-29 11:23:05 +02:00
Toby Zerner
12d5e48b95
Add helpful hint on how to upgrade PHP
2015-08-29 14:44:55 +09:30
Toby Zerner
bb3c57f9a4
Fix default database name
2015-08-28 14:53:01 +09:30
Toby Zerner
d5074c5286
Use gd as the image driver
...
Presumably gd is more common than imagick, and we already check for it
during installation.
2015-08-28 05:41:25 +09:30
Toby Zerner
41019597d0
Require the PHP DOM extension
2015-08-28 05:30:27 +09:30
Toby Zerner
b689c9de3b
Allow non-admins to reset their password
...
The EditUser command requires the actor to have the "edit" permission,
which is only granted to admins. We don't want to allow users to change
their own password via the API, though. So instead of dispatching the
command, we'll just update the user's password directly in the action.
2015-08-28 03:38:55 +09:30
Toby Zerner
baed659668
Fix reset password error
2015-08-28 02:16:28 +09:30
Toby Zerner
268b041da2
Fix incorrect chmod instruction
2015-08-27 21:51:36 +09:30
Toby Zerner
7d9527e5a0
Check to make sure directories are writable
2015-08-27 21:45:02 +09:30
Toby Zerner
a289884f7c
Fix typo causing bundled extensions to not be enabled
2015-08-27 21:28:15 +09:30
Toby Zerner
822b31468a
Check some more extension requirements
2015-08-27 20:37:20 +09:30
Toby Zerner
d050a7775f
Don't enable the Pusher extension by default
2015-08-27 20:11:14 +09:30
Toby Zerner
5c5be89928
Check some requirements before installation
2015-08-27 20:11:06 +09:30
Toby Zerner
2820ae8ac7
User lighter default theme color
2015-08-27 10:51:14 +09:30
Toby Zerner
498aac5b76
Import admin "log out" translation
2015-08-27 10:50:57 +09:30
Toby Zerner
b0db7bf751
Polish admin dashboard
2015-08-27 10:50:15 +09:30
Franz Liedke
559110a83f
Coding standards
2015-08-27 01:40:18 +02:00
Franz Liedke
c0030dc98a
Revert PATH_INFO magic
2015-08-27 01:31:28 +02:00
Franz Liedke
3b2a0697e2
Fix config retrieval
2015-08-27 00:58:56 +02:00
Franz Liedke
9ec54ad892
Change base URL etc. in config.php file
2015-08-27 00:47:54 +02:00
Franz Liedke
49f20995b2
By default, don't rewrite API base URL
2015-08-26 23:43:33 +02:00
Franz Liedke
1e1f9e51ee
Use path info for routing
2015-08-26 23:39:39 +02:00
Franz Liedke
d12106809f
Extract method
2015-08-26 10:33:41 +02:00
Toby Zerner
b194f07a72
Redirect using configured base URL
2015-08-26 17:48:25 +09:30
Toby Zerner
3e804ca0b5
Delete config.php if installation fails
2015-08-26 17:46:49 +09:30
Toby Zerner
0b8aa5c124
Add header comment; PSR-2 fixes; remove seeders
2015-08-26 16:56:32 +09:30
Franz Liedke
dae8e617ae
Cleanup small things in installer
2015-08-26 09:02:28 +02:00
Toby Zerner
8ec342f6cb
Autoload the cached PHP renderer
2015-08-26 09:46:20 +09:30
Toby Zerner
b67ae4c8a3
Use PHP formatter rendering engine
...
Removes dependency on XSLT extension
2015-08-26 09:34:49 +09:30
Toby Zerner
b8fc0bc376
Make discussion slug URL parameter optional
2015-08-25 19:32:41 +09:30
Toby Zerner
3392d9fdcf
Migrate extensions in upgrade script
2015-08-18 13:56:49 +09:30
Toby Zerner
71c7740086
Get generate:extension command working again
2015-08-18 13:56:25 +09:30
Toby Zerner
edccd10693
Only delete avatar if it exists
2015-08-17 16:06:51 +09:30
Toby Zerner
a32250884c
Ensure posts are sorted correctly
2015-08-17 15:52:39 +09:30
Toby Zerner
2b812ab211
Use a relative path to locate migrations
2015-08-17 14:57:33 +09:30
Toby Zerner
ce91058ab1
Derive base URL from the original URI
2015-08-17 14:57:12 +09:30
Toby Zerner
fec6e39fe1
Fix PHP 5.5 compat
2015-08-17 14:56:39 +09:30
Toby Zerner
1052aa55ea
Implement web installer
2015-08-17 14:12:02 +09:30
Toby Zerner
17dbeefabe
Clean up
2015-08-17 14:11:45 +09:30
Toby Zerner
212880640d
Support table custom table prefix
...
Laravel automatically adds a table prefix to any table names, so we
need to wrap our aliased table in DB::raw.
2015-08-14 12:51:30 +09:30
Toby Zerner
34d4a7ed89
Fix Laravel 5.1 compat
2015-08-14 12:50:32 +09:30
Toby Zerner
8065c980d4
Don't redirect to HTML-only mode if in debug mode
2015-08-14 12:50:15 +09:30
Toby Zerner
6cee3b7160
Automatically derive base_path from base_url
2015-08-14 12:50:00 +09:30
Toby Zerner
014bacb7ab
Add ability to uninstall an extension
2015-08-14 12:48:29 +09:30
Toby Zerner
2edcbacccc
Improve install command, add custom migrations system
...
Implemented our own migration repository + migrator (based on Laravel's
stuff) so that we can keep track of which migrations have been run for
core and per-extension. That way we can simple call the migrator to
upgrade core/extensions, and to uninstall extensions.
2015-08-14 12:47:59 +09:30
Toby Zerner
5bcf6ae630
Add Escaper plugin so that formatting can be escaped
2015-08-13 13:04:56 +09:30
Toby Zerner
58223b8a23
Don't allow empty post content
...
Parsing the post content makes it non-empty (`<t></t>`), so we don't
parse it if it is empty. Also delete a created discussion if the first
post was invalid.
closes flarum/core#224
2015-08-13 13:03:49 +09:30
Toby Zerner
9a0190e13a
Allow post author to see their own deleted post
...
closes flarum/core#225
2015-08-13 13:02:13 +09:30
Toby Zerner
6dd6942e17
Fix avatar uploading permissions
...
closes flarum/core#230
2015-08-13 12:59:40 +09:30
Toby Zerner
9c7fab5d8c
Support running in subdirectory with base_path config
2015-08-13 12:58:59 +09:30
Toby Zerner
aec83b295a
Remove old files
2015-08-13 12:56:26 +09:30
Toby Zerner
6123773001
New listen API
...
Event subscriptions now take place before *any* boot method is called.
This ensures that all event listeners are registered before things
happen – e.g. locales are registered before the translator is
instantiated in the Tags extension's boot method.
2015-08-13 12:55:48 +09:30
Toby Zerner
acf27cebb1
Fix tobscure/json-api compat
2015-08-13 10:41:39 +09:30
Toby Zerner
8aafce5fd8
Fix Laravel 5.1 compat
2015-08-13 10:41:17 +09:30
Toby Zerner
46a69b6b7e
Fix PHP 5.5 compat
...
Might be better to opt for a getLayout method?
2015-08-13 10:41:08 +09:30
Toby Zerner
47595ff9c4
Decouple from Laravel, implement translator
2015-08-12 18:33:39 +09:30
Toby Zerner
9f0358bb39
Update to Laravel 5.1
...
Eloquent `lists()` now returns a collection
2015-08-12 13:24:11 +09:30
Franz Liedke
25c5fb075f
Redo installer
2015-08-12 01:42:39 +02:00
Franz Liedke
7b07e02e75
Use dependency injection in migrations
2015-08-12 01:29:40 +02:00
Toby Zerner
4e01aa10d8
Flush client assets when custom LESS is updated
2015-08-06 16:17:05 +09:30
Toby Zerner
3aebd458b0
Make sure access/email/password tokens are valid
2015-08-06 15:04:38 +09:30
Toby Zerner
2553f4f0a3
Throw an exception if discussion not found
...
closes flarum/core#208
2015-08-06 13:59:09 +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
c361c97394
Enforce discussion renaming/deleting/post editing timed permissions
2015-08-05 19:21:33 +09:30
Toby Zerner
4c06e78b57
Allow/disallow signup per config
2015-08-05 18:19:26 +09:30
Toby Zerner
023eff95e3
Let users see themselves even if they can't see the forum
2015-08-05 18:12:09 +09:30
Toby Zerner
ff8dc5ef25
Enforce forum.view permission
2015-08-05 18:08:31 +09:30
Toby Zerner
ca8fee4685
Let users see their own email/activation status
2015-08-05 16:07:22 +09:30
Toby Zerner
42e382045a
API: Add event for determining user groups for permissions
2015-08-05 16:06:55 +09:30
Toby Zerner
57e37e06ef
Disable "start discussion" button if no permission
2015-08-05 16:06:25 +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
f49d0e5341
Allow locale to be selected in footer
2015-08-05 09:50:57 +09:30
Toby Zerner
48df9bb678
Fix syntax error
2015-08-04 21:50:44 +09:30
Toby Zerner
187517a9c7
Remove ability for users to delete themselves
2015-08-04 21:35:41 +09:30
Toby Zerner
5fa7a8c555
Add the parsedBody to API request input
2015-08-04 21:22:40 +09:30
Franz Liedke
eee34598f1
Include editUser relationship when editing posts.
...
Closes flarum/core#214 . Hopefully. :)
2015-08-04 13:15:56 +02:00
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
a2c3c4e51b
Only add posted activity if the post is visible publicly
...
This is very restrictive behaviour and we'll probably need to think of
something a bit more powerful in the future. But it's a good stopgap.
2015-08-04 17:47:46 +09:30
Toby Zerner
667fe56947
Use morphTo instead of mappedMorphTo
...
Turns out we don't need MappedMorphTo after all.
2015-08-04 17:33:58 +09:30
Toby Zerner
556b93e367
Add admin client JS/LESS to extension stub
2015-08-04 17:18:45 +09:30
Toby Zerner
9700fbbb0b
Add API to add translations to admin client
...
Again, I'll split up these APIs soon enough
2015-08-04 17:16:34 +09:30
Toby Zerner
7ed3834dc9
Include discussion last user relationship in response after creating post
2015-08-04 17:15:57 +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
2e4d38b3e7
Move config/permission actions to API; clean up cache flushing
2015-08-04 10:40:04 +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
66ee6e57ee
Convert permission IDs into strings
2015-08-02 18:02:35 +09:30
Toby Zerner
025d8f691d
Add API methods to add POST/DELETE routes to the API
2015-08-02 17:26:30 +09:30
Toby Zerner
6f09ba6591
Clean up
2015-07-31 20:17:17 +09:30
Toby Zerner
fde7afd3e2
Finish admin permissions page and clean up everything
2015-07-31 20:16:47 +09:30
Toby Zerner
5706c71c86
Convert email/password token date fields
2015-07-31 20:14:19 +09:30
Toby Zerner
ba41c5313a
Allow for the addition of admin assets
...
I think the `BuildClientView` event should ultimately be split into two
separate events for the forum/admin clients, but this is fine for now.
2015-07-31 20:13:13 +09:30
Toby Zerner
4e0cfdc1b2
Allow for the addition of new API endpoints
2015-07-31 20:11:44 +09:30
Toby Zerner
cea8e7f567
Add group management actions to API
2015-07-31 20:10:49 +09:30
Toby Zerner
6641af3ac3
Refactor some model stuff out into traits
2015-07-31 20:09:31 +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
513d896f51
Fix more aspects of the password reset process
2015-07-31 14:13:35 +09:30
Toby Zerner
8db17b3fb8
Fix password saving
2015-07-31 14:00:42 +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
e863bd53d3
Get admin area working again
2015-07-29 20:58:22 +09:30
Toby Zerner
d8d9cac7c3
Enable caching of minified formatter JS
2015-07-29 20:54:48 +09:30
Toby Zerner
97334bea12
Don't display notifications with deleted subjects
2015-07-28 17:15:09 +09:30
Toby Zerner
8f29949016
Fix email confirmation
2015-07-28 17:14:08 +09:30
Toby Zerner
02944548a1
Clean up
2015-07-28 15:35:03 +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
8c18ff3349
Tweak TextFormatter JS settings
2015-07-28 12:44:58 +09:30
Toby Zerner
62a01c69a9
Make sure sort key exists
2015-07-28 12:27:59 +09:30
Toby Zerner
3489791932
Allow customisation of the client layout
2015-07-27 14:45:35 +09:30
Toby Zerner
153a5b7ce4
PERF: avoid reinstantiation of event subscribers
2015-07-27 11:53:47 +09:30
Toby Zerner
c0d57fd399
PERF: further simplify User::hasPermission()
2015-07-27 11:20:18 +09:30
Toby Zerner
07b4a5125f
PERF: cache the results of User::hasPermssion()
2015-07-27 11:17:21 +09:30
Toby Zerner
b04e7f96c8
Cache model dates
2015-07-27 10:59:24 +09:30
Toby Zerner
e5e737eca4
Update LESS variable names
2015-07-24 10:03:11 +09:30
Toby Zerner
ae3bbc1700
Replace duplicate tags instead of erroring
2015-07-23 20:29:39 +09:30
Toby Zerner
c1b12c7fc9
Extract emoticons, BBCode, and Markdown into extensions
2015-07-23 20:24:41 +09:30
Toby Zerner
cb3004b6de
Various fixes to extension generator/stub
2015-07-23 20:24:28 +09:30
Toby Zerner
c8e6fbc338
Pass correct param to notification email views
2015-07-23 16:39:56 +09:30
Toby Zerner
8c6e87760c
Docblock cleanup
2015-07-23 14:35:17 +09:30
Toby Zerner
53326e509c
Number is a filter, not page param
2015-07-23 14:34:19 +09:30
Toby Zerner
5b54a122c9
Notification one-per-user limit should work between instances
2015-07-23 14:33:58 +09:30
Toby Zerner
6d57f902b3
Ensure we don't preload index data on non-index pages
2015-07-23 14:33:31 +09:30
Toby Zerner
b699bbadbc
Make formatter extensible
2015-07-23 14:29:33 +09:30
Toby Zerner
34b7a2fbf6
Move locale files
2015-07-22 16:05:24 +09:30
Toby Zerner
8442f65cdf
Fix post visibility scoping
2015-07-22 16:05:11 +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
6c50f1614b
Group assets by client in extension stub
2015-07-22 10:12:11 +09:30
Toby Zerner
4fb292a777
Always use default includes when preloading discussion list
...
Making them explicit causes problems when extensions want to include
something by default (e.g. tags)
2015-07-22 10:11:23 +09:30
Toby Zerner
57f55c2dd6
Improve forum route registration API
2015-07-22 10:04:22 +09:30
Toby Zerner
c697c734d5
Don't run gambits if there's no search query
2015-07-22 09:57:52 +09:30
Toby Zerner
e1a51f095f
Random cleanup
2015-07-22 09:57:25 +09:30
Toby Zerner
d410746c51
Fix new notifications on old subjects not appearing
2015-07-20 18:20:34 +09:30
Toby Zerner
c287d40072
Fix incorrect variable name
2015-07-20 18:10:11 +09:30
Toby Zerner
3820b8c65f
Fix incorrect member visibility on event
2015-07-20 18:10:04 +09:30
Toby Zerner
605c56ce3c
Update extension generator
2015-07-20 18:08:50 +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
19fe138770
Change order of bootstrapping
...
See commit on flarum/flarum for explanation
2015-07-20 18:01:08 +09:30