Admin nav shows only the items a user is authorized to access. Same thing the dashboard. Users with admin.maintenance can update

This commit is contained in:
Flavio Copes
2015-09-10 20:03:21 +02:00
parent 2a3572850c
commit c0f15156d6
4 changed files with 165 additions and 148 deletions

View File

@@ -2,19 +2,22 @@
{% block titlebar %} {% block titlebar %}
<div class="button-bar"> <div class="button-bar">
<div class="button-group"> {% if authorize(['admin.maintenance', 'admin.super']) %}
<button data-clear-cache="{{ base_url_relative }}/cache.json/task{{ config.system.param_sep }}clearCache" class="button"><i class="fa fa-trash"></i> {{ "PLUGIN_ADMIN.CLEAR_CACHE"|tu }}</button> <div class="button-group">
<button type="button" class="button dropdown-toggle" data-toggle="dropdown"> <button data-clear-cache="{{ base_url_relative }}/cache.json/task{{ config.system.param_sep }}clearCache" class="button"><i class="fa fa-trash"></i> {{ "PLUGIN_ADMIN.CLEAR_CACHE"|tu }}</button>
<i class="fa fa-caret-down"></i> <button type="button" class="button dropdown-toggle" data-toggle="dropdown">
</button> <i class="fa fa-caret-down"></i>
<ul class="dropdown-menu"> </button>
<li><a data-clear-cache="{{ base_url_relative }}/cache.json/task{{ config.system.param_sep }}clearCache/cleartype{{ config.system.param_sep }}all" href="#">{{ "PLUGIN_ADMIN.CLEAR_CACHE_ALL_CACHE"|tu }}</a></li> <ul class="dropdown-menu">
<li><a data-clear-cache="{{ base_url_relative }}/cache.json/task{{ config.system.param_sep }}clearCache/cleartype{{ config.system.param_sep }}assets-only" href="#">{{ "PLUGIN_ADMIN.CLEAR_CACHE_ASSETS_ONLY"|tu }}</a></li> <li><a data-clear-cache="{{ base_url_relative }}/cache.json/task{{ config.system.param_sep }}clearCache/cleartype{{ config.system.param_sep }}all" href="#">{{ "PLUGIN_ADMIN.CLEAR_CACHE_ALL_CACHE"|tu }}</a></li>
<li><a data-clear-cache="{{ base_url_relative }}/cache.json/task{{ config.system.param_sep }}clearCache/cleartype{{ config.system.param_sep }}images-only" href="#">{{ "PLUGIN_ADMIN.CLEAR_CACHE_IMAGES_ONLY"|tu }}</a></li> <li><a data-clear-cache="{{ base_url_relative }}/cache.json/task{{ config.system.param_sep }}clearCache/cleartype{{ config.system.param_sep }}assets-only" href="#">{{ "PLUGIN_ADMIN.CLEAR_CACHE_ASSETS_ONLY"|tu }}</a></li>
<li><a data-clear-cache="{{ base_url_relative }}/cache.json/task{{ config.system.param_sep }}clearCache/cleartype{{ config.system.param_sep }}cache-only" href="#">{{ "PLUGIN_ADMIN.CLEAR_CACHE_CACHE_ONLY"|tu }}</a></li> <li><a data-clear-cache="{{ base_url_relative }}/cache.json/task{{ config.system.param_sep }}clearCache/cleartype{{ config.system.param_sep }}images-only" href="#">{{ "PLUGIN_ADMIN.CLEAR_CACHE_IMAGES_ONLY"|tu }}</a></li>
</ul> <li><a data-clear-cache="{{ base_url_relative }}/cache.json/task{{ config.system.param_sep }}clearCache/cleartype{{ config.system.param_sep }}cache-only" href="#">{{ "PLUGIN_ADMIN.CLEAR_CACHE_CACHE_ONLY"|tu }}</a></li>
</div> </ul>
<button data-gpm-checkupdates="" class="button"><i class="fa fa-refresh"></i> {{ "PLUGIN_ADMIN.CHECK_FOR_UPDATES"|tu }}</button> </div>
<button data-gpm-checkupdates="" class="button"><i class="fa fa-refresh"></i> {{ "PLUGIN_ADMIN.CHECK_FOR_UPDATES"|tu }}</button>
{% endif %}
</div> </div>
<h1><i class="fa fa-fw fa-th"></i> {{ "PLUGIN_ADMIN.DASHBOARD"|tu }}</h1> <h1><i class="fa fa-fw fa-th"></i> {{ "PLUGIN_ADMIN.DASHBOARD"|tu }}</h1>
{% endblock %} {% endblock %}
@@ -28,97 +31,101 @@
{% set backup = admin.lastBackup() %} {% set backup = admin.lastBackup() %}
<div id="admin-dashboard"> <div id="admin-dashboard">
<div id="updates" class="dashboard-item dashboard-left"> {% if authorize(['admin.maintenance', 'admin.super']) %}
<div class="tertiary-accent default-box-shadow"> <div id="updates" class="dashboard-item dashboard-left">
<h1>{{ "PLUGIN_ADMIN.MAINTENANCE"|tu }}</h1> <div class="tertiary-accent default-box-shadow">
<div class="admin-update-charts"> <h1>{{ "PLUGIN_ADMIN.MAINTENANCE"|tu }}</h1>
<div class="updates-chart"> <div class="admin-update-charts">
<div class="chart-wrapper"> <div class="updates-chart">
<div class="ct-chart"></div> <div class="chart-wrapper">
<span class="numeric hidden"><span>-</span><em>{{ "PLUGIN_ADMIN.UPDATED"|tu|lower }}</em></span> <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">&nbsp;</p>
</div> </div>
<p class="js__updates-available-description">&nbsp;</p> <div class="backups-chart">
</div> <div class="chart-wrapper">
<div class="backups-chart"> <div class="ct-chart"></div>
<div class="chart-wrapper"> <script>
<div class="ct-chart"></div> var data = {
<script> series: [{{ backup.chart_fill }}, {{ backup.chart_empty }}]
var data = { };
series: [{{ backup.chart_fill }}, {{ backup.chart_empty }}] var options = {
}; donut: true,
var options = { donutWidth: 10,
donut: true, startAngle: 0,
donutWidth: 10, total: 100,
startAngle: 0, showLabel: false,
total: 100, height: 150,
showLabel: false, chartPadding: !isFirefox ? 5 : 10
height: 150, };
chartPadding: !isFirefox ? 5 : 10 Chartist.Pie('.backups-chart .ct-chart', data, options);
}; </script>
Chartist.Pie('.backups-chart .ct-chart', data, options); <span class="numeric">{{ backup.days }}<em>{{ "PLUGIN_ADMIN.DAYS"|tu|lower }}</em></span>
</script> </div>
<span class="numeric">{{ backup.days }}<em>{{ "PLUGIN_ADMIN.DAYS"|tu|lower }}</em></span> <p>{{ "PLUGIN_ADMIN.LAST_BACKUP"|tu }}</p>
</div> </div>
<p>{{ "PLUGIN_ADMIN.LAST_BACKUP"|tu }}</p>
</div> </div>
</div> <div class="flush-bottom button-bar">
<div class="flush-bottom button-bar"> <button data-maintenance-update="{{ base_url_relative }}/update.json/task{{ config.system.param_sep }}update" class="button"><i class="fa fa-cloud-download"></i> {{ "PLUGIN_ADMIN.UPDATE"|tu }}</button>
<button data-maintenance-update="{{ base_url_relative }}/update.json/task{{ config.system.param_sep }}update" class="button"><i class="fa fa-cloud-download"></i> {{ "PLUGIN_ADMIN.UPDATE"|tu }}</button> <button data-ajax="{{ base_url_relative }}/backup.json/task{{ config.system.param_sep }}backup" class="button"><i class="fa fa-database"></i> {{ "PLUGIN_ADMIN.BACKUP"|tu }}</button>
<button data-ajax="{{ base_url_relative }}/backup.json/task{{ config.system.param_sep }}backup" class="button"><i class="fa fa-database"></i> {{ "PLUGIN_ADMIN.BACKUP"|tu }}</button> </div>
</div> </div>
</div> </div>
</div> {% endif %}
<div id="popularity" class="dashboard-item dashboard-right"> {% if authorize(['admin.statistics', 'admin.super']) %}
<div class="secondary-accent default-box-shadow"> <div id="popularity" class="dashboard-item dashboard-right">
<h1>{{ "PLUGIN_ADMIN.STATISTICS"|tu }}</h1> <div class="secondary-accent default-box-shadow">
<div class="ct-chart"></div> <h1>{{ "PLUGIN_ADMIN.STATISTICS"|tu }}</h1>
<script> <div class="ct-chart"></div>
var data = { <script>
labels: {{ popularity.getDailyChartData['labels'] }}, var data = {
series: [ labels: {{ popularity.getDailyChartData['labels'] }},
{{ popularity.getDailyChartData['data'] }} series: [
] {{ popularity.getDailyChartData['data'] }}
}; ]
var options = { };
height: 164, var options = {
chartPadding: !isFirefox ? 5 : 25, height: 164,
chartPadding: !isFirefox ? 5 : 25,
axisX: { axisX: {
showGrid: false, showGrid: false,
labelOffset: { labelOffset: {
x: 0, x: 0,
y: 5 y: 5
} }
},
axisY: {
offset: 15,
showLabel: true,
showGrid: true,
labelOffset: {
x: 5,
y: 5
}, },
scaleMinSpace: 20 axisY: {
} offset: 15,
}; showLabel: true,
Chartist.Bar('#popularity .ct-chart', data, options); showGrid: true,
</script> labelOffset: {
<div class="flush-bottom button-bar stats-bar"> x: 5,
<span class="stat"> y: 5
<b>{{ popularity.getDailyTotal }}</b> },
<i>{{ "PLUGIN_ADMIN.TODAY"|tu }}</i> scaleMinSpace: 20
</span> }
<span class="stat"> };
<b>{{ popularity.getWeeklyTotal }}</b> Chartist.Bar('#popularity .ct-chart', data, options);
<i>{{ "PLUGIN_ADMIN.WEEK"|tu }}</i> </script>
</span> <div class="flush-bottom button-bar stats-bar">
<span class="stat"> <span class="stat">
<b>{{ popularity.getMonthlyTotal }}</b> <b>{{ popularity.getDailyTotal }}</b>
<i>{{ "PLUGIN_ADMIN.MONTH"|tu }}</i> <i>{{ "PLUGIN_ADMIN.TODAY"|tu }}</i>
</span> </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>
</div> </div>
</div> {% endif %}
</div> </div>
{% endblock %} {% endblock %}
@@ -126,19 +133,19 @@
{% include 'partials/messages.html.twig' %} {% include 'partials/messages.html.twig' %}
{% if config.plugins.admin.show_beta_msg %} {% if config.plugins.admin.show_beta_msg %}
<div class="error alert"><i class="fa fa-exclamation-circle"></i> {{ 'PLUGIN_ADMIN.ADMIN_BETA_MSG'|tu }}</div> <div class="error alert"><i class="fa fa-exclamation-circle"></i> {{ 'PLUGIN_ADMIN.ADMIN_BETA_MSG'|tu }}</div>
{% endif %} {% endif %}
<div id="latest"> {% if authorize(['admin.pages', 'admin.super']) %}
<div class="button-bar"> <div id="latest">
<a class="button" href="{{ uri.route(true) }}/pages"><i class="fa fa-fw fa-file-text-o"></i>{{ "PLUGIN_ADMIN.MANAGE_PAGES"|tu }}</a> <div class="button-bar">
<a class="button" href="{{ uri.route(true) }}/pages"><i class="fa fa-fw fa-file-text-o"></i>{{ "PLUGIN_ADMIN.MANAGE_PAGES"|tu }}</a>
</div>
<h1>{{ "PLUGIN_ADMIN.LATEST_PAGE_UPDATES"|tu }}</h1>
<table>
{% for latest in admin.latestPages %}
<tr><td class="double page-title"><a href="{{ base_url }}/pages/{{ latest.route|trim('/') }}"><i class="fa fa-fw fa-file-o"></i> {{ latest.title }}</a></td><td class="double page-route">{{ latest.route }}</td><td><b class="last-modified">{{ latest.modified|nicetime }}</b></td></tr>
{% endfor %}
</table>
</div> </div>
<h1>{{ "PLUGIN_ADMIN.LATEST_PAGE_UPDATES"|tu }}</h1> {% endif %}
<table>
{% for latest in admin.latestPages %}
<tr><td class="double page-title"><a href="{{ base_url }}/pages/{{ latest.route|trim('/') }}"><i class="fa fa-fw fa-file-o"></i> {{ latest.title }}</a></td><td class="double page-route">{{ latest.route }}</td><td><b class="last-modified">{{ latest.modified|nicetime }}</b></td></tr>
{% endfor %}
</table>
</div>
{% endblock %} {% endblock %}

