Merge branch 'develop' into feature/integrate-with-admin-pro

This commit is contained in:
Flavio Copes
2015-11-24 19:45:26 +01:00
7 changed files with 66 additions and 47 deletions

View File

@@ -1,8 +1,20 @@
# v1.0.0-rc.7
## 11/23/2015
1. [](#improved)
* Various French language updates
1. [](#bugfix)
* **Nonce fixes** (hopefully the last of them!)
# v1.0.0-rc.6
## XX/XX/2015
## 11/21/2015
1. [](#improved)
* Implemented logic to detect when offline and suppress Ajax calls
* Added nonce logic to be used by JS
1. [](#bugfix)
* Nonce fix for updating themes
* Nonce fix for deleting pages
# v1.0.0-rc.5
## 11/20/2015

View File

@@ -1,5 +1,5 @@
name: Admin Panel
version: 1.0.0-rc.5
version: 1.0.0-rc.7
description: Adds an advanced administration panel to manage your site
icon: empire
author:

View File

@@ -267,7 +267,7 @@ class AdminController
$author = $this->grav['config']->get('site.author.name', '');
$fullname = $user->fullname ?: $username;
$reset_link = rtrim($this->grav['uri']->rootUrl(true), '/') . '/' . trim($this->admin->base, '/') . '/reset/task' . $param_sep . 'reset/user'. $param_sep . $username . '/token' . $param_sep . $token;
$reset_link = rtrim($this->grav['uri']->rootUrl(true), '/') . '/' . trim($this->admin->base, '/') . '/reset/task' . $param_sep . 'reset/user'. $param_sep . $username . '/token' . $param_sep . $token . '/admin-nonce' . $param_sep . Utils::getNonce('admin-form');
$sitename = $this->grav['config']->get('site.title', 'Website');
$from = $this->grav['config']->get('plugins.email.from', 'noreply@getgrav.org');
@@ -738,9 +738,11 @@ class AdminController
}
// Filter value and save it.
$this->post = array('enabled' => 1, '_redirect' => 'plugins');
$this->post = array('enabled' => 1);
$obj = $this->prepareData();
$obj->save();
$this->post = array('_redirect' => 'plugins');
$this->admin->setMessage($this->admin->translate('PLUGIN_ADMIN.SUCCESSFULLY_ENABLED_PLUGIN'), 'info');
return true;
@@ -762,9 +764,11 @@ class AdminController
}
// Filter value and save it.
$this->post = array('enabled' => 0, '_redirect' => 'plugins');
$this->post = array('enabled' => 0);
$obj = $this->prepareData();
$obj->save();
$this->post = array('_redirect' => 'plugins');
$this->admin->setMessage($this->admin->translate('PLUGIN_ADMIN.SUCCESSFULLY_DISABLED_PLUGIN'), 'info');
return true;

View File

@@ -454,20 +454,20 @@ en:
fr:
PLUGIN_ADMIN:
ADMIN_BETA_MSG: "C'est une version beta ! Utilisez-là en production à vos risques et périls..."
ADMIN_REPORT_ISSUE: "Vous avez trouvé un problème ? Reportez-le s'il vous plait sur GitHub."
ADMIN_REPORT_ISSUE: "Vous avez rencontré une anomalie ? Veuillez la reporter sur GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Powered by Grav</a> - The Modern Flat File CMS"
LOGIN_BTN: "Connexion"
LOGIN_BTN_FORGOT: "Mot de passe oublié"
LOGIN_BTN_RESET: "Réinitialiser le mot de passe"
LOGIN_BTN_SEND_INSTRUCTIONS: "Envoyer les instructions de réinitialisation"
LOGIN_LOGGED_IN: "Vous avez été connecté avec succès"
LOGIN_FAILED: "Echec de la connexion"
LOGGED_OUT: "Vous avez été déconecté"
RESET_LINK_EXPIRED: "Le lien de réinitialisation a expiré, réessayez s'il vous plait"
LOGIN_LOGGED_IN: "Vous vous êtes connecté avec succès"
LOGIN_FAILED: "Échec de la connexion"
LOGGED_OUT: "Vous avez été déconnecté"
RESET_LINK_EXPIRED: "Le lien de réinitialisation a expiré, veuillez réessayer"
RESET_PASSWORD_RESET: "Le mot de passe a été réinitialisé"
RESET_INVALID_LINK: "Lien de réinitialisation invalide, réessayez s'il vous plait"
RESET_INVALID_LINK: "Lien de réinitialisation invalide, veuillez réessayer"
FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Les instructions pour réinitialiser votre mot de passe ont été envoyées par email à %s"
FORGOT_FAILED_TO_EMAIL: "Echec d'envoi des instructions par email. Réessayez ultérieurement s'il vous plait"
FORGOT_FAILED_TO_EMAIL: "Échec de l'envoi des instructions par email. Veuillez réessayez ultérieurement"
FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Impossible de réinitialiser le mot de passe pour %s, aucune adresse email n'est définie"
FORGOT_USERNAME_DOES_NOT_EXIST: "L'utilisateur avec le nom d'utilisateur <b>%s</b> n'existe pas"
FORGOT_EMAIL_NOT_CONFIGURED: "Impossible de réinitialiser le mot de passe. Ce site n'est pas configuré pour envoyer des emails"
@@ -496,14 +496,14 @@ fr:
CONTINUE: "Continuer"
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Confirmation exigée"
MODAL_CHANGED_DETECTED_TITLE: "Modifications détectées"
MODAL_CHANGED_DETECTED_DESC: "Vous avez des modifications non sauvegardées. Etes-vous sûr(e) de quitter sans sauvegarder ?"
MODAL_CHANGED_DETECTED_DESC: "Vous avez des modifications non sauvegardées. Êtes-vous sûr(e) de vouloir quitter sans sauvegarder ?"
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Confirmation exigée"
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Etes-vous sûr(e) de vouloir supprimer ce fichier ? Cette action ne peut être annulée."
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Êtes-vous sûr(e) de vouloir supprimer ce fichier ? Cette action ne pourra pas être annulée."
ADD_FILTERS: "Ajouter des filtres"
SEARCH_PAGES: "Rechercher des pages"
VERSION: "Version"
WAS_MADE_WITH: "A été réalisé avec"
BY: "par"
BY: "Par"
UPDATE_THEME: "Mettre à jour le thème"
UPDATE_PLUGIN: "Mettre à jour le plugin"
OF_THIS_THEME_IS_NOW_AVAILABLE: "de ce thème est maintenant disponible"
@@ -512,7 +512,7 @@ fr:
HOMEPAGE: "Page d'accueil"
DEMO: "Démo"
BUG_TRACKER: "Gestion de bugs"
KEYWORDS: "Mots clés"
KEYWORDS: "Mots-clés"
LICENSE: "Licence"
DESCRIPTION: "Description"
README: "Lisez-moi"
@@ -525,14 +525,14 @@ fr:
ADD: "Ajouter"
CLEAR_CACHE: "Nettoyer le cache"
CLEAR_CACHE_ALL_CACHE: "Totalité du cache"
CLEAR_CACHE_ASSETS_ONLY: "Seulement les assets"
CLEAR_CACHE_IMAGES_ONLY: "Seulement les images"
CLEAR_CACHE_CACHE_ONLY: "Seulement le cache"
CLEAR_CACHE_ASSETS_ONLY: "Uniquement les assets"
CLEAR_CACHE_IMAGES_ONLY: "Uniquement les images"
CLEAR_CACHE_CACHE_ONLY: "Uniquement le cache"
DASHBOARD: "Tableau de bord"
UPDATES_AVAILABLE: "Mises à jour disponible"
UPDATES_AVAILABLE: "Mises à jour disponibles"
DAYS: "Jours"
UPDATE: "Mettre à jour"
BACKUP: "Sauvegarde backup"
BACKUP: "Sauvegarde"
STATISTICS: "Statistiques"
TODAY: "Aujourd'hui"
WEEK: "Semaine"
@@ -562,14 +562,14 @@ fr:
INSTALL: "Installer"
ACTIVE_THEME: "Thème actif"
SWITCHING_TO: "Basculer vers"
SWITCHING_TO_DESCRIPTION: "En basculant vers un thème différent, il n'y a pas de garantie que les dispositions de la page soient supportées. Il y a un risque potentiel d'erreurs lors du chargement desdites pages."
SWITCHING_TO_DESCRIPTION: "En basculant vers un thème différent, il n'y a aucune garantie que la mise en page soit prise en charge. Il y a un risque potentiel d'erreurs lors du chargement desdites pages."
SWITCHING_TO_CONFIRMATION: "Souhaitez-vous poursuivre et basculer vers le thème"
CREATE_NEW_USER: "Créer un nouvel utilisateur"
REMOVE_USER: "Retirer l'utilisateur"
ACCESS_DENIED: "Accès refusé"
ACCOUNT_NOT_ADMIN: "votre compte ne possède pas les permissions d'administrateur"
PHP_INFO: "PHP Info"
INSTALLER: "Installer"
PHP_INFO: "Informations PHP"
INSTALLER: "Installeur"
AVAILABLE_THEMES: "Thèmes disponibles"
AVAILABLE_PLUGINS: "Plugins disponibles"
INSTALLED_THEMES: "Thèmes installés"
@@ -598,8 +598,8 @@ fr:
METHOD: "Méthode"
ERROR_CLEARING_CACHE: "Erreur de nettoyage du cache"
AN_ERROR_OCCURRED: "Une erreur est survenue"
YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Votre sauvegarde backup est prête à télécharger"
DOWNLOAD_BACKUP: "Télécharger la sauvegarde backup"
YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Votre sauvegarde est prête à être téléchargée"
DOWNLOAD_BACKUP: "Télécharger la sauvegarde"
PAGES_FILTERED: "Pages filtrées"
NO_PAGE_FOUND: "Aucune page trouvée"
INVALID_PARAMETERS: "Paramètres invalides"
@@ -608,27 +608,27 @@ fr:
UNKNOWN_ERRORS: "Erreurs inconnues"
EXCEEDED_GRAV_FILESIZSE_LIMIT: "Limite de taille de fichier Grav dépassée."
UNSUPPORTED_FILE_TYPE: "Type de fichier non supporté"
FAILED_TO_MOVE_UPLOADED_FILE: "Echec du déplacement du fichier uploadé."
FILE_UPLOADED_SUCCESSFULLY: "Fichier uploadé avec succès"
FAILED_TO_MOVE_UPLOADED_FILE: "Échec du déplacement du fichier uploadé."
FILE_UPLOADED_SUCCESSFULLY: "Fichier chargé avec succès"
FILE_DELETED: "Fichier supprimé"
FILE_COULD_NOT_BE_DELETED: "Le fichier ne peut être supprimé"
FILE_COULD_NOT_BE_DELETED: "Le fichier ne peut pas être supprimé"
FILE_NOT_FOUND: "Fichier non trouvé"
NO_FILE_FOUND: "Aucun fichier trouvé"
GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav a été mis à jour avec succès"
GRAV_UPDATE_FAILED: "Mise à jour Grav échouée"
EVERYTHING_UPDATED: "Tout est mis à jour"
UPDATES_FAILED: "Mises à jour échouées"
GRAV_UPDATE_FAILED: "La mise à jour de Grav a échoué"
EVERYTHING_UPDATED: "Tout est à jour"
UPDATES_FAILED: "Les mises à jour ont échoué"
AVATAR_BY: "Avatar par"
LAST_BACKUP: "Dernière sauvegarde backup"
LAST_BACKUP: "Dernière sauvegarde"
FULL_NAME: "Nom complet"
USERNAME: "Nom d'utilisateur"
EMAIL: "Email"
EMAIL: "E-mail"
PASSWORD: "Mot de passe"
TITLE: "Titre"
LANGUAGE: "Langue"
ACCOUNT: "Compte"
EMAIL_VALIDATION_MESSAGE: "Doit être une adresse email valide"
PASSWORD_VALIDATION_MESSAGE: "Le mot de passe doit contenir au moins un chiffre, une lettre minuscule et majuscule, et au moins 8 caractère ou plus"
EMAIL_VALIDATION_MESSAGE: "Doit être une adresse e-mail valide"
PASSWORD_VALIDATION_MESSAGE: "Le mot de passe doit contenir au moins un chiffre, une lettre minuscule et majuscule et au minimum 8 caractères"
LANGUAGE_HELP: "Définir la langue préférée"
MEDIA: "Média"
DEFAULTS: "Par défaut"
@@ -637,10 +637,10 @@ fr:
SITE_TITLE_HELP: "Titre par défaut pour votre site, souvent utilisé dans les thèmes"
DEFAULT_AUTHOR: "Auteur par défaut"
DEFAULT_AUTHOR_HELP: "Un nom d'auteur par défaut, souvent utilisé dans les thèmes ou le contenu des pages"
DEFAULT_EMAIL: "Email par défaut"
DEFAULT_EMAIL_HELP: "Une email par défaut à référencer dans les thèmes ou pages"
TAXONOMY_TYPES: "Types de taxonomie"
TAXONOMY_TYPES_HELP: "Les types de taxonomie doivent être définis ici si vous souhaitez les utiliser dans les pages"
DEFAULT_EMAIL: "E-mail par défaut"
DEFAULT_EMAIL_HELP: "Une e-mail par défaut à référencer dans les thèmes ou pages"
TAXONOMY_TYPES: "Types de hiérarchisation"
TAXONOMY_TYPES_HELP: "Les types de hiérarchisation doivent être définis ici si vous souhaitez les utiliser dans les pages"
PAGE_SUMMARY: "Résumé de page"
ENABLED: "Activé"
ENABLED_HELP: "Activer le résumé de page (le résumé retourne le même contenu que la page)"
@@ -649,7 +649,7 @@ fr:
SUMMARY_SIZE: "Taille du résumé"
SUMMARY_SIZE_HELP: "Le nombre de caractères de la page à utiliser comme contenu de résumé"
FORMAT: "Format"
FORMAT_HELP: "court = utilise la première occurrence du délimiteur ou la taille; long = le délimiteur de résumé sera ignoré"
FORMAT_HELP: "court = utilise la première occurrence du délimiteur ou la taille ; long = le délimiteur de résumé sera ignoré"
SHORT: "Court"
LONG: "Long"
DELIMITER: "Délimiteur"

View File

@@ -21,7 +21,9 @@ var bytesToSize = function(bytes) {
var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
var keepAlive = function keepAlive() {
$.post(GravAdmin.config.base_url_relative + '/task' + GravAdmin.config.param_sep + 'keepAlive');
$.post(GravAdmin.config.base_url_relative + '/task' + GravAdmin.config.param_sep + 'keepAlive', {
'admin-nonce': GravAdmin.config.admin_nonce
});
};
$(function () {
@@ -296,7 +298,7 @@ $(function () {
if (grav.isUpdatable) {
var icon = '<i class="fa fa-bullhorn"></i> ';
content = 'Grav <b>v{available}</b> ' + translations.PLUGIN_ADMIN.IS_NOW_AVAILABLE + '! <span class="less">(' + translations.PLUGIN_ADMIN.CURRENT + ': v{version})</span> ',
button = '<button data-maintenance-update="' + GravAdmin.config.base_url_relative + '/update.json/' + task + 'updategrav" class="button button-small secondary" id="grav-update-button">' + translations.PLUGIN_ADMIN.UPDATE_GRAV_NOW + '</button>';
button = '<button data-maintenance-update="' + GravAdmin.config.base_url_relative + '/update.json/' + task + 'updategrav/admin-nonce' + GravAdmin.config.param_sep + GravAdmin.config.admin_nonce + '" class="button button-small secondary" id="grav-update-button">' + translations.PLUGIN_ADMIN.UPDATE_GRAV_NOW + '</button>';
if (grav.isSymlink) {
button = '<span class="hint--left" style="float: right;" data-hint="' + translations.PLUGIN_ADMIN.GRAV_SYMBOLICALLY_LINKED + '"><i class="fa fa-fw fa-link"></i></span>';
@@ -328,7 +330,7 @@ $(function () {
var length,
icon = '<i class="fa fa-bullhorn"></i>',
content = '{updates} ' + translations.PLUGIN_ADMIN.OF_YOUR + ' {type} ' + translations.PLUGIN_ADMIN.HAVE_AN_UPDATE_AVAILABLE,
button = '<a href="{location}/' + task + 'update" class="button button-small secondary">' + translations.PLUGIN_ADMIN.UPDATE + ' {Type}</a>',
button = '<a href="{location}/' + task + 'update/admin-nonce' + GravAdmin.config.param_sep + GravAdmin.config.admin_nonce + '" class="button button-small secondary">' + translations.PLUGIN_ADMIN.UPDATE + ' {Type}</a>',
plugins = $('.grav-update.plugins'),
themes = $('.grav-update.themes'),
sidebar = {plugins: $('#admin-menu a[href$="/plugins"]'), themes: $('#admin-menu a[href$="/themes"]')};

View File

@@ -60,6 +60,7 @@
{% set admin_route = twig_vars['admin_route'] %}
{% set admin_lang = twig_vars['admin_lang'] %}
{% set warn = twig_vars['warn'] %}
{% set uri = twig_vars['uri'] %}
{% if page.header.content.order.by %}
{% set pcol = page.children().order(page.header.content.order.by, page.header.content.order.dir) %}
@@ -96,9 +97,9 @@
<span class="page-tools">
{% if warn %}
<a href="#delete" data-remodal-target="delete" data-delete-url="{{ page_url }}/task{{ separator }}delete" class="page-delete" ><i class="fa fa-close"></i></a>
<a href="#delete" data-remodal-target="delete" data-delete-url="{{ uri.addNonce(page_url ~ '/task' ~ separator ~ 'delete', 'admin-form', 'admin-nonce') }}" class="page-delete" ><i class="fa fa-close"></i></a>
{% else %}
<a href="{{ page_url }}/task{{ separator }}delete" class="page-delete" ><i class="fa fa-close"></i></a>
<a href="{{ uri.addNonce(page_url ~ '/task' ~ separator ~ 'delete', 'admin-form', 'admin-nonce') }}" class="page-delete" ><i class="fa fa-close"></i></a>
{% endif %}
</span>
<p class="page-route">{{ p.header.routes.default ?: p.route }} <span class="spacer"><i class="fa fa-long-arrow-right"></i></span> {{ p.template() }}</p>

View File

@@ -24,7 +24,7 @@
</td>
<td class="gpm-actions">
{% if (not installing and (plugin.form.fields.enabled.type != 'hidden')) %}
<a class="{{ data.get('enabled') ? 'enabled' : 'disabled' }}" href="{{ uri.addNonce(base_url_relative ~ '/plugins/' ~ slug ~ '/task' ~ config.system.param_sep ~ data.get('enabled') ? 'disable' : 'enable', 'admin-form', 'admin-nonce') }}">
<a class="{{ data.get('enabled') ? 'enabled' : 'disabled' }}" href="{{ uri.addNonce(base_url_relative ~ '/plugins/' ~ slug ~ '/task' ~ config.system.param_sep ~ (data.get('enabled') ? 'disable' : 'enable'), 'admin-form', 'admin-nonce') }}">
<i class="fa fa-fw fa-toggle-{{ data.get('enabled') ? 'on' : 'off' }}"></i>
</a>
{% elseif (installing) %}