diff --git a/actions/Import.php b/actions/Import.php index c2034b03..8bc36b49 100644 --- a/actions/Import.php +++ b/actions/Import.php @@ -23,9 +23,11 @@ use common_report_Report; use core_kernel_classes_Resource; +use oat\generis\Helper\UserHashForEncryption; use oat\generis\model\GenerisRdf; use oat\taoTestTaker\models\CsvImporter; use oat\taoTestTaker\models\events\TestTakerImportedEvent; +use oat\taoTestTaker\models\TestTakerSavePasswordInMemory; use tao_helpers_form_FormFactory; /** @@ -66,6 +68,7 @@ protected function getValidators(){ /** * @param common_report_Report $report + * @throws \core_kernel_persistence_Exception */ protected function onAfterImport(common_report_Report $report) { @@ -73,8 +76,33 @@ protected function onAfterImport(common_report_Report $report) foreach ($report->getSuccesses() as $success) { $resource = $success->getData(); if ($resource instanceof core_kernel_classes_Resource) { - $this->getEventManager()->trigger(new TestTakerImportedEvent($resource->getUri())); + $this->getEventManager()->trigger(new TestTakerImportedEvent($resource->getUri(), $this->getProperties($resource))); } } } + + /** + * @param core_kernel_classes_Resource $resource + * @return array + * @throws \core_kernel_persistence_Exception + * @throws \common_ext_ExtensionException + */ + protected function getProperties($resource) + { + /** @var \common_ext_ExtensionsManager $extManager */ + $extManager = $this->getServiceLocator()->get(\common_ext_ExtensionsManager::SERVICE_ID); + $taoTestTaker = $extManager->getExtensionById('taoTestTaker'); + $config = $taoTestTaker->getConfig('csvImporterCallbacks'); + + if ((bool)$config['use_properties_for_event']){ + return [ + 'hashForKey' => UserHashForEncryption::hash(TestTakerSavePasswordInMemory::getPassword()), + GenerisRdf::PROPERTY_USER_PASSWORD => $resource->getOnePropertyValue( + new \core_kernel_classes_Property(GenerisRdf::PROPERTY_USER_PASSWORD) + )->literal + ]; + } + + return []; + } } diff --git a/actions/TestTaker.php b/actions/TestTaker.php index 16190629..e852c765 100644 --- a/actions/TestTaker.php +++ b/actions/TestTaker.php @@ -22,6 +22,7 @@ namespace oat\taoTestTaker\actions; use core_kernel_classes_Class; +use oat\generis\Helper\UserHashForEncryption; use oat\generis\model\GenerisRdf; use oat\oatbox\event\EventManagerAwareTrait; use oat\tao\model\resources\ResourceWatcher; @@ -112,11 +113,13 @@ public function editSubject() $values = $myForm->getValues(); if ($addMode) { + $plainPassword = $values['password1']; $values[GenerisRdf::PROPERTY_USER_PASSWORD] = \core_kernel_users_Service::getPasswordHash()->encrypt($values['password1']); unset($values['password1']); unset($values['password2']); } else { if (! empty($values['password2'])) { + $plainPassword = $values['password2']; $values[GenerisRdf::PROPERTY_USER_PASSWORD] = \core_kernel_users_Service::getPasswordHash()->encrypt($values['password2']); } unset($values['password2']); @@ -126,7 +129,14 @@ public function editSubject() $binder = new \tao_models_classes_dataBinding_GenerisFormDataBinder($subject); $subject = $binder->bind($values); - $this->getEventManager()->trigger(new TestTakerUpdatedEvent($subject->getUri(), $values)); + $data = []; + if (isset($plainPassword)){ + $data = ['hashForKey' => UserHashForEncryption::hash($plainPassword)]; + } + + $this->getEventManager()->trigger(new TestTakerUpdatedEvent($subject->getUri(), + array_merge($values, $data) + )); if ($addMode) { // force default subject roles to be the Delivery Role: diff --git a/config/default/csvImporterCallbacks.php b/config/default/csvImporterCallbacks.php new file mode 100644 index 00000000..3c372b57 --- /dev/null +++ b/config/default/csvImporterCallbacks.php @@ -0,0 +1,13 @@ + array( + 'callbacks' => array( + '*' => array('trim'), + GenerisRdf::PROPERTY_USER_PASSWORD => array('oat\taoTestTaker\models\CsvImporter::taoSubjectsPasswordEncode') + ), + 'use_properties_for_event' => false + ) +)); diff --git a/locales/fr-CA/messages.lang.php b/locales/fr-CA/messages.lang.php new file mode 100644 index 00000000..f1fda38f --- /dev/null +++ b/locales/fr-CA/messages.lang.php @@ -0,0 +1,324 @@ +Filters"]="Filtres"; +$GLOBALS['__l10n']["Options"]="Options"; +$GLOBALS['__l10n']["> Extension %s succesfully installed."]="> Extension %s installée avec succès."; +$GLOBALS['__l10n']["> Installation done."]="> Installation terminée."; +$GLOBALS['__l10n']["A fatal error occured during the installation process."]="Une erreur fatale s'est produite pendant l'installation."; +$GLOBALS['__l10n']["A message with further instructions has been sent to your email address: %s"]="Un message avec des instructions a été envoyée vers votre adresse courriel: %s"; +$GLOBALS['__l10n']["Access Denied"]="Accès refusé"; +$GLOBALS['__l10n']["Access denied. Please renew your authentication!"]="Accès refusé. Veuillez renouveler votre authentification !"; +$GLOBALS['__l10n']["Actions"]="Actions"; +$GLOBALS['__l10n']["Add"]="Ajouter"; +$GLOBALS['__l10n']["Add a CSV file"]="Ajouter un fichier CSV"; +$GLOBALS['__l10n']["Add a user"]="Ajouter un utilisateur"; +$GLOBALS['__l10n']["Add an RDF/XML file"]="Ajouter un fichier RDF/XML"; +$GLOBALS['__l10n']["Add file(s)"]="Ajouter un ou des fichier(s)"; +$GLOBALS['__l10n']["Add property"]="Ajouter une propriété"; +$GLOBALS['__l10n']["Advanced Mode"]="Mode avancé"; +$GLOBALS['__l10n']["all"]="tout"; +$GLOBALS['__l10n']["All data will be removed in %s"]="Toutes les données vont être supprimées dans %s"; +$GLOBALS['__l10n']["All fields are required"]="Tous les champs sont requis"; +$GLOBALS['__l10n']["All rights reserved."]="Tous droits réservés."; +$GLOBALS['__l10n']["Alpha version"]="Version alpha"; +$GLOBALS['__l10n']["An email has been sent"]="Un courriel vous a été envoyé"; +$GLOBALS['__l10n']["Are you sure to delete the versioned resource?\nThe history will be lost as well."]="Êtes-vous sûr de vouloir supprimer la ressource versionnée ?\nL'historique sera également perdu."; +$GLOBALS['__l10n']["Are you sure you want to delete it?"]="Êtes-vous sûr(e) de vouloir le supprimer ?"; +$GLOBALS['__l10n']["Assign User to role"]="Assigner l'utilisateur à un rôle"; +$GLOBALS['__l10n']["Assign Users"]="Assigner les utilisateurs"; +$GLOBALS['__l10n']["Author"]="Auteur"; +$GLOBALS['__l10n']["Author Item"]="Créer l'item"; +$GLOBALS['__l10n']["Authoring"]="Éditeur"; +$GLOBALS['__l10n']["Available Extensions"]="Extensions disponibles"; +$GLOBALS['__l10n']["Back to listing"]="Retour au référencement"; +$GLOBALS['__l10n']["Beta version"]="Version bêta"; +$GLOBALS['__l10n']["Browse folders:"]="Parcourir les dossiers:"; +$GLOBALS['__l10n']["Browse..."]="Naviguer..."; +$GLOBALS['__l10n']["Calendar"]="Calendrier"; +$GLOBALS['__l10n']["Cancel"]="Annuler"; +$GLOBALS['__l10n']["Cannot be edited"]="Ne peut être modifié"; +$GLOBALS['__l10n']["Change password"]="Changer le mot de passe"; +$GLOBALS['__l10n']["Change the password"]="Modifier le mot de passe"; +$GLOBALS['__l10n']["Check all"]="Cocher tout"; +$GLOBALS['__l10n']["Check All"]="Cocher Tout"; +$GLOBALS['__l10n']["Choose export format"]="Format d'export"; +$GLOBALS['__l10n']["Choose import format"]="Format d'import"; +$GLOBALS['__l10n']["class selected"]="classe sélectionnée"; +$GLOBALS['__l10n']["Column"]="Colonne"; +$GLOBALS['__l10n']["Combine a selection of items into tests."]="Combiner une sélection d'items en tests."; +$GLOBALS['__l10n']["Confirm"]="Confirmer"; +$GLOBALS['__l10n']["Connect to the TAO platform"]="Connexion à la plate-forme TAO"; +$GLOBALS['__l10n']["Continue"]="Continuer"; +$GLOBALS['__l10n']["Create"]="Créer"; +$GLOBALS['__l10n']["Create and design items and exercises."]="Concevoir des items et exercices."; +$GLOBALS['__l10n']["Create instance of "]="Créer une instance de "; +$GLOBALS['__l10n']["CSV"]="CSV"; +$GLOBALS['__l10n']["CSV Options"]="Options CSV"; +$GLOBALS['__l10n']["Current language"]="Langue courante"; +$GLOBALS['__l10n']["Data imported"]="Importation des données"; +$GLOBALS['__l10n']["Data imported successfully"]="Données importées avec succès."; +$GLOBALS['__l10n']["Data Language"]="Langue des données"; +$GLOBALS['__l10n']["Data language"]="Langue des données"; +$GLOBALS['__l10n']["Date"]="Date"; +$GLOBALS['__l10n']["Define the default values"]="Définir les valeurs par défaut"; +$GLOBALS['__l10n']["Delete"]="Supprimer"; +$GLOBALS['__l10n']["Deliveries"]="Passations"; +$GLOBALS['__l10n']["Deliveries library"]="Bibliothèque de passations"; +$GLOBALS['__l10n']["Demo Sandbox"]="Démonstration"; +$GLOBALS['__l10n']["Do you wish to install the following extension(s):\n%s?"]="Souhaitez-vous installer le(s) extension(s) suivante(s) :\n%s ?"; +$GLOBALS['__l10n']["does not match"]="Ne correspond pas"; +$GLOBALS['__l10n']["Don't set"]="Ne pas insérer"; +$GLOBALS['__l10n']["Download"]="Télécharger"; +$GLOBALS['__l10n']["Download this file"]="Télécharger ce fichier"; +$GLOBALS['__l10n']["Drag file here"]="Glisser le fichier ici"; +$GLOBALS['__l10n']["Drag files here"]="Glisser le fichier ici"; +$GLOBALS['__l10n']["Drop the files to upload"]="Choisissez des fichiers à envoyer"; +$GLOBALS['__l10n']["Duplicate"]="Dupliquer"; +$GLOBALS['__l10n']["Edit"]="Éditer"; +$GLOBALS['__l10n']["Edit a user"]="Éditer un utilisateur"; +$GLOBALS['__l10n']["Edit Instance"]="Modifier Instance"; +$GLOBALS['__l10n']["Edit subject"]="Modifier le participant"; +$GLOBALS['__l10n']["Element"]="Élément"; +$GLOBALS['__l10n']["Element deleted."]="Élément supprimé."; +$GLOBALS['__l10n']["Email"]="Email"; +$GLOBALS['__l10n']["Enter"]="Entrée"; +$GLOBALS['__l10n']["Error"]="Erreur"; +$GLOBALS['__l10n']["Error during file import"]="Erreur pendant l'import du fichier"; +$GLOBALS['__l10n']["Exclusive (OR)"]="Exclusif (OU)"; +$GLOBALS['__l10n']["Export"]="Exporter"; +$GLOBALS['__l10n']["Export "]="Export"; +$GLOBALS['__l10n']["Export Metadata as RDF/XML file"]="Expoter les métadonnées comme un fichier RDF/XML"; +$GLOBALS['__l10n']["Extension "]="L'extension "; +$GLOBALS['__l10n']["Extensions manager"]="Gestionnaire d'extensions"; +$GLOBALS['__l10n']["Field delimiter"]="Séparateur de champ"; +$GLOBALS['__l10n']["Field encloser"]="Clôture de champ"; +$GLOBALS['__l10n']["File"]="Fichier"; +$GLOBALS['__l10n']["File name"]="Nom de fichier"; +$GLOBALS['__l10n']["File Properties"]="Propriétés du fichier"; +$GLOBALS['__l10n']["file selected"]="Sélectionner le fichier"; +$GLOBALS['__l10n']["File Uploader"]="Téléchargeur de fichier"; +$GLOBALS['__l10n']["files selected"]="fichiers sélectionnés"; +$GLOBALS['__l10n']["Filter"]="Filtre"; +$GLOBALS['__l10n']["Filtering mode"]="Mode de filtrage"; +$GLOBALS['__l10n']["First Name"]="Prénom"; +$GLOBALS['__l10n']["First row column names"]="Noms de colonne en première ligne"; +$GLOBALS['__l10n']["Force Release"]="Forcer la publication"; +$GLOBALS['__l10n']["Go Back"]="Revenir"; +$GLOBALS['__l10n']["Height"]="Hauteur"; +$GLOBALS['__l10n']["Hide detailed report"]="Cacher le rapport détaillé"; +$GLOBALS['__l10n']["hours"]="heures"; +$GLOBALS['__l10n']["Import"]="Importer"; +$GLOBALS['__l10n']["Import "]="Import"; +$GLOBALS['__l10n']["Import Metadata from CSV file"]="Importer des méta-données à partir d'un fichier CSV"; +$GLOBALS['__l10n']["Import Metadata from RDF file"]="Importer des méta-données à partir d'un fichier RDF"; +$GLOBALS['__l10n']["Inclusive (AND)"]="Inclusif (ET)"; +$GLOBALS['__l10n']["Install"]="Installer"; +$GLOBALS['__l10n']["Installation done."]="Installation terminée."; +$GLOBALS['__l10n']["Installation..."]="Installation..."; +$GLOBALS['__l10n']["Installed Extensions"]="Extensions installées"; +$GLOBALS['__l10n']["Installing extension %s..."]="Installation de l'extension %s..."; +$GLOBALS['__l10n']["Instance saved"]="Instance enregistrée"; +$GLOBALS['__l10n']["Interface Language"]="Langue de l'interface"; +$GLOBALS['__l10n']["Interface language"]="Langue de l'interface"; +$GLOBALS['__l10n']["Invalid field length"]="La longueur du champ est invalide"; +$GLOBALS['__l10n']["Invalid file type!"]="Type de fichier invalide"; +$GLOBALS['__l10n']["Invalid login or password. Please try again."]="Identifiant ou mot de passe invalide. Veuillez réessayer."; +$GLOBALS['__l10n']["invalid regular expression"]="Expression régulière non valide"; +$GLOBALS['__l10n']["Items"]="Items"; +$GLOBALS['__l10n']["Items library"]="Banque d'items"; +$GLOBALS['__l10n']["Label"]="Libellé"; +$GLOBALS['__l10n']["Language"]="Langue"; +$GLOBALS['__l10n']["Last Name"]="Nom"; +$GLOBALS['__l10n']["less than a minute"]="Moins d'une minute"; +$GLOBALS['__l10n']["List"]="Liste"; +$GLOBALS['__l10n']["List - Multiple choice - Check box"]="Liste - Choix multiple - Case à cocher"; +$GLOBALS['__l10n']["List - Single choice - Drop down"]="Liste - Choix unique - Liste déroulante"; +$GLOBALS['__l10n']["List - Single choice - Radio button"]="Liste - Choix multiple - Bouton radio"; +$GLOBALS['__l10n']["Loaded"]="Chargé"; +$GLOBALS['__l10n']["Loaded at Startup"]="Chargé au Démarrage"; +$GLOBALS['__l10n']["Log in"]="Se connecter"; +$GLOBALS['__l10n']["Log Out"]="Se déconnecter"; +$GLOBALS['__l10n']["Login"]="Identifiant"; +$GLOBALS['__l10n']["Login available"]="Identifiant disponible"; +$GLOBALS['__l10n']["Manage data list"]="Gestion des listes"; +$GLOBALS['__l10n']["Manage items"]="Gestion des items"; +$GLOBALS['__l10n']["Manage roles"]="Gérer les rôles"; +$GLOBALS['__l10n']["Manage Roles and apply them to users."]="Gère des Rôles et les applique aux utilisateurs."; +$GLOBALS['__l10n']["Manage test takers"]="Gestion des participants"; +$GLOBALS['__l10n']["Manage tests"]="Gestion des tests"; +$GLOBALS['__l10n']["Manage users"]="Gérer les utilisateurs"; +$GLOBALS['__l10n']["Manage Versioned File"]="Gérer les fichiers versionnés"; +$GLOBALS['__l10n']["Map the properties to the CSV columns"]="Choisissez les propriétés relatives aux colonnes CSV"; +$GLOBALS['__l10n']["minutes"]="minutes"; +$GLOBALS['__l10n']["More"]="Plus"; +$GLOBALS['__l10n']["Move"]="Déplacer"; +$GLOBALS['__l10n']["Move to"]="Déplacer vers"; +$GLOBALS['__l10n']["Moving this element will replace the properties of the previous class by those of the destination class :"]="En bougeant cet élément, les propriétés de la classe précédente seront remplacées par ceux de la classe de destination :"; +$GLOBALS['__l10n']["Moving this element will replace the properties of the previous class by those of the destination class:"]="En bougeant cet élément, les propriétés de la classe précédente seront remplacées par celles de la classe de destination :"; +$GLOBALS['__l10n']["Multiple values delimiter"]="Délimiteur de valeurs multiples"; +$GLOBALS['__l10n']["must be numeric"]="Doit être numérique"; +$GLOBALS['__l10n']["My settings"]="Mes paramètres"; +$GLOBALS['__l10n']["My settings (%s)"]="Mes paramètres (%s)"; +$GLOBALS['__l10n']["Name"]="Nom"; +$GLOBALS['__l10n']["New class"]="Nouvelle classe"; +$GLOBALS['__l10n']["New delivery"]="Nouvelle passation"; +$GLOBALS['__l10n']["New password"]="Nouveau mot de passe"; +$GLOBALS['__l10n']["New role"]="Nouveau rôle"; +$GLOBALS['__l10n']["New test"]="Créer test"; +$GLOBALS['__l10n']["New test-taker"]="Créer participant"; +$GLOBALS['__l10n']["Next"]="Suivant"; +$GLOBALS['__l10n']["No"]="Non"; +$GLOBALS['__l10n']["No extensions available."]="Pas d'extension disponible."; +$GLOBALS['__l10n']["no file not found in this location"]="pas de fichier trouvé à cette endroit"; +$GLOBALS['__l10n']["No file selected"]="Pas de fichier sélectionné"; +$GLOBALS['__l10n']["No files"]="Aucun fichier"; +$GLOBALS['__l10n']["no label"]="sans étiquette"; +$GLOBALS['__l10n']["No Preview available"]="Aucun aperçu disponible"; +$GLOBALS['__l10n']["No preview available"]="Aucun aperçu disponible"; +$GLOBALS['__l10n']["No results found"]="Aucun résultat trouvé"; +$GLOBALS['__l10n']["Nothing imported"]="Aucune donnée n'a été importée"; +$GLOBALS['__l10n']["Nothing to install !"]="Rien à installer !"; +$GLOBALS['__l10n']["Number of elements"]="Nombre d'éléments"; +$GLOBALS['__l10n']["of"]="de"; +$GLOBALS['__l10n']["Ok"]="Ok"; +$GLOBALS['__l10n']["OK"]="Ok"; +$GLOBALS['__l10n']["Old Password"]="Ancien mot de passe"; +$GLOBALS['__l10n']["or"]="ou"; +$GLOBALS['__l10n']["Page"]="Page"; +$GLOBALS['__l10n']["Password"]="Mot de passe"; +$GLOBALS['__l10n']["Password changed"]="Mot de passé modifié"; +$GLOBALS['__l10n']["Passwords are not matching"]="Les mots de passe ne correspondent pas"; +$GLOBALS['__l10n']["Please confirm deletion"]="Veuillez confirmer la suppression."; +$GLOBALS['__l10n']["Please confirm property deletion!"]="Veuillez confirmer la suppression de la propriété"; +$GLOBALS['__l10n']["Please confirm this operation."]="Veuillez confirmer cette opération."; +$GLOBALS['__l10n']["Please confirm user deletion"]="Veuillez confirmer la suppression de l'utilisateur."; +$GLOBALS['__l10n']["Post install processing"]="Traitement après installation"; +$GLOBALS['__l10n']["Prepare, publish deliveries sessions."]="Préparer, publier des sessions de passations."; +$GLOBALS['__l10n']["Preparing installation..."]="Préparation de l'installation..."; +$GLOBALS['__l10n']["Preview"]="Aperçu "; +$GLOBALS['__l10n']["Previous"]="Précédent"; +$GLOBALS['__l10n']["Properties"]="Propriétés"; +$GLOBALS['__l10n']["RDF"]="RDF"; +$GLOBALS['__l10n']["Record and manage test takers."]="Enregistrer et gérer les participants."; +$GLOBALS['__l10n']["Release"]="Publication"; +$GLOBALS['__l10n']["Remove"]="Supprimer"; +$GLOBALS['__l10n']["Remove Message"]="Enlever ce message"; +$GLOBALS['__l10n']["Remove this file"]="Supprimer ce fichier"; +$GLOBALS['__l10n']["Rename"]="Renommer"; +$GLOBALS['__l10n']["Repeat new password"]="Répétition du nouveau mot de passe"; +$GLOBALS['__l10n']["required length"]="taille requise"; +$GLOBALS['__l10n']["Requires"]="Nécessite"; +$GLOBALS['__l10n']["Reset"]="Réinitialiser"; +$GLOBALS['__l10n']["Resource"]="Ressource"; +$GLOBALS['__l10n']["Resource not imported due to multiple super classes"]="La ressource n'a pas pu être importer a cause de la présence de plusieurs super-classes"; +$GLOBALS['__l10n']["Resource not imported due to multiple types"]="La ressource n'a pas pu être importer a cause de la présence de plusieurs types"; +$GLOBALS['__l10n']["Resource saved"]="Ressource enregistrée"; +$GLOBALS['__l10n']["Responsive mode"]="Mode réactif"; +$GLOBALS['__l10n']["Right click the tree to manage your lists"]="Utilisez le clic droit pour gérer vos listes"; +$GLOBALS['__l10n']["Role saved"]="Rôle enregistré"; +$GLOBALS['__l10n']["Roles"]="Rôles"; +$GLOBALS['__l10n']["Roles library"]="Bibliothèque de rôles"; +$GLOBALS['__l10n']["Save"]="Enregistrer"; +$GLOBALS['__l10n']["Scope"]="Etendue"; +$GLOBALS['__l10n']["Search"]="Rechercher"; +$GLOBALS['__l10n']["Search sub-classes"]="Chercher des sous-classes"; +$GLOBALS['__l10n']["seconds"]="secondes"; +$GLOBALS['__l10n']["Select"]="Choisir"; +$GLOBALS['__l10n']["select"]="choisir"; +$GLOBALS['__l10n']["Select a language"]="Sélectionner un langage"; +$GLOBALS['__l10n']["Select the element destination"]="Choisir l'élément de destination"; +$GLOBALS['__l10n']["Select this file"]="Sélectionner le fichier"; +$GLOBALS['__l10n']["selected"]="sélectionné"; +$GLOBALS['__l10n']["Selected file:"]="Fichier sélectionné :"; +$GLOBALS['__l10n']["Selection saved successfully"]="Sélection enregistrée avec succès"; +$GLOBALS['__l10n']["Settings"]="Réglages"; +$GLOBALS['__l10n']["Settings updated"]="Réglages mis à jour"; +$GLOBALS['__l10n']["Show detailed report"]="Montrer le détail du rapport"; +$GLOBALS['__l10n']["Simple Mode"]="Mode simple"; +$GLOBALS['__l10n']["Size"]="Taille"; +$GLOBALS['__l10n']["Success"]="Succès"; +$GLOBALS['__l10n']["Supported export formats"]="Formats d'export supportés"; +$GLOBALS['__l10n']["TAO Home"]="Menu principal TAO"; +$GLOBALS['__l10n']["TAO Login"]="Connexion à TAO"; +$GLOBALS['__l10n']["Test taker saved"]="Participant enregistré"; +$GLOBALS['__l10n']["Test takers"]="Participants"; +$GLOBALS['__l10n']["Test takers library"]="Participants"; +$GLOBALS['__l10n']["Test takers may be assigned to sets according to the relevant assessment context (Human resources management, education, edumetric monitoring, etc.)."]="Les participants peuvent être assignés à des ensembles selon le contexte d’évaluation (gestion des ressources humaines, éducation, contrôle d'édumétrie, etc.)."; +$GLOBALS['__l10n']["Test-takers"]="Participants"; +$GLOBALS['__l10n']["Tests"]="Tests"; +$GLOBALS['__l10n']["Tests library"]="Tests"; +$GLOBALS['__l10n']["Text - Long - Box"]="Texte - Long - Boîte"; +$GLOBALS['__l10n']["Text - Long - HTML editor"]="Texte - Long - Éditeur HTML"; +$GLOBALS['__l10n']["Text - Short - Field"]="Texte - Long - Champ"; +$GLOBALS['__l10n']["The column "]="La colonne "; +$GLOBALS['__l10n']["The lock has been released"]="Le verrou a été supprimé"; +$GLOBALS['__l10n']["The Test takers module allows to record and manage test takers."]="Le module Participants vous permet d'ajouter et de gérer les sujets des tests."; +$GLOBALS['__l10n']["The value of this field must be a valide date format, e.g. YYYY-MM-DD"]="La valeur de ce champs doit être formatée telle une date valide, ex. AAAA-MM-JJ"; +$GLOBALS['__l10n']["The value of this field must be an integer"]="La valeur de ce champ doit être un nombre entier."; +$GLOBALS['__l10n']["The value of this field must be numeric"]="La valeur de ce champ doit être numérique"; +$GLOBALS['__l10n']["This field is required"]="Ce champ est requis."; +$GLOBALS['__l10n']["This field is too long"]="Ce champ est trop long."; +$GLOBALS['__l10n']["This field is too short"]="Ce champ est trop court."; +$GLOBALS['__l10n']["this is required"]="ceci est obligatoire"; +$GLOBALS['__l10n']["This Login is already in use"]="Cet identifiant est déjà utilisé"; +$GLOBALS['__l10n']["This resource is locked"]="La ressource est verrouillée"; +$GLOBALS['__l10n']["This role is still given to one or more users. Please remove the role to these users first."]="Ce rôle est encore affecté à un ou plusieurs utilisateurs. Veuillez d'abord retirer le rôle pour ce(s) utilisateur(s)."; +$GLOBALS['__l10n']["Time zone"]="Fuseau horaire"; +$GLOBALS['__l10n']["to translate"]="Non traduite"; +$GLOBALS['__l10n']["Translate"]="Traduire"; +$GLOBALS['__l10n']["Translate to"]="Traduire en"; +$GLOBALS['__l10n']["Translation parameters"]="Paramètres de la traductions"; +$GLOBALS['__l10n']["Translation saved"]="Traduction enregistrée"; +$GLOBALS['__l10n']["Type"]="Type"; +$GLOBALS['__l10n']["Unable to change passwords in demo mode"]="Impossible de changer les mots de passe en mode démonstration"; +$GLOBALS['__l10n']["Unable to delete the selected resource"]="Autoriser la suppression de la ressource sélectionnée"; +$GLOBALS['__l10n']["Unable to release the lock"]="Autoriser la publication de la serrure"; +$GLOBALS['__l10n']["Unable to upload file"]="Autoriser le téléchargement du fichier"; +$GLOBALS['__l10n']["Uncheck all"]="Décocher tout"; +$GLOBALS['__l10n']["Uncheck All"]="Décocher tout"; +$GLOBALS['__l10n']["Undo"]="Annuler une action"; +$GLOBALS['__l10n']["unknown"]="inconnu"; +$GLOBALS['__l10n']["Unknown Error"]="Erreur Inconnue"; +$GLOBALS['__l10n']["Upload"]="Téléverser"; +$GLOBALS['__l10n']["Upload into:"]="Envoyer vers :"; +$GLOBALS['__l10n']["Use default value"]="Utiliser la valeur par défaut"; +$GLOBALS['__l10n']["User"]="Utilisateur"; +$GLOBALS['__l10n']["User added"]="Utilisateur ajouté"; +$GLOBALS['__l10n']["User deleted successfully"]="Utilisateur supprimé avec succès."; +$GLOBALS['__l10n']["User saved"]="Utilisateur enregistré"; +$GLOBALS['__l10n']["User Settings"]="Paramètres Utilisateur"; +$GLOBALS['__l10n']["Users"]="Utilisateurs"; +$GLOBALS['__l10n']["Version"]="Version"; +$GLOBALS['__l10n']["Width"]="Largeur"; +$GLOBALS['__l10n']["Yes"]="Oui"; +$GLOBALS['__l10n']["You are not authorised to remove this lock"]="Vous n'êtes pas autorisé à supprimer cette fermeture"; +$GLOBALS['__l10n']["You cannot delete the root node"]="Vous ne pouvez pas supprimer le noeud de la racine"; +$GLOBALS['__l10n']["You currently have no access to the platform"]="Vous n'avez actuellement pas accès à la plate-forme"; +$GLOBALS['__l10n']["You must activate JavaScript in your browser to run this application."]="JavaScript doit être activé dans votre navigateur pour lancer cette applcation"; + +?> \ No newline at end of file diff --git a/locales/fr-CA/messages.po b/locales/fr-CA/messages.po new file mode 100644 index 00000000..09739fa9 --- /dev/null +++ b/locales/fr-CA/messages.po @@ -0,0 +1,81 @@ +msgid "" +msgstr "" +"Project-Id-Version: TAO 3.3.0-sprint72-½\n" +"PO-Revision-Date: 2018-03-21T13:56:57\n" +"Last-Translator: TAO Translation Team \n" +"MIME-Version: 1.0\n" +"Language: fr-CA\n" +"sourceLanguage: en-US\n" +"targetLanguage: fr-CA\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Basepath: ../../\n" +"X-Poedit-KeywordsList: __\n" +"X-Poedit-SearchPath-0: .\n" + +#, tao-public +msgid "Delete" +msgstr "Supprimer" + +msgid "Edit subject" +msgstr "Modifier le participant" + +#, tao-public +msgid "Export" +msgstr "Exporter" + +#, tao-public +msgid "Import" +msgstr "Importer" + +msgid "Last updated on %2s" +msgstr "" + +#, tao-public +msgid "Manage Schema" +msgstr "" + +#, tao-public +msgid "Manage test takers" +msgstr "Gestion des participants" + +#, tao-public +msgid "Move" +msgstr "Déplacer" + +#, tao-public +msgid "New class" +msgstr "Nouvelle classe" + +#, tao-public +msgid "New test-taker" +msgstr "Créer participant" + +#, tao-public +msgid "Properties" +msgstr "Propriétés" + +#, tao-public +msgid "Record and manage test takers." +msgstr "Enregistrer et gérer les participants." + +msgid "Test taker saved" +msgstr "Participant enregistré" + +msgid "Test takers" +msgstr "Participants" + +#, tao-public +msgid "Test takers library" +msgstr "Participants" + +msgid "Test takers may be assigned to sets according to the relevant assessment context (Human resources management, education, edumetric monitoring, etc.)." +msgstr "Les participants peuvent être assignés à des ensembles selon le contexte d’évaluation (gestion des ressources humaines, éducation, contrôle d'édumétrie, etc.)." + +#, tao-public +msgid "Test-takers" +msgstr "Participants" + +msgid "The Test takers module allows to record and manage test takers." +msgstr "Le module Participants vous permet d'ajouter et de gérer les sujets des tests." + diff --git a/locales/fr-CA/messages_po.js b/locales/fr-CA/messages_po.js new file mode 100644 index 00000000..d8836d4f --- /dev/null +++ b/locales/fr-CA/messages_po.js @@ -0,0 +1 @@ +{" and ":" et "," has been deleted successfully":" a \u00e9t\u00e9 supprim\u00e9 avec succ\u00e8s."," has been installed":" a \u00e9t\u00e9 install\u00e9e."," next":" suivant"," requires a subgrid adapter":" requiert un adaptateur de sous-grille","%d day":"%d jour","%d days":"%d jours","%h hour":"%h heure","%h hours":"%h heures","%i minute":"%i minute(s)","%i minutes":"%i\u00a0minute(s)","%m month":"%m mois","%m months":"%m mois","%s (%s kb)":"%s (%s kb)","%s Class saved":"%s Classe sauvegard\u00e9e","%s could not be released":"%s n\u0027a pu \u00eatre lib\u00e9r\u00e9","%s extension(s) to install.":"%s extension(s) \u00e0 installer.","%s has been deleted":"%s a \u00e9t\u00e9 supprim\u00e9","%s has been released":"%s a \u00e9t\u00e9 lib\u00e9r\u00e9","%s is of a type that cannot be published":"%s est dans un format qui n\u0027a pas pu \u00eatre publi\u00e9","%s Locked":"%s verrouill\u00e9","%s\u0022 is not a valid index identifier. It must start with a letter and contain letters, numbers or underscores only":"%s n\u0027est pas un identifiant d\u0027index valide. Celui-ci devrait d\u00e9buter par un caract\u00e8re alphab\u00e9tique et contenir soit des caract\u00e8res, des nombres ou des barre de soulign\u00e9 uniquement. ","%y year":"%y ann\u00e9e","%y years":"%y ann\u00e9es","(empty)":"(vide)","... reloading page.":"... rechargement de la page.","Filters<\/del>":"Filtres<\/del>","Options<\/del>":"Options<\/del>","> Extension %s succesfully installed.":"> Extension %s install\u00e9e avec succ\u00e8s.","> Installation done.":"> Installation termin\u00e9e.","A fatal error occured during the installation process.":"Une erreur fatale s\u0027est produite pendant l\u0027installation.","A message with further instructions has been sent to your email address: %s":"Un message avec des instructions a \u00e9t\u00e9 envoy\u00e9e vers votre adresse courriel: %s","Access Denied":"Acc\u00e8s refus\u00e9","Access denied. Please renew your authentication!":"Acc\u00e8s refus\u00e9. Veuillez renouveler votre authentification !","Actions":"Actions","Add":"Ajouter","Add a CSV file":"Ajouter un fichier CSV","Add a user":"Ajouter un utilisateur","Add an RDF\/XML file":"Ajouter un fichier RDF\/XML","Add file(s)":"Ajouter un ou des fichier(s)","Add property":"Ajouter une propri\u00e9t\u00e9","Advanced Mode":"Mode avanc\u00e9","all":"tout","All data will be removed in %s":"Toutes les donn\u00e9es vont \u00eatre supprim\u00e9es dans %s","All fields are required":"Tous les champs sont requis","All rights reserved.":"Tous droits r\u00e9serv\u00e9s.","Alpha version":"Version alpha","An email has been sent":"Un courriel vous a \u00e9t\u00e9 envoy\u00e9","Are you sure to delete the versioned resource?\nThe history will be lost as well.":"\u00cates-vous s\u00fbr de vouloir supprimer la ressource versionn\u00e9e ?\nL\u0027historique sera \u00e9galement perdu.","Are you sure you want to delete it?":"\u00cates-vous s\u00fbr(e) de vouloir le supprimer ?","Assign User to role":"Assigner l\u0027utilisateur \u00e0 un r\u00f4le","Assign Users":"Assigner les utilisateurs","Author":"Auteur","Author Item":"Cr\u00e9er l\u0027item","Authoring":"\u00c9diteur","Available Extensions":"Extensions disponibles","Back to listing":"Retour au r\u00e9f\u00e9rencement","Beta version":"Version b\u00eata","Browse folders:":"Parcourir les dossiers:","Browse...":"Naviguer...","Calendar":"Calendrier","Cancel":"Annuler","Cannot be edited":"Ne peut \u00eatre modifi\u00e9","Change password":"Changer le mot de passe","Change the password":"Modifier le mot de passe","Check all":"Cocher tout","Check All":"Cocher Tout","Choose export format":"Format d\u0027export","Choose import format":"Format d\u0027import","class selected":"classe s\u00e9lectionn\u00e9e","Column":"Colonne","Combine a selection of items into tests.":"Combiner une s\u00e9lection d\u0027items en tests.","Confirm":"Confirmer","Connect to the TAO platform":"Connexion \u00e0 la plate-forme TAO","Continue":"Continuer","Create":"Cr\u00e9er","Create and design items and exercises.":"Concevoir des items et exercices.","Create instance of ":"Cr\u00e9er une instance de ","CSV":"CSV","CSV Options":"Options CSV","Current language":"Langue courante","Data imported":"Importation des donn\u00e9es","Data imported successfully":"Donn\u00e9es import\u00e9es avec succ\u00e8s.","Data Language":"Langue des donn\u00e9es","Data language":"Langue des donn\u00e9es","Date":"Date","Define the default values":"D\u00e9finir les valeurs par d\u00e9faut","Delete":"Supprimer","Deliveries":"Passations","Deliveries library":"Biblioth\u00e8que de passations","Demo Sandbox":"D\u00e9monstration","Do you wish to install the following extension(s):\n%s?":"Souhaitez-vous installer le(s) extension(s) suivante(s) :\n%s ?","does not match":"Ne correspond pas","Don\u0027t set":"Ne pas ins\u00e9rer","Download":"T\u00e9l\u00e9charger","Download this file":"T\u00e9l\u00e9charger ce fichier","Drag file here":"Glisser le fichier ici","Drag files here":"Glisser le fichier ici","Drop the files to upload":"Choisissez des fichiers \u00e0 envoyer","Duplicate":"Dupliquer","Edit":"\u00c9diter","Edit a user":"\u00c9diter un utilisateur","Edit Instance":"Modifier Instance","Edit subject":"Modifier le participant","Element":"\u00c9l\u00e9ment","Element deleted.":"\u00c9l\u00e9ment supprim\u00e9.","Email":"Email","Enter":"Entr\u00e9e","Error":"Erreur","Error during file import":"Erreur pendant l\u0027import du fichier","Exclusive (OR)":"Exclusif (OU)","Export":"Exporter","Export ":"Export","Export Metadata as RDF\/XML file":"Expoter les m\u00e9tadonn\u00e9es comme un fichier RDF\/XML","Extension ":"L\u0027extension ","Extensions manager":"Gestionnaire d\u0027extensions","Field delimiter":"S\u00e9parateur de champ","Field encloser":"Cl\u00f4ture de champ","File":"Fichier","File name":"Nom de fichier","File Properties":"Propri\u00e9t\u00e9s du fichier","file selected":"S\u00e9lectionner le fichier","File Uploader":"T\u00e9l\u00e9chargeur de fichier","files selected":"fichiers s\u00e9lectionn\u00e9s","Filter":"Filtre","Filtering mode":"Mode de filtrage","First Name":"Pr\u00e9nom","First row column names":"Noms de colonne en premi\u00e8re ligne","Force Release":"Forcer la publication","Go Back":"Revenir","Height":"Hauteur","Hide detailed report":"Cacher le rapport d\u00e9taill\u00e9","hours":"heures","Import":"Importer","Import ":"Import","Import Metadata from CSV file":"Importer des m\u00e9ta-donn\u00e9es \u00e0 partir d\u0027un fichier CSV","Import Metadata from RDF file":"Importer des m\u00e9ta-donn\u00e9es \u00e0 partir d\u0027un fichier RDF","Inclusive (AND)":"Inclusif (ET)","Install":"Installer","Installation done.":"Installation termin\u00e9e.","Installation...":"Installation...","Installed Extensions":"Extensions install\u00e9es","Installing extension %s...":"Installation de l\u0027extension %s...","Instance saved":"Instance enregistr\u00e9e","Interface Language":"Langue de l\u0027interface","Interface language":"Langue de l\u0027interface","Invalid field length":"La longueur du champ est invalide","Invalid file type!":"Type de fichier invalide","Invalid login or password. Please try again.":"Identifiant ou mot de passe invalide. Veuillez r\u00e9essayer.","invalid regular expression":"Expression r\u00e9guli\u00e8re non valide","Items":"Items","Items library":"Banque d\u0027items","Label":"Libell\u00e9","Language":"Langue","Last Name":"Nom","less than a minute":"Moins d\u0027une minute","List":"Liste","List - Multiple choice - Check box":"Liste - Choix multiple - Case \u00e0 cocher","List - Single choice - Drop down":"Liste - Choix unique - Liste d\u00e9roulante","List - Single choice - Radio button":"Liste - Choix multiple - Bouton radio","Loaded":"Charg\u00e9","Loaded at Startup":"Charg\u00e9 au D\u00e9marrage","Log in":"Se connecter","Log Out":"Se d\u00e9connecter","Login":"Identifiant","Login available":"Identifiant disponible","Manage data list":"Gestion des listes","Manage items":"Gestion des items","Manage roles":"G\u00e9rer les r\u00f4les","Manage Roles and apply them to users.":"G\u00e8re des R\u00f4les et les applique aux utilisateurs.","Manage test takers":"Gestion des participants","Manage tests":"Gestion des tests","Manage users":"G\u00e9rer les utilisateurs","Manage Versioned File":"G\u00e9rer les fichiers versionn\u00e9s","Map the properties to the CSV columns":"Choisissez les propri\u00e9t\u00e9s relatives aux colonnes CSV","minutes":"minutes","More":"Plus","Move":"D\u00e9placer","Move to":"D\u00e9placer vers","Moving this element will replace the properties of the previous class by those of the destination class :":"En bougeant cet \u00e9l\u00e9ment, les propri\u00e9t\u00e9s de la classe pr\u00e9c\u00e9dente seront remplac\u00e9es par ceux de la classe de destination :","Moving this element will replace the properties of the previous class by those of the destination class:":"En bougeant cet \u00e9l\u00e9ment, les propri\u00e9t\u00e9s de la classe pr\u00e9c\u00e9dente seront remplac\u00e9es par celles de la classe de destination :","Multiple values delimiter":"D\u00e9limiteur de valeurs multiples","must be numeric":"Doit \u00eatre num\u00e9rique","My settings":"Mes param\u00e8tres","My settings (%s)":"Mes param\u00e8tres (%s)","Name":"Nom","New class":"Nouvelle classe","New delivery":"Nouvelle passation","New password":"Nouveau mot de passe","New role":"Nouveau r\u00f4le","New test":"Cr\u00e9er test","New test-taker":"Cr\u00e9er participant","Next":"Suivant","No":"Non","No extensions available.":"Pas d\u0027extension disponible.","no file not found in this location":"pas de fichier trouv\u00e9 \u00e0 cette endroit","No file selected":"Pas de fichier s\u00e9lectionn\u00e9","No files":"Aucun fichier","no label":"sans \u00e9tiquette","No Preview available":"Aucun aper\u00e7u disponible","No preview available":"Aucun aper\u00e7u disponible","No results found":"Aucun r\u00e9sultat trouv\u00e9","Nothing imported":"Aucune donn\u00e9e n\u0027a \u00e9t\u00e9 import\u00e9e","Nothing to install !":"Rien \u00e0 installer !","Number of elements":"Nombre d\u0027\u00e9l\u00e9ments","of":"de","Ok":"Ok","OK":"Ok","Old Password":"Ancien mot de passe","or":"ou","Page":"Page","Password":"Mot de passe","Password changed":"Mot de pass\u00e9 modifi\u00e9","Passwords are not matching":"Les mots de passe ne correspondent pas","Please confirm deletion":"Veuillez confirmer la suppression.","Please confirm property deletion!":"Veuillez confirmer la suppression de la propri\u00e9t\u00e9","Please confirm this operation.":"Veuillez confirmer cette op\u00e9ration.","Please confirm user deletion":"Veuillez confirmer la suppression de l\u0027utilisateur.","Post install processing":"Traitement apr\u00e8s installation","Prepare, publish deliveries sessions.":"Pr\u00e9parer, publier des sessions de passations.","Preparing installation...":"Pr\u00e9paration de l\u0027installation...","Preview":"Aper\u00e7u ","Previous":"Pr\u00e9c\u00e9dent","Properties":"Propri\u00e9t\u00e9s","RDF":"RDF","Record and manage test takers.":"Enregistrer et g\u00e9rer les participants.","Release":"Publication","Remove":"Supprimer","Remove Message":"Enlever ce message","Remove this file":"Supprimer ce fichier","Rename":"Renommer","Repeat new password":"R\u00e9p\u00e9tition du nouveau mot de passe","required length":"taille requise","Requires":"N\u00e9cessite","Reset":"R\u00e9initialiser","Resource":"Ressource","Resource not imported due to multiple super classes":"La ressource n\u0027a pas pu \u00eatre importer a cause de la pr\u00e9sence de plusieurs super-classes","Resource not imported due to multiple types":"La ressource n\u0027a pas pu \u00eatre importer a cause de la pr\u00e9sence de plusieurs types","Resource saved":"Ressource enregistr\u00e9e","Responsive mode":"Mode r\u00e9actif","Right click the tree to manage your lists":"Utilisez le clic droit pour g\u00e9rer vos listes","Role saved":"R\u00f4le enregistr\u00e9","Roles":"R\u00f4les","Roles library":"Biblioth\u00e8que de r\u00f4les","Save":"Enregistrer","Scope":"Etendue","Search":"Rechercher","Search sub-classes":"Chercher des sous-classes","seconds":"secondes","Select":"Choisir","select":"choisir","Select a language":"S\u00e9lectionner un langage","Select the element destination":"Choisir l\u0027\u00e9l\u00e9ment de destination","Select this file":"S\u00e9lectionner le fichier","selected":"s\u00e9lectionn\u00e9","Selected file:":"Fichier s\u00e9lectionn\u00e9 :","Selection saved successfully":"S\u00e9lection enregistr\u00e9e avec succ\u00e8s","Settings":"R\u00e9glages","Settings updated":"R\u00e9glages mis \u00e0 jour","Show detailed report":"Montrer le d\u00e9tail du rapport","Simple Mode":"Mode simple","Size":"Taille","Success":"Succ\u00e8s","Supported export formats":"Formats d\u0027export support\u00e9s","TAO Home":"Menu principal TAO","TAO Login":"Connexion \u00e0 TAO","Test taker saved":"Participant enregistr\u00e9","Test takers":"Participants","Test takers library":"Participants","Test takers may be assigned to sets according to the relevant assessment context (Human resources management, education, edumetric monitoring, etc.).":"Les participants peuvent \u00eatre assign\u00e9s \u00e0 des ensembles selon le contexte d\u2019\u00e9valuation (gestion des ressources humaines, \u00e9ducation, contr\u00f4le d\u0027\u00e9dum\u00e9trie, etc.).","Test-takers":"Participants","Tests":"Tests","Tests library":"Tests","Text - Long - Box":"Texte - Long - Bo\u00eete","Text - Long - HTML editor":"Texte - Long - \u00c9diteur HTML","Text - Short - Field":"Texte - Long - Champ","The column ":"La colonne ","The lock has been released":"Le verrou a \u00e9t\u00e9 supprim\u00e9","The Test takers module allows to record and manage test takers.":"Le module Participants<\/i> vous permet d\u0027ajouter et de g\u00e9rer les sujets des tests.","The value of this field must be a valide date format, e.g. YYYY-MM-DD":"La valeur de ce champs doit \u00eatre format\u00e9e telle une date valide, ex. AAAA-MM-JJ","The value of this field must be an integer":"La valeur de ce champ doit \u00eatre un nombre entier.","The value of this field must be numeric":"La valeur de ce champ doit \u00eatre num\u00e9rique","This field is required":"Ce champ est requis.","This field is too long":"Ce champ est trop long.","This field is too short":"Ce champ est trop court.","this is required":"ceci est obligatoire","This Login is already in use":"Cet identifiant est d\u00e9j\u00e0 utilis\u00e9","This resource is locked":"La ressource est verrouill\u00e9e","This role is still given to one or more users. Please remove the role to these users first.":"Ce r\u00f4le est encore affect\u00e9 \u00e0 un ou plusieurs utilisateurs. Veuillez d\u0027abord retirer le r\u00f4le pour ce(s) utilisateur(s).","Time zone":"Fuseau horaire","to translate":"Non traduite","Translate":"Traduire","Translate to":"Traduire en","Translation parameters":"Param\u00e8tres de la traductions","Translation saved":"Traduction enregistr\u00e9e","Type":"Type","Unable to change passwords in demo mode":"Impossible de changer les mots de passe en mode d\u00e9monstration","Unable to delete the selected resource":"Autoriser la suppression de la ressource s\u00e9lectionn\u00e9e","Unable to release the lock":"Autoriser la publication de la serrure","Unable to upload file":"Autoriser le t\u00e9l\u00e9chargement du fichier","Uncheck all":"D\u00e9cocher tout","Uncheck All":"D\u00e9cocher tout","Undo":"Annuler une action","unknown":"inconnu","Unknown Error":"Erreur Inconnue","Upload":"T\u00e9l\u00e9verser","Upload into:":"Envoyer vers\u00a0:","Use default value":"Utiliser la valeur par d\u00e9faut","User":"Utilisateur","User added":"Utilisateur ajout\u00e9","User deleted successfully":"Utilisateur supprim\u00e9 avec succ\u00e8s.","User saved":"Utilisateur enregistr\u00e9","User Settings":"Param\u00e8tres Utilisateur","Users":"Utilisateurs","Version":"Version","Width":"Largeur","Yes":"Oui","You are not authorised to remove this lock":"Vous n\u0027\u00eates pas autoris\u00e9 \u00e0 supprimer cette fermeture","You cannot delete the root node":"Vous ne pouvez pas supprimer le noeud de la racine","You currently have no access to the platform":"Vous n\u0027avez actuellement pas acc\u00e8s \u00e0 la plate-forme","You must activate JavaScript in your browser to run this application.":"JavaScript doit \u00eatre activ\u00e9 dans votre navigateur pour lancer cette applcation"} \ No newline at end of file diff --git a/locales/fr-CA/taosubject.rdf b/locales/fr-CA/taosubject.rdf new file mode 100644 index 00000000..7aeb23e6 --- /dev/null +++ b/locales/fr-CA/taosubject.rdf @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + diff --git a/locales/fr-CA/taosubject.rdf.po b/locales/fr-CA/taosubject.rdf.po new file mode 100644 index 00000000..3d386c83 --- /dev/null +++ b/locales/fr-CA/taosubject.rdf.po @@ -0,0 +1,32 @@ +msgid "" +msgstr "" +"Project-Id-Version: TAO 3.3.0-sprint72-½\n" +"PO-Revision-Date: 2018-03-21T13:56:57\n" +"Last-Translator: TAO Translation Team \n" +"MIME-Version: 1.0\n" +"Language: fr-CA\n" +"sourceLanguage: en-US\n" +"targetLanguage: fr-CA\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +# http://www.tao.lu/Ontologies/TAOSubject.rdf#Subject +msgctxt "http://www.w3.org/2000/01/rdf-schema#label" +msgid "Test-taker" +msgstr "Participants" + +# http://www.tao.lu/Ontologies/TAOSubject.rdf#Subject +msgctxt "http://www.w3.org/2000/01/rdf-schema#comment" +msgid "The Test-taker class" +msgstr "le groupe de participants" + +# http://www.tao.lu/Ontologies/TAOSubject.rdf#SubjectsManagerRole +msgctxt "http://www.w3.org/2000/01/rdf-schema#label" +msgid "Test Takers Manager" +msgstr "" + +# http://www.tao.lu/Ontologies/TAOSubject.rdf#SubjectsManagerRole +msgctxt "http://www.w3.org/2000/01/rdf-schema#comment" +msgid "The Test Takers Manager Role" +msgstr "" + diff --git a/manifest.php b/manifest.php index 8fba3c50..0de2d306 100755 --- a/manifest.php +++ b/manifest.php @@ -33,7 +33,7 @@ 'label' => 'Test-taker core extension', 'description' => 'TAO TestTaker extension', 'license' => 'GPL-2.0', - 'version' => '3.4.0', + 'version' => '3.6.0', 'author' => 'Open Assessment Technologies, CRP Henri Tudor', 'requires' => array( 'taoBackOffice' => '>=1.3.0' @@ -44,7 +44,11 @@ 'install' => array( 'rdf' => array( dirname(__FILE__). '/models/ontology/taosubject.rdf' - ) + ), + 'php' => [ + \oat\taoTestTaker\scripts\install\SetupConfig::class, + ] + ), 'update' => "oat\\taoTestTaker\\scripts\\update\\Updater", 'managementRole' => 'http://www.tao.lu/Ontologies/TAOSubject.rdf#SubjectsManagerRole', diff --git a/models/CsvImporter.php b/models/CsvImporter.php index ff1827ee..ab74323d 100644 --- a/models/CsvImporter.php +++ b/models/CsvImporter.php @@ -19,6 +19,7 @@ * */ namespace oat\taoTestTaker\models; +use oat\oatbox\service\ServiceManager; use oat\tao\model\TaoOntology; use oat\generis\model\GenerisRdf; @@ -58,22 +59,34 @@ protected function getStaticData() return array( GenerisRdf::PROPERTY_USER_DEFLG => $lang, GenerisRdf::PROPERTY_USER_TIMEZONE => TIME_ZONE, - GenerisRdf::PROPERTY_USER_ROLES => TaoOntology::PROPERTY_INSTANCE_ROLE_DELIVERY + GenerisRdf::PROPERTY_USER_ROLES => TaoOntology::PROPERTY_INSTANCE_ROLE_DELIVERY, ); } /** * (non-PHPdoc) * @see tao_models_classes_import_CsvImporter::getAdditionAdapterOptions() + * @throws \common_ext_ExtensionException */ protected function getAdditionAdapterOptions() { - $returnValue = array( - 'callbacks' => array( - '*' => array('trim'), - GenerisRdf::PROPERTY_USER_PASSWORD => array('oat\taoTestTaker\models\CsvImporter::taoSubjectsPasswordEncode') - ) - ); + /** @var \common_ext_ExtensionsManager $extManager */ + $extManager = ServiceManager::getServiceManager()->get(\common_ext_ExtensionsManager::SERVICE_ID); + $taoTestTaker = $extManager->getExtensionById('taoTestTaker'); + $config = $taoTestTaker->getConfig('csvImporterCallbacks'); + + if (empty($config['callbacks'])){ + $returnValue = array( + 'callbacks' => array( + '*' => array('trim'), + GenerisRdf::PROPERTY_USER_PASSWORD => array('oat\taoTestTaker\models\CsvImporter::taoSubjectsPasswordEncode') + ) + ); + } else { + $returnValue = array( + 'callbacks' => $config['callbacks'] + ); + } return $returnValue; } diff --git a/models/TestTakerSavePasswordInMemory.php b/models/TestTakerSavePasswordInMemory.php new file mode 100644 index 00000000..613d7a61 --- /dev/null +++ b/models/TestTakerSavePasswordInMemory.php @@ -0,0 +1,52 @@ +testTakerUri = $testTakerUri; + + $this->properties = $properties; } /** @@ -56,7 +62,15 @@ public function getName() function jsonSerialize() { return [ - 'testTakerUri' => $this->testTakerUri + 'testTakerUri' => $this->testTakerUri, ]; } + + /** + * @return array + */ + public function getProperties() + { + return $this->properties; + } } diff --git a/models/events/TestTakerUpdatedEvent.php b/models/events/TestTakerUpdatedEvent.php index f0d7757d..6d5dd4eb 100644 --- a/models/events/TestTakerUpdatedEvent.php +++ b/models/events/TestTakerUpdatedEvent.php @@ -27,7 +27,7 @@ */ class TestTakerUpdatedEvent extends AbstractTestTakerEvent { - private $properties; + protected $properties; /** * TestTakerUpdatedEvent constructor. diff --git a/scripts/install/SetupConfig.php b/scripts/install/SetupConfig.php new file mode 100644 index 00000000..abec78a4 --- /dev/null +++ b/scripts/install/SetupConfig.php @@ -0,0 +1,48 @@ +getServiceLocator()->get(\common_ext_ExtensionsManager::SERVICE_ID); + $taoTestTaker = $extManager->getExtensionById('taoTestTaker'); + + $taoTestTaker->setConfig('csvImporterCallbacks', [ + 'callbacks' => array( + '*' => array('trim'), + GenerisRdf::PROPERTY_USER_PASSWORD => array('oat\taoTestTaker\models\CsvImporter::taoSubjectsPasswordEncode') + ), + 'use_properties_for_event' => false + ]); + } +} \ No newline at end of file diff --git a/scripts/update/Updater.php b/scripts/update/Updater.php index 5073722b..22b2fda7 100644 --- a/scripts/update/Updater.php +++ b/scripts/update/Updater.php @@ -21,6 +21,7 @@ namespace oat\taoTestTaker\scripts\update; +use oat\generis\model\GenerisRdf; use oat\tao\model\accessControl\func\AclProxy; use oat\tao\model\accessControl\func\AccessRule; use oat\tao\model\user\TaoRoles; @@ -35,6 +36,7 @@ class Updater extends \common_ext_ExtensionUpdater * @param $initialVersion * @return string $versionUpdatedTo * @internal param string $currentVersion + * @throws \common_ext_ExtensionException */ public function update($initialVersion) { @@ -45,5 +47,24 @@ public function update($initialVersion) $this->setVersion('3.0.1'); } $this->skip('3.0.1', '3.4.0'); + + if ($this->isVersion('3.4.0')) { + + /** @var \common_ext_ExtensionsManager $extManager */ + $extManager = $this->getServiceManager()->get(\common_ext_ExtensionsManager::SERVICE_ID); + $taoTestTaker = $extManager->getExtensionById('taoTestTaker'); + + $taoTestTaker->setConfig('csvImporterCallbacks', [ + 'callbacks' => array( + '*' => array('trim'), + GenerisRdf::PROPERTY_USER_PASSWORD => array('oat\taoTestTaker\models\CsvImporter::taoSubjectsPasswordEncode') + ), + 'use_properties_for_event' => false + ]); + + $this->setVersion('3.5.0'); + } + + $this->skip('3.5.0', '3.6.0'); } }