Add grid for admin dashboard
This commit is contained in:
parent
79a96ec6d8
commit
6b6cec7f43
|
|
@ -23,9 +23,26 @@ use Option;
|
|||
|
||||
class AdminController extends Controller
|
||||
{
|
||||
public function index()
|
||||
public function index(Filter $filter)
|
||||
{
|
||||
$grid = [
|
||||
'layout' => [
|
||||
['md-6', 'md-6'],
|
||||
],
|
||||
'widgets' => [
|
||||
[
|
||||
[
|
||||
'admin.widgets.dashboard.usage',
|
||||
'admin.widgets.dashboard.notification',
|
||||
],
|
||||
['admin.widgets.dashboard.chart'],
|
||||
],
|
||||
],
|
||||
];
|
||||
$grid = $filter->apply('grid:admin.index', $grid);
|
||||
|
||||
return view('admin.index', [
|
||||
'grid' => $grid,
|
||||
'sum' => [
|
||||
'users' => User::count(),
|
||||
'players' => Player::count(),
|
||||
|
|
@ -425,14 +442,14 @@ class AdminController extends Controller
|
|||
|
||||
$grid = [
|
||||
'layout' => [
|
||||
['md-6', 'md-6']
|
||||
['md-6', 'md-6'],
|
||||
],
|
||||
'widgets' => [
|
||||
[
|
||||
['admin.widgets.status.info'],
|
||||
[]
|
||||
]
|
||||
]
|
||||
[],
|
||||
],
|
||||
],
|
||||
];
|
||||
$grid = $filter->apply('grid:admin.status', $grid);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,134 +3,5 @@
|
|||
{% block title %}{{ trans('general.dashboard') }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="small-box bg-info">
|
||||
<div class="inner">
|
||||
<h3>{{ sum.users }}</h3>
|
||||
<p>{{ trans('admin.index.total-users') }}</p>
|
||||
</div>
|
||||
<div class="icon"><i class="fas fa-users"></i></div>
|
||||
<a href="{{ url('admin/users') }}" class="small-box-footer">
|
||||
{{ trans('general.user-manage') }}
|
||||
<i class="fa fa-arrow-circle-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="small-box bg-green">
|
||||
<div class="inner">
|
||||
<h3>{{ sum.players }}</h3>
|
||||
<p>{{ trans('admin.index.total-players') }}</p>
|
||||
</div>
|
||||
<div class="icon"><i class="fas fa-gamepad"></i></div>
|
||||
<a href="{{ url('admin/players') }}" class="small-box-footer">
|
||||
{{ trans('general.player-manage') }}
|
||||
<i class="fa fa-arrow-circle-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="small-box bg-purple">
|
||||
<div class="inner">
|
||||
<h3>{{ sum.textures }}</h3>
|
||||
<p>{{ trans('admin.index.total-textures') }}</p>
|
||||
</div>
|
||||
<div class="icon"><i class="fas fa-file"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="small-box bg-yellow">
|
||||
<div class="inner">
|
||||
{% if sum.storage > 1024 %}
|
||||
<h3>{{ (sum.storage / 1024)|round(1) }}MB</h3>
|
||||
{% else %}
|
||||
<h3>{{ sum.storage }}KB</h3>
|
||||
{% endif %}
|
||||
<p>{{ trans('admin.index.disk-usage') }}</p>
|
||||
</div>
|
||||
<div class="icon"><i class="fas fa-hdd"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">{{ trans('admin.notifications.send.title') }}</h3>
|
||||
</div>
|
||||
<form method="post" action="{{ url('/admin/notifications/send') }}">
|
||||
{{ csrf_field() }}
|
||||
<div class="card-body">
|
||||
{% if errors.any %}
|
||||
<div class="callout callout-danger">{{ errors.first }}</div>
|
||||
{% endif %}
|
||||
{% set sent_result = session_pull('sentResult') %}
|
||||
{% if sent_result %}
|
||||
<div class="callout callout-success">{{ sent_result }}</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
<label>{{ trans('admin.notifications.receiver.title') }}</label>
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="receiver" value="all" required>
|
||||
{{ trans('admin.notifications.receiver.all') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="receiver" value="normal" required>
|
||||
{{ trans('admin.notifications.receiver.normal') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="receiver" value="uid" required>
|
||||
{{ trans('admin.notifications.receiver.uid') }}
|
||||
<input type="number" name="uid" class="form-control">
|
||||
</label>
|
||||
</div>
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="receiver" value="email" required>
|
||||
{{ trans('admin.notifications.receiver.email') }}
|
||||
<input type="email" name="email" class="form-control">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('admin.notifications.title') }}</label>
|
||||
<input type="text" name="title" class="form-control" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('admin.notifications.content') }}</label>
|
||||
<textarea name="content" class="form-control" rows="3"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<input
|
||||
type="submit"
|
||||
value="{{ trans('general.submit') }}"
|
||||
class="btn btn-primary"
|
||||
>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="card card-primary">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">{{ trans('admin.index.overview') }}</h3>
|
||||
</div>
|
||||
<div class="card-body"><div id="chart"></div></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ include('shared.grid') }}
|
||||
{% endblock %}
|
||||
|
|
|
|||
6
resources/views/admin/widgets/dashboard/chart.twig
Normal file
6
resources/views/admin/widgets/dashboard/chart.twig
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<div class="card card-primary">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">{{ trans('admin.index.overview') }}</h3>
|
||||
</div>
|
||||
<div class="card-body"><div id="chart"></div></div>
|
||||
</div>
|
||||
61
resources/views/admin/widgets/dashboard/notification.twig
Normal file
61
resources/views/admin/widgets/dashboard/notification.twig
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">{{ trans('admin.notifications.send.title') }}</h3>
|
||||
</div>
|
||||
<form method="post" action="{{ url('/admin/notifications/send') }}">
|
||||
{{ csrf_field() }}
|
||||
<div class="card-body">
|
||||
{% if errors.any %}
|
||||
<div class="callout callout-danger">{{ errors.first }}</div>
|
||||
{% endif %}
|
||||
{% set sent_result = session_pull('sentResult') %}
|
||||
{% if sent_result %}
|
||||
<div class="callout callout-success">{{ sent_result }}</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
<label>{{ trans('admin.notifications.receiver.title') }}</label>
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="receiver" value="all" required>
|
||||
{{ trans('admin.notifications.receiver.all') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="receiver" value="normal" required>
|
||||
{{ trans('admin.notifications.receiver.normal') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="receiver" value="uid" required>
|
||||
{{ trans('admin.notifications.receiver.uid') }}
|
||||
<input type="number" name="uid" class="form-control">
|
||||
</label>
|
||||
</div>
|
||||
<div class="radio">
|
||||
<label>
|
||||
<input type="radio" name="receiver" value="email" required>
|
||||
{{ trans('admin.notifications.receiver.email') }}
|
||||
<input type="email" name="email" class="form-control">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('admin.notifications.title') }}</label>
|
||||
<input type="text" name="title" class="form-control" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>{{ trans('admin.notifications.content') }}</label>
|
||||
<textarea name="content" class="form-control" rows="3"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer">
|
||||
<input
|
||||
type="submit"
|
||||
value="{{ trans('general.submit') }}"
|
||||
class="btn btn-primary"
|
||||
>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
55
resources/views/admin/widgets/dashboard/usage.twig
Normal file
55
resources/views/admin/widgets/dashboard/usage.twig
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="small-box bg-info">
|
||||
<div class="inner">
|
||||
<h3>{{ sum.users }}</h3>
|
||||
<p>{{ trans('admin.index.total-users') }}</p>
|
||||
</div>
|
||||
<div class="icon"><i class="fas fa-users"></i></div>
|
||||
<a href="{{ url('admin/users') }}" class="small-box-footer">
|
||||
{{ trans('general.user-manage') }}
|
||||
<i class="fa fa-arrow-circle-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="small-box bg-green">
|
||||
<div class="inner">
|
||||
<h3>{{ sum.players }}</h3>
|
||||
<p>{{ trans('admin.index.total-players') }}</p>
|
||||
</div>
|
||||
<div class="icon"><i class="fas fa-gamepad"></i></div>
|
||||
<a href="{{ url('admin/players') }}" class="small-box-footer">
|
||||
{{ trans('general.player-manage') }}
|
||||
<i class="fa fa-arrow-circle-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="small-box bg-purple">
|
||||
<div class="inner">
|
||||
<h3>{{ sum.textures }}</h3>
|
||||
<p>{{ trans('admin.index.total-textures') }}</p>
|
||||
</div>
|
||||
<div class="icon"><i class="fas fa-file"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<div class="small-box bg-yellow">
|
||||
<div class="inner">
|
||||
{% if sum.storage > 1024 %}
|
||||
<h3>{{ (sum.storage / 1024)|round(1) }}MB</h3>
|
||||
{% else %}
|
||||
<h3>{{ sum.storage }}KB</h3>
|
||||
{% endif %}
|
||||
<p>{{ trans('admin.index.disk-usage') }}</p>
|
||||
</div>
|
||||
<div class="icon"><i class="fas fa-hdd"></i></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Loading…
Reference in New Issue
Block a user