able29 Nextcloud server, a safe home for all your data: https://github.com/nextcloud/serverwww-data
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat
-rw-r--r--apps/dav/lib/connector/sabre/objecttree.php2
-rw-r--r--apps/files_external/l10n/sq.js4
-rw-r--r--apps/files_external/l10n/sq.json4
-rw-r--r--apps/files_sharing/api/sharees.php71
-rw-r--r--apps/files_sharing/l10n/fi_FI.js5
-rw-r--r--apps/files_sharing/l10n/fi_FI.json5
-rw-r--r--apps/files_sharing/l10n/fr.js18
-rw-r--r--apps/files_sharing/l10n/fr.json18
-rw-r--r--apps/files_sharing/l10n/he.js17
-rw-r--r--apps/files_sharing/l10n/he.json17
-rw-r--r--apps/files_sharing/l10n/it.js19
-rw-r--r--apps/files_sharing/l10n/it.json19
-rw-r--r--apps/files_sharing/l10n/ja.js5
-rw-r--r--apps/files_sharing/l10n/ja.json5
-rw-r--r--apps/files_sharing/l10n/pt_PT.js17
-rw-r--r--apps/files_sharing/l10n/pt_PT.json17
-rw-r--r--apps/files_sharing/l10n/sq.js17
-rw-r--r--apps/files_sharing/l10n/sq.json17
-rw-r--r--apps/files_sharing/tests/api/shareestest.php101
-rw-r--r--apps/updatenotification/appinfo/app.php3
-rw-r--r--apps/user_ldap/l10n/he.js8
-rw-r--r--apps/user_ldap/l10n/he.json8
-rw-r--r--core/js/sharedialogview.js6
-rw-r--r--lib/l10n/fi_FI.js2
-rw-r--r--lib/l10n/fi_FI.json2
-rw-r--r--lib/l10n/fr.js1
-rw-r--r--lib/l10n/fr.json1
-rw-r--r--lib/l10n/it.js1
-rw-r--r--lib/l10n/it.json1
-rw-r--r--lib/l10n/pt_PT.js1
-rw-r--r--lib/l10n/pt_PT.json1
-rw-r--r--lib/l10n/sq.js1
-rw-r--r--lib/l10n/sq.json1
-rw-r--r--lib/private/integritycheck/checker.php2
-rw-r--r--lib/private/templatelayout.php2
-rw-r--r--lib/private/user/user.php25
-rw-r--r--settings/controller/checksetupcontroller.php4
-rw-r--r--tests/lib/files/storage/storage.php6
-rw-r--r--tests/settings/controller/CheckSetupControllerTest.php19
39 files changed, 441 insertions, 32 deletions
diff --git a/apps/dav/lib/connector/sabre/objecttree.php b/apps/dav/lib/connector/sabre/objecttree.php
index a1796136c4e..505a42d4746 100644
--- a/apps/dav/lib/connector/sabre/objecttree.php
+++ b/apps/dav/lib/connector/sabre/objecttree.php
@@ -136,7 +136,7 @@ class ObjectTree extends \Sabre\DAV\Tree {
$mount = $this->fileView->getMount($path);
$storage = $mount->getStorage();
$internalPath = $mount->getInternalPath($absPath);
- if ($storage) {
+ if ($storage && $storage->file_exists($internalPath)) {
/**
* @var \OC\Files\Storage\Storage $storage
*/
diff --git a/apps/files_external/l10n/sq.js b/apps/files_external/l10n/sq.js
index bab6a24df7f..35f43b52a35 100644
--- a/apps/files_external/l10n/sq.js
+++ b/apps/files_external/l10n/sq.js
@@ -68,9 +68,9 @@ OC.L10N.register(
"Rackspace" : "Rackspace",
"API key" : "Kyç API",
"Global Credentails" : "Kredenciale Globale",
- "Log-in credentials, save in database" : "Kredenciale hyrjesh, ruaje në bazën e të dhënave",
+ "Log-in credentials, save in database" : "Kredenciale hyrjesh, ruaji në bazën e të dhënave",
"Username and password" : "Emër përdoruesi dhe fjalëkalim",
- "Log-in credentials, save in session" : "Kredenciale hyrjesh, ruaje në sesion",
+ "Log-in credentials, save in session" : "Kredenciale hyrjesh, ruaji për sesion",
"User entered, store in database" : "Përdoruesi u dha, ruajeni në bazën e të dhënave",
"RSA public key" : "Kyç publik RSA ",
"Public key" : "Kyç publik",
diff --git a/apps/files_external/l10n/sq.json b/apps/files_external/l10n/sq.json
index 7c132ddd855..53b91d57c75 100644
--- a/apps/files_external/l10n/sq.json
+++ b/apps/files_external/l10n/sq.json
@@ -66,9 +66,9 @@
"Rackspace" : "Rackspace",
"API key" : "Kyç API",
"Global Credentails" : "Kredenciale Globale",
- "Log-in credentials, save in database" : "Kredenciale hyrjesh, ruaje në bazën e të dhënave",
+ "Log-in credentials, save in database" : "Kredenciale hyrjesh, ruaji në bazën e të dhënave",
"Username and password" : "Emër përdoruesi dhe fjalëkalim",
- "Log-in credentials, save in session" : "Kredenciale hyrjesh, ruaje në sesion",
+ "Log-in credentials, save in session" : "Kredenciale hyrjesh, ruaji për sesion",
"User entered, store in database" : "Përdoruesi u dha, ruajeni në bazën e të dhënave",
"RSA public key" : "Kyç publik RSA ",
"Public key" : "Kyç publik",
diff --git a/apps/files_sharing/api/sharees.php b/apps/files_sharing/api/sharees.php
index 85cea2e4238..5b7bbb11e84 100644
--- a/apps/files_sharing/api/sharees.php
+++ b/apps/files_sharing/api/sharees.php
@@ -279,6 +279,7 @@ class Sharees {
$cloudIds = [$cloudIds];
}
foreach ($cloudIds as $cloudId) {
+ list(, $serverUrl) = $this->splitUserRemote($cloudId);
if (strtolower($contact['FN']) === $search || strtolower($cloudId) === $search) {
if (strtolower($cloudId) === $search) {
$foundRemoteById = true;
@@ -288,6 +289,7 @@ class Sharees {
'value' => [
'shareType' => Share::SHARE_TYPE_REMOTE,
'shareWith' => $cloudId,
+ 'server' => $serverUrl,
],
];
} else {
@@ -296,6 +298,7 @@ class Sharees {
'value' => [
'shareType' => Share::SHARE_TYPE_REMOTE,
'shareWith' => $cloudId,
+ 'server' => $serverUrl,
],
];
}
@@ -321,6 +324,74 @@ class Sharees {
}
/**
+ * split user and remote from federated cloud id
+ *
+ * @param string $address federated share address
+ * @return array [user, remoteURL]
+ * @throws \Exception
+ */
+ public function splitUserRemote($address) {
+ if (strpos($address, '@') === false) {
+ throw new \Exception('Invalid Federated Cloud ID');
+ }
+
+ // Find the first character that is not allowed in user names
+ $id = str_replace('\\', '/', $address);
+ $posSlash = strpos($id, '/');
+ $posColon = strpos($id, ':');
+
+ if ($posSlash === false && $posColon === false) {
+ $invalidPos = strlen($id);
+ } else if ($posSlash === false) {
+ $invalidPos = $posColon;
+ } else if ($posColon === false) {
+ $invalidPos = $posSlash;
+ } else {
+ $invalidPos = min($posSlash, $posColon);
+ }
+
+ // Find the last @ before $invalidPos
+ $pos = $lastAtPos = 0;
+ while ($lastAtPos !== false && $lastAtPos <= $invalidPos) {
+ $pos = $lastAtPos;
+ $lastAtPos = strpos($id, '@', $pos + 1);
+ }
+
+ if ($pos !== false) {
+ $user = substr($id, 0, $pos);
+ $remote = substr($id, $pos + 1);
+ $remote = $this->fixRemoteURL($remote);
+ if (!empty($user) && !empty($remote)) {
+ return array($user, $remote);
+ }
+ }
+
+ throw new \Exception('Invalid Federated Cloud ID');
+ }
+
+ /**
+ * Strips away a potential file names and trailing slashes:
+ * - http://localhost
+ * - http://localhost/
+ * - http://localhost/index.php
+ * - http://localhost/index.php/s/{shareToken}
+ *
+ * all return: http://localhost
+ *
+ * @param string $remote
+ * @return string
+ */
+ protected function fixRemoteURL($remote) {
+ $remote = str_replace('\\', '/', $remote);
+ if ($fileNamePosition = strpos($remote, '/index.php')) {
+ $remote = substr($remote, 0, $fileNamePosition);
+ }
+ $remote = rtrim($remote, '/');
+
+ return $remote;
+ }
+
+ /**
* @return \OC_OCS_Result
*/
public function search() {
diff --git a/apps/files_sharing/l10n/fi_FI.js b/apps/files_sharing/l10n/fi_FI.js
index 80be56de9db..68b41feb46c 100644
--- a/apps/files_sharing/l10n/fi_FI.js
+++ b/apps/files_sharing/l10n/fi_FI.js
@@ -44,6 +44,7 @@ OC.L10N.register(
"%2$s shared %1$s with group %3$s" : "%2$s jakoi kohteen %1$s ryhmän %3$s kanssa",
"%2$s shared %1$s via link" : "%2$s jakoi kohteen %1$s linkin kautta",
"You shared %1$s via link" : "Jaoit kohteen %1$s linkin kautta",
+ "Your public link for %1$s expired" : "Julkinen linkkisi kohteelle %1$s vanhentui",
"%2$s shared %1$s with you" : "%2$s jakoi kohteen %1$s kanssasi",
"Downloaded via public link" : "Lataa julkista linkkiä käyttäen",
"Shared with %2$s" : "Jaettu käyttäjän %2$s kanssa",
@@ -52,6 +53,10 @@ OC.L10N.register(
"Shared with group %3$s by %2$s" : "Jaettu ryhmän %3$s kanssa käyttäjän %2$s toimesta",
"Shared via link by %2$s" : "Jaettu linkin kautta käyttäjän %2$s toimesta",
"Shared via public link" : "Jaettu julkisen linkin kautta",
+ "Removed public link" : "Julkinen linkki poistettu",
+ "%2$s removed public link" : "%2$s poisti julkisen linkin",
+ "Public link expired" : "Julkinen linkki vanhentui",
+ "Public link of %2$s expired" : "Kohteen %2$s julkinen linkki vanhentui",
"Shared by %2$s" : "Jakanut %2$s",
"Shares" : "Jaot",
"You received \"/%2$s\" as a remote share from %1$s" : "Vastaanotit kohteen \"/%2$s\" etäjakona käyttäjältä %1$s",
diff --git a/apps/files_sharing/l10n/fi_FI.json b/apps/files_sharing/l10n/fi_FI.json
index dd2d64e9943..e1834ab3c0e 100644
--- a/apps/files_sharing/l10n/fi_FI.json
+++ b/apps/files_sharing/l10n/fi_FI.json
@@ -42,6 +42,7 @@
"%2$s shared %1$s with group %3$s" : "%2$s jakoi kohteen %1$s ryhmän %3$s kanssa",
"%2$s shared %1$s via link" : "%2$s jakoi kohteen %1$s linkin kautta",
"You shared %1$s via link" : "Jaoit kohteen %1$s linkin kautta",
+ "Your public link for %1$s expired" : "Julkinen linkkisi kohteelle %1$s vanhentui",
"%2$s shared %1$s with you" : "%2$s jakoi kohteen %1$s kanssasi",
"Downloaded via public link" : "Lataa julkista linkkiä käyttäen",
"Shared with %2$s" : "Jaettu käyttäjän %2$s kanssa",
@@ -50,6 +51,10 @@
"Shared with group %3$s by %2$s" : "Jaettu ryhmän %3$s kanssa käyttäjän %2$s toimesta",
"Shared via link by %2$s" : "Jaettu linkin kautta käyttäjän %2$s toimesta",
"Shared via public link" : "Jaettu julkisen linkin kautta",
+ "Removed public link" : "Julkinen linkki poistettu",
+ "%2$s removed public link" : "%2$s poisti julkisen linkin",
+ "Public link expired" : "Julkinen linkki vanhentui",
+ "Public link of %2$s expired" : "Kohteen %2$s julkinen linkki vanhentui",
"Shared by %2$s" : "Jakanut %2$s",
"Shares" : "Jaot",
"You received \"/%2$s\" as a remote share from %1$s" : "Vastaanotit kohteen \"/%2$s\" etäjakona käyttäjältä %1$s",
diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js
index 6dae6754464..e99dffcdcac 100644
--- a/apps/files_sharing/l10n/fr.js
+++ b/apps/files_sharing/l10n/fr.js
@@ -11,6 +11,7 @@ OC.L10N.register(
"Shared with you" : "Partagés avec vous",
"Shared with others" : "Partagés avec d'autres",
"Shared by link" : "Partagés par lien",
+ "Federated sharing" : "Federated sharing",
"Nothing shared with you yet" : "Aucun fichier n'est partagé avec vous pour l'instant",
"Files and folders others share with you will show up here" : "Les fichiers et dossiers partagés avec vous apparaîtront ici",
"Nothing shared yet" : "Rien n'est partagé pour l'instant",
@@ -39,18 +40,35 @@ OC.L10N.register(
"Public shared file %1$s was downloaded" : "Le fichier public %1$s a été téléchargé",
"You shared %1$s with %2$s" : "Vous avez partagé %1$s avec %2$s",
"%2$s shared %1$s with %3$s" : "%2$s a partagé %1$s avec %3$s",
+ "You removed the share of %2$s for %1$s" : "Vous avez supprimé le partage de %2$s pour %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s a supprimé votre partage de %3$s pour %1$s",
"You shared %1$s with group %2$s" : "Vous avez partagé %1$s avec le groupe %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s partagé %1$s avec le groupe %3$s",
+ "You removed the share of group %2$s for %1$s" : "Vous avez supprimé le partage du groupe %2$s pour %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s a supprimé le partage du groupe %3$s pour %1$s",
"%2$s shared %1$s via link" : "%2$s a partagé %1$s par lien",
"You shared %1$s via link" : "Vous avez partagé %1$s par lien public",
+ "You removed the public link for %1$s" : "Vous avez supprimé le lien public pour %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s a supprimé le lien public pour %1$s",
+ "Your public link for %1$s expired" : "Le lien public pour %1$s a expiré",
+ "The public link of %2$s for %1$s expired" : "Le lien public de %2$s pour %1$s a expiré",
"%2$s shared %1$s with you" : "%2$s a partagé %1$s avec vous",
+ "%2$s removed the share for %1$s" : "%2$s a supprimé le partage pour %1$s",
"Downloaded via public link" : "Téléchargé par lien public",
"Shared with %2$s" : "Partagé avec %2$s",
"Shared with %3$s by %2$s" : "Partagé avec %3$s par %2$s",
+ "Removed share for %2$s" : "Partage supprimé pour %2$s",
+ "%2$s removed share for %3$s" : "%2$s a supprimé le partage pour %3$s",
"Shared with group %2$s" : "Partagé avec le groupe %2$s",
"Shared with group %3$s by %2$s" : "Partagé avec le groupe %3$s par %2$s",
+ "Removed share of group %2$s" : "Partage supprimé du groupe %2$s",
+ "%2$s removed share of group %3$s" : "%2$s a supprimé le partage du groupe %3$s",
"Shared via link by %2$s" : "Partagé via lien par %2$s",
"Shared via public link" : "Partagé par lien public",
+ "Removed public link" : "Lien public supprimé",
+ "%2$s removed public link" : "%2$s a supprimé le lien public",
+ "Public link expired" : "Lien public expiré",
+ "Public link of %2$s expired" : "Le lien public de %2$s a expiré",
"Shared by %2$s" : "Partagé par %2$s",
"Shares" : "Partages",
"You received \"/%2$s\" as a remote share from %1$s" : "L'utilisateur %1$s a partagé la ressource distante %2$s avec vous",
diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json
index abe88912cc6..c0c7b85bf96 100644
--- a/apps/files_sharing/l10n/fr.json
+++ b/apps/files_sharing/l10n/fr.json
@@ -9,6 +9,7 @@
"Shared with you" : "Partagés avec vous",
"Shared with others" : "Partagés avec d'autres",
"Shared by link" : "Partagés par lien",
+ "Federated sharing" : "Federated sharing",
"Nothing shared with you yet" : "Aucun fichier n'est partagé avec vous pour l'instant",
"Files and folders others share with you will show up here" : "Les fichiers et dossiers partagés avec vous apparaîtront ici",
"Nothing shared yet" : "Rien n'est partagé pour l'instant",
@@ -37,18 +38,35 @@
"Public shared file %1$s was downloaded" : "Le fichier public %1$s a été téléchargé",
"You shared %1$s with %2$s" : "Vous avez partagé %1$s avec %2$s",
"%2$s shared %1$s with %3$s" : "%2$s a partagé %1$s avec %3$s",
+ "You removed the share of %2$s for %1$s" : "Vous avez supprimé le partage de %2$s pour %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s a supprimé votre partage de %3$s pour %1$s",
"You shared %1$s with group %2$s" : "Vous avez partagé %1$s avec le groupe %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s partagé %1$s avec le groupe %3$s",
+ "You removed the share of group %2$s for %1$s" : "Vous avez supprimé le partage du groupe %2$s pour %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s a supprimé le partage du groupe %3$s pour %1$s",
"%2$s shared %1$s via link" : "%2$s a partagé %1$s par lien",
"You shared %1$s via link" : "Vous avez partagé %1$s par lien public",
+ "You removed the public link for %1$s" : "Vous avez supprimé le lien public pour %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s a supprimé le lien public pour %1$s",
+ "Your public link for %1$s expired" : "Le lien public pour %1$s a expiré",
+ "The public link of %2$s for %1$s expired" : "Le lien public de %2$s pour %1$s a expiré",
"%2$s shared %1$s with you" : "%2$s a partagé %1$s avec vous",
+ "%2$s removed the share for %1$s" : "%2$s a supprimé le partage pour %1$s",
"Downloaded via public link" : "Téléchargé par lien public",
"Shared with %2$s" : "Partagé avec %2$s",
"Shared with %3$s by %2$s" : "Partagé avec %3$s par %2$s",
+ "Removed share for %2$s" : "Partage supprimé pour %2$s",
+ "%2$s removed share for %3$s" : "%2$s a supprimé le partage pour %3$s",
"Shared with group %2$s" : "Partagé avec le groupe %2$s",
"Shared with group %3$s by %2$s" : "Partagé avec le groupe %3$s par %2$s",
+ "Removed share of group %2$s" : "Partage supprimé du groupe %2$s",
+ "%2$s removed share of group %3$s" : "%2$s a supprimé le partage du groupe %3$s",
"Shared via link by %2$s" : "Partagé via lien par %2$s",
"Shared via public link" : "Partagé par lien public",
+ "Removed public link" : "Lien public supprimé",
+ "%2$s removed public link" : "%2$s a supprimé le lien public",
+ "Public link expired" : "Lien public expiré",
+ "Public link of %2$s expired" : "Le lien public de %2$s a expiré",
"Shared by %2$s" : "Partagé par %2$s",
"Shares" : "Partages",
"You received \"/%2$s\" as a remote share from %1$s" : "L'utilisateur %1$s a partagé la ressource distante %2$s avec vous",
diff --git a/apps/files_sharing/l10n/he.js b/apps/files_sharing/l10n/he.js
index 4f03da8aed6..b0be1d34c97 100644
--- a/apps/files_sharing/l10n/he.js
+++ b/apps/files_sharing/l10n/he.js
@@ -40,18 +40,35 @@ OC.L10N.register(
"Public shared file %1$s was downloaded" : "קובץ שיתוף ציבורי %1$s הורד",
"You shared %1$s with %2$s" : "שיתפת %1$s עם %2$s",
"%2$s shared %1$s with %3$s" : "%2$s שיתף/שיתפה %1$s עם %3$s",
+ "You removed the share of %2$s for %1$s" : "הסרת את השיתוף של %2$s עבור %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s הסיר/ה את השיתוף של %3$s עבור %1$s",
"You shared %1$s with group %2$s" : "שיתפת %1$s עם קבוצת %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s שיתף/שיתפה %1$s עם קבוצה %3$s",
+ "You removed the share of group %2$s for %1$s" : "הסרת את השיתוף לקבוצה %2$s עבור %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s הסיר/ה את השיתוף לקבוצה %3$s עבור %1$s",
"%2$s shared %1$s via link" : "%2$s שיתף/שיתפה %1$s על ידי קישור",
"You shared %1$s via link" : "שיתפת %1$s על בסיס קישור",
+ "You removed the public link for %1$s" : "הסרת את הקישור הציבורי של %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s הסיר/ה את הקישור הציבורי של %1$s",
+ "Your public link for %1$s expired" : "הקישור הציבורי של %1$s פג תוקף",
+ "The public link of %2$s for %1$s expired" : "הקישור הציבורי של %2$s עבור %1$s פג תוקף",
"%2$s shared %1$s with you" : "%2$s שיתפו %1$s אתך",
+ "%2$s removed the share for %1$s" : "%2$s הסיר/ה את השיתוף של %1$s",
"Downloaded via public link" : "הורד על בסיס קישור ציבורי",
"Shared with %2$s" : "שיתף/שיתפה עם %2$s",
"Shared with %3$s by %2$s" : "שיתף/שיתפה עם %3$s על ידי %2$s",
+ "Removed share for %2$s" : "הסיר/ה שיתוף של %2$s",
+ "%2$s removed share for %3$s" : "%2$s הסיר/ה שיתוף של %3$s",
"Shared with group %2$s" : "שיתף/שיתפה עם קבוצה %2$s",
"Shared with group %3$s by %2$s" : "שיתף/שיתפה עם קבוצה %3$s על ידי %2$s",
+ "Removed share of group %2$s" : "הסיר/ה שיתוף של קבוצה %2$s",
+ "%2$s removed share of group %3$s" : "%2$s הסיר/ה שיתוף של קבוצה %3$s",
"Shared via link by %2$s" : "שיתף/שיתפה על בסיס קישור על ידי %2$s",
"Shared via public link" : "משותף על בסיס קישור ציבורי",
+ "Removed public link" : "הסיר/ה קישור ציבורי",
+ "%2$s removed public link" : "%2$s הסיר/ה קישור ציבורי",
+ "Public link expired" : "קישור ציבורי פג תוקף",
+ "Public link of %2$s expired" : "קישור ציבורי של %2$s פג תוקף",
"Shared by %2$s" : "שיתף/שיתפה על ידי %2$s",
"Shares" : "שיתופים",
"You received \"/%2$s\" as a remote share from %1$s" : "קבלת \"/%2$s\" כשיתוף חיצוני מאת %1$s",
diff --git a/apps/files_sharing/l10n/he.json b/apps/files_sharing/l10n/he.json
index f9e770772fe..de1cfff07b5 100644
--- a/apps/files_sharing/l10n/he.json
+++ b/apps/files_sharing/l10n/he.json
@@ -38,18 +38,35 @@
"Public shared file %1$s was downloaded" : "קובץ שיתוף ציבורי %1$s הורד",
"You shared %1$s with %2$s" : "שיתפת %1$s עם %2$s",
"%2$s shared %1$s with %3$s" : "%2$s שיתף/שיתפה %1$s עם %3$s",
+ "You removed the share of %2$s for %1$s" : "הסרת את השיתוף של %2$s עבור %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s הסיר/ה את השיתוף של %3$s עבור %1$s",
"You shared %1$s with group %2$s" : "שיתפת %1$s עם קבוצת %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s שיתף/שיתפה %1$s עם קבוצה %3$s",
+ "You removed the share of group %2$s for %1$s" : "הסרת את השיתוף לקבוצה %2$s עבור %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s הסיר/ה את השיתוף לקבוצה %3$s עבור %1$s",
"%2$s shared %1$s via link" : "%2$s שיתף/שיתפה %1$s על ידי קישור",
"You shared %1$s via link" : "שיתפת %1$s על בסיס קישור",
+ "You removed the public link for %1$s" : "הסרת את הקישור הציבורי של %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s הסיר/ה את הקישור הציבורי של %1$s",
+ "Your public link for %1$s expired" : "הקישור הציבורי של %1$s פג תוקף",
+ "The public link of %2$s for %1$s expired" : "הקישור הציבורי של %2$s עבור %1$s פג תוקף",
"%2$s shared %1$s with you" : "%2$s שיתפו %1$s אתך",
+ "%2$s removed the share for %1$s" : "%2$s הסיר/ה את השיתוף של %1$s",
"Downloaded via public link" : "הורד על בסיס קישור ציבורי",
"Shared with %2$s" : "שיתף/שיתפה עם %2$s",
"Shared with %3$s by %2$s" : "שיתף/שיתפה עם %3$s על ידי %2$s",
+ "Removed share for %2$s" : "הסיר/ה שיתוף של %2$s",
+ "%2$s removed share for %3$s" : "%2$s הסיר/ה שיתוף של %3$s",
"Shared with group %2$s" : "שיתף/שיתפה עם קבוצה %2$s",
"Shared with group %3$s by %2$s" : "שיתף/שיתפה עם קבוצה %3$s על ידי %2$s",
+ "Removed share of group %2$s" : "הסיר/ה שיתוף של קבוצה %2$s",
+ "%2$s removed share of group %3$s" : "%2$s הסיר/ה שיתוף של קבוצה %3$s",
"Shared via link by %2$s" : "שיתף/שיתפה על בסיס קישור על ידי %2$s",
"Shared via public link" : "משותף על בסיס קישור ציבורי",
+ "Removed public link" : "הסיר/ה קישור ציבורי",
+ "%2$s removed public link" : "%2$s הסיר/ה קישור ציבורי",
+ "Public link expired" : "קישור ציבורי פג תוקף",
+ "Public link of %2$s expired" : "קישור ציבורי של %2$s פג תוקף",
"Shared by %2$s" : "שיתף/שיתפה על ידי %2$s",
"Shares" : "שיתופים",
"You received \"/%2$s\" as a remote share from %1$s" : "קבלת \"/%2$s\" כשיתוף חיצוני מאת %1$s",
diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js
index 1705be1b229..93adc336604 100644
--- a/apps/files_sharing/l10n/it.js
+++ b/apps/files_sharing/l10n/it.js
@@ -11,6 +11,7 @@ OC.L10N.register(
"Shared with you" : "Condivisi con te",
"Shared with others" : "Condivisi con altri",
"Shared by link" : "Condivisi tramite collegamento",
+ "Federated sharing" : "Condivisione federata",
"Nothing shared with you yet" : "Non è stato condiviso ancora niente con te",
"Files and folders others share with you will show up here" : "I file e le cartelle che altri condividono con te saranno mostrati qui",
"Nothing shared yet" : "Ancora nessuna condivisione",
@@ -39,20 +40,38 @@ OC.L10N.register(
"Public shared file %1$s was downloaded" : "Il file condiviso pubblicamente %1$s è stato scaricato",
"You shared %1$s with %2$s" : "Hai condiviso %1$s con %2$s",
"%2$s shared %1$s with %3$s" : "%2$s ha condiviso %1$s con %3$s",
+ "You removed the share of %2$s for %1$s" : "Hai rimosso la condivisione di %2$s per %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s ha rimosso la condivisione di %3$s per %1$s",
"You shared %1$s with group %2$s" : "Hai condiviso %1$s con il gruppo %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s ha condiviso %1$s con il gruppo %3$s",
+ "You removed the share of group %2$s for %1$s" : "Hai rimosso la condivisione del gruppo %2$s per %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s ha rimosso la condivisione del gruppo %3$s per %1$s",
"%2$s shared %1$s via link" : "%2$s ha condiviso %1$s tramite collegamento",
"You shared %1$s via link" : "Hai condiviso %1$s tramite collegamento",
+ "You removed the public link for %1$s" : "Hai rimosso il collegamento pubblico per %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s ha rimosso il collegamento pubblico per %1$s",
+ "Your public link for %1$s expired" : "il tuo collegamento pubblico per %1$s è scaduto",
+ "The public link of %2$s for %1$s expired" : "il collegamento pubblico di %2$s per %1$s è scaduto",
"%2$s shared %1$s with you" : "%2$s ha condiviso %1$s con te",
+ "%2$s removed the share for %1$s" : "%2$s ha rimosso la condivisione per %1$s",
"Downloaded via public link" : "Scaricata tramite collegamento pubblico",
"Shared with %2$s" : "Condivisa con %2$s",
"Shared with %3$s by %2$s" : "Condivisa con %3$s da %2$s",
+ "Removed share for %2$s" : "Condivisione rimossa per %2$s",
+ "%2$s removed share for %3$s" : "%2$s ha rimosso la condivisione per %3$s",
"Shared with group %2$s" : "Condivisa con il gruppo %2$s",
"Shared with group %3$s by %2$s" : "Condivisa con il gruppo %3$s da %2$s",
+ "Removed share of group %2$s" : "Condivisione rimossa del gruppo %2$s",
+ "%2$s removed share of group %3$s" : "%2$s ha rimosso la condivisione del gruppo %3$s",
"Shared via link by %2$s" : "Condivisa tramite collegamento da %2$s",
"Shared via public link" : "Condivisa tramite collegamento pubblico",
+ "Removed public link" : "Collegamento pubblico rimosso",
+ "%2$s removed public link" : "%2$s ha rimosso il collegamento pubblico",
+ "Public link expired" : "Collegamento pubblico scaduto",
+ "Public link of %2$s expired" : "il collegamento pubblico di %2$s è scaduto",
"Shared by %2$s" : "Condivisa da %2$s",
"Shares" : "Condivisioni",
+ "You received \"/%2$s\" as a remote share from %1$s" : "Hai ricevuto \"/%2$s\" come condivisione remota da %1$s",
"Accept" : "Accetta",
"Decline" : "Rifiuta",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Condividi con me attraverso il mio ID di cloud federata #ownCloud, vedi %s",
diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json
index 7060c4cb452..d95f35be0a9 100644
--- a/apps/files_sharing/l10n/it.json
+++ b/apps/files_sharing/l10n/it.json
@@ -9,6 +9,7 @@
"Shared with you" : "Condivisi con te",
"Shared with others" : "Condivisi con altri",
"Shared by link" : "Condivisi tramite collegamento",
+ "Federated sharing" : "Condivisione federata",
"Nothing shared with you yet" : "Non è stato condiviso ancora niente con te",
"Files and folders others share with you will show up here" : "I file e le cartelle che altri condividono con te saranno mostrati qui",
"Nothing shared yet" : "Ancora nessuna condivisione",
@@ -37,20 +38,38 @@
"Public shared file %1$s was downloaded" : "Il file condiviso pubblicamente %1$s è stato scaricato",
"You shared %1$s with %2$s" : "Hai condiviso %1$s con %2$s",
"%2$s shared %1$s with %3$s" : "%2$s ha condiviso %1$s con %3$s",
+ "You removed the share of %2$s for %1$s" : "Hai rimosso la condivisione di %2$s per %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s ha rimosso la condivisione di %3$s per %1$s",
"You shared %1$s with group %2$s" : "Hai condiviso %1$s con il gruppo %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s ha condiviso %1$s con il gruppo %3$s",
+ "You removed the share of group %2$s for %1$s" : "Hai rimosso la condivisione del gruppo %2$s per %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s ha rimosso la condivisione del gruppo %3$s per %1$s",
"%2$s shared %1$s via link" : "%2$s ha condiviso %1$s tramite collegamento",
"You shared %1$s via link" : "Hai condiviso %1$s tramite collegamento",
+ "You removed the public link for %1$s" : "Hai rimosso il collegamento pubblico per %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s ha rimosso il collegamento pubblico per %1$s",
+ "Your public link for %1$s expired" : "il tuo collegamento pubblico per %1$s è scaduto",
+ "The public link of %2$s for %1$s expired" : "il collegamento pubblico di %2$s per %1$s è scaduto",
"%2$s shared %1$s with you" : "%2$s ha condiviso %1$s con te",
+ "%2$s removed the share for %1$s" : "%2$s ha rimosso la condivisione per %1$s",
"Downloaded via public link" : "Scaricata tramite collegamento pubblico",
"Shared with %2$s" : "Condivisa con %2$s",
"Shared with %3$s by %2$s" : "Condivisa con %3$s da %2$s",
+ "Removed share for %2$s" : "Condivisione rimossa per %2$s",
+ "%2$s removed share for %3$s" : "%2$s ha rimosso la condivisione per %3$s",
"Shared with group %2$s" : "Condivisa con il gruppo %2$s",
"Shared with group %3$s by %2$s" : "Condivisa con il gruppo %3$s da %2$s",
+ "Removed share of group %2$s" : "Condivisione rimossa del gruppo %2$s",
+ "%2$s removed share of group %3$s" : "%2$s ha rimosso la condivisione del gruppo %3$s",
"Shared via link by %2$s" : "Condivisa tramite collegamento da %2$s",
"Shared via public link" : "Condivisa tramite collegamento pubblico",
+ "Removed public link" : "Collegamento pubblico rimosso",
+ "%2$s removed public link" : "%2$s ha rimosso il collegamento pubblico",
+ "Public link expired" : "Collegamento pubblico scaduto",
+ "Public link of %2$s expired" : "il collegamento pubblico di %2$s è scaduto",
"Shared by %2$s" : "Condivisa da %2$s",
"Shares" : "Condivisioni",
+ "You received \"/%2$s\" as a remote share from %1$s" : "Hai ricevuto \"/%2$s\" come condivisione remota da %1$s",
"Accept" : "Accetta",
"Decline" : "Rifiuta",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Condividi con me attraverso il mio ID di cloud federata #ownCloud, vedi %s",
diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js
index 31767cef350..7c121ca1997 100644
--- a/apps/files_sharing/l10n/ja.js
+++ b/apps/files_sharing/l10n/ja.js
@@ -39,14 +39,19 @@ OC.L10N.register(
"Public shared file %1$s was downloaded" : "公開共有ファイル %1$s がダウンロードされました",
"You shared %1$s with %2$s" : "あなたは %1$s を %2$s と共有しました",
"%2$s shared %1$s with %3$s" : "%2$s は %1$s を %3$s と共有しました",
+ "You removed the share of %2$s for %1$s" : "%1$sとの%2$sの共有を削除しました",
+ "%2$s removed the share of %3$s for %1$s" : "%2$sは%1$sとの%3$sの共有を削除しました",
"You shared %1$s with group %2$s" : "あなたは %1$s をグループ %2$s と共有しました",
"%2$s shared %1$s with group %3$s" : "%2$s は %1$s をグループ %3$s と共有しました",
+ "You removed the share of group %2$s for %1$s" : "%1$sとのグループ%2$sの共有を削除しました",
"%2$s shared %1$s via link" : "%2$s はリンク経由で %1$s を共有しました",
"You shared %1$s via link" : "リンク経由で %1$s を共有しています",
+ "The public link of %2$s for %1$s expired" : "%1$sへの公開リンク%2$sの期限が切れました",
"%2$s shared %1$s with you" : "%2$s は %1$s をあなたと共有しました",
"Downloaded via public link" : "公開リンクからダウンロードしました",
"Shared with %2$s" : "%2$s と共有しました",
"Shared with %3$s by %2$s" : "%3$s と %2$s で共有しました",
+ "Removed share for %2$s" : " %2$sとの共有を削除しました",
"Shared with group %2$s" : "%2$s グループと共有しました",
"Shared with group %3$s by %2$s" : "%3$s グループと %2$s で共有しました",
"Shared via link by %2$s" : "リンク経由で %2$s が共有しました",
diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json
index 0ae592acf66..5bb3a9ccbd9 100644
--- a/apps/files_sharing/l10n/ja.json
+++ b/apps/files_sharing/l10n/ja.json
@@ -37,14 +37,19 @@
"Public shared file %1$s was downloaded" : "公開共有ファイル %1$s がダウンロードされました",
"You shared %1$s with %2$s" : "あなたは %1$s を %2$s と共有しました",
"%2$s shared %1$s with %3$s" : "%2$s は %1$s を %3$s と共有しました",
+ "You removed the share of %2$s for %1$s" : "%1$sとの%2$sの共有を削除しました",
+ "%2$s removed the share of %3$s for %1$s" : "%2$sは%1$sとの%3$sの共有を削除しました",
"You shared %1$s with group %2$s" : "あなたは %1$s をグループ %2$s と共有しました",
"%2$s shared %1$s with group %3$s" : "%2$s は %1$s をグループ %3$s と共有しました",
+ "You removed the share of group %2$s for %1$s" : "%1$sとのグループ%2$sの共有を削除しました",
"%2$s shared %1$s via link" : "%2$s はリンク経由で %1$s を共有しました",
"You shared %1$s via link" : "リンク経由で %1$s を共有しています",
+ "The public link of %2$s for %1$s expired" : "%1$sへの公開リンク%2$sの期限が切れました",
"%2$s shared %1$s with you" : "%2$s は %1$s をあなたと共有しました",
"Downloaded via public link" : "公開リンクからダウンロードしました",
"Shared with %2$s" : "%2$s と共有しました",
"Shared with %3$s by %2$s" : "%3$s と %2$s で共有しました",
+ "Removed share for %2$s" : " %2$sとの共有を削除しました",
"Shared with group %2$s" : "%2$s グループと共有しました",
"Shared with group %3$s by %2$s" : "%3$s グループと %2$s で共有しました",
"Shared via link by %2$s" : "リンク経由で %2$s が共有しました",
diff --git a/apps/files_sharing/l10n/pt_PT.js b/apps/files_sharing/l10n/pt_PT.js
index 19c2685ebe2..e9cf412bc53 100644
--- a/apps/files_sharing/l10n/pt_PT.js
+++ b/apps/files_sharing/l10n/pt_PT.js
@@ -40,18 +40,35 @@ OC.L10N.register(
"Public shared file %1$s was downloaded" : "Foi transferido o ficheiro %1$s partilhado publicamente",
"You shared %1$s with %2$s" : "Partilhou %1$s com %2$s",
"%2$s shared %1$s with %3$s" : "%2$s partilhou %1$s com %3$s",
+ "You removed the share of %2$s for %1$s" : "Removeu a partilha de %2$s para %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s removeu a partilha de %3$s para %1$s",
"You shared %1$s with group %2$s" : "Partilhou %1$s com o grupo %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s partilhou %1$s com o grupo %3$s",
+ "You removed the share of group %2$s for %1$s" : "Removeu a partilha do grupo %2$s para %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s removeu a partilha do grupo %3$s para %1$s",
"%2$s shared %1$s via link" : "%2$s partilhou %1$s via hiperligação",
"You shared %1$s via link" : "Partilhou %1$s através de uma hiperligação",
+ "You removed the public link for %1$s" : "Removeu o link público de %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s removeu o link público de %1$s",
+ "Your public link for %1$s expired" : "O seu link público de %1$s expirou",
+ "The public link of %2$s for %1$s expired" : "O link público de %2$s para %1$s expirou",
"%2$s shared %1$s with you" : "%2$s partilhou %1$s consigo",
+ "%2$s removed the share for %1$s" : "%2$s removeu a partilha para %1$s",
"Downloaded via public link" : "Transferido via hiperligação pública",
"Shared with %2$s" : "Partilhado com %2$s",
"Shared with %3$s by %2$s" : "Partilhado com %3$s por %2$s",
+ "Removed share for %2$s" : "Partilha removida para %2$s",
+ "%2$s removed share for %3$s" : "%2$s removeu a partilha para %3$s",
"Shared with group %2$s" : "Partilhado com o grupo %2$s",
"Shared with group %3$s by %2$s" : "Partilhado com o grupo %3$s por %2$s",
+ "Removed share of group %2$s" : "Partilha removida do grupo %2$s",
+ "%2$s removed share of group %3$s" : "%2$s removeu a partilha do grupo %3$s",
"Shared via link by %2$s" : "Partilhado via hiperligação por %2$s",
"Shared via public link" : "Partilhado via hiperligação pública",
+ "Removed public link" : "Removeu link público",
+ "%2$s removed public link" : "%2$s removeu link público",
+ "Public link expired" : "Link público expirou",
+ "Public link of %2$s expired" : "Link público de %2$s expirou",
"Shared by %2$s" : "Partilhado por %2$s",
"Shares" : "Partilhas",
"You received \"/%2$s\" as a remote share from %1$s" : "Recebeu \"/%2$s\" como uma partilha remota de %1$s",
diff --git a/apps/files_sharing/l10n/pt_PT.json b/apps/files_sharing/l10n/pt_PT.json
index bc1aeb6aeff..f311ef6bb33 100644
--- a/apps/files_sharing/l10n/pt_PT.json
+++ b/apps/files_sharing/l10n/pt_PT.json
@@ -38,18 +38,35 @@
"Public shared file %1$s was downloaded" : "Foi transferido o ficheiro %1$s partilhado publicamente",
"You shared %1$s with %2$s" : "Partilhou %1$s com %2$s",
"%2$s shared %1$s with %3$s" : "%2$s partilhou %1$s com %3$s",
+ "You removed the share of %2$s for %1$s" : "Removeu a partilha de %2$s para %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s removeu a partilha de %3$s para %1$s",
"You shared %1$s with group %2$s" : "Partilhou %1$s com o grupo %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s partilhou %1$s com o grupo %3$s",
+ "You removed the share of group %2$s for %1$s" : "Removeu a partilha do grupo %2$s para %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s removeu a partilha do grupo %3$s para %1$s",
"%2$s shared %1$s via link" : "%2$s partilhou %1$s via hiperligação",
"You shared %1$s via link" : "Partilhou %1$s através de uma hiperligação",
+ "You removed the public link for %1$s" : "Removeu o link público de %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s removeu o link público de %1$s",
+ "Your public link for %1$s expired" : "O seu link público de %1$s expirou",
+ "The public link of %2$s for %1$s expired" : "O link público de %2$s para %1$s expirou",
"%2$s shared %1$s with you" : "%2$s partilhou %1$s consigo",
+ "%2$s removed the share for %1$s" : "%2$s removeu a partilha para %1$s",
"Downloaded via public link" : "Transferido via hiperligação pública",
"Shared with %2$s" : "Partilhado com %2$s",
"Shared with %3$s by %2$s" : "Partilhado com %3$s por %2$s",
+ "Removed share for %2$s" : "Partilha removida para %2$s",
+ "%2$s removed share for %3$s" : "%2$s removeu a partilha para %3$s",
"Shared with group %2$s" : "Partilhado com o grupo %2$s",
"Shared with group %3$s by %2$s" : "Partilhado com o grupo %3$s por %2$s",
+ "Removed share of group %2$s" : "Partilha removida do grupo %2$s",
+ "%2$s removed share of group %3$s" : "%2$s removeu a partilha do grupo %3$s",
"Shared via link by %2$s" : "Partilhado via hiperligação por %2$s",
"Shared via public link" : "Partilhado via hiperligação pública",
+ "Removed public link" : "Removeu link público",
+ "%2$s removed public link" : "%2$s removeu link público",
+ "Public link expired" : "Link público expirou",
+ "Public link of %2$s expired" : "Link público de %2$s expirou",
"Shared by %2$s" : "Partilhado por %2$s",
"Shares" : "Partilhas",
"You received \"/%2$s\" as a remote share from %1$s" : "Recebeu \"/%2$s\" como uma partilha remota de %1$s",
diff --git a/apps/files_sharing/l10n/sq.js b/apps/files_sharing/l10n/sq.js
index db8b17b0708..8ffc9dba389 100644
--- a/apps/files_sharing/l10n/sq.js
+++ b/apps/files_sharing/l10n/sq.js
@@ -40,18 +40,35 @@ OC.L10N.register(
"Public shared file %1$s was downloaded" : "U shkarkua kartela e ndarë publikisht %1$s",
"You shared %1$s with %2$s" : "Ndatë %1$s me %2$s",
"%2$s shared %1$s with %3$s" : "%2$s ndau %1$s me %3$s",
+ "You removed the share of %2$s for %1$s" : "Hoqët ndarjen e %2$s për %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s hoqi ndarjen e %3$s për %1$s",
"You shared %1$s with group %2$s" : "Ndatë %1$s me grupin %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s ndau %1$s me grupin %3$s",
+ "You removed the share of group %2$s for %1$s" : "Hoqët ndarjen e grupit %2$s për %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s hoqi ndarjen e grupit %3$s për %1$s",
"%2$s shared %1$s via link" : "%2$s ndau %1$s përmes një lidhjeje",
"You shared %1$s via link" : "Ndatë %1$s përmes një lidhjeje",
+ "You removed the public link for %1$s" : "Hoqët lidhjen publike për %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s hoqi lidhjen publike për %1$s",
+ "Your public link for %1$s expired" : "Lidhja juaj publike për %1$s skadoi",
+ "The public link of %2$s for %1$s expired" : "Lidhja publike e %2$s për %1$s skadoi",
"%2$s shared %1$s with you" : "%2$s ndau %1$s me ju",
+ "%2$s removed the share for %1$s" : "%2$s hoqi ndarjen për %1$s",
"Downloaded via public link" : "Shkarkuar përmes një lidhjeje publike",
"Shared with %2$s" : "U nda me %2$s",
"Shared with %3$s by %2$s" : "U nda me %3$s nga %2$s",
+ "Removed share for %2$s" : "Hoqi ndarjen për %2$s",
+ "%2$s removed share for %3$s" : "%2$s hoqi ndarjen për %3$s",
"Shared with group %2$s" : "U nda me grupin %2$s",
"Shared with group %3$s by %2$s" : "U nda me grupin %3$s nga %2$s",
+ "Removed share of group %2$s" : "Hoqi ndarjen e grupit %2$s",
+ "%2$s removed share of group %3$s" : "%2$s hoqi ndarjen e grupit %3$s",
"Shared via link by %2$s" : "U nda përmes një lidhje nga %2$s",
"Shared via public link" : "U nda përmes një lidhje publike",
+ "Removed public link" : "Hoqi lidhje publike",
+ "%2$s removed public link" : "%2$s hoqi lidhje publike",
+ "Public link expired" : "Lidhja publike skadoi",
+ "Public link of %2$s expired" : "Lidhja publike e %2$s skadoi",
"Shared by %2$s" : "U nda nga %2$s",
"Shares" : "Ndarje",
"You received \"/%2$s\" as a remote share from %1$s" : "Ju erdhi \"/%2$s\" si ndarje e largët prej %1$s",
diff --git a/apps/files_sharing/l10n/sq.json b/apps/files_sharing/l10n/sq.json
index 77a6b378be1..70b2a3ff20d 100644
--- a/apps/files_sharing/l10n/sq.json
+++ b/apps/files_sharing/l10n/sq.json
@@ -38,18 +38,35 @@
"Public shared file %1$s was downloaded" : "U shkarkua kartela e ndarë publikisht %1$s",
"You shared %1$s with %2$s" : "Ndatë %1$s me %2$s",
"%2$s shared %1$s with %3$s" : "%2$s ndau %1$s me %3$s",
+ "You removed the share of %2$s for %1$s" : "Hoqët ndarjen e %2$s për %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s hoqi ndarjen e %3$s për %1$s",
"You shared %1$s with group %2$s" : "Ndatë %1$s me grupin %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s ndau %1$s me grupin %3$s",
+ "You removed the share of group %2$s for %1$s" : "Hoqët ndarjen e grupit %2$s për %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s hoqi ndarjen e grupit %3$s për %1$s",
"%2$s shared %1$s via link" : "%2$s ndau %1$s përmes një lidhjeje",
"You shared %1$s via link" : "Ndatë %1$s përmes një lidhjeje",
+ "You removed the public link for %1$s" : "Hoqët lidhjen publike për %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s hoqi lidhjen publike për %1$s",
+ "Your public link for %1$s expired" : "Lidhja juaj publike për %1$s skadoi",
+ "The public link of %2$s for %1$s expired" : "Lidhja publike e %2$s për %1$s skadoi",
"%2$s shared %1$s with you" : "%2$s ndau %1$s me ju",
+ "%2$s removed the share for %1$s" : "%2$s hoqi ndarjen për %1$s",
"Downloaded via public link" : "Shkarkuar përmes një lidhjeje publike",
"Shared with %2$s" : "U nda me %2$s",
"Shared with %3$s by %2$s" : "U nda me %3$s nga %2$s",
+ "Removed share for %2$s" : "Hoqi ndarjen për %2$s",
+ "%2$s removed share for %3$s" : "%2$s hoqi ndarjen për %3$s",
"Shared with group %2$s" : "U nda me grupin %2$s",
"Shared with group %3$s by %2$s" : "U nda me grupin %3$s nga %2$s",
+ "Removed share of group %2$s" : "Hoqi ndarjen e grupit %2$s",
+ "%2$s removed share of group %3$s" : "%2$s hoqi ndarjen e grupit %3$s",
"Shared via link by %2$s" : "U nda përmes një lidhje nga %2$s",
"Shared via public link" : "U nda përmes një lidhje publike",
+ "Removed public link" : "Hoqi lidhje publike",
+ "%2$s removed public link" : "%2$s hoqi lidhje publike",
+ "Public link expired" : "Lidhja publike skadoi",
+ "Public link of %2$s expired" : "Lidhja publike e %2$s skadoi",
"Shared by %2$s" : "U nda nga %2$s",
"Shares" : "Ndarje",
"You received \"/%2$s\" as a remote share from %1$s" : "Ju erdhi \"/%2$s\" si ndarje e largët prej %1$s",
diff --git a/apps/files_sharing/tests/api/shareestest.php b/apps/files_sharing/tests/api/shareestest.php
index 4b8034a48b7..5a18f6f2f44 100644
--- a/apps/files_sharing/tests/api/shareestest.php
+++ b/apps/files_sharing/tests/api/shareestest.php
@@ -805,7 +805,7 @@ class ShareesTest extends TestCase {
true,
[],
[
- ['label' => 'User @ Localhost', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost']],
+ ['label' => 'User @ Localhost', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']],
],
true,
],
@@ -855,7 +855,7 @@ class ShareesTest extends TestCase {
['label' => 'test@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'test@remote']],
],
[
- ['label' => 'User @ Localhost', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost']],
+ ['label' => 'User @ Localhost', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']],
],
true,
],
@@ -904,7 +904,7 @@ class ShareesTest extends TestCase {
],
true,
[
- ['label' => 'User @ Localhost', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost']],
+ ['label' => 'User @ Localhost', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']],
],
[],
true,
@@ -929,7 +929,7 @@ class ShareesTest extends TestCase {
],
false,
[
- ['label' => 'User @ Localhost', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost']],
+ ['label' => 'User @ Localhost', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']],
],
[],
true,
@@ -1435,4 +1435,97 @@ class ShareesTest extends TestCase {
$this->assertArrayHasKey('message', $meta);
$this->assertSame($message, $meta['message']);
}
+
+ /**
+ * @dataProvider dataTestSplitUserRemote
+ *
+ * @param string $remote
+ * @param string $expectedUser
+ * @param string $expectedUrl
+ */
+ public function testSplitUserRemote($remote, $expectedUser, $expectedUrl) {
+ list($remoteUser, $remoteUrl) = $this->sharees->splitUserRemote($remote);
+ $this->assertSame($expectedUser, $remoteUser);
+ $this->assertSame($expectedUrl, $remoteUrl);
+ }
+
+ public function dataTestSplitUserRemote() {
+ $userPrefix = ['user@name', 'username'];
+ $protocols = ['', 'http://', 'https://'];
+ $remotes = [
+ 'localhost',
+ 'local.host',
+ 'dev.local.host',
+ 'dev.local.host/path',
+ 'dev.local.host/at@inpath',
+ '127.0.0.1',
+ '::1',
+ '::192.0.2.128',
+ '::192.0.2.128/at@inpath',
+ ];
+
+ $testCases = [];
+ foreach ($userPrefix as $user) {
+ foreach ($remotes as $remote) {
+ foreach ($protocols as $protocol) {
+ $baseUrl = $user . '@' . $protocol . $remote;
+
+ $testCases[] = [$baseUrl, $user, $protocol . $remote];
+ $testCases[] = [$baseUrl . '/', $user, $protocol . $remote];
+ $testCases[] = [$baseUrl . '/index.php', $user, $protocol . $remote];
+ $testCases[] = [$baseUrl . '/index.php/s/token', $user, $protocol . $remote];
+ }
+ }
+ }
+ return $testCases;
+ }
+
+ public function dataTestSplitUserRemoteError() {
+ return array(
+ // Invalid path
+ array('user@'),
+
+ // Invalid user
+ array('@server'),
+ array('us/er@server'),
+ array('us:er@server'),
+
+ // Invalid splitting
+ array('user'),
+ array(''),
+ array('us/erserver'),
+ array('us:erserver'),
+ );
+ }
+
+ /**
+ * @dataProvider dataTestSplitUserRemoteError
+ *
+ * @param string $id
+ * @expectedException \Exception
+ */
+ public function testSplitUserRemoteError($id) {
+ $this->sharees->splitUserRemote($id);
+ }
+
+ /**
+ * @dataProvider dataTestFixRemoteUrl
+ *
+ * @param string $url
+ * @param string $expected
+ */
+ public function testFixRemoteUrl($url, $expected) {
+ $this->assertSame($expected,
+ $this->invokePrivate($this->sharees, 'fixRemoteURL', [$url])
+ );
+ }
+
+ public function dataTestFixRemoteUrl() {
+ return [
+ ['http://localhost', 'http://localhost'],
+ ['http://localhost/', 'http://localhost'],
+ ['http://localhost/index.php', 'http://localhost'],
+ ['http://localhost/index.php/s/AShareToken', 'http://localhost'],
+ ];
+ }
}
diff --git a/apps/updatenotification/appinfo/app.php b/apps/updatenotification/appinfo/app.php
index 99df99ac7c9..9148b6e6ef7 100644
--- a/apps/updatenotification/appinfo/app.php
+++ b/apps/updatenotification/appinfo/app.php
@@ -34,8 +34,7 @@ if(\OC::$server->getConfig()->getSystemValue('updatechecker', true) === true) {
if(\OC::$server->getGroupManager()->isAdmin($userObject->getUID()) && $updateChecker->getUpdateState() !== []) {
\OCP\Util::addScript('updatenotification', 'notification');
OC_Hook::connect('\OCP\Config', 'js', $updateChecker, 'getJavaScript');
+ \OC_App::registerAdmin('updatenotification', 'admin');
}
}
-
- \OC_App::registerAdmin('updatenotification', 'admin');
}
diff --git a/apps/user_ldap/l10n/he.js b/apps/user_ldap/l10n/he.js
index 48841ce9ef2..ef8976f9439 100644
--- a/apps/user_ldap/l10n/he.js
+++ b/apps/user_ldap/l10n/he.js
@@ -127,6 +127,12 @@ OC.L10N.register(
"in bytes" : "בבתים",
"Email Field" : "שדה דואר אלקטרוני",
"Internal Username" : "שם משתמש פנימי",
- "Internal Username Attribute:" : "מאפיין שם משתמש פנימי:"
+ "Internal Username Attribute:" : "מאפיין שם משתמש פנימי:",
+ "Override UUID detection" : "דריסת זיהוי UUID",
+ "UUID Attribute for Users:" : "מאפייני UUID למשתמשים:",
+ "UUID Attribute for Groups:" : "מאפייני UUID לקבוצות:",
+ "Username-LDAP User Mapping" : "מיפוי שם משתמש LDAP:",
+ "Clear Username-LDAP User Mapping" : "ניקוי מיפוי שם משתמש LDAP:",
+ "Clear Groupname-LDAP Group Mapping" : "ניקוי מיפוי שם משתמש קבוצה LDAP:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/user_ldap/l10n/he.json b/apps/user_ldap/l10n/he.json
index 5b7c4ade6a7..dfbdf689873 100644
--- a/apps/user_ldap/l10n/he.json
+++ b/apps/user_ldap/l10n/he.json
@@ -125,6 +125,12 @@
"in bytes" : "בבתים",
"Email Field" : "שדה דואר אלקטרוני",
"Internal Username" : "שם משתמש פנימי",
- "Internal Username Attribute:" : "מאפיין שם משתמש פנימי:"
+ "Internal Username Attribute:" : "מאפיין שם משתמש פנימי:",
+ "Override UUID detection" : "דריסת זיהוי UUID",
+ "UUID Attribute for Users:" : "מאפייני UUID למשתמשים:",
+ "UUID Attribute for Groups:" : "מאפייני UUID לקבוצות:",
+ "Username-LDAP User Mapping" : "מיפוי שם משתמש LDAP:",
+ "Clear Username-LDAP User Mapping" : "ניקוי מיפוי שם משתמש LDAP:",
+ "Clear Groupname-LDAP Group Mapping" : "ניקוי מיפוי שם משתמש קבוצה LDAP:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/js/sharedialogview.js b/core/js/sharedialogview.js
index ea7e198cb46..225c9bffd62 100644
--- a/core/js/sharedialogview.js
+++ b/core/js/sharedialogview.js
@@ -245,7 +245,11 @@
if (item.value.shareType === OC.Share.SHARE_TYPE_GROUP) {
text = text + ' ('+t('core', 'group')+')';
} else if (item.value.shareType === OC.Share.SHARE_TYPE_REMOTE) {
- text = text + ' ('+t('core', 'remote')+')';
+ if (item.value.server) {
+ text = text + ' (' + t('core', 'at') + ' ' + item.value.server + ')';
+ } else {
+ text = text + ' (' + t('core', 'remote') + ')';
+ }
}
insert.text(text);
if(item.value.shareType === OC.Share.SHARE_TYPE_GROUP) {
diff --git a/lib/l10n/fi_FI.js b/lib/l10n/fi_FI.js
index 909ceb20210..5da8b1e2ab5 100644
--- a/lib/l10n/fi_FI.js
+++ b/lib/l10n/fi_FI.js
@@ -57,6 +57,7 @@ OC.L10N.register(
"Signature could not get checked. Please contact the app developer and check your admin screen." : "Allekirjoituksen tarkistaminen ei onnistunut. Ota yhteys sovelluskehittäjään ja tarkista ylläpitonäkymä.",
"App can't be installed because of not allowed code in the App" : "Sovellusta ei voi asentaa, koska sovellus sisältää kiellettyä koodia",
"App can't be installed because it is not compatible with this version of ownCloud" : "Sovellusta ei voi asentaa, koska se ei ole yhteensopiva käytössä olevan ownCloud-version kanssa",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Sovelluksen asennus ei onnistu, koska sen info.xml:ssä ilmoitettu versio ei ole sama kuin sovelluskaupassa ilmoitettu versio",
"Application is not enabled" : "Sovellusta ei ole otettu käyttöön",
"Authentication error" : "Tunnistautumisvirhe",
"Token expired. Please reload page." : "Valtuutus vanheni. Lataa sivu uudelleen.",
@@ -76,6 +77,7 @@ OC.L10N.register(
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Poista open_basedir-asetus php.ini-tiedostosta tai vaihda 64-bittiseen PHP:hen.",
"Set an admin username." : "Aseta ylläpitäjän käyttäjätunnus.",
"Set an admin password." : "Aseta ylläpitäjän salasana.",
+ "Invalid Federated Cloud ID" : "Virheellinen federoidun pilven tunniste",
"%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi",
"Sharing %s failed, because the file does not exist" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei ole olemassa",
"You are not allowed to share %s" : "Oikeutesi eivät riitä kohteen %s jakamiseen.",
diff --git a/lib/l10n/fi_FI.json b/lib/l10n/fi_FI.json
index 07a8082b187..8e6a639846c 100644
--- a/lib/l10n/fi_FI.json
+++ b/lib/l10n/fi_FI.json
@@ -55,6 +55,7 @@
"Signature could not get checked. Please contact the app developer and check your admin screen." : "Allekirjoituksen tarkistaminen ei onnistunut. Ota yhteys sovelluskehittäjään ja tarkista ylläpitonäkymä.",
"App can't be installed because of not allowed code in the App" : "Sovellusta ei voi asentaa, koska sovellus sisältää kiellettyä koodia",
"App can't be installed because it is not compatible with this version of ownCloud" : "Sovellusta ei voi asentaa, koska se ei ole yhteensopiva käytössä olevan ownCloud-version kanssa",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Sovelluksen asennus ei onnistu, koska sen info.xml:ssä ilmoitettu versio ei ole sama kuin sovelluskaupassa ilmoitettu versio",
"Application is not enabled" : "Sovellusta ei ole otettu käyttöön",
"Authentication error" : "Tunnistautumisvirhe",
"Token expired. Please reload page." : "Valtuutus vanheni. Lataa sivu uudelleen.",
@@ -74,6 +75,7 @@
"Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Poista open_basedir-asetus php.ini-tiedostosta tai vaihda 64-bittiseen PHP:hen.",
"Set an admin username." : "Aseta ylläpitäjän käyttäjätunnus.",
"Set an admin password." : "Aseta ylläpitäjän salasana.",
+ "Invalid Federated Cloud ID" : "Virheellinen federoidun pilven tunniste",
"%s shared »%s« with you" : "%s jakoi kohteen »%s« kanssasi",
"Sharing %s failed, because the file does not exist" : "Kohteen %s jakaminen epäonnistui, koska tiedostoa ei ole olemassa",
"You are not allowed to share %s" : "Oikeutesi eivät riitä kohteen %s jakamiseen.",
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index 41c20253c59..08b83e8dc75 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -60,6 +60,7 @@ OC.L10N.register(
"App can't be installed because of not allowed code in the App" : "L'application ne peut être installée car elle contient du code non-autorisé",
"App can't be installed because it is not compatible with this version of ownCloud" : "L'application ne peut être installée car elle n'est pas compatible avec cette version de ownCloud",
"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "L'application ne peut être installée car elle contient la balise <shipped>true</shipped> qui n'est pas autorisée pour les applications non incluses par défaut",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "L'App ne peut pas être installé car la version dans info.xml diffère de la version signalée par l' app store",
"Application is not enabled" : "L'application n'est pas activée",
"Authentication error" : "Erreur d'authentification",
"Token expired. Please reload page." : "La session a expiré. Veuillez recharger la page.",
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index 51d12e90631..7541b6b93b0 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -58,6 +58,7 @@
"App can't be installed because of not allowed code in the App" : "L'application ne peut être installée car elle contient du code non-autorisé",
"App can't be installed because it is not compatible with this version of ownCloud" : "L'application ne peut être installée car elle n'est pas compatible avec cette version de ownCloud",
"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "L'application ne peut être installée car elle contient la balise <shipped>true</shipped> qui n'est pas autorisée pour les applications non incluses par défaut",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "L'App ne peut pas être installé car la version dans info.xml diffère de la version signalée par l' app store",
"Application is not enabled" : "L'application n'est pas activée",
"Authentication error" : "Erreur d'authentification",
"Token expired. Please reload page." : "La session a expiré. Veuillez recharger la page.",
diff --git a/lib/l10n/it.js b/lib/l10n/it.js
index f8d41fa58a9..3265cc30edd 100644
--- a/lib/l10n/it.js
+++ b/lib/l10n/it.js
@@ -60,6 +60,7 @@ OC.L10N.register(
"App can't be installed because of not allowed code in the App" : "L'applicazione non può essere installata a causa di codice non consentito al suo interno",
"App can't be installed because it is not compatible with this version of ownCloud" : "L'applicazione non può essere installata poiché non è compatibile con questa versione di ownCloud",
"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "L'applicazione non può essere installata poiché contiene il tag <shipped>true<shipped> che è consentito per le applicazioni native",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "L'applicazione non può essere installata poiché la versione nel file info.xml non è la stessa riportata dall'app store",
"Application is not enabled" : "L'applicazione non è abilitata",
"Authentication error" : "Errore di autenticazione",
"Token expired. Please reload page." : "Token scaduto. Ricarica la pagina.",
diff --git a/lib/l10n/it.json b/lib/l10n/it.json
index 980d3cee0f9..c891d1a765c 100644
--- a/lib/l10n/it.json
+++ b/lib/l10n/it.json
@@ -58,6 +58,7 @@
"App can't be installed because of not allowed code in the App" : "L'applicazione non può essere installata a causa di codice non consentito al suo interno",
"App can't be installed because it is not compatible with this version of ownCloud" : "L'applicazione non può essere installata poiché non è compatibile con questa versione di ownCloud",
"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "L'applicazione non può essere installata poiché contiene il tag <shipped>true<shipped> che è consentito per le applicazioni native",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "L'applicazione non può essere installata poiché la versione nel file info.xml non è la stessa riportata dall'app store",
"Application is not enabled" : "L'applicazione non è abilitata",
"Authentication error" : "Errore di autenticazione",
"Token expired. Please reload page." : "Token scaduto. Ricarica la pagina.",
diff --git a/lib/l10n/pt_PT.js b/lib/l10n/pt_PT.js
index 73ec11fbd7c..6d8efd9fc12 100644
--- a/lib/l10n/pt_PT.js
+++ b/lib/l10n/pt_PT.js
@@ -57,6 +57,7 @@ OC.L10N.register(
"App can't be installed because of not allowed code in the App" : "A aplicação não pode ser instalado devido a código não permitido dentro da aplicação",
"App can't be installed because it is not compatible with this version of ownCloud" : "A aplicação não pode ser instalada por não ser compatível com esta versão do ownCloud",
"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Esta aplicação não pode ser instalada por que contém o tag <shipped>true</shipped> que só é permitido para aplicações nativas",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Esta aplicação não pode ser instalada porque a versão no info.xml não coincide com a reportada na loja de aplicações",
"Application is not enabled" : "A aplicação não está activada",
"Authentication error" : "Erro na autenticação",
"Token expired. Please reload page." : "O token expirou. Por favor recarregue a página.",
diff --git a/lib/l10n/pt_PT.json b/lib/l10n/pt_PT.json
index b072a76540c..74a7438c422 100644
--- a/lib/l10n/pt_PT.json
+++ b/lib/l10n/pt_PT.json
@@ -55,6 +55,7 @@
"App can't be installed because of not allowed code in the App" : "A aplicação não pode ser instalado devido a código não permitido dentro da aplicação",
"App can't be installed because it is not compatible with this version of ownCloud" : "A aplicação não pode ser instalada por não ser compatível com esta versão do ownCloud",
"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Esta aplicação não pode ser instalada por que contém o tag <shipped>true</shipped> que só é permitido para aplicações nativas",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Esta aplicação não pode ser instalada porque a versão no info.xml não coincide com a reportada na loja de aplicações",
"Application is not enabled" : "A aplicação não está activada",
"Authentication error" : "Erro na autenticação",
"Token expired. Please reload page." : "O token expirou. Por favor recarregue a página.",
diff --git a/lib/l10n/sq.js b/lib/l10n/sq.js
index 8125dd3d36a..afa5028e61e 100644
--- a/lib/l10n/sq.js
+++ b/lib/l10n/sq.js
@@ -60,6 +60,7 @@ OC.L10N.register(
"App can't be installed because of not allowed code in the App" : "Aplikacioni s’mund të instalohet, për shkak kodi të palejuar te Aplikacioni",
"App can't be installed because it is not compatible with this version of ownCloud" : "Aplikacioni s’mund të instalohet, ngaqë s’është i përputhshëm me këtë version të ownCloud-it",
"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Aplikacioni s’mund të instalohet, ngaqë përmban etiketën <shipped>true</shipped> e cila nuk lejohet për aplikacione që s’janë hedhur në qarkullim",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Aplikacioni s’mund të instalohet, ngaqë versioni te info.xml s’është i njëjti me versionin e treguar nga shitorja e aplikacioneve",
"Application is not enabled" : "Aplikacioni s’është aktivizuar",
"Authentication error" : "Gabim mirëfilltësimi",
"Token expired. Please reload page." : "Token-i ka skaduar. Ju lutemi, ringarkoni faqen.",
diff --git a/lib/l10n/sq.json b/lib/l10n/sq.json
index f0b843044f2..2f126b2d964 100644
--- a/lib/l10n/sq.json
+++ b/lib/l10n/sq.json
@@ -58,6 +58,7 @@
"App can't be installed because of not allowed code in the App" : "Aplikacioni s’mund të instalohet, për shkak kodi të palejuar te Aplikacioni",
"App can't be installed because it is not compatible with this version of ownCloud" : "Aplikacioni s’mund të instalohet, ngaqë s’është i përputhshëm me këtë version të ownCloud-it",
"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "Aplikacioni s’mund të instalohet, ngaqë përmban etiketën <shipped>true</shipped> e cila nuk lejohet për aplikacione që s’janë hedhur në qarkullim",
+ "App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "Aplikacioni s’mund të instalohet, ngaqë versioni te info.xml s’është i njëjti me versionin e treguar nga shitorja e aplikacioneve",
"Application is not enabled" : "Aplikacioni s’është aktivizuar",
"Authentication error" : "Gabim mirëfilltësimi",
"Token expired. Please reload page." : "Token-i ka skaduar. Ju lutemi, ringarkoni faqen.",
diff --git a/lib/private/integritycheck/checker.php b/lib/private/integritycheck/checker.php
index e6f9f9a1457..8ede6216b76 100644
--- a/lib/private/integritycheck/checker.php
+++ b/lib/private/integritycheck/checker.php
@@ -87,8 +87,6 @@ class Checker {
* @return bool
*/
public function isCodeCheckEnforced() {
- // FIXME: Once the signing server is instructed to sign daily, beta and
- // RCs as well these need to be included also.
$signedChannels = [
'daily',
'testing',
diff --git a/lib/private/templatelayout.php b/lib/private/templatelayout.php
index 7166b23d4c2..5afbd4495c4 100644
--- a/lib/private/templatelayout.php
+++ b/lib/private/templatelayout.php
@@ -72,7 +72,7 @@ class TemplateLayout extends \OC_Template {
// Code integrity notification
$integrityChecker = \OC::$server->getIntegrityCodeChecker();
- if(!$integrityChecker->hasPassedCheck()) {
+ if(\OC_User::isAdminUser(\OC_User::getUser()) && !$integrityChecker->hasPassedCheck()) {
\OCP\Util::addScript('core', 'integritycheck-failed-notification');
}
diff --git a/lib/private/user/user.php b/lib/private/user/user.php
index cd9991796ec..7f34c261cbe 100644
--- a/lib/private/user/user.php
+++ b/lib/private/user/user.php
@@ -80,16 +80,14 @@ class User implements IUser {
$this->uid = $uid;
$this->backend = $backend;
$this->emitter = $emitter;
+ if(is_null($config)) {
+ $config = \OC::$server->getConfig();
+ }
$this->config = $config;
$this->urlGenerator = $urlGenerator;
- if ($this->config) {
- $enabled = $this->config->getUserValue($uid, 'core', 'enabled', 'true');
- $this->enabled = ($enabled === 'true');
- $this->lastLogin = $this->config->getUserValue($uid, 'login', 'lastLogin', 0);
- } else {
- $this->enabled = true;
- $this->lastLogin = \OC::$server->getConfig()->getUserValue($uid, 'login', 'lastLogin', 0);
- }
+ $enabled = $this->config->getUserValue($uid, 'core', 'enabled', 'true');
+ $this->enabled = ($enabled === 'true');
+ $this->lastLogin = $this->config->getUserValue($uid, 'login', 'lastLogin', 0);
if (is_null($this->urlGenerator)) {
$this->urlGenerator = \OC::$server->getURLGenerator();
}
@@ -300,11 +298,10 @@ class User implements IUser {
* @return bool
*/
public function canChangeDisplayName() {
- if ($this->config and $this->config->getSystemValue('allow_user_to_change_display_name') === false) {
+ if ($this->config->getSystemValue('allow_user_to_change_display_name') === false) {
return false;
- } else {
- return $this->backend->implementsActions(\OC_User_Backend::SET_DISPLAYNAME);
}
+ return $this->backend->implementsActions(\OC_User_Backend::SET_DISPLAYNAME);
}
/**
@@ -323,10 +320,8 @@ class User implements IUser {
*/
public function setEnabled($enabled) {
$this->enabled = $enabled;
- if ($this->config) {
- $enabled = ($enabled) ? 'true' : 'false';
- $this->config->setUserValue($this->uid, 'core', 'enabled', $enabled);
- }
+ $enabled = ($enabled) ? 'true' : 'false';
+ $this->config->setUserValue($this->uid, 'core', 'enabled', $enabled);
}
/**
diff --git a/settings/controller/checksetupcontroller.php b/settings/controller/checksetupcontroller.php
index 26194bb1180..cfdfa5021bc 100644
--- a/settings/controller/checksetupcontroller.php
+++ b/settings/controller/checksetupcontroller.php
@@ -271,6 +271,10 @@ class CheckSetupController extends Controller {
* @return DataResponse
*/
public function getFailedIntegrityCheckFiles() {
+ if(!$this->checker->isCodeCheckEnforced()) {
+ return new DataDisplayResponse('Integrity checker has been disabled. Integrity cannot be verified.');
+ }
+
$completeResults = $this->checker->getResults();
if(!empty($completeResults)) {
diff --git a/tests/lib/files/storage/storage.php b/tests/lib/files/storage/storage.php
index 42bd491df5c..f3d265df2de 100644
--- a/tests/lib/files/storage/storage.php
+++ b/tests/lib/files/storage/storage.php
@@ -608,4 +608,10 @@ abstract class Storage extends \Test\TestCase {
$stat = $this->instance->stat('foo.txt');
$this->assertEquals(6, $stat['size']);
}
+
+ public function testPartFile() {
+ $this->instance->file_put_contents('bar.txt.part', 'bar');
+ $this->instance->rename('bar.txt.part', 'bar.txt');
+ $this->assertEquals('bar', $this->instance->file_get_contents('bar.txt'));
+ }
}
diff --git a/tests/settings/controller/CheckSetupControllerTest.php b/tests/settings/controller/CheckSetupControllerTest.php
index c22ddb2e120..3ce7c64b4a3 100644
--- a/tests/settings/controller/CheckSetupControllerTest.php
+++ b/tests/settings/controller/CheckSetupControllerTest.php
@@ -618,9 +618,24 @@ class CheckSetupControllerTest extends TestCase {
$this->assertEquals($expected, $this->checkSetupController->rescanFailedIntegrityCheck());
}
+ public function testGetFailedIntegrityCheckDisabled() {
+ $this->checker
+ ->expects($this->once())
+ ->method('isCodeCheckEnforced')
+ ->willReturn(false);
+
+ $expected = new DataDisplayResponse('Integrity checker has been disabled. Integrity cannot be verified.');
+ $this->assertEquals($expected, $this->checkSetupController->getFailedIntegrityCheckFiles());
+ }
+
+
public function testGetFailedIntegrityCheckFilesWithNoErrorsFound() {
$this->checker
->expects($this->once())
+ ->method('isCodeCheckEnforced')
+ ->willReturn(true);
+ $this->checker
+ ->expects($this->once())
->method('getResults')
->will($this->returnValue([]));
@@ -636,6 +651,10 @@ class CheckSetupControllerTest extends TestCase {
public function testGetFailedIntegrityCheckFilesWithSomeErrorsFound() {
$this->checker
+ ->expects($this->once())
+ ->method('isCodeCheckEnforced')
+ ->willReturn(true);
+ $this->checker
->expects($this->once())
->method('getResults')
->will($this->returnValue(array ( 'core' => array ( 'EXTRA_FILE' => array('/testfile' => array()), 'INVALID_HASH' => array ( '/.idea/workspace.xml' => array ( 'expected' => 'f1c5e2630d784bc9cb02d5a28f55d6f24d06dae2a0fee685f3c2521b050955d9d452769f61454c9ddfa9c308146ade10546cfa829794448eaffbc9a04a29d216', 'current' => 'ce08bf30bcbb879a18b49239a9bec6b8702f52452f88a9d32142cad8d2494d5735e6bfa0d8642b2762c62ca5be49f9bf4ec231d4a230559d4f3e2c471d3ea094', ), '/lib/private/integritycheck/checker.php' => array ( 'expected' => 'c5a03bacae8dedf8b239997901ba1fffd2fe51271d13a00cc4b34b09cca5176397a89fc27381cbb1f72855fa18b69b6f87d7d5685c3b45aee373b09be54742ea', 'current' => '88a3a92c11db91dec1ac3be0e1c87f862c95ba6ffaaaa3f2c3b8f682187c66f07af3a3b557a868342ef4a271218fe1c1e300c478e6c156c5955ed53c40d06585', ), '/settings/controller/checksetupcontroller.php' => array ( 'expected' => '3e1de26ce93c7bfe0ede7c19cb6c93cadc010340225b375607a7178812e9de163179b0dc33809f451e01f491d93f6f5aaca7929685d21594cccf8bda732327c4', 'current' => '09563164f9904a837f9ca0b5f626db56c838e5098e0ccc1d8b935f68fa03a25c5ec6f6b2d9e44a868e8b85764dafd1605522b4af8db0ae269d73432e9a01e63a', ), ), ), 'bookmarks' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'dav' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'encryption' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'external' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'federation' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_antivirus' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_drop' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_external' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_pdfviewer' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_sharing' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_trashbin' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_versions' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'files_videoviewer' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'firstrunwizard' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'gitsmart' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'logreader' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature could not get verified.', ), ), 'password_policy' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'provisioning_api' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'sketch' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'threatblock' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'two_factor_auth' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'user_ldap' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), 'user_shibboleth' => array ( 'EXCEPTION' => array ( 'class' => 'OC\\IntegrityCheck\\Exceptions\\InvalidSignatureException', 'message' => 'Signature data not found.', ), ), )));