Dashboard
Stats widget
Add a new stats widget
- Open your plugin service provider then add to the
boot
function orplatform/themes/[your-theme]/functions/functions.php
php
add_filter(DASHBOARD_FILTER_ADMIN_LIST, function ($widgets, $widgetSettings) {
return (new \Botble\Dashboard\Supports\DashboardWidgetInstance)
->setType('stats')
->setPermission('the permission key to check')
->setKey('widget_your_widget_key')
->setTitle(__('Widget name'))
->setIcon('fas fa-edit')
->setColor('#f3c200')
->setStatsTotal('[number to display]')
->setRoute(route('the-route-to-list-page'))
->init($widgets, $widgetSettings);
}, 1221, 2);
1221
is the priority, it can be any number but must unique.
WARNING
You can find an example in platform/packages/page/src/Providers/HookServiceProvider.php
line 57.
Remove a stats widget by ID
php
add_filter(DASHBOARD_FILTER_ADMIN_LIST, function ($widgets) {
\Illuminate\Support\Arr::forget($widgets, '[Widget ID]');
return $widgets;
}, 120, 1);
[Widget ID]
is ID of widget. Ex:widget_total_plugins
. You can usedd($widgets)
to find widget ID.
Remove all stats widgets
- Open your plugin service provider then add to the
boot
function orplatform/themes/[your-theme]/functions/functions.php
php
remove_filter(DASHBOARD_FILTER_ADMIN_LIST);
Main widgets
Register new dashboard widget
- Open your plugin service provider then add to the
boot
function orplatform/themes/[your-theme]/functions/functions.php
php
add_filter(DASHBOARD_FILTER_ADMIN_LIST, function ($widgets, $widgetSettings) {
return (new \Botble\Dashboard\Supports\DashboardWidgetInstance)
->setPermission('the permission key to check')
->setKey('widget_your_widget_key')
->setTitle(__('Widget name'))
->setIcon('fas fa-edit')
->setColor('#f3c200')
->setRoute(route('the-route-to-get-data'))
->setBodyClass('scroll-table')
->setColumn('col-md-6 col-sm-6')
->init($widgets, $widgetSettings);
}, 1221, 2);
1221
is the priority, it can be any number but must unique.
WARNING
You can find an example in platform/plugins/blog/src/Providers/HookServiceProvider.php
line 137
- Create a controller to return main content for your widget; the route name is added in above code ( Ex:
the-route-to-get-data
).
php
public function getDataForWidget(\Illuminate\Http\Request $request, \Botble\Base\Http\Responses\BaseHttpResponse $response)
{
$content = 'The content can be a string or rendered from a blade view';
// $content = view('plugins.your-plugin::widgets.sample', compact('data'))->render()
return $response->setData($content);
}
WARNING
You can find an example in platform/plugins/blog/src/Http/Controllers/PostController.php
line 207.