mirror of
https://github.com/flarum/framework.git
synced 2024-11-25 00:43:54 +08:00
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
This commit is contained in:
parent
e038c5c9d9
commit
dbd33f687c
|
@ -4,6 +4,7 @@ import Select from 'flarum/components/Select';
|
||||||
import Button from 'flarum/components/Button';
|
import Button from 'flarum/components/Button';
|
||||||
import Alert from 'flarum/components/Alert';
|
import Alert from 'flarum/components/Alert';
|
||||||
import saveConfig from 'flarum/utils/saveConfig';
|
import saveConfig from 'flarum/utils/saveConfig';
|
||||||
|
import ItemList from 'flarum/utils/ItemList';
|
||||||
|
|
||||||
export default class BasicsPage extends Component {
|
export default class BasicsPage extends Component {
|
||||||
constructor(...args) {
|
constructor(...args) {
|
||||||
|
@ -72,18 +73,12 @@ export default class BasicsPage extends Component {
|
||||||
<div className="helpText">
|
<div className="helpText">
|
||||||
Choose the page which users will first see when they visit your forum. If entering a custom value, use the path relative to the forum root.
|
Choose the page which users will first see when they visit your forum. If entering a custom value, use the path relative to the forum root.
|
||||||
</div>,
|
</div>,
|
||||||
<label className="checkbox">
|
this.homePageItems().toArray().map(({path, label}) =>
|
||||||
<input type="radio" name="homePage" value="/all" checked={this.values.default_route() === '/all'} onclick={m.withAttr('value', this.values.default_route)}/>
|
<label className="checkbox">
|
||||||
All Discussions
|
<input type="radio" name="homePage" value={path} checked={this.values.default_route() === path} onclick={m.withAttr('value', this.values.default_route)}/>
|
||||||
</label>,
|
{label}
|
||||||
<label className="checkbox">
|
</label>
|
||||||
<input type="radio" name="homePage" value="custom" checked={this.values.default_route() !== '/all'} onclick={() => {
|
)
|
||||||
this.values.default_route('');
|
|
||||||
m.redraw(true);
|
|
||||||
this.$('.BasicsPage-homePage input').select();
|
|
||||||
}}/>
|
|
||||||
Custom <input className="FormControl" value={this.values.default_route()} oninput={m.withAttr('value', this.values.default_route)} style={this.values.default_route() !== '/all' ? 'margin-top: 5px' : 'display:none'}/>
|
|
||||||
</label>
|
|
||||||
]
|
]
|
||||||
})}
|
})}
|
||||||
|
|
||||||
|
@ -120,6 +115,24 @@ export default class BasicsPage extends Component {
|
||||||
return this.fields.some(key => this.values[key]() !== config[key]);
|
return this.fields.some(key => this.values[key]() !== config[key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build a list of options for the default homepage. Each option must be an
|
||||||
|
* object with `path` and `label` properties.
|
||||||
|
*
|
||||||
|
* @return {ItemList}
|
||||||
|
* @public
|
||||||
|
*/
|
||||||
|
homePageItems() {
|
||||||
|
const items = new ItemList();
|
||||||
|
|
||||||
|
items.add('allDiscussions', {
|
||||||
|
path: '/all',
|
||||||
|
label: 'All Discussions'
|
||||||
|
});
|
||||||
|
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
onsubmit(e) {
|
onsubmit(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
|
|
|
@ -24,14 +24,15 @@ export default function boot(app) {
|
||||||
// able to click on the 'back' button to go home, regardless of which page
|
// able to click on the 'back' button to go home, regardless of which page
|
||||||
// they started on.
|
// they started on.
|
||||||
const defaultRoute = app.forum.attribute('defaultRoute');
|
const defaultRoute = app.forum.attribute('defaultRoute');
|
||||||
|
let defaultAction = 'index';
|
||||||
|
|
||||||
for (const i in app.routes) {
|
for (const i in app.routes) {
|
||||||
if (app.routes[i].path === defaultRoute) {
|
if (app.routes[i].path === defaultRoute) defaultAction = i;
|
||||||
app.routes[i].path = '/';
|
|
||||||
app.history.push(i, '/');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
app.routes[defaultAction].path = '/';
|
||||||
|
app.history.push(defaultAction, '/');
|
||||||
|
|
||||||
m.startComputation();
|
m.startComputation();
|
||||||
|
|
||||||
m.mount(document.getElementById('app-navigation'), Navigation.component({className: 'App-backControl', drawer: true}));
|
m.mount(document.getElementById('app-navigation'), Navigation.component({className: 'App-backControl', drawer: true}));
|
||||||
|
|
|
@ -63,7 +63,7 @@ class ForumServiceProvider extends ServiceProvider
|
||||||
$routes->get(
|
$routes->get(
|
||||||
'/all',
|
'/all',
|
||||||
'flarum.forum.index',
|
'flarum.forum.index',
|
||||||
$this->action('Flarum\Forum\Actions\IndexAction')
|
$defaultAction = $this->action('Flarum\Forum\Actions\IndexAction')
|
||||||
);
|
);
|
||||||
|
|
||||||
$routes->get(
|
$routes->get(
|
||||||
|
@ -129,11 +129,16 @@ class ForumServiceProvider extends ServiceProvider
|
||||||
event(new RegisterForumRoutes($routes));
|
event(new RegisterForumRoutes($routes));
|
||||||
|
|
||||||
$settings = $this->app->make('Flarum\Core\Settings\SettingsRepository');
|
$settings = $this->app->make('Flarum\Core\Settings\SettingsRepository');
|
||||||
|
$defaultRoute = $settings->get('default_route');
|
||||||
|
|
||||||
|
if (isset($routes->getRouteData()[0]['GET'][$defaultRoute])) {
|
||||||
|
$defaultAction = $routes->getRouteData()[0]['GET'][$defaultRoute];
|
||||||
|
}
|
||||||
|
|
||||||
$routes->get(
|
$routes->get(
|
||||||
'/',
|
'/',
|
||||||
'flarum.forum.default',
|
'flarum.forum.default',
|
||||||
$routes->getRouteData()[0]['GET'][$settings->get('default_route')]
|
$defaultAction
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user