View File

@@ -20,45 +20,55 @@
<li class="{{ (location == 'dashboard') ? 'selected' : '' }}"> <li class="{{ (location == 'dashboard') ? 'selected' : '' }}">
<a href="{{ base_url_relative }}"><i class="fa fa-fw fa-th"></i> {{ "PLUGIN_ADMIN.DASHBOARD"|tu }}</a> <a href="{{ base_url_relative }}"><i class="fa fa-fw fa-th"></i> {{ "PLUGIN_ADMIN.DASHBOARD"|tu }}</a>
</li> </li>
<li class="{{ (location == 'system' or location == 'site') ? 'selected' : '' }}"> {% if authorize(['admin.configuration', 'admin.super']) %}
<a href="{{ base_url_relative }}/system"><i class="fa fa-fw fa-wrench"></i> {{ "PLUGIN_ADMIN.CONFIGURATION"|tu }}</a> <li class="{{ (location == 'system' or location == 'site') ? 'selected' : '' }}">
</li> <a href="{{ base_url_relative }}/system"><i class="fa fa-fw fa-wrench"></i> {{ "PLUGIN_ADMIN.CONFIGURATION"|tu }}</a>
<li class="{{ (location == 'pages') ? 'selected' : '' }}"> </li>
<a href="{{ base_url_relative }}/pages"> {% endif %}
<i class="fa fa-fw fa-file-text-o"></i> {{ "PLUGIN_ADMIN.PAGES"|tu }} {% if authorize(['admin.pages', 'admin.super']) %}
<span class="badges"> <li class="{{ (location == 'pages') ? 'selected' : '' }}">
<span class="badge count">{{ admin.routes(true)|length }}</span> <a href="{{ base_url_relative }}/pages">
</span> <i class="fa fa-fw fa-file-text-o"></i> {{ "PLUGIN_ADMIN.PAGES"|tu }}
</a> <span class="badges">
</li> <span class="badge count">{{ admin.routes(true)|length }}</span>
</span>
</a>
</li>
{% endif %}
{% if grav.twig.plugins_hooked_nav %} {% if grav.twig.plugins_hooked_nav %}
{% for label, item in grav.twig.plugins_hooked_nav %} {% for label, item in grav.twig.plugins_hooked_nav %}
<li class="{{ (location == item.route) ? 'selected' : '' }}"> {% if authorize(['admin.' ~ item.route, 'admin.super']) %}
<a href="{{ base_url_relative }}/{{ item.route }}"> <li class="{{ (location == item.route) ? 'selected' : '' }}">
<i class="fa fa-fw {{ item.icon }}"></i> {{ label|tu }} <a href="{{ base_url_relative }}/{{ item.route }}">
</a> <i class="fa fa-fw {{ item.icon }}"></i> {{ label|tu }}
</li> </a>
</li>
{% endif %}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
<li class="{{ (location == 'plugins') ? 'selected' : '' }}"> {% if authorize(['admin.plugins', 'admin.super']) %}
<a href="{{ base_url_relative }}/plugins"> <li class="{{ (location == 'plugins') ? 'selected' : '' }}">
<i class="fa fa-fw fa-plug"></i> {{ "PLUGIN_ADMIN.PLUGINS"|tu }} <a href="{{ base_url_relative }}/plugins">
<span class="badges"> <i class="fa fa-fw fa-plug"></i> {{ "PLUGIN_ADMIN.PLUGINS"|tu }}
<span class="badge updates"></span> <span class="badges">
<span class="badge count">{{ admin.plugins|length }}</span> <span class="badge updates"></span>
<span class="badge count">{{ admin.plugins|length }}</span>
</span> </span>
</a> </a>
</li> </li>
<li class="{{ (location == 'themes') ? 'selected' : '' }}"> {% endif %}
<a href="{{ base_url_relative }}/themes"> {% if authorize(['admin.themes', 'admin.super']) %}
<i class="fa fa-fw fa-tint"></i> {{ "PLUGIN_ADMIN.THEMES"|tu }} <li class="{{ (location == 'themes') ? 'selected' : '' }}">
<span class="badges"> <a href="{{ base_url_relative }}/themes">
<span class="badge updates"></span> <i class="fa fa-fw fa-tint"></i> {{ "PLUGIN_ADMIN.THEMES"|tu }}
<span class="badge count">{{ admin.themes|length }}</span> <span class="badges">
</span> <span class="badge updates"></span>
</a> <span class="badge count">{{ admin.themes|length }}</span>
</li> </span>
</a>
</li>
{% endif %}
{% include 'nav-pro.html.twig' ignore missing %} {% include 'nav-pro.html.twig' ignore missing %}

