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

This commit is contained in:
Flavio Copes
2015-11-30 15:58:40 +01:00
8 changed files with 119 additions and 88 deletions

View File

@@ -400,6 +400,10 @@ class AdminPlugin extends Plugin
$assets = $this->grav['assets']; $assets = $this->grav['assets'];
$translations = 'if (!window.translations) window.translations = {}; ' . PHP_EOL . 'window.translations.PLUGIN_ADMIN = {};' . PHP_EOL; $translations = 'if (!window.translations) window.translations = {}; ' . PHP_EOL . 'window.translations.PLUGIN_ADMIN = {};' . PHP_EOL;
// Enable language translations
$translations_actual_state = $this->config->get('system.languages.translations');
$this->config->set('system.languages.translations', true);
$strings = ['EVERYTHING_UP_TO_DATE', $strings = ['EVERYTHING_UP_TO_DATE',
'UPDATES_ARE_AVAILABLE', 'UPDATES_ARE_AVAILABLE',
'IS_AVAILABLE_FOR_UPDATE', 'IS_AVAILABLE_FOR_UPDATE',
@@ -427,6 +431,9 @@ class AdminPlugin extends Plugin
$translations .= 'translations.PLUGIN_ADMIN.' . $string .' = "' . $this->admin->translate('PLUGIN_ADMIN.' . $string) . '"; ' . PHP_EOL;; $translations .= 'translations.PLUGIN_ADMIN.' . $string .' = "' . $this->admin->translate('PLUGIN_ADMIN.' . $string) . '"; ' . PHP_EOL;;
} }
// set the actual translations state back
$this->config->set('system.languages.translations', $translations_actual_state);
$assets->addInlineJs($translations); $assets->addInlineJs($translations);
} }

View File

@@ -509,6 +509,10 @@ class Admin
$pages = $this->grav['pages']; $pages = $this->grav['pages'];
$latest = array(); $latest = array();
if(is_null($pages->routes())){
return;
}
foreach ($pages->routes() as $url => $path) { foreach ($pages->routes() as $url => $path) {
$page = $pages->dispatch($url, true); $page = $pages->dispatch($url, true);

View File

@@ -1434,6 +1434,12 @@ class AdminController
$name .= '.md'; $name .= '.md';
$page->name($name); $page->name($name);
$page->template($type); $page->template($type);
// unset some header things, template for now as we've just set that
if (isset($input['header']['template'])) {
unset($input['header']['template']);
}
} }
// Special case for Expert mode: build the raw, unset content // Special case for Expert mode: build the raw, unset content

View File

