aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.htaccess17
-rw-r--r--apps/accessibility/l10n/uk.js4
-rw-r--r--apps/accessibility/l10n/uk.json4
-rw-r--r--apps/dav/composer/composer/autoload_classmap.php1
-rw-r--r--apps/dav/composer/composer/autoload_static.php1
-rw-r--r--apps/dav/l10n/ca.js1
-rw-r--r--apps/dav/l10n/ca.json1
-rw-r--r--apps/dav/lib/Connector/Sabre/AnonymousOptionsPlugin.php4
-rw-r--r--apps/dav/lib/Upload/UploadFile.php75
-rw-r--r--apps/dav/lib/Upload/UploadFolder.php11
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/SharesPluginTest.php23
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/TagsPluginTest.php21
-rw-r--r--apps/dav/tests/unit/DAV/AnonymousOptionsTest.php22
-rw-r--r--apps/encryption/l10n/gl.js4
-rw-r--r--apps/encryption/l10n/gl.json4
-rw-r--r--apps/federatedfilesharing/l10n/ca.js1
-rw-r--r--apps/federatedfilesharing/l10n/ca.json1
-rw-r--r--apps/files_external/l10n/ca.js2
-rw-r--r--apps/files_external/l10n/ca.json2
-rw-r--r--apps/files_external/l10n/de.js2
-rw-r--r--apps/files_external/l10n/de.json2
-rw-r--r--apps/files_external/l10n/de_DE.js2
-rw-r--r--apps/files_external/l10n/de_DE.json2
-rw-r--r--apps/files_external/l10n/es.js2
-rw-r--r--apps/files_external/l10n/es.json2
-rw-r--r--apps/files_external/l10n/it.js1
-rw-r--r--apps/files_external/l10n/it.json1
-rw-r--r--apps/files_external/l10n/nl.js2
-rw-r--r--apps/files_external/l10n/nl.json2
-rw-r--r--apps/files_sharing/l10n/he.js47
-rw-r--r--apps/files_sharing/l10n/he.json47
-rw-r--r--apps/files_sharing/lib/Controller/ShareController.php1
-rw-r--r--apps/settings/l10n/fr.js2
-rw-r--r--apps/settings/l10n/fr.json2
-rw-r--r--apps/settings/l10n/he.js30
-rw-r--r--apps/settings/l10n/he.json30
-rw-r--r--apps/settings/l10n/sk.js2
-rw-r--r--apps/settings/l10n/sk.json2
-rw-r--r--apps/settings/l10n/uk.js2
-rw-r--r--apps/settings/l10n/uk.json2
-rw-r--r--apps/sharebymail/l10n/sk.js11
-rw-r--r--apps/sharebymail/l10n/sk.json11
-rw-r--r--apps/twofactor_backupcodes/l10n/sk.js9
-rw-r--r--apps/twofactor_backupcodes/l10n/sk.json9
-rw-r--r--apps/updatenotification/l10n/he.js3
-rw-r--r--apps/updatenotification/l10n/he.json3
-rw-r--r--apps/updatenotification/l10n/sk.js12
-rw-r--r--apps/updatenotification/l10n/sk.json12
-rw-r--r--apps/user_ldap/l10n/ca.js1
-rw-r--r--apps/user_ldap/l10n/ca.json1
-rw-r--r--apps/workflowengine/l10n/sk.js19
-rw-r--r--apps/workflowengine/l10n/sk.json19
-rw-r--r--core/Controller/OCJSController.php8
-rw-r--r--core/Controller/SvgController.php11
-rw-r--r--core/l10n/sk.js2
-rw-r--r--core/l10n/sk.json2
-rw-r--r--lib/l10n/gl.js2
-rw-r--r--lib/l10n/gl.json2
-rw-r--r--lib/private/Share20/Manager.php14
-rw-r--r--package-lock.json55
-rw-r--r--package.json2
-rw-r--r--tests/Core/Controller/SvgControllerTest.php65
-rw-r--r--tests/data/svg/files-app-red.svg1
-rw-r--r--tests/data/svg/settings-admin-red.svg1
-rw-r--r--tests/lib/App/AppManagerTest.php29
-rw-r--r--tests/lib/Share20/ManagerTest.php1
66 files changed, 630 insertions, 59 deletions
diff --git a/.htaccess b/.htaccess
index 8b91422755c..87280cc9e01 100644
--- a/.htaccess
+++ b/.htaccess
@@ -11,13 +11,30 @@
<IfModule mod_env.c>
# Add security and privacy related headers
+
+ # Avoid doubled headers by unsetting headers in "onsuccess" table,
+ # then add headers to "always" table: https://github.com/nextcloud/server/pull/19002
+ Header onsuccess unset Referrer-Policy
Header always set Referrer-Policy "no-referrer"
+
+ Header onsuccess unset X-Content-Type-Options
Header always set X-Content-Type-Options "nosniff"
+
+ Header onsuccess unset X-Download-Options
Header always set X-Download-Options "noopen"
+
+ Header onsuccess unset X-Frame-Options
Header always set X-Frame-Options "SAMEORIGIN"
+
+ Header onsuccess unset X-Permitted-Cross-Domain-Policies
Header always set X-Permitted-Cross-Domain-Policies "none"
+
+ Header onsuccess unset X-Robots-Tag
Header always set X-Robots-Tag "none"
+
+ Header onsuccess unset X-XSS-Protection
Header always set X-XSS-Protection "1; mode=block"
+
SetEnv modHeadersAvailable true
</IfModule>
diff --git a/apps/accessibility/l10n/uk.js b/apps/accessibility/l10n/uk.js
index 97e59ce992a..5d8be748568 100644
--- a/apps/accessibility/l10n/uk.js
+++ b/apps/accessibility/l10n/uk.js
@@ -12,6 +12,8 @@ OC.L10N.register(
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic - це вільно доступний шрифт, що було розроблено для уникнення деяких загальних помилок, що спричинені дизлексією.",
"Accessibility" : "Доступність",
"Accessibility options for nextcloud" : "Опції доступності для nextcloud",
+ "Provides multiple accessibilities options to ease your use of Nextcloud" : "Надає кілька варіантів доступності, задля спрощення використання Nextcloud",
+ "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Для нас дуже важливо забезпечити доступ для всіх. Ми дотримуємось веб-стандартів і перевіряємо, щоб забезпечити зручність користування без комп'ютерної миші, а також за допомогую допоміжного програмного забезпечення, наприклад, програми зчитування з екрана. Ми прагнемо відповідати {guidelines} Правила доступу до веб-вмісту {linkend} 2.1 на рівні AA, а з темою високої контрастності навіть на рівні AAA.",
"If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Якщо ви знайшли будь-які проблеми, будь-ласка повідомте про них на {issuetracker} до нашого трекера задач{linkend}. Якщо ж ви бажаєте стати учасником - будь-ласка приєднуйтесь до {designteam} нашої команди{linkend}! ",
"High contrast theme" : "Висококонтрастна тема",
"A high contrast theme to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Висококонтрастна тема для того, щоб полегшити користування. Візуальні ефекти буде погіршено, однак чіткість - покращено.",
@@ -19,7 +21,7 @@ OC.L10N.register(
"Web Content Accessibility Guidelines" : "Вказівки щодо доступності веб контенту",
"our issue tracker" : "наш баґ-трекер",
"our design team" : "наша команда дизайнерів",
- "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines} 2.1 on AA level, with the high contrast theme even on AAA level." : "Доступ для всіх дуже важливий для нас. Ми намагаємося відповідати веб-стандартам і відслідковуємо, щоб всі функції були доступні також без використання миші, а також щоб було доступним допоміжне програмне забезпечення, наприклад читач екрану. Наша мета - відповідати {guidelines} 2.1 на рівні AA, а з висококонтрастною темою - на рівні AAA.",
+ "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines} 2.1 on AA level, with the high contrast theme even on AAA level." : "Для нас дуже важливо забезпечити доступ для всіх. Ми дотримуємось веб-стандартів і перевіряємо, щоб забезпечити зручність користування без комп'ютерної миші, а також за допомогую допоміжного програмного забезпечення, наприклад, програми зчитування з екрана. Ми прагнемо відповідати {guidelines} Правила доступу до веб-вмісту {linkend} 2.1 на рівні AA, а з темою високої контрастності навіть на рівні AAA.",
"If you find any issues, don’t hesitate to report them on {issuetracker}. And if you want to get involved, come join {designteam}!" : "Якщо ви знайшли будь-які проблеми, будь-ласка повідомте про них на {issuetracker}. Якщо ж ви бажаєте стати учасником - будь-ласка приєднуйтесь до {designteam}!",
"Enable" : "Увімкнути"
},
diff --git a/apps/accessibility/l10n/uk.json b/apps/accessibility/l10n/uk.json
index e73a0c06a7e..c66f3bceb53 100644
--- a/apps/accessibility/l10n/uk.json
+++ b/apps/accessibility/l10n/uk.json
@@ -10,6 +10,8 @@
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic - це вільно доступний шрифт, що було розроблено для уникнення деяких загальних помилок, що спричинені дизлексією.",
"Accessibility" : "Доступність",
"Accessibility options for nextcloud" : "Опції доступності для nextcloud",
+ "Provides multiple accessibilities options to ease your use of Nextcloud" : "Надає кілька варіантів доступності, задля спрощення використання Nextcloud",
+ "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Для нас дуже важливо забезпечити доступ для всіх. Ми дотримуємось веб-стандартів і перевіряємо, щоб забезпечити зручність користування без комп'ютерної миші, а також за допомогую допоміжного програмного забезпечення, наприклад, програми зчитування з екрана. Ми прагнемо відповідати {guidelines} Правила доступу до веб-вмісту {linkend} 2.1 на рівні AA, а з темою високої контрастності навіть на рівні AAA.",
"If you find any issues, don’t hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Якщо ви знайшли будь-які проблеми, будь-ласка повідомте про них на {issuetracker} до нашого трекера задач{linkend}. Якщо ж ви бажаєте стати учасником - будь-ласка приєднуйтесь до {designteam} нашої команди{linkend}! ",
"High contrast theme" : "Висококонтрастна тема",
"A high contrast theme to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Висококонтрастна тема для того, щоб полегшити користування. Візуальні ефекти буде погіршено, однак чіткість - покращено.",
@@ -17,7 +19,7 @@
"Web Content Accessibility Guidelines" : "Вказівки щодо доступності веб контенту",
"our issue tracker" : "наш баґ-трекер",
"our design team" : "наша команда дизайнерів",
- "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines} 2.1 on AA level, with the high contrast theme even on AAA level." : "Доступ для всіх дуже важливий для нас. Ми намагаємося відповідати веб-стандартам і відслідковуємо, щоб всі функції були доступні також без використання миші, а також щоб було доступним допоміжне програмне забезпечення, наприклад читач екрану. Наша мета - відповідати {guidelines} 2.1 на рівні AA, а з висококонтрастною темою - на рівні AAA.",
+ "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines} 2.1 on AA level, with the high contrast theme even on AAA level." : "Для нас дуже важливо забезпечити доступ для всіх. Ми дотримуємось веб-стандартів і перевіряємо, щоб забезпечити зручність користування без комп'ютерної миші, а також за допомогую допоміжного програмного забезпечення, наприклад, програми зчитування з екрана. Ми прагнемо відповідати {guidelines} Правила доступу до веб-вмісту {linkend} 2.1 на рівні AA, а з темою високої контрастності навіть на рівні AAA.",
"If you find any issues, don’t hesitate to report them on {issuetracker}. And if you want to get involved, come join {designteam}!" : "Якщо ви знайшли будь-які проблеми, будь-ласка повідомте про них на {issuetracker}. Якщо ж ви бажаєте стати учасником - будь-ласка приєднуйтесь до {designteam}!",
"Enable" : "Увімкнути"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
diff --git a/apps/dav/composer/composer/autoload_classmap.php b/apps/dav/composer/composer/autoload_classmap.php
index ab0c7ee63bd..9b6108a8052 100644
--- a/apps/dav/composer/composer/autoload_classmap.php
+++ b/apps/dav/composer/composer/autoload_classmap.php
@@ -223,6 +223,7 @@ return array(
'OCA\\DAV\\Upload\\CleanupService' => $baseDir . '/../lib/Upload/CleanupService.php',
'OCA\\DAV\\Upload\\FutureFile' => $baseDir . '/../lib/Upload/FutureFile.php',
'OCA\\DAV\\Upload\\RootCollection' => $baseDir . '/../lib/Upload/RootCollection.php',
+ 'OCA\\DAV\\Upload\\UploadFile' => $baseDir . '/../lib/Upload/UploadFile.php',
'OCA\\DAV\\Upload\\UploadFolder' => $baseDir . '/../lib/Upload/UploadFolder.php',
'OCA\\DAV\\Upload\\UploadHome' => $baseDir . '/../lib/Upload/UploadHome.php',
);
diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php
index b142b93d793..fa57e9406e4 100644
--- a/apps/dav/composer/composer/autoload_static.php
+++ b/apps/dav/composer/composer/autoload_static.php
@@ -238,6 +238,7 @@ class ComposerStaticInitDAV
'OCA\\DAV\\Upload\\CleanupService' => __DIR__ . '/..' . '/../lib/Upload/CleanupService.php',
'OCA\\DAV\\Upload\\FutureFile' => __DIR__ . '/..' . '/../lib/Upload/FutureFile.php',
'OCA\\DAV\\Upload\\RootCollection' => __DIR__ . '/..' . '/../lib/Upload/RootCollection.php',
+ 'OCA\\DAV\\Upload\\UploadFile' => __DIR__ . '/..' . '/../lib/Upload/UploadFile.php',
'OCA\\DAV\\Upload\\UploadFolder' => __DIR__ . '/..' . '/../lib/Upload/UploadFolder.php',
'OCA\\DAV\\Upload\\UploadHome' => __DIR__ . '/..' . '/../lib/Upload/UploadHome.php',
);
diff --git a/apps/dav/l10n/ca.js b/apps/dav/l10n/ca.js
index 506a125cbd0..8dc962966ad 100644
--- a/apps/dav/l10n/ca.js
+++ b/apps/dav/l10n/ca.js
@@ -94,6 +94,7 @@ OC.L10N.register(
"Birthday calendars will be generated by a background job." : "Els calendaris d'aniversari es generaran per un procés en segon pla..",
"Hence they will not be available immediately after enabling but will show up after some time." : "Per tant, no estaran disponibles immediatament després d'habilitar-los, però apareixeran d'aquí una estona.",
"Send notifications for events" : "Envia notificacions per als esdeveniments",
+ "Notifications are sent via background jobs, so these must occur often enough." : "Les notificacions s'envien per tasques funcionant en segon pla, així que això ha de succeir bastant sovint.",
"Enable notifications for events via push" : "Habiliteu les notificacions per a esdeveniments mitjançant l'empenta.",
"Technical details" : "Detalls tècnics",
"Remote Address: %s" : "Adreça remota: %s",
diff --git a/apps/dav/l10n/ca.json b/apps/dav/l10n/ca.json
index 5b04b590ca9..18226a33df1 100644
--- a/apps/dav/l10n/ca.json
+++ b/apps/dav/l10n/ca.json
@@ -92,6 +92,7 @@
"Birthday calendars will be generated by a background job." : "Els calendaris d'aniversari es generaran per un procés en segon pla..",
"Hence they will not be available immediately after enabling but will show up after some time." : "Per tant, no estaran disponibles immediatament després d'habilitar-los, però apareixeran d'aquí una estona.",
"Send notifications for events" : "Envia notificacions per als esdeveniments",
+ "Notifications are sent via background jobs, so these must occur often enough." : "Les notificacions s'envien per tasques funcionant en segon pla, així que això ha de succeir bastant sovint.",
"Enable notifications for events via push" : "Habiliteu les notificacions per a esdeveniments mitjançant l'empenta.",
"Technical details" : "Detalls tècnics",
"Remote Address: %s" : "Adreça remota: %s",
diff --git a/apps/dav/lib/Connector/Sabre/AnonymousOptionsPlugin.php b/apps/dav/lib/Connector/Sabre/AnonymousOptionsPlugin.php
index 63e57735972..e209f7f1af6 100644
--- a/apps/dav/lib/Connector/Sabre/AnonymousOptionsPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/AnonymousOptionsPlugin.php
@@ -67,9 +67,9 @@ class AnonymousOptionsPlugin extends ServerPlugin {
$emptyAuth = $request->getHeader('Authorization') === null
|| $request->getHeader('Authorization') === ''
|| trim($request->getHeader('Authorization')) === 'Bearer';
- $isAnonymousOption = $request->getMethod() === 'OPTIONS' && $emptyAuth;
+ $isAnonymousOfficeOption = $request->getMethod() === 'OPTIONS' && $isOffice && $emptyAuth;
$isOfficeHead = $request->getMethod() === 'HEAD' && $isOffice && $emptyAuth;
- if ($isAnonymousOption || $isOfficeHead) {
+ if ($isAnonymousOfficeOption || $isOfficeHead) {
/** @var CorePlugin $corePlugin */
$corePlugin = $this->server->getPlugin('core');
// setup a fake tree for anonymous access
diff --git a/apps/dav/lib/Upload/UploadFile.php b/apps/dav/lib/Upload/UploadFile.php
new file mode 100644
index 00000000000..600cc24bdb7
--- /dev/null
+++ b/apps/dav/lib/Upload/UploadFile.php
@@ -0,0 +1,75 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * @copyright Copyright (c) 2020, Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @author Roeland Jago Douma <roeland@famdouma.nl>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\DAV\Upload;
+
+use OCA\DAV\Connector\Sabre\File;
+use Sabre\DAV\IFile;
+
+class UploadFile implements IFile {
+
+ /** @var File */
+ private $file;
+
+ public function __construct(File $file) {
+ $this->file = $file;
+ }
+
+ public function put($data) {
+ return $this->file->put($data);
+ }
+
+ public function get() {
+ return $this->file->get();
+ }
+
+ public function getContentType() {
+ return $this->file->getContentType();
+ }
+
+ public function getETag() {
+ return $this->file->getETag();
+ }
+
+ public function getSize() {
+ return $this->file->getSize();
+ }
+
+ public function delete() {
+ $this->file->delete();
+ }
+
+ public function getName() {
+ return $this->file->getName();
+ }
+
+ public function setName($name) {
+ $this->file->setName($name);
+ }
+
+ public function getLastModified() {
+ return $this->file->getLastModified();
+ }
+}
diff --git a/apps/dav/lib/Upload/UploadFolder.php b/apps/dav/lib/Upload/UploadFolder.php
index d74154c6ac9..b3df7383ac1 100644
--- a/apps/dav/lib/Upload/UploadFolder.php
+++ b/apps/dav/lib/Upload/UploadFolder.php
@@ -53,12 +53,19 @@ class UploadFolder implements ICollection {
if ($name === '.file') {
return new FutureFile($this->node, '.file');
}
- return $this->node->getChild($name);
+ return new UploadFile($this->node->getChild($name));
}
public function getChildren() {
- $children = $this->node->getChildren();
+ $tmpChildren = $this->node->getChildren();
+
+ $children = [];
$children[] = new FutureFile($this->node, '.file');
+
+ foreach ($tmpChildren as $child) {
+ $children[] = new UploadFile($child);
+ }
+
return $children;
}
diff --git a/apps/dav/tests/unit/Connector/Sabre/SharesPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/SharesPluginTest.php
index 153bc0cd93b..9144068a6cb 100644
--- a/apps/dav/tests/unit/Connector/Sabre/SharesPluginTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/SharesPluginTest.php
@@ -32,6 +32,7 @@ namespace OCA\DAV\Tests\unit\Connector\Sabre;
use OCA\DAV\Connector\Sabre\Directory;
use OCA\DAV\Connector\Sabre\File;
use OCA\DAV\Connector\Sabre\Node;
+use OCA\DAV\Upload\UploadFile;
use OCP\Files\Folder;
use OCP\IUser;
use OCP\IUserSession;
@@ -189,7 +190,7 @@ class SharesPluginTest extends \Test\TestCase {
$this->userFolder->method('get')
->with('/subdir')
->willReturn($node);
-
+
$dummyShares = array_map(function ($type) {
$share = $this->getMockBuilder(IShare::class)->getMock();
$share->expects($this->any())
@@ -282,4 +283,24 @@ class SharesPluginTest extends \Test\TestCase {
[[\OCP\Share::SHARE_TYPE_USER, \OCP\Share::SHARE_TYPE_REMOTE]],
];
}
+
+ public function testGetPropertiesSkipChunks(): void {
+ $sabreNode = $this->getMockBuilder(UploadFile::class)
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $propFind = new \Sabre\DAV\PropFind(
+ '/dummyPath',
+ [self::SHARETYPES_PROPERTYNAME],
+ 0
+ );
+
+ $this->plugin->handleGetProperties(
+ $propFind,
+ $sabreNode
+ );
+
+ $result = $propFind->getResultForMultiStatus();
+ $this->assertCount(1, $result[404]);
+ }
}
diff --git a/apps/dav/tests/unit/Connector/Sabre/TagsPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/TagsPluginTest.php
index 210e732438c..95e567961d1 100644
--- a/apps/dav/tests/unit/Connector/Sabre/TagsPluginTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/TagsPluginTest.php
@@ -30,6 +30,7 @@ namespace OCA\DAV\Tests\unit\Connector\Sabre;
use OCA\DAV\Connector\Sabre\Directory;
use OCA\DAV\Connector\Sabre\File;
use OCA\DAV\Connector\Sabre\Node;
+use OCA\DAV\Upload\UploadFile;
use OCP\ITagManager;
use OCP\ITags;
use Sabre\DAV\Tree;
@@ -266,6 +267,26 @@ class TagsPluginTest extends \Test\TestCase {
];
}
+ public function testGetPropertiesSkipChunks(): void {
+ $sabreNode = $this->getMockBuilder(UploadFile::class)
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $propFind = new \Sabre\DAV\PropFind(
+ '/dummyPath',
+ [self::TAGS_PROPERTYNAME, self::TAG_FAVORITE],
+ 0
+ );
+
+ $this->plugin->handleGetProperties(
+ $propFind,
+ $sabreNode
+ );
+
+ $result = $propFind->getResultForMultiStatus();
+ $this->assertCount(2, $result[404]);
+ }
+
public function testUpdateTags() {
// this test will replace the existing tags "tagremove" with "tag1" and "tag2"
// and keep "tagkeep"
diff --git a/apps/dav/tests/unit/DAV/AnonymousOptionsTest.php b/apps/dav/tests/unit/DAV/AnonymousOptionsTest.php
index 6aabb4845fe..c8940533ab0 100644
--- a/apps/dav/tests/unit/DAV/AnonymousOptionsTest.php
+++ b/apps/dav/tests/unit/DAV/AnonymousOptionsTest.php
@@ -53,18 +53,36 @@ class AnonymousOptionsTest extends TestCase {
public function testAnonymousOptionsRoot() {
$response = $this->sendRequest('OPTIONS', '');
- $this->assertEquals(200, $response->getStatus());
+ $this->assertEquals(401, $response->getStatus());
}
public function testAnonymousOptionsNonRoot() {
$response = $this->sendRequest('OPTIONS', 'foo');
- $this->assertEquals(200, $response->getStatus());
+ $this->assertEquals(401, $response->getStatus());
}
public function testAnonymousOptionsNonRootSubDir() {
$response = $this->sendRequest('OPTIONS', 'foo/bar');
+ $this->assertEquals(401, $response->getStatus());
+ }
+
+ public function testAnonymousOptionsRootOffice() {
+ $response = $this->sendRequest('OPTIONS', '', 'Microsoft Office does strange things');
+
+ $this->assertEquals(200, $response->getStatus());
+ }
+
+ public function testAnonymousOptionsNonRootOffice() {
+ $response = $this->sendRequest('OPTIONS', 'foo', 'Microsoft Office does strange things');
+
+ $this->assertEquals(200, $response->getStatus());
+ }
+
+ public function testAnonymousOptionsNonRootSubDirOffice() {
+ $response = $this->sendRequest('OPTIONS', 'foo/bar', 'Microsoft Office does strange things');
+
$this->assertEquals(200, $response->getStatus());
}
diff --git a/apps/encryption/l10n/gl.js b/apps/encryption/l10n/gl.js
index b20771acd53..284a7648300 100644
--- a/apps/encryption/l10n/gl.js
+++ b/apps/encryption/l10n/gl.js
@@ -33,10 +33,10 @@ OC.L10N.register(
"Default encryption module" : "Módulo de cifrado predeterminado",
"Default encryption module for server-side encryption" : "Módulo de cifrado predeterminado para o cifrado no lado do servidor",
"In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Para usar este módulo de cifrado é preciso activar o cifrado no lado\n\t\tdo servidor nos axustes do administrador. Una vez activado este módulo cifrará\n\t\ttodos os seus ficheiros de xeito transparente. O cifrado basease en chaves AES 256.\n\t\tO módulo non tocará os ficheiros existentes, só se cifran os ficheiros novos\n\t\tapós que se active o cifrado no lado do servidor. Tampouco é posíbel\n\t\tdesactivar o cifrado e volver a un sistema sen cifrar.\n\t\tLea a documentación para coñecer todas as implicacións antes de decidir\n\t\tactivar o cifrado no lado do servidor.",
- "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 '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" : "Ola.\n\nO administrador activou o cifrado de datos no servidor. Os seus ficheiros foron cifrados co contrasinal «%s».\n\nInicie a súa sesión dende a interface web, vaia á sección «Módulo de cifrado básico» dos seus axustes persoais e actualice o contrasinal de cifrado. Para iso, deberá inserir este contrasinal no campo «Contrasinal antigo de acceso» xunto co seu actual contrasinal de acceso.\n\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 '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" : "Ola.\n\nO administrador activou o cifrado de datos no servidor. Os seus ficheiros foron cifrados co contrasinal «%s».\n\nInicie a súa sesión dende a interface web, vaia á sección «Módulo de cifrado básico» dos seus axustes persoais e actualice o contrasinal de cifrado. Para iso, deberá introducir este contrasinal no campo «Contrasinal antigo de acceso» xunto co seu actual contrasinal de acceso.\n\n",
"The share will expire on %s." : "Este recurso compartido caduca o %s.",
"Cheers!" : "Saúdos!",
- "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 \"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>" : "Ola.<br><br>O administrador activou o cifrado de datos no servidor. Os seus ficheiros foron cifrados co contrasinal <strong>%s</strong>.<br><br>Inicie a súa sesión dende a interface web, vaia á sección «Módulo de cifrado básico» dos seus axustes persoais e actualice o contrasinal de cifrado. Para iso, deberá inserir este contrasinal no campo «Contrasinal antigo de acceso» xunto co seu actual contrasinal de acceso.<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 \"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>" : "Ola.<br><br>O administrador activou o cifrado de datos no servidor. Os seus ficheiros foron cifrados co contrasinal <strong>%s</strong>.<br><br>Inicie a súa sesión dende a interface web, vaia á sección «Módulo de cifrado básico» dos seus axustes persoais e actualice o contrasinal de cifrado. Para iso, deberá introducir este contrasinal no campo «Contrasinal antigo de acceso» xunto co seu actual contrasinal de acceso.<br><br>",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "A aplicación de cifrado está activada, mais as chaves non foron preparadas, saia da sesión e volva a acceder de novo",
"Encrypt the home storage" : "Cifrar o almacenamento persoal",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ao activar esta opción cífranse todos os ficheiros almacenados no almacenamento principal, senón só se cifran os ficheiros do almacenamento externo.",
diff --git a/apps/encryption/l10n/gl.json b/apps/encryption/l10n/gl.json
index efd4a70fc0e..b1e542ccbe0 100644
--- a/apps/encryption/l10n/gl.json
+++ b/apps/encryption/l10n/gl.json
@@ -31,10 +31,10 @@
"Default encryption module" : "Módulo de cifrado predeterminado",
"Default encryption module for server-side encryption" : "Módulo de cifrado predeterminado para o cifrado no lado do servidor",
"In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Para usar este módulo de cifrado é preciso activar o cifrado no lado\n\t\tdo servidor nos axustes do administrador. Una vez activado este módulo cifrará\n\t\ttodos os seus ficheiros de xeito transparente. O cifrado basease en chaves AES 256.\n\t\tO módulo non tocará os ficheiros existentes, só se cifran os ficheiros novos\n\t\tapós que se active o cifrado no lado do servidor. Tampouco é posíbel\n\t\tdesactivar o cifrado e volver a un sistema sen cifrar.\n\t\tLea a documentación para coñecer todas as implicacións antes de decidir\n\t\tactivar o cifrado no lado do servidor.",
- "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 '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" : "Ola.\n\nO administrador activou o cifrado de datos no servidor. Os seus ficheiros foron cifrados co contrasinal «%s».\n\nInicie a súa sesión dende a interface web, vaia á sección «Módulo de cifrado básico» dos seus axustes persoais e actualice o contrasinal de cifrado. Para iso, deberá inserir este contrasinal no campo «Contrasinal antigo de acceso» xunto co seu actual contrasinal de acceso.\n\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 '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" : "Ola.\n\nO administrador activou o cifrado de datos no servidor. Os seus ficheiros foron cifrados co contrasinal «%s».\n\nInicie a súa sesión dende a interface web, vaia á sección «Módulo de cifrado básico» dos seus axustes persoais e actualice o contrasinal de cifrado. Para iso, deberá introducir este contrasinal no campo «Contrasinal antigo de acceso» xunto co seu actual contrasinal de acceso.\n\n",
"The share will expire on %s." : "Este recurso compartido caduca o %s.",
"Cheers!" : "Saúdos!",
- "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 \"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>" : "Ola.<br><br>O administrador activou o cifrado de datos no servidor. Os seus ficheiros foron cifrados co contrasinal <strong>%s</strong>.<br><br>Inicie a súa sesión dende a interface web, vaia á sección «Módulo de cifrado básico» dos seus axustes persoais e actualice o contrasinal de cifrado. Para iso, deberá inserir este contrasinal no campo «Contrasinal antigo de acceso» xunto co seu actual contrasinal de acceso.<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 \"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>" : "Ola.<br><br>O administrador activou o cifrado de datos no servidor. Os seus ficheiros foron cifrados co contrasinal <strong>%s</strong>.<br><br>Inicie a súa sesión dende a interface web, vaia á sección «Módulo de cifrado básico» dos seus axustes persoais e actualice o contrasinal de cifrado. Para iso, deberá introducir este contrasinal no campo «Contrasinal antigo de acceso» xunto co seu actual contrasinal de acceso.<br><br>",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "A aplicación de cifrado está activada, mais as chaves non foron preparadas, saia da sesión e volva a acceder de novo",
"Encrypt the home storage" : "Cifrar o almacenamento persoal",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Ao activar esta opción cífranse todos os ficheiros almacenados no almacenamento principal, senón só se cifran os ficheiros do almacenamento externo.",
diff --git a/apps/federatedfilesharing/l10n/ca.js b/apps/federatedfilesharing/l10n/ca.js
index 962e4a01bff..8bc3663d50e 100644
--- a/apps/federatedfilesharing/l10n/ca.js
+++ b/apps/federatedfilesharing/l10n/ca.js
@@ -26,6 +26,7 @@ OC.L10N.register(
"Federated sharing" : "Compartició federada",
"You received \"%3$s\" as a remote share from %4$s (%1$s) (on behalf of %5$s (%2$s))" : "Has rebut \"%3$s\" com a compartició remota de %4$s (%1$s) (en nom de %5$s (%2$s))",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Heu rebut {share} com un recompte remot de {user} (en nom de {nom})",
+ "You received \"%3$s\" as a remote share from %4$s (%1$s)" : "Heu rebut \"%3$s\" com a compartició remota de %4$s (%1$s)",
"You received {share} as a remote share from {user}" : "Heu rebut {share} com a recompte remot de {user}",
"Accept" : "Accepta",
"Decline" : "Denega",
diff --git a/apps/federatedfilesharing/l10n/ca.json b/apps/federatedfilesharing/l10n/ca.json
index 599f8100038..272d760f526 100644
--- a/apps/federatedfilesharing/l10n/ca.json
+++ b/apps/federatedfilesharing/l10n/ca.json
@@ -24,6 +24,7 @@
"Federated sharing" : "Compartició federada",
"You received \"%3$s\" as a remote share from %4$s (%1$s) (on behalf of %5$s (%2$s))" : "Has rebut \"%3$s\" com a compartició remota de %4$s (%1$s) (en nom de %5$s (%2$s))",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Heu rebut {share} com un recompte remot de {user} (en nom de {nom})",
+ "You received \"%3$s\" as a remote share from %4$s (%1$s)" : "Heu rebut \"%3$s\" com a compartició remota de %4$s (%1$s)",
"You received {share} as a remote share from {user}" : "Heu rebut {share} com a recompte remot de {user}",
"Accept" : "Accepta",
"Decline" : "Denega",
diff --git a/apps/files_external/l10n/ca.js b/apps/files_external/l10n/ca.js
index 478ac941b8e..a141102f9ef 100644
--- a/apps/files_external/l10n/ca.js
+++ b/apps/files_external/l10n/ca.js
@@ -105,6 +105,8 @@ OC.L10N.register(
"SMB / CIFS" : "SMB / CIFS",
"Share" : "Comparteix",
"Show hidden files" : "Mostra els fitxers ocults",
+ "Verify ACL access when listing files" : "Verificar accés ACL quan es llistin fitxers",
+ "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Comprovar els ACLs de cada fitxer o carpeta a dins d'un directori per filtrar els elements pels que l'usuari no tingui permís, provoca una disminució del rendiment",
"Timeout" : "Sense temps",
"SMB / CIFS using OC login" : "SMB / CIFS fent servir acreditació OC",
"Username as share" : "Nom d'usuari amb que es comparteix",
diff --git a/apps/files_external/l10n/ca.json b/apps/files_external/l10n/ca.json
index 64a80e7dbe8..1326e5f0356 100644
--- a/apps/files_external/l10n/ca.json
+++ b/apps/files_external/l10n/ca.json
@@ -103,6 +103,8 @@
"SMB / CIFS" : "SMB / CIFS",
"Share" : "Comparteix",
"Show hidden files" : "Mostra els fitxers ocults",
+ "Verify ACL access when listing files" : "Verificar accés ACL quan es llistin fitxers",
+ "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Comprovar els ACLs de cada fitxer o carpeta a dins d'un directori per filtrar els elements pels que l'usuari no tingui permís, provoca una disminució del rendiment",
"Timeout" : "Sense temps",
"SMB / CIFS using OC login" : "SMB / CIFS fent servir acreditació OC",
"Username as share" : "Nom d'usuari amb que es comparteix",
diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js
index 75f5bd3e4d2..6c38b9834dc 100644
--- a/apps/files_external/l10n/de.js
+++ b/apps/files_external/l10n/de.js
@@ -105,6 +105,8 @@ OC.L10N.register(
"SMB / CIFS" : "SMB / CIFS",
"Share" : "Share",
"Show hidden files" : "Versteckte Dateien anzeigen",
+ "Verify ACL access when listing files" : "Überprüft den ACL-Zugriff beim Auflisten von Dateien",
+ "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Überprüft die ACLs jeder Datei oder jedes Ordners in einem Verzeichnis, um Elemente herauszufiltern, für die der Benutzer keine Leseberechtigung hat. Dies führt zu Leistungseinbußen",
"Timeout" : "Zeitüberschreitung",
"SMB / CIFS using OC login" : "SMB / CIFS mit OC-Anmeldung",
"Username as share" : "Benutzername als Freigabe",
diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json
index ccdb6c54d58..b69fe24d030 100644
--- a/apps/files_external/l10n/de.json
+++ b/apps/files_external/l10n/de.json
@@ -103,6 +103,8 @@
"SMB / CIFS" : "SMB / CIFS",
"Share" : "Share",
"Show hidden files" : "Versteckte Dateien anzeigen",
+ "Verify ACL access when listing files" : "Überprüft den ACL-Zugriff beim Auflisten von Dateien",
+ "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Überprüft die ACLs jeder Datei oder jedes Ordners in einem Verzeichnis, um Elemente herauszufiltern, für die der Benutzer keine Leseberechtigung hat. Dies führt zu Leistungseinbußen",
"Timeout" : "Zeitüberschreitung",
"SMB / CIFS using OC login" : "SMB / CIFS mit OC-Anmeldung",
"Username as share" : "Benutzername als Freigabe",
diff --git a/apps/files_external/l10n/de_DE.js b/apps/files_external/l10n/de_DE.js
index 06ae33f39c8..2316fea4b7c 100644
--- a/apps/files_external/l10n/de_DE.js
+++ b/apps/files_external/l10n/de_DE.js
@@ -105,6 +105,8 @@ OC.L10N.register(
"SMB / CIFS" : "SMB / CIFS",
"Share" : "Share",
"Show hidden files" : "Versteckte Dateien anzeigen",
+ "Verify ACL access when listing files" : "Überprüft den ACL-Zugriff beim Auflisten von Dateien",
+ "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Überprüft die ACLs jeder Datei oder jedes Ordners in einem Verzeichnis, um Elemente herauszufiltern, für die der Benutzer keine Leseberechtigung hat. Dies führt zu Leistungseinbußen",
"Timeout" : "Zeitüberschreitung",
"SMB / CIFS using OC login" : "SMB / CIFS mit OC-Anmeldung",
"Username as share" : "Benutzername als Freigabe",
diff --git a/apps/files_external/l10n/de_DE.json b/apps/files_external/l10n/de_DE.json
index 37c0c9a0ccd..cb92c0d4c8f 100644
--- a/apps/files_external/l10n/de_DE.json
+++ b/apps/files_external/l10n/de_DE.json
@@ -103,6 +103,8 @@
"SMB / CIFS" : "SMB / CIFS",
"Share" : "Share",
"Show hidden files" : "Versteckte Dateien anzeigen",
+ "Verify ACL access when listing files" : "Überprüft den ACL-Zugriff beim Auflisten von Dateien",
+ "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Überprüft die ACLs jeder Datei oder jedes Ordners in einem Verzeichnis, um Elemente herauszufiltern, für die der Benutzer keine Leseberechtigung hat. Dies führt zu Leistungseinbußen",
"Timeout" : "Zeitüberschreitung",
"SMB / CIFS using OC login" : "SMB / CIFS mit OC-Anmeldung",
"Username as share" : "Benutzername als Freigabe",
diff --git a/apps/files_external/l10n/es.js b/apps/files_external/l10n/es.js
index cb7d58e8752..a563113c4a2 100644
--- a/apps/files_external/l10n/es.js
+++ b/apps/files_external/l10n/es.js
@@ -105,6 +105,8 @@ OC.L10N.register(
"SMB / CIFS" : "SMB / CIFS",
"Share" : "Compartir",
"Show hidden files" : "Mostrar archivos ocultos",
+ "Verify ACL access when listing files" : "Verificar acceso ACL al listar archivos",
+ "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Comprobar los ACL de cada archivo o carpeta en un directorio para filtrar los ítems en los que el usuario no tiene permisos de lectura. Provoca un descenso en el rendimiento.",
"Timeout" : "Se agotó el tiempo",
"SMB / CIFS using OC login" : "SMB / CIFS que usan acceso OC",
"Username as share" : "Nombre de usuario como compartir",
diff --git a/apps/files_external/l10n/es.json b/apps/files_external/l10n/es.json
index a3ec908bdc7..4be0e78d3c9 100644
--- a/apps/files_external/l10n/es.json
+++ b/apps/files_external/l10n/es.json
@@ -103,6 +103,8 @@
"SMB / CIFS" : "SMB / CIFS",
"Share" : "Compartir",
"Show hidden files" : "Mostrar archivos ocultos",
+ "Verify ACL access when listing files" : "Verificar acceso ACL al listar archivos",
+ "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Comprobar los ACL de cada archivo o carpeta en un directorio para filtrar los ítems en los que el usuario no tiene permisos de lectura. Provoca un descenso en el rendimiento.",
"Timeout" : "Se agotó el tiempo",
"SMB / CIFS using OC login" : "SMB / CIFS que usan acceso OC",
"Username as share" : "Nombre de usuario como compartir",
diff --git a/apps/files_external/l10n/it.js b/apps/files_external/l10n/it.js
index 4cca25b78b0..450651d55d4 100644
--- a/apps/files_external/l10n/it.js
+++ b/apps/files_external/l10n/it.js
@@ -106,6 +106,7 @@ OC.L10N.register(
"Share" : "Condividi",
"Show hidden files" : "Mostra i file nascosti",
"Verify ACL access when listing files" : "Verifica le ACL di accesso quando elenchi i file",
+ "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Controlla le ACL di ogni file o cartella all'interno di una cartella per filtrare elementi dove l'utente non ha permessi di lettura, implica una riduzione di prestazioni",
"Timeout" : "Tempo scaduto",
"SMB / CIFS using OC login" : "SMB / CIFS utilizzando le credenziali di OC",
"Username as share" : "Nome utente come condivisione",
diff --git a/apps/files_external/l10n/it.json b/apps/files_external/l10n/it.json
index 252df5c44aa..03a4dba1b82 100644
--- a/apps/files_external/l10n/it.json
+++ b/apps/files_external/l10n/it.json
@@ -104,6 +104,7 @@
"Share" : "Condividi",
"Show hidden files" : "Mostra i file nascosti",
"Verify ACL access when listing files" : "Verifica le ACL di accesso quando elenchi i file",
+ "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Controlla le ACL di ogni file o cartella all'interno di una cartella per filtrare elementi dove l'utente non ha permessi di lettura, implica una riduzione di prestazioni",
"Timeout" : "Tempo scaduto",
"SMB / CIFS using OC login" : "SMB / CIFS utilizzando le credenziali di OC",
"Username as share" : "Nome utente come condivisione",
diff --git a/apps/files_external/l10n/nl.js b/apps/files_external/l10n/nl.js
index cd4f352a875..887e3716dfd 100644
--- a/apps/files_external/l10n/nl.js
+++ b/apps/files_external/l10n/nl.js
@@ -105,6 +105,8 @@ OC.L10N.register(
"SMB / CIFS" : "SMB / CIFS",
"Share" : "Share",
"Show hidden files" : "Laat verborgen bestanden zien",
+ "Verify ACL access when listing files" : "Controleer ACL bij bestandsoverzichten",
+ "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Controleer de ACL's van elk bestand of elke map in een directory om objecten uit te filteren waar de gebruiker geen leesrechten heeft, betekent wel prestatieverlies",
"Timeout" : "Time-out",
"SMB / CIFS using OC login" : "SMB / CIFS via OC inlog",
"Username as share" : "Gebruikersnaam als share",
diff --git a/apps/files_external/l10n/nl.json b/apps/files_external/l10n/nl.json
index e86cad17685..a3805d66c02 100644
--- a/apps/files_external/l10n/nl.json
+++ b/apps/files_external/l10n/nl.json
@@ -103,6 +103,8 @@
"SMB / CIFS" : "SMB / CIFS",
"Share" : "Share",
"Show hidden files" : "Laat verborgen bestanden zien",
+ "Verify ACL access when listing files" : "Controleer ACL bij bestandsoverzichten",
+ "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Controleer de ACL's van elk bestand of elke map in een directory om objecten uit te filteren waar de gebruiker geen leesrechten heeft, betekent wel prestatieverlies",
"Timeout" : "Time-out",
"SMB / CIFS using OC login" : "SMB / CIFS via OC inlog",
"Username as share" : "Gebruikersnaam als share",
diff --git a/apps/files_sharing/l10n/he.js b/apps/files_sharing/l10n/he.js
index f9ca05ec38a..4ea312594ca 100644
--- a/apps/files_sharing/l10n/he.js
+++ b/apps/files_sharing/l10n/he.js
@@ -26,7 +26,9 @@ OC.L10N.register(
"Something happened. Unable to accept the share." : "משהו התרחש. לא ניתן לשחזר את השיתוף.",
"Reject share" : "דחיית השיתוף",
"Something happened. Unable to reject the share." : "משהו התרחש. לא ניתן לדחות את השיתוף.",
+ "Waiting…" : "בהמתנה…",
"error" : "שגיאה",
+ "finished" : "הסתיים",
"This will stop your current uploads." : "פעולה זו תעצור את השליחות הנוכחיות שלך.",
"Move or copy" : "העברה או העתקה",
"Download" : "הורדה",
@@ -73,10 +75,12 @@ OC.L10N.register(
"Shared with {user}" : "שותף עם {user}",
"Removed share for {user}" : "הוסר השיתוף עבור {user}",
"You removed yourself" : "הסרת את עצמך",
+ "{actor} removed themselves" : "{actor} הסירו את עצמם",
"{actor} shared with {user}" : "שותף עם {user} על ידי {actor}",
"{actor} removed share for {user}" : "השיתוף עבור {user} הוסר על ידי {actor}",
"Shared by {actor}" : "שותף על ידי {actor}",
"{actor} removed share" : "שיתוף הוסר על ידי {actor}",
+ "Share for {user} expired" : "תוקף השיתוף של {user} פג",
"Share expired" : "תוקף השיתוף פג",
"You shared {file} with {user}" : "שיתפת את {file} עם {user}",
"You removed {user} from {file}" : "הסרת את {user} מהקובץ {file}",
@@ -88,6 +92,7 @@ OC.L10N.register(
"A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "קובץ או תיקייה ששותפו בדוא״ל או דרך קישור ציבורי <strong>הורדו</strong>",
"A file or folder was shared from <strong>another server</strong>" : "קובץ או תיקייה שותפו מ- <strong>שרת אחר</strong>",
"A file or folder has been <strong>shared</strong>" : "קובץ או תיקייה <strong>שותפו<strong/>",
+ "Shared link" : "שותף קישור",
"Wrong share ID, share doesn't exist" : "מספר זיהוי שיתוף שגוי, שיתוף אינו קיים",
"Could not delete share" : "לא ניתן היה למחוק את השיתוף",
"Please specify a file or folder path" : "יש לספק נתיב לקובץ או תיקייה",
@@ -114,13 +119,19 @@ OC.L10N.register(
"Add to your Nextcloud" : "הוספה ל־Nextcloud שלך",
"Share API is disabled" : "שיתוף API מנוטרל",
"File sharing" : "שיתוף קבצים",
+ "Share will expire tomorrow" : "תוקף השיתוף יפוג מחר",
+ "One or more of your shares will expire tomorrow" : "תפוגתם של שיתוף אחד או יותר יפוג מחר",
"Accept" : "קבלה",
"Reject" : "דחייה",
"Sharing" : "שיתוף",
+ "Accept user and group shares by default" : "לקבל את שיתופי המשתמשים והקבוצות כבררת מחדל",
"Allow editing" : "לאפשר עריכה",
+ "Allow creating" : "לאפשר יצירה",
+ "Allow deleting" : "לאפשר מחיקה",
"Allow resharing" : "לאפשר שיתוף מחדש",
"Expiration date enforced" : "נאכף מועד תפוגה",
"Set expiration date" : "הגדרת תאריך תפוגה",
+ "Enter a date" : "נא למלא תאריך",
"Note to recipient" : "מסר לנמען",
"Unshare" : "ביטול שיתוף",
"group" : "קבוצה",
@@ -128,22 +139,55 @@ OC.L10N.register(
"remote" : "מרוחק",
"remote group" : "קבוצה מרוחקת",
"guest" : "אורח",
+ "Shared with the group {user} by {owner}" : "שותף עם הקבוצה {user} על ידי {owner}",
+ "Shared with the conversation {user} by {owner}" : "שותף עם הדיון {user} על ידי {owner}",
+ "Shared with {user} by {owner}" : "שותף עם {user} על ידי {owner}",
+ "Added by {initiator}" : "נוסף על ידי {initiator}",
+ "Via folder" : "דרך התיקייה",
+ "Internal link" : "קישור פנימי",
"Link copied" : "הקישור הועתק",
+ "Cannot copy, please copy the link manually" : "לא ניתן להעתיק, נא להעתיק את הקישור ידנית",
"Copy to clipboard" : "העתקה ללוח הגזירים",
- "Only works for users with access to this folder" : "עובד רק עבוד משתמשים עם גישה לתיקייה הזו",
+ "Only works for users with access to this folder" : "עובד רק עבור משתמשים עם גישה לתיקייה הזו",
+ "Only works for users with access to this file" : "עובד רק עבור משתמשים עם גישה לקובץ הזה",
+ "Please enter the following required information before creating the share" : "נא למלא את הפרטים הנחוצים הבאים בטרם יצירת השיתוף",
+ "Password protection (enforced)" : "הגנה בססמה (נאכף)",
"Password protection" : "Password protection",
"Enter a password" : "נא להקליד ססמה",
+ "Expiration date (enforced)" : "תאריך תפוגה (נאכף)",
"Cancel" : "ביטול",
"Read only" : "קריאה בלבד",
"Allow upload and editing" : "לאפשר העלאה ועריכה",
"File drop (upload only)" : "השלכת קבצים (העלאה בלבד)",
"Hide download" : "הסתרת הורדה",
"Password protect" : "הגנה בססמה",
+ "Video verification" : "אימות וידאו",
+ "Enter a note for the share recipient" : "נא להוסיף הערה למקבלי השיתוף",
"Add another link" : "הוספת קישור נוסף",
+ "Create a new share link" : "יצירת קישור שיתוף חדש",
+ "Shared via link by {initiator}" : "שותף דרך קישור על ידי {initiator}",
"Share link" : "שיתוף קישור",
+ "Error, please enter proper password and/or expiration date" : "שגיאה, נא למלא ססמה ו/או תאריך תפוגה כראוי",
+ "No recommendations. Start typing." : "אין המלצות. נא להתחיל להקליד.",
"Resharing is not allowed" : "שיתוף מחדש אסור",
+ "Name or email address …" : "שם או כתובת דוא״ל…",
+ "Name or federated cloud ID …" : "שם או מזהה ענן מאוגד…",
+ "Name, federated cloud ID or email address …" : "שם, מזהה ענן מאוגד או כתובת דוא״ל…",
+ "Name …" : "שם…",
+ "Searching …" : "מתבצע חיפוש…",
+ "No elements found." : "לא נמצאו רכיבים.",
"Search globally" : "חיפוש גלובלי",
+ "on {server}" : "על גבי {server}",
+ "Others with access" : "נוספים עם גישה",
+ "No other users with access found" : "לא נמצאו משתמשים נוספים עם גישה",
+ "Toggle list of others with access to this directory" : "החלפת מצב הנוספים עם גישה לתיקייה הזאת",
+ "Toggle list of others with access to this file" : "החלפת מצב הנוספים עם גישה לקובץ הזה",
+ "Unable to fetch inherited shares" : "לא ניתן לקבל את השיתופים שנורשו",
+ "Unable to load the shares list" : "לא ניתן לטעון את רשימת השיתופים",
+ "Expires {relativetime}" : "תפוגה: {relativetime}",
+ "this share just expired." : "תוקף השיתוף פג זה עתה.",
"Link to a file" : "קישור לקובץ",
+ "Error creating the share" : "יצירת השיתוף נכשלה",
"Shared" : "משותף",
"Share" : "שיתוף",
"Shared with" : "משותף עם",
@@ -168,6 +212,7 @@ OC.L10N.register(
"Upload files to %s" : "העלאת קבצים על %s",
"Note" : "פתק",
"Select or drop files" : "בחירה או השלכה של קבצים",
+ "Uploading files" : "מועלים קבצים",
"Uploaded files:" : "קבצים שהועלו:",
"By uploading files, you agree to the %1$sterms of service%2$s." : "עצם העלאתם של קבצים מביעה את הסכמתך ל%1$sתנאי השירות%2$s.",
"could not delete share" : "לא ניתן למחוק שיתוף",
diff --git a/apps/files_sharing/l10n/he.json b/apps/files_sharing/l10n/he.json
index cdcb68a40af..67b5e5a9ec1 100644
--- a/apps/files_sharing/l10n/he.json
+++ b/apps/files_sharing/l10n/he.json
@@ -24,7 +24,9 @@
"Something happened. Unable to accept the share." : "משהו התרחש. לא ניתן לשחזר את השיתוף.",
"Reject share" : "דחיית השיתוף",
"Something happened. Unable to reject the share." : "משהו התרחש. לא ניתן לדחות את השיתוף.",
+ "Waiting…" : "בהמתנה…",
"error" : "שגיאה",
+ "finished" : "הסתיים",
"This will stop your current uploads." : "פעולה זו תעצור את השליחות הנוכחיות שלך.",
"Move or copy" : "העברה או העתקה",
"Download" : "הורדה",
@@ -71,10 +73,12 @@
"Shared with {user}" : "שותף עם {user}",
"Removed share for {user}" : "הוסר השיתוף עבור {user}",
"You removed yourself" : "הסרת את עצמך",
+ "{actor} removed themselves" : "{actor} הסירו את עצמם",
"{actor} shared with {user}" : "שותף עם {user} על ידי {actor}",
"{actor} removed share for {user}" : "השיתוף עבור {user} הוסר על ידי {actor}",
"Shared by {actor}" : "שותף על ידי {actor}",
"{actor} removed share" : "שיתוף הוסר על ידי {actor}",
+ "Share for {user} expired" : "תוקף השיתוף של {user} פג",
"Share expired" : "תוקף השיתוף פג",
"You shared {file} with {user}" : "שיתפת את {file} עם {user}",
"You removed {user} from {file}" : "הסרת את {user} מהקובץ {file}",
@@ -86,6 +90,7 @@
"A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "קובץ או תיקייה ששותפו בדוא״ל או דרך קישור ציבורי <strong>הורדו</strong>",
"A file or folder was shared from <strong>another server</strong>" : "קובץ או תיקייה שותפו מ- <strong>שרת אחר</strong>",
"A file or folder has been <strong>shared</strong>" : "קובץ או תיקייה <strong>שותפו<strong/>",
+ "Shared link" : "שותף קישור",
"Wrong share ID, share doesn't exist" : "מספר זיהוי שיתוף שגוי, שיתוף אינו קיים",
"Could not delete share" : "לא ניתן היה למחוק את השיתוף",
"Please specify a file or folder path" : "יש לספק נתיב לקובץ או תיקייה",
@@ -112,13 +117,19 @@
"Add to your Nextcloud" : "הוספה ל־Nextcloud שלך",
"Share API is disabled" : "שיתוף API מנוטרל",
"File sharing" : "שיתוף קבצים",
+ "Share will expire tomorrow" : "תוקף השיתוף יפוג מחר",
+ "One or more of your shares will expire tomorrow" : "תפוגתם של שיתוף אחד או יותר יפוג מחר",
"Accept" : "קבלה",
"Reject" : "דחייה",
"Sharing" : "שיתוף",
+ "Accept user and group shares by default" : "לקבל את שיתופי המשתמשים והקבוצות כבררת מחדל",
"Allow editing" : "לאפשר עריכה",
+ "Allow creating" : "לאפשר יצירה",
+ "Allow deleting" : "לאפשר מחיקה",
"Allow resharing" : "לאפשר שיתוף מחדש",
"Expiration date enforced" : "נאכף מועד תפוגה",
"Set expiration date" : "הגדרת תאריך תפוגה",
+ "Enter a date" : "נא למלא תאריך",
"Note to recipient" : "מסר לנמען",
"Unshare" : "ביטול שיתוף",
"group" : "קבוצה",
@@ -126,22 +137,55 @@
"remote" : "מרוחק",
"remote group" : "קבוצה מרוחקת",
"guest" : "אורח",
+ "Shared with the group {user} by {owner}" : "שותף עם הקבוצה {user} על ידי {owner}",
+ "Shared with the conversation {user} by {owner}" : "שותף עם הדיון {user} על ידי {owner}",
+ "Shared with {user} by {owner}" : "שותף עם {user} על ידי {owner}",
+ "Added by {initiator}" : "נוסף על ידי {initiator}",
+ "Via folder" : "דרך התיקייה",
+ "Internal link" : "קישור פנימי",
"Link copied" : "הקישור הועתק",
+ "Cannot copy, please copy the link manually" : "לא ניתן להעתיק, נא להעתיק את הקישור ידנית",
"Copy to clipboard" : "העתקה ללוח הגזירים",
- "Only works for users with access to this folder" : "עובד רק עבוד משתמשים עם גישה לתיקייה הזו",
+ "Only works for users with access to this folder" : "עובד רק עבור משתמשים עם גישה לתיקייה הזו",
+ "Only works for users with access to this file" : "עובד רק עבור משתמשים עם גישה לקובץ הזה",
+ "Please enter the following required information before creating the share" : "נא למלא את הפרטים הנחוצים הבאים בטרם יצירת השיתוף",
+ "Password protection (enforced)" : "הגנה בססמה (נאכף)",
"Password protection" : "Password protection",
"Enter a password" : "נא להקליד ססמה",
+ "Expiration date (enforced)" : "תאריך תפוגה (נאכף)",
"Cancel" : "ביטול",
"Read only" : "קריאה בלבד",
"Allow upload and editing" : "לאפשר העלאה ועריכה",
"File drop (upload only)" : "השלכת קבצים (העלאה בלבד)",
"Hide download" : "הסתרת הורדה",
"Password protect" : "הגנה בססמה",
+ "Video verification" : "אימות וידאו",
+ "Enter a note for the share recipient" : "נא להוסיף הערה למקבלי השיתוף",
"Add another link" : "הוספת קישור נוסף",
+ "Create a new share link" : "יצירת קישור שיתוף חדש",
+ "Shared via link by {initiator}" : "שותף דרך קישור על ידי {initiator}",
"Share link" : "שיתוף קישור",
+ "Error, please enter proper password and/or expiration date" : "שגיאה, נא למלא ססמה ו/או תאריך תפוגה כראוי",
+ "No recommendations. Start typing." : "אין המלצות. נא להתחיל להקליד.",
"Resharing is not allowed" : "שיתוף מחדש אסור",
+ "Name or email address …" : "שם או כתובת דוא״ל…",
+ "Name or federated cloud ID …" : "שם או מזהה ענן מאוגד…",
+ "Name, federated cloud ID or email address …" : "שם, מזהה ענן מאוגד או כתובת דוא״ל…",
+ "Name …" : "שם…",
+ "Searching …" : "מתבצע חיפוש…",
+ "No elements found." : "לא נמצאו רכיבים.",
"Search globally" : "חיפוש גלובלי",
+ "on {server}" : "על גבי {server}",
+ "Others with access" : "נוספים עם גישה",
+ "No other users with access found" : "לא נמצאו משתמשים נוספים עם גישה",
+ "Toggle list of others with access to this directory" : "החלפת מצב הנוספים עם גישה לתיקייה הזאת",
+ "Toggle list of others with access to this file" : "החלפת מצב הנוספים עם גישה לקובץ הזה",
+ "Unable to fetch inherited shares" : "לא ניתן לקבל את השיתופים שנורשו",
+ "Unable to load the shares list" : "לא ניתן לטעון את רשימת השיתופים",
+ "Expires {relativetime}" : "תפוגה: {relativetime}",
+ "this share just expired." : "תוקף השיתוף פג זה עתה.",
"Link to a file" : "קישור לקובץ",
+ "Error creating the share" : "יצירת השיתוף נכשלה",
"Shared" : "משותף",
"Share" : "שיתוף",
"Shared with" : "משותף עם",
@@ -166,6 +210,7 @@
"Upload files to %s" : "העלאת קבצים על %s",
"Note" : "פתק",
"Select or drop files" : "בחירה או השלכה של קבצים",
+ "Uploading files" : "מועלים קבצים",
"Uploaded files:" : "קבצים שהועלו:",
"By uploading files, you agree to the %1$sterms of service%2$s." : "עצם העלאתם של קבצים מביעה את הסכמתך ל%1$sתנאי השירות%2$s.",
"could not delete share" : "לא ניתן למחוק שיתוף",
diff --git a/apps/files_sharing/lib/Controller/ShareController.php b/apps/files_sharing/lib/Controller/ShareController.php
index 2ea57068f25..3e694dc3d7d 100644
--- a/apps/files_sharing/lib/Controller/ShareController.php
+++ b/apps/files_sharing/lib/Controller/ShareController.php
@@ -539,6 +539,7 @@ class ShareController extends AuthPublicShareController {
/**
* @PublicPage
* @NoCSRFRequired
+ * @NoSameSiteCookieRequired
*
* @param string $token
* @param string $files
diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js
index 2d53ee5b52b..c9fb3378423 100644
--- a/apps/settings/l10n/fr.js
+++ b/apps/settings/l10n/fr.js
@@ -132,7 +132,7 @@ OC.L10N.register(
"Save changes" : "Enregistrer les modifications",
"This app is supported via your current Nextcloud subscription." : "Vous supportez cette application grâce à votre abonnement Nextcloud.",
"Supported" : "Pris en charge",
- "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les applications mise sen avant sont développées par la communauté. Elles proposent des fonctionnalités centrales et sont prêtes pour la production.",
+ "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les applications mises en avant sont développées par la communauté. Elles proposent des fonctionnalités centrales et sont prêtes pour la production.",
"Featured" : "Mises en avant",
"by" : "par",
"Update to {version}" : "Mise à jour vers {version}",
diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json
index 04b8beb800e..8ed0257540c 100644
--- a/apps/settings/l10n/fr.json
+++ b/apps/settings/l10n/fr.json
@@ -130,7 +130,7 @@
"Save changes" : "Enregistrer les modifications",
"This app is supported via your current Nextcloud subscription." : "Vous supportez cette application grâce à votre abonnement Nextcloud.",
"Supported" : "Pris en charge",
- "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les applications mise sen avant sont développées par la communauté. Elles proposent des fonctionnalités centrales et sont prêtes pour la production.",
+ "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Les applications mises en avant sont développées par la communauté. Elles proposent des fonctionnalités centrales et sont prêtes pour la production.",
"Featured" : "Mises en avant",
"by" : "par",
"Update to {version}" : "Mise à jour vers {version}",
diff --git a/apps/settings/l10n/he.js b/apps/settings/l10n/he.js
index fc6cf9deb13..8ca38f5dec0 100644
--- a/apps/settings/l10n/he.js
+++ b/apps/settings/l10n/he.js
@@ -38,10 +38,16 @@ OC.L10N.register(
"{actor} added {user} to group {group}" : "ההוספה של {user} לקבוצה {group} נעשתה על ידי {actor}",
"An administrator added you to group {group}" : "נוספת לקבוצה {group} על ידי מנהל",
"An administrator added {user} to group {group}" : "מנהל הוסיף את {user} לקבוצה {group}",
+ "{actor} removed you from group {group}" : "הוסרת מהקבוצה {group} על ידי {actor}",
+ "You removed {user} from group {group}" : "הסרת את {user} מהקבוצה {group}",
+ "{actor} removed {user} from group {group}" : "ההסרה של {user} מהקבוצה {group} בוצעה על ידי {actor}",
+ "An administrator removed you from group {group}" : "מנהל הסיר אותך מהקבוצה {group}",
+ "An administrator removed {user} from group {group}" : "מנהל הסיר את {user} מהקבוצה {group}",
"Your <strong>group memberships</strong> were modified" : "<strong>חברותך בקבוצות</strong> השתנתה",
"{actor} changed your password" : "הססמה שלך הוחלפה על ידי {actor}",
"You changed your password" : "שינית את הססמה שלך",
"Your password was reset by an administrator" : "הססמה שלך אופסה על ידי מנהל",
+ "Your password was reset" : "הססמה שלך אופסה",
"{actor} changed your email address" : "כתובת הדוא״ל שלך נערכה על ידי {actor}",
"You changed your email address" : "שינית את כתובת הדוא״ל שלך",
"Your email address was changed by an administrator" : "כתובת הדוא״ל שלך נערכה על ידי המנהל",
@@ -103,16 +109,28 @@ OC.L10N.register(
"Mobile & desktop" : "נייד ושולחן עבודה",
"Create" : "יצירה",
"Change" : "שינוי",
+ "Reshare" : "שיתוף מחדש",
"Unlimited" : "ללא הגבלה",
"Verifying" : "מתבצע אימות",
+ "Nextcloud settings" : "הגדרות Nextcloud",
+ "Enforce two-factor authentication" : "אכיפת אימות דו־שלבי",
"Limit to groups" : "הגבלה לקבוצות",
+ "Enforcement of two-factor authentication can be set for certain groups only." : "ניתן להגדיר אכיפה של אימות דו־שלבי על קבוצות מסוימות בלבד.",
+ "Two-factor authentication is enforced for all members of the following groups." : "אימות דו־שלבי נאכף על כל החברים בקבוצות הבאות.",
+ "Enforced groups" : "קבוצות נאכפות",
+ "Two-factor authentication is not enforced for members of the following groups." : "אימות דו־שלבי לא נאכף על החברים בקבוצות הבאות.",
+ "Excluded groups" : "קבוצות חריגות",
"Save changes" : "שמירת שינויים",
+ "This app is supported via your current Nextcloud subscription." : "יישומון זה נתמך על ידי מינוי ה־Nextcloud הנוכחי שלך.",
+ "Supported" : "נתמך",
+ "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "היישומונים המומלצים מפותחים על ידי ובתוך הקהילה. הם מציעים תכונות ליבה מסוימות והן מוכנות לשימוש יומיומי.",
"Featured" : "מומלץ",
"by" : "מאת",
"Update to {version}" : "עדכון ל־{version}",
"Remove" : "הסרה",
"Disable" : "ניטרול",
"All" : "הכל",
+ "Limit app usage to groups" : "הגבלת השימוש ביישומון לקבוצות",
"No results" : "אין תוצאות",
"This app has no minimum Nextcloud version assigned. This will be an error in the future." : "ליישומון זה לא מוקצית גרסת Nextcloud מזערית. מצב כזה עשוי להוביל לשגיאה בעתיד.",
"This app has no maximum Nextcloud version assigned. This will be an error in the future." : "ליישומון זה לא מוקצית גרסת Nextcloud מרבית. מצב כזה עשוי להוביל לשגיאה בעתיד.",
@@ -124,30 +142,42 @@ OC.L10N.register(
"Admin documentation" : "תיעוד מנהל",
"Developer documentation" : "תיעוד מפתח",
"Update to {update}" : "עדכון ל־{version}",
+ "Update all" : "לעדכן הכול",
"Results from other categories" : "תוצאות מקטגוריות אחרות",
"No apps found for your version" : "לא נמצאו יישומים לגרסה שלך",
"Disable all" : "להשבית הכול",
"Enable all" : "הפעלת הכול",
+ "_%n app has an update available_::_%n apps have an update available_" : ["לאחד היישומונים יש עדכון זמין","ל־%n יישומונים יש עדכון זמין","ל־%n יישומונים יש עדכון זמין","ל־%n יישומונים יש עדכון זמין"],
"Download and enable" : "להוריד ולהפעיל",
"Enable" : "הפעלה",
"Enable untested app" : "לאפשר יישומון שלא נבדק",
"The app will be downloaded from the app store" : "היישום ירד מחנות היישומים",
"This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "היישומון הזה לא מסומן כנתמך בגרסת ה־Nextcloud. עדיין יתאפשר לך להמשיך ולהתקין את היישומון. נא לשים לב שיכול להיות שהיישומון לא יעבוד כצפוי.",
+ "Marked for remote wipe" : "מסומן להשמדת נתונים מרחוק",
+ "Device settings" : "הגדרות מכשיר",
"Allow filesystem access" : "לאפשר גישה למערכת הקבצים",
"Rename" : "שינוי שם",
"Revoke" : "שלילה",
+ "Wipe device" : "השמדת נתוני מכשיר",
+ "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "שלילת האסימון הזו עשויה למנוע את השמדת נתוני המכשיר שלך אם ההשמדה טרם החלה.",
"Internet Explorer" : "Internet Explorer",
"Edge" : "Edge",
"Firefox" : "Firefox",
"Google Chrome" : "Google Chrome",
"Safari" : "Safari",
"Google Chrome for Android" : "Google Chrome עבור Android",
+ "iPhone" : "iPhone",
+ "iPad" : "iPad",
+ "Nextcloud iOS app" : "יישומון iOS של Nextcloud",
+ "Nextcloud Android app" : "יישומון Android של Nextcloud",
"Sync client - {os}" : "לקוח סנכרון - {os}",
"This session" : "הפעלה זו",
"Device" : "התקן",
"Last activity" : "פעילות אחרונה",
"Devices & sessions" : "התקנים והפעלות",
"Web, desktop and mobile clients currently logged in to your account." : "לקוחות שמחוברים כעת לחשבון שלך דרך דפדפן, שולחן עבודה והתקנים ניידים.",
+ "Do you really want to wipe your data from this device?" : "להשמיד את הנתונים שלך במכשיר הזה?",
+ "Confirm wipe" : "אישור ההשמדה",
"Error while creating device token" : "שגיאה בזמן יצירת מחרוזת התקן",
"Error while deleting the token" : "שגיאה בזמן מחיקת המחרוזת",
"App name" : "שם יישום",
diff --git a/apps/settings/l10n/he.json b/apps/settings/l10n/he.json
index adf2f2e2cb7..0a3ec0f357d 100644
--- a/apps/settings/l10n/he.json
+++ b/apps/settings/l10n/he.json
@@ -36,10 +36,16 @@
"{actor} added {user} to group {group}" : "ההוספה של {user} לקבוצה {group} נעשתה על ידי {actor}",
"An administrator added you to group {group}" : "נוספת לקבוצה {group} על ידי מנהל",
"An administrator added {user} to group {group}" : "מנהל הוסיף את {user} לקבוצה {group}",
+ "{actor} removed you from group {group}" : "הוסרת מהקבוצה {group} על ידי {actor}",
+ "You removed {user} from group {group}" : "הסרת את {user} מהקבוצה {group}",
+ "{actor} removed {user} from group {group}" : "ההסרה של {user} מהקבוצה {group} בוצעה על ידי {actor}",
+ "An administrator removed you from group {group}" : "מנהל הסיר אותך מהקבוצה {group}",
+ "An administrator removed {user} from group {group}" : "מנהל הסיר את {user} מהקבוצה {group}",
"Your <strong>group memberships</strong> were modified" : "<strong>חברותך בקבוצות</strong> השתנתה",
"{actor} changed your password" : "הססמה שלך הוחלפה על ידי {actor}",
"You changed your password" : "שינית את הססמה שלך",
"Your password was reset by an administrator" : "הססמה שלך אופסה על ידי מנהל",
+ "Your password was reset" : "הססמה שלך אופסה",
"{actor} changed your email address" : "כתובת הדוא״ל שלך נערכה על ידי {actor}",
"You changed your email address" : "שינית את כתובת הדוא״ל שלך",
"Your email address was changed by an administrator" : "כתובת הדוא״ל שלך נערכה על ידי המנהל",
@@ -101,16 +107,28 @@
"Mobile & desktop" : "נייד ושולחן עבודה",
"Create" : "יצירה",
"Change" : "שינוי",
+ "Reshare" : "שיתוף מחדש",
"Unlimited" : "ללא הגבלה",
"Verifying" : "מתבצע אימות",
+ "Nextcloud settings" : "הגדרות Nextcloud",
+ "Enforce two-factor authentication" : "אכיפת אימות דו־שלבי",
"Limit to groups" : "הגבלה לקבוצות",
+ "Enforcement of two-factor authentication can be set for certain groups only." : "ניתן להגדיר אכיפה של אימות דו־שלבי על קבוצות מסוימות בלבד.",
+ "Two-factor authentication is enforced for all members of the following groups." : "אימות דו־שלבי נאכף על כל החברים בקבוצות הבאות.",
+ "Enforced groups" : "קבוצות נאכפות",
+ "Two-factor authentication is not enforced for members of the following groups." : "אימות דו־שלבי לא נאכף על החברים בקבוצות הבאות.",
+ "Excluded groups" : "קבוצות חריגות",
"Save changes" : "שמירת שינויים",
+ "This app is supported via your current Nextcloud subscription." : "יישומון זה נתמך על ידי מינוי ה־Nextcloud הנוכחי שלך.",
+ "Supported" : "נתמך",
+ "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "היישומונים המומלצים מפותחים על ידי ובתוך הקהילה. הם מציעים תכונות ליבה מסוימות והן מוכנות לשימוש יומיומי.",
"Featured" : "מומלץ",
"by" : "מאת",
"Update to {version}" : "עדכון ל־{version}",
"Remove" : "הסרה",
"Disable" : "ניטרול",
"All" : "הכל",
+ "Limit app usage to groups" : "הגבלת השימוש ביישומון לקבוצות",
"No results" : "אין תוצאות",
"This app has no minimum Nextcloud version assigned. This will be an error in the future." : "ליישומון זה לא מוקצית גרסת Nextcloud מזערית. מצב כזה עשוי להוביל לשגיאה בעתיד.",
"This app has no maximum Nextcloud version assigned. This will be an error in the future." : "ליישומון זה לא מוקצית גרסת Nextcloud מרבית. מצב כזה עשוי להוביל לשגיאה בעתיד.",
@@ -122,30 +140,42 @@
"Admin documentation" : "תיעוד מנהל",
"Developer documentation" : "תיעוד מפתח",
"Update to {update}" : "עדכון ל־{version}",
+ "Update all" : "לעדכן הכול",
"Results from other categories" : "תוצאות מקטגוריות אחרות",
"No apps found for your version" : "לא נמצאו יישומים לגרסה שלך",
"Disable all" : "להשבית הכול",
"Enable all" : "הפעלת הכול",
+ "_%n app has an update available_::_%n apps have an update available_" : ["לאחד היישומונים יש עדכון זמין","ל־%n יישומונים יש עדכון זמין","ל־%n יישומונים יש עדכון זמין","ל־%n יישומונים יש עדכון זמין"],
"Download and enable" : "להוריד ולהפעיל",
"Enable" : "הפעלה",
"Enable untested app" : "לאפשר יישומון שלא נבדק",
"The app will be downloaded from the app store" : "היישום ירד מחנות היישומים",
"This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "היישומון הזה לא מסומן כנתמך בגרסת ה־Nextcloud. עדיין יתאפשר לך להמשיך ולהתקין את היישומון. נא לשים לב שיכול להיות שהיישומון לא יעבוד כצפוי.",
+ "Marked for remote wipe" : "מסומן להשמדת נתונים מרחוק",
+ "Device settings" : "הגדרות מכשיר",
"Allow filesystem access" : "לאפשר גישה למערכת הקבצים",
"Rename" : "שינוי שם",
"Revoke" : "שלילה",
+ "Wipe device" : "השמדת נתוני מכשיר",
+ "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "שלילת האסימון הזו עשויה למנוע את השמדת נתוני המכשיר שלך אם ההשמדה טרם החלה.",
"Internet Explorer" : "Internet Explorer",
"Edge" : "Edge",
"Firefox" : "Firefox",
"Google Chrome" : "Google Chrome",
"Safari" : "Safari",
"Google Chrome for Android" : "Google Chrome עבור Android",
+ "iPhone" : "iPhone",
+ "iPad" : "iPad",
+ "Nextcloud iOS app" : "יישומון iOS של Nextcloud",
+ "Nextcloud Android app" : "יישומון Android של Nextcloud",
"Sync client - {os}" : "לקוח סנכרון - {os}",
"This session" : "הפעלה זו",
"Device" : "התקן",
"Last activity" : "פעילות אחרונה",
"Devices & sessions" : "התקנים והפעלות",
"Web, desktop and mobile clients currently logged in to your account." : "לקוחות שמחוברים כעת לחשבון שלך דרך דפדפן, שולחן עבודה והתקנים ניידים.",
+ "Do you really want to wipe your data from this device?" : "להשמיד את הנתונים שלך במכשיר הזה?",
+ "Confirm wipe" : "אישור ההשמדה",
"Error while creating device token" : "שגיאה בזמן יצירת מחרוזת התקן",
"Error while deleting the token" : "שגיאה בזמן מחיקת המחרוזת",
"App name" : "שם יישום",
diff --git a/apps/settings/l10n/sk.js b/apps/settings/l10n/sk.js
index 3bcafefb3cc..d79c09849d7 100644
--- a/apps/settings/l10n/sk.js
+++ b/apps/settings/l10n/sk.js
@@ -211,7 +211,9 @@ OC.L10N.register(
"Common languages" : "Spoločné jazyky",
"All languages" : "Všetky jazyky",
"Password change is disabled because the master key is disabled" : "Zmena hesla je zablokovaná pretože hlavný kľúč je vypnutý",
+ "Name your device" : "Pomenujte svoje zariadenie",
"Add" : "Pridať",
+ "Adding your device …" : "Pridáva sa zariadenie...",
"Unnamed device" : "Nepomenované zariadenie",
"Your apps" : "Vaše aplikácie",
"Active apps" : "Aktívne aplikácie",
diff --git a/apps/settings/l10n/sk.json b/apps/settings/l10n/sk.json
index 85f25e78ba1..3386b5a5ec5 100644
--- a/apps/settings/l10n/sk.json
+++ b/apps/settings/l10n/sk.json
@@ -209,7 +209,9 @@
"Common languages" : "Spoločné jazyky",
"All languages" : "Všetky jazyky",
"Password change is disabled because the master key is disabled" : "Zmena hesla je zablokovaná pretože hlavný kľúč je vypnutý",
+ "Name your device" : "Pomenujte svoje zariadenie",
"Add" : "Pridať",
+ "Adding your device …" : "Pridáva sa zariadenie...",
"Unnamed device" : "Nepomenované zariadenie",
"Your apps" : "Vaše aplikácie",
"Active apps" : "Aktívne aplikácie",
diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js
index 4ab518196a0..af2ea88ca75 100644
--- a/apps/settings/l10n/uk.js
+++ b/apps/settings/l10n/uk.js
@@ -299,7 +299,7 @@ OC.L10N.register(
"Default share permissions" : "Дозволи на публікування по замовчуванню",
"Personal" : "Особисте",
"Administration" : "Адміністрування",
- "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Розроблено {communityopen}спільнотою Nextcloud{linkclose}, {githubopen}сирцевий код{linkclose} ліцензований під ліцензією {licenseopen}AGPL{linkclose}.",
+ "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Розроблено {communityopen}спільнотою Nextcloud{linkclose}, {githubopen}початковий код{linkclose} ліцензований під ліцензією {licenseopen}AGPL{linkclose}.",
"Profile picture" : "Зображення облікового запису",
"Upload new" : "Завантажити нове",
"Select from Files" : "Вибрати з файлів",
diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json
index c3a2fead986..445ca037dca 100644
--- a/apps/settings/l10n/uk.json
+++ b/apps/settings/l10n/uk.json
@@ -297,7 +297,7 @@
"Default share permissions" : "Дозволи на публікування по замовчуванню",
"Personal" : "Особисте",
"Administration" : "Адміністрування",
- "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Розроблено {communityopen}спільнотою Nextcloud{linkclose}, {githubopen}сирцевий код{linkclose} ліцензований під ліцензією {licenseopen}AGPL{linkclose}.",
+ "Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Розроблено {communityopen}спільнотою Nextcloud{linkclose}, {githubopen}початковий код{linkclose} ліцензований під ліцензією {licenseopen}AGPL{linkclose}.",
"Profile picture" : "Зображення облікового запису",
"Upload new" : "Завантажити нове",
"Select from Files" : "Вибрати з файлів",
diff --git a/apps/sharebymail/l10n/sk.js b/apps/sharebymail/l10n/sk.js
index f8790dd222f..89f0792dc1b 100644
--- a/apps/sharebymail/l10n/sk.js
+++ b/apps/sharebymail/l10n/sk.js
@@ -5,6 +5,10 @@ OC.L10N.register(
"Shared with {email}" : "Sprístupnené pre {email}",
"Shared with %1$s by %2$s" : "Sprístupnené používateľovi %1$s používateľom %2$s",
"Shared with {email} by {actor}" : "Sprístupnené {email} používateľom {actor}",
+ "Unshared from %1$s" : "Zdieľanie zrušené od %1$s",
+ "Unshared from {email}" : "Zdieľanie zrušené od {email}",
+ "Unshared from %1$s by %2$s" : "%2$s zrušil zdieľanie od %1$s",
+ "Unshared from {email} by {actor}" : "{actor} zrušil zdieľanie od {email}",
"Password for mail share sent to %1$s" : "Heslo na sprístupnenie bolo zaslané %1$s",
"Password for mail share sent to {email}" : "Heslo na sprístupnenie bolo zaslané {email}",
"Password for mail share sent to you" : "Heslo na sprístupnenie Vám bolo zaslané",
@@ -12,6 +16,10 @@ OC.L10N.register(
"You shared {file} with {email} by mail" : "Sprístupnili ste {file} používateľovi {email} pomocou emailu",
"%3$s shared %1$s with %2$s by mail" : "%3$s sprístupnil %1$s používateľovi %2$s pomocou emailu",
"{actor} shared {file} with {email} by mail" : "{actor} sprístupnil {file} používateľovi {email} pomocou emailu",
+ "You unshared %1$s from %2$s by mail" : "E-mailom ste zrušili zdieľanie %1$s od %2$s",
+ "You unshared {file} from {email} by mail" : "E-mailom ste zrušili zdieľanie {file} od {email}",
+ "%3$s unshared %1$s from %2$s by mail" : "%3$s e-mailom zrušil zdieľanie %1$s od %2$s",
+ "{actor} unshared {file} from {email} by mail" : "{actor} e-mailom zrušil zdieľanie {file} od {email}",
"Password to access %1$s was sent to %2s" : "Heslo na sprístupnenie %1$s bolo zaslané %2s",
"Password to access {file} was sent to {email}" : "Heslo na sprístupnenie {file} bolo zaslané na {email}",
"Password to access %1$s was sent to you" : "Heslo na sprístupnenie %1$s Vám bolo zaslané",
@@ -32,10 +40,13 @@ OC.L10N.register(
"%1$s shared »%2$s« with you and wants to add:" : "%1$s vám sprístupnil »%2$s« s poznámkou:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s vám sprístupnil »%2$s« s poznámkou",
"»%s« added a note to a file shared with you" : "»%s« pridal poznámku k súboru ktorý s Vami zdieľa",
+ "You just shared »%1$s« with %2$s. The share was already sent to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Práve ste zdieľali „%1$s“ s %2$s. Zdieľanie už bolo odoslané príjemcovi. Z dôvodu bezpečnostných pravidiel definovaných správcom %3$s musí byť každá zdieľaná položka chránená heslom, ktoré nemôže byť priamo poslané príjemcovi. Preto musíte heslo poslať príjemcovi ručne.",
+ "Password to access »%1$s« shared by you with %2$s" : "Heslo pre prístup k „%1$s“, ktoré zdieľate s %2$s",
"This is the password:" : "Toto je heslo:",
"You can choose a different password at any time in the share dialog." : "Kedykoľvek môžete vybrať iné heslo v okne zdieľania.",
"Could not find share" : "Nebolo možné nájsť sprístupnenie",
"Share by mail" : "Sprístupniť e-mailom",
+ "Share provider which allows you to share files by mail" : "Poskytovateľ zdieľania umožňuje zdieľať súbory pomocou e-mailu",
"Allows users to share a personalized link to a file or folder by putting in an email address." : "Povoľuje používateľom zdieľať personalizovaný odkaz na súbor alebo priečinok zadaním e-mailovej adresy.",
"Send password by mail" : "Odoslať heslo e-mailom",
"Enforce password protection" : "Vynútiť ochranu heslom"
diff --git a/apps/sharebymail/l10n/sk.json b/apps/sharebymail/l10n/sk.json
index 90eff20c74d..6cb5576d1a0 100644
--- a/apps/sharebymail/l10n/sk.json
+++ b/apps/sharebymail/l10n/sk.json
@@ -3,6 +3,10 @@
"Shared with {email}" : "Sprístupnené pre {email}",
"Shared with %1$s by %2$s" : "Sprístupnené používateľovi %1$s používateľom %2$s",
"Shared with {email} by {actor}" : "Sprístupnené {email} používateľom {actor}",
+ "Unshared from %1$s" : "Zdieľanie zrušené od %1$s",
+ "Unshared from {email}" : "Zdieľanie zrušené od {email}",
+ "Unshared from %1$s by %2$s" : "%2$s zrušil zdieľanie od %1$s",
+ "Unshared from {email} by {actor}" : "{actor} zrušil zdieľanie od {email}",
"Password for mail share sent to %1$s" : "Heslo na sprístupnenie bolo zaslané %1$s",
"Password for mail share sent to {email}" : "Heslo na sprístupnenie bolo zaslané {email}",
"Password for mail share sent to you" : "Heslo na sprístupnenie Vám bolo zaslané",
@@ -10,6 +14,10 @@
"You shared {file} with {email} by mail" : "Sprístupnili ste {file} používateľovi {email} pomocou emailu",
"%3$s shared %1$s with %2$s by mail" : "%3$s sprístupnil %1$s používateľovi %2$s pomocou emailu",
"{actor} shared {file} with {email} by mail" : "{actor} sprístupnil {file} používateľovi {email} pomocou emailu",
+ "You unshared %1$s from %2$s by mail" : "E-mailom ste zrušili zdieľanie %1$s od %2$s",
+ "You unshared {file} from {email} by mail" : "E-mailom ste zrušili zdieľanie {file} od {email}",
+ "%3$s unshared %1$s from %2$s by mail" : "%3$s e-mailom zrušil zdieľanie %1$s od %2$s",
+ "{actor} unshared {file} from {email} by mail" : "{actor} e-mailom zrušil zdieľanie {file} od {email}",
"Password to access %1$s was sent to %2s" : "Heslo na sprístupnenie %1$s bolo zaslané %2s",
"Password to access {file} was sent to {email}" : "Heslo na sprístupnenie {file} bolo zaslané na {email}",
"Password to access %1$s was sent to you" : "Heslo na sprístupnenie %1$s Vám bolo zaslané",
@@ -30,10 +38,13 @@
"%1$s shared »%2$s« with you and wants to add:" : "%1$s vám sprístupnil »%2$s« s poznámkou:",
"%1$s shared »%2$s« with you and wants to add" : "%1$s vám sprístupnil »%2$s« s poznámkou",
"»%s« added a note to a file shared with you" : "»%s« pridal poznámku k súboru ktorý s Vami zdieľa",
+ "You just shared »%1$s« with %2$s. The share was already sent to the recipient. Due to the security policies defined by the administrator of %3$s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient." : "Práve ste zdieľali „%1$s“ s %2$s. Zdieľanie už bolo odoslané príjemcovi. Z dôvodu bezpečnostných pravidiel definovaných správcom %3$s musí byť každá zdieľaná položka chránená heslom, ktoré nemôže byť priamo poslané príjemcovi. Preto musíte heslo poslať príjemcovi ručne.",
+ "Password to access »%1$s« shared by you with %2$s" : "Heslo pre prístup k „%1$s“, ktoré zdieľate s %2$s",
"This is the password:" : "Toto je heslo:",
"You can choose a different password at any time in the share dialog." : "Kedykoľvek môžete vybrať iné heslo v okne zdieľania.",
"Could not find share" : "Nebolo možné nájsť sprístupnenie",
"Share by mail" : "Sprístupniť e-mailom",
+ "Share provider which allows you to share files by mail" : "Poskytovateľ zdieľania umožňuje zdieľať súbory pomocou e-mailu",
"Allows users to share a personalized link to a file or folder by putting in an email address." : "Povoľuje používateľom zdieľať personalizovaný odkaz na súbor alebo priečinok zadaním e-mailovej adresy.",
"Send password by mail" : "Odoslať heslo e-mailom",
"Enforce password protection" : "Vynútiť ochranu heslom"
diff --git a/apps/twofactor_backupcodes/l10n/sk.js b/apps/twofactor_backupcodes/l10n/sk.js
index 2ccb5a0b897..516b90e3d2e 100644
--- a/apps/twofactor_backupcodes/l10n/sk.js
+++ b/apps/twofactor_backupcodes/l10n/sk.js
@@ -4,17 +4,24 @@ OC.L10N.register(
"You created two-factor backup codes for your account" : "Vytvorili ste záložné kódy dvojfaktorového overovania pre váš účet",
"Second-factor backup codes" : "Dvojfaktorové záložné kódy",
"Generate backup codes" : "Vytvoriť záložné kódy",
+ "You enabled two-factor authentication but did not generate backup codes yet. They are needed to restore access to your account in case you lose your second factor." : "Povolili ste dvojfaktorové overenie totožnosti, zatiaľ ste však nevygenerovali záložné kódy. V prípade straty druhého faktora sú potrebné na obnovenie prístupu k vášmu účtu.",
"Backup code" : "Záložný kód",
"Use backup code" : "Použiť záložný kód",
"Two factor backup codes" : "Záložné kódy pre dvojfaktorové overovanie",
"A two-factor auth backup codes provider" : "Poskytovateľ záložných kódov pre dvojfaktorové overovanie",
+ "Backup codes have been generated. {used} of {total} codes have been used." : "Boli vygenerované záložné kódy. Boli použité {použité} z {celkom} kódov.",
"These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Tu sú vaše záložné kódy. Uložte si ich prosím alebo vytlačte, pretože ich nebude možné neskôr znovu zobraziť.",
"Save backup codes" : "Uložiť záložné kódy",
"Print backup codes" : "Vytlačiť záložné kódy",
"Regenerate backup codes" : "Vytvoriť nové záložné kódy",
"If you regenerate backup codes, you automatically invalidate old codes." : "Ak vytvoríte nové záložné kódy, staré sa automaticky zneplatnia.",
"An error occurred while generating your backup codes" : "Pri vytváraní záložných kódov nastala chyba.",
+ "{name} backup codes" : "{name} záložné kódy",
+ "Use one of the backup codes you saved when setting up two-factor authentication." : "Pri nastavovaní dvojfaktorového overovania totožnosti použite jeden zo záložných kódov, ktoré ste uložili.",
"Submit" : "Odoslať",
- "_" : "_"
+ "_" : "_",
+ "_icon-loading-small_::_generate-backup-codes_" : ["načítanie-malej-ikony","vytvoriť-záložné-kódy","vytvoriť-záložné-kódy","vytvoriť-záložné-kódy"],
+ "You have enabled two-factor authentication but have not yet generated backup codes. Be sure to do this in case you lose access to your second factor." : "Povolili ste dvojfaktorové overenie, ale ešte ste nevytvorili záložné kódy. Určite to urobte pre prípad, že stratíte prístup k druhému faktoru.",
+ "function" : "funkcia"
},
"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/twofactor_backupcodes/l10n/sk.json b/apps/twofactor_backupcodes/l10n/sk.json
index b731ffc742c..614fc020263 100644
--- a/apps/twofactor_backupcodes/l10n/sk.json
+++ b/apps/twofactor_backupcodes/l10n/sk.json
@@ -2,17 +2,24 @@
"You created two-factor backup codes for your account" : "Vytvorili ste záložné kódy dvojfaktorového overovania pre váš účet",
"Second-factor backup codes" : "Dvojfaktorové záložné kódy",
"Generate backup codes" : "Vytvoriť záložné kódy",
+ "You enabled two-factor authentication but did not generate backup codes yet. They are needed to restore access to your account in case you lose your second factor." : "Povolili ste dvojfaktorové overenie totožnosti, zatiaľ ste však nevygenerovali záložné kódy. V prípade straty druhého faktora sú potrebné na obnovenie prístupu k vášmu účtu.",
"Backup code" : "Záložný kód",
"Use backup code" : "Použiť záložný kód",
"Two factor backup codes" : "Záložné kódy pre dvojfaktorové overovanie",
"A two-factor auth backup codes provider" : "Poskytovateľ záložných kódov pre dvojfaktorové overovanie",
+ "Backup codes have been generated. {used} of {total} codes have been used." : "Boli vygenerované záložné kódy. Boli použité {použité} z {celkom} kódov.",
"These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Tu sú vaše záložné kódy. Uložte si ich prosím alebo vytlačte, pretože ich nebude možné neskôr znovu zobraziť.",
"Save backup codes" : "Uložiť záložné kódy",
"Print backup codes" : "Vytlačiť záložné kódy",
"Regenerate backup codes" : "Vytvoriť nové záložné kódy",
"If you regenerate backup codes, you automatically invalidate old codes." : "Ak vytvoríte nové záložné kódy, staré sa automaticky zneplatnia.",
"An error occurred while generating your backup codes" : "Pri vytváraní záložných kódov nastala chyba.",
+ "{name} backup codes" : "{name} záložné kódy",
+ "Use one of the backup codes you saved when setting up two-factor authentication." : "Pri nastavovaní dvojfaktorového overovania totožnosti použite jeden zo záložných kódov, ktoré ste uložili.",
"Submit" : "Odoslať",
- "_" : "_"
+ "_" : "_",
+ "_icon-loading-small_::_generate-backup-codes_" : ["načítanie-malej-ikony","vytvoriť-záložné-kódy","vytvoriť-záložné-kódy","vytvoriť-záložné-kódy"],
+ "You have enabled two-factor authentication but have not yet generated backup codes. Be sure to do this in case you lose access to your second factor." : "Povolili ste dvojfaktorové overenie, ale ešte ste nevytvorili záložné kódy. Určite to urobte pre prípad, že stratíte prístup k druhému faktoru.",
+ "function" : "funkcia"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/he.js b/apps/updatenotification/l10n/he.js
index 733a114e1ef..6778f56e19f 100644
--- a/apps/updatenotification/l10n/he.js
+++ b/apps/updatenotification/l10n/he.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"Checking apps for compatible updates" : "היישומונים נבדקים לאיתור עדכונים תואמים",
"Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "נא לוודא שב־config.php שלך ה־<samp>appstoreenabled</samp> לא מוגדר ל‏־false.",
"Could not connect to the appstore or the appstore returned no updates at all. Search manually for updates or make sure your server has access to the internet and can connect to the appstore." : "לא ניתן להתחבר לחנות היישומונים או שחנות היישומונים לא החזירה שיש עדכונים. ניתן לחפש ידנית עדכונים או לוודא שלשרת שלך יש גישה לאינטרנט ושיש לו איך להתחבר לחנות היישומונים.",
- "View changelog" : "הצגת יומן שינויים"
+ "View changelog" : "הצגת יומן שינויים",
+ "Beta" : "בטא"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;");
diff --git a/apps/updatenotification/l10n/he.json b/apps/updatenotification/l10n/he.json
index 5e26a55e040..b544df8f630 100644
--- a/apps/updatenotification/l10n/he.json
+++ b/apps/updatenotification/l10n/he.json
@@ -23,6 +23,7 @@
"Checking apps for compatible updates" : "היישומונים נבדקים לאיתור עדכונים תואמים",
"Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "נא לוודא שב־config.php שלך ה־<samp>appstoreenabled</samp> לא מוגדר ל‏־false.",
"Could not connect to the appstore or the appstore returned no updates at all. Search manually for updates or make sure your server has access to the internet and can connect to the appstore." : "לא ניתן להתחבר לחנות היישומונים או שחנות היישומונים לא החזירה שיש עדכונים. ניתן לחפש ידנית עדכונים או לוודא שלשרת שלך יש גישה לאינטרנט ושיש לו איך להתחבר לחנות היישומונים.",
- "View changelog" : "הצגת יומן שינויים"
+ "View changelog" : "הצגת יומן שינויים",
+ "Beta" : "בטא"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/sk.js b/apps/updatenotification/l10n/sk.js
index 9110869ee48..a70561d4b37 100644
--- a/apps/updatenotification/l10n/sk.js
+++ b/apps/updatenotification/l10n/sk.js
@@ -10,7 +10,9 @@ OC.L10N.register(
"Update for %1$s to version %2$s is available." : "Pre %1$s je dostupná aktualizácia na verziu %2$s.",
"Update for {app} to version %s is available." : "Pre {app} je dostupná aktualizácia na verziu %s.",
"Update notification" : "Aktualizovať hlásenie",
+ "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Zobrazí upozornenie na aktualizáciu pre Nextcloud a poskytuje zjednotené prihlasovanie pre aktualizátor.",
"The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Verzia, ktorú používate už nie je podporovaná. Čím skôr aktualizujte na podporovanú verziu prosím.",
+ "Apps missing updates" : "Aplikácie s chýbajúcimi aktualizáciami",
"View in store" : "Zobraziť v obchode",
"Apps with available updates" : "Aplikácie pre ktoré sú dostupné aktualizácie",
"Open updater" : "Otvoriť aktualizátor",
@@ -20,6 +22,7 @@ OC.L10N.register(
"Your version is up to date." : "Vaša verzia je atuálna.",
"A non-default update server is in use to be checked for updates:" : "Pre kontrolu aktualizácií sa používa iný než predvolený server:",
"Update channel:" : "Aktualizačný kanál:",
+ "You can always update to a newer version. But you can never downgrade to a more stable version." : "Vždy môžete aktualizovať na novšiu verziu, ale nikdy nemôžete prejsť na nižšiu, stabilnejšiu verziu.",
"Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Upozorňujeme, že po oficiálnom vydaní novej verzie môže chvíľu trvať, než sa tu objaví. Nové verzie medzi našich používateľov distribuujeme priebežne rozložené v čase a ak sa nájdu chyby, niekedy danú verziu preskočíme.",
"Notify members of the following groups about available updates:" : "Upozorňovať členov nasledujúcich skupín o dostupných aktualizáciach:",
"Only notification for app updates are available." : "Sú dostupné upozornenia iba pre aktualizácie aplikácií.",
@@ -32,7 +35,14 @@ OC.L10N.register(
"Could not connect to the appstore or the appstore returned no updates at all. Search manually for updates or make sure your server has access to the internet and can connect to the appstore." : "Nepodarilo sa pripojiť k obchodu s aplikáciami alebo obchod nemá žiadne aktualizácie. Aktualizácie hľadajte manuálne alebo sa uistite, že Váš server má prístup na internet a že sa môže pripojiť k obchodu.",
"<strong>All</strong> apps have an update for this version available" : "<strong>Všetky</strong> aplikácie majú dostupnú aktualizáciu",
"View changelog" : "Zobraziť súhrn zmien",
+ "Enterprise" : "Podnikové",
+ "For enterprise use. Provides always the latest patch level, but will not update to the next major release immediately. That update happens once Nextcloud GmbH has done additional hardening and testing for large-scale and mission-critical deployments. This channel is only available to customers and provides the Nextcloud Enterprise package." : "Pre podnikové použitie. Poskytuje vždy najnovšiu úroveň opráv, ale neaktualizuje sa okamžite na ďalšie hlavné vydanie. K tejto aktualizácii dôjde, keď Nextcloud GmbH urobí ďalšie zodolnenie a testovanie pre veľké a kritické nasadenia. Tento kanál je k dispozícii iba pre zákazníkov a poskytuje balík Nextcloud Enterprise.",
+ "Stable" : "Stabilná",
+ "The most recent stable version. It is suited for regular use and will always update to the latest major version." : "Najnovšia stabilná verzia. Je vhodná na bežné používanie a vždy sa aktualizuje na najnovšiu hlavnú verziu.",
"Beta" : "Beta",
- "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> aplikácia nemá dostupnú aktualizáciu na túto verziu","<strong>%n</strong> aplikácie nemá dostupnú aktualizáciu na túto verziu ","<strong>%n</strong> aplikácií nemá dostupnú aktualizáciu na túto verziu","<strong>%n</strong>aplikácií nemá dostupnú aktualizáciu na túto verziu"]
+ "A pre-release version only for testing new features, not for production environments." : "Verzia pred vydaním iba na testovanie nových funkcií, nie pre praktické nasadenie.",
+ "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> aplikácia nemá dostupnú aktualizáciu na túto verziu","<strong>%n</strong> aplikácie nemá dostupnú aktualizáciu na túto verziu ","<strong>%n</strong> aplikácií nemá dostupnú aktualizáciu na túto verziu","<strong>%n</strong>aplikácií nemá dostupnú aktualizáciu na túto verziu"],
+ "Production" : "Produkčná",
+ "Will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2) and only if the instance is already on the latest minor version." : "Vždy poskytne najnovšiu úroveň opráv, ale neaktualizuje sa okamžite na ďalšie hlavné vydanie. Táto aktualizácia sa zvyčajne deje s druhou menšou verziou (x.0.2) a iba v prípade, že inštancia je už v najnovšej menšej verzii."
},
"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);");
diff --git a/apps/updatenotification/l10n/sk.json b/apps/updatenotification/l10n/sk.json
index d1d2ac8ba33..de0c94b065d 100644
--- a/apps/updatenotification/l10n/sk.json
+++ b/apps/updatenotification/l10n/sk.json
@@ -8,7 +8,9 @@
"Update for %1$s to version %2$s is available." : "Pre %1$s je dostupná aktualizácia na verziu %2$s.",
"Update for {app} to version %s is available." : "Pre {app} je dostupná aktualizácia na verziu %s.",
"Update notification" : "Aktualizovať hlásenie",
+ "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Zobrazí upozornenie na aktualizáciu pre Nextcloud a poskytuje zjednotené prihlasovanie pre aktualizátor.",
"The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Verzia, ktorú používate už nie je podporovaná. Čím skôr aktualizujte na podporovanú verziu prosím.",
+ "Apps missing updates" : "Aplikácie s chýbajúcimi aktualizáciami",
"View in store" : "Zobraziť v obchode",
"Apps with available updates" : "Aplikácie pre ktoré sú dostupné aktualizácie",
"Open updater" : "Otvoriť aktualizátor",
@@ -18,6 +20,7 @@
"Your version is up to date." : "Vaša verzia je atuálna.",
"A non-default update server is in use to be checked for updates:" : "Pre kontrolu aktualizácií sa používa iný než predvolený server:",
"Update channel:" : "Aktualizačný kanál:",
+ "You can always update to a newer version. But you can never downgrade to a more stable version." : "Vždy môžete aktualizovať na novšiu verziu, ale nikdy nemôžete prejsť na nižšiu, stabilnejšiu verziu.",
"Note that after a new release it can take some time before it shows up here. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found." : "Upozorňujeme, že po oficiálnom vydaní novej verzie môže chvíľu trvať, než sa tu objaví. Nové verzie medzi našich používateľov distribuujeme priebežne rozložené v čase a ak sa nájdu chyby, niekedy danú verziu preskočíme.",
"Notify members of the following groups about available updates:" : "Upozorňovať členov nasledujúcich skupín o dostupných aktualizáciach:",
"Only notification for app updates are available." : "Sú dostupné upozornenia iba pre aktualizácie aplikácií.",
@@ -30,7 +33,14 @@
"Could not connect to the appstore or the appstore returned no updates at all. Search manually for updates or make sure your server has access to the internet and can connect to the appstore." : "Nepodarilo sa pripojiť k obchodu s aplikáciami alebo obchod nemá žiadne aktualizácie. Aktualizácie hľadajte manuálne alebo sa uistite, že Váš server má prístup na internet a že sa môže pripojiť k obchodu.",
"<strong>All</strong> apps have an update for this version available" : "<strong>Všetky</strong> aplikácie majú dostupnú aktualizáciu",
"View changelog" : "Zobraziť súhrn zmien",
+ "Enterprise" : "Podnikové",
+ "For enterprise use. Provides always the latest patch level, but will not update to the next major release immediately. That update happens once Nextcloud GmbH has done additional hardening and testing for large-scale and mission-critical deployments. This channel is only available to customers and provides the Nextcloud Enterprise package." : "Pre podnikové použitie. Poskytuje vždy najnovšiu úroveň opráv, ale neaktualizuje sa okamžite na ďalšie hlavné vydanie. K tejto aktualizácii dôjde, keď Nextcloud GmbH urobí ďalšie zodolnenie a testovanie pre veľké a kritické nasadenia. Tento kanál je k dispozícii iba pre zákazníkov a poskytuje balík Nextcloud Enterprise.",
+ "Stable" : "Stabilná",
+ "The most recent stable version. It is suited for regular use and will always update to the latest major version." : "Najnovšia stabilná verzia. Je vhodná na bežné používanie a vždy sa aktualizuje na najnovšiu hlavnú verziu.",
"Beta" : "Beta",
- "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> aplikácia nemá dostupnú aktualizáciu na túto verziu","<strong>%n</strong> aplikácie nemá dostupnú aktualizáciu na túto verziu ","<strong>%n</strong> aplikácií nemá dostupnú aktualizáciu na túto verziu","<strong>%n</strong>aplikácií nemá dostupnú aktualizáciu na túto verziu"]
+ "A pre-release version only for testing new features, not for production environments." : "Verzia pred vydaním iba na testovanie nových funkcií, nie pre praktické nasadenie.",
+ "_<strong>%n</strong> app has no update for this version available_::_<strong>%n</strong> apps have no update for this version available_" : ["<strong>%n</strong> aplikácia nemá dostupnú aktualizáciu na túto verziu","<strong>%n</strong> aplikácie nemá dostupnú aktualizáciu na túto verziu ","<strong>%n</strong> aplikácií nemá dostupnú aktualizáciu na túto verziu","<strong>%n</strong>aplikácií nemá dostupnú aktualizáciu na túto verziu"],
+ "Production" : "Produkčná",
+ "Will always provide the latest patch level, but not update to the next major release immediately. That update usually happens with the second minor release (x.0.2) and only if the instance is already on the latest minor version." : "Vždy poskytne najnovšiu úroveň opráv, ale neaktualizuje sa okamžite na ďalšie hlavné vydanie. Táto aktualizácia sa zvyčajne deje s druhou menšou verziou (x.0.2) a iba v prípade, že inštancia je už v najnovšej menšej verzii."
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/ca.js b/apps/user_ldap/l10n/ca.js
index 4033da0b326..595c800b40d 100644
--- a/apps/user_ldap/l10n/ca.js
+++ b/apps/user_ldap/l10n/ca.js
@@ -176,6 +176,7 @@ OC.L10N.register(
"Email Field" : "Camp de correu electrònic",
"Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Estableix l'adreça de correu a partir del seu atribut LDAP. Deixeu buit pel comportament predeterminat.",
"User Home Folder Naming Rule" : "Norma per anomenar la carpeta arrel d'usuari",
+ "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Deixar buit pel nom d'usuari (per defecte). Altrament, especificar un atribut LDAP/AD.",
"\"$home\" Placeholder Field" : "Camp de text variable per \"$home\" ",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "En la configuració d'un emmagatzematge extern es reemplaçarà $home amb el valor de l'atribut especificat",
"Internal Username" : "Nom d'usuari intern",
diff --git a/apps/user_ldap/l10n/ca.json b/apps/user_ldap/l10n/ca.json
index 05b732fd30a..96a09db1c70 100644
--- a/apps/user_ldap/l10n/ca.json
+++ b/apps/user_ldap/l10n/ca.json
@@ -174,6 +174,7 @@
"Email Field" : "Camp de correu electrònic",
"Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Estableix l'adreça de correu a partir del seu atribut LDAP. Deixeu buit pel comportament predeterminat.",
"User Home Folder Naming Rule" : "Norma per anomenar la carpeta arrel d'usuari",
+ "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Deixar buit pel nom d'usuari (per defecte). Altrament, especificar un atribut LDAP/AD.",
"\"$home\" Placeholder Field" : "Camp de text variable per \"$home\" ",
"$home in an external storage configuration will be replaced with the value of the specified attribute" : "En la configuració d'un emmagatzematge extern es reemplaçarà $home amb el valor de l'atribut especificat",
"Internal Username" : "Nom d'usuari intern",
diff --git a/apps/workflowengine/l10n/sk.js b/apps/workflowengine/l10n/sk.js
index 39f85edbf40..c11ae3cd5e3 100644
--- a/apps/workflowengine/l10n/sk.js
+++ b/apps/workflowengine/l10n/sk.js
@@ -20,6 +20,14 @@ OC.L10N.register(
"File accessed" : "Prístup k súboru",
"File copied" : "Kopírovaný súbor",
"Tag assigned" : "Priradený štítok",
+ "Someone" : "Niekto",
+ "%s created %s" : "%s vytvorené %s",
+ "%s modified %s" : "%s zmenené %s",
+ "%s deleted %s" : "%s vymazané %s",
+ "%s accessed %s" : "%s pristupené k %s",
+ "%s renamed %s" : "%s premenované %s",
+ "%s copied %s" : "%s skopírovné %s",
+ "%s assigned %s to %s" : "%s priradené %s k %s",
"Operation #%s does not exist" : "Operácia #%s neexistuje",
"Entity %s does not exist" : "Entita%s neexistuje",
"Entity %s is invalid" : "Entita %s je neplatná",
@@ -27,12 +35,15 @@ OC.L10N.register(
"Entity %s has no event %s" : "Entita %s nemá udalosť %s",
"Operation %s does not exist" : "Operácia %s neexistuje",
"Operation %s is invalid" : "Operácia #%s nie je platná",
+ "At least one check needs to be provided" : "Musí sa vykonať aspoň jedna kontrola",
+ "Invalid check provided" : "Poskytnutá neplatná kontrola",
"Check %s does not exist" : "Kontrola %s neexistuje",
"Check %s is invalid" : "Kontrola %s je neplatná",
"Check %s is not allowed with this entity" : "Kontrola %s nie je pre túto entitu povolená",
"Check #%s does not exist" : "Kontrola #%s neexistuje",
"Check %s is invalid or does not exist" : "Kontrola %s je neplatná alebo neexistuje",
"Flow" : "Flow (tok)",
+ "Nextcloud workflow engine" : "Služba Nextcloud pre pracovné postupy",
"Select a filter" : "Vybrať filter",
"Select a comparator" : "Vybrať porovnávač",
"Select a file type" : "Vyberte typ súboru",
@@ -58,15 +69,23 @@ OC.L10N.register(
"Desktop client" : "Desktopový klient",
"Thunderbird & Outlook addons" : "Doplnky pre Thunderbird a Outlook",
"Custom user agent" : "Vlastný agent užívateľa",
+ "At least one event must be selected" : "Musí byť vybraná aspoň jedna udalosť",
+ "Add new flow" : "Pridať nový tok",
"When" : "Keď",
"and" : "a",
"Cancel" : "Zrušiť",
"Delete" : "Zmazať",
"The configuration is invalid" : "Konfigurácia je neplatná",
+ "Active" : "Aktívne",
"Save" : "Uložiť",
+ "Available flows" : "Dostupné toky",
+ "For details on how to write your own flow, check out the development documentation." : "Podrobnosti o tom, ako vytvárať vlastné toky, nájdete v dokumentácii pre vývojárov.",
+ "More flows" : "Ďalšie toky",
"Browse the app store" : "Prehliadajte obchod aplikácií",
"Show less" : "Zobraziť menej",
"Show more" : "Zobraziť viac",
+ "Configured flows" : "Nastavené toky",
+ "Your flows" : "Vaše toky",
"matches" : "súhlasí",
"does not match" : "nesúhlasí",
"is" : "je",
diff --git a/apps/workflowengine/l10n/sk.json b/apps/workflowengine/l10n/sk.json
index f4a97eeafbb..ccfe5c39479 100644
--- a/apps/workflowengine/l10n/sk.json
+++ b/apps/workflowengine/l10n/sk.json
@@ -18,6 +18,14 @@
"File accessed" : "Prístup k súboru",
"File copied" : "Kopírovaný súbor",
"Tag assigned" : "Priradený štítok",
+ "Someone" : "Niekto",
+ "%s created %s" : "%s vytvorené %s",
+ "%s modified %s" : "%s zmenené %s",
+ "%s deleted %s" : "%s vymazané %s",
+ "%s accessed %s" : "%s pristupené k %s",
+ "%s renamed %s" : "%s premenované %s",
+ "%s copied %s" : "%s skopírovné %s",
+ "%s assigned %s to %s" : "%s priradené %s k %s",
"Operation #%s does not exist" : "Operácia #%s neexistuje",
"Entity %s does not exist" : "Entita%s neexistuje",
"Entity %s is invalid" : "Entita %s je neplatná",
@@ -25,12 +33,15 @@
"Entity %s has no event %s" : "Entita %s nemá udalosť %s",
"Operation %s does not exist" : "Operácia %s neexistuje",
"Operation %s is invalid" : "Operácia #%s nie je platná",
+ "At least one check needs to be provided" : "Musí sa vykonať aspoň jedna kontrola",
+ "Invalid check provided" : "Poskytnutá neplatná kontrola",
"Check %s does not exist" : "Kontrola %s neexistuje",
"Check %s is invalid" : "Kontrola %s je neplatná",
"Check %s is not allowed with this entity" : "Kontrola %s nie je pre túto entitu povolená",
"Check #%s does not exist" : "Kontrola #%s neexistuje",
"Check %s is invalid or does not exist" : "Kontrola %s je neplatná alebo neexistuje",
"Flow" : "Flow (tok)",
+ "Nextcloud workflow engine" : "Služba Nextcloud pre pracovné postupy",
"Select a filter" : "Vybrať filter",
"Select a comparator" : "Vybrať porovnávač",
"Select a file type" : "Vyberte typ súboru",
@@ -56,15 +67,23 @@
"Desktop client" : "Desktopový klient",
"Thunderbird & Outlook addons" : "Doplnky pre Thunderbird a Outlook",
"Custom user agent" : "Vlastný agent užívateľa",
+ "At least one event must be selected" : "Musí byť vybraná aspoň jedna udalosť",
+ "Add new flow" : "Pridať nový tok",
"When" : "Keď",
"and" : "a",
"Cancel" : "Zrušiť",
"Delete" : "Zmazať",
"The configuration is invalid" : "Konfigurácia je neplatná",
+ "Active" : "Aktívne",
"Save" : "Uložiť",
+ "Available flows" : "Dostupné toky",
+ "For details on how to write your own flow, check out the development documentation." : "Podrobnosti o tom, ako vytvárať vlastné toky, nájdete v dokumentácii pre vývojárov.",
+ "More flows" : "Ďalšie toky",
"Browse the app store" : "Prehliadajte obchod aplikácií",
"Show less" : "Zobraziť menej",
"Show more" : "Zobraziť viac",
+ "Configured flows" : "Nastavené toky",
+ "Your flows" : "Vaše toky",
"matches" : "súhlasí",
"does not match" : "nesúhlasí",
"is" : "je",
diff --git a/core/Controller/OCJSController.php b/core/Controller/OCJSController.php
index 617f6b25236..29a210a092d 100644
--- a/core/Controller/OCJSController.php
+++ b/core/Controller/OCJSController.php
@@ -37,6 +37,7 @@ use OCP\AppFramework\Http\DataDisplayResponse;
use OCP\Defaults;
use OCP\IConfig;
use OCP\IGroupManager;
+use OCP\IInitialStateService;
use OCP\IRequest;
use OCP\ISession;
use OCP\IURLGenerator;
@@ -63,6 +64,7 @@ class OCJSController extends Controller {
* @param IniGetWrapper $iniWrapper
* @param IURLGenerator $urlGenerator
* @param CapabilitiesManager $capabilitiesManager
+ * @param IInitialStateService $initialStateService
*/
public function __construct($appName,
IRequest $request,
@@ -75,7 +77,8 @@ class OCJSController extends Controller {
IGroupManager $groupManager,
IniGetWrapper $iniWrapper,
IURLGenerator $urlGenerator,
- CapabilitiesManager $capabilitiesManager) {
+ CapabilitiesManager $capabilitiesManager,
+ IInitialStateService $initialStateService) {
parent::__construct($appName, $request);
$this->helper = new JSConfigHelper(
@@ -88,7 +91,8 @@ class OCJSController extends Controller {
$groupManager,
$iniWrapper,
$urlGenerator,
- $capabilitiesManager
+ $capabilitiesManager,
+ $initialStateService,
);
}
diff --git a/core/Controller/SvgController.php b/core/Controller/SvgController.php
index ba0e77602f2..af71ca17330 100644
--- a/core/Controller/SvgController.php
+++ b/core/Controller/SvgController.php
@@ -32,6 +32,7 @@ declare(strict_types=1);
namespace OC\Core\Controller;
use OC\Template\IconsCacher;
+use OCP\App\AppPathNotFoundException;
use OCP\App\IAppManager;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
@@ -97,13 +98,13 @@ class SvgController extends Controller {
* @return DataDisplayResponse|NotFoundResponse
*/
public function getSvgFromApp(string $app, string $fileName, string $color = 'ffffff') {
- $appRootPath = $this->appManager->getAppPath($app);
- $appPath = substr($appRootPath, strlen($this->serverRoot));
-
- if (!$appPath) {
+ try {
+ $appPath = $this->appManager->getAppPath($app);
+ } catch (AppPathNotFoundException $e) {
return new NotFoundResponse();
}
- $path = $this->serverRoot . $appPath ."/img/$fileName.svg";
+
+ $path = $appPath . "/img/$fileName.svg";
return $this->getSvg($path, $color, $fileName);
}
diff --git a/core/l10n/sk.js b/core/l10n/sk.js
index f5d1d333c01..667cf9c9678 100644
--- a/core/l10n/sk.js
+++ b/core/l10n/sk.js
@@ -85,6 +85,8 @@ OC.L10N.register(
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Vaše PHP nemá podporu FreeType, čo bude mať za následok poškodenie profilových obrázkov a rozhrania nastavení.",
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Chýbajúci index \"{indexName}\" v tabuľke \"{tableName}\".",
"The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically. By running \"occ db:add-missing-indices\" those missing indexes could be added manually while the instance keeps running. Once the indexes are added queries to those tables are usually much faster." : "V databáze chýbajú nejaké indexy. Keďže pridávanie indexov voči veľkým tabuľkám môže trvať dlho, tak neboli pridané automaticky. Spustením príkazu \"occ db:add-missing-indices\" môžete tieto chýbajúce indexy pridať ručne počas behu. Akonáhle budú indexy aktívne, tak požiadavky voči databáze budú podstatne rýchlejšie.",
+ "Missing optional column \"{columnName}\" in table \"{tableName}\"." : "Chýba nepovinný stĺpec „{columnName}“ v tabuľke „{tableName}“.",
+ "The database is missing some optional columns. Due to the fact that adding columns on big tables could take some time they were not added automatically when they can be optional. By running \"occ db:add-missing-columns\" those missing columns could be added manually while the instance keeps running. Once the columns are added some features might improve responsiveness or usability." : "V databáze chýbajú niektoré voliteľné stĺpce. Vzhľadom na skutočnosť, že pridanie stĺpcov na veľké tabuľky by mohlo nejaký čas trvať, neboli pridané automaticky, keď môžu byť voliteľné. Spustením príkazu „occ db: add-missing-columns“ sa tieto chýbajúce stĺpce môžu pridať ručne, zatiaľ čo inštancia zostáva v prevádzke. Po pridaní stĺpcov môžu niektoré funkcie zlepšiť odozvu alebo použiteľnosť.",
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "V tejto inštancii chýbajú niektoré odporúčané moduly PHP.\nAk chcete zlepšiť výkon a kompatibilitu, dôrazne odporúčame, aby ste ich nainštalovali.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running 'occ db:convert-filecache-bigint' those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">the documentation page about this</a>." : "Niektorým stĺpcom v databáze chýba konverzia na big int. Vzhľadom k tomu, že zmena typov stĺpcov na veľkých tabuľkých môže trvať dlhšie, neboli pri aktualizácii zmenené. Spustením príkazu 'occ db:convert-filecache-bigint' budú tieto nevybavené zmeny aplikované ručne. Táto operácia musí byť vykonaná v čase keď je inštancia offline. Ďalšie podrobnosti na <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">stránke dokumentácie</a>.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Ako databáza je použitá SQLite. Pre väčšie inštalácie odporúčame prejsť na inú databázu.",
diff --git a/core/l10n/sk.json b/core/l10n/sk.json
index 8cec8045baa..f6408ce4f0c 100644
--- a/core/l10n/sk.json
+++ b/core/l10n/sk.json
@@ -83,6 +83,8 @@
"Your PHP does not have FreeType support, resulting in breakage of profile pictures and the settings interface." : "Vaše PHP nemá podporu FreeType, čo bude mať za následok poškodenie profilových obrázkov a rozhrania nastavení.",
"Missing index \"{indexName}\" in table \"{tableName}\"." : "Chýbajúci index \"{indexName}\" v tabuľke \"{tableName}\".",
"The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically. By running \"occ db:add-missing-indices\" those missing indexes could be added manually while the instance keeps running. Once the indexes are added queries to those tables are usually much faster." : "V databáze chýbajú nejaké indexy. Keďže pridávanie indexov voči veľkým tabuľkám môže trvať dlho, tak neboli pridané automaticky. Spustením príkazu \"occ db:add-missing-indices\" môžete tieto chýbajúce indexy pridať ručne počas behu. Akonáhle budú indexy aktívne, tak požiadavky voči databáze budú podstatne rýchlejšie.",
+ "Missing optional column \"{columnName}\" in table \"{tableName}\"." : "Chýba nepovinný stĺpec „{columnName}“ v tabuľke „{tableName}“.",
+ "The database is missing some optional columns. Due to the fact that adding columns on big tables could take some time they were not added automatically when they can be optional. By running \"occ db:add-missing-columns\" those missing columns could be added manually while the instance keeps running. Once the columns are added some features might improve responsiveness or usability." : "V databáze chýbajú niektoré voliteľné stĺpce. Vzhľadom na skutočnosť, že pridanie stĺpcov na veľké tabuľky by mohlo nejaký čas trvať, neboli pridané automaticky, keď môžu byť voliteľné. Spustením príkazu „occ db: add-missing-columns“ sa tieto chýbajúce stĺpce môžu pridať ručne, zatiaľ čo inštancia zostáva v prevádzke. Po pridaní stĺpcov môžu niektoré funkcie zlepšiť odozvu alebo použiteľnosť.",
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "V tejto inštancii chýbajú niektoré odporúčané moduly PHP.\nAk chcete zlepšiť výkon a kompatibilitu, dôrazne odporúčame, aby ste ich nainštalovali.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running 'occ db:convert-filecache-bigint' those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">the documentation page about this</a>." : "Niektorým stĺpcom v databáze chýba konverzia na big int. Vzhľadom k tomu, že zmena typov stĺpcov na veľkých tabuľkých môže trvať dlhšie, neboli pri aktualizácii zmenené. Spustením príkazu 'occ db:convert-filecache-bigint' budú tieto nevybavené zmeny aplikované ručne. Táto operácia musí byť vykonaná v čase keď je inštancia offline. Ďalšie podrobnosti na <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">stránke dokumentácie</a>.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Ako databáza je použitá SQLite. Pre väčšie inštalácie odporúčame prejsť na inú databázu.",
diff --git a/lib/l10n/gl.js b/lib/l10n/gl.js
index 8c3e3edfcf8..b86466cd490 100644
--- a/lib/l10n/gl.js
+++ b/lib/l10n/gl.js
@@ -90,7 +90,7 @@ OC.L10N.register(
"%s enter the database name." : "%s introduza o nome da base de datos",
"%s you may not use dots in the database name" : "%s non se poden empregar puntos na base de datos",
"MySQL username and/or password not valid" : "Nome de usuario e/ou contrasinal de MySQL incorrecto",
- "You need to enter details of an existing account." : "Debe inserir os detalles dunha conta existente.",
+ "You need to enter details of an existing account." : "Debe introducir os detalles dunha conta existente.",
"Oracle connection could not be established" : "Non foi posíbel estabelecer a conexión con Oracle",
"Oracle username and/or password not valid" : "O nome de usuario e/ou contrasinal de Oracle é incorrecto",
"PostgreSQL username and/or password not valid" : "Nome de usuario e/ou contrasinal de PostgreSQL incorrecto",
diff --git a/lib/l10n/gl.json b/lib/l10n/gl.json
index cfb709033ba..b99add42d82 100644
--- a/lib/l10n/gl.json
+++ b/lib/l10n/gl.json
@@ -88,7 +88,7 @@
"%s enter the database name." : "%s introduza o nome da base de datos",
"%s you may not use dots in the database name" : "%s non se poden empregar puntos na base de datos",
"MySQL username and/or password not valid" : "Nome de usuario e/ou contrasinal de MySQL incorrecto",
- "You need to enter details of an existing account." : "Debe inserir os detalles dunha conta existente.",
+ "You need to enter details of an existing account." : "Debe introducir os detalles dunha conta existente.",
"Oracle connection could not be established" : "Non foi posíbel estabelecer a conexión con Oracle",
"Oracle username and/or password not valid" : "O nome de usuario e/ou contrasinal de Oracle é incorrecto",
"PostgreSQL username and/or password not valid" : "Nome de usuario e/ou contrasinal de PostgreSQL incorrecto",
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index becf29e4cc7..eae26645b55 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -396,7 +396,12 @@ class Manager implements IManager {
if ($fullId === null && $expirationDate === null && $this->shareApiInternalDefaultExpireDate()) {
$expirationDate = new \DateTime();
$expirationDate->setTime(0,0,0);
- $expirationDate->add(new \DateInterval('P'.$this->shareApiInternalDefaultExpireDays().'D'));
+
+ $days = (int)$this->config->getAppValue('core', 'internal_defaultExpDays', $this->shareApiLinkDefaultExpireDays());
+ if ($days > $this->shareApiLinkDefaultExpireDays()) {
+ $days = $this->shareApiLinkDefaultExpireDays();
+ }
+ $expirationDate->add(new \DateInterval('P'.$days.'D'));
}
// If we enforce the expiration date check that is does not exceed
@@ -467,7 +472,12 @@ class Manager implements IManager {
if ($fullId === null && $expirationDate === null && $this->shareApiLinkDefaultExpireDate()) {
$expirationDate = new \DateTime();
$expirationDate->setTime(0,0,0);
- $expirationDate->add(new \DateInterval('P'.$this->shareApiLinkDefaultExpireDays().'D'));
+
+ $days = (int)$this->config->getAppValue('core', 'link_defaultExpDays', $this->shareApiLinkDefaultExpireDays());
+ if ($days > $this->shareApiLinkDefaultExpireDays()) {
+ $days = $this->shareApiLinkDefaultExpireDays();
+ }
+ $expirationDate->add(new \DateInterval('P'.$days.'D'));
}
// If we enforce the expiration date check that is does not exceed
diff --git a/package-lock.json b/package-lock.json
index d4d1d550160..0aa1a6fa4a8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1324,6 +1324,24 @@
"regenerator-runtime": "^0.13.4"
}
},
+ "@babel/runtime-corejs2": {
+ "version": "7.9.2",
+ "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.9.2.tgz",
+ "integrity": "sha512-ayjSOxuK2GaSDJFCtLgHnYjuMyIpViNujWrZo8GUpN60/n7juzJKK5yOo6RFVb0zdU9ACJFK+MsZrUnj3OmXMw==",
+ "dev": true,
+ "requires": {
+ "core-js": "^2.6.5",
+ "regenerator-runtime": "^0.13.4"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.11",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz",
+ "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==",
+ "dev": true
+ }
+ }
+ },
"@babel/template": {
"version": "7.8.6",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
@@ -1695,9 +1713,9 @@
"dev": true
},
"@types/node": {
- "version": "13.7.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.0.tgz",
- "integrity": "sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ==",
+ "version": "13.13.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.0.tgz",
+ "integrity": "sha512-WE4IOAC6r/yBZss1oQGM5zs2D7RuKR6Q+w+X2SouPofnWn+LbCqClRyhO3ZE7Ix8nmFgo/oVuuE01cJT2XB13A==",
"dev": true
},
"@types/semver": {
@@ -4551,16 +4569,17 @@
"dev": true
},
"fast-glob": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.1.1.tgz",
- "integrity": "sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g==",
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.2.tgz",
+ "integrity": "sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A==",
"dev": true,
"requires": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
"glob-parent": "^5.1.0",
"merge2": "^1.3.0",
- "micromatch": "^4.0.2"
+ "micromatch": "^4.0.2",
+ "picomatch": "^2.2.1"
},
"dependencies": {
"braces": {
@@ -4582,9 +4601,9 @@
}
},
"glob-parent": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
- "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+ "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
"dev": true,
"requires": {
"is-glob": "^4.0.1"
@@ -4636,12 +4655,12 @@
"dev": true
},
"fastq": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.6.0.tgz",
- "integrity": "sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.7.0.tgz",
+ "integrity": "sha512-YOadQRnHd5q6PogvAR/x62BGituF2ufiEA6s8aavQANw5YKHERI4AREboX6KotzP8oX2klxYF2wcV/7bn1clfQ==",
"dev": true,
"requires": {
- "reusify": "^1.0.0"
+ "reusify": "^1.0.4"
}
},
"figgy-pudding": {
@@ -7454,12 +7473,12 @@
}
},
"mochapack": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/mochapack/-/mochapack-1.1.13.tgz",
- "integrity": "sha512-SQQn/0hsX5E3+tFxjmAm9ruEqLRYpnINssmul69PxnRdqxnNjs4UQvOQz1zTsoE7RfJl6FAprVjvMznZFIzytQ==",
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/mochapack/-/mochapack-1.1.15.tgz",
+ "integrity": "sha512-/gOsgJk3CWlNiOdef7hrNhp37VpatB9IiWzSCxS2p8pG21R7NAKJBBsU5T0eUWT9oz1NQhyubXdQgh51U7oVZA==",
"dev": true,
"requires": {
- "babel-runtime": "^6.26.0",
+ "@babel/runtime-corejs2": "^7.0.0",
"chalk": "^2.4.2",
"chokidar": "^2.0.0",
"glob-parent": "5.1.0",
diff --git a/package.json b/package.json
index 8b5bdfb8692..0f503a18475 100644
--- a/package.json
+++ b/package.json
@@ -107,7 +107,7 @@
"jsdom": "^16.2.2",
"jsdom-global": "^3.0.2",
"mocha": "^7.1.1",
- "mochapack": "^1.1.13",
+ "mochapack": "^1.1.15",
"node-sass": "^4.13.1",
"sass-loader": "^8.0.2",
"sinon": "^9.0.2",
diff --git a/tests/Core/Controller/SvgControllerTest.php b/tests/Core/Controller/SvgControllerTest.php
index 76d04d1af32..f6208d6f6c4 100644
--- a/tests/Core/Controller/SvgControllerTest.php
+++ b/tests/Core/Controller/SvgControllerTest.php
@@ -28,6 +28,7 @@ namespace Tests\Core\Controller;
use OC\AppFramework\Http;
use OC\Core\Controller\SvgController;
use OC\Template\IconsCacher;
+use OCP\App\AppPathNotFoundException;
use OCP\App\IAppManager;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IRequest;
@@ -46,6 +47,9 @@ class SvgControllerTest extends TestCase {
self::TEST_IMAGE_RECT,
];
+ /** @var IAppManager|\PHPUnit_Framework_MockObject_MockObject */
+ private $appManager;
+
/**
* @var SvgController
*/
@@ -87,17 +91,20 @@ class SvgControllerTest extends TestCase {
* @return void
*/
public function setupSvgController() {
+ /** @var IRequest */
$request = $this->getMockBuilder(IRequest::class)->getMock();
+ /** @var ITimeFactory $timeFactory */
$timeFactory = $this->getMockBuilder(ITimeFactory::class)->getMock();
- $appManager = $this->getMockBuilder(IAppManager::class)->getMock();
+ /** @var IAppManager */
+ $this->appManager = $this->getMockBuilder(IAppManager::class)->getMock();
+ /** @var IconsCacher $iconsCacher */
$iconsCacher = $this->getMockBuilder(IconsCacher::class)->disableOriginalConstructor()->setMethods(['__construct'])->getMock();
- $this->svgController = new SvgController('core', $request, $timeFactory, $appManager, $iconsCacher);
+ $this->svgController = new SvgController('core', $request, $timeFactory, $this->appManager, $iconsCacher);
}
/**
* Checks that requesting an unknown image results in a 404.
*
- * @test
* @return void
*/
public function testGetSvgFromCoreNotFound() {
@@ -120,7 +127,6 @@ class SvgControllerTest extends TestCase {
/**
* Tests that retrieving a colored SVG works.
*
- * @test
* @dataProvider provideGetSvgFromCoreTestData
* @param string $name The requested svg name
* @param string $color The requested color
@@ -138,4 +144,55 @@ class SvgControllerTest extends TestCase {
self::assertEquals($expected, $response->getData());
}
+
+ /**
+ * Checks that requesting an unknown image results in a 404.
+ */
+ public function testGetSvgFromAppNotFound(): void {
+ $this->appManager->expects($this->once())
+ ->method('getAppPath')
+ ->with('invalid_app')
+ ->willThrowException(new AppPathNotFoundException('Could not find path for invalid_app'));
+
+ $response = $this->svgController->getSvgFromApp('invalid_app', 'some-icon', '#ff0000');
+ self::assertEquals(Http::STATUS_NOT_FOUND, $response->getStatus());
+ }
+
+ /**
+ * Provides svg coloring test data.
+ *
+ * @return array
+ */
+ public function provideGetSvgFromAppTestData(): array {
+ return [
+ 'settings admin' => ['settings', 'admin', 'f00', file_get_contents(self::TEST_IMAGES_SOURCE_PATH . '/settings-admin-red.svg')],
+ 'files app' => ['files', 'app', 'f00', file_get_contents(self::TEST_IMAGES_SOURCE_PATH . '/files-app-red.svg')],
+ ];
+ }
+
+ /**
+ * Tests that retrieving a colored SVG works.
+ *
+ * @dataProvider provideGetSvgFromAppTestData
+ * @param string $appName
+ * @param string $name The requested svg name
+ * @param string $color The requested color
+ * @param string $expected
+ */
+ public function testGetSvgFromApp(string $appName, string $name, string $color, string $expected): void {
+ $this->appManager->expects($this->once())
+ ->method('getAppPath')
+ ->with($appName)
+ ->willReturn(__DIR__ . '/../../../apps/' . $appName);
+
+ $response = $this->svgController->getSvgFromApp($appName, $name, $color);
+
+ self::assertEquals(Http::STATUS_OK, $response->getStatus());
+
+ $headers = $response->getHeaders();
+ self::assertArrayHasKey('Content-Type', $headers);
+ self::assertEquals($headers['Content-Type'], 'image/svg+xml');
+
+ self::assertEquals($expected, $response->getData());
+ }
}
diff --git a/tests/data/svg/files-app-red.svg b/tests/data/svg/files-app-red.svg
new file mode 100644
index 00000000000..81d7fca1472
--- /dev/null
+++ b/tests/data/svg/files-app-red.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="32" viewBox="0 0 32 32" width="32" version="1.1"><path fill="#f00" d="m3 4c-0.5 0-1 0.5-1 1v22c0 0.52 0.48 1 1 1h26c0.52 0 1-0.482 1-1v-18c0-0.5-0.5-1-1-1h-13l-4-4z"/></svg>
diff --git a/tests/data/svg/settings-admin-red.svg b/tests/data/svg/settings-admin-red.svg
new file mode 100644
index 00000000000..54d7d3a9b15
--- /dev/null
+++ b/tests/data/svg/settings-admin-red.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 16 16" height="16" width="16" version="1.1"><path color="#000" d="m1 1v4h4v-4h-4zm5 1v2h8v-2h-8zm-5 4v4h4v-4h-4zm5 1v2h8v-2h-8zm-5 4v4h4v-4h-4zm1 1h2v2h-2v-2zm4 0v2h8v-2h-8z" fill="#f00"/></svg>
diff --git a/tests/lib/App/AppManagerTest.php b/tests/lib/App/AppManagerTest.php
index 1a5d6c648a1..5b6fedb1cc2 100644
--- a/tests/lib/App/AppManagerTest.php
+++ b/tests/lib/App/AppManagerTest.php
@@ -338,6 +338,35 @@ class AppManagerTest extends TestCase {
$this->assertEquals(\OC::$SERVERROOT . '/apps/files', $this->manager->getAppPath('files'));
}
+ public function testGetAppPathSymlink() {
+ $fakeAppDirname = sha1(uniqid('test', true));
+ $fakeAppPath = sys_get_temp_dir() . '/' . $fakeAppDirname;
+ $fakeAppLink = \OC::$SERVERROOT . '/' . $fakeAppDirname;
+
+ mkdir($fakeAppPath);
+ if (symlink($fakeAppPath, $fakeAppLink) === false) {
+ $this->markTestSkipped('Failed to create symlink');
+ }
+
+ // Use the symlink as the app path
+ \OC::$APPSROOTS[] = [
+ 'path' => $fakeAppLink,
+ 'url' => \OC::$WEBROOT . '/' . $fakeAppDirname,
+ 'writable' => false,
+ ];
+
+ $fakeTestAppPath = $fakeAppPath . '/' . 'test-test-app';
+ mkdir($fakeTestAppPath);
+
+ $generatedAppPath = $this->manager->getAppPath('test-test-app');
+
+ rmdir($fakeTestAppPath);
+ unlink($fakeAppLink);
+ rmdir($fakeAppPath);
+
+ $this->assertEquals($fakeAppLink . '/test-test-app', $generatedAppPath);
+ }
+
public function testGetAppPathFail() {
$this->expectException(AppPathNotFoundException::class);
$this->manager->getAppPath('testnotexisting');
diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php
index 4a7b0e9ae4b..b8364cfdc46 100644
--- a/tests/lib/Share20/ManagerTest.php
+++ b/tests/lib/Share20/ManagerTest.php
@@ -808,6 +808,7 @@ class ManagerTest extends \Test\TestCase {
['core', 'shareapi_enforce_expire_date', 'no', 'yes'],
['core', 'shareapi_expire_after_n_days', '7', '3'],
['core', 'shareapi_default_expire_date', 'no', 'yes'],
+ ['core', 'link_defaultExpDays', 3, '3'],
]);
$expected = new \DateTime();