The Config
You can configure several options within Maelstrom via the config which should be located at /config/maelstrom.php
(assuming you've published it)
If you've not yet published it you can do so with:
php artisan vendor:publish --tag maelstrom-config
Below is a point of reference with some simple explanations of what each config item does.
<?php
return [
/*
* Displays in the logo area.
*/
'title' => 'Maelstrom',
/*
* The root path of your control panel.
*/
'path' => '/admin',
/*
* This will be prepended to the start of all breadcrumbs.
*/
'breadcrumb' => [
[
'label' => 'Dashboard',
'url' => '/admin'
]
],
/*
* You can set some base sidebar items here, nothing fancy, however
* we recommend defining this somewhere else so you can use things
* such as the route() helper, we just need to globally expose a variable
* called $maelstrom_sidebar which we can do inside the AppServiceProviders boot method
*
* e.g. View::share('maelstrom_sidebar', [ ...items ])
*/
'sidebar' => [
[
'id' => 'dashboard',
'label' => 'Dashboard',
'url' => '/admin',
'icon' => 'radar-chart',
]
],
/*
* "light" or "dark" - This gets passed to ant design where possible.
*/
'theme' => 'dark',
/*
* Where does your asset pipeline output our JS?
* (relative to the public folder)
*/
'core_js_path' => 'js/maelstrom.js',
/*
* Where does your asset pipeline output our CSS?
* (relative to the public folder)
*/
'core_css_path' => 'css/maelstrom.css',
/*
* Will include custom css files after maelstrom.css on every page.
*/
'custom_css' => [
// ...
],
/*
* Will include custom js files after maelstrom.js on every page.
*
* If you want automatic cache busting AND config caching
* You'll need to push to the stack `footer_after` or
* publish the `maelstrom:partials/footer-scripts.blade.php`
* and use the `mix()` helper in there.
*/
'custom_js' => [
// ...
],
/*
* Although we use the IoC container to allow you to overwrite
* which panel we load, you can also define your custom root panel here.
*/
'panel' => \Maelstrom\Panel::class,
/*
* If you need some basic authentication, we've got some bits for you.
* Use as much or as little as you need.
*/
'auth' => [
/*
* If you want the built in authentication features,
* set to false if you want to disable it.
*/
'enabled' => true,
/*
* We use the current user in "some" places - mostly on the
* "edit my account" page, if you use the built in controller
* then you can change the model here.
*/
'model' => \App\User::class,
/*
* If you need to protect this endpoint at route level
* you can provide some middleware, which can abort(401) the request.
*/
'guard' => 'auth',
],
/*
* We provide a form of nested resources, that allow you to
* pick related entities e.g. categories, we have a little
* automated system which can help you with this which can
* be configured below.
*/
'form_options' => [
/*
* If you want the automatic form options route to register,
* set to false if you want to disable it or provide your own routes.
*/
'enabled' => true,
/*
* If you need to protect this endpoint at route level
* you can provide some middleware, which can abort(401) the request.
*/
'guard' => 'auth',
/*
* These form options will be included in the AJAX endpoint.
* We just need to know the "name" of the set, then which model
* it is you're wanting to return values of, any applied scopes
* where the value field should draw from and which field should be the
* name/label field. e.g.
*
* 'categories' => [
* 'model' => App\Category::class,
* 'scopes' => [],
* 'value' => 'id',
* 'label' => 'name',
* ],
*/
'models' => [
// ...
]
],
/*
* Our media manager is a simple tool to attach
* single or multiple media items to another entity,
* it provides back the ID of the related media
* which you can handle however you like, the options
* are listed below.
*/
'media_manager' => [
/*
* If you want the automatic form options route to register,
* set to false if you want to disable it or provide your own routes.
*/
'enabled' => true,
/*
* If you need to protect this endpoint at route level
* you can provide some middleware, which can abort(401) the request.
*/
'guard' => 'auth',
/*
* Provide the disk from filesystems.php which will be
* used to store the uploaded media.
*/
'disk' => 'public',
/*
* If you need to inject a custom media class, you can do so - however make sure it
* extends our base class, or copies the methods across.
*/
'model' => \Maelstrom\Models\Media::class,
/*
* A list of accepted mime-types for the media uploader.
* We use the symfony mime type detection for this, which
* isn't always accurate, so be careful.
*/
'mime_types' => [
'image/svg',
'image/png',
'image/jpeg',
'application/pdf',
],
/*
* What dimensions should we make the thumbnails of uploaded assets?
*/
'thumbnails' => [
'width' => 300,
'height' => 300,
],
]
];