diff options
Diffstat (limited to 'apps')
41 files changed, 176 insertions, 89 deletions
diff --git a/apps/encryption/l10n/fr.js b/apps/encryption/l10n/fr.js index 3ee1c05ffa7..f6016cc3ce6 100644 --- a/apps/encryption/l10n/fr.js +++ b/apps/encryption/l10n/fr.js @@ -28,10 +28,10 @@ OC.L10N.register( "one-time password for server-side-encryption" : "Mot de passe à usage unique pour le chiffrement côté serveur", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de déchiffrer ce fichier : il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le partager à nouveau avec vous.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de lire ce fichier, il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le repartager avec vous. ", - "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Bonjour,\n\nL'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe '%s'.\n\nVeuillez vous connecter dans l'interface web et aller dans la section \"Module de chiffrement de base d'ownCloud\" de vos paramètres personnels. De là, mettez à jour votre mot de passe de chiffrement en entrant le mot de passe fourni dans ce message dans le champ \"Ancien mot de passe de connexion\", et votre mot de passe de connexion actuel.\n", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Bonjour,\n\nL'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe suivant :\n\n%s\n\nVeuillez suivre ces instructions :\n\n1. Connectez-vous à l'interface web et trouvez la section \"Module de chiffrement de base d'ownCloud\" dans vos paramètres personnels;\n\n2. Entrez le mot de passe fourni ci-dessus dans le champ \"Ancien mot de passe de connexion\";\n\n3. Entrez le mot de passe que vous utilisez actuellement pour vous connecter dans le champ \"Actuel mot de passe de connexion\";\n\n4. Validez en cliquant sur le bouton \"Mettre à jour le mot de passe de votre clef privée\".\n", "The share will expire on %s." : "Le partage expirera le %s.", "Cheers!" : "À bientôt !", - "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Bonjour,<br><br>L'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe <strong>%s</strong>.<br><br>\nVeuillez vous connecter dans l'interface web et aller dans la section \"Module de chiffrement de base d'ownCloud\" de vos paramètres personnels. De là, mettez à jour votre mot de passe de chiffrement en entrant le mot de passe fourni dans ce message dans le champ \"Ancien mot de passe de connexion\", et votre mot de passe de connexion actuel.<br><br>", + "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Bonjour,\n<br><br>\nL'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe suivant :\n\n<p style=\"font-family: monospace;\"><b>%s</b></p>\n\n<p>\nVeuillez suivre ces instructions :\n<ol>\n<li>Connectez-vous à l'interface web et trouvez la section <em>\"Module de chiffrement de base d'ownCloud\"</em> dans vos paramètres personnels;</li>\n<li>Entrez le mot de passe fourni ci-dessus dans le champ <em>\"Ancien mot de passe de connexion\"</em>;</li>\n<li>Entrez le mot de passe que vous utilisez actuellement pour vous connecter dans le champ <em>\"Actuel mot de passe de connexion\"</em>;</li>\n<li>Validez en cliquant sur le bouton <em>\"Mettre à jour le mot de passe de votre clef privée\"</em>.</li>\n</ol>\n</p>", "Enable recovery key" : "Activer la clé de récupération", "Disable recovery key" : "Désactiver la clé de récupération", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La clé de récupération est une clé supplémentaire utilisée pour chiffrer les fichiers. Elle permet de récupérer les fichiers des utilisateurs s'ils oublient leur mot de passe.", diff --git a/apps/encryption/l10n/fr.json b/apps/encryption/l10n/fr.json index 3694682d8bc..54a7431db30 100644 --- a/apps/encryption/l10n/fr.json +++ b/apps/encryption/l10n/fr.json @@ -26,10 +26,10 @@ "one-time password for server-side-encryption" : "Mot de passe à usage unique pour le chiffrement côté serveur", "Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de déchiffrer ce fichier : il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le partager à nouveau avec vous.", "Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Impossible de lire ce fichier, il s'agit probablement d'un fichier partagé. Veuillez demander au propriétaire du fichier de le repartager avec vous. ", - "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Bonjour,\n\nL'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe '%s'.\n\nVeuillez vous connecter dans l'interface web et aller dans la section \"Module de chiffrement de base d'ownCloud\" de vos paramètres personnels. De là, mettez à jour votre mot de passe de chiffrement en entrant le mot de passe fourni dans ce message dans le champ \"Ancien mot de passe de connexion\", et votre mot de passe de connexion actuel.\n", + "Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password '%s'.\n\nPlease login to the web interface, go to the section 'ownCloud basic encryption module' of your personal settings and update your encryption password by entering this password into the 'old log-in password' field and your current login-password.\n\n" : "Bonjour,\n\nL'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe suivant :\n\n%s\n\nVeuillez suivre ces instructions :\n\n1. Connectez-vous à l'interface web et trouvez la section \"Module de chiffrement de base d'ownCloud\" dans vos paramètres personnels;\n\n2. Entrez le mot de passe fourni ci-dessus dans le champ \"Ancien mot de passe de connexion\";\n\n3. Entrez le mot de passe que vous utilisez actuellement pour vous connecter dans le champ \"Actuel mot de passe de connexion\";\n\n4. Validez en cliquant sur le bouton \"Mettre à jour le mot de passe de votre clef privée\".\n", "The share will expire on %s." : "Le partage expirera le %s.", "Cheers!" : "À bientôt !", - "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Bonjour,<br><br>L'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe <strong>%s</strong>.<br><br>\nVeuillez vous connecter dans l'interface web et aller dans la section \"Module de chiffrement de base d'ownCloud\" de vos paramètres personnels. De là, mettez à jour votre mot de passe de chiffrement en entrant le mot de passe fourni dans ce message dans le champ \"Ancien mot de passe de connexion\", et votre mot de passe de connexion actuel.<br><br>", + "Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"ownCloud basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Bonjour,\n<br><br>\nL'administrateur a activé le chiffrement sur le serveur. Vos fichiers ont été chiffrés avec le mot de passe suivant :\n\n<p style=\"font-family: monospace;\"><b>%s</b></p>\n\n<p>\nVeuillez suivre ces instructions :\n<ol>\n<li>Connectez-vous à l'interface web et trouvez la section <em>\"Module de chiffrement de base d'ownCloud\"</em> dans vos paramètres personnels;</li>\n<li>Entrez le mot de passe fourni ci-dessus dans le champ <em>\"Ancien mot de passe de connexion\"</em>;</li>\n<li>Entrez le mot de passe que vous utilisez actuellement pour vous connecter dans le champ <em>\"Actuel mot de passe de connexion\"</em>;</li>\n<li>Validez en cliquant sur le bouton <em>\"Mettre à jour le mot de passe de votre clef privée\"</em>.</li>\n</ol>\n</p>", "Enable recovery key" : "Activer la clé de récupération", "Disable recovery key" : "Désactiver la clé de récupération", "The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La clé de récupération est une clé supplémentaire utilisée pour chiffrer les fichiers. Elle permet de récupérer les fichiers des utilisateurs s'ils oublient leur mot de passe.", diff --git a/apps/files/css/files.css b/apps/files/css/files.css index d0a2cce1a86..4afd7193d5e 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -35,13 +35,15 @@ } /* FILE TABLE */ - #filestable { position: relative; - top: 44px; width: 100%; } +#filestable.has-controls { + top: 44px; +} + /* make sure there's enough room for the file actions */ #body-user #filestable { min-width: 688px; /* 768 (mobile break) - 80 (nav width) */ diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js index 77b85ecd7da..8bae8567a05 100644 --- a/apps/files/js/file-upload.js +++ b/apps/files/js/file-upload.js @@ -75,9 +75,6 @@ OC.Upload = { this._uploads.push(jqXHR); } }, - showUploadCancelMessage: _.debounce(function() { - OC.Notification.showTemporary(t('files', 'Upload cancelled.'), {timeout: 10}); - }, 500), /** * Checks the currently known uploads. * returns true if any hxr has the state 'pending' @@ -418,10 +415,10 @@ OC.Upload = { OC.Upload.log('fail', e, data); if (typeof data.textStatus !== 'undefined' && data.textStatus !== 'success' ) { if (data.textStatus === 'abort') { - OC.Upload.showUploadCancelMessage(); + OC.Notification.show(t('files', 'Upload cancelled.')); } else { // HTTP connection problem - OC.Notification.showTemporary(data.errorThrown, {timeout: 10}); + OC.Notification.show(data.errorThrown); if (data.result) { var result = JSON.parse(data.result); if (result && result[0] && result[0].data && result[0].data.code === 'targetnotfound') { @@ -430,6 +427,10 @@ OC.Upload = { } } } + //hide notification after 10 sec + setTimeout(function() { + OC.Notification.hide(); + }, 10000); } OC.Upload.deleteUpload(data); }, diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 6cf82391baf..246c5bd6290 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -226,7 +226,11 @@ } this.breadcrumb = new OCA.Files.BreadCrumb(breadcrumbOptions); - this.$el.find('#controls').prepend(this.breadcrumb.$el); + var $controls = this.$el.find('#controls'); + if ($controls.length > 0) { + $controls.prepend(this.breadcrumb.$el); + this.$table.addClass('has-controls'); + } this._renderNewButton(); diff --git a/apps/files/l10n/sq.js b/apps/files/l10n/sq.js index 296efe6381d..ecd57e49845 100644 --- a/apps/files/l10n/sq.js +++ b/apps/files/l10n/sq.js @@ -27,6 +27,7 @@ OC.L10N.register( "Invalid directory." : "Dosje e pavlefshme", "Files" : "Skedarë", "All files" : "Të gjithë", + "Favorites" : "Të parapëlqyer", "Home" : "Shtëpi", "Close" : "Mbyll", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Nuk mund të ngarkohet {filename} sepse është dosje ose ka 0 byte", @@ -35,9 +36,11 @@ OC.L10N.register( "Upload cancelled." : "Ngarkimi u anullua", "Could not get result from server." : "Nuk mund të merret ndonjë rezultat nga serveri.", "File upload is in progress. Leaving the page now will cancel the upload." : "Skedari duke u ngarkuar. Largimi nga faqja do të anullojë ngarkimin", + "Actions" : "Veprime", "Download" : "Shkarko", "Rename" : "Riemëro", "Delete" : "Fshi", + "Details" : "Hollësi", "Pending" : "Në vijim", "Error moving file." : "Gabim në lëvizjen e skedarëve.", "Error moving file" : "Gabim lëvizjen dokumentave", @@ -60,6 +63,7 @@ OC.L10N.register( "File name cannot be empty." : "Emri i skedarit nuk mund të jetë bosh.", "Your storage is full, files can not be updated or synced anymore!" : "Hapsira juaj e arkivimit është plot, skedarët nuk mund të përditësohen ose sinkronizohen!", "Your storage is almost full ({usedSpacePercent}%)" : "Hapsira juaj e arkivimit është pothuajse në fund ({usedSpacePercent}%)", + "Favorite" : "Vëre te Të parapëlqyerit", "Upload" : "Ngarko", "Text file" : "Skedar tekst", "Folder" : "Dosje", diff --git a/apps/files/l10n/sq.json b/apps/files/l10n/sq.json index 993e38f4644..6ee53a59b4a 100644 --- a/apps/files/l10n/sq.json +++ b/apps/files/l10n/sq.json @@ -25,6 +25,7 @@ "Invalid directory." : "Dosje e pavlefshme", "Files" : "Skedarë", "All files" : "Të gjithë", + "Favorites" : "Të parapëlqyer", "Home" : "Shtëpi", "Close" : "Mbyll", "Unable to upload {filename} as it is a directory or has 0 bytes" : "Nuk mund të ngarkohet {filename} sepse është dosje ose ka 0 byte", @@ -33,9 +34,11 @@ "Upload cancelled." : "Ngarkimi u anullua", "Could not get result from server." : "Nuk mund të merret ndonjë rezultat nga serveri.", "File upload is in progress. Leaving the page now will cancel the upload." : "Skedari duke u ngarkuar. Largimi nga faqja do të anullojë ngarkimin", + "Actions" : "Veprime", "Download" : "Shkarko", "Rename" : "Riemëro", "Delete" : "Fshi", + "Details" : "Hollësi", "Pending" : "Në vijim", "Error moving file." : "Gabim në lëvizjen e skedarëve.", "Error moving file" : "Gabim lëvizjen dokumentave", @@ -58,6 +61,7 @@ "File name cannot be empty." : "Emri i skedarit nuk mund të jetë bosh.", "Your storage is full, files can not be updated or synced anymore!" : "Hapsira juaj e arkivimit është plot, skedarët nuk mund të përditësohen ose sinkronizohen!", "Your storage is almost full ({usedSpacePercent}%)" : "Hapsira juaj e arkivimit është pothuajse në fund ({usedSpacePercent}%)", + "Favorite" : "Vëre te Të parapëlqyerit", "Upload" : "Ngarko", "Text file" : "Skedar tekst", "Folder" : "Dosje", diff --git a/apps/files/l10n/th_TH.js b/apps/files/l10n/th_TH.js index 021179c6432..1cee4efd362 100644 --- a/apps/files/l10n/th_TH.js +++ b/apps/files/l10n/th_TH.js @@ -96,6 +96,9 @@ OC.L10N.register( "%2$s deleted %1$s" : "%2$s ลบ %1$s ออก", "You restored %1$s" : "คุณกู้คืน %1$s", "%2$s restored %1$s" : "%2$s ได้กู้คืน %1$s", + "Changed by %2$s" : "เปลี่ยนแปลงโดย %2$s", + "Deleted by %2$s" : "ลบโดย %2$s", + "Restored by %2$s" : "กู้คืนโดย %2$s", "%s could not be renamed as it has been deleted" : "%s ไม่สามารถเปลี่ยนชื่อเนื่องจากถูกลบไปแล้ว", "%s could not be renamed" : "%s ไม่สามารถเปลี่ยนชื่อ", "Upload (max. %s)" : "อัพโหลด (สูงสุด %s)", diff --git a/apps/files/l10n/th_TH.json b/apps/files/l10n/th_TH.json index 6ce9bc4b9ed..e15e4e5803b 100644 --- a/apps/files/l10n/th_TH.json +++ b/apps/files/l10n/th_TH.json @@ -94,6 +94,9 @@ "%2$s deleted %1$s" : "%2$s ลบ %1$s ออก", "You restored %1$s" : "คุณกู้คืน %1$s", "%2$s restored %1$s" : "%2$s ได้กู้คืน %1$s", + "Changed by %2$s" : "เปลี่ยนแปลงโดย %2$s", + "Deleted by %2$s" : "ลบโดย %2$s", + "Restored by %2$s" : "กู้คืนโดย %2$s", "%s could not be renamed as it has been deleted" : "%s ไม่สามารถเปลี่ยนชื่อเนื่องจากถูกลบไปแล้ว", "%s could not be renamed" : "%s ไม่สามารถเปลี่ยนชื่อ", "Upload (max. %s)" : "อัพโหลด (สูงสุด %s)", diff --git a/apps/files/templates/simplelist.php b/apps/files/templates/simplelist.php index 6b6c018024f..ca26d9b5d5b 100644 --- a/apps/files/templates/simplelist.php +++ b/apps/files/templates/simplelist.php @@ -1,6 +1,3 @@ -<div id="controls"> - <div id="file_action_panel"></div> -</div> <div id='notification'></div> <div id="emptycontent" class="hidden"> diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js index afedf29dc03..633b499934e 100644 --- a/apps/files_external/l10n/de.js +++ b/apps/files_external/l10n/de.js @@ -1,6 +1,9 @@ OC.L10N.register( "files_external", { + "Fetching request tokens failed. Verify that your app key and secret are correct." : "Abrufen des Anfrage-Tokens fehlgeschlagen. Stelle bitte sicher, dass der Anwendungsschlüssel und Sicherheitsschlüssel korrekt sind.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Abrufen des Zugriff-Tokens fehlgeschlagen. Stelle bitte sicher, dass der Anwendungsschlüssel und Sicherheitsschlüssel korrekt sind.", + "Please provide a valid app key and secret." : "Bitte trage einen gültigen App-Key mit Secret ein.", "Step 1 failed. Exception: %s" : "Schritt 1 fehlgeschlagen. Fehlermeldung: %s", "Step 2 failed. Exception: %s" : "Schritt 2 fehlgeschlagen. Fehlermeldung: %s", "External storage" : "Externer Speicher", @@ -11,6 +14,7 @@ OC.L10N.register( "System" : "System", "Grant access" : "Zugriff gestatten", "Access granted" : "Zugriff gestattet", + "Error configuring OAuth2" : "Fehler beim Einrichten von OAuth2", "Generate keys" : "Schlüssel erzeugen", "Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares", "Enable encryption" : "Verschlüsselung aktivieren", @@ -28,6 +32,7 @@ OC.L10N.register( "OAuth1" : "OAuth1", "App key" : "App-Schlüssel", "App secret" : "Geheime Zeichenkette der App", + "OAuth2" : "OAutch2", "Client ID" : "Client-ID", "Client secret" : "Geheime Zeichenkette des Client", "OpenStack" : "OpenStack", @@ -76,6 +81,7 @@ OC.L10N.register( "Scope" : "Anwendungsbereich", "External Storage" : "Externer Speicher", "Folder name" : "Ordnername", + "Authentication" : "Authentifizierung", "Configuration" : "Konfiguration", "Available for" : "Verfügbar für", "Advanced settings" : "Erweiterte Einstellungen", diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json index ef96bdcf0e5..94a89346c5d 100644 --- a/apps/files_external/l10n/de.json +++ b/apps/files_external/l10n/de.json @@ -1,4 +1,7 @@ { "translations": { + "Fetching request tokens failed. Verify that your app key and secret are correct." : "Abrufen des Anfrage-Tokens fehlgeschlagen. Stelle bitte sicher, dass der Anwendungsschlüssel und Sicherheitsschlüssel korrekt sind.", + "Fetching access tokens failed. Verify that your app key and secret are correct." : "Abrufen des Zugriff-Tokens fehlgeschlagen. Stelle bitte sicher, dass der Anwendungsschlüssel und Sicherheitsschlüssel korrekt sind.", + "Please provide a valid app key and secret." : "Bitte trage einen gültigen App-Key mit Secret ein.", "Step 1 failed. Exception: %s" : "Schritt 1 fehlgeschlagen. Fehlermeldung: %s", "Step 2 failed. Exception: %s" : "Schritt 2 fehlgeschlagen. Fehlermeldung: %s", "External storage" : "Externer Speicher", @@ -9,6 +12,7 @@ "System" : "System", "Grant access" : "Zugriff gestatten", "Access granted" : "Zugriff gestattet", + "Error configuring OAuth2" : "Fehler beim Einrichten von OAuth2", "Generate keys" : "Schlüssel erzeugen", "Error generating key pair" : "Fehler beim Erzeugen des Schlüsselpaares", "Enable encryption" : "Verschlüsselung aktivieren", @@ -26,6 +30,7 @@ "OAuth1" : "OAuth1", "App key" : "App-Schlüssel", "App secret" : "Geheime Zeichenkette der App", + "OAuth2" : "OAutch2", "Client ID" : "Client-ID", "Client secret" : "Geheime Zeichenkette des Client", "OpenStack" : "OpenStack", @@ -74,6 +79,7 @@ "Scope" : "Anwendungsbereich", "External Storage" : "Externer Speicher", "Folder name" : "Ordnername", + "Authentication" : "Authentifizierung", "Configuration" : "Konfiguration", "Available for" : "Verfügbar für", "Advanced settings" : "Erweiterte Einstellungen", diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js index 4c249dde970..fb95a24deac 100644 --- a/apps/files_external/l10n/fr.js +++ b/apps/files_external/l10n/fr.js @@ -8,7 +8,7 @@ OC.L10N.register( "Step 2 failed. Exception: %s" : "L’étape 2 a échoué. Erreur : %s", "External storage" : "Stockage externe", "Storage with id \"%i\" not found" : "Stockage avec l'id \"%i\" non trouvé", - "Invalid backend or authentication mechanism class" : "Système de stockage ou méthode d'authentification non valable", + "Invalid backend or authentication mechanism class" : "Service ou méthode d'authentification non valable", "Invalid mount point" : "Point de montage non valide", "Objectstore forbidden" : "\"Objectstore\" interdit", "Invalid storage backend \"%s\"" : "Service de stockage non valide : \"%s\"", @@ -35,7 +35,7 @@ OC.L10N.register( "Saved" : "Sauvegardé", "Access key" : "Clé d'accès", "Secret key" : "Clé secrète", - "Builtin" : "Inclus", + "Builtin" : "Intégré", "None" : "Aucun", "OAuth1" : "OAuth1", "App key" : "App key", @@ -71,7 +71,7 @@ OC.L10N.register( "Location" : "Emplacement", "ownCloud" : "ownCloud", "SFTP" : "SFTP", - "Root" : "Root", + "Root" : "Racine", "SFTP with secret key login" : "SFTP avec identification par clé", "SMB / CIFS" : "SMB / CIFS", "Share" : "Partage", diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json index 19796488b74..15f422dd3fc 100644 --- a/apps/files_external/l10n/fr.json +++ b/apps/files_external/l10n/fr.json @@ -6,7 +6,7 @@ "Step 2 failed. Exception: %s" : "L’étape 2 a échoué. Erreur : %s", "External storage" : "Stockage externe", "Storage with id \"%i\" not found" : "Stockage avec l'id \"%i\" non trouvé", - "Invalid backend or authentication mechanism class" : "Système de stockage ou méthode d'authentification non valable", + "Invalid backend or authentication mechanism class" : "Service ou méthode d'authentification non valable", "Invalid mount point" : "Point de montage non valide", "Objectstore forbidden" : "\"Objectstore\" interdit", "Invalid storage backend \"%s\"" : "Service de stockage non valide : \"%s\"", @@ -33,7 +33,7 @@ "Saved" : "Sauvegardé", "Access key" : "Clé d'accès", "Secret key" : "Clé secrète", - "Builtin" : "Inclus", + "Builtin" : "Intégré", "None" : "Aucun", "OAuth1" : "OAuth1", "App key" : "App key", @@ -69,7 +69,7 @@ "Location" : "Emplacement", "ownCloud" : "ownCloud", "SFTP" : "SFTP", - "Root" : "Root", + "Root" : "Racine", "SFTP with secret key login" : "SFTP avec identification par clé", "SMB / CIFS" : "SMB / CIFS", "Share" : "Partage", diff --git a/apps/files_external/l10n/lt_LT.js b/apps/files_external/l10n/lt_LT.js index 9232ec997d2..741d507db42 100644 --- a/apps/files_external/l10n/lt_LT.js +++ b/apps/files_external/l10n/lt_LT.js @@ -5,6 +5,7 @@ OC.L10N.register( "Personal" : "Asmeniniai", "Grant access" : "Suteikti priėjimą", "Access granted" : "Priėjimas suteiktas", + "Saved" : "Išsaugoti", "None" : "Nieko", "Username" : "Prisijungimo vardas", "Password" : "Slaptažodis", diff --git a/apps/files_external/l10n/lt_LT.json b/apps/files_external/l10n/lt_LT.json index d196c8e00bd..152c48a1035 100644 --- a/apps/files_external/l10n/lt_LT.json +++ b/apps/files_external/l10n/lt_LT.json @@ -3,6 +3,7 @@ "Personal" : "Asmeniniai", "Grant access" : "Suteikti priėjimą", "Access granted" : "Priėjimas suteiktas", + "Saved" : "Išsaugoti", "None" : "Nieko", "Username" : "Prisijungimo vardas", "Password" : "Slaptažodis", diff --git a/apps/files_external/l10n/sq.js b/apps/files_external/l10n/sq.js index 61262e8c8b1..6370486b1b4 100644 --- a/apps/files_external/l10n/sq.js +++ b/apps/files_external/l10n/sq.js @@ -2,17 +2,22 @@ OC.L10N.register( "files_external", { "Personal" : "Personale", + "Enable encryption" : "Aktivizoni fshehtëzim", "Saved" : "U ruajt", "None" : "Asgjë", "Username" : "Përdoruesi", "Password" : "fjalëkalim", + "Public key" : "Kyç publik", "Port" : "Porta", "WebDAV" : "WebDAV", "URL" : "URL-i", + "Dropbox" : "Dropbox", "Host" : "Pritësi", "Location" : "Vendndodhja", + "ownCloud" : "ownCloud", "Share" : "Ndaj", "Name" : "Emri", + "External Storage" : "Depozitim i Jashtëm", "Folder name" : "Emri i Skedarit", "Delete" : "Elimino" }, diff --git a/apps/files_external/l10n/sq.json b/apps/files_external/l10n/sq.json index 20ebd508480..eecc60d7f67 100644 --- a/apps/files_external/l10n/sq.json +++ b/apps/files_external/l10n/sq.json @@ -1,16 +1,21 @@ { "translations": { "Personal" : "Personale", + "Enable encryption" : "Aktivizoni fshehtëzim", "Saved" : "U ruajt", "None" : "Asgjë", "Username" : "Përdoruesi", "Password" : "fjalëkalim", + "Public key" : "Kyç publik", "Port" : "Porta", "WebDAV" : "WebDAV", "URL" : "URL-i", + "Dropbox" : "Dropbox", "Host" : "Pritësi", "Location" : "Vendndodhja", + "ownCloud" : "ownCloud", "Share" : "Ndaj", "Name" : "Emri", + "External Storage" : "Depozitim i Jashtëm", "Folder name" : "Emri i Skedarit", "Delete" : "Elimino" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php index 141994d0050..d00d22765e3 100644 --- a/apps/files_external/templates/settings.php +++ b/apps/files_external/templates/settings.php @@ -26,7 +26,7 @@ <?php $checkboxId = uniqid("checkbox_"); ?> <input type="checkbox" id="<?php p($checkboxId); ?>" - <?php if (!empty($classes)): ?> class="<?php p(implode(' ', $classes)); ?>"<?php endif; ?> + <?php if (!empty($classes)): ?> class="checkbox <?php p(implode(' ', $classes)); ?>"<?php endif; ?> data-parameter="<?php p($parameter->getName()); ?>" <?php if ($value === true): ?> checked="checked"<?php endif; ?> /> @@ -191,7 +191,7 @@ <?php if ($_['isAdminPage']): ?> <br /> - <input type="checkbox" name="allowUserMounting" id="allowUserMounting" + <input type="checkbox" name="allowUserMounting" id="allowUserMounting" class="checkbox" value="1" <?php if ($_['allowUserMounting'] == 'yes') print_unescaped(' checked="checked"'); ?> /> <label for="allowUserMounting"><?php p($l->t('Enable User External Storage')); ?></label> <span id="userMountingMsg" class="msg"></span> @@ -201,7 +201,7 @@ <?php if ($deprecateTo = $backend->getDeprecateTo()): ?> <input type="hidden" id="allowUserMountingBackends<?php p($i); ?>" name="allowUserMountingBackends[]" value="<?php p($backend->getIdentifier()); ?>" data-deprecate-to="<?php p($deprecateTo->getIdentifier()); ?>" /> <?php else: ?> - <input type="checkbox" id="allowUserMountingBackends<?php p($i); ?>" name="allowUserMountingBackends[]" value="<?php p($backend->getIdentifier()); ?>" <?php if ($backend->isVisibleFor(BackendService::VISIBILITY_PERSONAL)) print_unescaped(' checked="checked"'); ?> /> + <input type="checkbox" id="allowUserMountingBackends<?php p($i); ?>" class="checkbox" name="allowUserMountingBackends[]" value="<?php p($backend->getIdentifier()); ?>" <?php if ($backend->isVisibleFor(BackendService::VISIBILITY_PERSONAL)) print_unescaped(' checked="checked"'); ?> /> <label for="allowUserMountingBackends<?php p($i); ?>"><?php p($backend->getText()); ?></label> <br /> <?php endif; ?> <?php $i++; ?> diff --git a/apps/files_external/tests/service/userglobalstoragesservicetest.php b/apps/files_external/tests/service/userglobalstoragesservicetest.php index 7c2516f0477..1b902b6eee5 100644 --- a/apps/files_external/tests/service/userglobalstoragesservicetest.php +++ b/apps/files_external/tests/service/userglobalstoragesservicetest.php @@ -155,8 +155,9 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { /** * @expectedException \DomainException + * @dataProvider deleteStorageDataProvider */ - public function testDeleteStorage() { + public function testDeleteStorage($backendOptions, $rustyStorageId, $expectedCountAfterDeletion) { $backend = $this->backendService->getBackend('identifier:\OCA\Files_External\Lib\Backend\SMB'); $authMechanism = $this->backendService->getAuthMechanism('identifier:\Auth\Mechanism'); @@ -164,7 +165,7 @@ class UserGlobalStoragesServiceTest extends GlobalStoragesServiceTest { $storage->setMountPoint('mountpoint'); $storage->setBackend($backend); $storage->setAuthMechanism($authMechanism); - $storage->setBackendOptions(['password' => 'testPassword']); + $storage->setBackendOptions($backendOptions); $newStorage = $this->globalStoragesService->addStorage($storage); $this->assertEquals(1, $newStorage->getId()); diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js index 0eb2b032e52..295c7cdbb76 100644 --- a/apps/files_sharing/l10n/de.js +++ b/apps/files_sharing/l10n/de.js @@ -45,8 +45,16 @@ OC.L10N.register( "You shared %1$s via link" : "Du hast %1$s über einen Link freigegeben", "Downloaded via public link" : "Runtergeladen mittels öffentlichen Link", "Shared with %2$s" : "Geteilt mit %2$s", + "Shared with group %2$s" : "Geteilt mit Gruppe %2$s", + "Shared with %3$s by %2$s" : "Geteilt mit %3$s von %2$s", + "Shared with group %3$s by %2$s" : "Geteilt mit Gruppe %3$s von %2$s", + "Shared via link by %2$s" : "Geteilt mittels Link von %2$s", + "Shared by %2$s" : "Geteilt von %2$s", + "Shared via public link" : "Geteilt mittels öffentlichen Link", "Shares" : "Freigaben", + "You received %2$s as a remote share from %1$s" : "Du hast %2$s als Remotefreigabe von %1$s erhalten", "Accept" : "Ok", + "Decline" : "Abgelehnt", "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Teile mit mir über meine #ownCloud Federated-Cloud-ID, siehe %s", "Share with me through my #ownCloud Federated Cloud ID" : "Teile mit mir über meine #ownCloud Federated-Cloud-ID", "This share is password-protected" : "Diese Freigabe ist durch ein Passwort geschützt", @@ -72,6 +80,7 @@ OC.L10N.register( "Federated Cloud" : "Federated Cloud", "Your Federated Cloud ID:" : "Deine Federated-Cloud-ID:", "Share it:" : "Zum Teilen:", + "Add to your website" : "Zu deiner Webseite hinzufügen", "Share with me via ownCloud" : "Teile mit mir über ownCloud", "HTML Code:" : "HTML-Code:" }, diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json index 3c0b3dd5714..690e7596ffc 100644 --- a/apps/files_sharing/l10n/de.json +++ b/apps/files_sharing/l10n/de.json @@ -43,8 +43,16 @@ "You shared %1$s via link" : "Du hast %1$s über einen Link freigegeben", "Downloaded via public link" : "Runtergeladen mittels öffentlichen Link", "Shared with %2$s" : "Geteilt mit %2$s", + "Shared with group %2$s" : "Geteilt mit Gruppe %2$s", + "Shared with %3$s by %2$s" : "Geteilt mit %3$s von %2$s", + "Shared with group %3$s by %2$s" : "Geteilt mit Gruppe %3$s von %2$s", + "Shared via link by %2$s" : "Geteilt mittels Link von %2$s", + "Shared by %2$s" : "Geteilt von %2$s", + "Shared via public link" : "Geteilt mittels öffentlichen Link", "Shares" : "Freigaben", + "You received %2$s as a remote share from %1$s" : "Du hast %2$s als Remotefreigabe von %1$s erhalten", "Accept" : "Ok", + "Decline" : "Abgelehnt", "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Teile mit mir über meine #ownCloud Federated-Cloud-ID, siehe %s", "Share with me through my #ownCloud Federated Cloud ID" : "Teile mit mir über meine #ownCloud Federated-Cloud-ID", "This share is password-protected" : "Diese Freigabe ist durch ein Passwort geschützt", @@ -70,6 +78,7 @@ "Federated Cloud" : "Federated Cloud", "Your Federated Cloud ID:" : "Deine Federated-Cloud-ID:", "Share it:" : "Zum Teilen:", + "Add to your website" : "Zu deiner Webseite hinzufügen", "Share with me via ownCloud" : "Teile mit mir über ownCloud", "HTML Code:" : "HTML-Code:" },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index fc8c95c39e6..31680b85fcd 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -40,6 +40,7 @@ OC.L10N.register( "You shared %1$s with group %2$s" : "Vous avez partagé %1$s avec le groupe %2$s", "%2$s shared %1$s with %3$s" : "%2$s a partagé %1$s avec %3$s", "%2$s shared %1$s with group %3$s" : "%2$s partagé %1$s avec le groupe %3$s", + "%2$s shared %1$s via link" : "%2$s a partagé %1$s par lien", "%2$s shared %1$s with you" : "%2$s a partagé %1$s avec vous", "You shared %1$s via link" : "Vous avez partagé %1$s par lien public", "Downloaded via public link" : "Téléchargé par lien public", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index 7b1c7c2f1ce..6a3cca61374 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -38,6 +38,7 @@ "You shared %1$s with group %2$s" : "Vous avez partagé %1$s avec le groupe %2$s", "%2$s shared %1$s with %3$s" : "%2$s a partagé %1$s avec %3$s", "%2$s shared %1$s with group %3$s" : "%2$s partagé %1$s avec le groupe %3$s", + "%2$s shared %1$s via link" : "%2$s a partagé %1$s par lien", "%2$s shared %1$s with you" : "%2$s a partagé %1$s avec vous", "You shared %1$s via link" : "Vous avez partagé %1$s par lien public", "Downloaded via public link" : "Téléchargé par lien public", diff --git a/apps/files_sharing/l10n/sq.js b/apps/files_sharing/l10n/sq.js index c5933a0fa5e..ca2a67f1c9b 100644 --- a/apps/files_sharing/l10n/sq.js +++ b/apps/files_sharing/l10n/sq.js @@ -21,6 +21,7 @@ OC.L10N.register( "sharing is disabled" : "ndarja është çaktivizuar", "For more info, please ask the person who sent this link." : "Për më shumë informacione, ju lutem pyesni personin që iu dërgoi këtë lidhje.", "Download" : "Shkarko", - "Direct link" : "Lidhje direkte" + "Direct link" : "Lidhje direkte", + "Open documentation" : "Hapni dokumentimin" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_sharing/l10n/sq.json b/apps/files_sharing/l10n/sq.json index e7c43d75aca..8118f9033bd 100644 --- a/apps/files_sharing/l10n/sq.json +++ b/apps/files_sharing/l10n/sq.json @@ -19,6 +19,7 @@ "sharing is disabled" : "ndarja është çaktivizuar", "For more info, please ask the person who sent this link." : "Për më shumë informacione, ju lutem pyesni personin që iu dërgoi këtë lidhje.", "Download" : "Shkarko", - "Direct link" : "Lidhje direkte" + "Direct link" : "Lidhje direkte", + "Open documentation" : "Hapni dokumentimin" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/files_sharing/l10n/th_TH.js b/apps/files_sharing/l10n/th_TH.js index c5b644cf254..b1400469af8 100644 --- a/apps/files_sharing/l10n/th_TH.js +++ b/apps/files_sharing/l10n/th_TH.js @@ -43,6 +43,14 @@ OC.L10N.register( "%2$s shared %1$s via link" : "%2$s ได้แชร์ %1$s ผ่านลิงค์", "%2$s shared %1$s with you" : "%2$s ถูกแชร์ %1$s กับคุณ", "You shared %1$s via link" : "คุณแชร์ %1$s ผ่านลิงค์", + "Downloaded via public link" : "ดาวน์โหลดผ่านลิงค์สาธารณะ", + "Shared with %2$s" : "แชร์กับ %2$s", + "Shared with group %2$s" : "แชร์กับกลุ่ม %2$s", + "Shared with %3$s by %2$s" : "แชร์กับ %3$s โดย %2$s", + "Shared with group %3$s by %2$s" : "แชร์กับกลุ่ม %3$s โดย %2$s", + "Shared via link by %2$s" : "แชร์ผ่านลิงค์โดย %2$s", + "Shared by %2$s" : "แชร์โดย %2$s", + "Shared via public link" : "แชร์ผ่านลิงค์สาธารณะ", "Shares" : "แชร์", "You received %2$s as a remote share from %1$s" : "คุณได้รับรีโมทแชร์ %2$s จาก %1$s", "Accept" : "ยอมรับ", diff --git a/apps/files_sharing/l10n/th_TH.json b/apps/files_sharing/l10n/th_TH.json index 4ff45e2734e..a9ee8d6eb53 100644 --- a/apps/files_sharing/l10n/th_TH.json +++ b/apps/files_sharing/l10n/th_TH.json @@ -41,6 +41,14 @@ "%2$s shared %1$s via link" : "%2$s ได้แชร์ %1$s ผ่านลิงค์", "%2$s shared %1$s with you" : "%2$s ถูกแชร์ %1$s กับคุณ", "You shared %1$s via link" : "คุณแชร์ %1$s ผ่านลิงค์", + "Downloaded via public link" : "ดาวน์โหลดผ่านลิงค์สาธารณะ", + "Shared with %2$s" : "แชร์กับ %2$s", + "Shared with group %2$s" : "แชร์กับกลุ่ม %2$s", + "Shared with %3$s by %2$s" : "แชร์กับ %3$s โดย %2$s", + "Shared with group %3$s by %2$s" : "แชร์กับกลุ่ม %3$s โดย %2$s", + "Shared via link by %2$s" : "แชร์ผ่านลิงค์โดย %2$s", + "Shared by %2$s" : "แชร์โดย %2$s", + "Shared via public link" : "แชร์ผ่านลิงค์สาธารณะ", "Shares" : "แชร์", "You received %2$s as a remote share from %1$s" : "คุณได้รับรีโมทแชร์ %2$s จาก %1$s", "Accept" : "ยอมรับ", diff --git a/apps/files_sharing/templates/list.php b/apps/files_sharing/templates/list.php index 55ad55a0a4f..fa0365c749c 100644 --- a/apps/files_sharing/templates/list.php +++ b/apps/files_sharing/templates/list.php @@ -1,7 +1,4 @@ <?php /** @var $l OC_L10N */ ?> -<div id="controls"> - <div id="file_action_panel"></div> -</div> <div id='notification'></div> <div id="emptycontent" class="hidden"></div> diff --git a/apps/files_sharing/templates/settings-admin.php b/apps/files_sharing/templates/settings-admin.php index 376f2b71aee..31bfa78e67d 100644 --- a/apps/files_sharing/templates/settings-admin.php +++ b/apps/files_sharing/templates/settings-admin.php @@ -9,7 +9,7 @@ href="<?php p(link_to_docs('admin-sharing-federated')); ?>"></a> <p> - <input type="checkbox" name="outgoing_server2server_share_enabled" id="outgoingServer2serverShareEnabled" + <input type="checkbox" name="outgoing_server2server_share_enabled" id="outgoingServer2serverShareEnabled" class="checkbox" value="1" <?php if ($_['outgoingServer2serverShareEnabled']) print_unescaped('checked="checked"'); ?> /> <label for="outgoingServer2serverShareEnabled"> <?php p($l->t('Allow users on this server to send shares to other servers'));?> @@ -17,7 +17,7 @@ </p> <p> - <input type="checkbox" name="incoming_server2server_share_enabled" id="incomingServer2serverShareEnabled" + <input type="checkbox" name="incoming_server2server_share_enabled" id="incomingServer2serverShareEnabled" class="checkbox" value="1" <?php if ($_['incomingServer2serverShareEnabled']) print_unescaped('checked="checked"'); ?> /> <label for="incomingServer2serverShareEnabled"> <?php p($l->t('Allow users on this server to receive shares from other servers'));?> diff --git a/apps/files_trashbin/l10n/sq.js b/apps/files_trashbin/l10n/sq.js index be6182a94dd..dd16eaeb09f 100644 --- a/apps/files_trashbin/l10n/sq.js +++ b/apps/files_trashbin/l10n/sq.js @@ -5,11 +5,11 @@ OC.L10N.register( "Couldn't restore %s" : "Nuk munda ta rivendos %s", "Deleted files" : "Skedarë të fshirë ", "Restore" : "Rivendos", + "Delete" : "Elimino", "Delete permanently" : "Fshi përfundimisht", "Error" : "Veprim i gabuar", "restored" : "rivendosur", "Name" : "Emri", - "Deleted" : "Eliminuar", - "Delete" : "Elimino" + "Deleted" : "Eliminuar" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/files_trashbin/l10n/sq.json b/apps/files_trashbin/l10n/sq.json index 735fd8c86b1..fcc5ce08976 100644 --- a/apps/files_trashbin/l10n/sq.json +++ b/apps/files_trashbin/l10n/sq.json @@ -3,11 +3,11 @@ "Couldn't restore %s" : "Nuk munda ta rivendos %s", "Deleted files" : "Skedarë të fshirë ", "Restore" : "Rivendos", + "Delete" : "Elimino", "Delete permanently" : "Fshi përfundimisht", "Error" : "Veprim i gabuar", "restored" : "rivendosur", "Name" : "Emri", - "Deleted" : "Eliminuar", - "Delete" : "Elimino" + "Deleted" : "Eliminuar" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/group_ldap.php b/apps/user_ldap/group_ldap.php index 97ed8fa91ac..cf58e5b902d 100644 --- a/apps/user_ldap/group_ldap.php +++ b/apps/user_ldap/group_ldap.php @@ -247,7 +247,7 @@ class GROUP_LDAP extends BackendUtility implements \OCP\GroupInterface { if(empty($result)) { return false; } - $dn = $result[0]; + $dn = $result[0]['dn'][0]; //and now the group name //NOTE once we have separate ownCloud group IDs and group names we can @@ -491,7 +491,7 @@ class GROUP_LDAP extends BackendUtility implements \OCP\GroupInterface { array($this->access->connection->ldapGroupDisplayName, 'dn')); if (is_array($groups)) { foreach ($groups as $groupobj) { - $groupDN = $groupobj['dn']; + $groupDN = $groupobj['dn'][0]; $allGroups[$groupDN] = $groupobj; $nestedGroups = $this->access->connection->ldapNestedGroups; if (!empty($nestedGroups)) { @@ -653,7 +653,7 @@ class GROUP_LDAP extends BackendUtility implements \OCP\GroupInterface { str_replace('%uid', $member, $this->access->connection->ldapLoginFilter), $this->access->getFilterPartForUserSearch($search) )); - $ldap_users = $this->access->fetchListOfUsers($filter, 'dn'); + $ldap_users = $this->access->fetchListOfUsers($filter, 'dn', 1); if(count($ldap_users) < 1) { continue; } diff --git a/apps/user_ldap/l10n/sq.js b/apps/user_ldap/l10n/sq.js index 48ec0616b0e..72ff0b9f31f 100644 --- a/apps/user_ldap/l10n/sq.js +++ b/apps/user_ldap/l10n/sq.js @@ -5,6 +5,7 @@ OC.L10N.register( "Failed to delete the server configuration" : "dështoi fshirjen e konfigurimit të serverit", "The configuration is valid and the connection could be established!" : "Konfigurimi është i vlefshem dhe lidhja mund të kryhet", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurimi është i saktë por lidhja dështoi. Kontrolloni konfigurimete serverit dhe kredencialet.", + "Select groups" : "Përzgjidhni grupe", "Do you really want to delete the current Server Configuration?" : "Jeni vërtetë të sigurt të fshini konfigurimet aktuale të serverit?", "Confirm Deletion" : "Konfirmoni Fshirjen", "Users" : "Përdoruesit", diff --git a/apps/user_ldap/l10n/sq.json b/apps/user_ldap/l10n/sq.json index 595aee41fad..a38ce28b016 100644 --- a/apps/user_ldap/l10n/sq.json +++ b/apps/user_ldap/l10n/sq.json @@ -3,6 +3,7 @@ "Failed to delete the server configuration" : "dështoi fshirjen e konfigurimit të serverit", "The configuration is valid and the connection could be established!" : "Konfigurimi është i vlefshem dhe lidhja mund të kryhet", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." : "Konfigurimi është i saktë por lidhja dështoi. Kontrolloni konfigurimete serverit dhe kredencialet.", + "Select groups" : "Përzgjidhni grupe", "Do you really want to delete the current Server Configuration?" : "Jeni vërtetë të sigurt të fshini konfigurimet aktuale të serverit?", "Confirm Deletion" : "Konfirmoni Fshirjen", "Users" : "Përdoruesit", diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php index 0707b95013c..32472c13b03 100644 --- a/apps/user_ldap/lib/access.php +++ b/apps/user_ldap/lib/access.php @@ -489,7 +489,7 @@ class Access extends LDAPUtility implements user\IUserTools { /** * gives back the user names as they are used ownClod internally - * @param array $ldapUsers an array with the ldap Users result in style of array ( array ('dn' => foo, 'uid' => bar), ... ) + * @param array $ldapUsers as returned by fetchList() * @return array an array with the user names to use in ownCloud * * gives back the user names as they are used ownClod internally @@ -500,7 +500,7 @@ class Access extends LDAPUtility implements user\IUserTools { /** * gives back the group names as they are used ownClod internally - * @param array $ldapGroups an array with the ldap Groups result in style of array ( array ('dn' => foo, 'cn' => bar), ... ) + * @param array $ldapGroups as returned by fetchList() * @return array an array with the group names to use in ownCloud * * gives back the group names as they are used ownClod internally @@ -510,7 +510,7 @@ class Access extends LDAPUtility implements user\IUserTools { } /** - * @param array $ldapObjects + * @param array $ldapObjects as returned by fetchList() * @param bool $isUsers * @return array */ @@ -523,15 +523,25 @@ class Access extends LDAPUtility implements user\IUserTools { $ownCloudNames = array(); foreach($ldapObjects as $ldapObject) { - $nameByLDAP = isset($ldapObject[$nameAttribute]) ? $ldapObject[$nameAttribute] : null; - $ocName = $this->dn2ocname($ldapObject['dn'], $nameByLDAP, $isUsers); + $nameByLDAP = null; + if( isset($ldapObject[$nameAttribute]) + && is_array($ldapObject[$nameAttribute]) + && isset($ldapObject[$nameAttribute][0]) + ) { + // might be set, but not necessarily. if so, we use it. + $nameByLDAP = $ldapObject[$nameAttribute][0]; + } + + $ocName = $this->dn2ocname($ldapObject['dn'][0], $nameByLDAP, $isUsers); if($ocName) { $ownCloudNames[] = $ocName; if($isUsers) { //cache the user names so it does not need to be retrieved //again later (e.g. sharing dialogue). $this->cacheUserExists($ocName); - $this->cacheUserDisplayName($ocName, $nameByLDAP); + if(!is_null($nameByLDAP)) { + $this->cacheUserDisplayName($ocName, $nameByLDAP); + } } } continue; @@ -682,7 +692,7 @@ class Access extends LDAPUtility implements user\IUserTools { */ public function batchApplyUserAttributes(array $ldapRecords){ foreach($ldapRecords as $userRecord) { - $ocName = $this->dn2ocname($userRecord['dn'], $userRecord[$this->connection->ldapUserDisplayName]); + $ocName = $this->dn2ocname($userRecord['dn'][0], $userRecord[$this->connection->ldapUserDisplayName]); $this->cacheUserExists($ocName); $user = $this->userManager->get($ocName); $user->processAttributes($userRecord); @@ -710,6 +720,11 @@ class Access extends LDAPUtility implements user\IUserTools { if($manyAttributes) { return $list; } else { + $list = array_reduce($list, function($carry, $item) { + $attribute = array_keys($item)[0]; + $carry[] = $item[$attribute][0]; + return $carry; + }, array()); return array_unique($list, SORT_LOCALE_STRING); } } @@ -982,44 +997,29 @@ class Access extends LDAPUtility implements user\IUserTools { if(!is_null($attr)) { $selection = array(); - $multiArray = false; - if(count($attr) > 1) { - $multiArray = true; - $i = 0; - } + $i = 0; foreach($findings as $item) { if(!is_array($item)) { continue; } $item = \OCP\Util::mb_array_change_key_case($item, MB_CASE_LOWER, 'UTF-8'); - - if($multiArray) { - foreach($attr as $key) { - $key = mb_strtolower($key, 'UTF-8'); - if(isset($item[$key])) { - if($key !== 'dn') { - $selection[$i][$key] = $this->resemblesDN($key) ? - $this->sanitizeDN($item[$key][0]) - : $item[$key][0]; - } else { - $selection[$i][$key] = $this->sanitizeDN($item[$key]); - } - } - - } - $i++; - } else { - //tribute to case insensitivity - $key = mb_strtolower($attr[0], 'UTF-8'); - + foreach($attr as $key) { + $key = mb_strtolower($key, 'UTF-8'); if(isset($item[$key])) { - if($this->resemblesDN($key)) { - $selection[] = $this->sanitizeDN($item[$key]); + if(is_array($item[$key]) && isset($item[$key]['count'])) { + unset($item[$key]['count']); + } + if($key !== 'dn') { + $selection[$i][$key] = $this->resemblesDN($key) ? + $this->sanitizeDN($item[$key]) + : $item[$key]; } else { - $selection[] = $item[$key]; + $selection[$i][$key] = [$this->sanitizeDN($item[$key])]; } } + } + $i++; } $findings = $selection; } diff --git a/apps/user_ldap/lib/user/user.php b/apps/user_ldap/lib/user/user.php index 6498cdf913f..d8148035d3f 100644 --- a/apps/user_ldap/lib/user/user.php +++ b/apps/user_ldap/lib/user/user.php @@ -147,21 +147,21 @@ class User { //Quota $attr = strtolower($this->connection->ldapQuotaAttribute); if(isset($ldapEntry[$attr])) { - $this->updateQuota($ldapEntry[$attr]); + $this->updateQuota($ldapEntry[$attr][0]); } unset($attr); //Email $attr = strtolower($this->connection->ldapEmailAttribute); if(isset($ldapEntry[$attr])) { - $this->updateEmail($ldapEntry[$attr]); + $this->updateEmail($ldapEntry[$attr][0]); } unset($attr); //displayName $attr = strtolower($this->connection->ldapUserDisplayName); if(isset($ldapEntry[$attr])) { - $displayName = $ldapEntry[$attr]; + $displayName = $ldapEntry[$attr][0]; if(!empty($displayName)) { $this->storeDisplayName($displayName); $this->access->cacheUserDisplayName($this->getUsername(), $displayName); @@ -171,18 +171,20 @@ class User { // LDAP Username, needed for s2s sharing if(isset($ldapEntry['uid'])) { - $this->storeLDAPUserName($ldapEntry['uid']); + $this->storeLDAPUserName($ldapEntry['uid'][0]); } else if(isset($ldapEntry['samaccountname'])) { - $this->storeLDAPUserName($ldapEntry['samaccountname']); + $this->storeLDAPUserName($ldapEntry['samaccountname'][0]); } + //homePath if(strpos($this->connection->homeFolderNamingRule, 'attr:') === 0) { $attr = strtolower(substr($this->connection->homeFolderNamingRule, strlen('attr:'))); if(isset($ldapEntry[$attr])) { $this->access->cacheUserHome( - $this->getUsername(), $this->getHomePath($ldapEntry[$attr])); + $this->getUsername(), $this->getHomePath($ldapEntry[$attr][0])); } } + //memberOf groups $cacheKey = 'getMemberOf'.$this->getUsername(); $groups = false; @@ -190,11 +192,12 @@ class User { $groups = $ldapEntry['memberof']; } $this->connection->writeToCache($cacheKey, $groups); + //Avatar $attrs = array('jpegphoto', 'thumbnailphoto'); foreach ($attrs as $attr) { if(isset($ldapEntry[$attr])) { - $this->avatarImage = $ldapEntry[$attr]; + $this->avatarImage = $ldapEntry[$attr][0]; $this->updateAvatar(); break; } diff --git a/apps/user_ldap/lib/wizard.php b/apps/user_ldap/lib/wizard.php index 84a1225d6ec..a819b2e0e46 100644 --- a/apps/user_ldap/lib/wizard.php +++ b/apps/user_ldap/lib/wizard.php @@ -435,7 +435,11 @@ class Wizard extends LDAPUtility { // detection will fail later $result = $this->access->searchGroups($filter, array('cn', 'dn'), $limit, $offset); foreach($result as $item) { - $groupNames[] = $item['cn']; + if(!isset($item['cn']) && !is_array($item['cn']) && !isset($item['cn'][0])) { + // just in case - no issue known + continue; + } + $groupNames[] = $item['cn'][0]; $groupEntries[] = $item; } $offset += $limit; diff --git a/apps/user_ldap/tests/group_ldap.php b/apps/user_ldap/tests/group_ldap.php index 132fbfdf687..8ed2bc5c677 100644 --- a/apps/user_ldap/tests/group_ldap.php +++ b/apps/user_ldap/tests/group_ldap.php @@ -145,7 +145,7 @@ class Test_Group_Ldap extends \Test\TestCase { $access->expects($this->once()) ->method('searchGroups') - ->will($this->returnValue(array('cn=foo,dc=barfoo,dc=bar'))); + ->will($this->returnValue([['dn' => ['cn=foo,dc=barfoo,dc=bar']]])); $access->expects($this->once()) ->method('dn2groupname') @@ -221,7 +221,7 @@ class Test_Group_Ldap extends \Test\TestCase { $access->expects($this->once()) ->method('searchGroups') - ->will($this->returnValue(array('cn=foo,dc=barfoo,dc=bar'))); + ->will($this->returnValue([['dn' => ['cn=foo,dc=barfoo,dc=bar']]])); $access->expects($this->once()) ->method('dn2groupname') diff --git a/apps/user_ldap/tests/user_ldap.php b/apps/user_ldap/tests/user_ldap.php index 69a76c0b7ac..0f70c43fc11 100644 --- a/apps/user_ldap/tests/user_ldap.php +++ b/apps/user_ldap/tests/user_ldap.php @@ -124,7 +124,7 @@ class Test_User_Ldap_Direct extends \Test\TestCase { ->method('fetchListOfUsers') ->will($this->returnCallback(function($filter) { if($filter === 'roland') { - return array(array('dn' => 'dnOfRoland,dc=test')); + return array(array('dn' => ['dnOfRoland,dc=test'])); } return array(); })); @@ -133,7 +133,7 @@ class Test_User_Ldap_Direct extends \Test\TestCase { ->method('fetchUsersByLoginName') ->will($this->returnCallback(function($uid) { if($uid === 'roland') { - return array(array('dn' => 'dnOfRoland,dc=test')); + return array(array('dn' => ['dnOfRoland,dc=test'])); } return array(); })); diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index 59c61524c9b..fc8ce361637 100644 --- a/apps/user_ldap/user_ldap.php +++ b/apps/user_ldap/user_ldap.php @@ -78,7 +78,7 @@ class USER_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn public function loginName2UserName($loginName) { try { $ldapRecord = $this->getLDAPUserByLoginName($loginName); - $user = $this->access->userManager->get($ldapRecord['dn']); + $user = $this->access->userManager->get($ldapRecord['dn'][0]); if($user instanceof OfflineUser) { return false; } @@ -119,7 +119,7 @@ class USER_LDAP extends BackendUtility implements \OCP\IUserBackend, \OCP\UserIn } catch(\Exception $e) { return false; } - $dn = $ldapRecord['dn']; + $dn = $ldapRecord['dn'][0]; $user = $this->access->userManager->get($dn); if(!$user instanceof User) { |