diff --git a/.hgtags b/.hgtags index 9fe36b57134d43d876a2cb395cacf339c2430077..aef786998adcc15d175e5be8608739f42f9569e4 100644 --- a/.hgtags +++ b/.hgtags @@ -219,3 +219,4 @@ e4c7003b290148810092848bc73bcec4e61da7be OpenOLAT 12.4.0 f55676080d2436df8078a8a0f1f6fb1afbdbe58c OpenOLAT 12.4.1 0810e24414f8cbb68dd6914297d883faf9527469 OpenOLAT 12.4.2 8454f5e2b65117860a18899639a406c07e9b70e2 OpenOLAT 12.4.3a +0f6842244daa90737563b7ebb287117c02138b0a OpenOLAT 12.5.0 diff --git a/src/main/java/org/olat/admin/security/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/admin/security/_i18n/LocalStrings_fr.properties index 761ebe5d1cd7c61a040edf84a5e15a404ddf0c0b..b9cec41b9435b92b67f57c689d7125c798c6fcab 100644 --- a/src/main/java/org/olat/admin/security/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/admin/security/_i18n/LocalStrings_fr.properties @@ -1,7 +1,8 @@ -#Mon Apr 16 21:44:19 CEST 2018 +#Thu May 31 16:24:13 CEST 2018 admin.menu.title=S\u00E9curit\u00E9 admin.menu.title.alt=Modifier les param\u00E8tres de s\u00E9curit\u00E9 sec.content.security.policy=Content Security Policy (CSP) +sec.content.security.policy.report.only=Rapport seulement sec.content.type.options=Emp\u00E9cher le butineur de deviner les scripts et styles par en-t\u00EAte HTTP sec.csp.connect.src=connect-src sec.csp.default.src=default-src @@ -24,3 +25,5 @@ sec.top.frame.explanation=En raison d'incompatibilit\u00E9s avec certains compos sec.topframe=Emp\u00EAcher l'int\u00E9gration dans les cadres/frames sec.wiki=Bloquer la resource de type wiki sec.xframe.sameorigin=Interdire l'encadrant dans une frame avec l'en-t\u00EAte "X-FRAME-OPTIONS\=SAMEDOMAIN" +security.configuration=Configuration +security.csp.log=Log "content security policy" diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_en.properties index 6ec5bfaecbe0c24fd247f4088dd272228b808f9b..02d8a42efb2cc31ebae5546a27601115b948c524 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_en.properties @@ -152,10 +152,10 @@ table.header.action=Action table.header.vcard=Visiting card table.identity.action=Action table.identity.creationdate=Created +table.identity.deleted.name=Del_User name table.identity.deletedby=Deleted by table.identity.deleteddate=Deleted table.identity.deletedroles=Roles -table.identity.deleted.name=Del_User names table.identity.id=ID table.identity.lastlogin=Last login table.identity.name=User name diff --git a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_fr.properties index 6932227457477f4ad16148bc73aa8f60e162fdcd..be8026b6451c3b7ccbedb6af45c52576e017e4f9 100644 --- a/src/main/java/org/olat/admin/user/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/admin/user/_i18n/LocalStrings_fr.properties @@ -3,10 +3,13 @@ action.bulkedit=Changer les attributs de cet utilisateur action.choose=S\u00E9lectionner action.choose.finish=S\u00E9lectionner et terminer action.select=S\u00E9lectionner +admins=Administrateur authedit.delete.confirm=Etes-vous s\u00FBr de vouloir effacer le fournisseur d'authentification {0} pour l'utilisateur {1}? authedit.delete.success=Le fournisseur d'authentification {0} pour l'utilisateur {1} a \u00E9t\u00E9 effac\u00E9. +authors=Auteur autocomplete.noresults=$org.olat.core.gui.control.generic.ajax.autocompletion\:autocomplete.noresults autocompletion.info=Indiquez un nom d'utilisateur OLAT, un pr\u00E9nom ou un nom. +bgroupcoach=Coach de groupes btn.back=Retour bulkChange.failed=Aucune modification n'a \u00E9t\u00E9 effectu\u00E9e bulkChange.partialsuccess={0} de {1} modification r\u00E9ussie. Les attributs d'utilisateur suivants n'ont pas pu \u00EAtre modifi\u00E9s\: {2} @@ -15,10 +18,13 @@ bulkChange.title=Modification des attributs d'utilisateurs changeuserpwd.cancel=L'action a \u00E9t\u00E9 interrompue. Le mot de passe reste inchang\u00E9. changeuserpwd.failed=Votre nouveau mot de passe n'a pas \u00E9t\u00E9 enregistr\u00E9. Une erreur inconnue est apparue. changeuserpwd.successful=Le nouveau mot de passe a \u00E9t\u00E9 enregistr\u00E9. Il est valable d\u00E8s \u00E0 pr\u00E9sent. +clear=Enlever command.mail=E-mail \u00E0 ces utilisateurs +confirm.clear.identity=Voulez-vous effacer les nom et pr\u00E9nom de l'utilisateur "{0}"? content.usermgmt.text1=Ici vous pouvez changer et g\u00E9rer les donn\u00E9es des utilisateurs OLAT. Commencez par la recherche d'utilisateurs SVP. content.usermgmt.title=Gestion des utilisateurs content.usermgmt.userfound=G\u00E9rer les r\u00E9glages des utilisateurs +deleted.user.list=Liste des utilisateurs effac\u00E9s deselectall=$org.olat.core.gui.components.table\:uncheckall edit.uauth=Authentifications edit.uhomepage=Cartes de visite @@ -38,6 +44,8 @@ error.search.form.no.wildcard.dublicates=Les termes de recherche incluant `**` n error.search.form.notempty=Veuillez remplir au minimum un champ du formulaire SVP. error.search.form.to.short=Terme de recherche trop court. error.search.maxResults=Trop de r\u00E9sultats ont \u00E9t\u00E9 trouv\u00E9s. Seul les {0} premiers seront affich\u00E9s. +export.user.data=Exporter les donn\u00E9es +export.user.data.title=Exporter les donn\u00E9es utilisateurs de "{0}" form.password.new1=Nouveau mot de passe form.password.new2=Confirmer mot de passe form.please.enter.new=Veuillez ins\u00E9rer le nouveaux mot de passe pour cet utilisateur s.v.p. @@ -46,8 +54,10 @@ form.token.new.text=Message form.token.new.title=Envoyer lien mot de passe form.username=Nom d'utilisateur found.property=Propri\u00E9t\u00E9 s\u00E9lectionn\u00E9e {0} +groupmanagers=Gestionnaire de groupes header.autocompletion=Recherche avec fonction compl\u00E9ter automatiquement header.normal=Recherche avec attributs d'utilisateur +instoresmanager=Administrateur de ressources didactiques mailtemplate.login.denied.body=Cher(\u00E8re) {6} {4},\n\nVotre compte OpenOLAT {0} avec l'adresse e-mail {1} sur le syst\u00E8me {5} a \u00E9t\u00E9 d\u00E9sactiv\u00E9.\nSi vous souhaitez que le compte soit \u00E0 r\u00E9activ\u00E9, contactez s'il vous pla\u00EEt le support imm\u00E9diatement \u00E0 {3}.\n\n\nAvec nos meilleures salutations\nL'elearning Team mailtemplate.login.denied.subject=Compte OpenOLAT d\u00E9sactiv\u00E9 mailto.userlist=Liste des utilisateurs @@ -71,6 +81,9 @@ new.user.cancel=L'action a \u00E9t\u00E9 annul\u00E9e. Aucun nouveau compte util new.user.successful=Le nouveau compte utilisateur a \u00E9t\u00E9 cr\u00E9\u00E9. notification.noNews=Aucun nouvel utilisateur ne s'est connect\u00E9 depuis cette date. notification.noSubscription=Vous n'\u00EAtes pas abonn\u00E9 sur les nouveaux utilisateurs. +owner=Propri\u00E9taire de cours +poolsmanager=Gestionnaire banque de questions +repocoach=Coach de cours rightForm.error.anonymous.no.roles=Les invit\u00E9(e)s anonymes ne peuvent pas exercer des r\u00F4les de syst\u00E8me. rightsForm.isAdmin=Administrateur syst\u00E8me rightsForm.isAnonymous=Type d'utilisateur @@ -129,6 +142,10 @@ table.header.action=Action table.header.vcard=Carte de visite table.identity.action=Action table.identity.creationdate=Cr\u00E9\u00E9 +table.identity.deleted.name=Del_Nom d'utilisateur +table.identity.deletedby=Effac\u00E9 par +table.identity.deleteddate=Effac\u00E9 le +table.identity.deletedroles=R\u00F4les table.identity.lastlogin=dernier login table.identity.name=Nom d'utilisateur table.identity.vcard=<i class\='o_icon o_icon-lg o_icon_home'> </i> @@ -149,6 +166,7 @@ title.user.search=Chercher utilisateur OLAT title.userlist=Liste des utilisateurs title.usersearch=Recherche d'utilisateur user.found=L'utilisateur a \u00E9t\u00E9 trouv\u00E9 +usermanagers=Gestionnaire utilisateurs view.access=M\u00E9thodes de r\u00E9servations view.competences=Comp\u00E9tences view.courses=Objects didactiques diff --git a/src/main/java/org/olat/collaboration/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/collaboration/_i18n/LocalStrings_fr.properties index b8b68d29cf8dfd73ce20e5f0c8e9f20713226520..1f3995af6d5bdfe4ca4d9af7fc12547e5ee578fa 100644 --- a/src/main/java/org/olat/collaboration/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/collaboration/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Tue Apr 04 18:45:08 CEST 2017 +#Thu May 31 16:23:21 CEST 2018 calendar.access=Droit d'\u00E9criture calendrier calendar.access.all=Tous les membres calendar.access.owners=Propri\u00E9taire resp. tuteur @@ -12,6 +12,7 @@ collabtools.named.hasNews=Information aux membres collabtools.named.hasOpenMeetings=OpenMeetings collabtools.named.hasPortfolio=ePortfolio collabtools.named.hasWiki=Wiki +error.missing.map=Le classeur a \u00E9t\u00E9 effac\u00E9. folder=Dossier folder.access=Permission d'\u00E9criture du dossier folder.access.all=Tous les membres diff --git a/src/main/java/org/olat/core/commons/services/csp/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/core/commons/services/csp/ui/_i18n/LocalStrings_fr.properties new file mode 100644 index 0000000000000000000000000000000000000000..6ca1cad036b6290b95956eb5e5249759b980d193 --- /dev/null +++ b/src/main/java/org/olat/core/commons/services/csp/ui/_i18n/LocalStrings_fr.properties @@ -0,0 +1,23 @@ +#Thu May 31 16:07:02 CEST 2018 +blocked.uri=URI bloqu\u00E9e +column.number=Colonne +date=Date +document.uri=URI document +effective.directive=Directive +line.number=N\u00B0 ligne +original.policy=Police originale +referrer=Referrer +script.sample=Example de script +source.file=Fichier +table.header.blocked.uri=URI bloqu\u00E9e +table.header.column.number=Colonne +table.header.date=Date +table.header.document.uri=Document +table.header.effective.directive=Directive +table.header.key=ID +table.header.line.number=Ligne +table.header.original.policy=Police +table.header.referrer=Referrer +table.header.source.file=Fichier +user=Utilisateur +violated.directive=Violation de r\u00E8gle diff --git a/src/main/java/org/olat/core/commons/services/notifications/manager/NotificationsManagerImpl.java b/src/main/java/org/olat/core/commons/services/notifications/manager/NotificationsManagerImpl.java index 003938a7c8271d6a00974ce3995976b3c9572346..546241703bcae89c8b98cdda262d9d6b0171fa1c 100644 --- a/src/main/java/org/olat/core/commons/services/notifications/manager/NotificationsManagerImpl.java +++ b/src/main/java/org/olat/core/commons/services/notifications/manager/NotificationsManagerImpl.java @@ -1309,8 +1309,8 @@ public class NotificationsManagerImpl extends NotificationsManager implements Us @Override public void export(Identity identity, ManifestBuilder manifest, File archiveDirectory, Locale locale) { - File noteArchive = new File(archiveDirectory, "Notifications.xlsx"); - try(OutputStream out = new FileOutputStream(noteArchive); + File subscriptionsArchive = new File(archiveDirectory, "Subscriptions.xlsx"); + try(OutputStream out = new FileOutputStream(subscriptionsArchive); OpenXMLWorkbook workbook = new OpenXMLWorkbook(out, 1)) { OpenXMLWorksheet sheet = workbook.nextWorksheet(); sheet.setHeaderRows(1); @@ -1329,7 +1329,7 @@ public class NotificationsManagerImpl extends NotificationsManager implements Us log.error("Unable to export xlsx", e); } - manifest.appendFile("Notifications.xlsx"); + manifest.appendFile(subscriptionsArchive.getName()); } private void exportSubscriberData(Subscriber subscriber, OpenXMLWorksheet sheet, OpenXMLWorkbook workbook, Locale locale) { diff --git a/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_fr.properties index 16133e4503f5b8896d0d2632d8539a136021751f..b7a8c982773277ce9e6b6766a05e1d0237fa5c5c 100644 --- a/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_fr.properties @@ -1,5 +1,6 @@ -#Thu Feb 01 18:31:51 CET 2018 +#Thu May 31 16:14:31 CEST 2018 add.email=Ajouter +at.least.one.recipient=You delves choisi au moins un destinataire. contact.cp.from=Copie \u00E0 l'exp\u00E9diteur error.too.long=Le mod\u00E8le est trop grand. La taille maximale est {0}\! footer.no.userdata=<p>Ce message a \u00E9t\u00E9 envoy\u00E9 automatiquement via la plateforme d'apprentissage OpenOLAT\: {0}</p> diff --git a/src/main/java/org/olat/course/assessment/manager/EfficiencyStatementArchiver.java b/src/main/java/org/olat/course/assessment/manager/EfficiencyStatementArchiver.java index 9bc7e71cc14971d638e7e271ca2c10eabb45c730..bbc54d0d1e15986e66f815cc68b2463ff6ce68e7 100644 --- a/src/main/java/org/olat/course/assessment/manager/EfficiencyStatementArchiver.java +++ b/src/main/java/org/olat/course/assessment/manager/EfficiencyStatementArchiver.java @@ -152,6 +152,10 @@ public class EfficiencyStatementArchiver { Object value = nodeData.get(key); if(value instanceof String) { row.addCell(col, (String)value); + } else if(value instanceof Number) { + row.addCell(col, (Number)value, null); + } else if(value instanceof Boolean) { + row.addCell(col, ((Boolean)value).toString(), null); } } diff --git a/src/main/java/org/olat/course/config/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/config/ui/_i18n/LocalStrings_fr.properties index 0c499492c70c2c940c02b2bb15c81ccc96727969..187c5888b76d99be7607dbe4eec0bdf8081cbff7 100644 --- a/src/main/java/org/olat/course/config/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/course/config/ui/_i18n/LocalStrings_fr.properties @@ -1,4 +1,5 @@ -#Wed Mar 08 11:25:33 CET 2017 +#Fri Jun 01 10:18:11 CEST 2018 +chkbx.breadcrumb.onoff=Navigation fil d'Ariane chkbx.calendar.onoff=Afficher calendrier via la bo\u00EEte \u00E0 outils chkbx.chat.onoff=Utiliser le chat du cours chkbx.efficency.onoff=Utiliser l'attestation de performance diff --git a/src/main/java/org/olat/course/nodes/bc/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/nodes/bc/_i18n/LocalStrings_fr.properties index 6497efcd255c450776846d2f7afb9c5c5774c895..e663c9658979635d4a83930ef0095f8006ba1bed 100644 --- a/src/main/java/org/olat/course/nodes/bc/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/course/nodes/bc/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Wed Feb 17 16:54:36 CET 2016 +#Thu May 31 16:15:44 CEST 2018 chooseFolder=Choisir le dossier condition.accessDownloaders.title=Lecture seule (download) condition.accessUploaders.title=Ecriture (upload) @@ -30,4 +30,5 @@ subPathLab.dummy=Aucun dossier de stockage n'est configur\u00E9 pour l'instant. subPathLab.label=Chemin du fichier title_bc=Dossier warn.folderdelete=Attention\: Tous les fichiers dans le dossier vont \u00EAtre effac\u00E9s. +warning.no.linkedfolder=Le dossier configur\u00E9 n'existe pas dans le dossier de stockage. warning.no.sharedfolder=Le dossier de ressource configur\u00E9 n'est plus disponible. diff --git a/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java b/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java index 6c85414970833aa3f646b17454860755d793a160..947cf955e6ae1dc318f2023e9912848c1e57bc2e 100644 --- a/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java +++ b/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java @@ -120,6 +120,7 @@ public class CSVToAssessmentItemConverter { case "type": processType(parts); break; case "titel": case "title": processTitle(parts); break; + case "topic": processTopic(parts); break; case "beschreibung": case "description": processDescription(parts); break; case "frage": @@ -272,7 +273,7 @@ public class CSVToAssessmentItemConverter { String discriminationIndex = parts[1]; if(StringHelper.containsNonWhitespace(discriminationIndex)) { try { - currentItem.setDifferentiation(new BigDecimal(discriminationIndex.trim())); + currentItem.setDifferentiation(new BigDecimal(discriminationIndex.replace(",", ".").trim())); } catch (Exception e) { log.warn("", e); } @@ -285,7 +286,7 @@ public class CSVToAssessmentItemConverter { String difficulty = parts[1]; if(StringHelper.containsNonWhitespace(difficulty)) { try { - BigDecimal dif = new BigDecimal(difficulty.trim()); + BigDecimal dif = new BigDecimal(difficulty.replace(",", ".").trim()); if(dif.doubleValue() >= 0.0d && dif.doubleValue() <= 1.0d) { currentItem.setDifficulty(dif); } else { @@ -303,7 +304,7 @@ public class CSVToAssessmentItemConverter { String stddev = parts[1]; if(StringHelper.containsNonWhitespace(stddev)) { try { - BigDecimal dev = new BigDecimal(stddev.trim()); + BigDecimal dev = new BigDecimal(stddev.replace(",", ".").trim()); if(dev.doubleValue() >= 0.0d && dev.doubleValue() <= 1.0d) { currentItem.setStdevDifficulty(dev); } else { @@ -515,6 +516,15 @@ public class CSVToAssessmentItemConverter { } } + private void processTopic(String[] parts) { + if(currentItem == null || parts.length < 2) return; + + String topic = parts[1]; + if(StringHelper.containsNonWhitespace(topic)) { + currentItem.setTopic(topic); + } + } + private void processQuestion(String[] parts) { if(currentItem == null) return; diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_fr.properties index 120cb466c6fefe78357bfe9f269e2e80e8c0bc18..f680884d49ea1ea15ee7d28b8e891fa2575d802d 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_fr.properties @@ -1,5 +1,6 @@ -#Mon Apr 16 20:59:33 CEST 2018 +#Thu May 31 16:11:18 CEST 2018 assessed.identity=Utilisateur +back.overview=Retourner \u00E0 l'aper\u00E7u comment=Commentaire comment.help=Ce commentaire est visible pour l'utilisateur dans le r\u00E9sum\u00E9 du test ainsi que pour les coaches. comment.test=Commentaire du test @@ -21,6 +22,7 @@ override.score=Remplacer les points overview.tests=Aper\u00E7u and cl\u00F4ture previous.item=Question pr\u00E9c\u00E9dente previous.user=Utilisateur pr\u00E9c\u00E9dent +save.back=Sauver et retourner \u00E0 l'aper\u00E7u save.next=Sauver et question suivante save.tests=Sauver les r\u00E9sultats d\u00E9finitifs score=R\u00E9sultats @@ -42,6 +44,7 @@ table.header.username=Nom d'utilisateur to.review=Marquer pour v\u00E9rification tool.review.all=Tout marquer pour v\u00E9rification tool.unreview.all=Enlever les marques +view.correct.solution=Voir la solution correcte view.solution=Voir la solution waring.atleast.one=Vous devez choisir au moins une question. warning.assessment.item.locked=La r\u00E9ponse est momentan\u00E9ment verrouill\u00E9e par un autre utilisateur\: {0} diff --git a/src/main/java/org/olat/login/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/login/_i18n/LocalStrings_fr.properties index 86857ece73128768d35b43ae4db17242a04f7494..db0b15681ba38f5c56b7739f37f8818775eb4526 100644 --- a/src/main/java/org/olat/login/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/login/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Thu Feb 01 18:37:13 CET 2018 +#Fri Jun 01 10:19:57 CEST 2018 about.copyright=Copyright et participations about.custom= about.custom.title= @@ -40,6 +40,8 @@ accesskey.top=$org.olat.core.commons.fullWebApp\:accesskey.top accesskey.topnav=$org.olat.core.commons.fullWebApp\:accesskey.topnav admin.menu.title=Invit\u00E9s et invitations admin.menu.title.alt=$\:admin.menu.title +admin.password.menu.title=R\u00E8gles concernant les mots de passes +admin.password.menu.title.alt=R\u00E8gles concernant les changements de mots de passes authentication.provider.description=N'appertenez-vous pas \u00E0 l'une des institutions mentionn\u00E9es ci-dessus ou n'avez-vous pas un compte utilisateur local? authentication.provider.linkText=Connectez-vous avec un compte OpenOLAT browsercheck.bestresults.newerversion=ou nouvelle version @@ -72,7 +74,9 @@ browsercheck.yourbrowser.name=Navigateur\: browsercheck.yourbrowser.os=Syst\u00E8me d'exploitation\: browsercheck.yourbrowser.title=Vous utilisez le navigateur suivant\: browsercheck.yourbrowser.usragent=Agent utilisateur\: +change.once=Changement de mot de passe apr\u00E8s la premi\u00E8re visite default.shib.intro=Vous \u00EAtes redirig\u00E9 vers la connexion +disable.history=d\u00E9sactiv\u00E9 enabled=on guest.login=Connexion invit\u00E9 sur la page de login guest.login.links=Liens pour invit\u00E9s @@ -98,6 +102,15 @@ login.intro=Veuillez vous connecter avec votre nom d'utilisateur et mot de passe login.notavailable=Le serveur est momentan\u00E9ment congestionn\u00E9. Veuillez r\u00E9essayer ult\u00E9rieurement. mail.pwd.body=Le mot de passe de votre compte OpenOLAT {0} avec l'adresse e-mail {1} a \u00E9t\u00E9 modifi\u00E9 par {2}.\r\n\r\n\r\nSi vous n'\u00EAtes pas d'accord avec ce changement ou si vous pensez que votre compte a \u00E9t\u00E9 compromis par des tiers, veuillez s'il vous pla\u00EEt contactez le support technique \u00E0 {3} dans les plus brefs d\u00E9lais ou utilisez le lien {4} pour changer \u00E0 nouveau le mot de passe. mail.pwd.subject=Mot de passe chang\u00E9 +max.age=Exiger un nouveau mot de passe +max.age.administrator=... pour les administrateurs +max.age.author=... pour les auteurs +max.age.description=Vous pouvez configurer ici la fr\u00E9quence \u00E0 laquelle un utilisateur doit changer son mot de passe et si un mot de passe peut \u00EAtre r\u00E9utilis\u00E9. La dur\u00E9e de vie des mots de passe peut \u00EAtre sp\u00E9cifi\u00E9 pour chaque role s\u00E9par\u00E9ment. +max.age.groupmanager=... pour gestionnaires de groupes +max.age.hint=en jours +max.age.learnresourcemanager=... pour les administrateurs de ressources didactiques +max.age.poolmanager=... pour les gestionnaires de la banque de questions +max.age.usermanager=... pour les gestionnaires des utilisateurs menu.about=A propos d'OpenOLAT menu.about.alt=Informations sur OpenOLAT menu.guest=Acc\u00E8s invit\u00E9(e) @@ -109,6 +122,9 @@ menu.register=Enregistrement menu.register.alt=Veuillez cr\u00E9er votre compte personnel OpenOLAT menu.root=OpenOLAT menu.root.alt=infinite learning +password.after=pour {0} changements +password.history=Pr\u00E9venir la r\u00E9utilisation des mots de passes pr\u00E9c\u00E9dants +password.policy.title=R\u00E8gles concernant les mots de passes runonce.forced=Veuillez compl\u00E9ter toutes les indications et enregistrez le formulaire, s.v.p. . runonce.title=Modifications r\u00E9currentes / r\u00E9glages \u00E0 la premi\u00E8re connexion shib.redirect=Shibboleth Login diff --git a/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_fr.properties index db02c5363318558810f2f63d95b5d19eeea48d7c..03e3df1b8a941bab3f469f16864e7a95825d53d6 100644 --- a/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/modules/edubase/ui/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Thu Nov 30 09:53:14 CET 2017 +#Thu May 31 16:12:53 CEST 2018 admin.edubase.coverver.url=URL du service "coverver" admin.edubase.description=Edubase est une solution compl\u00E8te pour les publications digitales et imprim\u00E9es. Avec le module OpenOLAT Edubase, l0Edubase Reader peut \u00EAtre int\u00E9gr\u00E9 \u00E0 un cours. Vous trouverez de plus amples informations sur le site Edubase <a href\="http\://www.edubase.ch" target\=_blank>http\://www.edubase.ch</a>. admin.edubase.enabled=El\u00E9ment de cours "Edubase" @@ -7,6 +7,8 @@ admin.edubase.lti.launch.url=URL de d\u00E9marrage LTI admin.edubase.oauth.key=Cl\u00E9 admin.edubase.oauth.secret=Secret admin.edubase.reader.url=URL Edubase Reader +admin.edubase.reader.url.unique=URL unique Edubase Reader +admin.edubase.reader.url.unique.help=L'URL Edubase Reader est form\u00E9e d'un param\u00E8tre sp\u00E9cifique \u00E0 l'utilisateur pour \u00E9viter les probl\u00E8mes li\u00E9s au nombres d'appareils. admin.edubase.title=Edubase admin.expert.settings=Configuration avanc\u00E9e admin.menu.title=Edubase/Edubook diff --git a/src/main/java/org/olat/modules/portfolio/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/portfolio/ui/_i18n/LocalStrings_fr.properties index fa984330dd80840bb6e97be752f3bd2fd188f789..e457a661e9fa4d1e99c0048ee52d2a78ca93d28c 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/modules/portfolio/ui/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Mon Apr 16 21:15:31 CEST 2018 +#Thu May 31 16:13:16 CEST 2018 access=Acc\u00E8s access.binder=Les personnes suivantes ont acc\u00E8s au classeur\: access.rights=Ajouter un droit d'acc\u00E8s @@ -58,6 +58,7 @@ assignment.type=Type assignment.type.document=Document assignment.type.essay=Texte libre assignment.type.form=Questionnaire +attachments=Documents attachments.error.file.exists=Ce fichier existe d\u00E9j\u00E0 et ne peut plus \u00EAtre ajout\u00E9 encore une fois. attachments.upload.successful=Le fichier {0} a \u00E9t\u00E9 ajout\u00E9 avec succ\u00E8s. Si besoin, d'autres fichiers peuvent \u00EAtre ajout\u00E9s. author=Auteur @@ -95,6 +96,7 @@ compare.evaluations=Evaluation confirm.close.page=Voulez-vous clore cette contribution? Cette contribution sera clos pour l'apprenant. confirm.close.page.other.coaches=Les personnes suivantes ont acc\u00E8s \u00E0 la contribution\: confirmation=Confirmation +content.title=Contenu create.binder=Cr\u00E9er un classeur create.empty.binder=Nouveau classeur vide create.empty.binder.from.course=Nouveau classeur d'un devoir de cours @@ -222,6 +224,7 @@ meta.page.assignment=Ceci est un devoir meta.page.assignment.type=Type meta.section.assignments=<strong>Devoir</strong> dans cette section meta.section.categories=<strong>Cat\u00E9gories</strong> dans cette section +metadata.title=M\u00E9ta-donn\u00E9es mf.creator=Auteur mf.edition=Edition mf.editor=Editeur diff --git a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties index 2e2d5b8f26848c6c383848dffba087a9f4b3d404..753c82788cdc1992e4aa2b090ce5291ad6b99fcf 100644 --- a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Mon Apr 16 21:16:26 CEST 2018 +#Thu May 31 16:13:49 CEST 2018 add=+ add.to.list=Ajouter \u00E0 la liste admin.menu.title=Banque de questions @@ -179,6 +179,8 @@ menu.pools.main=Catalogue menu.pools.main.alt=Catalogue menu.queries=Questions menu.queries.all=Toutes les questions +menu.queries.whithout.author=Sans auteur +menu.queries.whithout.taxonomy.level=Sans sujet menu.queries.without.author=Sans auteur menu.queries.without.taxonomy.level=Sans sujet menu.ratings=Evaluations diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java b/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java index d49ff8f2865db9bb82c0d14bccfebcd2ae72e633..e2de12b33a944c45458348746d3e61047e72b556 100644 --- a/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java +++ b/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java @@ -693,7 +693,7 @@ public class RepositoryEntryRelationDAO { public List<MembershipInfos> getMembership(IdentityRef identity) { StringBuilder sb = new StringBuilder(512); - sb.append("select v.key, v.displayname, reMember.role, reMember.creationDate,") + sb.append("select v.key, v.displayname, reMember.key, reMember.role, reMember.creationDate,") .append(" userinfos.initialLaunch, userinfos.recentLaunch, userinfos.visit") .append(" from repositoryentry as v") .append(" inner join v.groups as rel") @@ -706,11 +706,18 @@ public class RepositoryEntryRelationDAO { .setParameter("identityKey", identity.getKey()) .getResultList(); + Set<Long> memberKeys = new HashSet<>(); List<MembershipInfos> memberhips = new ArrayList<>(rawObjects.size()); for(Object[] rawObject:rawObjects) { int col = 0; Long entryKey = (Long)rawObject[col++]; String displayName = (String)rawObject[col++]; + Long memberKey = (Long)rawObject[col++]; + if(memberKeys.contains(memberKey)) { + continue;//duplicate + } + memberKeys.add(memberKey); + String role = (String)rawObject[col++]; Date creationDate = (Date)rawObject[col++]; Date initialLaunch = (Date)rawObject[col++]; diff --git a/src/main/java/org/olat/user/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/user/_i18n/LocalStrings_fr.properties index 4a834e4f7b2c28948a9b17ec3492c9f59e5d7a9d..5a243085a29733e14ab1f95583a3d99b5d80666a 100644 --- a/src/main/java/org/olat/user/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/user/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Thu Nov 16 20:25:36 CET 2017 +#Thu May 31 16:22:59 CEST 2018 Failed=La transmission du fichier a \u00E9chou\u00E9. NoImage=L'image ne peut pas \u00EAtre transmise sous ce format de fichier. ULLimitExceeded=L'image ne doit pas d\u00E9passer {0} KB. @@ -30,6 +30,7 @@ extlink=Lien externe vers la carte de visite form.address=Adresse form.charset=Jeu de caract\u00E8res pour t\u00E9l\u00E9chargement form.checkPassword=Le mot de passe doit contenir au moins quatre caract\u00E8res. Utilisez des lettres ET des chiffres. +form.checkPassword.history=Vous ne pouvez pas r\u00E9utiliser un mot de passe que vous avez d\u00E9j\u00E0 utilis\u00E9 par le pass\u00E9. form.checkUsername=Le nom d'utilisateur doit \u00EAtre compos\u00E9 d'au moins 4 caract\u00E8res et ne doit contenir que des lettres de A \u00E0 Z (sans accents) et des chiffres de 0 \u00E0 9. En plus les caract\u00E8res sp\u00E9ciaux . _ et - sont permis. form.description=Indiquez vos donn\u00E9es personnelles dans le formulaire ci-dessous. Vous pouvez d\u00E9cider laquelle des entr\u00E9es sera visible sur votre carte de visite gr\u00E2ce au bo\u00EEtes \u00E0 cocher. form.email=E-mail @@ -127,6 +128,7 @@ tab.pwd=Mot de passe tab.pwdav=WebDAV tab.roles=R\u00F4les tab.settings=Configuration +tab.user.data=Donn\u00E9es utilisateur table.header.action=Action table.prop.category=Cat\u00E9gorie table.prop.creatdat=Cr\u00E9\u00E9 @@ -146,6 +148,7 @@ ul.header=Image publi\u00E9e (.jpg .jpeg .png .gif) ul.select=S\u00E9lectionner fichier ul.select.fhelp=L'image est recadr\u00E9e automatiquement \u00E0 une largeur de 100 pixels. ul.upload=T\u00E9l\u00E9charger +user.data.download.explain=T\u00E9l\u00E9charger les donn\u00E9es utilisateurs user.deleted=Cet utilisateur a \u00E9t\u00E9 supprim\u00E9 dans OLAT user.email.admin.description=Configuration de l'adresse courriel des utilisateurs. Si l'adresse courriel est optionnel ou n'est pas unique, certaines fonctions d'OpenOLAT ne sont plus disponibles comme auto-enregistrement, vitero, WebDAV... user.email.admin.title=Adresse courriel diff --git a/src/main/java/org/olat/user/ui/data/UserDataExportController.java b/src/main/java/org/olat/user/ui/data/UserDataExportController.java index 8c2fd6021a93d1903175290e43006adbe16e2f5c..0d5f5a36d2d17143f4c784b0a278d1b622eed165 100644 --- a/src/main/java/org/olat/user/ui/data/UserDataExportController.java +++ b/src/main/java/org/olat/user/ui/data/UserDataExportController.java @@ -19,7 +19,9 @@ */ package org.olat.user.ui.data; +import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import org.olat.core.gui.UserRequest; @@ -75,13 +77,13 @@ public class UserDataExportController extends FormBasicController { ((FormLayoutContainer)formLayout).contextPut("dataBusinessPath", url); if(!processing) { - List<String> exportIds = exportService.getExporterIds(); - String[] keys = new String[exportIds.size()]; - String[] values = new String[exportIds.size()]; - for(int i=exportIds.size(); i-->0; ) { - String exportId = exportIds.get(i); - keys[i] = exportId; - values[i] = translate(exportId); + List<ExportLabel> exports = getAvailableExports(); + String[] keys = new String[exports.size()]; + String[] values = new String[exports.size()]; + for(int i=exports.size(); i-->0; ) { + ExportLabel export = exports.get(i); + keys[i] = export.getId(); + values[i] = export.getLabel(); } exportEl = uifactory.addCheckboxesVertical("export.options", formLayout, keys, values, 1); exportEl.setMandatory(true); @@ -119,4 +121,38 @@ public class UserDataExportController extends FormBasicController { protected void formCancelled(UserRequest ureq) { fireEvent(ureq, Event.CANCELLED_EVENT); } + + private List<ExportLabel> getAvailableExports() { + List<String> exportIds = exportService.getExporterIds(); + List<ExportLabel> labels = new ArrayList<>(exportIds.size()); + for(String exportId:exportIds) { + labels.add(new ExportLabel(exportId, translate(exportId))); + } + Collections.sort(labels); + return labels; + } + + private static final class ExportLabel implements Comparable<ExportLabel> { + + private final String id; + private final String label; + + public ExportLabel(String id, String label) { + this.id = id; + this.label = label; + } + + public String getId() { + return id; + } + + public String getLabel() { + return label; + } + + @Override + public int compareTo(ExportLabel o) { + return label.compareToIgnoreCase(o.label); + } + } } diff --git a/src/main/java/org/olat/user/ui/data/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/user/ui/data/_i18n/LocalStrings_de.properties index 7065728eccdfb5dd85d3b57a4313e957d6b3bcdf..18cb2724578efe5cc9167c77426c4e251c93b19b 100644 --- a/src/main/java/org/olat/user/ui/data/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/user/ui/data/_i18n/LocalStrings_de.properties @@ -13,7 +13,7 @@ efficiency.statements=Leistungnachweise export.options=Export Elemente export.start=Start export export.url=Link zu Daten -export.user.data.explain=W\u00E4hlen Sie die Elemente, welche f\u00FCr diesen Benutzer exportiert werden sollen. Der Export kann mehrere Stunde in Anspruch nehmen. Sobald der Export beendet ist werden Sie per Email informiert. +export.user.data.explain=W\u00E4hlen Sie die Elemente, welche f\u00FCr diesen Benutzer exportiert werden sollen. Der Export kann mehrere Stunden in Anspruch nehmen. Sobald der Export beendet ist, werden Sie per Email informiert. export.user.data.none=Datenschutz Erkl\u00E4rung export.user.data.notReady=Der Benutzer kann den Export mit dem folgenden Link herunterladen. export.user.data.processing=Der Export ist gerade bearbeitet. diff --git a/src/main/java/org/olat/user/ui/data/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/user/ui/data/_i18n/LocalStrings_en.properties index 9dbe7aa2068d9cb711d26c1c435a95569dacbcb9..7a5d6ff5a97098f025173405d238baee6d3e4e28 100644 --- a/src/main/java/org/olat/user/ui/data/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/user/ui/data/_i18n/LocalStrings_en.properties @@ -1,4 +1,4 @@ -#Fri May 25 16:23:30 CEST 2018 +#Fri Jun 01 10:16:59 CEST 2018 binders=ePortfolio binders bookings=Bookings calendars=Calendars @@ -13,6 +13,13 @@ efficiency.statements=Evidences of achievement export.options=Export elements export.start=Start export export.url=Link to the data +export.user.data.explain=Select the elements to be exported for this user. The export can take several hours. You will receive an email once the export has been completed. +export.user.data.none=Privacy statement +export.user.data.notReady=The user can download the export using the following link. +export.user.data.processing=The export is currently processed +export.user.data.ready=The user can download the export with the following link. You can ask for a new export too. +export.user.data.ready.subject=The export for "{0}" is ready +export.user.data.ready.text=<p>The export for "{0}" is ready. The user can use the following link to download it <a href\="{1}">{1}</a>.</p> feeds=Blogs and podcasts forums=Forums group.memberships=Membership to groups @@ -23,5 +30,5 @@ notes=Notes notifications=Subscriptions personal.folders=All documents in private and public folders pf=Participant folders +profile=all profile data, including invisible ones repository.memberships=Membership to courses - diff --git a/src/main/java/org/olat/user/ui/data/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/user/ui/data/_i18n/LocalStrings_fr.properties new file mode 100644 index 0000000000000000000000000000000000000000..5a33753ab713027f3af04455791a5a6bf948aa13 --- /dev/null +++ b/src/main/java/org/olat/user/ui/data/_i18n/LocalStrings_fr.properties @@ -0,0 +1,34 @@ +#Fri Jun 01 10:34:11 CEST 2018 +binders=Classeurs portfolio +bookings=R\u00E9servations +calendars=Calendriers +certificates=Certificats +chat=Messages de la messagerie instantan\u00E9e +comments.ratings=Commentaires et \u00E9valuations +dialog=Fichiers discut\u00E9s +disclaimer=Conditions d'utilisation +display.portrait=Image publi\u00E9e du profil +download.data=T\u00E9l\u00E9charger les donn\u00E9es +efficiency.statements=Attestations de performance +export.options=Elements \u00E0 exporter +export.start=D\u00E9marrer l'exportation +export.url=Lien vers les donn\u00E9es +export.user.data.explain=S\u00E9lectionner les \u00E9l\u00E9ments \u00E0 exporter pour cette utilisateur. L'exportation peut dur\u00E9e plusieurs heures, vous recevrez un courriel lorsqu'il sera termin\u00E9. +export.user.data.none=D\u00E9claration de protection des donn\u00E9es +export.user.data.notReady=L'utilisateur peut t\u00E9l\u00E9charger les donn\u00E9es export\u00E9es avec le lien suivant. +export.user.data.processing=L'exportation est en cours. +export.user.data.ready=L'utilisateur peut t\u00E9l\u00E9charger les donn\u00E9es avec le lien suivant. Vous pouvez \u00E9galement d\u00E9marrer une nouvelle exportation. +export.user.data.ready.subject=Les donn\u00E9es pour "{0}" sont pr\u00EAtes. +export.user.data.ready.text=<p>Les donn\u00E9es pour l'utilisateur "{0}" sont pr\u00EAtes. L'utilisateur peut les t\u00E9l\u00E9charger en suivant le lien <a href\="{1}">{1}</a>.</p> +feeds=Blogues et podcasts +forums=Forums +group.memberships=Participations aux groupes +gta=Devoirs +logs=Logs +mail=Courriels +notes=Notes personnelles +notifications=Abonnements +personal.folders=Tous les documents des dossiers priv\u00E9 et public +pf=Dossiers participants +profile=toutes les donn\u00E9es du profil, inclus celles invisibles +repository.memberships=Participations aux cours diff --git a/src/main/resources/org/olat/ims/qti21/questionimport/qti-import-metadata.xlsx b/src/main/resources/org/olat/ims/qti21/questionimport/qti-import-metadata.xlsx index 337788a2369fb178b73ae6c206045fc0536fe2a8..1eb189381d65d10d72ff858e70e93da106e30688 100644 Binary files a/src/main/resources/org/olat/ims/qti21/questionimport/qti-import-metadata.xlsx and b/src/main/resources/org/olat/ims/qti21/questionimport/qti-import-metadata.xlsx differ