View File

@@ -23,7 +23,9 @@
{% else %} {% else %}
<a class="button" href="{{ base_url }}"><i class="fa fa-reply"></i> {{ "PLUGIN_ADMIN.BACK"|tu }}</a> <a class="button" href="{{ base_url }}"><i class="fa fa-reply"></i> {{ "PLUGIN_ADMIN.BACK"|tu }}</a>
<a class="button" href="{{ base_url_relative }}/plugins/install"><i class="fa fa-plus"></i> {{ "PLUGIN_ADMIN.ADD"|tu }}</a> <a class="button" href="{{ base_url_relative }}/plugins/install"><i class="fa fa-plus"></i> {{ "PLUGIN_ADMIN.ADD"|tu }}</a>
<button data-gpm-checkupdates="" class="button"><i class="fa fa-refresh"></i> {{ "PLUGIN_ADMIN.CHECK_FOR_UPDATES"|tu }}</button> {% if authorize(['admin.maintenance', 'admin.super']) %}
<button data-gpm-checkupdates="" class="button"><i class="fa fa-refresh"></i> {{ "PLUGIN_ADMIN.CHECK_FOR_UPDATES"|tu }}</button>
{% endif %}
{% endif %} {% endif %}
</div> </div>
<h1><i class="fa fa-fw fa-plug"></i> {{ "PLUGIN_ADMIN.PLUGINS"|tu }}</h1> <h1><i class="fa fa-fw fa-plug"></i> {{ "PLUGIN_ADMIN.PLUGINS"|tu }}</h1>
@@ -57,4 +59,3 @@
{% endif %} {% endif %}
</div> </div>
{% endblock %} {% endblock %}

