aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.htaccess2
-rw-r--r--apps/encryption/l10n/fr.js4
-rw-r--r--apps/encryption/l10n/fr.json4
-rw-r--r--apps/files/css/files.css6
-rw-r--r--apps/files/js/filelist.js8
-rw-r--r--apps/files/l10n/sq.js4
-rw-r--r--apps/files/l10n/sq.json4
-rw-r--r--apps/files/l10n/th_TH.js3
-rw-r--r--apps/files/l10n/th_TH.json3
-rw-r--r--apps/files/templates/simplelist.php3
-rw-r--r--apps/files_external/l10n/de.js6
-rw-r--r--apps/files_external/l10n/de.json6
-rw-r--r--apps/files_external/l10n/fr.js6
-rw-r--r--apps/files_external/l10n/fr.json6
-rw-r--r--apps/files_external/l10n/lt_LT.js1
-rw-r--r--apps/files_external/l10n/lt_LT.json1
-rw-r--r--apps/files_external/l10n/sq.js5
-rw-r--r--apps/files_external/l10n/sq.json5
-rw-r--r--apps/files_external/templates/settings.php6
-rw-r--r--apps/files_external/tests/service/userglobalstoragesservicetest.php5
-rw-r--r--apps/files_sharing/api/server2server.php1
-rw-r--r--apps/files_sharing/l10n/de.js9
-rw-r--r--apps/files_sharing/l10n/de.json9
-rw-r--r--apps/files_sharing/l10n/fr.js1
-rw-r--r--apps/files_sharing/l10n/fr.json1
-rw-r--r--apps/files_sharing/l10n/sq.js3
-rw-r--r--apps/files_sharing/l10n/sq.json3
-rw-r--r--apps/files_sharing/l10n/th_TH.js8
-rw-r--r--apps/files_sharing/l10n/th_TH.json8
-rw-r--r--apps/files_sharing/templates/list.php3
-rw-r--r--apps/files_sharing/templates/settings-admin.php4
-rw-r--r--apps/files_trashbin/js/app.js34
-rw-r--r--apps/files_trashbin/l10n/sq.js4
-rw-r--r--apps/files_trashbin/l10n/sq.json4
-rw-r--r--apps/user_ldap/group_ldap.php6
-rw-r--r--apps/user_ldap/l10n/sq.js1
-rw-r--r--apps/user_ldap/l10n/sq.json1
-rw-r--r--apps/user_ldap/lib/access.php70
-rw-r--r--apps/user_ldap/lib/user/user.php17
-rw-r--r--apps/user_ldap/lib/wizard.php6
-rw-r--r--apps/user_ldap/tests/group_ldap.php4
-rw-r--r--apps/user_ldap/tests/user_ldap.php4
-rw-r--r--apps/user_ldap/user_ldap.php4
-rw-r--r--config/config.sample.php62
-rw-r--r--core/application.php6
-rw-r--r--core/avatar/avatarcontroller.php27
-rw-r--r--core/command/upgrade.php14
-rw-r--r--core/css/icons.css4
-rw-r--r--core/img/actions/edit.pngbin0 -> 169 bytes
-rw-r--r--core/img/actions/edit.svg4
-rw-r--r--core/js/oc-dialogs.js11
-rw-r--r--core/js/update.js3
-rw-r--r--core/l10n/fr.js10
-rw-r--r--core/l10n/fr.json10
-rw-r--r--core/l10n/sq.js9
-rw-r--r--core/l10n/sq.json9
-rw-r--r--core/l10n/th_TH.js1
-rw-r--r--core/l10n/th_TH.json1
-rw-r--r--core/register_command.php2
-rw-r--r--lib/base.php8
-rw-r--r--lib/l10n/fr.js2
-rw-r--r--lib/l10n/fr.json2
-rw-r--r--lib/l10n/lt_LT.js1
-rw-r--r--lib/l10n/lt_LT.json1
-rw-r--r--lib/l10n/sq.js4
-rw-r--r--lib/l10n/sq.json4
-rw-r--r--lib/private/api.php10
-rw-r--r--lib/private/connector/sabre/filesplugin.php6
-rw-r--r--lib/private/share/share.php5
-rw-r--r--lib/private/templatelayout.php2
-rw-r--r--lib/private/updater.php20
-rw-r--r--lib/private/user/database.php32
-rw-r--r--ocs-provider/provider.php20
-rw-r--r--settings/l10n/de.js3
-rw-r--r--settings/l10n/de.json3
-rw-r--r--settings/l10n/el.js1
-rw-r--r--settings/l10n/el.json1
-rw-r--r--settings/l10n/fr.js2
-rw-r--r--settings/l10n/fr.json2
-rw-r--r--settings/l10n/lt_LT.js2
-rw-r--r--settings/l10n/lt_LT.json2
-rw-r--r--settings/l10n/sq.js319
-rw-r--r--settings/l10n/sq.json319
-rw-r--r--settings/l10n/th_TH.js2
-rw-r--r--settings/l10n/th_TH.json2
-rw-r--r--settings/templates/admin.php28
-rw-r--r--tests/core/avatar/avatarcontrollertest.php46
-rw-r--r--tests/lib/api.php44
-rw-r--r--tests/lib/connector/sabre/filesplugin.php6
-rw-r--r--tests/lib/share/share.php56
-rw-r--r--tests/lib/updater.php2
-rw-r--r--tests/ocs-provider/provider.php34
-rw-r--r--version.php6
93 files changed, 1086 insertions, 377 deletions
diff --git a/.htaccess b/.htaccess
index 392b9b41559..75c3362d776 100644
--- a/.htaccess
+++ b/.htaccess
@@ -1,4 +1,4 @@
-# Version: 8.2.0
+# Version: 9.0.0
<IfModule mod_headers.c>
<IfModule mod_fcgid.c>
<IfModule mod_setenvif.c>
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 bdb02c20546..9936c0b9f6c 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/filelist.js b/apps/files/js/filelist.js
index 6cf82391baf..721ebb8c836 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();
@@ -2011,6 +2015,8 @@
self.fileSummary.update();
self.updateSelectionSummary();
self.updateStorageStatistics();
+ // in case there was a "storage full" permanent notification
+ OC.Notification.hide();
} else {
if (result.status === 'error' && result.data.message) {
OC.Notification.show(result.data.message);
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/api/server2server.php b/apps/files_sharing/api/server2server.php
index a74b329aed5..2e0468039b4 100644
--- a/apps/files_sharing/api/server2server.php
+++ b/apps/files_sharing/api/server2server.php
@@ -53,6 +53,7 @@ class Server2Server {
return new \OC_OCS_Result(null, 400, 'The mountpoint name contains invalid characters.');
}
+ // FIXME this should be a method in the user management instead
\OCP\Util::writeLog('files_sharing', 'shareWith before, ' . $shareWith, \OCP\Util::DEBUG);
\OCP\Util::emitHook(
'\OCA\Files_Sharing\API\Server2Server',
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/js/app.js b/apps/files_trashbin/js/app.js
index c3be762f095..807d5704be1 100644
--- a/apps/files_trashbin/js/app.js
+++ b/apps/files_trashbin/js/app.js
@@ -43,19 +43,27 @@ OCA.Trashbin.App = {
fileActions.setDefault('dir', 'Open');
- fileActions.register('all', 'Restore', OC.PERMISSION_READ, OC.imagePath('core', 'actions/history'), function(filename, context) {
- var fileList = context.fileList;
- var tr = fileList.findFileEl(filename);
- var deleteAction = tr.children("td.date").children(".action.delete");
- deleteAction.removeClass('icon-delete').addClass('icon-loading-small');
- fileList.disableActions();
- $.post(OC.filePath('files_trashbin', 'ajax', 'undelete.php'), {
- files: JSON.stringify([filename]),
- dir: fileList.getCurrentDirectory()
- },
- _.bind(fileList._removeCallback, fileList)
- );
- }, t('files_trashbin', 'Restore'));
+ fileActions.registerAction({
+ name: 'Restore',
+ displayName: t('files_trashbin', 'Restore'),
+ type: OCA.Files.FileActions.TYPE_INLINE,
+ mime: 'all',
+ permissions: OC.PERMISSION_READ,
+ icon: OC.imagePath('core', 'actions/history'),
+ actionHandler: function(filename, context) {
+ var fileList = context.fileList;
+ var tr = fileList.findFileEl(filename);
+ var deleteAction = tr.children("td.date").children(".action.delete");
+ deleteAction.removeClass('icon-delete').addClass('icon-loading-small');
+ fileList.disableActions();
+ $.post(OC.filePath('files_trashbin', 'ajax', 'undelete.php'), {
+ files: JSON.stringify([filename]),
+ dir: fileList.getCurrentDirectory()
+ },
+ _.bind(fileList._removeCallback, fileList)
+ );
+ }
+ });
fileActions.registerAction({
name: 'Delete',
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) {
diff --git a/config/config.sample.php b/config/config.sample.php
index 432569f12a9..743d76aae35 100644
--- a/config/config.sample.php
+++ b/config/config.sample.php
@@ -55,12 +55,6 @@ $CONFIG = array(
'passwordsalt' => '',
/**
- * The hashing cost used by hashes generated by ownCloud
- * Using a higher value requires more time and CPU power to calculate the hashes
- */
-'hashingCost' => 10,
-
-/**
* Your list of trusted domains that users can log into. Specifying trusted
* domains prevents host header poisoning. Do not remove this, as it performs
* necessary security checks.
@@ -80,16 +74,6 @@ $CONFIG = array(
'datadirectory' => '/var/www/owncloud/data',
/**
- * Override where ownCloud stores temporary files. Useful in situations where
- * the system temporary directory is on a limited space ramdisk or is otherwise
- * restricted, or if external storages which do not support streaming are in
- * use.
- *
- * The web server user must have write access to this directory.
- */
-'tempdirectory' => '/tmp/owncloudtemp',
-
-/**
* The current version number of your ownCloud installation. This is set up
* during installation and update, so you shouldn't need to change it.
*/
@@ -140,20 +124,6 @@ $CONFIG = array(
'dbtableprefix' => '',
/**
- * Additional driver options for the database connection, eg. to enable SSL
- * encryption in MySQL.
- */
-'dbdriveroptions' => array(
- PDO::MYSQL_ATTR_SSL_CA => '/file/path/to/ca_cert.pem',
-),
-
-/**
- * sqlite3 journal mode can be specified using this config parameter - can be
- * 'WAL' or 'DELETE' see for more details https://www.sqlite.org/wal.html
- */
-'sqlite.journal_mode' => 'DELETE',
-
-/**
* Indicates whether the ownCloud instance was installed successfully; ``true``
* indicates a successful installation, and ``false`` indicates an unsuccessful
* installation.
@@ -975,6 +945,24 @@ $CONFIG = array(
),
/**
+ * All other config options
+ */
+
+/**
+ * Additional driver options for the database connection, eg. to enable SSL
+ * encryption in MySQL.
+ */
+'dbdriveroptions' => array(
+ PDO::MYSQL_ATTR_SSL_CA => '/file/path/to/ca_cert.pem',
+),
+
+/**
+ * sqlite3 journal mode can be specified using this config parameter - can be
+ * 'WAL' or 'DELETE' see for more details https://www.sqlite.org/wal.html
+ */
+'sqlite.journal_mode' => 'DELETE',
+
+/**
* Database types that are supported for installation.
*
* Available:
@@ -991,8 +979,20 @@ $CONFIG = array(
),
/**
- * All other config options
+ * Override where ownCloud stores temporary files. Useful in situations where
+ * the system temporary directory is on a limited space ramdisk or is otherwise
+ * restricted, or if external storages which do not support streaming are in
+ * use.
+ *
+ * The web server user must have write access to this directory.
*/
+'tempdirectory' => '/tmp/owncloudtemp',
+
+/**
+ * The hashing cost used by hashes generated by ownCloud
+ * Using a higher value requires more time and CPU power to calculate the hashes
+ */
+'hashingCost' => 10,
/**
* Blacklist a specific file or files and disallow the upload of files
diff --git a/core/application.php b/core/application.php
index 12ec6b63fd4..eab2c686dc1 100644
--- a/core/application.php
+++ b/core/application.php
@@ -85,7 +85,8 @@ class Application extends App {
$c->query('L10N'),
$c->query('UserManager'),
$c->query('UserSession'),
- $c->query('UserFolder')
+ $c->query('UserFolder'),
+ $c->query('Logger')
);
});
@@ -128,6 +129,9 @@ class Application extends App {
$container->registerService('Mailer', function(SimpleContainer $c) {
return $c->query('ServerContainer')->getMailer();
});
+ $container->registerService('Logger', function(SimpleContainer $c) {
+ return $c->query('ServerContainer')->getLogger();
+ });
$container->registerService('TimeFactory', function(SimpleContainer $c) {
return new TimeFactory();
});
diff --git a/core/avatar/avatarcontroller.php b/core/avatar/avatarcontroller.php
index 97b3615c032..e15b47e9a84 100644
--- a/core/avatar/avatarcontroller.php
+++ b/core/avatar/avatarcontroller.php
@@ -30,7 +30,7 @@ use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Http\DataDisplayResponse;
use OCP\IAvatarManager;
-use OCP\ICache;
+use OCP\ILogger;
use OCP\IL10N;
use OCP\IRequest;
use OCP\IUserManager;
@@ -62,6 +62,9 @@ class AvatarController extends Controller {
/** @var Folder */
protected $userFolder;
+ /** @var ILogger */
+ protected $logger;
+
/**
* @param string $appName
* @param IRequest $request
@@ -71,6 +74,7 @@ class AvatarController extends Controller {
* @param IUserManager $userManager
* @param IUserSession $userSession
* @param Folder $userFolder
+ * @param ILogger $logger
*/
public function __construct($appName,
IRequest $request,
@@ -79,7 +83,8 @@ class AvatarController extends Controller {
IL10N $l10n,
IUserManager $userManager,
IUserSession $userSession,
- Folder $userFolder) {
+ Folder $userFolder,
+ ILogger $logger) {
parent::__construct($appName, $request);
$this->avatarManager = $avatarManager;
@@ -88,6 +93,7 @@ class AvatarController extends Controller {
$this->userManager = $userManager;
$this->userSession = $userSession;
$this->userFolder = $userFolder;
+ $this->logger = $logger;
}
/**
@@ -218,11 +224,8 @@ class AvatarController extends Controller {
);
}
} catch (\Exception $e) {
- return new DataResponse(
- ['data' => ['message' => $e->getMessage()]],
- Http::STATUS_OK,
- $headers
- );
+ $this->logger->logException($e, ['app' => 'core']);
+ return new DataResponse(['data' => ['message' => $this->l->t('An error occurred. Please contact your admin.')]], Http::STATUS_OK, $headers);
}
}
@@ -239,7 +242,8 @@ class AvatarController extends Controller {
$avatar->remove();
return new DataResponse();
} catch (\Exception $e) {
- return new DataResponse(['data' => ['message' => $e->getMessage()]], Http::STATUS_BAD_REQUEST);
+ $this->logger->logException($e, ['app' => 'core']);
+ return new DataResponse(['data' => ['message' => $this->l->t('An error occurred. Please contact your admin.')]], Http::STATUS_BAD_REQUEST);
}
}
@@ -307,10 +311,9 @@ class AvatarController extends Controller {
} catch (\OC\NotSquareException $e) {
return new DataResponse(['data' => ['message' => $this->l->t('Crop is not square')]],
Http::STATUS_BAD_REQUEST);
-
- }catch (\Exception $e) {
- return new DataResponse(['data' => ['message' => $e->getMessage()]],
- Http::STATUS_BAD_REQUEST);
+ } catch (\Exception $e) {
+ $this->logger->logException($e, ['app' => 'core']);
+ return new DataResponse(['data' => ['message' => $this->l->t('An error occurred. Please contact your admin.')]], Http::STATUS_BAD_REQUEST);
}
}
}
diff --git a/core/command/upgrade.php b/core/command/upgrade.php
index 0f1b828ba25..5d4819f6baf 100644
--- a/core/command/upgrade.php
+++ b/core/command/upgrade.php
@@ -30,6 +30,7 @@ namespace OC\Core\Command;
use OC\Console\TimestampFormatter;
use OC\Updater;
use OCP\IConfig;
+use OCP\ILogger;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
@@ -44,17 +45,19 @@ class Upgrade extends Command {
const ERROR_INVALID_ARGUMENTS = 4;
const ERROR_FAILURE = 5;
- /**
- * @var IConfig
- */
+ /** @var IConfig */
private $config;
+ /** @var ILogger */
+ private $logger;
+
/**
* @param IConfig $config
*/
- public function __construct(IConfig $config) {
+ public function __construct(IConfig $config, ILogger $logger) {
parent::__construct();
$this->config = $config;
+ $this->logger = $logger;
}
protected function configure() {
@@ -126,7 +129,8 @@ class Upgrade extends Command {
$self = $this;
$updater = new Updater(\OC::$server->getHTTPHelper(),
- $this->config);
+ $this->config,
+ $this->logger);
$updater->setSimulateStepEnabled($simulateStepEnabled);
$updater->setUpdateStepEnabled($updateStepEnabled);
diff --git a/core/css/icons.css b/core/css/icons.css
index 2461ee46c9f..14b2101b331 100644
--- a/core/css/icons.css
+++ b/core/css/icons.css
@@ -78,6 +78,10 @@
background-image: url('../img/actions/download.svg');
}
+.icon-edit {
+ background-image: url('../img/actions/edit.svg');
+}
+
.icon-external {
background-image: url('../img/actions/external.svg');
}
diff --git a/core/img/actions/edit.png b/core/img/actions/edit.png
new file mode 100644
index 00000000000..7ca20eba363
--- /dev/null
+++ b/core/img/actions/edit.png
Binary files differ
diff --git a/core/img/actions/edit.svg b/core/img/actions/edit.svg
new file mode 100644
index 00000000000..a8ab95e615b
--- /dev/null
+++ b/core/img/actions/edit.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <path style="color:#000000;block-progression:tb;text-transform:none;text-indent:0" d="m2.3496 1.002c-0.1975 0.0382-0.3531 0.2333-0.3496 0.4375v13.122c0 0.23 0.2061 0.438 0.4316 0.438h11.138c0.226 0 0.432-0.208 0.432-0.438v-10.142c-0.004-0.0669-0.023-0.133-0.055-0.1915l-3.312-3.1992c-0.043-0.0164-0.089-0.0255-0.135-0.0273h-8.0684c-0.0268-0.00265-0.0552-0.00265-0.082 0zm1.6504 1.998h6v1h-6v-1zm0 3h5v1h-5v-1zm0 3h8v1h-8v-1zm0 3h4v1h-4v-1z"/>
+</svg>
diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js
index 7af50c4ddfc..67860c0c7a4 100644
--- a/core/js/oc-dialogs.js
+++ b/core/js/oc-dialogs.js
@@ -601,6 +601,14 @@ var OCdialogs = {
$(dialogId).css('height','auto');
+ var $primaryButton = $dlg.closest('.oc-dialog').find('button.continue');
+ $primaryButton.prop('disabled', true);
+
+ function updatePrimaryButton() {
+ var checkedCount = $dlg.find('.conflicts .checkbox:checked').length;
+ $primaryButton.prop('disabled', checkedCount === 0);
+ }
+
//add checkbox toggling actions
$(dialogId).find('.allnewfiles').on('click', function() {
var $checkboxes = $(dialogId).find('.conflict .replacement input[type="checkbox"]');
@@ -632,6 +640,7 @@ var OCdialogs = {
$(dialogId).find('.allnewfiles').prop('checked', false);
$(dialogId).find('.allnewfiles + .count').text('');
}
+ updatePrimaryButton();
});
$(dialogId).on('click', '.original,.allexistingfiles', function(){
var count = $(dialogId).find('.conflict .original input[type="checkbox"]:checked').length;
@@ -646,7 +655,9 @@ var OCdialogs = {
$(dialogId).find('.allexistingfiles').prop('checked', false);
$(dialogId).find('.allexistingfiles + .count').text('');
}
+ updatePrimaryButton();
});
+
dialogDeferred.resolve();
})
.fail(function() {
diff --git a/core/js/update.js b/core/js/update.js
index fd3c7a56bd6..bc8df0e20c0 100644
--- a/core/js/update.js
+++ b/core/js/update.js
@@ -45,9 +45,10 @@
hasWarnings = true;
});
updateEventSource.listen('error', function(message) {
+ message = message || t('core', 'An error occurred.');
$('<span>').addClass('error').append(message).append('<br />').appendTo($el);
message = t('core', 'Please reload the page.');
- $('<span>').addClass('error').append(message).append('<br />').appendTo($el);
+ $('<span>').addClass('error').append('<a href=".">'+message+'</a><br />').appendTo($el);
updateEventSource.close();
});
updateEventSource.listen('failure', function(message) {
diff --git a/core/l10n/fr.js b/core/l10n/fr.js
index 678429e9c75..eac5c9ad233 100644
--- a/core/l10n/fr.js
+++ b/core/l10n/fr.js
@@ -109,7 +109,7 @@ OC.L10N.register(
"No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Aucun cache de la mémoire n'est configuré. Si possible, configurez un \"memcache\" pour augmenter les performances. Pour plus d'information consultez la <a href=\"{docLink}\">documentation</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom n'est pas lisible par PHP, ce qui est fortement déconseillé pour des raisons de sécurité. Plus d'informations peuvent être trouvées dans notre <a href=\"{docLink}\">documentation</a>.",
"Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La version de PHP utilisée ({version}) <a href=\"{phpLink}\">n'est plus prise en charge par les créateurs de PHP</a>. Nous vous recommandons de mettre à niveau votre installation de PHP pour bénéficier de meilleures performances et des mises à jour de sécurité fournies par PHP.",
- "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "L'entête du fichier de configuration du reverse proxy est incorrect, ou vous accédez ownCloud depuis un proxy de confiance. Si vous n'êtes pas en train d’accédé ownCloud depuis un proxy de confiance, ceci est un problème de sécurité and peut permettre à un attaquant de parodier son adresse IP visible par ownCloud. Plus d'information est accessible dans notre <a href=\"{docLink}\">documentation</a>.",
+ "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "La configuration des headers du reverse proxy est incorrecte, ou vous accédez ownCloud depuis un proxy de confiance. Si vous n'êtes pas en train d’accéder à ownCloud depuis un proxy de confiance, ceci est un problème de sécurité qui peut permettre à un attaquant de masquer sa véritable adresse IP. <a href=\"{docLink}\">Plus d'info dans la documentation.</a>",
"Error occurred while checking server setup" : "Une erreur s'est produite lors de la vérification de la configuration du serveur",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "L'en-tête HTTP \"{header}\" n'est pas configurée pour être égale à \"{expected}\" créant potentiellement un risque relié à la sécurité et à la vie privée. Il est donc recommandé d'ajuster ce paramètre.",
"The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "L'en-tête HTTP \"Strict-Transport-Security\" n'est pas configurée à \"{seconds}\" secondes. Pour renforcer la sécurité nous recommandons d'activer HSTS comme décrit dans notre <a href=\"{docUrl}\">Guide pour le renforcement et la sécurité</a>.",
@@ -145,9 +145,9 @@ OC.L10N.register(
"Unshare" : "Ne plus partager",
"can share" : "peut partager",
"can edit" : "peut modifier",
- "create" : "créer",
+ "create" : "création",
"change" : "modification",
- "delete" : "supprimer",
+ "delete" : "suppression",
"access control" : "contrôle d'accès",
"Share details could not be loaded for this item." : "Les informations de partage n'ont pu être chargées pour cet élément.",
"An error occured. Please try again" : "Une erreur est survenue. Merci de réessayer",
@@ -227,7 +227,7 @@ OC.L10N.register(
"Storage & database" : "Stockage & base de données",
"Data folder" : "Répertoire des données",
"Configure the database" : "Configurer la base de données",
- "Only %s is available." : "%s seulement est disponible.",
+ "Only %s is available." : "Seul(e) %s est disponible.",
"Install and activate additional PHP modules to choose other database types." : "Installez et activez les modules PHP additionnels adéquats pour choisir d'autres types de base de données.",
"For more details check out the documentation." : "Consultez la documentation pour plus de détails.",
"Database user" : "Utilisateur de la base de données",
@@ -235,7 +235,7 @@ OC.L10N.register(
"Database name" : "Nom de la base de données",
"Database tablespace" : "Tablespace de la base de données",
"Database host" : "Hôte de la base de données",
- "Performance warning" : "Avertissement de performance",
+ "Performance warning" : "Avertissement à propos des performances",
"SQLite will be used as database." : "SQLite sera utilisé comme gestionnaire de base de données.",
"For larger installations we recommend to choose a different database backend." : "Pour des installations plus volumineuses, nous vous conseillons d'utiliser un autre gestionnaire de base de données.",
"Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "En particulier si vous utilisez le client de bureau pour synchroniser vos données : l'utilisation de SQLite est alors déconseillée.",
diff --git a/core/l10n/fr.json b/core/l10n/fr.json
index 105a6b25697..18817897c43 100644
--- a/core/l10n/fr.json
+++ b/core/l10n/fr.json
@@ -107,7 +107,7 @@
"No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "Aucun cache de la mémoire n'est configuré. Si possible, configurez un \"memcache\" pour augmenter les performances. Pour plus d'information consultez la <a href=\"{docLink}\">documentation</a>.",
"/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "/dev/urandom n'est pas lisible par PHP, ce qui est fortement déconseillé pour des raisons de sécurité. Plus d'informations peuvent être trouvées dans notre <a href=\"{docLink}\">documentation</a>.",
"Your PHP version ({version}) is no longer <a href=\"{phpLink}\">supported by PHP</a>. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP." : "La version de PHP utilisée ({version}) <a href=\"{phpLink}\">n'est plus prise en charge par les créateurs de PHP</a>. Nous vous recommandons de mettre à niveau votre installation de PHP pour bénéficier de meilleures performances et des mises à jour de sécurité fournies par PHP.",
- "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "L'entête du fichier de configuration du reverse proxy est incorrect, ou vous accédez ownCloud depuis un proxy de confiance. Si vous n'êtes pas en train d’accédé ownCloud depuis un proxy de confiance, ceci est un problème de sécurité and peut permettre à un attaquant de parodier son adresse IP visible par ownCloud. Plus d'information est accessible dans notre <a href=\"{docLink}\">documentation</a>.",
+ "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a href=\"{docLink}\">documentation</a>." : "La configuration des headers du reverse proxy est incorrecte, ou vous accédez ownCloud depuis un proxy de confiance. Si vous n'êtes pas en train d’accéder à ownCloud depuis un proxy de confiance, ceci est un problème de sécurité qui peut permettre à un attaquant de masquer sa véritable adresse IP. <a href=\"{docLink}\">Plus d'info dans la documentation.</a>",
"Error occurred while checking server setup" : "Une erreur s'est produite lors de la vérification de la configuration du serveur",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "L'en-tête HTTP \"{header}\" n'est pas configurée pour être égale à \"{expected}\" créant potentiellement un risque relié à la sécurité et à la vie privée. Il est donc recommandé d'ajuster ce paramètre.",
"The \"Strict-Transport-Security\" HTTP header is not configured to least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "L'en-tête HTTP \"Strict-Transport-Security\" n'est pas configurée à \"{seconds}\" secondes. Pour renforcer la sécurité nous recommandons d'activer HSTS comme décrit dans notre <a href=\"{docUrl}\">Guide pour le renforcement et la sécurité</a>.",
@@ -143,9 +143,9 @@
"Unshare" : "Ne plus partager",
"can share" : "peut partager",
"can edit" : "peut modifier",
- "create" : "créer",
+ "create" : "création",
"change" : "modification",
- "delete" : "supprimer",
+ "delete" : "suppression",
"access control" : "contrôle d'accès",
"Share details could not be loaded for this item." : "Les informations de partage n'ont pu être chargées pour cet élément.",
"An error occured. Please try again" : "Une erreur est survenue. Merci de réessayer",
@@ -225,7 +225,7 @@
"Storage & database" : "Stockage & base de données",
"Data folder" : "Répertoire des données",
"Configure the database" : "Configurer la base de données",
- "Only %s is available." : "%s seulement est disponible.",
+ "Only %s is available." : "Seul(e) %s est disponible.",
"Install and activate additional PHP modules to choose other database types." : "Installez et activez les modules PHP additionnels adéquats pour choisir d'autres types de base de données.",
"For more details check out the documentation." : "Consultez la documentation pour plus de détails.",
"Database user" : "Utilisateur de la base de données",
@@ -233,7 +233,7 @@
"Database name" : "Nom de la base de données",
"Database tablespace" : "Tablespace de la base de données",
"Database host" : "Hôte de la base de données",
- "Performance warning" : "Avertissement de performance",
+ "Performance warning" : "Avertissement à propos des performances",
"SQLite will be used as database." : "SQLite sera utilisé comme gestionnaire de base de données.",
"For larger installations we recommend to choose a different database backend." : "Pour des installations plus volumineuses, nous vous conseillons d'utiliser un autre gestionnaire de base de données.",
"Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "En particulier si vous utilisez le client de bureau pour synchroniser vos données : l'utilisation de SQLite est alors déconseillée.",
diff --git a/core/l10n/sq.js b/core/l10n/sq.js
index 794b9bc553d..aa91e052861 100644
--- a/core/l10n/sq.js
+++ b/core/l10n/sq.js
@@ -97,23 +97,31 @@ OC.L10N.register(
"Email sent" : "Email-i u dërgua",
"Resharing is not allowed" : "Rindarja nuk lejohet",
"Share link" : "Ndaje lidhjen",
+ "Link" : "Lidhje",
"Password protect" : "Mbro me kod",
"Password" : "Kodi",
"Choose a password for the public link" : "Zgjidhni një fjalëkalim për lidhjen publike",
+ "Allow editing" : "Lejo përpunim",
"Email link to person" : "Dërgo email me lidhjen",
"Send" : "Dërgo",
"Shared with you and the group {group} by {owner}" : "Ndarë me ju dhe me grupin {group} nga {owner}",
"Shared with you by {owner}" : "Ndarë me ju nga {owner}",
"Shared in {item} with {user}" : "Ndarë në {item} me {user}",
"group" : "grupi",
+ "remote" : "e largët",
"notify by email" : "njofto me email",
"Unshare" : "Hiq ndarjen",
"can share" : "mund të ndajnë",
"can edit" : "mund të ndryshosh",
"create" : "krijo",
+ "change" : "ndërroje",
"delete" : "elimino",
"access control" : "kontrollimi i hyrjeve",
+ "An error occured. Please try again" : "Ndodhi një gabim. Ju lutemi, riprovoni",
"Share" : "Nda",
+ "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Ndani me persona në ownCloud-e të tjera duke përdorur sintaksën username@example.com/owncloud",
+ "Share with users or groups …" : "Ndajeni me përdorues ose grupe …",
+ "Share with users, groups or remote users …" : "Ndajeni me përdorues, grupe ose përdorues të largët …",
"Warning" : "Kujdes",
"The object type is not specified." : "Nuk është specifikuar tipi i objektit.",
"Enter new" : "Jep të re",
@@ -182,6 +190,7 @@ OC.L10N.register(
"Database name" : "Emri i database-it",
"Database tablespace" : "Tablespace-i i database-it",
"Database host" : "Pozicioni (host) i database-it",
+ "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Përdorimi i SQLite-it nuk këshillohet veçanërisht kur përdoret klienti desktop për njëkohësim kartelash.",
"Finish setup" : "Mbaro setup-in",
"Finishing …" : "Duke përfunduar ...",
"Log out" : "Dalje",
diff --git a/core/l10n/sq.json b/core/l10n/sq.json
index 09461855de2..a14de6a9d07 100644
--- a/core/l10n/sq.json
+++ b/core/l10n/sq.json
@@ -95,23 +95,31 @@
"Email sent" : "Email-i u dërgua",
"Resharing is not allowed" : "Rindarja nuk lejohet",
"Share link" : "Ndaje lidhjen",
+ "Link" : "Lidhje",
"Password protect" : "Mbro me kod",
"Password" : "Kodi",
"Choose a password for the public link" : "Zgjidhni një fjalëkalim për lidhjen publike",
+ "Allow editing" : "Lejo përpunim",
"Email link to person" : "Dërgo email me lidhjen",
"Send" : "Dërgo",
"Shared with you and the group {group} by {owner}" : "Ndarë me ju dhe me grupin {group} nga {owner}",
"Shared with you by {owner}" : "Ndarë me ju nga {owner}",
"Shared in {item} with {user}" : "Ndarë në {item} me {user}",
"group" : "grupi",
+ "remote" : "e largët",
"notify by email" : "njofto me email",
"Unshare" : "Hiq ndarjen",
"can share" : "mund të ndajnë",
"can edit" : "mund të ndryshosh",
"create" : "krijo",
+ "change" : "ndërroje",
"delete" : "elimino",
"access control" : "kontrollimi i hyrjeve",
+ "An error occured. Please try again" : "Ndodhi një gabim. Ju lutemi, riprovoni",
"Share" : "Nda",
+ "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Ndani me persona në ownCloud-e të tjera duke përdorur sintaksën username@example.com/owncloud",
+ "Share with users or groups …" : "Ndajeni me përdorues ose grupe …",
+ "Share with users, groups or remote users …" : "Ndajeni me përdorues, grupe ose përdorues të largët …",
"Warning" : "Kujdes",
"The object type is not specified." : "Nuk është specifikuar tipi i objektit.",
"Enter new" : "Jep të re",
@@ -180,6 +188,7 @@
"Database name" : "Emri i database-it",
"Database tablespace" : "Tablespace-i i database-it",
"Database host" : "Pozicioni (host) i database-it",
+ "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Përdorimi i SQLite-it nuk këshillohet veçanërisht kur përdoret klienti desktop për njëkohësim kartelash.",
"Finish setup" : "Mbaro setup-in",
"Finishing …" : "Duke përfunduar ...",
"Log out" : "Dalje",
diff --git a/core/l10n/th_TH.js b/core/l10n/th_TH.js
index 1ceb8e7d2dd..07324c614a8 100644
--- a/core/l10n/th_TH.js
+++ b/core/l10n/th_TH.js
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Couldn't send mail to following users: %s " : "ไม่สามารถส่งอีเมลไปยังผู้ใช้: %s",
"Preparing update" : "เตรียมอัพเดท",
+ "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "ทดสอบการย้ายจะถูกข้าม \"update.skip-migration-test\" สามารถเปิดใช้งานได้ใน config.php",
"Turned on maintenance mode" : "เปิดโหมดการบำรุงรักษา",
"Turned off maintenance mode" : "ปิดโหมดการบำรุงรักษา",
"Maintenance mode is kept active" : "โหมดการบำรุงรักษาจะถูกเก็บไว้ใช้งาน",
diff --git a/core/l10n/th_TH.json b/core/l10n/th_TH.json
index 53954b3110b..7d700b9adf6 100644
--- a/core/l10n/th_TH.json
+++ b/core/l10n/th_TH.json
@@ -1,6 +1,7 @@
{ "translations": {
"Couldn't send mail to following users: %s " : "ไม่สามารถส่งอีเมลไปยังผู้ใช้: %s",
"Preparing update" : "เตรียมอัพเดท",
+ "Migration tests are skipped - \"update.skip-migration-test\" is activated in config.php" : "ทดสอบการย้ายจะถูกข้าม \"update.skip-migration-test\" สามารถเปิดใช้งานได้ใน config.php",
"Turned on maintenance mode" : "เปิดโหมดการบำรุงรักษา",
"Turned off maintenance mode" : "ปิดโหมดการบำรุงรักษา",
"Maintenance mode is kept active" : "โหมดการบำรุงรักษาจะถูกเก็บไว้ใช้งาน",
diff --git a/core/register_command.php b/core/register_command.php
index 460e8626e5e..4044d2d200c 100644
--- a/core/register_command.php
+++ b/core/register_command.php
@@ -94,7 +94,7 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) {
$application->add(new OC\Core\Command\Maintenance\Repair(new \OC\Repair(\OC\Repair::getRepairSteps()), \OC::$server->getConfig()));
$application->add(new OC\Core\Command\Maintenance\SingleUser(\OC::$server->getConfig()));
- $application->add(new OC\Core\Command\Upgrade(\OC::$server->getConfig()));
+ $application->add(new OC\Core\Command\Upgrade(\OC::$server->getConfig(), \OC::$server->getLogger()));
$application->add(new OC\Core\Command\User\Add(\OC::$server->getUserManager(), \OC::$server->getGroupManager()));
$application->add(new OC\Core\Command\User\Delete(\OC::$server->getUserManager()));
diff --git a/lib/base.php b/lib/base.php
index 12c23f5ce1b..5deba7866f3 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -608,6 +608,14 @@ class OC {
OC_User::useBackend(new OC_User_Database());
OC_Group::useBackend(new OC_Group_Database());
+ // Subscribe to the hook
+ \OCP\Util::connectHook(
+ '\OCA\Files_Sharing\API\Server2Server',
+ 'preLoginNameUsedAsUserName',
+ '\OC_User_Database',
+ 'preLoginNameUsedAsUserName'
+ );
+
//setup extra user backends
if (!self::checkUpgrade(false)) {
OC_User::setupBackends();
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index a4692c268b4..8dd3695d0c2 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -108,7 +108,7 @@ OC.L10N.register(
"Sharing %s failed, because the user %s is the original sharer" : "Le partage de %s a échoué car l'utilisateur %s est l'utilisateur à l'origine du partage.",
"Sharing %s failed, because the permissions exceed permissions granted to %s" : "Le partage de %s a échoué car les permissions dépassent celles accordées à %s",
"Sharing %s failed, because resharing is not allowed" : "Le partage de %s a échoué car le repartage n'est pas autorisé",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Le partage de %s a échoué car la source n'a pas été trouvée pour le partage %s.",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Le partage de %s a échoué car le service %s n'a pas trouvé sa source..",
"Sharing %s failed, because the file could not be found in the file cache" : "Le partage de %s a échoué car le fichier n'a pas été trouvé dans les fichiers mis en cache.",
"Could not find category \"%s\"" : "Impossible de trouver la catégorie \"%s\"",
"Apps" : "Applications",
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index 5ee807080cf..16744dbd062 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -106,7 +106,7 @@
"Sharing %s failed, because the user %s is the original sharer" : "Le partage de %s a échoué car l'utilisateur %s est l'utilisateur à l'origine du partage.",
"Sharing %s failed, because the permissions exceed permissions granted to %s" : "Le partage de %s a échoué car les permissions dépassent celles accordées à %s",
"Sharing %s failed, because resharing is not allowed" : "Le partage de %s a échoué car le repartage n'est pas autorisé",
- "Sharing %s failed, because the sharing backend for %s could not find its source" : "Le partage de %s a échoué car la source n'a pas été trouvée pour le partage %s.",
+ "Sharing %s failed, because the sharing backend for %s could not find its source" : "Le partage de %s a échoué car le service %s n'a pas trouvé sa source..",
"Sharing %s failed, because the file could not be found in the file cache" : "Le partage de %s a échoué car le fichier n'a pas été trouvé dans les fichiers mis en cache.",
"Could not find category \"%s\"" : "Impossible de trouver la catégorie \"%s\"",
"Apps" : "Applications",
diff --git a/lib/l10n/lt_LT.js b/lib/l10n/lt_LT.js
index 47c5e4adba5..b379bdb2443 100644
--- a/lib/l10n/lt_LT.js
+++ b/lib/l10n/lt_LT.js
@@ -17,6 +17,7 @@ OC.L10N.register(
"_%n minute ago_::_%n minutes ago_" : ["prieš %n min.","Prieš % minutes","Prieš %n minučių"],
"seconds ago" : "prieš sekundę",
"web services under your control" : "jūsų valdomos web paslaugos",
+ "File name contains at least one invalid character" : "Failo vardas sudarytas iš neleistinų simbolių",
"App directory already exists" : "Programos aplankas jau egzistuoja",
"Can't create app folder. Please fix permissions. %s" : "Nepavyksta sukurti aplanko. Prašome pataisyti leidimus. %s",
"No source specified when installing app" : "Nenurodytas šaltinis diegiant programą",
diff --git a/lib/l10n/lt_LT.json b/lib/l10n/lt_LT.json
index ab7eabe5d22..9ef545b9ebb 100644
--- a/lib/l10n/lt_LT.json
+++ b/lib/l10n/lt_LT.json
@@ -15,6 +15,7 @@
"_%n minute ago_::_%n minutes ago_" : ["prieš %n min.","Prieš % minutes","Prieš %n minučių"],
"seconds ago" : "prieš sekundę",
"web services under your control" : "jūsų valdomos web paslaugos",
+ "File name contains at least one invalid character" : "Failo vardas sudarytas iš neleistinų simbolių",
"App directory already exists" : "Programos aplankas jau egzistuoja",
"Can't create app folder. Please fix permissions. %s" : "Nepavyksta sukurti aplanko. Prašome pataisyti leidimus. %s",
"No source specified when installing app" : "Nenurodytas šaltinis diegiant programą",
diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js
index 80db3f87c50..88d719a35dd 100644
--- a/lib/l10n/sq.js
+++ b/lib/l10n/sq.js
@@ -14,6 +14,7 @@ OC.L10N.register(
"last year" : "vitin e shkuar",
"seconds ago" : "sekonda më parë",
"web services under your control" : "shërbime web nën kontrollin tënd",
+ "File name contains at least one invalid character" : "Emri i kartelës përmban të paktën një shenjë të pavlefshme",
"Application is not enabled" : "Programi nuk është i aktivizuar.",
"Authentication error" : "Veprim i gabuar gjatë vërtetimit të identitetit",
"Token expired. Please reload page." : "Përmbajtja ka skaduar. Ju lutemi ringarkoni faqen.",
@@ -34,6 +35,7 @@ OC.L10N.register(
"Could not find category \"%s\"" : "Kategoria \"%s\" nuk u gjet",
"Apps" : "App",
"A valid username must be provided" : "Duhet të jepni një emër të vlefshëm përdoruesi",
- "A valid password must be provided" : "Duhet të jepni një fjalëkalim te vlefshëm"
+ "A valid password must be provided" : "Duhet të jepni një fjalëkalim te vlefshëm",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Kjo ka gjasa të jetë shkaktuar nga një fshehtinë/përshpejtues i tillë si Zend OPcache ose eAccelerator."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json
index 1fc2cb01c58..ede914e45ad 100644
--- a/lib/l10n/sq.json
+++ b/lib/l10n/sq.json
@@ -12,6 +12,7 @@
"last year" : "vitin e shkuar",
"seconds ago" : "sekonda më parë",
"web services under your control" : "shërbime web nën kontrollin tënd",
+ "File name contains at least one invalid character" : "Emri i kartelës përmban të paktën një shenjë të pavlefshme",
"Application is not enabled" : "Programi nuk është i aktivizuar.",
"Authentication error" : "Veprim i gabuar gjatë vërtetimit të identitetit",
"Token expired. Please reload page." : "Përmbajtja ka skaduar. Ju lutemi ringarkoni faqen.",
@@ -32,6 +33,7 @@
"Could not find category \"%s\"" : "Kategoria \"%s\" nuk u gjet",
"Apps" : "App",
"A valid username must be provided" : "Duhet të jepni një emër të vlefshëm përdoruesi",
- "A valid password must be provided" : "Duhet të jepni një fjalëkalim te vlefshëm"
+ "A valid password must be provided" : "Duhet të jepni një fjalëkalim te vlefshëm",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Kjo ka gjasa të jetë shkaktuar nga një fshehtinë/përshpejtues i tillë si Zend OPcache ose eAccelerator."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/private/api.php b/lib/private/api.php
index cd5148c51a1..10d58f2d9e6 100644
--- a/lib/private/api.php
+++ b/lib/private/api.php
@@ -386,7 +386,7 @@ class OC_API {
$meta = $result->getMeta();
$data = $result->getData();
- if (self::isV2()) {
+ if (self::isV2(\OC::$server->getRequest())) {
$statusCode = self::mapStatusCodes($result->getStatusCode());
if (!is_null($statusCode)) {
$meta['statuscode'] = $statusCode;
@@ -449,13 +449,13 @@ class OC_API {
}
/**
- * @return boolean
+ * @param \OCP\IRequest $request
+ * @return bool
*/
- private static function isV2() {
- $request = \OC::$server->getRequest();
+ protected static function isV2(\OCP\IRequest $request) {
$script = $request->getScriptName();
- return $script === '/ocs/v2.php';
+ return substr($script, -11) === '/ocs/v2.php';
}
/**
diff --git a/lib/private/connector/sabre/filesplugin.php b/lib/private/connector/sabre/filesplugin.php
index ab7f6884a5e..38a7139d9e9 100644
--- a/lib/private/connector/sabre/filesplugin.php
+++ b/lib/private/connector/sabre/filesplugin.php
@@ -41,7 +41,7 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
const DOWNLOADURL_PROPERTYNAME = '{http://owncloud.org/ns}downloadURL';
const SIZE_PROPERTYNAME = '{http://owncloud.org/ns}size';
const GETETAG_PROPERTYNAME = '{DAV:}getetag';
- const GETLASTMODIFIED_PROPERTYNAME = '{DAV:}getlastmodified';
+ const LASTMODIFIED_PROPERTYNAME = '{DAV:}lastmodified';
/**
* Reference to main server object
@@ -101,7 +101,7 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
$server->protectedProperties[] = self::DOWNLOADURL_PROPERTYNAME;
// normally these cannot be changed (RFC4918), but we want them modifiable through PROPPATCH
- $allowedProperties = ['{DAV:}getetag', '{DAV:}getlastmodified'];
+ $allowedProperties = ['{DAV:}getetag'];
$server->protectedProperties = array_diff($server->protectedProperties, $allowedProperties);
$this->server = $server;
@@ -208,7 +208,7 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
* @return void
*/
public function handleUpdateProperties($path, PropPatch $propPatch) {
- $propPatch->handle(self::GETLASTMODIFIED_PROPERTYNAME, function($time) use ($path) {
+ $propPatch->handle(self::LASTMODIFIED_PROPERTYNAME, function($time) use ($path) {
if (empty($time)) {
return false;
}
diff --git a/lib/private/share/share.php b/lib/private/share/share.php
index 932586b5c27..abb9ec3cb99 100644
--- a/lib/private/share/share.php
+++ b/lib/private/share/share.php
@@ -633,8 +633,8 @@ class Share extends Constants {
// verify that the user has share permission
if (!\OC\Files\Filesystem::isSharable($path)) {
$message = 'You are not allowed to share %s';
- $message_t = $l->t('You are not allowed to share %s', array($itemSourceName));
- \OCP\Util::writeLog('OCP\Share', sprintf($message, $itemSourceName), \OCP\Util::DEBUG);
+ $message_t = $l->t('You are not allowed to share %s', [$path]);
+ \OCP\Util::writeLog('OCP\Share', sprintf($message, $path), \OCP\Util::DEBUG);
throw new \Exception($message_t);
}
}
@@ -1914,6 +1914,7 @@ class Share extends Constants {
}
}
if (!empty($collectionItems)) {
+ $collectionItems = array_unique($collectionItems, SORT_REGULAR);
$items = array_merge($items, $collectionItems);
}
diff --git a/lib/private/templatelayout.php b/lib/private/templatelayout.php
index 43c83dea815..7d16823d2a8 100644
--- a/lib/private/templatelayout.php
+++ b/lib/private/templatelayout.php
@@ -79,7 +79,7 @@ class OC_TemplateLayout extends OC_Template {
if($this->config->getSystemValue('updatechecker', true) === true &&
OC_User::isAdminUser(OC_User::getUser())) {
$updater = new \OC\Updater(\OC::$server->getHTTPHelper(),
- \OC::$server->getConfig());
+ \OC::$server->getConfig(), \OC::$server->getLogger());
$data = $updater->check();
if(isset($data['version']) && $data['version'] != '' and $data['version'] !== Array()) {
diff --git a/lib/private/updater.php b/lib/private/updater.php
index 8aa8b0703d7..70d68863788 100644
--- a/lib/private/updater.php
+++ b/lib/private/updater.php
@@ -32,7 +32,6 @@
namespace OC;
-use OC\Core\Command\Log\Manage;
use OC\Hooks\BasicEmitter;
use OC_App;
use OC_Installer;
@@ -199,15 +198,13 @@ class Updater extends BasicEmitter {
$installedVersion = $this->config->getSystemValue('version', '0.0.0');
$currentVersion = implode('.', \OC_Util::getVersion());
- if ($this->log) {
- $this->log->debug('starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, array('app' => 'core'));
- }
+ $this->log->debug('starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, array('app' => 'core'));
$success = true;
try {
$this->doUpgrade($currentVersion, $installedVersion);
} catch (\Exception $exception) {
- \OCP\Util::logException('update', $exception);
+ $this->log->logException($exception, ['app' => 'core']);
$this->emit('\OC\Updater', 'failure', array(get_class($exception) . ': ' .$exception->getMessage()));
$success = false;
}
@@ -235,6 +232,7 @@ class Updater extends BasicEmitter {
private function getAllowedPreviousVersion() {
// this should really be a JSON file
require \OC::$SERVERROOT . '/version.php';
+ /** @var array $OC_VersionCanBeUpgradedFrom */
return implode('.', $OC_VersionCanBeUpgradedFrom);
}
@@ -497,11 +495,15 @@ class Updater extends BasicEmitter {
*/
private function upgradeAppStoreApps(array $disabledApps) {
foreach($disabledApps as $app) {
- if (OC_Installer::isUpdateAvailable($app)) {
- $ocsId = \OC::$server->getConfig()->getAppValue($app, 'ocsid', '');
+ try {
+ if (OC_Installer::isUpdateAvailable($app)) {
+ $ocsId = \OC::$server->getConfig()->getAppValue($app, 'ocsid', '');
- $this->emit('\OC\Updater', 'upgradeAppStoreApp', array($app));
- OC_Installer::updateAppByOCSId($ocsId);
+ $this->emit('\OC\Updater', 'upgradeAppStoreApp', array($app));
+ OC_Installer::updateAppByOCSId($ocsId);
+ }
+ } catch (\Exception $ex) {
+ $this->log->logException($ex, ['app' => 'core']);
}
}
}
diff --git a/lib/private/user/database.php b/lib/private/user/database.php
index 081066398c0..3969b446071 100644
--- a/lib/private/user/database.php
+++ b/lib/private/user/database.php
@@ -295,6 +295,20 @@ class OC_User_Database extends OC_User_Backend implements \OCP\IUserBackend {
}
/**
+ * returns the username for the given login name in the correct casing
+ *
+ * @param string $loginName
+ * @return string|false
+ */
+ public function loginName2UserName($loginName) {
+ if ($this->userExists($loginName)) {
+ return $this->cache[$loginName]['uid'];
+ }
+
+ return false;
+ }
+
+ /**
* Backend name to be shown in user management
* @return string the name of the backend to be shown
*/
@@ -302,4 +316,22 @@ class OC_User_Database extends OC_User_Backend implements \OCP\IUserBackend {
return 'Database';
}
+ public static function preLoginNameUsedAsUserName($param) {
+ if(!isset($param['uid'])) {
+ throw new \Exception('key uid is expected to be set in $param');
+ }
+
+ $backends = \OC::$server->getUserManager()->getBackends();
+ foreach ($backends as $backend) {
+ if ($backend instanceof \OC_User_Database) {
+ /** @var \OC_User_Database $backend */
+ $uid = $backend->loginName2UserName($param['uid']);
+ if ($uid !== false) {
+ $param['uid'] = $uid;
+ return;
+ }
+ }
+ }
+
+ }
}
diff --git a/ocs-provider/provider.php b/ocs-provider/provider.php
index 04da7402c98..921362b9e50 100644
--- a/ocs-provider/provider.php
+++ b/ocs-provider/provider.php
@@ -44,9 +44,9 @@ class Provider extends \OCP\AppFramework\Controller {
'PRIVATE_DATA' => [
'version' => 1,
'endpoints' => [
- 'store' => '/ocs/v1.php/privatedata/setattribute',
- 'read' => '/ocs/v1.php/privatedata/getattribute',
- 'delete' => '/ocs/v1.php/privatedata/deleteattribute',
+ 'store' => '/ocs/v2.php/privatedata/setattribute',
+ 'read' => '/ocs/v2.php/privatedata/getattribute',
+ 'delete' => '/ocs/v2.php/privatedata/deleteattribute',
],
],
];
@@ -55,13 +55,13 @@ class Provider extends \OCP\AppFramework\Controller {
$services['SHARING'] = [
'version' => 1,
'endpoints' => [
- 'share' => '/ocs/v1.php/apps/files_sharing/api/v1/shares',
+ 'share' => '/ocs/v2.php/apps/files_sharing/api/v1/shares',
],
];
$services['FEDERATED_SHARING'] = [
'version' => 1,
'endpoints' => [
- 'share' => '/ocs/v1.php/cloud/shares',
+ 'share' => '/ocs/v2.php/cloud/shares',
'webdav' => '/public.php/webdav/',
],
];
@@ -71,7 +71,7 @@ class Provider extends \OCP\AppFramework\Controller {
$services['ACTIVITY'] = [
'version' => 1,
'endpoints' => [
- 'list' => '/ocs/v1.php/cloud/activity',
+ 'list' => '/ocs/v2.php/cloud/activity',
],
];
}
@@ -80,13 +80,13 @@ class Provider extends \OCP\AppFramework\Controller {
$services['PROVISIONING'] = [
'version' => 1,
'endpoints' => [
- 'user' => '/ocs/v1.php/cloud/users',
- 'groups' => '/ocs/v1.php/cloud/groups',
- 'apps' => '/ocs/v1.php/cloud/apps',
+ 'user' => '/ocs/v2.php/cloud/users',
+ 'groups' => '/ocs/v2.php/cloud/groups',
+ 'apps' => '/ocs/v2.php/cloud/apps',
],
];
}
return new \OCP\AppFramework\Http\JSONResponse($services);
}
-} \ No newline at end of file
+}
diff --git a/settings/l10n/de.js b/settings/l10n/de.js
index c9cab4d9ecb..39fc0de9362 100644
--- a/settings/l10n/de.js
+++ b/settings/l10n/de.js
@@ -77,6 +77,7 @@ OC.L10N.register(
"Uninstalling ...." : "Deinstallieren…",
"Error while uninstalling app" : "Fehler beim Deinstallieren der App",
"Uninstall" : "Deinstallieren",
+ "App update" : "App aktualisiert",
"An error occurred: {message}" : "Ein Fehler ist aufgetreten: {message}",
"Select a profile picture" : "Wähle ein Profilbild",
"Very weak password" : "Sehr schwaches Passwort",
@@ -153,6 +154,8 @@ OC.L10N.register(
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php ist als Webcron-Dienst registriert, der die cron.php alle 15 Minuten per HTTP aufruft.",
"Use system's cron service to call the cron.php file every 15 minutes." : "Benutze den systemeigenen Cron-Dienst, um die cron.php alle 15 Minuten aufzurufen.",
"Enable server-side encryption" : "Serverseitige Verschlüsselung aktivieren",
+ "Please read carefully before activating server-side encryption: " : "Bitte sorgfältig lesen, bevor die serverseitige Verschlüsselung aktiviert wird:",
+ "Be aware that encryption always increases the file size." : "Sei dir bewusst, dass die Verschlüsselung immer die Dateigröße erhöht.",
"This is the final warning: Do you really want to enable encryption?" : "Dies ist die letzte Warnung: Verschlüsselung wirklich aktivieren?",
"Enable encryption" : "Verschlüsselung aktivieren",
"No encryption module loaded, please enable an encryption module in the app menu." : "Kein Verschlüsselungs-Modul geladen, bitte aktiviere ein Verschlüsselungs-Modul im Anwendungs-Menü.",
diff --git a/settings/l10n/de.json b/settings/l10n/de.json
index 637a1381eeb..52781799d0b 100644
--- a/settings/l10n/de.json
+++ b/settings/l10n/de.json
@@ -75,6 +75,7 @@
"Uninstalling ...." : "Deinstallieren…",
"Error while uninstalling app" : "Fehler beim Deinstallieren der App",
"Uninstall" : "Deinstallieren",
+ "App update" : "App aktualisiert",
"An error occurred: {message}" : "Ein Fehler ist aufgetreten: {message}",
"Select a profile picture" : "Wähle ein Profilbild",
"Very weak password" : "Sehr schwaches Passwort",
@@ -151,6 +152,8 @@
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php ist als Webcron-Dienst registriert, der die cron.php alle 15 Minuten per HTTP aufruft.",
"Use system's cron service to call the cron.php file every 15 minutes." : "Benutze den systemeigenen Cron-Dienst, um die cron.php alle 15 Minuten aufzurufen.",
"Enable server-side encryption" : "Serverseitige Verschlüsselung aktivieren",
+ "Please read carefully before activating server-side encryption: " : "Bitte sorgfältig lesen, bevor die serverseitige Verschlüsselung aktiviert wird:",
+ "Be aware that encryption always increases the file size." : "Sei dir bewusst, dass die Verschlüsselung immer die Dateigröße erhöht.",
"This is the final warning: Do you really want to enable encryption?" : "Dies ist die letzte Warnung: Verschlüsselung wirklich aktivieren?",
"Enable encryption" : "Verschlüsselung aktivieren",
"No encryption module loaded, please enable an encryption module in the app menu." : "Kein Verschlüsselungs-Modul geladen, bitte aktiviere ein Verschlüsselungs-Modul im Anwendungs-Menü.",
diff --git a/settings/l10n/el.js b/settings/l10n/el.js
index b67ae064766..6907e685b3f 100644
--- a/settings/l10n/el.js
+++ b/settings/l10n/el.js
@@ -160,6 +160,7 @@ OC.L10N.register(
"Use system's cron service to call the cron.php file every 15 minutes." : "Χρησιμοποιήστε την cron υπηρεσία του συτήματος για να καλέσετε το cron.php αρχείο κάθε 15 λεπτά.",
"Enable server-side encryption" : "Ενεργοποίηση κρυπτογράφησης από το διακομιστή",
"Please read carefully before activating server-side encryption: " : "Παρακαλούμε διαβάστε προσεκτικά πριν ενεργοποιήσετε την κρυπτογράφηση στο διακομιστή:",
+ "Be aware that encryption always increases the file size." : "Έχετε στο νου σας πως η κρυπτογράφηση πάντα αυξάνει το μέγεθος του αρχείου",
"This is the final warning: Do you really want to enable encryption?" : "Αυτή είναι η τελευταία προειδοποίηση: Θέλετε πραγματικά να ενεργοποιήσετε την κρυπτογράφηση;",
"Enable encryption" : "Ενεργοποίηση κρυπτογράφησης",
"No encryption module loaded, please enable an encryption module in the app menu." : "Δεν έχει φορτωθεί μονάδα κρυπτογράφησης, παρακαλούμε φορτώστε μια μονάδα κρυπτογράφησης από το μενού εφαρμογών.",
diff --git a/settings/l10n/el.json b/settings/l10n/el.json
index bd657166280..4bec662f455 100644
--- a/settings/l10n/el.json
+++ b/settings/l10n/el.json
@@ -158,6 +158,7 @@
"Use system's cron service to call the cron.php file every 15 minutes." : "Χρησιμοποιήστε την cron υπηρεσία του συτήματος για να καλέσετε το cron.php αρχείο κάθε 15 λεπτά.",
"Enable server-side encryption" : "Ενεργοποίηση κρυπτογράφησης από το διακομιστή",
"Please read carefully before activating server-side encryption: " : "Παρακαλούμε διαβάστε προσεκτικά πριν ενεργοποιήσετε την κρυπτογράφηση στο διακομιστή:",
+ "Be aware that encryption always increases the file size." : "Έχετε στο νου σας πως η κρυπτογράφηση πάντα αυξάνει το μέγεθος του αρχείου",
"This is the final warning: Do you really want to enable encryption?" : "Αυτή είναι η τελευταία προειδοποίηση: Θέλετε πραγματικά να ενεργοποιήσετε την κρυπτογράφηση;",
"Enable encryption" : "Ενεργοποίηση κρυπτογράφησης",
"No encryption module loaded, please enable an encryption module in the app menu." : "Δεν έχει φορτωθεί μονάδα κρυπτογράφησης, παρακαλούμε φορτώστε μια μονάδα κρυπτογράφησης από το μενού εφαρμογών.",
diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js
index 2ff5d34d68d..ae404c75a8a 100644
--- a/settings/l10n/fr.js
+++ b/settings/l10n/fr.js
@@ -40,7 +40,7 @@ OC.L10N.register(
"Unable to delete group." : "Impossible de supprimer le groupe.",
"log-level out of allowed range" : "niveau de journalisation hors borne",
"Saved" : "Sauvegardé",
- "test email settings" : "tester les paramètres e-mail",
+ "test email settings" : "Test des paramètres e-mail",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Une erreur est survenue lors de l'envoi de l'e-mail. Veuillez vérifier vos paramètres. (Erreur: %s)",
"Email sent" : "E-mail envoyé",
"You need to set your user email before being able to send test emails." : "Vous devez définir une adresse e-mail dans vos paramètres personnels avant de pouvoir envoyer des e-mails de test.",
diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json
index 9b2589f9b44..610659d055f 100644
--- a/settings/l10n/fr.json
+++ b/settings/l10n/fr.json
@@ -38,7 +38,7 @@
"Unable to delete group." : "Impossible de supprimer le groupe.",
"log-level out of allowed range" : "niveau de journalisation hors borne",
"Saved" : "Sauvegardé",
- "test email settings" : "tester les paramètres e-mail",
+ "test email settings" : "Test des paramètres e-mail",
"A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Une erreur est survenue lors de l'envoi de l'e-mail. Veuillez vérifier vos paramètres. (Erreur: %s)",
"Email sent" : "E-mail envoyé",
"You need to set your user email before being able to send test emails." : "Vous devez définir une adresse e-mail dans vos paramètres personnels avant de pouvoir envoyer des e-mails de test.",
diff --git a/settings/l10n/lt_LT.js b/settings/l10n/lt_LT.js
index 616923182cd..75a9eab3986 100644
--- a/settings/l10n/lt_LT.js
+++ b/settings/l10n/lt_LT.js
@@ -19,6 +19,7 @@ OC.L10N.register(
"Wrong admin recovery password. Please check the password and try again." : "Netinkamas administratoriau atkūrimo slaptažodis. Prašome pasitikrinti ir bandyti vėl.",
"Unable to change password" : "Nepavyksta pakeisti slaptažodžio",
"Enabled" : "Įjungta",
+ "Saved" : "Išsaugoti",
"Email sent" : "Laiškas išsiųstas",
"Email saved" : "El. paštas išsaugotas",
"All" : "Viskas",
@@ -57,6 +58,7 @@ OC.L10N.register(
"Execute one task with each page loaded" : "Įvykdyti vieną užduotį su kiekvieno puslapio įkėlimu",
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php yra registruotas tinklapio suplanuotų užduočių paslaugose, kad iškviesti cron.php kas 15 minučių per http.",
"Encryption" : "Šifravimas",
+ "Authentication required" : "Reikalinga autentikacija",
"Server address" : "Serverio adresas",
"Port" : "Prievadas",
"Log level" : "Žurnalo išsamumas",
diff --git a/settings/l10n/lt_LT.json b/settings/l10n/lt_LT.json
index d78b5fc8632..ee3c7ff0747 100644
--- a/settings/l10n/lt_LT.json
+++ b/settings/l10n/lt_LT.json
@@ -17,6 +17,7 @@
"Wrong admin recovery password. Please check the password and try again." : "Netinkamas administratoriau atkūrimo slaptažodis. Prašome pasitikrinti ir bandyti vėl.",
"Unable to change password" : "Nepavyksta pakeisti slaptažodžio",
"Enabled" : "Įjungta",
+ "Saved" : "Išsaugoti",
"Email sent" : "Laiškas išsiųstas",
"Email saved" : "El. paštas išsaugotas",
"All" : "Viskas",
@@ -55,6 +56,7 @@
"Execute one task with each page loaded" : "Įvykdyti vieną užduotį su kiekvieno puslapio įkėlimu",
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php yra registruotas tinklapio suplanuotų užduočių paslaugose, kad iškviesti cron.php kas 15 minučių per http.",
"Encryption" : "Šifravimas",
+ "Authentication required" : "Reikalinga autentikacija",
"Server address" : "Serverio adresas",
"Port" : "Prievadas",
"Log level" : "Žurnalo išsamumas",
diff --git a/settings/l10n/sq.js b/settings/l10n/sq.js
index a4152a544c6..c699c2d859f 100644
--- a/settings/l10n/sq.js
+++ b/settings/l10n/sq.js
@@ -1,109 +1,286 @@
OC.L10N.register(
"settings",
{
- "Sharing" : "Ndarje",
+ "APCu" : "APCu",
+ "Redis" : "Redis",
+ "Security & setup warnings" : "Sinjalizime sigurie & rregullimi",
+ "Sharing" : "Ndarje me të tjerët",
+ "Server-side encryption" : "Fshehtëzim më anë shërbyesi",
+ "External Storage" : "Depozitim i Jashtëm",
"Cron" : "Cron",
- "Log" : "Historik aktiviteti",
- "Authentication error" : "Gabim autentifikimi",
- "Your full name has been changed." : "Emri juaj i plotë ka ndryshuar.",
- "Unable to change full name" : "Nuk mund të ndryshohet emri i plotë",
- "Couldn't remove app." : "Nuk mund të hiqet aplikacioni.",
+ "Email server" : "Shërbyes email-esh",
+ "Log" : "Regjistër",
+ "Tips & tricks" : "Ndihmëza & rrengje",
+ "Updates" : "Përditësime",
+ "Authentication error" : "Gabim mirëfilltësimi",
+ "Your full name has been changed." : "Emri juaj i plotë u ndryshua.",
+ "Unable to change full name" : "S’arrin të ndryshojë emrin e plotë",
+ "Couldn't remove app." : "S’hoqi dot aplikacionin.",
"Language changed" : "Gjuha u ndryshua",
"Invalid request" : "Kërkesë e pavlefshme",
- "Admins can't remove themself from the admin group" : "Administratorët nuk mund të heqin vehten prej grupit admin",
- "Unable to add user to group %s" : "E pamundur t'i shtohet përdoruesi grupit %s",
- "Unable to remove user from group %s" : "E pamundur të hiqet përdoruesi nga grupi %s",
- "Couldn't update app." : "E pamundur të përditësohet app.",
+ "Admins can't remove themself from the admin group" : "Administratorët s’mund të heqin veten prej grupit admin",
+ "Unable to add user to group %s" : "S’arrin të shtojë përdorues te grupi %s",
+ "Unable to remove user from group %s" : "S’arrin të heqë përdorues nga grupi %s",
+ "Couldn't update app." : "S’përditësoi dot aplikacionin.",
"Wrong password" : "Fjalëkalim i gabuar",
- "No user supplied" : "Nuk është dhënë asnjë përdorues",
+ "No user supplied" : "S’u dha përdorues",
"Please provide an admin recovery password, otherwise all user data will be lost" : "Ju lutem jepni një fjalëkalim restaurimi administrativ, në të kundërt të gjitha të dhënat do humbasin",
"Wrong admin recovery password. Please check the password and try again." : "Fjalëkalim i gabuar restaurimi administrativ. Ju lutem kontrolloni fjalëkalimin dhe provoni përsëri.",
- "Unable to change password" : "Fjalëkalimi nuk mund të ndryshohet",
- "Enabled" : "Aktivizuar",
- "Not enabled" : "Jo aktive",
+ "Backend doesn't support password change, but the user's encryption key was successfully updated." : "Programi klient s’mbulon ndryshime fjalëkalimi, por kyçi i përdoruesi për fshehtëzime u përditësua me sukses.",
+ "Unable to change password" : "S’arrin të ndryshojë fjalëkalimin",
+ "Enabled" : "E aktivizuar",
+ "Not enabled" : "E paaktivizuar",
+ "installing and updating apps via the app store or Federated Cloud Sharing" : "instalim dhe përditësim aplikacionesh përmes shitores së aplikacioneve ose Federated Cloud Sharing",
+ "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL-ja po përdor një version %s të vjetruar (%s). Ju lutemi, përditësoni sistemin tuaj operativ ose përndryshe veçori të tilla si %s nuk do të punojnë në mënyrë të qëndrueshme.",
+ "A problem occurred, please check your log files (Error: %s)" : "Ndodhi një gabim, ju lutemi, kontrolloni kartelat tuaja regjistër (Error: %s)",
+ "Migration Completed" : "Migrimi u Plotësua",
+ "Group already exists." : "Grupi ekziston tashmë.",
+ "Unable to add group." : "S’arrin të shtojë grup.",
+ "Unable to delete group." : "S’arrin të fshijë grup.",
+ "log-level out of allowed range" : "shkallë regjistrimi jashtë intervalit të lejuar",
"Saved" : "U ruajt",
- "test email settings" : "parametra test për email",
+ "test email settings" : "rregullime email-i test",
+ "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ndodhi një gabim gjatë dërgimit të email-it. Ju lutemi, rishikoni rregullimet tuaja. (Error: %s)",
"Email sent" : "Email-i u dërgua",
- "Email saved" : "Email u ruajt",
- "Sending..." : "Duke dërguar",
- "All" : "Të gjitha",
- "Please wait...." : "Ju lutem prisni...",
- "Disable" : "Çaktivizo",
- "Enable" : "Aktivizo",
- "Updating...." : "Duke përditësuar...",
- "Error while updating app" : "Gabim gjatë përditësimit të app",
- "Updated" : "I përditësuar",
- "Select a profile picture" : "Zgjidh një foto profili",
+ "You need to set your user email before being able to send test emails." : "Lypset të caktoni email-in tuaj si përdorues, përpara se të jeni në gjendje të dërgoni email-e provë.",
+ "Invalid mail address" : "Adresë email e pavlefshme",
+ "A user with that name already exists." : "Ka tashmë një përdorues me këtë emër.",
+ "Unable to create user." : "S’arrin të krijojë përdoruesi.",
+ "Your %s account was created" : "Llogaria juaj %s u krijua",
+ "Unable to delete user." : "S’arrin të fshijë përdorues.",
+ "Forbidden" : "E ndaluar",
+ "Invalid user" : "Përdorues i pavlefshëm",
+ "Unable to change mail address" : "S’arrin të ndryshojë adresë email",
+ "Email saved" : "Email-i u ruajt",
+ "Are you really sure you want add \"{domain}\" as trusted domain?" : "Jeni vërtet i sigurt se doni të shtoni \"{domain}\" si përkatësi të besuar?",
+ "Add trusted domain" : "Shtoni përkatësi të besuar",
+ "Migration in progress. Please wait until the migration is finished" : "Migrimi në rrugë e sipër. Ju lutemi, pritni, teksa migrimi përfundon",
+ "Migration started …" : "Migrimi filloi …",
+ "Sending..." : "Po dërgohet…",
+ "Official" : "Zyrtare",
+ "Approved" : "Të miratuara",
+ "Experimental" : "Eksperimentale",
+ "All" : "Krejt",
+ "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Aplikacionet zyrtare ndërtohen brenda bashkësisë ownCloud. Ato ofrojnë funksione qendrore për ownCloud dhe janë gati për t’u përdorur në prodhim.",
+ "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Aplikacionet e miratuara ndërtohen nga zhvillues të besuar dhe kanë kaluar një kontroll të përciptë sigurie. Mirëmbahen aktivisht në një depo të hapur kodi dhe mirëmbajtësit e tyre i konsiderojnë të qëndrueshme për përdorime nga të rastit deri në ato normale.",
+ "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Ky aplikacion s’është kontrolluar për probleme sigurie dhe është i ri ose i njohur si i paqëndrueshëm. Instalojeni duke e mbajtur vetë përgjegjësinë.",
+ "Update to %s" : "Përditësoje me %s",
+ "Please wait...." : "Ju lutemi, prisni…",
+ "Error while disabling app" : "Gabim në çaktivizimin e aplikacionit",
+ "Disable" : "Çaktivizoje",
+ "Enable" : "Aktivizoje",
+ "Error while enabling app" : "Gabim në aktivizimin e aplikacionit",
+ "Updating...." : "Po përditësohet…",
+ "Error while updating app" : "Gabim gjatë përditësimit të aplikacionit",
+ "Updated" : "U përditësua",
+ "Uninstalling ...." : "Po çinstalohet…",
+ "Error while uninstalling app" : "Gabim në çinstalimin e aplikacionit",
+ "Uninstall" : "Çinstaloje",
+ "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacioni është aktivizuar, por lyp të përditësohet. Do të ridrejtoheni te faqja e përditësimeve brenda 5 sekondash.",
+ "App update" : "Përditësim aplikacioni",
+ "An error occurred: {message}" : "Ndodhi një gabim: {message}",
+ "Select a profile picture" : "Përzgjidhni një foto profili",
"Very weak password" : "Fjalëkalim shumë i dobët",
"Weak password" : "Fjalëkalim i dobët",
- "So-so password" : "Fjalëkalim i pranueshëm",
+ "So-so password" : "Fjalëkalim çka",
"Good password" : "Fjalëkalim i mirë",
- "Strong password" : "Fjalëkalim shumë i mirë",
- "Delete" : "Fshi",
- "Groups" : "Grupet",
+ "Strong password" : "Fjalëkalim i fortë",
+ "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ndodhi një gabim. Ju lutemi, ngarkoni një dëshmi PEM të koduar me ASCII.",
+ "Valid until {date}" : "E vlefshme deri më {date}",
+ "Delete" : "Fshije",
+ "Groups" : "Grupe",
+ "Unable to delete {objName}" : "S’arrin të fshijë {objName}",
+ "Error creating group" : "Gabim gjatë krijimit të grupit",
+ "A valid group name must be provided" : "Duhet dhënë një emër i vlefshëm grupi",
"deleted {groupName}" : "u fshi {groupName}",
- "undo" : "anullo veprimin",
- "never" : "asnjëherë",
+ "undo" : "zhbëje",
+ "no group" : "pa grup",
+ "never" : "kurrë",
"deleted {userName}" : "u fshi {userName}",
"add group" : "shto grup",
- "A valid username must be provided" : "Duhet të jepni një emër të vlefshëm përdoruesi",
+ "Changing the password will result in data loss, because data recovery is not available for this user" : "Ndryshimi i fjalëkalimit do të sjellë humbje të dhënash, ngaqë rikthimi i të dhënave s’është i përdorshëm për këtë përdorues",
+ "A valid username must be provided" : "Duhet dhënë një emër të vlefshëm përdoruesi",
"Error creating user" : "Gabim gjatë krijimit të përdoruesit",
- "A valid password must be provided" : "Duhet të jepni një fjalëkalim te vlefshëm",
+ "A valid password must be provided" : "Duhet dhënë një fjalëkalim i vlefshëm",
+ "A valid email must be provided" : "Duhet dhënë një email i vlefshëm",
"__language_name__" : "Shqip",
- "None" : "Asgjë",
- "Login" : "Hyr",
- "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Moduli PHP 'fileinfo' mungon. Ju këshillojmë me këmbngulje të aktivizoni këtë modul për të arritur rezultate më të mirame identifikimin e tipeve te ndryshme MIME.",
- "Allow apps to use the Share API" : "Lejoni aplikacionet të përdorin share API",
- "Allow public uploads" : "Lejo ngarkimin publik",
- "Expire after " : "Skadon pas",
- "days" : "diitë",
- "Allow resharing" : "Lejo ri-ndarjen",
+ "Sync clients" : "Klientë njëkohësimi",
+ "Personal info" : "Të dhëna personale",
+ "SSL root certificates" : "Dëshmi SSL rrënjë",
+ "Everything (fatal issues, errors, warnings, info, debug)" : "Gjithçka (probleme fatale, gabime, sinjalizime, të dhëna, diagnostikim)",
+ "Info, warnings, errors and fatal issues" : "Të dhëna, sinjalizime, gabime dhe probleme fatale",
+ "Warnings, errors and fatal issues" : "Sinjalizime, gabime dhe probleme fatale",
+ "Errors and fatal issues" : "Gabime dhe probleme fatale",
+ "Fatal issues only" : "Vetëm probleme fatale",
+ "None" : "Asnjë",
+ "Login" : "Hyrje",
+ "Plain" : "E thjeshtë",
+ "SSL" : "SSL",
+ "TLS" : "TLS",
+ "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP-ja nuk duket të jetë rregulluar si duhet për të kërkuar ndryshore mjedisi sistemi. Testi me getenv(\"PATH\") kthen vetëm një përgjigje të zbrazët.",
+ "Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Ju lutemi, kontrolloni <a target=\"_blank\" href=\"%s\">dokumentimin e instalimit ↗</a> për shënime mbi formësimin e PHP-së dhe formësimin e PHP-së të shërbyesi juaj, veçanërisht kur përdoret php-fpm.",
+ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Rregullimi Vetëm-Lexim u aktivizua. Kjo parandalon rregullimin e disa parametrave përmes ndërfaqes web. Më tej, për çdo përditësim kartela lyp të kalohet dorazi si e shkrueshme.",
+ "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Duket se PHP-ja është rregulluar që të heqë blloqe të brendshme dokumentimi. Kjo do t’i bëjë të papërdrshme disa aplikacione bazë.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Kjo ka gjasa të jetë shkaktuar nga një fshehtinë/përshpejtues i tillë si Zend OPcache ose eAccelerator.",
+ "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Shërbyesi juaj xhiron nën Microsoft Windows. Këshillojmë fort Linux-in për punim optimal nga ana e përdoruesit.",
+ "%1$s below version %2$s is installed, for stability and performance reasons we recommend to update to a newer %1$s version." : "Ka të instaluar %1$s nën versionin %2$s, për arsye qëndrueshmërie dhe performance këshillojmë të përditësohet me një version %1$s më të ri.",
+ "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Moduli PHP 'fileinfo' mungon. Ju këshillojmë me forcë ta aktivizoni këtë modul, për të patur përfundimet më të mira në zbulim llojesh MIME.",
+ "System locale can not be set to a one which supports UTF-8." : "Si vendore sistemi nuk mund të caktohet një që mbulon UTF-8.",
+ "This means that there might be problems with certain characters in file names." : "Kjo do të thotë që mund të ketë probleme me disa shenja në emra kartelash.",
+ "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Këshillojmë me forcë instalimin në sistemin tuaj të paketave të domosdoshme për mbulim të një prej vendoreve vijuese: %s.",
+ "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Nëse instalimi juaj nuk është bërë në rrënjë të përkatësisë dhe përdor cron sistemi, mund të ketë probleme me prodhimin e URL-së. Që të shmangen këto probleme, ju lutemi, jepini mundësisë \"overwrite.cli.url\" te kartela juaj config.php vlerën e shtegut webroot të instalimit tuaj (E këshillueshme: \"%s\")",
+ "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "S’qe e mundur të përmbushej akti cron përmes CLI-së. U shfaqën gabimet teknike vijuese:",
+ "Please double check the <a target=\"_blank\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Ju lutemi, rihidhuni një sy <a target=\"_blank\" href=\"%s\">udhërrëfyesve të instalimit ↗</a>, dhe kontrolloni te <a href=\"#log-section\">regjistri</a> për çfarëdo gabimesh apo sinjalizimesh.",
+ "All checks passed." : "I kaloi krejt kontrollet.",
+ "Open documentation" : "Hapni dokumentimin",
+ "Allow apps to use the Share API" : "Lejoni aplikacionet të përdorin API Share",
+ "Allow users to share via link" : "Lejoji përdoruesit të ndajnë me të tjerët përmes lidhjesh",
+ "Enforce password protection" : "Detyro mbrojtje fjalëkalimi",
+ "Allow public uploads" : "Lejo ngarkime publike",
+ "Allow users to send mail notification for shared files" : "Lejojuni përdoruesve të dërgojnë njoftime me email për kartela të ndara me të tjerët",
+ "Set default expiration date" : "Caktoni datë parazgjedhje skadimi",
+ "Expire after " : "Skadon pas ",
+ "days" : "ditësh",
+ "Enforce expiration date" : "Detyro datë skadimi",
+ "Allow resharing" : "Lejo rindarje",
+ "Restrict users to only share with users in their groups" : "Përdoruesit kufizoji të ndajnë gjëra vetëm me përdorues në grupin e tyre",
+ "Allow users to send mail notification for shared files to other users" : "Lejojuni përdoruesve t’u dërgojnë përdoruesve të tjerë njoftime me email për kartela të ndara me të tjerët",
+ "Exclude groups from sharing" : "Përjashtoni grupe nga ndarjet",
+ "These groups will still be able to receive shares, but not to initiate them." : "Këta grupe prapë do të jenë në gjendje të marrin ndarje nga të tjerët, por jo të fillojnë të tilla.",
+ "Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "Lejo vetëplotësim emra përdoruesish te dialogu i ndarjeve me të tjerët. Nëse kjo është e çaktivizuar, do të duhet të jepen emra përdoruesish.",
+ "Last cron job execution: %s." : "Përmbushja e fundit e aktit cron: %s.",
+ "Last cron job execution: %s. Something seems wrong." : "Përmbushja e fundit e aktit cron: %s. Duket se nuk shkon diçka.",
+ "Cron was not executed yet!" : "Cron-i s’qe ekzekutuar ende!",
"Execute one task with each page loaded" : "Kryeni vetëm një veprim me secilën prej faqeve të ngarkuara",
+ "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php është regjistruar te një shërbim webcron që ta aktivizojë cron.php-në çdo 15 minuta përmes http-je.",
+ "Use system's cron service to call the cron.php file every 15 minutes." : "Përdorni shërbimin cron të sistemit që ta aktivizojë cron.php-në çdo 15 minuta.",
+ "Enable server-side encryption" : "Aktivizo fshehtëzim më anë të shërbyesit",
+ "Please read carefully before activating server-side encryption: " : "Ju lutemi, lexoni me kujdes përpara aktivizimit të fshehtëzimeve më anë shërbyesi: ",
+ "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Pasi të jetë aktivizuar fshehtëzimi, krejt kartelat e ngarkuara te shërbyesi nga kjo pikë e tutje do të fshehtëzohen pasi të jenë depozituar në shërbyes. Çaktivizimi i fshehtëzimit në një datë të mëvonshme do të jetë i mundur vetëm nëse moduli aktiv i fshehtëzimeve e mbulon këtë funksion, dhe nëse plotësohen krejt parakushtet (p.sh. caktimi i një kyçi rimarrjesh).",
+ "Encryption alone does not guarantee security of the system. Please see ownCloud documentation for more information about how the encryption app works, and the supported use cases." : "Fshehtëzimi, dhe vetëm kaq, s’garanton sigurinë e sistemit. Ju lutemi, për më tepër të dhëna se si funksionon aplikacioni i fshehtëzimeve, dhe për raste përdorimi që mbulon, lexoni dokumentimin e ownCloud-it.",
+ "Be aware that encryption always increases the file size." : "Kini parasysh që fshehtëzimi e rrit gjithnjë madhësinë e kartelës.",
+ "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Është gjithmonë ide e mirë të krijohen kopjeruajtje të rregullta të të dhënave tuaja, në rast fshehtëzimi sigurohuni që bëni kopjeruajtje të kyçeve të fshehtëzimit, tok me të dhënat tuaja.",
+ "This is the final warning: Do you really want to enable encryption?" : "Ky është sinjalizimi përfundimtar: Doni vërtet të aktivizohet fshehtëzimi?",
+ "Enable encryption" : "Aktivizoni fshehtëzim",
+ "No encryption module loaded, please enable an encryption module in the app menu." : "S’ka të ngarkuar modul fshehtëzimi, ju lutemi, aktivizoni një modul fshehtëzimi që nga menuja e aplikacionit.",
+ "Select default encryption module:" : "Përzgjidhni modul parazgjedhje fshehtëzimi:",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu. Ju lutemi, aktivizoni \"Modul parazgjedhje fshehtëzimesh\" dhe ekzekutoni 'occ encryption:migrate'",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu.",
+ "Start migration" : "Fillo migrimin",
+ "This is used for sending out notifications." : "Kjo përdoret për të dërguar njoftime.",
"Send mode" : "Mënyra e dërgimit",
- "Encryption" : "Kodifikimi",
+ "Encryption" : "Fshehtëzim",
"From address" : "Nga adresa",
- "mail" : "postë",
- "Server address" : "Adresa e serverit",
- "Port" : "Porta",
- "Credentials" : "Kredencialet",
+ "mail" : "email",
+ "Authentication method" : "Metodë mirëfilltësimi",
+ "Authentication required" : "Lypset mirëfilltësim",
+ "Server address" : "Adresë shërbyesi",
+ "Port" : "Portë",
+ "Credentials" : "Kredenciale",
+ "SMTP Username" : "Emër përdoruesi SMTP",
+ "SMTP Password" : "Fjalëkalim SMTP",
+ "Store credentials" : "Depozitoji kredencialet",
+ "Test email settings" : "Testoni rregullimet e email-it",
"Send email" : "Dërgo email",
- "Log level" : "Niveli i Historikut",
+ "Log level" : "Shkallë regjistrimi",
+ "Download logfile" : "Shkarkoni kartelën regjistër",
"More" : "Më tepër",
- "Less" : "M'pak",
- "Version" : "Versioni",
+ "Less" : "Më pak",
+ "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Kartela regjistër është më e madhe se 100 MB. Shkarkimi i saj mund të hajë ca kohë!",
+ "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Si bazë të dhënash përdoret SQLite. Për instalime më të ngarkuara, këshillojmë të kalohet në një program tjetër baze të dhënash.",
+ "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Përdorimi i SQLite-it nuk këshillohet veçanërisht kur përdoret klienti desktop për njëkohësim kartelash.",
+ "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "Për të kaluar te një tjetër bazë të dhënash përdorni mjetin rresht urdhrash: 'occ db:convert-type', ose shihni <a target=\"_blank\" href=\"%s\">dokumentimin ↗</a>.",
+ "How to do backups" : "Si të bëhen kopjeruajtje",
+ "Advanced monitoring" : "Mbikëqyrje e mëtejshme",
+ "Performance tuning" : "Përimtime performance",
+ "Improving the config.php" : "Si të përmirësohet config.php",
+ "Hardening and security guidance" : "Udhëzime për forcim dhe siguri",
+ "Version" : "Version",
+ "Developer documentation" : "Dokumentim për zhvillues",
+ "Experimental applications ahead" : "Keni përpara aplikacione eksperimentale",
+ "Experimental apps are not checked for security issues, new or known to be unstable and under heavy development. Installing them can cause data loss or security breaches." : "Aplikacionet eksperimentale nuk kontrollohen për probleme sigurie, mund të jenë të rinj ose të njohur si të paqëndrueshëm, dhe nën zhvillim intensiv. Instalimi i tyre mund të shkaktojë humbje të dhënash ose cenim të sigurisë.",
"by" : "nga",
- "Documentation:" : "Dokumentacioni:",
- "Cheers!" : "Gjithë të mirat",
- "Forum" : "Forumi",
- "Get the apps to sync your files" : "Bëni që aplikacionet të sinkronizojnë skedarët tuaj",
- "Show First Run Wizard again" : "Rishfaq përsëri fazat për hapjen e herës së parë",
- "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Ju keni përdorur <strong>%s</strong> nga <strong>%s</strong> të mundshme ",
+ "licensed" : "licencuar sipas",
+ "Documentation:" : "Dokumentim:",
+ "User documentation" : "Dokumentim për përdoruesit",
+ "Admin documentation" : "Dokumentim për përgjegjësit",
+ "Show description …" : "Shfaq përshkrim …",
+ "Hide description …" : "Fshihe përshkrimin …",
+ "This app cannot be installed because the following dependencies are not fulfilled:" : "Ky aplikacion s’mund të instalohet, ngaqë për të nuk plotësohen varësitë vijuese:",
+ "Enable only for specific groups" : "Aktivizoje vetëm për grupe të veçantë",
+ "Uninstall App" : "Çinstaloje Aplikacionin",
+ "Enable experimental apps" : "Aktivizo aplikacione eksperimentale",
+ "No apps found for your version" : "S’u gjetën aplikacione për versionin tuaj",
+ "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Njatjeta,<br><br>thjesht po ju bëjmë të ditur që tani keni një llogar %s.<br><br>Emri juaj i përdoruesit: %s<br>Hyni në të te: <a href=\"%s\">%s</a><br><br>",
+ "Cheers!" : "Gëzuar!",
+ "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Njatjeta,\n\nthjesht po ju bëjmë të ditur që tani keni një llogari %s.\n\nEmri juaj i përdoruesit: %s\nHyni në të te: %s\n\n",
+ "Administrator documentation" : "Dokumentim për përgjegjës",
+ "Online documentation" : "Dokumentim në Internet",
+ "Forum" : "Forum",
+ "Issue tracker" : "Gjurmues të metash",
+ "Commercial support" : "Asistencë komerciale",
+ "Get the apps to sync your files" : "Merrni aplikacionet për njëkohësim të kartelave tuaja",
+ "Desktop client" : "Klient desktopi",
+ "Android app" : "Aplikacion për Android",
+ "iOS app" : "Aplikacion për iOS",
+ "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Nëse doni ta përkrahni projektin\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">merrni pjesë te zhvillimi i tij</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">përhapni fjalën për të</a>!",
+ "Show First Run Wizard again" : "Shfaqe sërish Ndihmësin e Herës së Parë",
+ "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Keni përdorur <strong>%s</strong> nga <strong>%s</strong> tuajat",
"Password" : "Fjalëkalim",
- "Unable to change your password" : "Nuk është e mundur të ndryshohet fjalëkalimi",
- "Current password" : "Fjalëkalimi aktual",
+ "Unable to change your password" : "S’arrin të ndryshojë fjalëkalimin tuaj",
+ "Current password" : "Fjalëkalimi i tanishëm",
"New password" : "Fjalëkalimi i ri",
"Change password" : "Ndrysho fjalëkalimin",
+ "Full name" : "Emër i plotë",
+ "No display name set" : "S’është caktuar emër për në ekran",
"Email" : "Email",
"Your email address" : "Adresa juaj email",
- "Profile picture" : "Foto Profili",
- "Remove image" : "Fshi imazh",
- "Cancel" : "Anullo",
- "Choose as profile image" : "Vendos si foto profili",
- "Language" : "Gjuha",
+ "Fill in an email address to enable password recovery and receive notifications" : "Futni një adresë email që të aktivizoni rimarrje fjalëkalimi dhe për të marrë njoftime",
+ "No email address set" : "S’është caktuar adresë email",
+ "You are member of the following groups:" : "Jeni anëtar i grupeve vijuese:",
+ "Profile picture" : "Foto profili",
+ "Upload new" : "Ngarko të re",
+ "Select new from Files" : "Përzgjidhni të re prej Kartelash",
+ "Remove image" : "Hiqe figurën",
+ "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Ose png, ose jpg. E mira do të ishte katrore, por do të jeni në gjendje ta qethni. Nuk lejohet që kartela të tejkalojë madhësinë maksimum prej 20 MB.",
+ "Your avatar is provided by your original account." : "Avatari juaj jepet nga llogaria juaj origjinale.",
+ "Cancel" : "Anuloje",
+ "Choose as profile image" : "Zgjidhni një figurë profili",
+ "Language" : "Gjuhë",
"Help translate" : "Ndihmoni në përkthim",
- "Username" : "Përdoruesi",
- "Create" : "Krijo",
+ "Common Name" : "Emër i Rëndomtë",
+ "Valid until" : "E vlefshme deri më",
+ "Issued By" : "Lëshuar Nga",
+ "Valid until %s" : "E vlefshme deri më %s",
+ "Import root certificate" : "Importoni dëshmi rrënjë",
+ "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Krijuar nga {communityopen}bashkësia ownCloud{linkclose}, {githubopen}kodi burim{linkclose} mund të përdoret sipas licencës {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.",
+ "Show storage location" : "Shfaq vendndodhje depoje",
+ "Show last log in" : "Shfaq hyrjen e fundit",
+ "Show user backend" : "Shfaq programin klient të përdoruesit",
+ "Send email to new user" : "Dërgo email përdoruesi të ri",
+ "Show email address" : "Shfaq adresë email",
+ "Username" : "Emër përdoruesi",
+ "E-Mail" : "Email",
+ "Create" : "Krijoje",
"Admin Recovery Password" : "Rigjetja e fjalëkalimit të Admin",
- "Enter the recovery password in order to recover the users files during password change" : "Jepni fjalëkalimin e rigjetjes për të rigjetur skedarët e përdoruesit gjatë ndryshimit të fjalëkalimit",
- "Add Group" : "Shto Grup",
+ "Enter the recovery password in order to recover the users files during password change" : "Jepni fjalëkalim rimarrje që të mund të rimerrni kartela përdoruesi gjatë ndryshimit të fjalëkalimit",
+ "Add Group" : "Shtoni Grup",
"Group" : "Grup",
- "Everyone" : "Të gjithë",
+ "Everyone" : "Kushdo",
+ "Admins" : "Administratorë",
+ "Default Quota" : "Kuota Parazgjedhje",
+ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Ju lutemi, jepni kuotë depozimi (psh: \"512 MB\" ose \"12 GB\")",
"Unlimited" : "E pakufizuar",
"Other" : "Tjetër",
- "Full Name" : "Emri i plotë",
+ "Full Name" : "Emri i Plotë",
+ "Group Admin for" : "Admin Grupi për",
+ "Quota" : "Kuota",
+ "Storage Location" : "Vendndodhje Depoje",
+ "User Backend" : "Program klient i përdoruesit",
"Last Login" : "Hyrja e fundit",
- "change full name" : "ndrysho emrin e plotë",
- "set new password" : "vendos fjalëkalim të ri",
- "Default" : "Paracaktuar"
+ "change full name" : "ndryshoni emrin e plotë",
+ "set new password" : "caktoni fjalëkalim të ri",
+ "change email address" : "ndryshoni adresën email",
+ "Default" : "Parazgjedhje"
},
"nplurals=2; plural=(n != 1);");
diff --git a/settings/l10n/sq.json b/settings/l10n/sq.json
index 9d196ff0abc..eb66c38363d 100644
--- a/settings/l10n/sq.json
+++ b/settings/l10n/sq.json
@@ -1,107 +1,284 @@
{ "translations": {
- "Sharing" : "Ndarje",
+ "APCu" : "APCu",
+ "Redis" : "Redis",
+ "Security & setup warnings" : "Sinjalizime sigurie & rregullimi",
+ "Sharing" : "Ndarje me të tjerët",
+ "Server-side encryption" : "Fshehtëzim më anë shërbyesi",
+ "External Storage" : "Depozitim i Jashtëm",
"Cron" : "Cron",
- "Log" : "Historik aktiviteti",
- "Authentication error" : "Gabim autentifikimi",
- "Your full name has been changed." : "Emri juaj i plotë ka ndryshuar.",
- "Unable to change full name" : "Nuk mund të ndryshohet emri i plotë",
- "Couldn't remove app." : "Nuk mund të hiqet aplikacioni.",
+ "Email server" : "Shërbyes email-esh",
+ "Log" : "Regjistër",
+ "Tips & tricks" : "Ndihmëza & rrengje",
+ "Updates" : "Përditësime",
+ "Authentication error" : "Gabim mirëfilltësimi",
+ "Your full name has been changed." : "Emri juaj i plotë u ndryshua.",
+ "Unable to change full name" : "S’arrin të ndryshojë emrin e plotë",
+ "Couldn't remove app." : "S’hoqi dot aplikacionin.",
"Language changed" : "Gjuha u ndryshua",
"Invalid request" : "Kërkesë e pavlefshme",
- "Admins can't remove themself from the admin group" : "Administratorët nuk mund të heqin vehten prej grupit admin",
- "Unable to add user to group %s" : "E pamundur t'i shtohet përdoruesi grupit %s",
- "Unable to remove user from group %s" : "E pamundur të hiqet përdoruesi nga grupi %s",
- "Couldn't update app." : "E pamundur të përditësohet app.",
+ "Admins can't remove themself from the admin group" : "Administratorët s’mund të heqin veten prej grupit admin",
+ "Unable to add user to group %s" : "S’arrin të shtojë përdorues te grupi %s",
+ "Unable to remove user from group %s" : "S’arrin të heqë përdorues nga grupi %s",
+ "Couldn't update app." : "S’përditësoi dot aplikacionin.",
"Wrong password" : "Fjalëkalim i gabuar",
- "No user supplied" : "Nuk është dhënë asnjë përdorues",
+ "No user supplied" : "S’u dha përdorues",
"Please provide an admin recovery password, otherwise all user data will be lost" : "Ju lutem jepni një fjalëkalim restaurimi administrativ, në të kundërt të gjitha të dhënat do humbasin",
"Wrong admin recovery password. Please check the password and try again." : "Fjalëkalim i gabuar restaurimi administrativ. Ju lutem kontrolloni fjalëkalimin dhe provoni përsëri.",
- "Unable to change password" : "Fjalëkalimi nuk mund të ndryshohet",
- "Enabled" : "Aktivizuar",
- "Not enabled" : "Jo aktive",
+ "Backend doesn't support password change, but the user's encryption key was successfully updated." : "Programi klient s’mbulon ndryshime fjalëkalimi, por kyçi i përdoruesi për fshehtëzime u përditësua me sukses.",
+ "Unable to change password" : "S’arrin të ndryshojë fjalëkalimin",
+ "Enabled" : "E aktivizuar",
+ "Not enabled" : "E paaktivizuar",
+ "installing and updating apps via the app store or Federated Cloud Sharing" : "instalim dhe përditësim aplikacionesh përmes shitores së aplikacioneve ose Federated Cloud Sharing",
+ "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL-ja po përdor një version %s të vjetruar (%s). Ju lutemi, përditësoni sistemin tuaj operativ ose përndryshe veçori të tilla si %s nuk do të punojnë në mënyrë të qëndrueshme.",
+ "A problem occurred, please check your log files (Error: %s)" : "Ndodhi një gabim, ju lutemi, kontrolloni kartelat tuaja regjistër (Error: %s)",
+ "Migration Completed" : "Migrimi u Plotësua",
+ "Group already exists." : "Grupi ekziston tashmë.",
+ "Unable to add group." : "S’arrin të shtojë grup.",
+ "Unable to delete group." : "S’arrin të fshijë grup.",
+ "log-level out of allowed range" : "shkallë regjistrimi jashtë intervalit të lejuar",
"Saved" : "U ruajt",
- "test email settings" : "parametra test për email",
+ "test email settings" : "rregullime email-i test",
+ "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ndodhi një gabim gjatë dërgimit të email-it. Ju lutemi, rishikoni rregullimet tuaja. (Error: %s)",
"Email sent" : "Email-i u dërgua",
- "Email saved" : "Email u ruajt",
- "Sending..." : "Duke dërguar",
- "All" : "Të gjitha",
- "Please wait...." : "Ju lutem prisni...",
- "Disable" : "Çaktivizo",
- "Enable" : "Aktivizo",
- "Updating...." : "Duke përditësuar...",
- "Error while updating app" : "Gabim gjatë përditësimit të app",
- "Updated" : "I përditësuar",
- "Select a profile picture" : "Zgjidh një foto profili",
+ "You need to set your user email before being able to send test emails." : "Lypset të caktoni email-in tuaj si përdorues, përpara se të jeni në gjendje të dërgoni email-e provë.",
+ "Invalid mail address" : "Adresë email e pavlefshme",
+ "A user with that name already exists." : "Ka tashmë një përdorues me këtë emër.",
+ "Unable to create user." : "S’arrin të krijojë përdoruesi.",
+ "Your %s account was created" : "Llogaria juaj %s u krijua",
+ "Unable to delete user." : "S’arrin të fshijë përdorues.",
+ "Forbidden" : "E ndaluar",
+ "Invalid user" : "Përdorues i pavlefshëm",
+ "Unable to change mail address" : "S’arrin të ndryshojë adresë email",
+ "Email saved" : "Email-i u ruajt",
+ "Are you really sure you want add \"{domain}\" as trusted domain?" : "Jeni vërtet i sigurt se doni të shtoni \"{domain}\" si përkatësi të besuar?",
+ "Add trusted domain" : "Shtoni përkatësi të besuar",
+ "Migration in progress. Please wait until the migration is finished" : "Migrimi në rrugë e sipër. Ju lutemi, pritni, teksa migrimi përfundon",
+ "Migration started …" : "Migrimi filloi …",
+ "Sending..." : "Po dërgohet…",
+ "Official" : "Zyrtare",
+ "Approved" : "Të miratuara",
+ "Experimental" : "Eksperimentale",
+ "All" : "Krejt",
+ "Official apps are developed by and within the ownCloud community. They offer functionality central to ownCloud and are ready for production use." : "Aplikacionet zyrtare ndërtohen brenda bashkësisë ownCloud. Ato ofrojnë funksione qendrore për ownCloud dhe janë gati për t’u përdorur në prodhim.",
+ "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Aplikacionet e miratuara ndërtohen nga zhvillues të besuar dhe kanë kaluar një kontroll të përciptë sigurie. Mirëmbahen aktivisht në një depo të hapur kodi dhe mirëmbajtësit e tyre i konsiderojnë të qëndrueshme për përdorime nga të rastit deri në ato normale.",
+ "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Ky aplikacion s’është kontrolluar për probleme sigurie dhe është i ri ose i njohur si i paqëndrueshëm. Instalojeni duke e mbajtur vetë përgjegjësinë.",
+ "Update to %s" : "Përditësoje me %s",
+ "Please wait...." : "Ju lutemi, prisni…",
+ "Error while disabling app" : "Gabim në çaktivizimin e aplikacionit",
+ "Disable" : "Çaktivizoje",
+ "Enable" : "Aktivizoje",
+ "Error while enabling app" : "Gabim në aktivizimin e aplikacionit",
+ "Updating...." : "Po përditësohet…",
+ "Error while updating app" : "Gabim gjatë përditësimit të aplikacionit",
+ "Updated" : "U përditësua",
+ "Uninstalling ...." : "Po çinstalohet…",
+ "Error while uninstalling app" : "Gabim në çinstalimin e aplikacionit",
+ "Uninstall" : "Çinstaloje",
+ "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacioni është aktivizuar, por lyp të përditësohet. Do të ridrejtoheni te faqja e përditësimeve brenda 5 sekondash.",
+ "App update" : "Përditësim aplikacioni",
+ "An error occurred: {message}" : "Ndodhi një gabim: {message}",
+ "Select a profile picture" : "Përzgjidhni një foto profili",
"Very weak password" : "Fjalëkalim shumë i dobët",
"Weak password" : "Fjalëkalim i dobët",
- "So-so password" : "Fjalëkalim i pranueshëm",
+ "So-so password" : "Fjalëkalim çka",
"Good password" : "Fjalëkalim i mirë",
- "Strong password" : "Fjalëkalim shumë i mirë",
- "Delete" : "Fshi",
- "Groups" : "Grupet",
+ "Strong password" : "Fjalëkalim i fortë",
+ "An error occurred. Please upload an ASCII-encoded PEM certificate." : "Ndodhi një gabim. Ju lutemi, ngarkoni një dëshmi PEM të koduar me ASCII.",
+ "Valid until {date}" : "E vlefshme deri më {date}",
+ "Delete" : "Fshije",
+ "Groups" : "Grupe",
+ "Unable to delete {objName}" : "S’arrin të fshijë {objName}",
+ "Error creating group" : "Gabim gjatë krijimit të grupit",
+ "A valid group name must be provided" : "Duhet dhënë një emër i vlefshëm grupi",
"deleted {groupName}" : "u fshi {groupName}",
- "undo" : "anullo veprimin",
- "never" : "asnjëherë",
+ "undo" : "zhbëje",
+ "no group" : "pa grup",
+ "never" : "kurrë",
"deleted {userName}" : "u fshi {userName}",
"add group" : "shto grup",
- "A valid username must be provided" : "Duhet të jepni një emër të vlefshëm përdoruesi",
+ "Changing the password will result in data loss, because data recovery is not available for this user" : "Ndryshimi i fjalëkalimit do të sjellë humbje të dhënash, ngaqë rikthimi i të dhënave s’është i përdorshëm për këtë përdorues",
+ "A valid username must be provided" : "Duhet dhënë një emër të vlefshëm përdoruesi",
"Error creating user" : "Gabim gjatë krijimit të përdoruesit",
- "A valid password must be provided" : "Duhet të jepni një fjalëkalim te vlefshëm",
+ "A valid password must be provided" : "Duhet dhënë një fjalëkalim i vlefshëm",
+ "A valid email must be provided" : "Duhet dhënë një email i vlefshëm",
"__language_name__" : "Shqip",
- "None" : "Asgjë",
- "Login" : "Hyr",
- "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Moduli PHP 'fileinfo' mungon. Ju këshillojmë me këmbngulje të aktivizoni këtë modul për të arritur rezultate më të mirame identifikimin e tipeve te ndryshme MIME.",
- "Allow apps to use the Share API" : "Lejoni aplikacionet të përdorin share API",
- "Allow public uploads" : "Lejo ngarkimin publik",
- "Expire after " : "Skadon pas",
- "days" : "diitë",
- "Allow resharing" : "Lejo ri-ndarjen",
+ "Sync clients" : "Klientë njëkohësimi",
+ "Personal info" : "Të dhëna personale",
+ "SSL root certificates" : "Dëshmi SSL rrënjë",
+ "Everything (fatal issues, errors, warnings, info, debug)" : "Gjithçka (probleme fatale, gabime, sinjalizime, të dhëna, diagnostikim)",
+ "Info, warnings, errors and fatal issues" : "Të dhëna, sinjalizime, gabime dhe probleme fatale",
+ "Warnings, errors and fatal issues" : "Sinjalizime, gabime dhe probleme fatale",
+ "Errors and fatal issues" : "Gabime dhe probleme fatale",
+ "Fatal issues only" : "Vetëm probleme fatale",
+ "None" : "Asnjë",
+ "Login" : "Hyrje",
+ "Plain" : "E thjeshtë",
+ "SSL" : "SSL",
+ "TLS" : "TLS",
+ "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP-ja nuk duket të jetë rregulluar si duhet për të kërkuar ndryshore mjedisi sistemi. Testi me getenv(\"PATH\") kthen vetëm një përgjigje të zbrazët.",
+ "Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Ju lutemi, kontrolloni <a target=\"_blank\" href=\"%s\">dokumentimin e instalimit ↗</a> për shënime mbi formësimin e PHP-së dhe formësimin e PHP-së të shërbyesi juaj, veçanërisht kur përdoret php-fpm.",
+ "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Rregullimi Vetëm-Lexim u aktivizua. Kjo parandalon rregullimin e disa parametrave përmes ndërfaqes web. Më tej, për çdo përditësim kartela lyp të kalohet dorazi si e shkrueshme.",
+ "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Duket se PHP-ja është rregulluar që të heqë blloqe të brendshme dokumentimi. Kjo do t’i bëjë të papërdrshme disa aplikacione bazë.",
+ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Kjo ka gjasa të jetë shkaktuar nga një fshehtinë/përshpejtues i tillë si Zend OPcache ose eAccelerator.",
+ "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Shërbyesi juaj xhiron nën Microsoft Windows. Këshillojmë fort Linux-in për punim optimal nga ana e përdoruesit.",
+ "%1$s below version %2$s is installed, for stability and performance reasons we recommend to update to a newer %1$s version." : "Ka të instaluar %1$s nën versionin %2$s, për arsye qëndrueshmërie dhe performance këshillojmë të përditësohet me një version %1$s më të ri.",
+ "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Moduli PHP 'fileinfo' mungon. Ju këshillojmë me forcë ta aktivizoni këtë modul, për të patur përfundimet më të mira në zbulim llojesh MIME.",
+ "System locale can not be set to a one which supports UTF-8." : "Si vendore sistemi nuk mund të caktohet një që mbulon UTF-8.",
+ "This means that there might be problems with certain characters in file names." : "Kjo do të thotë që mund të ketë probleme me disa shenja në emra kartelash.",
+ "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Këshillojmë me forcë instalimin në sistemin tuaj të paketave të domosdoshme për mbulim të një prej vendoreve vijuese: %s.",
+ "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Nëse instalimi juaj nuk është bërë në rrënjë të përkatësisë dhe përdor cron sistemi, mund të ketë probleme me prodhimin e URL-së. Që të shmangen këto probleme, ju lutemi, jepini mundësisë \"overwrite.cli.url\" te kartela juaj config.php vlerën e shtegut webroot të instalimit tuaj (E këshillueshme: \"%s\")",
+ "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "S’qe e mundur të përmbushej akti cron përmes CLI-së. U shfaqën gabimet teknike vijuese:",
+ "Please double check the <a target=\"_blank\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Ju lutemi, rihidhuni një sy <a target=\"_blank\" href=\"%s\">udhërrëfyesve të instalimit ↗</a>, dhe kontrolloni te <a href=\"#log-section\">regjistri</a> për çfarëdo gabimesh apo sinjalizimesh.",
+ "All checks passed." : "I kaloi krejt kontrollet.",
+ "Open documentation" : "Hapni dokumentimin",
+ "Allow apps to use the Share API" : "Lejoni aplikacionet të përdorin API Share",
+ "Allow users to share via link" : "Lejoji përdoruesit të ndajnë me të tjerët përmes lidhjesh",
+ "Enforce password protection" : "Detyro mbrojtje fjalëkalimi",
+ "Allow public uploads" : "Lejo ngarkime publike",
+ "Allow users to send mail notification for shared files" : "Lejojuni përdoruesve të dërgojnë njoftime me email për kartela të ndara me të tjerët",
+ "Set default expiration date" : "Caktoni datë parazgjedhje skadimi",
+ "Expire after " : "Skadon pas ",
+ "days" : "ditësh",
+ "Enforce expiration date" : "Detyro datë skadimi",
+ "Allow resharing" : "Lejo rindarje",
+ "Restrict users to only share with users in their groups" : "Përdoruesit kufizoji të ndajnë gjëra vetëm me përdorues në grupin e tyre",
+ "Allow users to send mail notification for shared files to other users" : "Lejojuni përdoruesve t’u dërgojnë përdoruesve të tjerë njoftime me email për kartela të ndara me të tjerët",
+ "Exclude groups from sharing" : "Përjashtoni grupe nga ndarjet",
+ "These groups will still be able to receive shares, but not to initiate them." : "Këta grupe prapë do të jenë në gjendje të marrin ndarje nga të tjerët, por jo të fillojnë të tilla.",
+ "Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "Lejo vetëplotësim emra përdoruesish te dialogu i ndarjeve me të tjerët. Nëse kjo është e çaktivizuar, do të duhet të jepen emra përdoruesish.",
+ "Last cron job execution: %s." : "Përmbushja e fundit e aktit cron: %s.",
+ "Last cron job execution: %s. Something seems wrong." : "Përmbushja e fundit e aktit cron: %s. Duket se nuk shkon diçka.",
+ "Cron was not executed yet!" : "Cron-i s’qe ekzekutuar ende!",
"Execute one task with each page loaded" : "Kryeni vetëm një veprim me secilën prej faqeve të ngarkuara",
+ "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php është regjistruar te një shërbim webcron që ta aktivizojë cron.php-në çdo 15 minuta përmes http-je.",
+ "Use system's cron service to call the cron.php file every 15 minutes." : "Përdorni shërbimin cron të sistemit që ta aktivizojë cron.php-në çdo 15 minuta.",
+ "Enable server-side encryption" : "Aktivizo fshehtëzim më anë të shërbyesit",
+ "Please read carefully before activating server-side encryption: " : "Ju lutemi, lexoni me kujdes përpara aktivizimit të fshehtëzimeve më anë shërbyesi: ",
+ "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Pasi të jetë aktivizuar fshehtëzimi, krejt kartelat e ngarkuara te shërbyesi nga kjo pikë e tutje do të fshehtëzohen pasi të jenë depozituar në shërbyes. Çaktivizimi i fshehtëzimit në një datë të mëvonshme do të jetë i mundur vetëm nëse moduli aktiv i fshehtëzimeve e mbulon këtë funksion, dhe nëse plotësohen krejt parakushtet (p.sh. caktimi i një kyçi rimarrjesh).",
+ "Encryption alone does not guarantee security of the system. Please see ownCloud documentation for more information about how the encryption app works, and the supported use cases." : "Fshehtëzimi, dhe vetëm kaq, s’garanton sigurinë e sistemit. Ju lutemi, për më tepër të dhëna se si funksionon aplikacioni i fshehtëzimeve, dhe për raste përdorimi që mbulon, lexoni dokumentimin e ownCloud-it.",
+ "Be aware that encryption always increases the file size." : "Kini parasysh që fshehtëzimi e rrit gjithnjë madhësinë e kartelës.",
+ "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Është gjithmonë ide e mirë të krijohen kopjeruajtje të rregullta të të dhënave tuaja, në rast fshehtëzimi sigurohuni që bëni kopjeruajtje të kyçeve të fshehtëzimit, tok me të dhënat tuaja.",
+ "This is the final warning: Do you really want to enable encryption?" : "Ky është sinjalizimi përfundimtar: Doni vërtet të aktivizohet fshehtëzimi?",
+ "Enable encryption" : "Aktivizoni fshehtëzim",
+ "No encryption module loaded, please enable an encryption module in the app menu." : "S’ka të ngarkuar modul fshehtëzimi, ju lutemi, aktivizoni një modul fshehtëzimi që nga menuja e aplikacionit.",
+ "Select default encryption module:" : "Përzgjidhni modul parazgjedhje fshehtëzimi:",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu. Ju lutemi, aktivizoni \"Modul parazgjedhje fshehtëzimesh\" dhe ekzekutoni 'occ encryption:migrate'",
+ "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Lypset të migroni kyçet tuaj të fshehtëzimit nga fshehtëzimi i vjetër (ownCloud <= 8.0) te i riu.",
+ "Start migration" : "Fillo migrimin",
+ "This is used for sending out notifications." : "Kjo përdoret për të dërguar njoftime.",
"Send mode" : "Mënyra e dërgimit",
- "Encryption" : "Kodifikimi",
+ "Encryption" : "Fshehtëzim",
"From address" : "Nga adresa",
- "mail" : "postë",
- "Server address" : "Adresa e serverit",
- "Port" : "Porta",
- "Credentials" : "Kredencialet",
+ "mail" : "email",
+ "Authentication method" : "Metodë mirëfilltësimi",
+ "Authentication required" : "Lypset mirëfilltësim",
+ "Server address" : "Adresë shërbyesi",
+ "Port" : "Portë",
+ "Credentials" : "Kredenciale",
+ "SMTP Username" : "Emër përdoruesi SMTP",
+ "SMTP Password" : "Fjalëkalim SMTP",
+ "Store credentials" : "Depozitoji kredencialet",
+ "Test email settings" : "Testoni rregullimet e email-it",
"Send email" : "Dërgo email",
- "Log level" : "Niveli i Historikut",
+ "Log level" : "Shkallë regjistrimi",
+ "Download logfile" : "Shkarkoni kartelën regjistër",
"More" : "Më tepër",
- "Less" : "M'pak",
- "Version" : "Versioni",
+ "Less" : "Më pak",
+ "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Kartela regjistër është më e madhe se 100 MB. Shkarkimi i saj mund të hajë ca kohë!",
+ "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Si bazë të dhënash përdoret SQLite. Për instalime më të ngarkuara, këshillojmë të kalohet në një program tjetër baze të dhënash.",
+ "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "Përdorimi i SQLite-it nuk këshillohet veçanërisht kur përdoret klienti desktop për njëkohësim kartelash.",
+ "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" href=\"%s\">documentation ↗</a>." : "Për të kaluar te një tjetër bazë të dhënash përdorni mjetin rresht urdhrash: 'occ db:convert-type', ose shihni <a target=\"_blank\" href=\"%s\">dokumentimin ↗</a>.",
+ "How to do backups" : "Si të bëhen kopjeruajtje",
+ "Advanced monitoring" : "Mbikëqyrje e mëtejshme",
+ "Performance tuning" : "Përimtime performance",
+ "Improving the config.php" : "Si të përmirësohet config.php",
+ "Hardening and security guidance" : "Udhëzime për forcim dhe siguri",
+ "Version" : "Version",
+ "Developer documentation" : "Dokumentim për zhvillues",
+ "Experimental applications ahead" : "Keni përpara aplikacione eksperimentale",
+ "Experimental apps are not checked for security issues, new or known to be unstable and under heavy development. Installing them can cause data loss or security breaches." : "Aplikacionet eksperimentale nuk kontrollohen për probleme sigurie, mund të jenë të rinj ose të njohur si të paqëndrueshëm, dhe nën zhvillim intensiv. Instalimi i tyre mund të shkaktojë humbje të dhënash ose cenim të sigurisë.",
"by" : "nga",
- "Documentation:" : "Dokumentacioni:",
- "Cheers!" : "Gjithë të mirat",
- "Forum" : "Forumi",
- "Get the apps to sync your files" : "Bëni që aplikacionet të sinkronizojnë skedarët tuaj",
- "Show First Run Wizard again" : "Rishfaq përsëri fazat për hapjen e herës së parë",
- "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Ju keni përdorur <strong>%s</strong> nga <strong>%s</strong> të mundshme ",
+ "licensed" : "licencuar sipas",
+ "Documentation:" : "Dokumentim:",
+ "User documentation" : "Dokumentim për përdoruesit",
+ "Admin documentation" : "Dokumentim për përgjegjësit",
+ "Show description …" : "Shfaq përshkrim …",
+ "Hide description …" : "Fshihe përshkrimin …",
+ "This app cannot be installed because the following dependencies are not fulfilled:" : "Ky aplikacion s’mund të instalohet, ngaqë për të nuk plotësohen varësitë vijuese:",
+ "Enable only for specific groups" : "Aktivizoje vetëm për grupe të veçantë",
+ "Uninstall App" : "Çinstaloje Aplikacionin",
+ "Enable experimental apps" : "Aktivizo aplikacione eksperimentale",
+ "No apps found for your version" : "S’u gjetën aplikacione për versionin tuaj",
+ "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Njatjeta,<br><br>thjesht po ju bëjmë të ditur që tani keni një llogar %s.<br><br>Emri juaj i përdoruesit: %s<br>Hyni në të te: <a href=\"%s\">%s</a><br><br>",
+ "Cheers!" : "Gëzuar!",
+ "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Njatjeta,\n\nthjesht po ju bëjmë të ditur që tani keni një llogari %s.\n\nEmri juaj i përdoruesit: %s\nHyni në të te: %s\n\n",
+ "Administrator documentation" : "Dokumentim për përgjegjës",
+ "Online documentation" : "Dokumentim në Internet",
+ "Forum" : "Forum",
+ "Issue tracker" : "Gjurmues të metash",
+ "Commercial support" : "Asistencë komerciale",
+ "Get the apps to sync your files" : "Merrni aplikacionet për njëkohësim të kartelave tuaja",
+ "Desktop client" : "Klient desktopi",
+ "Android app" : "Aplikacion për Android",
+ "iOS app" : "Aplikacion për iOS",
+ "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Nëse doni ta përkrahni projektin\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">merrni pjesë te zhvillimi i tij</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">përhapni fjalën për të</a>!",
+ "Show First Run Wizard again" : "Shfaqe sërish Ndihmësin e Herës së Parë",
+ "You have used <strong>%s</strong> of the available <strong>%s</strong>" : "Keni përdorur <strong>%s</strong> nga <strong>%s</strong> tuajat",
"Password" : "Fjalëkalim",
- "Unable to change your password" : "Nuk është e mundur të ndryshohet fjalëkalimi",
- "Current password" : "Fjalëkalimi aktual",
+ "Unable to change your password" : "S’arrin të ndryshojë fjalëkalimin tuaj",
+ "Current password" : "Fjalëkalimi i tanishëm",
"New password" : "Fjalëkalimi i ri",
"Change password" : "Ndrysho fjalëkalimin",
+ "Full name" : "Emër i plotë",
+ "No display name set" : "S’është caktuar emër për në ekran",
"Email" : "Email",
"Your email address" : "Adresa juaj email",
- "Profile picture" : "Foto Profili",
- "Remove image" : "Fshi imazh",
- "Cancel" : "Anullo",
- "Choose as profile image" : "Vendos si foto profili",
- "Language" : "Gjuha",
+ "Fill in an email address to enable password recovery and receive notifications" : "Futni një adresë email që të aktivizoni rimarrje fjalëkalimi dhe për të marrë njoftime",
+ "No email address set" : "S’është caktuar adresë email",
+ "You are member of the following groups:" : "Jeni anëtar i grupeve vijuese:",
+ "Profile picture" : "Foto profili",
+ "Upload new" : "Ngarko të re",
+ "Select new from Files" : "Përzgjidhni të re prej Kartelash",
+ "Remove image" : "Hiqe figurën",
+ "Either png or jpg. Ideally square but you will be able to crop it. The file is not allowed to exceed the maximum size of 20 MB." : "Ose png, ose jpg. E mira do të ishte katrore, por do të jeni në gjendje ta qethni. Nuk lejohet që kartela të tejkalojë madhësinë maksimum prej 20 MB.",
+ "Your avatar is provided by your original account." : "Avatari juaj jepet nga llogaria juaj origjinale.",
+ "Cancel" : "Anuloje",
+ "Choose as profile image" : "Zgjidhni një figurë profili",
+ "Language" : "Gjuhë",
"Help translate" : "Ndihmoni në përkthim",
- "Username" : "Përdoruesi",
- "Create" : "Krijo",
+ "Common Name" : "Emër i Rëndomtë",
+ "Valid until" : "E vlefshme deri më",
+ "Issued By" : "Lëshuar Nga",
+ "Valid until %s" : "E vlefshme deri më %s",
+ "Import root certificate" : "Importoni dëshmi rrënjë",
+ "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Krijuar nga {communityopen}bashkësia ownCloud{linkclose}, {githubopen}kodi burim{linkclose} mund të përdoret sipas licencës {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.",
+ "Show storage location" : "Shfaq vendndodhje depoje",
+ "Show last log in" : "Shfaq hyrjen e fundit",
+ "Show user backend" : "Shfaq programin klient të përdoruesit",
+ "Send email to new user" : "Dërgo email përdoruesi të ri",
+ "Show email address" : "Shfaq adresë email",
+ "Username" : "Emër përdoruesi",
+ "E-Mail" : "Email",
+ "Create" : "Krijoje",
"Admin Recovery Password" : "Rigjetja e fjalëkalimit të Admin",
- "Enter the recovery password in order to recover the users files during password change" : "Jepni fjalëkalimin e rigjetjes për të rigjetur skedarët e përdoruesit gjatë ndryshimit të fjalëkalimit",
- "Add Group" : "Shto Grup",
+ "Enter the recovery password in order to recover the users files during password change" : "Jepni fjalëkalim rimarrje që të mund të rimerrni kartela përdoruesi gjatë ndryshimit të fjalëkalimit",
+ "Add Group" : "Shtoni Grup",
"Group" : "Grup",
- "Everyone" : "Të gjithë",
+ "Everyone" : "Kushdo",
+ "Admins" : "Administratorë",
+ "Default Quota" : "Kuota Parazgjedhje",
+ "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Ju lutemi, jepni kuotë depozimi (psh: \"512 MB\" ose \"12 GB\")",
"Unlimited" : "E pakufizuar",
"Other" : "Tjetër",
- "Full Name" : "Emri i plotë",
+ "Full Name" : "Emri i Plotë",
+ "Group Admin for" : "Admin Grupi për",
+ "Quota" : "Kuota",
+ "Storage Location" : "Vendndodhje Depoje",
+ "User Backend" : "Program klient i përdoruesit",
"Last Login" : "Hyrja e fundit",
- "change full name" : "ndrysho emrin e plotë",
- "set new password" : "vendos fjalëkalim të ri",
- "Default" : "Paracaktuar"
+ "change full name" : "ndryshoni emrin e plotë",
+ "set new password" : "caktoni fjalëkalim të ri",
+ "change email address" : "ndryshoni adresën email",
+ "Default" : "Parazgjedhje"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/settings/l10n/th_TH.js b/settings/l10n/th_TH.js
index cedc077652c..11dfd5273d2 100644
--- a/settings/l10n/th_TH.js
+++ b/settings/l10n/th_TH.js
@@ -77,6 +77,7 @@ OC.L10N.register(
"Uninstalling ...." : "กำลังถอนการติดตั้ง ...",
"Error while uninstalling app" : "เกิดข้อผิดพลาดขณะถอนการติดตั้งแอพพลิเคชัน",
"Uninstall" : "ถอนการติดตั้ง",
+ "App update" : "อัพเดทแอพฯ",
"An error occurred: {message}" : "เกิดข้อผิดพลาด: {message}",
"Select a profile picture" : "เลือกรูปภาพโปรไฟล์",
"Very weak password" : "รหัสผ่านระดับต่ำมาก",
@@ -158,6 +159,7 @@ OC.L10N.register(
"Use system's cron service to call the cron.php file every 15 minutes." : "บริการ cron ของระบบจะเรียกไฟล์ cron.php ทุกq 15 นาที",
"Enable server-side encryption" : "เปิดการใช้งานเข้ารหัสฝั่งเซิร์ฟเวอร์",
"Please read carefully before activating server-side encryption: " : "กรุณาอ่านอย่างละเอียดก่อนที่จะเปิดใช้งานการเข้ารหัสฝั่งเซิร์ฟเวอร์:",
+ "Be aware that encryption always increases the file size." : "โปรดทราบว่าหากเข้ารหัสไฟล์จะทำให้ขนาดของไฟล์ใหญ่ขึ้น",
"This is the final warning: Do you really want to enable encryption?" : "นี่คือการเตือนครั้งสุดท้าย: คุณต้องการที่จะเปิดใช้การเข้ารหัส?",
"Enable encryption" : "เปิดใช้งานการเข้ารหัส",
"No encryption module loaded, please enable an encryption module in the app menu." : "ไม่มีโมดูลการเข้ารหัสโหลดโปรดเปิดใช้งานโมดูลการเข้ารหัสในเมนูแอพฯ",
diff --git a/settings/l10n/th_TH.json b/settings/l10n/th_TH.json
index c09be59ac2c..ac669176f92 100644
--- a/settings/l10n/th_TH.json
+++ b/settings/l10n/th_TH.json
@@ -75,6 +75,7 @@
"Uninstalling ...." : "กำลังถอนการติดตั้ง ...",
"Error while uninstalling app" : "เกิดข้อผิดพลาดขณะถอนการติดตั้งแอพพลิเคชัน",
"Uninstall" : "ถอนการติดตั้ง",
+ "App update" : "อัพเดทแอพฯ",
"An error occurred: {message}" : "เกิดข้อผิดพลาด: {message}",
"Select a profile picture" : "เลือกรูปภาพโปรไฟล์",
"Very weak password" : "รหัสผ่านระดับต่ำมาก",
@@ -156,6 +157,7 @@
"Use system's cron service to call the cron.php file every 15 minutes." : "บริการ cron ของระบบจะเรียกไฟล์ cron.php ทุกq 15 นาที",
"Enable server-side encryption" : "เปิดการใช้งานเข้ารหัสฝั่งเซิร์ฟเวอร์",
"Please read carefully before activating server-side encryption: " : "กรุณาอ่านอย่างละเอียดก่อนที่จะเปิดใช้งานการเข้ารหัสฝั่งเซิร์ฟเวอร์:",
+ "Be aware that encryption always increases the file size." : "โปรดทราบว่าหากเข้ารหัสไฟล์จะทำให้ขนาดของไฟล์ใหญ่ขึ้น",
"This is the final warning: Do you really want to enable encryption?" : "นี่คือการเตือนครั้งสุดท้าย: คุณต้องการที่จะเปิดใช้การเข้ารหัส?",
"Enable encryption" : "เปิดใช้งานการเข้ารหัส",
"No encryption module loaded, please enable an encryption module in the app menu." : "ไม่มีโมดูลการเข้ารหัสโหลดโปรดเปิดใช้งานโมดูลการเข้ารหัสในเมนูแอพฯ",
diff --git a/settings/templates/admin.php b/settings/templates/admin.php
index 524553ca4d5..27785c26dfe 100644
--- a/settings/templates/admin.php
+++ b/settings/templates/admin.php
@@ -203,30 +203,30 @@ if ($_['cronErrors']) {
title="<?php p($l->t('Open documentation'));?>"
href="<?php p(link_to_docs('admin-sharing')); ?>"></a>
<p id="enable">
- <input type="checkbox" name="shareapi_enabled" id="shareAPIEnabled"
+ <input type="checkbox" name="shareapi_enabled" id="shareAPIEnabled" class="checkbox"
value="1" <?php if ($_['shareAPIEnabled'] === 'yes') print_unescaped('checked="checked"'); ?> />
<label for="shareAPIEnabled"><?php p($l->t('Allow apps to use the Share API'));?></label><br/>
</p>
<p class="<?php if ($_['shareAPIEnabled'] === 'no') p('hidden');?>">
- <input type="checkbox" name="shareapi_allow_links" id="allowLinks"
+ <input type="checkbox" name="shareapi_allow_links" id="allowLinks" class="checkbox"
value="1" <?php if ($_['allowLinks'] === 'yes') print_unescaped('checked="checked"'); ?> />
<label for="allowLinks"><?php p($l->t('Allow users to share via link'));?></label><br/>
</p>
<p id="publicLinkSettings" class="indent <?php if ($_['allowLinks'] !== 'yes' || $_['shareAPIEnabled'] === 'no') p('hidden'); ?>">
- <input type="checkbox" name="shareapi_enforce_links_password" id="enforceLinkPassword"
+ <input type="checkbox" name="shareapi_enforce_links_password" id="enforceLinkPassword" class="checkbox"
value="1" <?php if ($_['enforceLinkPassword']) print_unescaped('checked="checked"'); ?> />
<label for="enforceLinkPassword"><?php p($l->t('Enforce password protection'));?></label><br/>
- <input type="checkbox" name="shareapi_allow_public_upload" id="allowPublicUpload"
+ <input type="checkbox" name="shareapi_allow_public_upload" id="allowPublicUpload" class="checkbox"
value="1" <?php if ($_['allowPublicUpload'] == 'yes') print_unescaped('checked="checked"'); ?> />
<label for="allowPublicUpload"><?php p($l->t('Allow public uploads'));?></label><br/>
- <input type="checkbox" name="shareapi_allow_public_notification" id="allowPublicMailNotification"
+ <input type="checkbox" name="shareapi_allow_public_notification" id="allowPublicMailNotification" class="checkbox"
value="1" <?php if ($_['allowPublicMailNotification'] == 'yes') print_unescaped('checked="checked"'); ?> />
<label for="allowPublicMailNotification"><?php p($l->t('Allow users to send mail notification for shared files'));?></label><br/>
- <input type="checkbox" name="shareapi_default_expire_date" id="shareapiDefaultExpireDate"
+ <input type="checkbox" name="shareapi_default_expire_date" id="shareapiDefaultExpireDate" class="checkbox"
value="1" <?php if ($_['shareDefaultExpireDateSet'] === 'yes') print_unescaped('checked="checked"'); ?> />
<label for="shareapiDefaultExpireDate"><?php p($l->t('Set default expiration date'));?></label><br/>
@@ -236,27 +236,27 @@ if ($_['cronErrors']) {
<input type="text" name='shareapi_expire_after_n_days' id="shareapiExpireAfterNDays" placeholder="<?php p('7')?>"
value='<?php p($_['shareExpireAfterNDays']) ?>' />
<?php p($l->t( 'days' )); ?>
- <input type="checkbox" name="shareapi_enforce_expire_date" id="shareapiEnforceExpireDate"
+ <input type="checkbox" name="shareapi_enforce_expire_date" id="shareapiEnforceExpireDate" class="checkbox"
value="1" <?php if ($_['shareEnforceExpireDate'] === 'yes') print_unescaped('checked="checked"'); ?> />
<label for="shareapiEnforceExpireDate"><?php p($l->t('Enforce expiration date'));?></label><br/>
</p>
<p class="<?php if ($_['shareAPIEnabled'] === 'no') p('hidden');?>">
- <input type="checkbox" name="shareapi_allow_resharing" id="allowResharing"
+ <input type="checkbox" name="shareapi_allow_resharing" id="allowResharing" class="checkbox"
value="1" <?php if ($_['allowResharing'] === 'yes') print_unescaped('checked="checked"'); ?> />
<label for="allowResharing"><?php p($l->t('Allow resharing'));?></label><br/>
</p>
<p class="<?php if ($_['shareAPIEnabled'] === 'no') p('hidden');?>">
- <input type="checkbox" name="shareapi_only_share_with_group_members" id="onlyShareWithGroupMembers"
+ <input type="checkbox" name="shareapi_only_share_with_group_members" id="onlyShareWithGroupMembers" class="checkbox"
value="1" <?php if ($_['onlyShareWithGroupMembers']) print_unescaped('checked="checked"'); ?> />
<label for="onlyShareWithGroupMembers"><?php p($l->t('Restrict users to only share with users in their groups'));?></label><br/>
</p>
<p class="<?php if ($_['shareAPIEnabled'] === 'no') p('hidden');?>">
- <input type="checkbox" name="shareapi_allow_mail_notification" id="allowMailNotification"
+ <input type="checkbox" name="shareapi_allow_mail_notification" id="allowMailNotification" class="checkbox"
value="1" <?php if ($_['allowMailNotification'] === 'yes') print_unescaped('checked="checked"'); ?> />
<label for="allowMailNotification"><?php p($l->t('Allow users to send mail notification for shared files to other users'));?></label><br/>
</p>
<p class="<?php if ($_['shareAPIEnabled'] === 'no') p('hidden');?>">
- <input type="checkbox" name="shareapi_exclude_groups" id="shareapiExcludeGroups"
+ <input type="checkbox" name="shareapi_exclude_groups" id="shareapiExcludeGroups" class="checkbox"
value="1" <?php if ($_['shareExcludeGroups']) print_unescaped('checked="checked"'); ?> />
<label for="shareapiExcludeGroups"><?php p($l->t('Exclude groups from sharing'));?></label><br/>
</p>
@@ -266,7 +266,7 @@ if ($_['cronErrors']) {
<em><?php p($l->t('These groups will still be able to receive shares, but not to initiate them.')); ?></em>
</p>
<p class="<?php if ($_['shareAPIEnabled'] === 'no') p('hidden');?>">
- <input type="checkbox" name="shareapi_allow_share_dialog_user_enumeration" value="1" id="shareapi_allow_share_dialog_user_enumeration"
+ <input type="checkbox" name="shareapi_allow_share_dialog_user_enumeration" value="1" id="shareapi_allow_share_dialog_user_enumeration" class="checkbox"
<?php if ($_['allowShareDialogUserEnumeration'] === 'yes') print_unescaped('checked="checked"'); ?> />
<label for="shareapi_allow_share_dialog_user_enumeration"><?php p($l->t('Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered.'));?></label><br />
</p>
@@ -344,7 +344,7 @@ if ($_['cronErrors']) {
<p id="enable">
<input type="checkbox"
- id="enableEncryption"
+ id="enableEncryption" class="checkbox"
value="1" <?php if ($_['encryptionEnabled']) print_unescaped('checked="checked" disabled="disabled"'); ?> />
<label
for="enableEncryption"><?php p($l->t('Enable server-side encryption')); ?> <span id="startmigration_msg" class="msg"></span> </label><br/>
@@ -458,7 +458,7 @@ if ($_['cronErrors']) {
<?php endforeach;?>
</select>
- <input type="checkbox" name="mail_smtpauth" id="mail_smtpauth" value="1"
+ <input type="checkbox" name="mail_smtpauth" id="mail_smtpauth" class="checkbox" value="1"
<?php if ($_['mail_smtpauth']) print_unescaped('checked="checked"'); ?> />
<label for="mail_smtpauth"><?php p($l->t( 'Authentication required' )); ?></label>
</p>
diff --git a/tests/core/avatar/avatarcontrollertest.php b/tests/core/avatar/avatarcontrollertest.php
index e8fb977fae1..929a4e5f91d 100644
--- a/tests/core/avatar/avatarcontrollertest.php
+++ b/tests/core/avatar/avatarcontrollertest.php
@@ -76,6 +76,8 @@ class AvatarControllerTest extends \Test\TestCase {
->disableOriginalConstructor()->getMock();
$this->container['UserFolder'] = $this->getMockBuilder('OCP\Files\Folder')
->disableOriginalConstructor()->getMock();
+ $this->container['Logger'] = $this->getMockBuilder('OCP\ILogger')
+ ->disableOriginalConstructor()->getMock();
$this->avatarMock = $this->getMockBuilder('OCP\IAvatar')
->disableOriginalConstructor()->getMock();
@@ -217,8 +219,11 @@ class AvatarControllerTest extends \Test\TestCase {
$this->avatarMock->method('remove')->will($this->throwException(new \Exception("foo")));
$this->container['AvatarManager']->method('getAvatar')->willReturn($this->avatarMock);
- $response = $this->avatarController->deleteAvatar();
- $this->assertEquals(Http::STATUS_BAD_REQUEST, $response->getStatus());
+ $this->container['Logger']->expects($this->once())
+ ->method('logException')
+ ->with(new \Exception("foo"));
+ $expectedResponse = new Http\DataResponse(['data' => ['message' => 'An error occurred. Please contact your admin.']], Http::STATUS_BAD_REQUEST);
+ $this->assertEquals($expectedResponse, $this->avatarController->deleteAvatar());
}
/**
@@ -329,6 +334,26 @@ class AvatarControllerTest extends \Test\TestCase {
}
/**
+ * Test what happens if the upload of the avatar fails
+ */
+ public function testPostAvatarException() {
+ $this->container['Cache']->expects($this->once())
+ ->method('set')
+ ->will($this->throwException(new \Exception("foo")));
+ $file = $this->getMockBuilder('OCP\Files\File')
+ ->disableOriginalConstructor()->getMock();
+ $file->method('getContent')->willReturn(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
+ $this->container['UserFolder']->method('get')->willReturn($file);
+
+ $this->container['Logger']->expects($this->once())
+ ->method('logException')
+ ->with(new \Exception("foo"));
+ $expectedResponse = new Http\DataResponse(['data' => ['message' => 'An error occurred. Please contact your admin.']], Http::STATUS_OK);
+ $this->assertEquals($expectedResponse, $this->avatarController->postAvatar('avatar.jpg'));
+ }
+
+
+ /**
* Test invalid crop argument
*/
public function testPostCroppedAvatarInvalidCrop() {
@@ -372,6 +397,23 @@ class AvatarControllerTest extends \Test\TestCase {
}
/**
+ * Test what happens if the cropping of the avatar fails
+ */
+ public function testPostCroppedAvatarException() {
+ $this->container['Cache']->method('get')->willReturn(file_get_contents(OC::$SERVERROOT.'/tests/data/testimage.jpg'));
+
+ $this->avatarMock->method('set')->will($this->throwException(new \Exception('foo')));
+ $this->container['AvatarManager']->method('getAvatar')->willReturn($this->avatarMock);
+
+ $this->container['Logger']->expects($this->once())
+ ->method('logException')
+ ->with(new \Exception('foo'));
+ $expectedResponse = new Http\DataResponse(['data' => ['message' => 'An error occurred. Please contact your admin.']], Http::STATUS_BAD_REQUEST);
+ $this->assertEquals($expectedResponse, $this->avatarController->postCroppedAvatar(['x' => 0, 'y' => 0, 'w' => 10, 'h' => 11]));
+ }
+
+
+ /**
* Check for proper reply on proper crop argument
*/
public function testFileTooBig() {
diff --git a/tests/lib/api.php b/tests/lib/api.php
index 3b925a63960..f8f03965711 100644
--- a/tests/lib/api.php
+++ b/tests/lib/api.php
@@ -34,6 +34,50 @@ class Test_API extends \Test\TestCase {
$this->assertEquals($success, $result->succeeded());
}
+ /**
+ * @return array
+ */
+ public function versionDataScriptNameProvider() {
+ return [
+ // Valid script name
+ [
+ '/master/ocs/v2.php',
+ true,
+ ],
+
+ // Invalid script names
+ [
+ '/master/ocs/v2.php/someInvalidPathName',
+ false,
+ ],
+ [
+ '/master/ocs/v1.php',
+ false,
+ ],
+ [
+ '',
+ false,
+ ],
+ ];
+ }
+
+ /**
+ * @dataProvider versionDataScriptNameProvider
+ * @param string $scriptName
+ * @param bool $expected
+ */
+ public function testIsV2($scriptName, $expected) {
+ $request = $this->getMockBuilder('\OCP\IRequest')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $request
+ ->expects($this->once())
+ ->method('getScriptName')
+ ->will($this->returnValue($scriptName));
+
+ $this->assertEquals($expected, $this->invokePrivate(new \OC_API, 'isV2', [$request]));
+ }
+
function dataProviderTestOneResult() {
return array(
array(100, true),
diff --git a/tests/lib/connector/sabre/filesplugin.php b/tests/lib/connector/sabre/filesplugin.php
index 0aa62cab176..391062d6796 100644
--- a/tests/lib/connector/sabre/filesplugin.php
+++ b/tests/lib/connector/sabre/filesplugin.php
@@ -13,7 +13,7 @@ class FilesPlugin extends \Test\TestCase {
const FILEID_PROPERTYNAME = \OC\Connector\Sabre\FilesPlugin::FILEID_PROPERTYNAME;
const SIZE_PROPERTYNAME = \OC\Connector\Sabre\FilesPlugin::SIZE_PROPERTYNAME;
const PERMISSIONS_PROPERTYNAME = \OC\Connector\Sabre\FilesPlugin::PERMISSIONS_PROPERTYNAME;
- const GETLASTMODIFIED_PROPERTYNAME = \OC\Connector\Sabre\FilesPlugin::GETLASTMODIFIED_PROPERTYNAME;
+ const LASTMODIFIED_PROPERTYNAME = \OC\Connector\Sabre\FilesPlugin::LASTMODIFIED_PROPERTYNAME;
const DOWNLOADURL_PROPERTYNAME = \OC\Connector\Sabre\FilesPlugin::DOWNLOADURL_PROPERTYNAME;
/**
@@ -190,7 +190,7 @@ class FilesPlugin extends \Test\TestCase {
// properties to set
$propPatch = new \Sabre\DAV\PropPatch(array(
self::GETETAG_PROPERTYNAME => 'newetag',
- self::GETLASTMODIFIED_PROPERTYNAME => $testDate
+ self::LASTMODIFIED_PROPERTYNAME => $testDate
));
$this->plugin->handleUpdateProperties(
@@ -203,7 +203,7 @@ class FilesPlugin extends \Test\TestCase {
$this->assertEmpty($propPatch->getRemainingMutations());
$result = $propPatch->getResult();
- $this->assertEquals(200, $result[self::GETLASTMODIFIED_PROPERTYNAME]);
+ $this->assertEquals(200, $result[self::LASTMODIFIED_PROPERTYNAME]);
$this->assertEquals(200, $result[self::GETETAG_PROPERTYNAME]);
}
diff --git a/tests/lib/share/share.php b/tests/lib/share/share.php
index 4cb0577cc8c..fc1357fe6e7 100644
--- a/tests/lib/share/share.php
+++ b/tests/lib/share/share.php
@@ -1679,6 +1679,62 @@ class Test_Share extends \Test\TestCase {
$config->deleteAppValue('core', 'shareapi_default_expire_date');
$config->deleteAppValue('core', 'shareapi_expire_after_n_days');
}
+
+ /**
+ * Test case for #17560
+ */
+ public function testAccesToSharedSubFolder() {
+ OC_User::setUserId($this->user1);
+ $view = new \OC\Files\View('/' . $this->user1 . '/');
+ $view->mkdir('files/folder1');
+
+ $fileInfo = $view->getFileInfo('files/folder1');
+ $this->assertInstanceOf('\OC\Files\FileInfo', $fileInfo);
+ $fileId = $fileInfo->getId();
+
+ $this->assertTrue(
+ OCP\Share::shareItem('folder', $fileId, OCP\Share::SHARE_TYPE_USER, $this->user2, \OCP\Constants::PERMISSION_ALL),
+ 'Failed asserting that user 1 successfully shared "test" with user 2.'
+ );
+ $this->assertTrue(
+ OCP\Share::shareItem('folder', $fileId, OCP\Share::SHARE_TYPE_USER, $this->user3, \OCP\Constants::PERMISSION_ALL),
+ 'Failed asserting that user 1 successfully shared "test" with user 3.'
+ );
+
+ $view->mkdir('files/folder1/folder2');
+
+ $fileInfo = $view->getFileInfo('files/folder1/folder2');
+ $this->assertInstanceOf('\OC\Files\FileInfo', $fileInfo);
+ $fileId = $fileInfo->getId();
+
+ $this->assertTrue(
+ OCP\Share::shareItem('folder', $fileId, OCP\Share::SHARE_TYPE_USER, $this->user4, \OCP\Constants::PERMISSION_ALL),
+ 'Failed asserting that user 1 successfully shared "test" with user 4.'
+ );
+
+ $res = OCP\Share::getItemShared(
+ 'folder',
+ $fileId,
+ OCP\Share::FORMAT_NONE,
+ null,
+ true
+ );
+ $this->assertCount(3, $res);
+
+ $this->assertTrue(
+ OCP\Share::shareItem('folder', $fileId, OCP\Share::SHARE_TYPE_USER, $this->user5, \OCP\Constants::PERMISSION_ALL),
+ 'Failed asserting that user 1 successfully shared "test" with user 5.'
+ );
+
+ $res = OCP\Share::getItemShared(
+ 'folder',
+ $fileId,
+ OCP\Share::FORMAT_NONE,
+ null,
+ true
+ );
+ $this->assertCount(4, $res);
+ }
}
class DummyShareClass extends \OC\Share\Share {
diff --git a/tests/lib/updater.php b/tests/lib/updater.php
index 763858acf5d..1651fe1759d 100644
--- a/tests/lib/updater.php
+++ b/tests/lib/updater.php
@@ -161,7 +161,7 @@ class UpdaterTest extends \Test\TestCase {
* @param bool $result
*/
public function testIsUpgradePossible($oldVersion, $newVersion, $allowedVersion, $result) {
- $updater = new Updater($this->httpHelper, $this->config);
+ $updater = new Updater($this->httpHelper, $this->config, $this->logger);
$this->assertSame($result, $updater->isUpgradePossible($oldVersion, $newVersion, $allowedVersion));
}
diff --git a/tests/ocs-provider/provider.php b/tests/ocs-provider/provider.php
index 34bd6067588..07d66b36258 100644
--- a/tests/ocs-provider/provider.php
+++ b/tests/ocs-provider/provider.php
@@ -60,9 +60,9 @@ class OcsProviderTest extends \Test\TestCase {
'PRIVATE_DATA' => [
'version' => 1,
'endpoints' => [
- 'store' => '/ocs/v1.php/privatedata/setattribute',
- 'read' => '/ocs/v1.php/privatedata/getattribute',
- 'delete' => '/ocs/v1.php/privatedata/deleteattribute',
+ 'store' => '/ocs/v2.php/privatedata/setattribute',
+ 'read' => '/ocs/v2.php/privatedata/getattribute',
+ 'delete' => '/ocs/v2.php/privatedata/deleteattribute',
],
],
]
@@ -94,22 +94,22 @@ class OcsProviderTest extends \Test\TestCase {
'PRIVATE_DATA' => [
'version' => 1,
'endpoints' => [
- 'store' => '/ocs/v1.php/privatedata/setattribute',
- 'read' => '/ocs/v1.php/privatedata/getattribute',
- 'delete' => '/ocs/v1.php/privatedata/deleteattribute',
+ 'store' => '/ocs/v2.php/privatedata/setattribute',
+ 'read' => '/ocs/v2.php/privatedata/getattribute',
+ 'delete' => '/ocs/v2.php/privatedata/deleteattribute',
],
],
'FEDERATED_SHARING' => [
'version' => 1,
'endpoints' => [
- 'share' => '/ocs/v1.php/cloud/shares',
+ 'share' => '/ocs/v2.php/cloud/shares',
'webdav' => '/public.php/webdav/',
],
],
'SHARING' => [
'version' => 1,
'endpoints' => [
- 'share' => '/ocs/v1.php/apps/files_sharing/api/v1/shares',
+ 'share' => '/ocs/v2.php/apps/files_sharing/api/v1/shares',
],
],
]
@@ -130,36 +130,36 @@ class OcsProviderTest extends \Test\TestCase {
'PRIVATE_DATA' => [
'version' => 1,
'endpoints' => [
- 'store' => '/ocs/v1.php/privatedata/setattribute',
- 'read' => '/ocs/v1.php/privatedata/getattribute',
- 'delete' => '/ocs/v1.php/privatedata/deleteattribute',
+ 'store' => '/ocs/v2.php/privatedata/setattribute',
+ 'read' => '/ocs/v2.php/privatedata/getattribute',
+ 'delete' => '/ocs/v2.php/privatedata/deleteattribute',
],
],
'FEDERATED_SHARING' => [
'version' => 1,
'endpoints' => [
- 'share' => '/ocs/v1.php/cloud/shares',
+ 'share' => '/ocs/v2.php/cloud/shares',
'webdav' => '/public.php/webdav/',
],
],
'SHARING' => [
'version' => 1,
'endpoints' => [
- 'share' => '/ocs/v1.php/apps/files_sharing/api/v1/shares',
+ 'share' => '/ocs/v2.php/apps/files_sharing/api/v1/shares',
],
],
'ACTIVITY' => [
'version' => 1,
'endpoints' => [
- 'list' => '/ocs/v1.php/cloud/activity',
+ 'list' => '/ocs/v2.php/cloud/activity',
],
],
'PROVISIONING' => [
'version' => 1,
'endpoints' => [
- 'user' => '/ocs/v1.php/cloud/users',
- 'groups' => '/ocs/v1.php/cloud/groups',
- 'apps' => '/ocs/v1.php/cloud/apps',
+ 'user' => '/ocs/v2.php/cloud/users',
+ 'groups' => '/ocs/v2.php/cloud/groups',
+ 'apps' => '/ocs/v2.php/cloud/apps',
],
],
]
diff --git a/version.php b/version.php
index 458cb6389f5..cc5a18b1cb3 100644
--- a/version.php
+++ b/version.php
@@ -25,12 +25,12 @@
// We only can count up. The 4. digit is only for the internal patchlevel to trigger DB upgrades
// between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel
// when updating major/minor version number.
-$OC_Version = array(8, 2, 0, 9);
+$OC_Version = array(9, 0, 0, 0);
// The human readable string
-$OC_VersionString = '8.2 RC1';
+$OC_VersionString = '9.0 pre alpha';
-$OC_VersionCanBeUpgradedFrom = array(8, 1);
+$OC_VersionCanBeUpgradedFrom = array(8, 2);
// The ownCloud channel
$OC_Channel = 'git';