diff --git a/src/Umbraco.Core/ActionsResolver.cs b/src/Umbraco.Core/ActionsResolver.cs
index 2da95a3416..206182c6f2 100644
--- a/src/Umbraco.Core/ActionsResolver.cs
+++ b/src/Umbraco.Core/ActionsResolver.cs
@@ -23,12 +23,12 @@ namespace Umbraco.Core
: base(serviceProvider, logger, packageActions)
{
- }
-
- ///
- /// Gets the implementations.
- ///
- public IEnumerable Actions
+ }
+
+ ///
+ /// Gets the implementations.
+ ///
+ public IEnumerable Actions
{
get
{
diff --git a/src/Umbraco.Core/Constants-ObjectTypes.cs b/src/Umbraco.Core/Constants-ObjectTypes.cs
index adc154174a..4a79437c61 100644
--- a/src/Umbraco.Core/Constants-ObjectTypes.cs
+++ b/src/Umbraco.Core/Constants-ObjectTypes.cs
@@ -212,6 +212,16 @@ namespace Umbraco.Core
/// Guid for a Forms DataSource.
///
public static readonly Guid FormsDataSourceGuid = new Guid(FormsDataSource);
+
+ ///
+ /// Guid for a Language.
+ ///
+ public const string Language = "6B05D05B-EC78-49BE-A4E4-79E274F07A77";
+
+ ///
+ /// Guid for a Forms DataSource.
+ ///
+ public static readonly Guid LanguageGuid = new Guid(Language);
}
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Core/IO/IOHelper.cs b/src/Umbraco.Core/IO/IOHelper.cs
index 2ee0463435..d017505b4c 100644
--- a/src/Umbraco.Core/IO/IOHelper.cs
+++ b/src/Umbraco.Core/IO/IOHelper.cs
@@ -97,6 +97,8 @@ namespace Umbraco.Core.IO
public static string MapPath(string path, bool useHttpContext)
{
+ if (path == null) throw new ArgumentNullException("path");
+
// Check if the path is already mapped
if ((path.Length >= 2 && path[1] == Path.VolumeSeparatorChar)
|| path.StartsWith(@"\\")) //UNC Paths start with "\\". If the site is running off a network drive mapped paths will look like "\\Whatever\Boo\Bar"
diff --git a/src/Umbraco.Core/Models/UmbracoObjectTypes.cs b/src/Umbraco.Core/Models/UmbracoObjectTypes.cs
index 0df7a21e57..d0136a10a4 100644
--- a/src/Umbraco.Core/Models/UmbracoObjectTypes.cs
+++ b/src/Umbraco.Core/Models/UmbracoObjectTypes.cs
@@ -178,6 +178,13 @@ namespace Umbraco.Core.Models
///
[UmbracoObjectType(Constants.ObjectTypes.FormsDataSource)]
[FriendlyName("DataSource")]
- FormsDataSource
+ FormsDataSource,
+
+ ///
+ /// Language
+ ///
+ [UmbracoObjectType(Constants.ObjectTypes.Language)]
+ [FriendlyName("Language")]
+ Language
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Properties/AssemblyInfo.cs b/src/Umbraco.Core/Properties/AssemblyInfo.cs
index 7d94f51fbe..35ff0beb22 100644
--- a/src/Umbraco.Core/Properties/AssemblyInfo.cs
+++ b/src/Umbraco.Core/Properties/AssemblyInfo.cs
@@ -39,7 +39,6 @@ using System.Security.Permissions;
[assembly: InternalsVisibleTo("UmbracoExamine")]
[assembly: InternalsVisibleTo("Concorde.Sync")]
-[assembly: InternalsVisibleTo("Umbraco.VisualStudio")]
[assembly: InternalsVisibleTo("Umbraco.Courier.Core")]
[assembly: InternalsVisibleTo("Umbraco.Courier.Persistence")]
@@ -52,4 +51,8 @@ using System.Security.Permissions;
[assembly: InternalsVisibleTo("Umbraco.Forms.Web")]
//allow this to be mocked in our unit tests
-[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
\ No newline at end of file
+[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]
+
+//allow custom unit-testing code to access internals through custom adapters
+[assembly: InternalsVisibleTo("Umbraco.VisualStudio")] // backwards compat.
+[assembly: InternalsVisibleTo("Umbraco.UnitTesting.Adapter")] // new, more imperative name
diff --git a/src/Umbraco.Core/PropertyEditors/ValueConverters/DecimalValueConverter.cs b/src/Umbraco.Core/PropertyEditors/ValueConverters/DecimalValueConverter.cs
index 89af76ea12..10b3b7188e 100644
--- a/src/Umbraco.Core/PropertyEditors/ValueConverters/DecimalValueConverter.cs
+++ b/src/Umbraco.Core/PropertyEditors/ValueConverters/DecimalValueConverter.cs
@@ -22,7 +22,7 @@ namespace Umbraco.Core.PropertyEditors.ValueConverters
if (sourceString != null)
{
decimal d;
- return (decimal.TryParse(sourceString, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out d)) ? d : 0M;
+ return (decimal.TryParse(sourceString, NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out d)) ? d : 0M;
}
// in the database an a decimal is an a decimal
diff --git a/src/Umbraco.Core/UdiEntityType.cs b/src/Umbraco.Core/UdiEntityType.cs
index f6b9b1e3b0..0119e83b24 100644
--- a/src/Umbraco.Core/UdiEntityType.cs
+++ b/src/Umbraco.Core/UdiEntityType.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
using Umbraco.Core.Models;
namespace Umbraco.Core
@@ -84,6 +83,8 @@ namespace Umbraco.Core
public const string PartialViewMacro = "partial-view-macro";
[UdiType(UdiType.StringUdi)]
public const string Xslt = "xslt";
+ [UdiType(UdiType.StringUdi)]
+ public const string Language = "language";
public static string FromUmbracoObjectType(UmbracoObjectTypes umbracoObjectType)
{
@@ -123,6 +124,8 @@ namespace Umbraco.Core
return FormsPreValue;
case UmbracoObjectTypes.FormsDataSource:
return FormsDataSource;
+ case UmbracoObjectTypes.Language:
+ return Language;
}
throw new NotSupportedException(string.Format("UmbracoObjectType \"{0}\" does not have a matching EntityType.", umbracoObjectType));
}
@@ -165,6 +168,8 @@ namespace Umbraco.Core
return UmbracoObjectTypes.FormsPreValue;
case FormsDataSource:
return UmbracoObjectTypes.FormsDataSource;
+ case Language:
+ return UmbracoObjectTypes.Language;
}
throw new NotSupportedException(
string.Format("EntityType \"{0}\" does not have a matching UmbracoObjectType.", entityType));
diff --git a/src/Umbraco.Core/UdiGetterExtensions.cs b/src/Umbraco.Core/UdiGetterExtensions.cs
index 3d829c8a1a..d663acba9d 100644
--- a/src/Umbraco.Core/UdiGetterExtensions.cs
+++ b/src/Umbraco.Core/UdiGetterExtensions.cs
@@ -97,7 +97,7 @@ namespace Umbraco.Core
///
/// The entity.
/// The entity identifier of the entity.
- public static GuidUdi GetUdi(this Umbraco.Core.Models.EntityContainer entity)
+ public static GuidUdi GetUdi(this EntityContainer entity)
{
if (entity == null) throw new ArgumentNullException("entity");
@@ -246,6 +246,17 @@ namespace Umbraco.Core
return new GuidUdi(Constants.UdiEntityType.RelationType, entity.Key).EnsureClosed();
}
+ ///
+ /// Gets the entity identifier of the entity.
+ ///
+ /// The entity.
+ /// The entity identifier of the entity.
+ public static StringUdi GetUdi(this ILanguage entity)
+ {
+ if (entity == null) throw new ArgumentNullException("entity");
+ return new StringUdi(Constants.UdiEntityType.Language, entity.IsoCode).EnsureClosed();
+ }
+
///
/// Gets the entity identifier of the entity.
///
@@ -279,7 +290,7 @@ namespace Umbraco.Core
var dataTypeComposition = entity as IDataTypeDefinition;
if (dataTypeComposition != null) return dataTypeComposition.GetUdi();
- var container = entity as Umbraco.Core.Models.EntityContainer;
+ var container = entity as EntityContainer;
if (container != null) return container.GetUdi();
var media = entity as IMedia;
@@ -315,6 +326,9 @@ namespace Umbraco.Core
var relationType = entity as IRelationType;
if (relationType != null) return relationType.GetUdi();
+ var language = entity as ILanguage;
+ if (language != null) return language.GetUdi();
+
throw new NotSupportedException(string.Format("Entity type {0} is not supported.", entity.GetType().FullName));
}
}
diff --git a/src/Umbraco.Tests/PropertyEditors/PropertyEditorValueConverterTests.cs b/src/Umbraco.Tests/PropertyEditors/PropertyEditorValueConverterTests.cs
index 8134924c61..73abf62eba 100644
--- a/src/Umbraco.Tests/PropertyEditors/PropertyEditorValueConverterTests.cs
+++ b/src/Umbraco.Tests/PropertyEditors/PropertyEditorValueConverterTests.cs
@@ -96,5 +96,25 @@ namespace Umbraco.Tests.PropertyEditors
Assert.AreEqual(expected, result);
}
+
+ [TestCase(null, "1", false, 1)]
+ [TestCase(null, "1", true, 1)]
+ [TestCase(null, "0", false, 0)]
+ [TestCase(null, "0", true, 0)]
+ [TestCase(null, null, false, 0)]
+ [TestCase(null, null, true, 0)]
+ [TestCase(null, "-1", false, -1)]
+ [TestCase(null, "-1", true, -1)]
+ [TestCase(null, "1.65", false, 1.65)]
+ [TestCase(null, "1.65", true, 1.65)]
+ [TestCase(null, "-1.65", false, -1.65)]
+ [TestCase(null, "-1.65", true, -1.65)]
+ public void CanConvertDecimalAliasPropertyEditor(Core.Models.PublishedContent.PublishedPropertyType propertyType, object value, bool preview, double expected)
+ {
+ var converter = new DecimalValueConverter();
+ var result = converter.ConvertDataToSource(propertyType, value, preview);
+
+ Assert.AreEqual(expected, result);
+ }
}
}
diff --git a/src/Umbraco.Web.UI.Client/gruntFile.js b/src/Umbraco.Web.UI.Client/gruntFile.js
index 6c785489c4..83cb15df64 100644
--- a/src/Umbraco.Web.UI.Client/gruntFile.js
+++ b/src/Umbraco.Web.UI.Client/gruntFile.js
@@ -382,6 +382,9 @@ module.exports = function (grunt) {
html: {
files: ['src/views/**/*.html', 'src/*.html'],
tasks: ['watch-html', 'timestamp']
+ },
+ options: {
+ interval: 500
}
},
diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/package.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/package.resource.js
index c9a501ba24..cb810c6edb 100644
--- a/src/Umbraco.Web.UI.Client/src/common/resources/package.resource.js
+++ b/src/Umbraco.Web.UI.Client/src/common/resources/package.resource.js
@@ -123,6 +123,16 @@ function packageResource($q, $http, umbDataFormatter, umbRequestHelper) {
'Failed to install package. Error during the step "InstallFiles" ');
},
+ checkRestart: function (package) {
+
+ return umbRequestHelper.resourcePromise(
+ $http.post(
+ umbRequestHelper.getApiUrl(
+ "packageInstallApiBaseUrl",
+ "CheckRestart"), package),
+ 'Failed to install package. Error during the step "CheckRestart" ');
+ },
+
installData: function (package) {
return umbRequestHelper.resourcePromise(
diff --git a/src/Umbraco.Web.UI.Client/src/views/packager/views/install-local.controller.js b/src/Umbraco.Web.UI.Client/src/views/packager/views/install-local.controller.js
index 9ce2506e76..c51f91c7c6 100644
--- a/src/Umbraco.Web.UI.Client/src/views/packager/views/install-local.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/packager/views/install-local.controller.js
@@ -1,7 +1,7 @@
(function () {
"use strict";
- function PackagesInstallLocalController($scope, $route, $location, Upload, umbRequestHelper, packageResource, localStorageService, $timeout, $window, localizationService) {
+ function PackagesInstallLocalController($scope, $route, $location, Upload, umbRequestHelper, packageResource, localStorageService, $timeout, $window, localizationService, $q) {
var vm = this;
vm.state = "upload";
@@ -117,10 +117,37 @@
.then(function(pack) {
vm.installState.progress = "25";
vm.installState.status = localizationService.localize("packager_installStateInstalling");
- vm.installState.progress = "50";
return packageResource.installFiles(pack);
},
installError)
+ .then(function(pack) {
+ vm.installState.status = localizationService.localize("packager_installStateRestarting");
+ vm.installState.progress = "50";
+ var deferred = $q.defer();
+
+ //check if the app domain is restarted ever 2 seconds
+ var count = 0;
+ function checkRestart() {
+ $timeout(function () {
+ packageResource.checkRestart(pack).then(function (d) {
+ count++;
+ //if there is an id it means it's not restarted yet but we'll limit it to only check 10 times
+ if (d.isRestarting && count < 10) {
+ checkRestart();
+ }
+ else {
+ //it's restarted!
+ deferred.resolve(d);
+ }
+ },
+ installError);
+ }, 2000);
+ }
+
+ checkRestart();
+
+ return deferred.promise;
+ }, installError)
.then(function(pack) {
vm.installState.status = localizationService.localize("packager_installStateRestarting");
vm.installState.progress = "75";
diff --git a/src/Umbraco.Web.UI.Client/src/views/packager/views/repo.controller.js b/src/Umbraco.Web.UI.Client/src/views/packager/views/repo.controller.js
index 5ae1d4bf2c..395800d329 100644
--- a/src/Umbraco.Web.UI.Client/src/views/packager/views/repo.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/packager/views/repo.controller.js
@@ -193,13 +193,41 @@
.import(selectedPackage)
.then(function(pack) {
vm.installState.status = localizationService.localize("packager_installStateInstalling");
- vm.installState.progress = "33";
+ vm.installState.progress = "25";
return packageResource.installFiles(pack);
},
error)
.then(function(pack) {
vm.installState.status = localizationService.localize("packager_installStateRestarting");
- vm.installState.progress = "66";
+ vm.installState.progress = "50";
+ var deferred = $q.defer();
+
+ //check if the app domain is restarted ever 2 seconds
+ var count = 0;
+ function checkRestart() {
+ $timeout(function () {
+ packageResource.checkRestart(pack).then(function (d) {
+ count++;
+ //if there is an id it means it's not restarted yet but we'll limit it to only check 10 times
+ if (d.isRestarting && count < 10) {
+ checkRestart();
+ }
+ else {
+ //it's restarted!
+ deferred.resolve(d);
+ }
+ },
+ error);
+ }, 2000);
+ }
+
+ checkRestart();
+
+ return deferred.promise;
+ }, error)
+ .then(function (pack) {
+ vm.installState.status = localizationService.localize("packager_installStateRestarting");
+ vm.installState.progress = "75";
return packageResource.installData(pack);
},
error)
diff --git a/src/Umbraco.Web.UI/umbraco/config/lang/fr.xml b/src/Umbraco.Web.UI/umbraco/config/lang/fr.xml
index 0064697d95..093c1a0af5 100644
--- a/src/Umbraco.Web.UI/umbraco/config/lang/fr.xml
+++ b/src/Umbraco.Web.UI/umbraco/config/lang/fr.xml
@@ -28,6 +28,9 @@
Rafraîchir
Republier le site tout entier
Récupérer
+ Spécifiez les permissions pour la page %0%
+ Choisissez où déplacer
+ dans l'arborescence ci-dessous
Permissions
Version antérieure
Envoyer pour publication
@@ -45,16 +48,16 @@
Noeud invalide.
Domaine invalide.
Domaine déjà assigné.
- Domaine
Langue
+ Domaine
Nouveau domaine '%0%' créé
Domaine '%0%' supprimé
Domaine '%0%' déjà assigné
+ Domaine '%0%' mis à jour
+ Editer les domaines actuels
Les domaines contenant un chemin d'un niveau sont autorisés, ex : "example.com/en". Pour autant, cela
devrait être évité. Utilisez plutôt la gestion des noms d'hôte.]]>
- Domaine '%0%' mis à jour
- Editer les domaines actuels
Hériter
Culture
ou hériter de la culture des noeuds parents. S'appliquera aussi
@@ -85,8 +88,8 @@
Liste numérique
Insérer une macro
Insérer une image
- Retourner à la liste
Editer les relations
+ Retourner à la liste
Sauver
Sauver et publier
Sauver et envoyer pour approbation
@@ -97,7 +100,8 @@
Afficher les styles
Insérer un tableau
Générer les modèles
- Sauver et générer les modèles
+ Défaire
+ Refaire
Pour changer le type de document du contenu séléctionné, faites d'abord un choix dans la liste des types valides à cet endroit.
@@ -173,14 +177,15 @@
Cible
Ceci se traduit par l'heure suivante sur le serveur :
Qu'est-ce que cela signifie?]]>
-
+ Ajouter un autre champ texte
+ Enlever ce champ texte
+
Cliquez pour télécharger
Faites glisser vos fichier ici...
Lien vers le média
ou cliquez ici pour choisir un fichier
Les seuls types de fichiers autorisés sont
- Impossible de télécharger ce fichier, il n'a pas un type de fichier autorisé.
La taille maximum de fichier est
@@ -196,6 +201,13 @@
Type de document sans modèle
Nouveau répertoire
Nouveau type de données
+ Nouveau fichier javascript
+ Nouvelle vue partielle vide
+ Nouvelle macro pour vue partielle
+ Nouvelle vue partielle à partir d'un snippet
+ Nouvelle macro pour vue partielle vide
+ Nouvelle macro pour vue partielle à partir d'un snippet
+ Nouvelle macro pour vue partielle (sans macro)
Parcourir votre site
@@ -289,10 +301,12 @@
Voir l'élément de cache
Créer un répertoire...
Lier à l'original
+ Inclure les descendants
La communauté la plus amicale
Lier à la page
Ouvre le document lié dans une nouvelle fenêtre ou un nouvel onglet
Lier à un media
+ Lier à un fichier
Sélectionner le media
Sélectionner l'icône
Sélectionner l'élément
@@ -301,7 +315,9 @@
Sélectionner le contenu
Sélectionner le membre
Sélectionner le groupe de membres
+ Aucune icone n'a été trouvée
Il n'y a pas de paramètres pour cette macro
+ Il n'y a pas de macro disponible à insérer
Fournisseurs externes d'identification
Détails de l'exception
Trace d'exécution
@@ -310,12 +326,19 @@
Enlevez votre
compte
Sélectionner un éditeur
+ Selectionner un snippet
%0%' ci-dessous.
Vous pouvez ajouter d'autres langues depuis le menu ci-dessous "Langues".
]]>
Nom de Culture
+ Modifiez la clé de l'élément de dictionaire.
+
+
+
Votre nom d'utilisateur
@@ -331,7 +354,6 @@
Entrez votre email
Votre nom d'utilisateur est généralement votre adresse email
-
Autoriser à la racine
Seuls les Types de Contenu qui ont ceci coché peuvent être créés au niveau racine des arborescences de contenu et de media
@@ -362,6 +384,13 @@
CSS associées
Afficher le libellé
Largeur et hauteur
+ Tous les types de propriétés & les données de propriétés
+ utilisant ce type de données seront supprimés définitivement, veuillez confirmer que vous voulez également les supprimer
+ Oui, supprimer
+ et tous les types de propriétés & les données de propriétés utilisant ce type de données
+ Sélectionnez le répertoire où déplacer
+ dans l'arborescence ci-dessous
+ a été déplacé sous
Vos données ont été sauvegardées, mais avant de pouvoir publier votre page, il y a des erreurs que vous devez corriger :
@@ -420,6 +449,7 @@
Fermer la fenêtre
Commenter
Confirmer
+ Conserver
Conserver les proportions
Continuer
Copier
@@ -431,6 +461,7 @@
Supprimé
Suppression...
Design
+ Dictionnaire
Dimensions
Bas
Télécharger
@@ -440,6 +471,7 @@
Email
Erreur
Trouver
+ Premier
Hauteur
Aide
Icône
@@ -449,8 +481,8 @@
Installer
Non valide
Justifier
- Libellé
Langue
+ Dernier
Mise en page
En cours de chargement
Bloqué
@@ -477,8 +509,8 @@
Propriétés
Email de réception des données de formulaire
Corbeille
- Votre corbeille est vide
Restant
+ Enlever
Renommer
Renouveller
Requis
@@ -486,6 +518,7 @@
Permissions
Rechercher
Désolé, nous ne pouvons pas trouver ce que vous recherchez
+ Aucun élément n'a été ajouté
Serveur
Montrer
Afficher la page à l'envoi
@@ -519,6 +552,7 @@
Intégrer
sélectionné
+
Noir
Vert
@@ -527,6 +561,7 @@
Bleu
Rouge
+
Ajouter un onglet
Ajouter une propriété
@@ -544,7 +579,18 @@
Passer à la vue en liste
Basculer vers l'autorisation comme racine
+
+ Commenter/Décommenter les lignes
+ Supprimer la ligne
+ Copier les lignes vers le haut
+ Copier les lignes vers le bas
+ Déplacer les lignes vers le haut
+ Déplacer les lignes vers le bas
+
+ Général
+ Editeur
+
Couleur de fond
Gras
@@ -552,6 +598,7 @@
Police
Texte
+
Page
@@ -580,17 +627,21 @@
N'ayez pas d'inquiétude : aucun contenu ne sera supprimé et tout continuera à fonctionner parfaitement par après !
]]>
-
- Appuyez sur Suivant pour
- poursuivre. ]]>
-
+ Appuyez sur Suivant pour
+ poursuivre. ]]>
Suivant pour poursuivre la configuration]]>
Le mot de passe par défaut doit être modifié !]]>
L'utilisateur par défaut a été désactivé ou n'a pas accès à Umbraco!Aucune autre action n'est requise. Cliquez sur Suivant pour poursuivre.]]>
Le mot de passe par défaut a été modifié avec succès depuis l'installation!Aucune autre action n'est requise. Cliquez sur Suivant pour poursuivre.]]>
Le mot de passe a été modifié !
-
- ('admin') et le mot de passe ('default'). Il est important que ce mot de passe soit modifié en quelque-chose de sécurisé et unique.
+
+ Umbraco crée un utilisateur par défaut avec le login ('admin') et le mot de passe ('default'). Il est important que ce mot de passe soit
+ modifié en quelque-chose de sécurisé et unique.
+
+
+ Cette étape va vérifier le mot de passe utilisateur par défaut et suggèrera de le modifier si nécessaire.
+
]]>
Pour bien commencer, regardez nos vidéos d'introduction
En cliquant sur le bouton "Suivant" (ou en modifiant umbracoConfigurationStatus dans le fichier web.config), vous acceptez la licence de ce logiciel telle que spécifiée dans le champ ci-dessous. Veuillez noter que cette distribution Umbraco consiste en deux licences différentes, la licence open source MIT pour le framework et la licence Umbraco freeware qui couvre l'UI.
@@ -619,8 +670,7 @@
Il stocke également des données temporaires (i.e : cache) pour améliorer les performances de votre site.
]]>
Je veux démarrer "from scratch"
-
- Apprenez comment)
Vous pouvez toujours choisir d'installer Runway plus tard. Pour cela, allez dans la section "Développeur" et sélectionnez "Packages".
@@ -633,8 +683,7 @@
]]>
Recommandé uniquement pour les utilisateurs expérimentés
Je veux commencer avec un site simple
-
-
"Runway" est un site simple qui fournit des types de documents et des modèles de base. L'installateur peut mettre en place Runway automatiquement pour vous,
mais vous pouvez facilement l'éditer, l'enrichir, ou le supprimer par la suite. Il n'est pas nécessaire, et vous pouvez parfaitement vous en passer pour utiliser Umbraco. Cela étant dit,
@@ -738,8 +787,7 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
Avec les salutations du Robot Umbraco
]]>
-
- Hello %0%
+ Hello %0%
Ceci est un email automatique pour vous informer que la tâche '%1%'
a été executée sur la page '%2%'
@@ -774,6 +822,39 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
Choisissez un package sur votre ordinateur en cliquant sur le bouton Parcourir
et localisez le package. Les packages Umbraco ont généralement une extension ".umb" ou ".zip".
]]>
+ Déposez pour uploader
+ ou cliquez ici pour choisir les fichiers
+ Uploader un package
+ Installez un package local en le sélectionnant sur votre ordinateur. Installez uniquement des packages de sources fiables que vous connaissez
+ Uploader un autre package
+ Annuler et uploader un autre package
+ Licence
+ J'accepte
+ les conditions d'utilisation
+ Installer le package
+ Terminer
+ Packages installés
+ Vous n'avez aucun package installé
+ 'Packages' en haut à droite de votre écran]]>
+ Chercher des packages
+ Résultats pour
+ Nous n'avons rien pu trouver pour
+ Veuillez essayer de chercher un autre package ou naviguez à travers les catégories
+ Populaires
+ Nouvelles releases
+ a
+ points de karma
+ Information
+ Propriétaire
+ Contributeurs
+ Créé
+ Version actuelle
+ version .NET
+ Téléchargements
+ Coups de coeur
+ Compatibilité
+ Ce package est compatible avec les versions suivantes de Umbraco, selon les rapports des membres de la communauté. Une compatibilité complète ne peut pas être garantie pour les versions rapportées sous 100%
+ Sources externes
Auteur
Démo
Documentation
@@ -808,6 +889,8 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
Installation...
Redémarrage, veuillez patienter...
Terminé, votre navigateur va être rafraîchi, veuillez patienter...
+ Veuillez cliquer sur terminer pour compléter l'installation et recharger la page.
+ Package en cours de chargement...
Coller en conservant le formatage (non recommandé)
@@ -875,6 +958,10 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
Réinitialiser
+ Définir le recadrage
+ Donnez un alias au recadrage ainsi que sa largeur et sa hauteur par défaut
+ Sauvegarder le recadrage
+ Ajouter un nouveau recadrage
Version actuelle
@@ -1015,17 +1102,113 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
Prévisualiser
Styles
+
Editer le modèle
+
+ Sections
Insérer une zone de contenu
Insérer un placeholder de zone de contenu
- Insérer un élément de dictionnaire
- Insérer une Macro
- Insérer un champ de la page Umbraco
+
+ Insérer
+ Choisissez l'élément à insérer dans votre modèle
+
+ Elément de dictionnaire
+ Un élément de dictionnaire est un espace pour un morceau de texte traduisible, ce qui facilite la création de designs pour des sites web multilangues.
+
+ Macro
+
+ Une Macro est un composant configurable, ce qui est génial pour les parties réutilisables de votre
+ design où vous devez pouvoir fournir des paramètres,
+ comme les galeries, les formulaires et les listes.
+
+
+ Valeur
+ Affiche la valeur d'un des champs de la page en cours, avec des options pour modifier la valeur ou spécifier des valeurs alternatives.
+
+ Vue partielle
+
+ Une vue partielle est un fichier modèle séparé qui peut être à l'intérieur d'un aute modèle,
+ c'est génial pour réutiliser du markup ou pour séparer des modèles complexes en plusieurs fichiers.
+
+
Modèle de base
- Guide rapide concernant les tags des modèles Umbraco
+ Pas de modèle de base
+ Pas de modèle
+
+ Afficher un modèle enfant
+
+ @RenderBody().
+ ]]>
+
+
+
+ Définir une section nommée
+
+ @section { ... }. Celle-ci peut être affichée dans une région
+ spécifique du parent de ce modèle, en utilisant @RenderSection.
+ ]]>
+
+
+ Afficher une section nommée
+
+ @RenderSection(name).
+ Ceci affiche une région d'un modèle enfant qui est entourée d'une définition @section [name]{ ... } correspondante.
+ ]]>
+
+
+ Nom de la section
+ La section est obligatoire
+
+ Si obligatoire, le modèle enfant doit contenir une définition @section, sinon une erreur est affichée.
+
+
+
+ Générateur de requêtes
+ Générer une requête
+ éléments trouvés, en
+
+ Je veux
+ tout le contenu
+ le contenu du type "%0%"
+ à partir de
+ mon site web
+ où
+ et
+
+ est
+ n'est pas
+ avant
+ avant (incluant la date sélectionnée)
+ après
+ après (incluant la date sélectionnée)
+ égal
+ n'est pas égal
+ contient
+ ne contient pas
+ supérieur à
+ supérieur ou égal à
+ inférieur à
+ inférieur ou égal à
+
+ Id
+ Nom
+ Date de Création
+ Date de Dernière Modification
+
+ trier par
+ ascendant
+ descendant
+
Modèle
+
+
Choisissez le type de contenu
Choisissez une mise en page
@@ -1057,7 +1240,6 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
Paramètres
Configurez les paramètres qui peuvent être modifiés par les éditeurs
-
Styles
Configurez les effets de style qui peuvent être modifiés par les éditeurs
@@ -1070,8 +1252,9 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
Choisir le défaut
ont été ajoutés
-
-
+
+
+
Compositions
Vous n'avez pas ajouté d'onglet
Ajouter un nouvel onglet
@@ -1085,6 +1268,7 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
Modèles autorisés
Sélectionnez les modèles que les éditeurs sont autorisés à utiliser pour du contenu de ce type.
+
Autorisé comme racine
Autorisez les éditeurs à créer du contenu de ce type à la racine de l'arborescence de contenu.
Oui - autoriser du contenu de ce type à la racine
@@ -1093,6 +1277,7 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
Autorisez la création de contenu des types spécifiés sous le contenu de ce type-ci
Choisissez les noeuds enfants
+
Hériter des onglets et propriétés d'un type de document existant. De nouveaux onglets seront ajoutés au type de document actuel, ou fusionnés s'il existe un onglet avec un nom sililaire.
Ce type de contenu est utilisé dans une composition, et ne peut donc pas être lui-même un composé.
Il n'y a pas de type de contenu disponible à utiliser dans une composition.
@@ -1127,39 +1312,43 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
Le membre peut éditer
Afficher dans le profil du membre
- l'onglet n'a pas d'ordonnancement
-
-
-
- Création des modèles
- ceci peut prendre un certain temps, ne vous inquiétez pas
- Les modèles ont été générés
- Les modèles n'ont pas pu être générés
- La génération des modèles a échoué, veuillez consulter les erreurs dans le log Umbraco
+
+ Ajouter un champ de rechange
+ Champ de rechange
+ Ajouter une valeur par défaut
+ Valeur par défaut
Champ alternatif
Texte alternatif
Casse
Encodage
Choisir un champ
Convertir les sauts de ligne
+ Oui, convertir les sauts de ligne
Remplace les sauts de ligne avec des balises <br>
Champs particuliers
Oui, la date seulement
+ Format et encodage
Formater comme une date
+ Formate la valeur comme une date, ou une date avec l'heure, en fonction de la culture active
Encoder en HTML
Remplacera les caractères spéciaux par leur équivalent HTML.
Sera inséré après la valeur du champ
Sera inséré avant la valeur du champ
Minuscules
+ Modifier le résultat
Aucun
+ Example de résultat
Insérer après le champ
Insérer avant le champ
Récursif
- Supprimer les balises de paragraphes
+ Oui, rendre récursif
+ Supprimer les balises de paragraphe
+ Oui, supprimer les balises de paragraphe
Supprimera toute balise <P> au début et à la fin du texte
+ Séparateur
Champs standards
Majuscules
Encode pour URL
@@ -1248,6 +1437,8 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
Modèles
Fichiers XSLT
Analytique
+ Vues partielles
+ Fichiers Macro pour les vues partielles
Nouvelle mise à jour disponible
@@ -1307,6 +1498,14 @@ Pour gérer votre site, ouvrez simplement le backoffice Umbraco et commencez à
Valider comme Url
...ou introduisez une validation spécifique
Champ obligatoire
+ Introduisez une expression régulière
+ Vous devez ajouter au moins
+ Vous ne pouvez avoir que
+ éléments
+ éléments sélectionnés
+ Date non valide
+ Pas un nombre
+ Email non valide