View File

@@ -24,7 +24,9 @@
{% else %} {% else %}
<a class="button" href="{{ base_url }}/"><i class="fa fa-reply"></i> {{ "PLUGIN_ADMIN.BACK"|tu }}</a> <a class="button" href="{{ base_url }}/"><i class="fa fa-reply"></i> {{ "PLUGIN_ADMIN.BACK"|tu }}</a>
<a class="button" href="{{ base_url_relative }}/themes/install"><i class="fa fa-plus"></i> {{ "PLUGIN_ADMIN.ADD"|tu }}</a> <a class="button" href="{{ base_url_relative }}/themes/install"><i class="fa fa-plus"></i> {{ "PLUGIN_ADMIN.ADD"|tu }}</a>
<button data-gpm-checkupdates="" class="button"><i class="fa fa-refresh"></i> {{ "PLUGIN_ADMIN.CHECK_FOR_UPDATES"|tu }}</button> {% if authorize(['admin.maintenance', 'admin.super']) %}
<button data-gpm-checkupdates="" class="button"><i class="fa fa-refresh"></i> {{ "PLUGIN_ADMIN.CHECK_FOR_UPDATES"|tu }}</button>
{% endif %}
{% endif %} {% endif %}
</div> </div>
<h1><i class="fa fa-fw fa-plug"></i> {{ "PLUGIN_ADMIN.THEMES"|tu }}</h1> <h1><i class="fa fa-fw fa-plug"></i> {{ "PLUGIN_ADMIN.THEMES"|tu }}</h1>
@@ -56,6 +58,3 @@
{% endif %} {% endif %}
</div> </div>
{% endblock %} {% endblock %}