mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-11-02 11:26:04 +01:00
Add onAdminDashboard event. Move maintenance and Statistics widgets on their own partial, add to Twig::plugins_hooked_dashboard_widgets on onAdminDashboard
This commit is contained in:
14
admin.php
14
admin.php
@@ -71,10 +71,12 @@ class AdminPlugin extends Plugin
|
||||
return [
|
||||
'onPluginsInitialized' => [['setup', 100000], ['onPluginsInitialized', 1000]],
|
||||
'onShutdown' => ['onShutdown', 1000],
|
||||
'onFormProcessed' => ['onFormProcessed', 0]
|
||||
'onFormProcessed' => ['onFormProcessed', 0],
|
||||
'onAdminDashboard' => ['onAdminDashboard', 0],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
@@ -423,6 +425,10 @@ class AdminPlugin extends Plugin
|
||||
switch ($this->template) {
|
||||
case 'dashboard':
|
||||
$twig->twig_vars['popularity'] = $this->popularity;
|
||||
|
||||
// Gather Plugin-hooked dashboard items
|
||||
$this->grav->fireEvent('onAdminDashboard');
|
||||
|
||||
break;
|
||||
case 'pages':
|
||||
$page = $this->admin->page(true);
|
||||
@@ -622,4 +628,10 @@ class AdminPlugin extends Plugin
|
||||
return false;
|
||||
}
|
||||
|
||||
public function onAdminDashboard()
|
||||
{
|
||||
$this->grav['twig']->plugins_hooked_dashboard_widgets[] = ['template' => 'dashboard-maintenance'];
|
||||
$this->grav['twig']->plugins_hooked_dashboard_widgets[] = ['template' => 'dashboard-statistics'];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -27,106 +27,11 @@
|
||||
{% block messages %}{% endblock %}
|
||||
|
||||
{% block content_top %}
|
||||
|
||||
{% set gpm = admin.gpm() %}
|
||||
{% set updatable = gpm.getUpdatablePlugins() %}
|
||||
{% set backup = admin.lastBackup() %}
|
||||
|
||||
<div id="admin-dashboard">
|
||||
{% if authorize(['admin.maintenance', 'admin.super']) %}
|
||||
<div id="updates" class="dashboard-item dashboard-left">
|
||||
<div class="tertiary-accent default-box-shadow">
|
||||
<h1>{{ "PLUGIN_ADMIN.MAINTENANCE"|tu }}</h1>
|
||||
<div class="admin-update-charts">
|
||||
<div class="updates-chart">
|
||||
<div class="chart-wrapper">
|
||||
<div class="ct-chart"></div>
|
||||
<span class="numeric hidden"><span>-</span><em>{{ "PLUGIN_ADMIN.UPDATED"|tu|lower }}</em></span>
|
||||
</div>
|
||||
<p class="js__updates-available-description"> </p>
|
||||
</div>
|
||||
<div class="backups-chart">
|
||||
<div class="chart-wrapper">
|
||||
<div class="ct-chart"></div>
|
||||
<script>
|
||||
var data = {
|
||||
series: [{{ backup.chart_fill }}, {{ backup.chart_empty }}]
|
||||
};
|
||||
var options = {
|
||||
donut: true,
|
||||
donutWidth: 10,
|
||||
startAngle: 0,
|
||||
total: 100,
|
||||
showLabel: false,
|
||||
height: 150,
|
||||
chartPadding: !isFirefox ? 5 : 10
|
||||
};
|
||||
Chartist.Pie('.backups-chart .ct-chart', data, options);
|
||||
</script>
|
||||
<span class="numeric">{{ backup.days }}<em>{{ "PLUGIN_ADMIN.DAYS"|tu|lower }}</em></span>
|
||||
</div>
|
||||
<p>{{ "PLUGIN_ADMIN.LAST_BACKUP"|tu }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flush-bottom button-bar">
|
||||
<button data-maintenance-update="{{ uri.addNonce(base_url_relative ~ '/update.json/task' ~ config.system.param_sep ~ 'update', 'admin-form', 'admin-nonce') }}" class="button"><i class="fa fa-cloud-download"></i> {{ "PLUGIN_ADMIN.UPDATE"|tu }}</button>
|
||||
<button data-ajax="{{ uri.addNonce(base_url_relative ~ '/backup.json/task' ~ config.system.param_sep ~ 'backup', 'admin-form', 'admin-nonce') }}" class="button"><i class="fa fa-database"></i> {{ "PLUGIN_ADMIN.BACKUP"|tu }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if authorize(['admin.statistics', 'admin.super']) %}
|
||||
<div id="popularity" class="dashboard-item dashboard-right">
|
||||
<div class="secondary-accent default-box-shadow">
|
||||
<h1>{{ "PLUGIN_ADMIN.STATISTICS"|tu }}</h1>
|
||||
<div class="ct-chart"></div>
|
||||
<script>
|
||||
var data = {
|
||||
labels: {{ popularity.getDailyChartData['labels'] }},
|
||||
series: [
|
||||
{{ popularity.getDailyChartData['data'] }}
|
||||
]
|
||||
};
|
||||
var options = {
|
||||
height: 164,
|
||||
chartPadding: !isFirefox ? 5 : 25,
|
||||
|
||||
axisX: {
|
||||
showGrid: false,
|
||||
labelOffset: {
|
||||
x: 0,
|
||||
y: 5
|
||||
}
|
||||
},
|
||||
axisY: {
|
||||
offset: 15,
|
||||
showLabel: true,
|
||||
showGrid: true,
|
||||
labelOffset: {
|
||||
x: 5,
|
||||
y: 5
|
||||
},
|
||||
scaleMinSpace: 20
|
||||
}
|
||||
};
|
||||
Chartist.Bar('#popularity .ct-chart', data, options);
|
||||
</script>
|
||||
<div class="flush-bottom button-bar stats-bar">
|
||||
<span class="stat">
|
||||
<b>{{ popularity.getDailyTotal }}</b>
|
||||
<i>{{ "PLUGIN_ADMIN.TODAY"|tu }}</i>
|
||||
</span>
|
||||
<span class="stat">
|
||||
<b>{{ popularity.getWeeklyTotal }}</b>
|
||||
<i>{{ "PLUGIN_ADMIN.WEEK"|tu }}</i>
|
||||
</span>
|
||||
<span class="stat">
|
||||
<b>{{ popularity.getMonthlyTotal }}</b>
|
||||
<i>{{ "PLUGIN_ADMIN.MONTH"|tu }}</i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% if grav.twig.plugins_hooked_dashboard_widgets %}
|
||||
{% for widget in grav.twig.plugins_hooked_dashboard_widgets %}
|
||||
{% include 'partials/' ~ widget.template ~ '.html.twig' %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
{% set backup = admin.lastBackup() %}
|
||||
|
||||
{% if authorize(['admin.maintenance', 'admin.super']) %}
|
||||
<div id="updates" class="dashboard-item dashboard-left">
|
||||
<div class="tertiary-accent default-box-shadow">
|
||||
<h1>{{ "PLUGIN_ADMIN.MAINTENANCE"|tu }}</h1>
|
||||
<div class="admin-update-charts">
|
||||
<div class="updates-chart">
|
||||
<div class="chart-wrapper">
|
||||
<div class="ct-chart"></div>
|
||||
<span class="numeric hidden"><span>-</span><em>{{ "PLUGIN_ADMIN.UPDATED"|tu|lower }}</em></span>
|
||||
</div>
|
||||
<p class="js__updates-available-description"> </p>
|
||||
</div>
|
||||
<div class="backups-chart">
|
||||
<div class="chart-wrapper">
|
||||
<div class="ct-chart"></div>
|
||||
<script>
|
||||
var data = {
|
||||
series: [{{ backup.chart_fill }}, {{ backup.chart_empty }}]
|
||||
};
|
||||
var options = {
|
||||
donut: true,
|
||||
donutWidth: 10,
|
||||
startAngle: 0,
|
||||
total: 100,
|
||||
showLabel: false,
|
||||
height: 150,
|
||||
chartPadding: !isFirefox ? 5 : 10
|
||||
};
|
||||
Chartist.Pie('.backups-chart .ct-chart', data, options);
|
||||
</script>
|
||||
<span class="numeric">{{ backup.days }}<em>{{ "PLUGIN_ADMIN.DAYS"|tu|lower }}</em></span>
|
||||
</div>
|
||||
<p>{{ "PLUGIN_ADMIN.LAST_BACKUP"|tu }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flush-bottom button-bar">
|
||||
<button data-maintenance-update="{{ uri.addNonce(base_url_relative ~ '/update.json/task' ~ config.system.param_sep ~ 'update', 'admin-form', 'admin-nonce') }}" class="button" style="display: none"><i class="fa fa-cloud-download"></i> {{ "PLUGIN_ADMIN.UPDATE"|tu }}</button>
|
||||
<button data-ajax="{{ uri.addNonce(base_url_relative ~ '/backup.json/task' ~ config.system.param_sep ~ 'backup', 'admin-form', 'admin-nonce') }}" class="button"><i class="fa fa-database"></i> {{ "PLUGIN_ADMIN.BACKUP"|tu }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,53 @@
|
||||
{% if authorize(['admin.statistics', 'admin.super']) %}
|
||||
<div id="popularity" class="dashboard-item dashboard-right">
|
||||
<div class="secondary-accent default-box-shadow">
|
||||
<h1>{{ "PLUGIN_ADMIN.STATISTICS"|tu }}</h1>
|
||||
<div class="ct-chart"></div>
|
||||
<script>
|
||||
var data = {
|
||||
labels: {{ popularity.getDailyChartData['labels'] }},
|
||||
series: [
|
||||
{{ popularity.getDailyChartData['data'] }}
|
||||
]
|
||||
};
|
||||
var options = {
|
||||
height: 164,
|
||||
chartPadding: !isFirefox ? 5 : 25,
|
||||
|
||||
axisX: {
|
||||
showGrid: false,
|
||||
labelOffset: {
|
||||
x: 0,
|
||||
y: 5
|
||||
}
|
||||
},
|
||||
axisY: {
|
||||
offset: 15,
|
||||
showLabel: true,
|
||||
showGrid: true,
|
||||
labelOffset: {
|
||||
x: 5,
|
||||
y: 5
|
||||
},
|
||||
scaleMinSpace: 20
|
||||
}
|
||||
};
|
||||
Chartist.Bar('#popularity .ct-chart', data, options);
|
||||
</script>
|
||||
<div class="flush-bottom button-bar stats-bar">
|
||||
<span class="stat">
|
||||
<b>{{ popularity.getDailyTotal }}</b>
|
||||
<i>{{ "PLUGIN_ADMIN.TODAY"|tu }}</i>
|
||||
</span>
|
||||
<span class="stat">
|
||||
<b>{{ popularity.getWeeklyTotal }}</b>
|
||||
<i>{{ "PLUGIN_ADMIN.WEEK"|tu }}</i>
|
||||
</span>
|
||||
<span class="stat">
|
||||
<b>{{ popularity.getMonthlyTotal }}</b>
|
||||
<i>{{ "PLUGIN_ADMIN.MONTH"|tu }}</i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
Reference in New Issue
Block a user