summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2016-07-01 11:36:35 +0200
committerLukas Reschke <lukas@owncloud.com>2016-07-01 11:36:35 +0200
commit179a355b2cd3dc489a54cc27fd717f67373d0b1e (patch)
treef87a5586086635d4cbd18771b442ee771f79e441 /apps
parent8e002b61554308cb4d50570f715303a82136f0fa (diff)
parent2d2d2267f7f38ca29e7b87f40fae62261614b0d1 (diff)
downloadnextcloud-server-179a355b2cd3dc489a54cc27fd717f67373d0b1e.tar.gz
nextcloud-server-179a355b2cd3dc489a54cc27fd717f67373d0b1e.zip
Merge remote-tracking branch 'upstream/master' into master-sync-upstream
Diffstat (limited to 'apps')
-rw-r--r--apps/comments/l10n/en_GB.js3
-rw-r--r--apps/comments/l10n/en_GB.json3
-rw-r--r--apps/comments/l10n/fr.js3
-rw-r--r--apps/comments/l10n/fr.json3
-rw-r--r--apps/comments/l10n/nl.js3
-rw-r--r--apps/comments/l10n/nl.json3
-rw-r--r--apps/comments/l10n/pt_BR.js3
-rw-r--r--apps/comments/l10n/pt_BR.json3
-rw-r--r--apps/comments/l10n/pt_PT.js3
-rw-r--r--apps/comments/l10n/pt_PT.json3
-rw-r--r--apps/comments/l10n/ru.js3
-rw-r--r--apps/comments/l10n/ru.json3
-rw-r--r--apps/comments/l10n/sl.js3
-rw-r--r--apps/comments/l10n/sl.json3
-rw-r--r--apps/dav/lib/CardDAV/ImageExportPlugin.php14
-rw-r--r--apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php9
-rw-r--r--apps/federatedfilesharing/l10n/fr.js2
-rw-r--r--apps/federatedfilesharing/l10n/fr.json2
-rw-r--r--apps/federation/l10n/lb.js15
-rw-r--r--apps/federation/l10n/lb.json13
-rw-r--r--apps/files/js/filelist.js7
-rw-r--r--apps/files/l10n/fr.js8
-rw-r--r--apps/files/l10n/fr.json8
-rw-r--r--apps/files/l10n/lb.js4
-rw-r--r--apps/files/l10n/lb.json4
-rw-r--r--apps/files_external/l10n/lb.js3
-rw-r--r--apps/files_external/l10n/lb.json3
-rw-r--r--apps/files_external/l10n/sl.js1
-rw-r--r--apps/files_external/l10n/sl.json1
-rw-r--r--apps/files_sharing/l10n/ast.js1
-rw-r--r--apps/files_sharing/l10n/ast.json1
-rw-r--r--apps/files_sharing/lib/External/Manager.php2
-rw-r--r--apps/files_sharing/lib/External/Storage.php19
-rw-r--r--apps/files_versions/js/versionstabview.js6
-rw-r--r--apps/files_versions/lib/Storage.php8
-rw-r--r--apps/files_versions/tests/VersioningTest.php38
-rw-r--r--apps/files_versions/tests/js/versionstabviewSpec.js28
-rw-r--r--apps/systemtags/l10n/lb.js22
-rw-r--r--apps/systemtags/l10n/lb.json22
-rw-r--r--apps/updatenotification/l10n/fr.js4
-rw-r--r--apps/updatenotification/l10n/fr.json4
-rw-r--r--apps/updatenotification/l10n/sl.js3
-rw-r--r--apps/updatenotification/l10n/sl.json3
-rw-r--r--apps/user_ldap/l10n/he.js6
-rw-r--r--apps/user_ldap/l10n/he.json6
45 files changed, 290 insertions, 19 deletions
diff --git a/apps/comments/l10n/en_GB.js b/apps/comments/l10n/en_GB.js
index d8e5c5d8240..057ac775a6b 100644
--- a/apps/comments/l10n/en_GB.js
+++ b/apps/comments/l10n/en_GB.js
@@ -12,6 +12,9 @@ OC.L10N.register(
"More comments..." : "More comments...",
"Save" : "Save",
"Allowed characters {count} of {max}" : "Allowed characters {count} of {max}",
+ "Error occurred while retrieving comment with id {id}" : "Error occurred while retrieving comment with id {id}",
+ "Error occurred while updating comment with id {id}" : "Error occurred while updating comment with id {id}",
+ "Error occurred while posting comment" : "Error occurred while posting comment",
"{count} unread comments" : "{count} unread comments",
"Comment" : "Comment",
"<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Comments</strong> for files <em>(always listed in stream)</em>",
diff --git a/apps/comments/l10n/en_GB.json b/apps/comments/l10n/en_GB.json
index ccf4a1338d1..13335d5d989 100644
--- a/apps/comments/l10n/en_GB.json
+++ b/apps/comments/l10n/en_GB.json
@@ -10,6 +10,9 @@
"More comments..." : "More comments...",
"Save" : "Save",
"Allowed characters {count} of {max}" : "Allowed characters {count} of {max}",
+ "Error occurred while retrieving comment with id {id}" : "Error occurred while retrieving comment with id {id}",
+ "Error occurred while updating comment with id {id}" : "Error occurred while updating comment with id {id}",
+ "Error occurred while posting comment" : "Error occurred while posting comment",
"{count} unread comments" : "{count} unread comments",
"Comment" : "Comment",
"<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Comments</strong> for files <em>(always listed in stream)</em>",
diff --git a/apps/comments/l10n/fr.js b/apps/comments/l10n/fr.js
index 720c9518b2e..adb5bc00c1c 100644
--- a/apps/comments/l10n/fr.js
+++ b/apps/comments/l10n/fr.js
@@ -12,6 +12,9 @@ OC.L10N.register(
"More comments..." : "Plus de commentaires...",
"Save" : "Enregistrer",
"Allowed characters {count} of {max}" : "{count} sur {max} caractères autorisés",
+ "Error occurred while retrieving comment with id {id}" : "Une erreur est survenue lors de la récupération du commentaire avec l'id {id}",
+ "Error occurred while updating comment with id {id}" : "Une erreur est survenue lors de la mise à jour du commentaire avec l'id {id}",
+ "Error occurred while posting comment" : "Une erreur est survenue lors de l'envoi du commentaire",
"{count} unread comments" : "{count} commentaires non lus",
"Comment" : "Commenter",
"<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Commentaires</strong> pour les fichiers <em>(toujours listés dans le flux)</em>",
diff --git a/apps/comments/l10n/fr.json b/apps/comments/l10n/fr.json
index 25cbfa4daa2..9a7dce480c8 100644
--- a/apps/comments/l10n/fr.json
+++ b/apps/comments/l10n/fr.json
@@ -10,6 +10,9 @@
"More comments..." : "Plus de commentaires...",
"Save" : "Enregistrer",
"Allowed characters {count} of {max}" : "{count} sur {max} caractères autorisés",
+ "Error occurred while retrieving comment with id {id}" : "Une erreur est survenue lors de la récupération du commentaire avec l'id {id}",
+ "Error occurred while updating comment with id {id}" : "Une erreur est survenue lors de la mise à jour du commentaire avec l'id {id}",
+ "Error occurred while posting comment" : "Une erreur est survenue lors de l'envoi du commentaire",
"{count} unread comments" : "{count} commentaires non lus",
"Comment" : "Commenter",
"<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Commentaires</strong> pour les fichiers <em>(toujours listés dans le flux)</em>",
diff --git a/apps/comments/l10n/nl.js b/apps/comments/l10n/nl.js
index 01cfc704536..56434689471 100644
--- a/apps/comments/l10n/nl.js
+++ b/apps/comments/l10n/nl.js
@@ -12,6 +12,9 @@ OC.L10N.register(
"More comments..." : "Meer reacties...",
"Save" : "Opslaan",
"Allowed characters {count} of {max}" : "{count} van de {max} toegestane tekens",
+ "Error occurred while retrieving comment with id {id}" : "Er trad een fout op bij het ophalen van reactie met id {id}",
+ "Error occurred while updating comment with id {id}" : "Er trad een fout op bij het bijwerken van reactie met id {id}",
+ "Error occurred while posting comment" : "Er trad een fout op bij het plaatsten van een reactie",
"{count} unread comments" : "{count} ongelezen reacties",
"Comment" : "Reactie",
"<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Reacties</strong> voor bestanden <em>(altijd getoond in de stroom)</em>",
diff --git a/apps/comments/l10n/nl.json b/apps/comments/l10n/nl.json
index 1bdb76aabd5..d8de61d10cb 100644
--- a/apps/comments/l10n/nl.json
+++ b/apps/comments/l10n/nl.json
@@ -10,6 +10,9 @@
"More comments..." : "Meer reacties...",
"Save" : "Opslaan",
"Allowed characters {count} of {max}" : "{count} van de {max} toegestane tekens",
+ "Error occurred while retrieving comment with id {id}" : "Er trad een fout op bij het ophalen van reactie met id {id}",
+ "Error occurred while updating comment with id {id}" : "Er trad een fout op bij het bijwerken van reactie met id {id}",
+ "Error occurred while posting comment" : "Er trad een fout op bij het plaatsten van een reactie",
"{count} unread comments" : "{count} ongelezen reacties",
"Comment" : "Reactie",
"<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Reacties</strong> voor bestanden <em>(altijd getoond in de stroom)</em>",
diff --git a/apps/comments/l10n/pt_BR.js b/apps/comments/l10n/pt_BR.js
index 173fc5395fb..a366f3bcda1 100644
--- a/apps/comments/l10n/pt_BR.js
+++ b/apps/comments/l10n/pt_BR.js
@@ -12,6 +12,9 @@ OC.L10N.register(
"More comments..." : "Mais comentários...",
"Save" : "Salvar",
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
+ "Error occurred while retrieving comment with id {id}" : "Ocorreu um erro ao recuperar comentário com o id {id}",
+ "Error occurred while updating comment with id {id}" : "Ocorreu um erro durante a atualização do comentário com o id {id}",
+ "Error occurred while posting comment" : "Ocorreu um erro ao postar o comentário",
"{count} unread comments" : "{count} comentários não lidos",
"Comment" : "Comentário",
"<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Comemtários</strong> para arquivos <em>(sempre listados no fluxo)</em>",
diff --git a/apps/comments/l10n/pt_BR.json b/apps/comments/l10n/pt_BR.json
index b20ea2620b1..11fa6bc3f68 100644
--- a/apps/comments/l10n/pt_BR.json
+++ b/apps/comments/l10n/pt_BR.json
@@ -10,6 +10,9 @@
"More comments..." : "Mais comentários...",
"Save" : "Salvar",
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
+ "Error occurred while retrieving comment with id {id}" : "Ocorreu um erro ao recuperar comentário com o id {id}",
+ "Error occurred while updating comment with id {id}" : "Ocorreu um erro durante a atualização do comentário com o id {id}",
+ "Error occurred while posting comment" : "Ocorreu um erro ao postar o comentário",
"{count} unread comments" : "{count} comentários não lidos",
"Comment" : "Comentário",
"<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Comemtários</strong> para arquivos <em>(sempre listados no fluxo)</em>",
diff --git a/apps/comments/l10n/pt_PT.js b/apps/comments/l10n/pt_PT.js
index a015d02ae6b..17632c2f046 100644
--- a/apps/comments/l10n/pt_PT.js
+++ b/apps/comments/l10n/pt_PT.js
@@ -12,6 +12,9 @@ OC.L10N.register(
"More comments..." : "Mais comentários...",
"Save" : "Guardar",
"Allowed characters {count} of {max}" : "{count} de {max} caracteres restantes",
+ "Error occurred while retrieving comment with id {id}" : "Ocorreu um erro ao tentar obter o comentário com o id {id}",
+ "Error occurred while updating comment with id {id}" : "Ocorreu um erro ao tentar atualizar o comentário com o id {id}",
+ "Error occurred while posting comment" : "Ocorreu um erro ao tentar publicar o comentário",
"{count} unread comments" : "{count} comentários não lidos",
"Comment" : "Comentário",
"<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Comentários</strong> aos ficheiros <em>(listados sempre na transmissão)</em>",
diff --git a/apps/comments/l10n/pt_PT.json b/apps/comments/l10n/pt_PT.json
index 244892c4ac7..00f024034d2 100644
--- a/apps/comments/l10n/pt_PT.json
+++ b/apps/comments/l10n/pt_PT.json
@@ -10,6 +10,9 @@
"More comments..." : "Mais comentários...",
"Save" : "Guardar",
"Allowed characters {count} of {max}" : "{count} de {max} caracteres restantes",
+ "Error occurred while retrieving comment with id {id}" : "Ocorreu um erro ao tentar obter o comentário com o id {id}",
+ "Error occurred while updating comment with id {id}" : "Ocorreu um erro ao tentar atualizar o comentário com o id {id}",
+ "Error occurred while posting comment" : "Ocorreu um erro ao tentar publicar o comentário",
"{count} unread comments" : "{count} comentários não lidos",
"Comment" : "Comentário",
"<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Comentários</strong> aos ficheiros <em>(listados sempre na transmissão)</em>",
diff --git a/apps/comments/l10n/ru.js b/apps/comments/l10n/ru.js
index 3ee5e1fb4d4..c7719d185e8 100644
--- a/apps/comments/l10n/ru.js
+++ b/apps/comments/l10n/ru.js
@@ -12,6 +12,9 @@ OC.L10N.register(
"More comments..." : "Ещё комментарии...",
"Save" : "Сохранить",
"Allowed characters {count} of {max}" : "Допустимых символов {count} из {max}",
+ "Error occurred while retrieving comment with id {id}" : "Произошла ошибка при извлечении комментария с id {id}",
+ "Error occurred while updating comment with id {id}" : "Произошла ошибка при обновлении комментария с id {id}",
+ "Error occurred while posting comment" : "При сохранении комментария произошла ошибка",
"{count} unread comments" : "{count} непрочитанных комментариев",
"Comment" : "Коментарий",
"<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Комментарии</strong> к файлам <em>(всегда перечислены в потоке)</em>",
diff --git a/apps/comments/l10n/ru.json b/apps/comments/l10n/ru.json
index fcafda4c9cb..3de3e3d8ecd 100644
--- a/apps/comments/l10n/ru.json
+++ b/apps/comments/l10n/ru.json
@@ -10,6 +10,9 @@
"More comments..." : "Ещё комментарии...",
"Save" : "Сохранить",
"Allowed characters {count} of {max}" : "Допустимых символов {count} из {max}",
+ "Error occurred while retrieving comment with id {id}" : "Произошла ошибка при извлечении комментария с id {id}",
+ "Error occurred while updating comment with id {id}" : "Произошла ошибка при обновлении комментария с id {id}",
+ "Error occurred while posting comment" : "При сохранении комментария произошла ошибка",
"{count} unread comments" : "{count} непрочитанных комментариев",
"Comment" : "Коментарий",
"<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Комментарии</strong> к файлам <em>(всегда перечислены в потоке)</em>",
diff --git a/apps/comments/l10n/sl.js b/apps/comments/l10n/sl.js
index 263522cf3e5..f6b66a634f0 100644
--- a/apps/comments/l10n/sl.js
+++ b/apps/comments/l10n/sl.js
@@ -12,6 +12,9 @@ OC.L10N.register(
"More comments..." : "Več opomb ...",
"Save" : "Shrani",
"Allowed characters {count} of {max}" : "Dovoljeni znaki: {count} od {max}",
+ "Error occurred while retrieving comment with id {id}" : "Napaka se je zgodila med prenosom komentarja z oznako {id}",
+ "Error occurred while updating comment with id {id}" : "Napaka se je zgodila med posodabljanjem komentarja z oznako {id}",
+ "Error occurred while posting comment" : "Napaka se je zgodila med predajo komentarja",
"{count} unread comments" : "{count} neprebranih opomb",
"Comment" : "Opomba",
"<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Opombe</strong> k datotekam <em>(vedno pokaži)</em>",
diff --git a/apps/comments/l10n/sl.json b/apps/comments/l10n/sl.json
index 8a52d03c8c3..5bf96f2773b 100644
--- a/apps/comments/l10n/sl.json
+++ b/apps/comments/l10n/sl.json
@@ -10,6 +10,9 @@
"More comments..." : "Več opomb ...",
"Save" : "Shrani",
"Allowed characters {count} of {max}" : "Dovoljeni znaki: {count} od {max}",
+ "Error occurred while retrieving comment with id {id}" : "Napaka se je zgodila med prenosom komentarja z oznako {id}",
+ "Error occurred while updating comment with id {id}" : "Napaka se je zgodila med posodabljanjem komentarja z oznako {id}",
+ "Error occurred while posting comment" : "Napaka se je zgodila med predajo komentarja",
"{count} unread comments" : "{count} neprebranih opomb",
"Comment" : "Opomba",
"<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Opombe</strong> k datotekam <em>(vedno pokaži)</em>",
diff --git a/apps/dav/lib/CardDAV/ImageExportPlugin.php b/apps/dav/lib/CardDAV/ImageExportPlugin.php
index 3f505222491..fcd36b3ff35 100644
--- a/apps/dav/lib/CardDAV/ImageExportPlugin.php
+++ b/apps/dav/lib/CardDAV/ImageExportPlugin.php
@@ -108,8 +108,18 @@ class ImageExportPlugin extends ServerPlugin {
$photo = $vObject->PHOTO;
$type = $this->getType($photo);
- $valType = $photo->getValueType();
- $val = ($valType === 'URI' ? $photo->getRawMimeDirValue() : $photo->getValue());
+ $val = $photo->getValue();
+ if ($photo->getValueType() === 'URI') {
+ $parsed = \Sabre\URI\parse($val);
+ //only allow data://
+ if ($parsed['scheme'] !== 'data') {
+ return false;
+ }
+ if (substr_count($parsed['path'], ';') === 1) {
+ list($type,) = explode(';', $parsed['path']);
+ }
+ $val = file_get_contents($val);
+ }
return [
'Content-Type' => $type,
'body' => $val
diff --git a/apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php b/apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php
index 8583df0b6f9..3a9dc144584 100644
--- a/apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php
+++ b/apps/dav/tests/unit/CardDAV/ImageExportPluginTest.php
@@ -140,12 +140,9 @@ class ImageExportPluginTest extends TestCase {
'empty vcard' => [false, ''],
'vcard without PHOTO' => [false, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nEND:VCARD\r\n"],
'vcard 3 with PHOTO' => [['Content-Type' => 'image/jpeg', 'body' => '12345'], "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nPHOTO;ENCODING=b;TYPE=JPEG:MTIzNDU=\r\nEND:VCARD\r\n"],
- //
- // TODO: these three below are not working - needs debugging
- //
- //'vcard 3 with PHOTO URL' => [['Content-Type' => 'image/jpeg', 'body' => '12345'], "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nPHOTO;TYPE=JPEG:http://example.org/photo.jpg\r\nEND:VCARD\r\n"],
- //'vcard 4 with PHOTO' => [['Content-Type' => 'image/jpeg', 'body' => '12345'], "BEGIN:VCARD\r\nVERSION:4.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nPHOTO:data:image/jpeg;MTIzNDU=\r\nEND:VCARD\r\n"],
- 'vcard 4 with PHOTO URL' => [['Content-Type' => 'image/jpeg', 'body' => 'http://example.org/photo.jpg'], "BEGIN:VCARD\r\nVERSION:4.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nPHOTO;MEDIATYPE=image/jpeg:http://example.org/photo.jpg\r\nEND:VCARD\r\n"],
+ 'vcard 3 with PHOTO URL' => [false, "BEGIN:VCARD\r\nVERSION:3.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nPHOTO;TYPE=JPEG;VALUE=URI:http://example.com/photo.jpg\r\nEND:VCARD\r\n"],
+ 'vcard 4 with PHOTO' => [['Content-Type' => 'image/jpeg', 'body' => '12345'], "BEGIN:VCARD\r\nVERSION:4.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nPHOTO:data:image/jpeg;base64,MTIzNDU=\r\nEND:VCARD\r\n"],
+ 'vcard 4 with PHOTO URL' => [false, "BEGIN:VCARD\r\nVERSION:4.0\r\nPRODID:-//Sabre//Sabre VObject 3.5.0//EN\r\nUID:12345\r\nFN:12345\r\nN:12345;;;;\r\nPHOTO;MEDIATYPE=image/jpeg:http://example.org/photo.jpg\r\nEND:VCARD\r\n"],
];
}
}
diff --git a/apps/federatedfilesharing/l10n/fr.js b/apps/federatedfilesharing/l10n/fr.js
index 36e05254aa6..be792375639 100644
--- a/apps/federatedfilesharing/l10n/fr.js
+++ b/apps/federatedfilesharing/l10n/fr.js
@@ -7,6 +7,8 @@ OC.L10N.register(
"Not allowed to create a federated share with the same user" : "Non autorisé à créer un partage fédéré avec le même utilisateur",
"File is already shared with %s" : "Le fichier est déjà partagé avec %s",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Le partage de %s a échoué : impossible de trouver %s. Peut-être le serveur est-il momentanément injoignable.",
+ "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Vous recevez \"/%3$s\" comme un partage distant depuis %1$s (au nom de %2$s)",
+ "You received \"/%3$s\" as a remote share from %1$s" : "Vous recevez \"/%3$s\" comme un partage distant depuis %1$s",
"Accept" : "Accepter",
"Decline" : "Refuser",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Partagez avec moi grâce à mon identifiant Federated Cloud #Nextcloud %s",
diff --git a/apps/federatedfilesharing/l10n/fr.json b/apps/federatedfilesharing/l10n/fr.json
index 12040fa7481..fae2627bdd7 100644
--- a/apps/federatedfilesharing/l10n/fr.json
+++ b/apps/federatedfilesharing/l10n/fr.json
@@ -5,6 +5,8 @@
"Not allowed to create a federated share with the same user" : "Non autorisé à créer un partage fédéré avec le même utilisateur",
"File is already shared with %s" : "Le fichier est déjà partagé avec %s",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Le partage de %s a échoué : impossible de trouver %s. Peut-être le serveur est-il momentanément injoignable.",
+ "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Vous recevez \"/%3$s\" comme un partage distant depuis %1$s (au nom de %2$s)",
+ "You received \"/%3$s\" as a remote share from %1$s" : "Vous recevez \"/%3$s\" comme un partage distant depuis %1$s",
"Accept" : "Accepter",
"Decline" : "Refuser",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Partagez avec moi grâce à mon identifiant Federated Cloud #Nextcloud %s",
diff --git a/apps/federation/l10n/lb.js b/apps/federation/l10n/lb.js
new file mode 100644
index 00000000000..df0f6d5d07a
--- /dev/null
+++ b/apps/federation/l10n/lb.js
@@ -0,0 +1,15 @@
+OC.L10N.register(
+ "federation",
+ {
+ "Server added to the list of trusted ownClouds" : "De Server gouf op d'Lëscht vun den zouverlässegen ownClouds gesat.",
+ "Server is already in the list of trusted servers." : "De Server ass schonn op der Lëscht vun den zouverlässegen Serveren.",
+ "No ownCloud server found" : "Keen ownCloud Server fonnt",
+ "Could not add server" : "De Server konnt net derbäi gesat ginn",
+ "Federation" : "Federatioun",
+ "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "D'ownCloud Federatioun erlaabt der fir dech mat aneren zouverlässegen ownClouds ze verbannen an d'Benotzer Verzeechnes auszetauschen. Zum Beispill gëtt dëst hei benotzt fir extern Benotzer automatesch fir federatiivt Deelen ze vervollstännegen.",
+ "Add server automatically once a federated share was created successfully" : "Setz de Server automatesch derbäi soubal e federativen Undeel erfollegräich erstallt gouf",
+ "Trusted ownCloud Servers" : "Zouverlässeg ownCloud Serveren",
+ "+ Add ownCloud server" : "+ ownCloud Server derbäi setzen",
+ "ownCloud Server" : "ownCloud Server"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/lb.json b/apps/federation/l10n/lb.json
new file mode 100644
index 00000000000..03179a4b8ee
--- /dev/null
+++ b/apps/federation/l10n/lb.json
@@ -0,0 +1,13 @@
+{ "translations": {
+ "Server added to the list of trusted ownClouds" : "De Server gouf op d'Lëscht vun den zouverlässegen ownClouds gesat.",
+ "Server is already in the list of trusted servers." : "De Server ass schonn op der Lëscht vun den zouverlässegen Serveren.",
+ "No ownCloud server found" : "Keen ownCloud Server fonnt",
+ "Could not add server" : "De Server konnt net derbäi gesat ginn",
+ "Federation" : "Federatioun",
+ "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "D'ownCloud Federatioun erlaabt der fir dech mat aneren zouverlässegen ownClouds ze verbannen an d'Benotzer Verzeechnes auszetauschen. Zum Beispill gëtt dëst hei benotzt fir extern Benotzer automatesch fir federatiivt Deelen ze vervollstännegen.",
+ "Add server automatically once a federated share was created successfully" : "Setz de Server automatesch derbäi soubal e federativen Undeel erfollegräich erstallt gouf",
+ "Trusted ownCloud Servers" : "Zouverlässeg ownCloud Serveren",
+ "+ Add ownCloud server" : "+ ownCloud Server derbäi setzen",
+ "ownCloud Server" : "ownCloud Server"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index e483882fcc5..0d00362ba71 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -2352,13 +2352,16 @@
*/
setFilter:function(filter) {
var total = 0;
+ if (this._filter === filter) {
+ return;
+ }
this._filter = filter;
this.fileSummary.setFilter(filter, this.files);
total = this.fileSummary.getTotal();
if (!this.$el.find('.mask').exists()) {
this.hideIrrelevantUIWhenNoFilesMatch();
}
- var that = this;
+
var visibleCount = 0;
filter = filter.toLowerCase();
@@ -2378,7 +2381,7 @@
if (visibleCount < total) {
$trs = this._nextPage(false);
}
- } while (visibleCount < total);
+ } while (visibleCount < total && $trs.length > 0);
this.$container.trigger('scroll');
},
diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js
index b2d6662a9ce..b09bea28607 100644
--- a/apps/files/l10n/fr.js
+++ b/apps/files/l10n/fr.js
@@ -33,7 +33,15 @@ OC.L10N.register(
"Could not get result from server." : "Ne peut recevoir les résultats du serveur.",
"Uploading..." : "Téléversement en cours…",
"..." : "...",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} heure{plural_s} restante{plural_s}",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minute{plural_s} restante{plural_s}",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} seconde{plural_s} restante{plural_s}",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "D'un instant à l'autre...",
"Soon..." : "Bientôt...",
+ "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} sur {totalSize} ({bitrate})",
"File upload is in progress. Leaving the page now will cancel the upload." : "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier.",
"Actions" : "Actions",
"Download" : "Télécharger",
diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json
index 780ef364b9f..882c40094df 100644
--- a/apps/files/l10n/fr.json
+++ b/apps/files/l10n/fr.json
@@ -31,7 +31,15 @@
"Could not get result from server." : "Ne peut recevoir les résultats du serveur.",
"Uploading..." : "Téléversement en cours…",
"..." : "...",
+ "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} heure{plural_s} restante{plural_s}",
+ "{hours}:{minutes}h" : "{hours}:{minutes}h",
+ "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minute{plural_s} restante{plural_s}",
+ "{minutes}:{seconds}m" : "{minutes}:{seconds}m",
+ "{seconds} second{plural_s} left" : "{seconds} seconde{plural_s} restante{plural_s}",
+ "{seconds}s" : "{seconds}s",
+ "Any moment now..." : "D'un instant à l'autre...",
"Soon..." : "Bientôt...",
+ "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} sur {totalSize} ({bitrate})",
"File upload is in progress. Leaving the page now will cancel the upload." : "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier.",
"Actions" : "Actions",
"Download" : "Télécharger",
diff --git a/apps/files/l10n/lb.js b/apps/files/l10n/lb.js
index d7888f9f197..9fa3a0fdfaa 100644
--- a/apps/files/l10n/lb.js
+++ b/apps/files/l10n/lb.js
@@ -29,14 +29,18 @@ OC.L10N.register(
"Size" : "Gréisst",
"Modified" : "Geännert",
"New" : "Nei",
+ "\"{name}\" is an invalid file name." : "\"{Numm}\" ass een ongültegen Numm fir e Fichier.",
+ "File name cannot be empty." : "Den Numm vum Fichier kann net eidel sinn.",
"Folder" : "Dossier",
"New folder" : "Neien Dossier",
"Upload" : "Eroplueden",
+ "Upload (max. %s)" : "Eroplueden (max. %s)",
"File handling" : "Fichier handling",
"Maximum upload size" : "Maximum Upload Gréisst ",
"max. possible: " : "max. méiglech:",
"Save" : "Späicheren",
"Settings" : "Astellungen",
+ "No files in here" : "Hei sinn keng Fichieren",
"No entries found in this folder" : "Keng Elementer an dësem Dossier fonnt",
"Select all" : "All auswielen",
"Upload too large" : "Upload ze grouss",
diff --git a/apps/files/l10n/lb.json b/apps/files/l10n/lb.json
index a736e06570b..67da26b1ece 100644
--- a/apps/files/l10n/lb.json
+++ b/apps/files/l10n/lb.json
@@ -27,14 +27,18 @@
"Size" : "Gréisst",
"Modified" : "Geännert",
"New" : "Nei",
+ "\"{name}\" is an invalid file name." : "\"{Numm}\" ass een ongültegen Numm fir e Fichier.",
+ "File name cannot be empty." : "Den Numm vum Fichier kann net eidel sinn.",
"Folder" : "Dossier",
"New folder" : "Neien Dossier",
"Upload" : "Eroplueden",
+ "Upload (max. %s)" : "Eroplueden (max. %s)",
"File handling" : "Fichier handling",
"Maximum upload size" : "Maximum Upload Gréisst ",
"max. possible: " : "max. méiglech:",
"Save" : "Späicheren",
"Settings" : "Astellungen",
+ "No files in here" : "Hei sinn keng Fichieren",
"No entries found in this folder" : "Keng Elementer an dësem Dossier fonnt",
"Select all" : "All auswielen",
"Upload too large" : "Upload ze grouss",
diff --git a/apps/files_external/l10n/lb.js b/apps/files_external/l10n/lb.js
index 50bb06ff7f9..29014e55190 100644
--- a/apps/files_external/l10n/lb.js
+++ b/apps/files_external/l10n/lb.js
@@ -15,7 +15,10 @@ OC.L10N.register(
"ownCloud" : "ownCloud",
"Share" : "Deelen",
"Name" : "Numm",
+ "Enable encryption" : "Verschlësselung aschalten",
+ "External Storage" : "Externt Lager",
"Folder name" : "Dossiers Numm:",
+ "Advanced settings" : "Erweidert Astellungen",
"Delete" : "Läschen"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_external/l10n/lb.json b/apps/files_external/l10n/lb.json
index 9f7aa84bb1a..ef3f3d2f333 100644
--- a/apps/files_external/l10n/lb.json
+++ b/apps/files_external/l10n/lb.json
@@ -13,7 +13,10 @@
"ownCloud" : "ownCloud",
"Share" : "Deelen",
"Name" : "Numm",
+ "Enable encryption" : "Verschlësselung aschalten",
+ "External Storage" : "Externt Lager",
"Folder name" : "Dossiers Numm:",
+ "Advanced settings" : "Erweidert Astellungen",
"Delete" : "Läschen"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_external/l10n/sl.js b/apps/files_external/l10n/sl.js
index 3de90f516e7..4b8be728155 100644
--- a/apps/files_external/l10n/sl.js
+++ b/apps/files_external/l10n/sl.js
@@ -18,6 +18,7 @@ OC.L10N.register(
"Error generating key pair" : "Prišlo je do napake med ustvarjanjem para ključev",
"All users. Type to select user or group." : "Vsi uporabniki. Skupino ali uporabnika je mogoče tudi izbrati.",
"(group)" : "(skupina)",
+ "Compatibility with Mac NFD encoding (slow)" : "Usklajenost z Mac NFD šifriranjem (počasno)",
"Admin defined" : "Skrbnik je določen",
"Saved" : "Shranjeno",
"Empty response from the server" : "S strežnika je prejet odziv brez vsebine.",
diff --git a/apps/files_external/l10n/sl.json b/apps/files_external/l10n/sl.json
index de512656d0c..26648ce76df 100644
--- a/apps/files_external/l10n/sl.json
+++ b/apps/files_external/l10n/sl.json
@@ -16,6 +16,7 @@
"Error generating key pair" : "Prišlo je do napake med ustvarjanjem para ključev",
"All users. Type to select user or group." : "Vsi uporabniki. Skupino ali uporabnika je mogoče tudi izbrati.",
"(group)" : "(skupina)",
+ "Compatibility with Mac NFD encoding (slow)" : "Usklajenost z Mac NFD šifriranjem (počasno)",
"Admin defined" : "Skrbnik je določen",
"Saved" : "Shranjeno",
"Empty response from the server" : "S strežnika je prejet odziv brez vsebine.",
diff --git a/apps/files_sharing/l10n/ast.js b/apps/files_sharing/l10n/ast.js
index 2dea9485001..96e83dc54d4 100644
--- a/apps/files_sharing/l10n/ast.js
+++ b/apps/files_sharing/l10n/ast.js
@@ -13,6 +13,7 @@ OC.L10N.register(
"Remote share password" : "Contraseña de compartición remota",
"Cancel" : "Encaboxar",
"Add remote share" : "Amestar compartición remota",
+ "No ownCloud installation (7 or higher) found at {remote}" : "Nun s'atopó nenguna instalación ownCloud (7 o cimera) en { } remotu",
"Invalid ownCloud url" : "Url ownCloud inválida",
"Shared by" : "Compartíos por",
"Sharing" : "Compartiendo",
diff --git a/apps/files_sharing/l10n/ast.json b/apps/files_sharing/l10n/ast.json
index f06f63a44b7..78318f9a479 100644
--- a/apps/files_sharing/l10n/ast.json
+++ b/apps/files_sharing/l10n/ast.json
@@ -11,6 +11,7 @@
"Remote share password" : "Contraseña de compartición remota",
"Cancel" : "Encaboxar",
"Add remote share" : "Amestar compartición remota",
+ "No ownCloud installation (7 or higher) found at {remote}" : "Nun s'atopó nenguna instalación ownCloud (7 o cimera) en { } remotu",
"Invalid ownCloud url" : "Url ownCloud inválida",
"Shared by" : "Compartíos por",
"Sharing" : "Compartiendo",
diff --git a/apps/files_sharing/lib/External/Manager.php b/apps/files_sharing/lib/External/Manager.php
index e338e6e509c..3f665b0978d 100644
--- a/apps/files_sharing/lib/External/Manager.php
+++ b/apps/files_sharing/lib/External/Manager.php
@@ -328,7 +328,7 @@ class Manager {
public function removeShare($mountPoint) {
$mountPointObj = $this->mountManager->find($mountPoint);
- $id = $mountPointObj->getStorage()->getCache()->getId();
+ $id = $mountPointObj->getStorage()->getCache()->getId('');
$mountPoint = $this->stripPath($mountPoint);
$hash = md5($mountPoint);
diff --git a/apps/files_sharing/lib/External/Storage.php b/apps/files_sharing/lib/External/Storage.php
index 29b9c7b563c..bc8d898f8ef 100644
--- a/apps/files_sharing/lib/External/Storage.php
+++ b/apps/files_sharing/lib/External/Storage.php
@@ -32,6 +32,7 @@ use OC\Files\Storage\DAV;
use OC\ForbiddenException;
use OCA\FederatedFileSharing\DiscoveryManager;
use OCA\Files_Sharing\ISharedStorage;
+use OCP\AppFramework\Http;
use OCP\Files\NotFoundException;
use OCP\Files\StorageInvalidException;
use OCP\Files\StorageNotAvailableException;
@@ -181,6 +182,20 @@ class Storage extends DAV implements ISharedStorage {
}
}
+ public function test() {
+ try {
+ parent::test();
+ } catch (StorageInvalidException $e) {
+ // check if it needs to be removed
+ $this->checkStorageAvailability();
+ throw $e;
+ } catch (StorageNotAvailableException $e) {
+ // check if it needs to be removed or just temp unavailable
+ $this->checkStorageAvailability();
+ throw $e;
+ }
+ }
+
/**
* Check whether this storage is permanently or temporarily
* unavailable
@@ -310,10 +325,10 @@ class Storage extends DAV implements ISharedStorage {
'connect_timeout' => 10,
]);
} catch (\GuzzleHttp\Exception\RequestException $e) {
- if ($e->getCode() === 401 || $e->getCode() === 403) {
+ if ($e->getCode() === Http::STATUS_UNAUTHORIZED || $e->getCode() === Http::STATUS_FORBIDDEN) {
throw new ForbiddenException();
}
- if ($e->getCode() === 404) {
+ if ($e->getCode() === Http::STATUS_NOT_FOUND) {
throw new NotFoundException();
}
// throw this to be on the safe side: the share will still be visible
diff --git a/apps/files_versions/js/versionstabview.js b/apps/files_versions/js/versionstabview.js
index 0e17fff466a..b9ccf03c3e2 100644
--- a/apps/files_versions/js/versionstabview.js
+++ b/apps/files_versions/js/versionstabview.js
@@ -15,7 +15,9 @@
'<a href="{{downloadUrl}}" class="downloadVersion"><img src="{{downloadIconUrl}}" />' +
'<span class="versiondate has-tooltip" title="{{formattedTimestamp}}">{{relativeTimestamp}}</span>' +
'</a>' +
+ '{{#canRevert}}' +
'<a href="#" class="revertVersion" title="{{revertLabel}}"><img src="{{revertIconUrl}}" /></a>' +
+ '{{/canRevert}}' +
'</li>';
var TEMPLATE =
@@ -109,6 +111,9 @@
},
error: function() {
+ fileInfoModel.trigger('busy', fileInfoModel, false);
+ self.$el.find('.versions').removeClass('hidden');
+ self._toggleLoading(false);
OC.Notification.showTemporary(
t('files_version', 'Failed to revert {file} to revision {timestamp}.', {
file: versionModel.getFullPath(),
@@ -183,6 +188,7 @@
revertIconUrl: OC.imagePath('core', 'actions/history'),
previewUrl: version.getPreviewUrl(),
revertLabel: t('files_versions', 'Restore'),
+ canRevert: (this.collection.getFileInfo().get('permissions') & OC.PERMISSION_UPDATE) !== 0
}, version.attributes);
},
diff --git a/apps/files_versions/lib/Storage.php b/apps/files_versions/lib/Storage.php
index b14210af7b1..9a0fe0a7b37 100644
--- a/apps/files_versions/lib/Storage.php
+++ b/apps/files_versions/lib/Storage.php
@@ -320,8 +320,16 @@ class Storage {
// add expected leading slash
$file = '/' . ltrim($file, '/');
list($uid, $filename) = self::getUidAndFilename($file);
+ if ($uid === null || trim($filename, '/') === '') {
+ return false;
+ }
$users_view = new View('/'.$uid);
$files_view = new View('/'. User::getUser().'/files');
+
+ if (!$files_view->isUpdatable($filename)) {
+ return false;
+ }
+
$versionCreated = false;
$fileInfo = $files_view->getFileInfo($file);
diff --git a/apps/files_versions/tests/VersioningTest.php b/apps/files_versions/tests/VersioningTest.php
index 2a65682f0fe..832f7bcc66f 100644
--- a/apps/files_versions/tests/VersioningTest.php
+++ b/apps/files_versions/tests/VersioningTest.php
@@ -625,6 +625,40 @@ class VersioningTest extends \Test\TestCase {
$this->doTestRestore();
}
+ public function testRestoreNoPermission() {
+ $this->loginAsUser(self::TEST_VERSIONS_USER);
+
+ $userHome = \OC::$server->getUserFolder(self::TEST_VERSIONS_USER);
+ $node = $userHome->newFolder('folder');
+ $file = $node->newFile('test.txt');
+
+ $share = \OC::$server->getShareManager()->newShare();
+ $share->setNode($node)
+ ->setShareType(\OCP\Share::SHARE_TYPE_USER)
+ ->setSharedBy(self::TEST_VERSIONS_USER)
+ ->setSharedWith(self::TEST_VERSIONS_USER2)
+ ->setPermissions(\OCP\Constants::PERMISSION_READ);
+ $share = \OC::$server->getShareManager()->createShare($share);
+
+ $versions = $this->createAndCheckVersions(
+ \OC\Files\Filesystem::getView(),
+ 'folder/test.txt'
+ );
+
+ $file->putContent('test file');
+
+ $this->loginAsUser(self::TEST_VERSIONS_USER2);
+
+ $firstVersion = current($versions);
+
+ $this->assertFalse(\OCA\Files_Versions\Storage::rollback('folder/test.txt', $firstVersion['version']), 'Revert did not happen');
+
+ $this->loginAsUser(self::TEST_VERSIONS_USER);
+
+ \OC::$server->getShareManager()->deleteShare($share);
+ $this->assertEquals('test file', $file->getContent(), 'File content has not changed');
+ }
+
/**
* @param string $hookName name of hook called
* @param string $params variable to receive parameters provided by hook
@@ -685,7 +719,7 @@ class VersioningTest extends \Test\TestCase {
$params = array();
$this->connectMockHooks('rollback', $params);
- \OCA\Files_Versions\Storage::rollback('sub/test.txt', $t2);
+ $this->assertTrue(\OCA\Files_Versions\Storage::rollback('sub/test.txt', $t2));
$expectedParams = array(
'path' => '/sub/test.txt',
);
@@ -829,6 +863,8 @@ class VersioningTest extends \Test\TestCase {
// note: we cannot predict how many versions are created due to
// test run timing
$this->assertGreaterThan(0, count($versions));
+
+ return $versions;
}
/**
diff --git a/apps/files_versions/tests/js/versionstabviewSpec.js b/apps/files_versions/tests/js/versionstabviewSpec.js
index 306dd66be2a..94285c93aba 100644
--- a/apps/files_versions/tests/js/versionstabviewSpec.js
+++ b/apps/files_versions/tests/js/versionstabviewSpec.js
@@ -39,7 +39,8 @@ describe('OCA.Versions.VersionsTabView', function() {
fetchStub = sinon.stub(VersionCollection.prototype, 'fetch');
fileInfoModel = new OCA.Files.FileInfoModel({
id: 123,
- name: 'test.txt'
+ name: 'test.txt',
+ permissions: OC.PERMISSION_READ | OC.PERMISSION_UPDATE
});
tabView = new VersionsTabView();
tabView.render();
@@ -86,12 +87,37 @@ describe('OCA.Versions.VersionsTabView', function() {
expect($item.find('.revertVersion').length).toEqual(1);
expect($item.find('.preview').attr('src')).toEqual(version2.getPreviewUrl());
});
+
+ it('does not render revert button when no update permissions', function() {
+
+ fileInfoModel.set('permissions', OC.PERMISSION_READ);
+ tabView.setFileInfo(fileInfoModel);
+ tabView.collection.set(testVersions);
+
+ var version1 = testVersions[0];
+ var version2 = testVersions[1];
+ var $versions = tabView.$el.find('.versions>li');
+ expect($versions.length).toEqual(2);
+ var $item = $versions.eq(0);
+ expect($item.find('.downloadVersion').attr('href')).toEqual(version1.getDownloadUrl());
+ expect($item.find('.versiondate').text()).toEqual('seconds ago');
+ expect($item.find('.revertVersion').length).toEqual(0);
+ expect($item.find('.preview').attr('src')).toEqual(version1.getPreviewUrl());
+
+ $item = $versions.eq(1);
+ expect($item.find('.downloadVersion').attr('href')).toEqual(version2.getDownloadUrl());
+ expect($item.find('.versiondate').text()).toEqual('2 days ago');
+ expect($item.find('.revertVersion').length).toEqual(0);
+ expect($item.find('.preview').attr('src')).toEqual(version2.getPreviewUrl());
+ });
});
describe('More versions', function() {
var hasMoreResultsStub;
beforeEach(function() {
+ tabView.setFileInfo(fileInfoModel);
+ fetchStub.reset();
tabView.collection.set(testVersions);
hasMoreResultsStub = sinon.stub(VersionCollection.prototype, 'hasMoreResults');
});
diff --git a/apps/systemtags/l10n/lb.js b/apps/systemtags/l10n/lb.js
index aa83421b4f1..6af879ce2f4 100644
--- a/apps/systemtags/l10n/lb.js
+++ b/apps/systemtags/l10n/lb.js
@@ -2,6 +2,28 @@ OC.L10N.register(
"systemtags",
{
"Tags" : "Etiketten",
+ "Tagged files" : "Etikettéiert Fichieren",
+ "Select tags to filter by" : "Wiel d'Etiketten fir ze siften aus",
+ "Please select tags to filter by" : "Wiel w.e.g. d'Etiketten fir ze siften aus",
+ "No files found for the selected tags" : "Keng Fichieren fir d'ausgewielten Etiketten fonnt",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>System Etiketten</strong> fir e Fichier goufen verännert",
+ "You assigned system tag %3$s" : "Du hues d'System Etikett %3$s zougewisen ",
+ "%1$s assigned system tag %3$s" : "%1$s zougewise System Etikett %3$s",
+ "You unassigned system tag %3$s" : "Du hues d'System Etikett %3$s ewechgeholl",
+ "%1$s unassigned system tag %3$s" : "%1$s System Etikett ewechgeholl %3$s",
+ "You created system tag %2$s" : "Du hues d'System Etikett %2$s erschafen",
+ "%1$s created system tag %2$s" : "%1$s System Etikett erschaf %2$s ",
+ "You deleted system tag %2$s" : "Du hues d'System Etikett %2$s ewechgeholl",
+ "%1$s deleted system tag %2$s" : "%1$s System Etikett ewechgeholl %2$s",
+ "You updated system tag %3$s to %2$s" : "Du hues d'System Etikett %3$s op %2$s erneiert",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s System Etikett erneiert %3$s op %2$s",
+ "You assigned system tag %3$s to %2$s" : "Du hues d'System Etikett %3$s op %2$s zougewisen",
+ "%1$s assigned system tag %3$s to %2$s" : "%1$s zougewise System Etikett %3$s op %2$s",
+ "You unassigned system tag %3$s from %2$s" : "Du hues d'System Etikett %3$s vum %2$s ewechgeholl",
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s System Etikett ewechgeholl %3$s vum %2$s",
+ "%s (restricted)" : "%s (ageschränkt)",
+ "%s (invisible)" : "%s (onsiichtbar)",
+ "No files in here" : "Hei sinn keng Fichieren",
"No entries found in this folder" : "Keng Elementer an dësem Dossier fonnt",
"Name" : "Numm",
"Size" : "Gréisst",
diff --git a/apps/systemtags/l10n/lb.json b/apps/systemtags/l10n/lb.json
index e905615bcd7..c94e08b607b 100644
--- a/apps/systemtags/l10n/lb.json
+++ b/apps/systemtags/l10n/lb.json
@@ -1,5 +1,27 @@
{ "translations": {
"Tags" : "Etiketten",
+ "Tagged files" : "Etikettéiert Fichieren",
+ "Select tags to filter by" : "Wiel d'Etiketten fir ze siften aus",
+ "Please select tags to filter by" : "Wiel w.e.g. d'Etiketten fir ze siften aus",
+ "No files found for the selected tags" : "Keng Fichieren fir d'ausgewielten Etiketten fonnt",
+ "<strong>System tags</strong> for a file have been modified" : "<strong>System Etiketten</strong> fir e Fichier goufen verännert",
+ "You assigned system tag %3$s" : "Du hues d'System Etikett %3$s zougewisen ",
+ "%1$s assigned system tag %3$s" : "%1$s zougewise System Etikett %3$s",
+ "You unassigned system tag %3$s" : "Du hues d'System Etikett %3$s ewechgeholl",
+ "%1$s unassigned system tag %3$s" : "%1$s System Etikett ewechgeholl %3$s",
+ "You created system tag %2$s" : "Du hues d'System Etikett %2$s erschafen",
+ "%1$s created system tag %2$s" : "%1$s System Etikett erschaf %2$s ",
+ "You deleted system tag %2$s" : "Du hues d'System Etikett %2$s ewechgeholl",
+ "%1$s deleted system tag %2$s" : "%1$s System Etikett ewechgeholl %2$s",
+ "You updated system tag %3$s to %2$s" : "Du hues d'System Etikett %3$s op %2$s erneiert",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s System Etikett erneiert %3$s op %2$s",
+ "You assigned system tag %3$s to %2$s" : "Du hues d'System Etikett %3$s op %2$s zougewisen",
+ "%1$s assigned system tag %3$s to %2$s" : "%1$s zougewise System Etikett %3$s op %2$s",
+ "You unassigned system tag %3$s from %2$s" : "Du hues d'System Etikett %3$s vum %2$s ewechgeholl",
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s System Etikett ewechgeholl %3$s vum %2$s",
+ "%s (restricted)" : "%s (ageschränkt)",
+ "%s (invisible)" : "%s (onsiichtbar)",
+ "No files in here" : "Hei sinn keng Fichieren",
"No entries found in this folder" : "Keng Elementer an dësem Dossier fonnt",
"Name" : "Numm",
"Size" : "Gréisst",
diff --git a/apps/updatenotification/l10n/fr.js b/apps/updatenotification/l10n/fr.js
index 61381427700..afcc041fa51 100644
--- a/apps/updatenotification/l10n/fr.js
+++ b/apps/updatenotification/l10n/fr.js
@@ -4,6 +4,7 @@ OC.L10N.register(
"Update notifications" : "Notifications de mises à jour",
"{version} is available. Get more information on how to update." : "La version {version} est disponible. Cliquez ici pour plus d'informations sur comment mettre à jour.",
"Updated channel" : "Canal à jour",
+ "ownCloud core" : "Base d'ownCloud",
"Update for %1$s to version %2$s is available." : "Une mise à jour de %1$s vers la version %2$s est disponible.",
"Updater" : "Mises à jour",
"A new version is available: %s" : "Une nouvelle version est disponible : %s",
@@ -12,6 +13,7 @@ OC.L10N.register(
"Checked on %s" : "Vérifié le %s",
"Update channel:" : "Canal de mise à jour :",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Vous pouvez à tout moment mettre à jour vers une version plus récente ou un canal expérimental. Cependant vous ne pourrez jamais revenir à un canal plus stable.",
- "Notify members of the following groups about available updates:" : "Notifier les membres des groupes suivants des mises à jours disponibles :"
+ "Notify members of the following groups about available updates:" : "Notifier les membres des groupes suivants des mises à jours disponibles :",
+ "Only notification for app updates are available, because the selected update channel for ownCloud itself does not allow notifications." : "Seules les notifications pour le mises à jour d'apllication sont disponibles, car le canal de mise à jour sélectionné pour ownCloud ne propose pas lui-même les mises à jour."
},
"nplurals=2; plural=(n > 1);");
diff --git a/apps/updatenotification/l10n/fr.json b/apps/updatenotification/l10n/fr.json
index 590c3cbb27d..0bd2bb57f83 100644
--- a/apps/updatenotification/l10n/fr.json
+++ b/apps/updatenotification/l10n/fr.json
@@ -2,6 +2,7 @@
"Update notifications" : "Notifications de mises à jour",
"{version} is available. Get more information on how to update." : "La version {version} est disponible. Cliquez ici pour plus d'informations sur comment mettre à jour.",
"Updated channel" : "Canal à jour",
+ "ownCloud core" : "Base d'ownCloud",
"Update for %1$s to version %2$s is available." : "Une mise à jour de %1$s vers la version %2$s est disponible.",
"Updater" : "Mises à jour",
"A new version is available: %s" : "Une nouvelle version est disponible : %s",
@@ -10,6 +11,7 @@
"Checked on %s" : "Vérifié le %s",
"Update channel:" : "Canal de mise à jour :",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Vous pouvez à tout moment mettre à jour vers une version plus récente ou un canal expérimental. Cependant vous ne pourrez jamais revenir à un canal plus stable.",
- "Notify members of the following groups about available updates:" : "Notifier les membres des groupes suivants des mises à jours disponibles :"
+ "Notify members of the following groups about available updates:" : "Notifier les membres des groupes suivants des mises à jours disponibles :",
+ "Only notification for app updates are available, because the selected update channel for ownCloud itself does not allow notifications." : "Seules les notifications pour le mises à jour d'apllication sont disponibles, car le canal de mise à jour sélectionné pour ownCloud ne propose pas lui-même les mises à jour."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/sl.js b/apps/updatenotification/l10n/sl.js
index a59a58731fb..550f2055d22 100644
--- a/apps/updatenotification/l10n/sl.js
+++ b/apps/updatenotification/l10n/sl.js
@@ -13,6 +13,7 @@ OC.L10N.register(
"Checked on %s" : "Zadnjič preverjeno %s",
"Update channel:" : "Posodobi kanal:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Nadgradnja na višjo različico ali preizkusni kanal je vedno mogoča, ne pa tudi povrnitev na predhodno, bolj stabilno različico.",
- "Notify members of the following groups about available updates:" : "Obvestite člane naslednjih skupin o posodobitvah, ki so na voljo:"
+ "Notify members of the following groups about available updates:" : "Obvestite člane naslednjih skupin o posodobitvah, ki so na voljo:",
+ "Only notification for app updates are available, because the selected update channel for ownCloud itself does not allow notifications." : "Na voljo so samo obvestila za posodobitev aplikacije, ker izbrani ownCloud posodobitveni kanal ne omogoča obveščanja."
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");
diff --git a/apps/updatenotification/l10n/sl.json b/apps/updatenotification/l10n/sl.json
index c96c9666fb1..c3575fcfacd 100644
--- a/apps/updatenotification/l10n/sl.json
+++ b/apps/updatenotification/l10n/sl.json
@@ -11,6 +11,7 @@
"Checked on %s" : "Zadnjič preverjeno %s",
"Update channel:" : "Posodobi kanal:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Nadgradnja na višjo različico ali preizkusni kanal je vedno mogoča, ne pa tudi povrnitev na predhodno, bolj stabilno različico.",
- "Notify members of the following groups about available updates:" : "Obvestite člane naslednjih skupin o posodobitvah, ki so na voljo:"
+ "Notify members of the following groups about available updates:" : "Obvestite člane naslednjih skupin o posodobitvah, ki so na voljo:",
+ "Only notification for app updates are available, because the selected update channel for ownCloud itself does not allow notifications." : "Na voljo so samo obvestila za posodobitev aplikacije, ker izbrani ownCloud posodobitveni kanal ne omogoča obveščanja."
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/he.js b/apps/user_ldap/l10n/he.js
index 8ff1a2037e4..f0eb5d35297 100644
--- a/apps/user_ldap/l10n/he.js
+++ b/apps/user_ldap/l10n/he.js
@@ -97,6 +97,7 @@ OC.L10N.register(
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "נמנע מבקשות אוטומטיות של LDAP. מועדף עבור התקנות גדולות, אבל מחייב ידע מסויים של LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "הכנסת מסנני LDAP ידנית (מומלץ עבוק תיקיות גדולות)",
"%s access is limited to users meeting these criteria:" : "%s גישה מוגבלת למשתמשים שעונים על קריטריונים אלו:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "העצמים הבסיסיים למשתמשים הם organizationalPerson, person, user, וכן inetOrgPerson. אם אינך בטוח איזה עצם לבחור, יש להתייעף עם מנהל התיקייה.",
"The filter specifies which LDAP users shall have access to the %s instance." : "הסינון קובע לאיזו משתמשי LDAP תהיה יכולת כניסה למקרה %s.",
"Verify settings and count users" : "מאמת הגדרות וסופר משתמשים",
"Saving" : "שמירה",
@@ -123,17 +124,21 @@ OC.L10N.register(
"User Display Name Field" : "שדה שם תצוגה למשתמש",
"The LDAP attribute to use to generate the user's display name." : "תכונת LDAP לשימוש כדי להפיק את שם התצוגה של המשתמש.",
"2nd User Display Name Field" : "שדה שני לשם תצוגת משתמש",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "אופציונאלי. מאפיין LDAP שיתווסף לפני השם בסוגריים. לדוגמא »John Doe (john.doe@example.org)«.",
"Base User Tree" : "עץ משתמש בסיסי",
"One User Base DN per line" : "משתמש DN בסיסי אחד לשורה",
"User Search Attributes" : "מאפייני חיפוש משתמש",
"Optional; one attribute per line" : "אופציונאלי; מאפיין אחד בשורה",
"Group Display Name Field" : "שדה שם תצוגה לקבוצה",
+ "The LDAP attribute to use to generate the groups's display name." : "מאפיין LDAP לשימוש בהפקת שם תצוגת הקבוצה.",
"Base Group Tree" : "עץ קבוצה בסיסי",
"One Group Base DN per line" : "קבוצת DN בסיסית לשורה",
"Group Search Attributes" : "מאפייני חיפוש קבוצה",
"Group-Member association" : "שיוך חברי-קבוצה",
"Dynamic Group Member URL" : "נתיב חבר קבוצה דינמית",
+ "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "מאפיין LDAP שבעצם קבוצה מכיל נתיב חיפוש שקובע אילו עצמים שייכים לקבוצה. (הגדרה ריקה מבטלת אפשרות לחברות בקבוצה דינמית.)",
"Nested Groups" : "קבוצות משנה",
+ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "כאשר מופעל, קיימת תמיכה לקבוצות המכילות קבוצות משנה. (עובד רק אם מאפיין חבר הקבוצה מכיל DN-ים.)",
"Paging chunksize" : "Paging chunksize",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize משמש לחיפושי paged LDAP שעלולים להחזיר תוצאות גסות כמו ספירת משתמש או קבוצה. (הגדרה כ- 0 מנטרל חיפושי paged LDAP במצבים אלה.)",
"Special Attributes" : "מאפיינים מיוחדים",
@@ -142,6 +147,7 @@ OC.L10N.register(
"in bytes" : "בבתים",
"Email Field" : "שדה דואר אלקטרוני",
"User Home Folder Naming Rule" : "כלל קביעת שם תיקיית בית למשתמש",
+ "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "יש להשאיר ריק לשם משתמש (ברירת מחדל). לחילופין, יש להגדיר מאפיין LDAP/AD.",
"Internal Username" : "שם משתמש פנימי",
"Internal Username Attribute:" : "מאפיין שם משתמש פנימי:",
"Override UUID detection" : "דריסת זיהוי UUID",
diff --git a/apps/user_ldap/l10n/he.json b/apps/user_ldap/l10n/he.json
index 0ad2d1fc61b..75fa25130cc 100644
--- a/apps/user_ldap/l10n/he.json
+++ b/apps/user_ldap/l10n/he.json
@@ -95,6 +95,7 @@
"Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "נמנע מבקשות אוטומטיות של LDAP. מועדף עבור התקנות גדולות, אבל מחייב ידע מסויים של LDAP.",
"Manually enter LDAP filters (recommended for large directories)" : "הכנסת מסנני LDAP ידנית (מומלץ עבוק תיקיות גדולות)",
"%s access is limited to users meeting these criteria:" : "%s גישה מוגבלת למשתמשים שעונים על קריטריונים אלו:",
+ "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "העצמים הבסיסיים למשתמשים הם organizationalPerson, person, user, וכן inetOrgPerson. אם אינך בטוח איזה עצם לבחור, יש להתייעף עם מנהל התיקייה.",
"The filter specifies which LDAP users shall have access to the %s instance." : "הסינון קובע לאיזו משתמשי LDAP תהיה יכולת כניסה למקרה %s.",
"Verify settings and count users" : "מאמת הגדרות וסופר משתמשים",
"Saving" : "שמירה",
@@ -121,17 +122,21 @@
"User Display Name Field" : "שדה שם תצוגה למשתמש",
"The LDAP attribute to use to generate the user's display name." : "תכונת LDAP לשימוש כדי להפיק את שם התצוגה של המשתמש.",
"2nd User Display Name Field" : "שדה שני לשם תצוגת משתמש",
+ "Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«." : "אופציונאלי. מאפיין LDAP שיתווסף לפני השם בסוגריים. לדוגמא »John Doe (john.doe@example.org)«.",
"Base User Tree" : "עץ משתמש בסיסי",
"One User Base DN per line" : "משתמש DN בסיסי אחד לשורה",
"User Search Attributes" : "מאפייני חיפוש משתמש",
"Optional; one attribute per line" : "אופציונאלי; מאפיין אחד בשורה",
"Group Display Name Field" : "שדה שם תצוגה לקבוצה",
+ "The LDAP attribute to use to generate the groups's display name." : "מאפיין LDAP לשימוש בהפקת שם תצוגת הקבוצה.",
"Base Group Tree" : "עץ קבוצה בסיסי",
"One Group Base DN per line" : "קבוצת DN בסיסית לשורה",
"Group Search Attributes" : "מאפייני חיפוש קבוצה",
"Group-Member association" : "שיוך חברי-קבוצה",
"Dynamic Group Member URL" : "נתיב חבר קבוצה דינמית",
+ "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "מאפיין LDAP שבעצם קבוצה מכיל נתיב חיפוש שקובע אילו עצמים שייכים לקבוצה. (הגדרה ריקה מבטלת אפשרות לחברות בקבוצה דינמית.)",
"Nested Groups" : "קבוצות משנה",
+ "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "כאשר מופעל, קיימת תמיכה לקבוצות המכילות קבוצות משנה. (עובד רק אם מאפיין חבר הקבוצה מכיל DN-ים.)",
"Paging chunksize" : "Paging chunksize",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Chunksize משמש לחיפושי paged LDAP שעלולים להחזיר תוצאות גסות כמו ספירת משתמש או קבוצה. (הגדרה כ- 0 מנטרל חיפושי paged LDAP במצבים אלה.)",
"Special Attributes" : "מאפיינים מיוחדים",
@@ -140,6 +145,7 @@
"in bytes" : "בבתים",
"Email Field" : "שדה דואר אלקטרוני",
"User Home Folder Naming Rule" : "כלל קביעת שם תיקיית בית למשתמש",
+ "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." : "יש להשאיר ריק לשם משתמש (ברירת מחדל). לחילופין, יש להגדיר מאפיין LDAP/AD.",
"Internal Username" : "שם משתמש פנימי",
"Internal Username Attribute:" : "מאפיין שם משתמש פנימי:",
"Override UUID detection" : "דריסת זיהוי UUID",