@@ -453,8 +453,8 @@ en:
fr: fr:
PLUGIN_ADMIN: PLUGIN_ADMIN:
ADMIN_BETA_MSG: "C'est une version beta ! Utilisez-là en production à vos risques et périls..." ADMIN_BETA_MSG: "Ceci est une version bêta ! Utilisez-là en production à vos risques et périls..."
ADMIN_REPORT_ISSUE: "Vous avez rencontré une anomalie ? Veuillez la reporter sur GitHub." ADMIN_REPORT_ISSUE: "Vous avez rencontré une anomalie ? Veuillez la signaler sur GitHub."
EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Powered by Grav</a> - The Modern Flat File CMS" EMAIL_FOOTER: "<a href=\"http://getgrav.org\">Powered by Grav</a> - The Modern Flat File CMS"
LOGIN_BTN: "Connexion" LOGIN_BTN: "Connexion"
LOGIN_BTN_FORGOT: "Mot de passe oublié" LOGIN_BTN_FORGOT: "Mot de passe oublié"
@@ -501,24 +501,24 @@ fr:
MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Êtes-vous sûr(e) de vouloir supprimer ce fichier ? Cette action ne pourra pas ê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" ADD_FILTERS: "Ajouter des filtres"
SEARCH_PAGES: "Rechercher des pages" SEARCH_PAGES: "Rechercher des pages"
VERSION: "Version" VERSION: "Version "
WAS_MADE_WITH: "A été réalisé avec" WAS_MADE_WITH: "A été réalisé avec"
BY: "Par" BY: "Par"
UPDATE_THEME: "Mettre à jour le thème" UPDATE_THEME: "Mettre à jour le thème"
UPDATE_PLUGIN: "Mettre à jour le plugin" UPDATE_PLUGIN: "Mettre à jour le plugin"
OF_THIS_THEME_IS_NOW_AVAILABLE: "de ce thème est maintenant disponible" OF_THIS_THEME_IS_NOW_AVAILABLE: "de ce thème est maintenant disponible"
OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "de ce plugin est maintenant disponible" OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "de ce plugin est maintenant disponible"
AUTHOR: "Auteur" AUTHOR: "Auteur "
HOMEPAGE: "Page d'accueil" HOMEPAGE: "Page d'accueil "
DEMO: "Démo" DEMO: "Démo "
BUG_TRACKER: "Gestion de bugs" BUG_TRACKER: "Gestion des anomalies "
KEYWORDS: "Mots-clés" KEYWORDS: "Mots clés "
LICENSE: "Licence" LICENSE: "Licence "
DESCRIPTION: "Description" DESCRIPTION: "Description "
README: "Lisez-moi" README: "Lisez-moi "
REMOVE_THEME: "Retirer le thème" REMOVE_THEME: "Retirer le thème"
INSTALL_THEME: "Installer le thème" INSTALL_THEME: "Installer le thème"
THEME: "Thème" THEME: "Thème "
BACK_TO_THEMES: "Retour aux thèmes" BACK_TO_THEMES: "Retour aux thèmes"
BACK_TO_PLUGINS: "Retour aux plugins" BACK_TO_PLUGINS: "Retour aux plugins"
CHECK_FOR_UPDATES: "Vérifier les mises à jour" CHECK_FOR_UPDATES: "Vérifier les mises à jour"
@@ -639,8 +639,8 @@ fr:
DEFAULT_AUTHOR_HELP: "Un nom d'auteur par défaut, souvent utilisé dans les thèmes ou le contenu des pages" DEFAULT_AUTHOR_HELP: "Un nom d'auteur par défaut, souvent utilisé dans les thèmes ou le contenu des pages"
DEFAULT_EMAIL: "E-mail par défaut" 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" 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: "Types de classification"
TAXONOMY_TYPES_HELP: "Les types de hiérarchisation doivent être définis ici si vous souhaitez les utiliser dans les pages" TAXONOMY_TYPES_HELP: "Les types de classification doivent être définis ici si vous souhaitez les utiliser dans les pages"
PAGE_SUMMARY: "Résumé de page" PAGE_SUMMARY: "Résumé de page"
ENABLED: "Activé" ENABLED: "Activé"
ENABLED_HELP: "Activer le résumé de page (le résumé retourne le même contenu que la page)" ENABLED_HELP: "Activer le résumé de page (le résumé retourne le même contenu que la page)"
@@ -654,19 +654,19 @@ fr:
LONG: "Long" LONG: "Long"
DELIMITER: "Délimiteur" DELIMITER: "Délimiteur"
DELIMITER_HELP: "Le délimiteur de résumé (par défaut '===')" DELIMITER_HELP: "Le délimiteur de résumé (par défaut '===')"
METADATA: "Metadata" METADATA: "Métadonnées"
METADATA_HELP: "Les valeurs par défaut des metadata qui seront affichées sur chaque page sauf si substituées par la page" METADATA_HELP: "Valeurs par défaut des métadonnées qui seront affichées pour chaque page sauf si substituées par la page"
NAME: "Nom" NAME: "Nom"
CONTENT: "Contenu" CONTENT: "Contenu"
REDIRECTS_AND_ROUTES: "Redirections & Routes" REDIRECTS_AND_ROUTES: "Redirections & Chemins"
CUSTOM_REDIRECTS: "Redirections personnalisées" CUSTOM_REDIRECTS: "Redirections personnalisées"
CUSTOM_REDIRECTS_HELP: "routes pour rediriger vers d'autres pages. Le remplacement Regex standard est valide" CUSTOM_REDIRECTS_HELP: "chemin pour rediriger vers d'autres pages. Le remplacement par expressions régulières standards est valide"
CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/votre/alias" CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/votre/alias"
CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/votre/redirection" CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/votre/redirection"
CUSTOM_ROUTES: "Routes personnalisées" CUSTOM_ROUTES: "Chemins personnalisés"
CUSTOM_ROUTES_HELP: "routes pour l'alias vers d'autres pages. Le remplacement Regex standard est valide" CUSTOM_ROUTES_HELP: "chemin d'alias vers d'autres pages. Le remplacement par expressions régulières standards est valide"
CUSTOM_ROUTES_PLACEHOLDER_KEY: "/votre/alias" CUSTOM_ROUTES_PLACEHOLDER_KEY: "/votre/alias"
CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/votre/route" CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/votre/chemin"
FILE_STREAMS: "Flux de fichiers" FILE_STREAMS: "Flux de fichiers"
DEFAULT: "Par défaut" DEFAULT: "Par défaut"
PAGE_MEDIA: "Média de la page" PAGE_MEDIA: "Média de la page"
@@ -674,45 +674,45 @@ fr:
PUBLISHED: "Publié" PUBLISHED: "Publié"
PUBLISHED_HELP: "Par défaut, une page est publiée à moins que vous ne définissiez `publié` sur : non ou via une date de publication future (publish_date), ou bien à une date de dépublication (unpublish_date) dans le passé" PUBLISHED_HELP: "Par défaut, une page est publiée à moins que vous ne définissiez `publié` sur : non ou via une date de publication future (publish_date), ou bien à une date de dépublication (unpublish_date) dans le passé"
DATE: "Date" DATE: "Date"
DATE_HELP: "La variable de date vous permet de définir spécifiquement une date associée à cette page." DATE_HELP: "La variable de date vous permet de définir une date spécifique associée à cette page."
PUBLISHED_DATE: "Date de publication" PUBLISHED_DATE: "Date de publication"
PUBLISHED_DATE_HELP: "Stipule une date pour déclencher automatiquement la publication." PUBLISHED_DATE_HELP: "Permet de définir une date pour déclencher automatiquement la publication."
UNPUBLISHED_DATE: "Date de dépublication" UNPUBLISHED_DATE: "Date de dépublication"
UNPUBLISHED_DATE_HELP: "Stipule une date pour déclencher automatiquement la dépublication." UNPUBLISHED_DATE_HELP: "Permet de définir une date pour déclencher automatiquement la dépublication."
ROBOTS: "Robots" ROBOTS: "Robots"
TAXONOMIES: "Taxonomies" TAXONOMIES: "Classifications"
TAXONOMY: "Taxonomie" TAXONOMY: "Classification"
ADVANCED: "Avancé" ADVANCED: "Avancé"
SETTINGS: "Paramètres" SETTINGS: "Paramètres"
FOLDER_NUMERIC_PREFIX: "Préfixe numérique de dossier" FOLDER_NUMERIC_PREFIX: "Préfixe numérique de dossier"
FOLDER_NUMERIC_PREFIX_HELP: "Les préfixes numériques qui fournissent l'organisation manuelle et assument la visibilité" FOLDER_NUMERIC_PREFIX_HELP: "Les préfixes numériques qui permettent le classement manuel pour une meilleure visibilité"
FOLDER_NAME: "Nom de dossier" FOLDER_NAME: "Nom de dossier"
FOLDER_NAME_HELP: "Le nom de dossier qui sera mémorisé dans le système de fichier pour cette page" FOLDER_NAME_HELP: "Le nom de dossier qui sera mémorisé dans le système pour cette page"
PARENT: "Parent" PARENT: "Parent"
DEFAULT_OPTION_ROOT: "- Racine -" DEFAULT_OPTION_ROOT: "- Racine -"
DEFAULT_OPTION_SELECT: "- Selection -" DEFAULT_OPTION_SELECT: "- Sélection -"
DISPLAY_TEMPLATE: "Modèle d'affichage" DISPLAY_TEMPLATE: "Modèle d'affichage"
DISPLAY_TEMPLATE_HELP: "Le type de page qui sera interprété par le modèle Twig de rendu de page" DISPLAY_TEMPLATE_HELP: "Le type de page qui sera interprété par le modèle Twig de rendu de page"
BODY_CLASSES: "Classes Body" BODY_CLASSES: "Classes de Body"
ORDERING: "Agencement" ORDERING: "Agencement"
PAGE_ORDER: "Ordre des pages" PAGE_ORDER: "Ordre des pages"
OVERRIDES: "Substitutions" OVERRIDES: "Substitutions"
MENU: "Menu" MENU: "Menu"
MENU_HELP: "La chaîne de caractères utilisée dans le menu. Si non défini, <b>Titre</b> sera utilisé." MENU_HELP: "La chaîne de caractères à utiliser dans le menu. Si non défini, <b>Titre</b> sera utilisé."
SLUG: "Slug" SLUG: "Slug"
SLUG_HELP: "La variable slug vous permet de définir spécifiquement la portion d'URL de la page" SLUG_HELP: "La variable slug vous permet de définir une portion spécifique de l'URL d'une page"
SLUG_VALIDATE_MESSAGE: "Un slug doit contenir seulement des catactères minuscules alphanumériques et des tirets" SLUG_VALIDATE_MESSAGE: "Un slug doit contenir uniquement des catactères alphanumériques minuscules et des tirets"
PROCESS: "Traitement" PROCESS: "Traitement"
PROCESS_HELP: "Contrôle comment les pages sont traitées. Peut être défini par page plutôt que globalement" PROCESS_HELP: "Contrôle comment les pages sont traitées. Peut être défini par page plutôt que globalement"
DEFAULT_CHILD_TYPE: "Type enfant par défaut" DEFAULT_CHILD_TYPE: "Type enfant par défaut"
USE_GLOBAL: "**Use Global**" USE_GLOBAL: "Utilisation globale"
ROUTABLE: "Routable" ROUTABLE: "Routable"
ROUTABLE_HELP: "Si cette page est joignable par une URL" ROUTABLE_HELP: "Si cette page est accessible par une URL"
CACHING: "Mise en cache" CACHING: "Mise en cache"
VISIBLE: "Visible" VISIBLE: "Visible"
VISIBLE_HELP: "Détermine si une page est visible dans la navigation." VISIBLE_HELP: "Détermine si une page est visible dans la navigation."
DISABLED: "Désactivé" DISABLED: "Désactivé"
ITEMS: "**Eléments**" ITEMS: "Éléments"
ORDER_BY: "Classement par" ORDER_BY: "Classement par"
ORDER: "Ordre" ORDER: "Ordre"
FOLDER: "Dossier" FOLDER: "Dossier"
@@ -723,21 +723,21 @@ fr:
PAGE_TITLE_HELP: "Le titre de la page" PAGE_TITLE_HELP: "Le titre de la page"
PAGE: "Page" PAGE: "Page"
MODULAR_TEMPLATE: "Modèle modulaire" MODULAR_TEMPLATE: "Modèle modulaire"
FRONTMATTER: "Front Matter" FRONTMATTER: "Propos liminaires"
FILENAME: "Nom de fichier" FILENAME: "Nom de fichier"
PARENT_PAGE: "Page parente" PARENT_PAGE: "Page parente"
HOME_PAGE: "Page d'accueil" HOME_PAGE: "Page d'accueil"
HOME_PAGE_HELP: "La page que Grav utilisera comme page d'arrivée par défaut" HOME_PAGE_HELP: "La page que Grav utilisera comme page de destination par défaut"
DEFAULT_THEME: "Thème par défaut" DEFAULT_THEME: "Thème par défaut"
DEFAULT_THEME_HELP: "Définit le thème par défaut que Grav utilisera (par défaut c'est Antimatter)" DEFAULT_THEME_HELP: "Définit le thème que Grav utilisera par défaut (par défaut Antimatter)"
TIMEZONE: "Fuseau horaire" TIMEZONE: "Fuseau horaire"
TIMEZONE_HELP: "Se subsitue au fuseau horaire par défaut du serveur" TIMEZONE_HELP: "Se subsitue au fuseau horaire par défaut du serveur"
SHORT_DATE_FORMAT: "Format d'affichage court de la date" SHORT_DATE_FORMAT: "Format d'affichage court de la date"
SHORT_DATE_FORMAT_HELP: "Définit le format de date courte qui peut être utilisé par les thèmes" SHORT_DATE_FORMAT_HELP: "Définit le format de date courte qui peut être utilisé dans les thèmes"
LONG_DATE_FORMAT: "Format d'affichage long de la date" LONG_DATE_FORMAT: "Format d'affichage long de la date"
LONG_DATE_FORMAT_HELP: "Définit le format de la date longue qui peut être utilisé par les thèmes" LONG_DATE_FORMAT_HELP: "Définit le format de la date longue qui peut être utilisé dans les thèmes"
DEFAULT_ORDERING: "Tri par défaut" DEFAULT_ORDERING: "Tri par défaut"
DEFAULT_ORDERING_HELP: "Les pages dans une liste seront affichées en utilisant ce tri à moins que cela est été substitué" DEFAULT_ORDERING_HELP: "Les pages d'une liste seront affichées en utilisant ce tri à moins que cela est été substitué"
DEFAULT_ORDERING_DEFAULT: "Défaut - basé sur le nom de dossier" DEFAULT_ORDERING_DEFAULT: "Défaut - basé sur le nom de dossier"
DEFAULT_ORDERING_FOLDER: "Dossier - basé sur le nom de dossier sans le préfixe" DEFAULT_ORDERING_FOLDER: "Dossier - basé sur le nom de dossier sans le préfixe"
DEFAULT_ORDERING_TITLE: "Titre - basé sur le champ titre dans l'entête" DEFAULT_ORDERING_TITLE: "Titre - basé sur le champ titre dans l'entête"
@@ -747,43 +747,43 @@ fr:
DEFAULT_PAGE_COUNT: "Nombre par défaut de page" DEFAULT_PAGE_COUNT: "Nombre par défaut de page"
DEFAULT_PAGE_COUNT_HELP: "Nombre maximum par défaut de pages dans une liste" DEFAULT_PAGE_COUNT_HELP: "Nombre maximum par défaut de pages dans une liste"
DATE_BASED_PUBLISHING: "Publication basée sur la date" DATE_BASED_PUBLISHING: "Publication basée sur la date"
DATE_BASED_PUBLISHING_HELP: "(Dé)publie automatiquement les pages basées sur leur date" DATE_BASED_PUBLISHING_HELP: "(Dé)publie automatiquement les pages en fonction de leur date"
EVENTS: "Evènements" EVENTS: "Évènements"
EVENTS_HELP: "Active ou désactive les évènements spécifiques. Désactiver ceux-ci peut altérer les plugins" EVENTS_HELP: "Active ou désactive des évènements spécifiques. Les désactiver peut altérer le comportement des plugins"
REDIRECT_DEFAULT_ROUTE: "Route par défaut de redirection" REDIRECT_DEFAULT_ROUTE: "Chemin par défaut de redirection"
REDIRECT_DEFAULT_ROUTE_HELP: "Redirige automatiquement vers une route par défaut de page" REDIRECT_DEFAULT_ROUTE_HELP: "Redirige automatiquement vers un chemin de page par défaut"
LANGUAGES: "Langues" LANGUAGES: "Langues"
SUPPORTED: "Supportées" SUPPORTED: "Prises en charge"
SUPPORTED_HELP: "Liste de code langue formé de 2 lettres et séparée par une virgule (par exemple 'en,fr,de')" SUPPORTED_HELP: "Liste de code langue formé de 2 lettres et séparé par une virgule (par exemple 'en,fr,de')"
TRANSLATIONS_ENABLED: "Traductions activées" TRANSLATIONS_ENABLED: "Traductions activées"
TRANSLATIONS_ENABLED_HELP: "Supporte les traductions dans Grav, plugins et extensions" TRANSLATIONS_ENABLED_HELP: "Prise en charge des traductions dans Grav, plugins et extensions"
TRANSLATIONS_FALLBACK: "Fallback traductions" TRANSLATIONS_FALLBACK: "Traductions de repli"
TRANSLATIONS_FALLBACK_HELP: "Fallback vers une traduction supportée si la langue active n'existe pas" TRANSLATIONS_FALLBACK_HELP: "Traductions de repli qui seront prises en charge si la langue active n'existe pas"
ACTIVE_LANGUAGE_IN_SESSION: "Activer la langue dans les sessions" ACTIVE_LANGUAGE_IN_SESSION: "Activer la langue dans les sessions"
ACTIVE_LANGUAGE_IN_SESSION_HELP: "Mémorise la langue active dans la session" ACTIVE_LANGUAGE_IN_SESSION_HELP: "Mémorise la langue active dans la session"
HTTP_HEADERS: "Entêtes HTTP" HTTP_HEADERS: "Entêtes HTTP"
EXPIRES: "Expires" EXPIRES: "Expires"
EXPIRES_HELP: "Définit l'entête Expires. La valeur est en secondes." EXPIRES_HELP: "Définit l'entête Expires. La valeur est en secondes."
LAST_MODIFIED: "Last modified" LAST_MODIFIED: "Last modified"
LAST_MODIFIED_HELP: "Définit l'entête last modified qui peut aider l'optimisation du cache des proxy et navigateurs" LAST_MODIFIED_HELP: "Définit l'entête `Last modified`pouvant améliorer l'optimisation du cache des proxy et navigateurs"
ETAG: "ETag" ETAG: "ETag"
ETAG_HELP: "Définit l'entête etag pour aider l'identification d'une modification de page" ETAG_HELP: "Définit l'entête `etag` pour aider l'identification d'une modification de page"
VARY_ACCEPT_ENCODING: "Vary accept encoding" VARY_ACCEPT_ENCODING: "Vary accept encoding"
VARY_ACCEPT_ENCODING_HELP: "Définit l'entête `Vary: Accept Encoding` pour aider la mise en cache avec les proxy et CDN" VARY_ACCEPT_ENCODING_HELP: "Définit l'entête `Vary: Accept Encoding` pour aider la mise en cache avec les proxy et CDN"
MARKDOWN_EXTRA_HELP: "Active par défaut le support de Markdown Extra - https://michelf.ca/projects/php-markdown/extra/" MARKDOWN_EXTRA_HELP: "Active par défaut la prise en charge de Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
AUTO_LINE_BREAKS: "Sauts de ligne automatiques" AUTO_LINE_BREAKS: "Sauts de ligne automatiques"
AUTO_LINE_BREAKS_HELP: "Active le support des sauts de ligne automatiques dans markdown" AUTO_LINE_BREAKS_HELP: "Active la prise en charge des sauts de ligne automatiques dans markdown"
AUTO_URL_LINKS: "Liens URL automatiques" AUTO_URL_LINKS: "Liens URL automatiques"
AUTO_URL_LINKS_HELP: "Active la conversion automatique des URLs en hyperliens HTML" AUTO_URL_LINKS_HELP: "Active la conversion automatique des URLs en hyperliens HTML"
ESCAPE_MARKUP: "Echappement balises HTML" ESCAPE_MARKUP: "Échappement balises HTML"
ESCAPE_MARKUP_HELP: "Echappe les balises en entités HTML" ESCAPE_MARKUP_HELP: "Échappe les balises en entités HTML"
CACHING_HELP: "Interrupteur global ON/OFF pour activer/désactiver la mise en cache Grav" CACHING_HELP: "Interrupteur global ON/OFF pour activer/désactiver la mise en cache Grav"
CACHE_CHECK_METHOD: "Procédé de contrôle du cache" CACHE_CHECK_METHOD: "Procédé de contrôle du cache"
CACHE_CHECK_METHOD_HELP: "Selectionnez le procédé que Grav utilise pour contrôler si des fichiers de page ont été modifiés." CACHE_CHECK_METHOD_HELP: "Sélectionnez le procédé que Grav utilisera pour contrôler si des fichiers de page ont été modifiés."
CACHE_DRIVER: "Gestionnaire de cache" CACHE_DRIVER: "Gestionnaire de cache"
CACHE_DRIVER_HELP: "Choisissez quel gestionnaire de cache Grav doit utiliser. 'Auto Detect' tente de trouver le meilleur pour vous" CACHE_DRIVER_HELP: "Choisissez quel gestionnaire de cache Grav doit utiliser. 'Auto Detect' permet de trouver le meilleur pour vous"
CACHE_PREFIX: "Préfixe du cache" CACHE_PREFIX: "Préfixe du cache"
CACHE_PREFIX_HELP: "Un identificateur d'une partie de la clé Grav. Ne rien changer à moins que vous sachiez ce que vous faites." CACHE_PREFIX_HELP: "Un identificateur d'une partie de la clé Grav. Ne rien changer à moins que vous sachiez ce que vous faites."
CACHE_PREFIX_PLACEHOLDER: "Derivé de la base URL (à substituer en entrant une chaîne aléatoire)" CACHE_PREFIX_PLACEHOLDER: "Derivé de la base URL (à substituer en entrant une chaîne aléatoire)"
LIFETIME: "Durée de vie" LIFETIME: "Durée de vie"
LIFETIME_HELP: "Définit la durée de vie du cache en secondes. 0 = infinie" LIFETIME_HELP: "Définit la durée de vie du cache en secondes. 0 = infinie"
@@ -793,36 +793,36 @@ fr:
TWIG_CACHING: "Mise en cache Twig" TWIG_CACHING: "Mise en cache Twig"
TWIG_CACHING_HELP: "Contrôle le mécanisme de mise en cache de Twig. Laissez-le activé pour une meilleur performance." TWIG_CACHING_HELP: "Contrôle le mécanisme de mise en cache de Twig. Laissez-le activé pour une meilleur performance."
TWIG_DEBUG: "Twig debug" TWIG_DEBUG: "Twig debug"
TWIG_DEBUG_HELP: "Autorise ou pas l'option de charger l'extension Twig Debugger" TWIG_DEBUG_HELP: "Autorise ou non l'option permettant de charger l'extension Twig Debugger"
DETECT_CHANGES: "Détecter les modifications" DETECT_CHANGES: "Détecter les modifications"
DETECT_CHANGES_HELP: "Twig recompilera automatiquement le cache Twig si il détecte des modifications dans les modèles Twig" DETECT_CHANGES_HELP: "Twig recompilera automatiquement le cache Twig si il détecte des modifications dans les modèles Twig"
AUTOESCAPE_VARIABLES: "Auto-échapper les variables" AUTOESCAPE_VARIABLES: "Auto-échappement des variables"
AUTOESCAPE_VARIABLES_HELP: "Auto-échappe toutes les variables. Cela va probablement altérer votre site" AUTOESCAPE_VARIABLES_HELP: "Auto-échappe toutes les variables. Cela va probablement altérer votre site"
ASSETS: "Assets" ASSETS: "Assets"
CSS_PIPELINE: "CSS pipeline" CSS_PIPELINE: "CSS pipeline"
CSS_PIPELINE_HELP: "Le CSS pipeline est l'unification de multiples ressources CSS en un seul fichier" CSS_PIPELINE_HELP: "Le CSS pipeline permet l'unification de multiples ressources CSS en un seul fichier"
CSS_MINIFY: "Minification CSS" CSS_MINIFY: "Minification CSS"
CSS_MINIFY_HELP: "Minification du CSS durant la procédure de pipelining" CSS_MINIFY_HELP: "Minification du CSS durant la procédure de pipelining"
CSS_MINIFY_WINDOWS_OVERRIDE: "Substitution minification CSS Windows" CSS_MINIFY_WINDOWS_OVERRIDE: "Substitution minification CSS Windows"
CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Minification pour plateformes Windows. Non par défaut en raison de ThreadStackSize" CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Minification pour plateformes Windows. Non par défaut en raison de ThreadStackSize"
CSS_REWRITE: "Réécriture CSS" CSS_REWRITE: "Réécriture CSS"
CSS_REWRITE_HELP: "Réécriture des URLs relatives aux CSS durant la procédure de pipelining" CSS_REWRITE_HELP: "Réécriture des URL relatives de CSS durant la procédure de pipelining"
JAVASCRIPT_PIPELINE: "JavaScript pipeline" JAVASCRIPT_PIPELINE: "JavaScript pipeline"
JAVASCRIPT_PIPELINE_HELP: "The JS pipeline is the unification of multiple JS resources into one file" JAVASCRIPT_PIPELINE_HELP: "Le JS pipeline permet l'unification de multiples ressources JS en un seul fichier."
JAVASCRIPT_MINIFY: "JavaScript minify" JAVASCRIPT_MINIFY: "Minification JavaScript"
JAVASCRIPT_MINIFY_HELP: "Minification du JS durant la procédure de pipelining" JAVASCRIPT_MINIFY_HELP: "Minification du JS durant la procédure de pipelining"
ENABLED_TIMESTAMPS_ON_ASSETS: "Active les timestamps sur les assets" ENABLED_TIMESTAMPS_ON_ASSETS: "Active les timestamps pour les assets"
ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Active l'horodatage des assets" ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Active l'horodatage des assets"
COLLECTIONS: "Collections" COLLECTIONS: "Collections"
ERROR_HANDLER: "Gestionnaire d'erreurs" ERROR_HANDLER: "Gestionnaire des erreurs"
DISPLAY_ERRORS: "Afficher les erreurs" DISPLAY_ERRORS: "Afficher les erreurs"
DISPLAY_ERRORS_HELP: "Affiche une page complète d'erreurs" DISPLAY_ERRORS_HELP: "Affiche une page complète d'erreurs"
LOG_ERRORS: "Journal d'erreurs" LOG_ERRORS: "Journal des erreurs"
LOG_ERRORS_HELP: "Journal d'erreurs dans le dossier /logs" LOG_ERRORS_HELP: "Journal des erreurs pour le dossier /logs"
DEBUGGER: "Débogueur" DEBUGGER: "Débogueur"
DEBUGGER_HELP: "Active le débogueur Grav et ses paramètres" DEBUGGER_HELP: "Active le débogueur Grav et ses paramètres"
DEBUG_TWIG: "Débogage Twig" DEBUG_TWIG: "Débogage Twig"
DEBUG_TWIG_HELP: "Active le débogage des modèles Twig" DEBUG_TWIG_HELP: "Active le débogage des templates Twig"
SHUTDOWN_CLOSE_CONNECTION: "Fermeture des connections" SHUTDOWN_CLOSE_CONNECTION: "Fermeture des connections"
SHUTDOWN_CLOSE_CONNECTION_HELP: "Ferme les connections avant d'appeler onShutdown(). false pour debogage" SHUTDOWN_CLOSE_CONNECTION_HELP: "Ferme les connections avant d'appeler onShutdown(). false pour debogage"
DEFAULT_IMAGE_QUALITY: "Qualité d'image par défaut" DEFAULT_IMAGE_QUALITY: "Qualité d'image par défaut"
@@ -831,17 +831,17 @@ fr:
CACHE_ALL_HELP: "Gérer toutes les images via le système de cache de Grav même si il n'y pas de manipulations de média" CACHE_ALL_HELP: "Gérer toutes les images via le système de cache de Grav même si il n'y pas de manipulations de média"
IMAGES_DEBUG: "Filigrane de débogage d'image" IMAGES_DEBUG: "Filigrane de débogage d'image"
IMAGES_DEBUG_HELP: "Montre une incrustation sur les images indiquant la profondeur de pixel de l'image quand on travaille avec retina par exemple" IMAGES_DEBUG_HELP: "Montre une incrustation sur les images indiquant la profondeur de pixel de l'image quand on travaille avec retina par exemple"
UPLOAD_LIMIT: "Limite d'upload de fichier" UPLOAD_LIMIT: "Limite de chargement de fichier"
UPLOAD_LIMIT_HELP: "Définit la taille maximum d'upload en bytes (0 est illimitée)" UPLOAD_LIMIT_HELP: "Définit la taille maximum de chargement en bytes (0 pour illimitée)"
ENABLE_MEDIA_TIMESTAMP: "Active l'horodatage sur les média" ENABLE_MEDIA_TIMESTAMP: "Active l'horodatage sur les média"
ENABLE_MEDIA_TIMESTAMP_HELP: "Ajoute un horodatage basé sur la dernière date de modification à chaque objet média" ENABLE_MEDIA_TIMESTAMP_HELP: "Ajoute un horodatage basé sur la dernière date de modification à chaque objet média"
SESSION: "Sessions" SESSION: "Sessions"
SESSION_ENABLED_HELP: "Active le support des sessions au sein de Grav" SESSION_ENABLED_HELP: "Active le support des sessions au sein de Grav"
TIMEOUT: "Durée de session" TIMEOUT: "Durée de session"
TIMEOUT_HELP: "Définit le timeout de la session en secondes" TIMEOUT_HELP: "Définit la durée d'activité de la session en secondes"
SESSION_NAME_HELP: "Identifiant utilisé pour composer le nom du cookie de session" SESSION_NAME_HELP: "Identifiant utilisé pour composer le nom du cookie de session"
ABSOLUTE_URLS: "URLs absolues" ABSOLUTE_URLS: "URL absolues"
ABSOLUTE_URLS_HELP: "URLs absolues ou relatives pour `base_url`" ABSOLUTE_URLS_HELP: "URL absolues ou relatives pour `base_url`"
PARAMETER_SEPARATOR: "Séparateur de paramètres" PARAMETER_SEPARATOR: "Séparateur de paramètres"
PARAMETER_SEPARATOR_HELP: "Séparateur pour les paramètres passés qui peuvent être changés pour Apache sur Windows" PARAMETER_SEPARATOR_HELP: "Séparateur pour les paramètres passés qui peuvent être changés pour Apache sur Windows"
TASK_COMPLETED: "Tâches complétées" TASK_COMPLETED: "Tâches complétées"
@@ -852,22 +852,22 @@ fr:
CURRENT: "Actuel" CURRENT: "Actuel"
UPDATE_GRAV_NOW: "Mettre à jour Grav maintenant" UPDATE_GRAV_NOW: "Mettre à jour Grav maintenant"
GRAV_SYMBOLICALLY_LINKED: "Grav est symboliquement lié. Les mises à jour ne seront pas disponibles" GRAV_SYMBOLICALLY_LINKED: "Grav est symboliquement lié. Les mises à jour ne seront pas disponibles"
UPDATING_PLEASE_WAIT: "Mise à jour... patientez s'il vous plait, téléchargement" UPDATING_PLEASE_WAIT: "Mise à jour... veuillez patienter, téléchargement"
OF_THIS: "de ce" OF_THIS: "de ce"
OF_YOUR: "de votre" OF_YOUR: "de votre"
HAVE_AN_UPDATE_AVAILABLE: "a une mise à jour disponible" HAVE_AN_UPDATE_AVAILABLE: "a une mise à jour disponible"
SAVE_AS: "Sauvegarder comme" SAVE_AS: "Sauvegarder comme"
MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Etes-vous sûr de vouloir de supprimer cette page et tous ses enfants ? Si la page est traduite dans d'autres langues, ces traductions seront conservées et devront être supprimées séparémment. Sinon, le dossier de page sera effacé avec ses sous-pages. Cette action ne pourra pas être annulée." MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Êtes-vous sûr de vouloir de supprimer cette page et tous ses enfants ? Si la page est traduite dans d'autres langues, ces traductions seront conservées et devront être supprimées séparémment. Sinon, le dossier de page sera effacé avec ses sous-pages. Cette action ne pourra pas être annulée."
AND: "et" AND: "et"
UPDATE_AVAILABLE: "Mise à jour disponible" UPDATE_AVAILABLE: "Mise à jour disponible"
METADATA_KEY: "Clé (ex. 'mots clés')" METADATA_KEY: "Clé (ex. 'mots clés')"
METADATA_VALUE: "Valeur (ex. 'Blog, Grav')" METADATA_VALUE: "Valeur (ex. 'Blog, Grav')"
USERNAME_HELP: "Le nom d'utilisateur doit être de 3 à 16 caractères, incluant lettres minuscules, nombres, caractère de soulignement, trait d'union. Les lettres majuscules, espace, et caractères spéciaux ne sont pas autorisés" USERNAME_HELP: "Le nom d'utilisateur doit être composé de 3 à 16 caractères, incluant lettres minuscules, nombres, caractère de soulignement, trait d'union. Les lettres majuscules, espace, et caractères spéciaux ne sont pas autorisés"
FULLY_UPDATED: "A jour" FULLY_UPDATED: "A jour"
SAVE_LOCATION: "Emplacement de sauvegarde" SAVE_LOCATION: "Emplacement de sauvegarde"
PAGE_FILE: "Fichier de page" PAGE_FILE: "Fichier de page"
PAGE_FILE_HELP: "Nom du fichier de page, et par défaut le modèle d'affichage pour cette page" PAGE_FILE_HELP: "Nom du fichier de page et par défaut le template d'affichage pour cette page"
NO_USER_ACCOUNTS: "Aucun compte utilisateur trouvé. Créez-en un en premier s'il vous plait..." NO_USER_ACCOUNTS: "Aucun compte utilisateur trouvé. Veuillez en créer un..."
REDIRECT_TRAILING_SLASH: "Slash final de redirection" REDIRECT_TRAILING_SLASH: "Slash final de redirection"
REDIRECT_TRAILING_SLASH_HELP: "Effectue une redirection de type 301 au lieu de maintenir de façon transparente le slash final d'URIs." REDIRECT_TRAILING_SLASH_HELP: "Effectue une redirection de type 301 au lieu de maintenir de façon transparente le slash final d'URIs."
DEFAULT_DATE_FORMAT: "Format de la date des pages" DEFAULT_DATE_FORMAT: "Format de la date des pages"

