mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-11-02 19:36:08 +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 [
|
return [
|
||||||
'onPluginsInitialized' => [['setup', 100000], ['onPluginsInitialized', 1000]],
|
'onPluginsInitialized' => [['setup', 100000], ['onPluginsInitialized', 1000]],
|
||||||
'onShutdown' => ['onShutdown', 1000],
|
'onShutdown' => ['onShutdown', 1000],
|
||||||
'onFormProcessed' => ['onFormProcessed', 0]
|
'onFormProcessed' => ['onFormProcessed', 0],
|
||||||
|
'onAdminDashboard' => ['onAdminDashboard', 0],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -423,6 +425,10 @@ class AdminPlugin extends Plugin
|
|||||||
switch ($this->template) {
|
switch ($this->template) {
|
||||||
case 'dashboard':
|
case 'dashboard':
|
||||||
$twig->twig_vars['popularity'] = $this->popularity;
|
$twig->twig_vars['popularity'] = $this->popularity;
|
||||||
|
|
||||||
|
// Gather Plugin-hooked dashboard items
|
||||||
|
$this->grav->fireEvent('onAdminDashboard');
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'pages':
|
case 'pages':
|
||||||
$page = $this->admin->page(true);
|
$page = $this->admin->page(true);
|
||||||
@@ -622,4 +628,10 @@ class AdminPlugin extends Plugin
|
|||||||
return false;
|
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 messages %}{% endblock %}
|
||||||
|
|
||||||
{% block content_top %}
|
{% block content_top %}
|
||||||
|
|
||||||
{% set gpm = admin.gpm() %}
|
|
||||||
{% set updatable = gpm.getUpdatablePlugins() %}
|
|
||||||
{% set backup = admin.lastBackup() %}
|
|
||||||
|
|
||||||
<div id="admin-dashboard">
|
<div id="admin-dashboard">
|
||||||
{% if authorize(['admin.maintenance', 'admin.super']) %}
|
{% if grav.twig.plugins_hooked_dashboard_widgets %}
|
||||||
<div id="updates" class="dashboard-item dashboard-left">
|
{% for widget in grav.twig.plugins_hooked_dashboard_widgets %}
|
||||||
<div class="tertiary-accent default-box-shadow">
|
{% include 'partials/' ~ widget.template ~ '.html.twig' %}
|
||||||
<h1>{{ "PLUGIN_ADMIN.MAINTENANCE"|tu }}</h1>
|
{% endfor %}
|
||||||
<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>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% 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