View File

@@ -102,7 +102,7 @@ $(function(){
}; };
root.GravAjax.toastErrorHandler = function (xhr, status, error) { root.GravAjax.toastErrorHandler = function (xhr, status, error) {
if (status !== 'abort') { if (status !== 'abort' && !(status == 'error' && error == '')) {
toastr.error(error); toastr.error(error);
} }
}; };

View File

@@ -98,12 +98,20 @@
ArrayField.prototype.remove = function(event) { ArrayField.prototype.remove = function(event) {
var row = $(event.target).closest('[data-grav-array-type="row"]'); var row = $(event.target).closest('[data-grav-array-type="row"]');
var lastItem = false;
if (row.siblings().length == 0) { if (row.siblings().length == 0) {
//on the last item we just clear its values //on the last item we just clear its values
row.find('input').val(''); lastItem = true;
return; this.add(event);
} }
row.remove(); row.remove();
if (lastItem == true) {
this.refreshAll();
}
if (this.isValueOnly()) { if (this.isValueOnly()) {
this.refreshAll(); this.refreshAll();
} }

View File

@@ -11,8 +11,10 @@
input = parent.prop('tagName').toUpperCase() === tagName ? parent : parent.find(tagName), input = parent.prop('tagName').toUpperCase() === tagName ? parent : parent.find(tagName),
type = parent.data(form.fieldIndicator); type = parent.data(form.fieldIndicator);
input.selectize(parent.data('grav-selectize')); if (!input[0].selectize) {
input.selectize(parent.data('grav-selectize'));
}
this.el = parent; this.el = parent;
this.input = input; this.input = input;
this.selectize = input[0].selectize; this.selectize = input[0].selectize;

View File

@@ -38,6 +38,10 @@
</div> </div>
{% else %} {% else %}
{% if field.value_only != true %} {% if field.value_only != true %}
{% if key == '0' and text == '' %}
{% set key = '' %}
{% endif %}
<input data-grav-array-type="key" type="text" value="{{ key }}" placeholder="{{ field.placeholder_key|e|tu }}" /> <input data-grav-array-type="key" type="text" value="{{ key }}" placeholder="{{ field.placeholder_key|e|tu }}" />
{% endif %} {% endif %}