summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
m---------3rdparty0
-rw-r--r--apps/comments/l10n/hu.js1
-rw-r--r--apps/comments/l10n/hu.json1
-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/lib/CardDAV/CardDavBackend.php31
-rw-r--r--apps/dav/lib/Connector/Sabre/Auth.php5
-rw-r--r--apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php3
-rw-r--r--apps/dav/lib/Migration/Version1008Date20181030113700.php52
-rw-r--r--apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php12
-rw-r--r--apps/dav/tests/unit/CardDAV/CardDavBackendTest.php47
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/RequestTest/DownloadTest.php6
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/RequestTest/UploadTest.php24
-rw-r--r--apps/encryption/l10n/hu.js1
-rw-r--r--apps/encryption/l10n/hu.json1
-rw-r--r--apps/federatedfilesharing/l10n/lt_LT.js4
-rw-r--r--apps/federatedfilesharing/l10n/lt_LT.json4
-rw-r--r--apps/federatedfilesharing/l10n/pl.js8
-rw-r--r--apps/federatedfilesharing/l10n/pl.json8
-rw-r--r--apps/files/l10n/hu.js2
-rw-r--r--apps/files/l10n/hu.json2
-rw-r--r--apps/files/l10n/ja.js1
-rw-r--r--apps/files/l10n/ja.json1
-rw-r--r--apps/files/l10n/lt_LT.js4
-rw-r--r--apps/files/l10n/lt_LT.json4
-rw-r--r--apps/files_sharing/l10n/cs.js2
-rw-r--r--apps/files_sharing/l10n/cs.json2
-rw-r--r--apps/files_sharing/l10n/de.js2
-rw-r--r--apps/files_sharing/l10n/de.json2
-rw-r--r--apps/files_sharing/l10n/de_DE.js2
-rw-r--r--apps/files_sharing/l10n/de_DE.json2
-rw-r--r--apps/files_sharing/l10n/es.js2
-rw-r--r--apps/files_sharing/l10n/es.json2
-rw-r--r--apps/files_sharing/l10n/fr.js2
-rw-r--r--apps/files_sharing/l10n/fr.json2
-rw-r--r--apps/files_sharing/l10n/is.js2
-rw-r--r--apps/files_sharing/l10n/is.json2
-rw-r--r--apps/files_sharing/l10n/it.js2
-rw-r--r--apps/files_sharing/l10n/it.json2
-rw-r--r--apps/files_sharing/l10n/nl.js4
-rw-r--r--apps/files_sharing/l10n/nl.json4
-rw-r--r--apps/files_sharing/l10n/pl.js2
-rw-r--r--apps/files_sharing/l10n/pl.json2
-rw-r--r--apps/files_sharing/l10n/pt_BR.js2
-rw-r--r--apps/files_sharing/l10n/pt_BR.json2
-rw-r--r--apps/files_sharing/l10n/ru.js2
-rw-r--r--apps/files_sharing/l10n/ru.json2
-rw-r--r--apps/files_sharing/l10n/sk.js2
-rw-r--r--apps/files_sharing/l10n/sk.json2
-rw-r--r--apps/files_sharing/l10n/sr.js2
-rw-r--r--apps/files_sharing/l10n/sr.json2
-rw-r--r--apps/files_sharing/l10n/sv.js2
-rw-r--r--apps/files_sharing/l10n/sv.json2
-rw-r--r--apps/files_sharing/l10n/tr.js2
-rw-r--r--apps/files_sharing/l10n/tr.json2
-rw-r--r--apps/files_sharing/l10n/zh_CN.js2
-rw-r--r--apps/files_sharing/l10n/zh_CN.json2
-rw-r--r--apps/files_sharing/lib/Controller/ShareAPIController.php20
-rw-r--r--apps/files_sharing/tests/Controller/ShareAPIControllerTest.php373
-rw-r--r--apps/files_trashbin/l10n/hu.js7
-rw-r--r--apps/files_trashbin/l10n/hu.json7
-rw-r--r--apps/files_trashbin/tests/CapabilitiesTest.php44
-rw-r--r--apps/oauth2/l10n/ca.js5
-rw-r--r--apps/oauth2/l10n/ca.json5
-rw-r--r--apps/sharebymail/l10n/nl.js2
-rw-r--r--apps/sharebymail/l10n/nl.json2
-rw-r--r--apps/systemtags/l10n/hu.js1
-rw-r--r--apps/systemtags/l10n/hu.json1
-rw-r--r--apps/theming/l10n/fr.js4
-rw-r--r--apps/theming/l10n/fr.json4
-rw-r--r--apps/user_ldap/l10n/nl.js2
-rw-r--r--apps/user_ldap/l10n/nl.json2
-rw-r--r--build/integration/features/webdav-related.feature4
-rw-r--r--core/css/header.scss6
-rw-r--r--core/js/js.js9
-rw-r--r--core/js/share/sharedialoglinkshareview_popover_menu.handlebars10
-rw-r--r--core/js/sharedialoglinkshareview.js64
-rw-r--r--core/js/shareitemmodel.js5
-rw-r--r--core/js/sharetemplates.js29
-rw-r--r--core/js/tests/specs/coreSpec.js4
-rw-r--r--core/js/tests/specs/sharedialoglinkshareview.js113
-rw-r--r--core/js/tests/specs/shareitemmodelSpec.js13
-rw-r--r--core/l10n/ca.js3
-rw-r--r--core/l10n/ca.json3
-rw-r--r--core/l10n/cs.js3
-rw-r--r--core/l10n/cs.json3
-rw-r--r--core/l10n/de.js11
-rw-r--r--core/l10n/de.json11
-rw-r--r--core/l10n/de_DE.js11
-rw-r--r--core/l10n/de_DE.json11
-rw-r--r--core/l10n/es.js15
-rw-r--r--core/l10n/es.json15
-rw-r--r--core/l10n/fi.js1
-rw-r--r--core/l10n/fi.json1
-rw-r--r--core/l10n/fr.js9
-rw-r--r--core/l10n/fr.json9
-rw-r--r--core/l10n/he.js3
-rw-r--r--core/l10n/he.json3
-rw-r--r--core/l10n/hr.js1
-rw-r--r--core/l10n/hr.json1
-rw-r--r--core/l10n/hu.js1
-rw-r--r--core/l10n/hu.json1
-rw-r--r--core/l10n/is.js3
-rw-r--r--core/l10n/is.json3
-rw-r--r--core/l10n/it.js11
-rw-r--r--core/l10n/it.json11
-rw-r--r--core/l10n/ja.js4
-rw-r--r--core/l10n/ja.json4
-rw-r--r--core/l10n/ko.js3
-rw-r--r--core/l10n/ko.json3
-rw-r--r--core/l10n/lt_LT.js7
-rw-r--r--core/l10n/lt_LT.json7
-rw-r--r--core/l10n/lv.js3
-rw-r--r--core/l10n/lv.json3
-rw-r--r--core/l10n/nb.js3
-rw-r--r--core/l10n/nb.json3
-rw-r--r--core/l10n/nl.js12
-rw-r--r--core/l10n/nl.json12
-rw-r--r--core/l10n/pl.js3
-rw-r--r--core/l10n/pl.json3
-rw-r--r--core/l10n/pt_BR.js11
-rw-r--r--core/l10n/pt_BR.json11
-rw-r--r--core/l10n/ru.js3
-rw-r--r--core/l10n/ru.json3
-rw-r--r--core/l10n/sk.js6
-rw-r--r--core/l10n/sk.json6
-rw-r--r--core/l10n/sr.js15
-rw-r--r--core/l10n/sr.json15
-rw-r--r--core/l10n/sv.js14
-rw-r--r--core/l10n/sv.json14
-rw-r--r--core/l10n/tr.js11
-rw-r--r--core/l10n/tr.json11
-rw-r--r--core/l10n/vi.js3
-rw-r--r--core/l10n/vi.json3
-rw-r--r--core/l10n/zh_CN.js3
-rw-r--r--core/l10n/zh_CN.json3
-rw-r--r--core/l10n/zh_TW.js3
-rw-r--r--core/l10n/zh_TW.json3
-rw-r--r--index.php2
-rw-r--r--lib/composer/composer/autoload_classmap.php1
-rw-r--r--lib/composer/composer/autoload_static.php1
-rw-r--r--lib/l10n/lt_LT.js2
-rw-r--r--lib/l10n/lt_LT.json2
-rw-r--r--lib/private/Mail/Mailer.php6
-rw-r--r--lib/private/Repair.php2
-rw-r--r--lib/private/Repair/NC15/SetVcardDatabaseUID.php137
-rw-r--r--lib/private/Settings/Admin/Sharing.php9
-rw-r--r--lib/private/Share/Share.php20
-rw-r--r--lib/private/Share20/DefaultShareProvider.php4
-rw-r--r--settings/l10n/lt_LT.js44
-rw-r--r--settings/l10n/lt_LT.json44
-rw-r--r--settings/l10n/nl.js2
-rw-r--r--settings/l10n/nl.json2
-rw-r--r--settings/l10n/pl.js6
-rw-r--r--settings/l10n/pl.json6
-rw-r--r--tests/acceptance/features/app-files.feature4
-rw-r--r--tests/acceptance/features/bootstrap/FilesAppContext.php101
-rw-r--r--tests/lib/Mail/MailerTest.php8
-rw-r--r--tests/lib/Repair/SetVcardDatabaseUIDTest.php121
-rw-r--r--tests/lib/Settings/Admin/SharingTest.php7
-rw-r--r--tests/lib/Share20/DefaultShareProviderTest.php61
161 files changed, 1692 insertions, 280 deletions
diff --git a/3rdparty b/3rdparty
-Subproject 8633304ce214a7c0ff8e4fd72052a5ed7a444b6
+Subproject 214c4155f587f5178d792fe4a839044bdc9982f
diff --git a/apps/comments/l10n/hu.js b/apps/comments/l10n/hu.js
index 485f42adc79..9488bb41a6f 100644
--- a/apps/comments/l10n/hu.js
+++ b/apps/comments/l10n/hu.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Megemlítettek ezen: “{file}”, egy már törölt felhasználó hozzászólásában",
"%1$s mentioned you in a comment on “%2$s”" : "%1$s megemlített egy hozzászólásban itt: “%2$s”",
"{user} mentioned you in a comment on “{file}”" : "{user} megemlített egy hozzászólásban itt: “{file}”",
+ "Files app plugin to add comments to files" : "Beépülő Fájl applikáció amivel megjegyzések adhatók fájlokhoz ",
"Unknown user" : "Ismeretlen felhasználó",
"A (now) deleted user mentioned you in a comment on “%s”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “{file}”"
diff --git a/apps/comments/l10n/hu.json b/apps/comments/l10n/hu.json
index 325a87ab532..acbc4384cdd 100644
--- a/apps/comments/l10n/hu.json
+++ b/apps/comments/l10n/hu.json
@@ -27,6 +27,7 @@
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Megemlítettek ezen: “{file}”, egy már törölt felhasználó hozzászólásában",
"%1$s mentioned you in a comment on “%2$s”" : "%1$s megemlített egy hozzászólásban itt: “%2$s”",
"{user} mentioned you in a comment on “{file}”" : "{user} megemlített egy hozzászólásban itt: “{file}”",
+ "Files app plugin to add comments to files" : "Beépülő Fájl applikáció amivel megjegyzések adhatók fájlokhoz ",
"Unknown user" : "Ismeretlen felhasználó",
"A (now) deleted user mentioned you in a comment on “%s”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “%s”",
"A (now) deleted user mentioned you in a comment on “{file}”" : "Egy (most) törölt felhasználó megemlített egy hozzászólásban itt: “{file}”"
diff --git a/apps/dav/composer/composer/autoload_classmap.php b/apps/dav/composer/composer/autoload_classmap.php
index fe7557f7e08..c9680651ff9 100644
--- a/apps/dav/composer/composer/autoload_classmap.php
+++ b/apps/dav/composer/composer/autoload_classmap.php
@@ -156,6 +156,7 @@ return array(
'OCA\\DAV\\Migration\\Version1005Date20180530124431' => $baseDir . '/../lib/Migration/Version1005Date20180530124431.php',
'OCA\\DAV\\Migration\\Version1006Date20180619154313' => $baseDir . '/../lib/Migration/Version1006Date20180619154313.php',
'OCA\\DAV\\Migration\\Version1007Date20181007225117' => $baseDir . '/../lib/Migration/Version1007Date20181007225117.php',
+ 'OCA\\DAV\\Migration\\Version1008Date20181030113700' => $baseDir . '/../lib/Migration/Version1008Date20181030113700.php',
'OCA\\DAV\\RootCollection' => $baseDir . '/../lib/RootCollection.php',
'OCA\\DAV\\Server' => $baseDir . '/../lib/Server.php',
'OCA\\DAV\\Settings\\CalDAVSettings' => $baseDir . '/../lib/Settings/CalDAVSettings.php',
diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php
index 1668f1270f5..71879abc0a5 100644
--- a/apps/dav/composer/composer/autoload_static.php
+++ b/apps/dav/composer/composer/autoload_static.php
@@ -171,6 +171,7 @@ class ComposerStaticInitDAV
'OCA\\DAV\\Migration\\Version1005Date20180530124431' => __DIR__ . '/..' . '/../lib/Migration/Version1005Date20180530124431.php',
'OCA\\DAV\\Migration\\Version1006Date20180619154313' => __DIR__ . '/..' . '/../lib/Migration/Version1006Date20180619154313.php',
'OCA\\DAV\\Migration\\Version1007Date20181007225117' => __DIR__ . '/..' . '/../lib/Migration/Version1007Date20181007225117.php',
+ 'OCA\\DAV\\Migration\\Version1008Date20181030113700' => __DIR__ . '/..' . '/../lib/Migration/Version1008Date20181030113700.php',
'OCA\\DAV\\RootCollection' => __DIR__ . '/..' . '/../lib/RootCollection.php',
'OCA\\DAV\\Server' => __DIR__ . '/..' . '/../lib/Server.php',
'OCA\\DAV\\Settings\\CalDAVSettings' => __DIR__ . '/..' . '/../lib/Settings/CalDAVSettings.php',
diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php
index a2d3b03147b..a8907f631cd 100644
--- a/apps/dav/lib/CardDAV/CardDavBackend.php
+++ b/apps/dav/lib/CardDAV/CardDavBackend.php
@@ -494,7 +494,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
*/
function getCards($addressBookId) {
$query = $this->db->getQueryBuilder();
- $query->select(['id', 'uri', 'lastmodified', 'etag', 'size', 'carddata'])
+ $query->select(['id', 'uri', 'lastmodified', 'etag', 'size', 'carddata', 'uid'])
->from('cards')
->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId)));
@@ -525,7 +525,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
*/
function getCard($addressBookId, $cardUri) {
$query = $this->db->getQueryBuilder();
- $query->select(['id', 'uri', 'lastmodified', 'etag', 'size', 'carddata'])
+ $query->select(['id', 'uri', 'lastmodified', 'etag', 'size', 'carddata', 'uid'])
->from('cards')
->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId)))
->andWhere($query->expr()->eq('uri', $query->createNamedParameter($cardUri)))
@@ -563,7 +563,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
$cards = [];
$query = $this->db->getQueryBuilder();
- $query->select(['id', 'uri', 'lastmodified', 'etag', 'size', 'carddata'])
+ $query->select(['id', 'uri', 'lastmodified', 'etag', 'size', 'carddata', 'uid'])
->from('cards')
->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId)))
->andWhere($query->expr()->in('uri', $query->createParameter('uri')));
@@ -609,6 +609,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
*/
function createCard($addressBookId, $cardUri, $cardData) {
$etag = md5($cardData);
+ $uid = $this->getUID($cardData);
$query = $this->db->getQueryBuilder();
$query->insert('cards')
@@ -619,6 +620,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
'addressbookid' => $query->createNamedParameter($addressBookId),
'size' => $query->createNamedParameter(strlen($cardData)),
'etag' => $query->createNamedParameter($etag),
+ 'uid' => $query->createNamedParameter($uid),
])
->execute();
@@ -661,6 +663,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
*/
function updateCard($addressBookId, $cardUri, $cardData) {
+ $uid = $this->getUID($cardData);
$etag = md5($cardData);
$query = $this->db->getQueryBuilder();
$query->update('cards')
@@ -668,6 +671,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
->set('lastmodified', $query->createNamedParameter(time()))
->set('size', $query->createNamedParameter(strlen($cardData)))
->set('etag', $query->createNamedParameter($etag))
+ ->set('uid', $query->createNamedParameter($uid))
->where($query->expr()->eq('uri', $query->createNamedParameter($cardUri)))
->andWhere($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId)))
->execute();
@@ -1125,4 +1129,25 @@ class CardDavBackend implements BackendInterface, SyncSupport {
$addressbookInfo[$displaynameKey] = $principalInformation['{DAV:}displayname'];
}
}
+
+ /**
+ * Extract UID from vcard
+ *
+ * @param string $cardData the vcard raw data
+ * @return string the uid
+ * @throws BadRequest if no UID is available
+ */
+ private function getUID($cardData) {
+ if ($cardData != '') {
+ $vCard = Reader::read($cardData);
+ if ($vCard->UID) {
+ $uid = $vCard->UID->getValue();
+ return $uid;
+ }
+ // should already be handled, but just in case
+ throw new BadRequest('vCards on CardDAV servers MUST have a UID property');
+ }
+ // should already be handled, but just in case
+ throw new BadRequest('vCard can not be empty');
+ }
}
diff --git a/apps/dav/lib/Connector/Sabre/Auth.php b/apps/dav/lib/Connector/Sabre/Auth.php
index fcd1b34edbc..292be61c9dc 100644
--- a/apps/dav/lib/Connector/Sabre/Auth.php
+++ b/apps/dav/lib/Connector/Sabre/Auth.php
@@ -228,11 +228,12 @@ class Auth extends AbstractBasic {
if($this->twoFactorManager->needsSecondFactor($this->userSession->getUser())) {
throw new \Sabre\DAV\Exception\NotAuthenticated('2FA challenge not passed.');
}
- if (\OC_User::handleApacheAuth() ||
+ if (
//Fix for broken webdav clients
($this->userSession->isLoggedIn() && is_null($this->session->get(self::DAV_AUTHENTICATED))) ||
//Well behaved clients that only send the cookie are allowed
- ($this->userSession->isLoggedIn() && $this->session->get(self::DAV_AUTHENTICATED) === $this->userSession->getUser()->getUID() && $request->getHeader('Authorization') === null)
+ ($this->userSession->isLoggedIn() && $this->session->get(self::DAV_AUTHENTICATED) === $this->userSession->getUser()->getUID() && $request->getHeader('Authorization') === null) ||
+ \OC_User::handleApacheAuth()
) {
$user = $this->userSession->getUser()->getUID();
\OC_Util::setupFS($user);
diff --git a/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php b/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php
index ecfd0e5692d..d134a0efaff 100644
--- a/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php
@@ -26,6 +26,7 @@
namespace OCA\DAV\Connector\Sabre;
+use OCA\DAV\Connector\Sabre\Exception\FileLocked;
use OCA\DAV\Connector\Sabre\Exception\PasswordLoginForbidden;
use OCP\Files\StorageNotAvailableException;
use OCP\ILogger;
@@ -69,6 +70,8 @@ class ExceptionLoggerPlugin extends \Sabre\DAV\ServerPlugin {
// happens when a certain method is not allowed to be called
// for example creating a folder that already exists
MethodNotAllowed::class => true,
+ // A locked file is perfectly valid and can happen in various cases
+ FileLocked::class => true,
];
/** @var string */
diff --git a/apps/dav/lib/Migration/Version1008Date20181030113700.php b/apps/dav/lib/Migration/Version1008Date20181030113700.php
new file mode 100644
index 00000000000..1cc6223a9e9
--- /dev/null
+++ b/apps/dav/lib/Migration/Version1008Date20181030113700.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018, John Molakvoæ (skjnldsv@protonmail.com)
+ *
+ * @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
+ *
+ * @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\Migration;
+
+use Closure;
+
+use Doctrine\DBAL\Types\Type;
+use OCP\DB\ISchemaWrapper;
+use OCP\Migration\SimpleMigrationStep;
+use OCP\Migration\IOutput;
+
+/**
+ * add column for share notes
+ *
+ * Class Version15000Date20180927120000
+ */
+class Version1008Date20181030113700 extends SimpleMigrationStep {
+ public function changeSchema(IOutput $output, Closure $schemaClosure, array $options) {
+
+ /** @var ISchemaWrapper $schema */
+ $schema = $schemaClosure();
+
+ $table = $schema->getTable('cards');
+ $table->addColumn('uid', Type::STRING, [
+ 'notnull' => false,
+ 'length' => 255
+ ]);
+
+ return $schema;
+ }
+}
diff --git a/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php b/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php
index 739b81ddf01..651fbf5eaf8 100644
--- a/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php
+++ b/apps/dav/tests/unit/CardDAV/BirthdayServiceTest.php
@@ -231,9 +231,9 @@ class BirthdayServiceTest extends TestCase {
if ($expectedOp === 'create') {
$service->expects($this->exactly(3))->method('buildDateFromContact')->willReturn(new VCalendar());
$this->calDav->expects($this->exactly(3))->method('createCalendarObject')->withConsecutive(
- [1234, 'default-gump.vcf.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.2//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"],
- [1234, 'default-gump.vcf-death.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.2//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"],
- [1234, 'default-gump.vcf-anniversary.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.2//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"]
+ [1234, 'default-gump.vcf.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.6//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"],
+ [1234, 'default-gump.vcf-death.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.6//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"],
+ [1234, 'default-gump.vcf-anniversary.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.6//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"]
);
}
if ($expectedOp === 'update') {
@@ -241,9 +241,9 @@ class BirthdayServiceTest extends TestCase {
$service->expects($this->exactly(3))->method('birthdayEvenChanged')->willReturn(true);
$this->calDav->expects($this->exactly(3))->method('getCalendarObject')->willReturn(['calendardata' => '']);
$this->calDav->expects($this->exactly(3))->method('updateCalendarObject')->withConsecutive(
- [1234, 'default-gump.vcf.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.2//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"],
- [1234, 'default-gump.vcf-death.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.2//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"],
- [1234, 'default-gump.vcf-anniversary.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.2//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"]
+ [1234, 'default-gump.vcf.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.6//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"],
+ [1234, 'default-gump.vcf-death.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.6//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"],
+ [1234, 'default-gump.vcf-anniversary.ics', "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Sabre//Sabre VObject 4.1.6//EN\r\nCALSCALE:GREGORIAN\r\nEND:VCALENDAR\r\n"]
);
}
diff --git a/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php b/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php
index 816ba670990..2f5287df82c 100644
--- a/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php
+++ b/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php
@@ -87,6 +87,14 @@ class CardDavBackendTest extends TestCase {
const UNIT_TEST_USER1 = 'principals/users/carddav-unit-test1';
const UNIT_TEST_GROUP = 'principals/groups/carddav-unit-test-group';
+ private $vcardTest = 'BEGIN:VCARD'.PHP_EOL.
+ 'VERSION:3.0'.PHP_EOL.
+ 'PRODID:-//Sabre//Sabre VObject 4.1.2//EN'.PHP_EOL.
+ 'UID:Test'.PHP_EOL.
+ 'FN:Test'.PHP_EOL.
+ 'N:Test;;;;'.PHP_EOL.
+ 'END:VCARD';
+
public function setUp() {
parent::setUp();
@@ -121,7 +129,6 @@ class CardDavBackendTest extends TestCase {
$query = $this->db->getQueryBuilder();
$query->delete('cards')->execute();
-
$this->tearDown();
}
@@ -217,8 +224,8 @@ class CardDavBackendTest extends TestCase {
$uri = $this->getUniqueID('card');
// updateProperties is expected twice, once for createCard and once for updateCard
- $backend->expects($this->at(0))->method('updateProperties')->with($bookId, $uri, '');
- $backend->expects($this->at(1))->method('updateProperties')->with($bookId, $uri, '***');
+ $backend->expects($this->at(0))->method('updateProperties')->with($bookId, $uri, $this->vcardTest);
+ $backend->expects($this->at(1))->method('updateProperties')->with($bookId, $uri, $this->vcardTest);
// Expect event
$this->dispatcher->expects($this->at(0))
@@ -226,16 +233,16 @@ class CardDavBackendTest extends TestCase {
->with('\OCA\DAV\CardDAV\CardDavBackend::createCard', $this->callback(function(GenericEvent $e) use ($bookId, $uri) {
return $e->getArgument('addressBookId') === $bookId &&
$e->getArgument('cardUri') === $uri &&
- $e->getArgument('cardData') === '';
+ $e->getArgument('cardData') === $this->vcardTest;
}));
// create a card
- $backend->createCard($bookId, $uri, '');
+ $backend->createCard($bookId, $uri, $this->vcardTest);
// get all the cards
$cards = $backend->getCards($bookId);
$this->assertEquals(1, count($cards));
- $this->assertEquals('', $cards[0]['carddata']);
+ $this->assertEquals($this->vcardTest, $cards[0]['carddata']);
// get the cards
$card = $backend->getCard($bookId, $uri);
@@ -245,7 +252,7 @@ class CardDavBackendTest extends TestCase {
$this->assertArrayHasKey('lastmodified', $card);
$this->assertArrayHasKey('etag', $card);
$this->assertArrayHasKey('size', $card);
- $this->assertEquals('', $card['carddata']);
+ $this->assertEquals($this->vcardTest, $card['carddata']);
// Expect event
$this->dispatcher->expects($this->at(0))
@@ -253,13 +260,13 @@ class CardDavBackendTest extends TestCase {
->with('\OCA\DAV\CardDAV\CardDavBackend::updateCard', $this->callback(function(GenericEvent $e) use ($bookId, $uri) {
return $e->getArgument('addressBookId') === $bookId &&
$e->getArgument('cardUri') === $uri &&
- $e->getArgument('cardData') === '***';
+ $e->getArgument('cardData') === $this->vcardTest;
}));
// update the card
- $backend->updateCard($bookId, $uri, '***');
+ $backend->updateCard($bookId, $uri, $this->vcardTest);
$card = $backend->getCard($bookId, $uri);
- $this->assertEquals('***', $card['carddata']);
+ $this->assertEquals($this->vcardTest, $card['carddata']);
// Expect event
$this->dispatcher->expects($this->at(0))
@@ -290,18 +297,18 @@ class CardDavBackendTest extends TestCase {
// create a card
$uri0 = $this->getUniqueID('card');
- $this->backend->createCard($bookId, $uri0, '');
+ $this->backend->createCard($bookId, $uri0, $this->vcardTest);
$uri1 = $this->getUniqueID('card');
- $this->backend->createCard($bookId, $uri1, '');
+ $this->backend->createCard($bookId, $uri1, $this->vcardTest);
$uri2 = $this->getUniqueID('card');
- $this->backend->createCard($bookId, $uri2, '');
+ $this->backend->createCard($bookId, $uri2, $this->vcardTest);
// get all the cards
$cards = $this->backend->getCards($bookId);
$this->assertEquals(3, count($cards));
- $this->assertEquals('', $cards[0]['carddata']);
- $this->assertEquals('', $cards[1]['carddata']);
- $this->assertEquals('', $cards[2]['carddata']);
+ $this->assertEquals($this->vcardTest, $cards[0]['carddata']);
+ $this->assertEquals($this->vcardTest, $cards[1]['carddata']);
+ $this->assertEquals($this->vcardTest, $cards[2]['carddata']);
// get the cards
$cards = $this->backend->getMultipleCards($bookId, [$uri1, $uri2]);
@@ -312,7 +319,7 @@ class CardDavBackendTest extends TestCase {
$this->assertArrayHasKey('lastmodified', $card);
$this->assertArrayHasKey('etag', $card);
$this->assertArrayHasKey('size', $card);
- $this->assertEquals('', $card['carddata']);
+ $this->assertEquals($this->vcardTest, $card['carddata']);
}
// delete the card
@@ -357,7 +364,7 @@ class CardDavBackendTest extends TestCase {
->method('purgeProperties');
// create a card
- $this->backend->createCard($bookId, $uri, '');
+ $this->backend->createCard($bookId, $uri, $this->vcardTest);
// delete the card
$this->assertTrue($this->backend->deleteCard($bookId, $uri));
@@ -380,7 +387,7 @@ class CardDavBackendTest extends TestCase {
// add a change
$uri0 = $this->getUniqueID('card');
- $this->backend->createCard($bookId, $uri0, '');
+ $this->backend->createCard($bookId, $uri0, $this->vcardTest);
// look for changes
$changes = $this->backend->getChangesForAddressBook($bookId, $syncToken, 1);
@@ -683,7 +690,7 @@ class CardDavBackendTest extends TestCase {
}
$result = $this->backend->getContact(0, 'uri0');
- $this->assertSame(7, count($result));
+ $this->assertSame(8, count($result));
$this->assertSame(0, (int)$result['addressbookid']);
$this->assertSame('uri0', $result['uri']);
$this->assertSame(5489543, (int)$result['lastmodified']);
diff --git a/apps/dav/tests/unit/Connector/Sabre/RequestTest/DownloadTest.php b/apps/dav/tests/unit/Connector/Sabre/RequestTest/DownloadTest.php
index 2cb08420f8d..127d48bd186 100644
--- a/apps/dav/tests/unit/Connector/Sabre/RequestTest/DownloadTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/RequestTest/DownloadTest.php
@@ -46,9 +46,6 @@ class DownloadTest extends RequestTestCase {
$this->assertEquals(stream_get_contents($response->getBody()), 'bar');
}
- /**
- * @expectedException \OCA\DAV\Connector\Sabre\Exception\FileLocked
- */
public function testDownloadWriteLocked() {
$user = $this->getUniqueID();
$view = $this->setupUser($user, 'pass');
@@ -57,7 +54,8 @@ class DownloadTest extends RequestTestCase {
$view->lockFile('/foo.txt', ILockingProvider::LOCK_EXCLUSIVE);
- $this->request($view, $user, 'pass', 'GET', '/foo.txt', 'asd');
+ $result = $this->request($view, $user, 'pass', 'GET', '/foo.txt', 'asd');
+ $this->assertEquals(Http::STATUS_LOCKED, $result->getStatus());
}
public function testDownloadReadLocked() {
diff --git a/apps/dav/tests/unit/Connector/Sabre/RequestTest/UploadTest.php b/apps/dav/tests/unit/Connector/Sabre/RequestTest/UploadTest.php
index 5376241c61d..6ac3d66bad3 100644
--- a/apps/dav/tests/unit/Connector/Sabre/RequestTest/UploadTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/RequestTest/UploadTest.php
@@ -68,9 +68,6 @@ class UploadTest extends RequestTestCase {
$this->assertEquals(3, $info->getSize());
}
- /**
- * @expectedException \OCA\DAV\Connector\Sabre\Exception\FileLocked
- */
public function testUploadOverWriteReadLocked() {
$user = $this->getUniqueID();
$view = $this->setupUser($user, 'pass');
@@ -79,12 +76,10 @@ class UploadTest extends RequestTestCase {
$view->lockFile('/foo.txt', ILockingProvider::LOCK_SHARED);
- $this->request($view, $user, 'pass', 'PUT', '/foo.txt', 'asd');
+ $result = $this->request($view, $user, 'pass', 'PUT', '/foo.txt', 'asd');
+ $this->assertEquals(Http::STATUS_LOCKED, $result->getStatus());
}
- /**
- * @expectedException \OCA\DAV\Connector\Sabre\Exception\FileLocked
- */
public function testUploadOverWriteWriteLocked() {
$user = $this->getUniqueID();
$view = $this->setupUser($user, 'pass');
@@ -94,7 +89,8 @@ class UploadTest extends RequestTestCase {
$view->lockFile('/foo.txt', ILockingProvider::LOCK_EXCLUSIVE);
- $this->request($view, $user, 'pass', 'PUT', '/foo.txt', 'asd');
+ $result = $this->request($view, $user, 'pass', 'PUT', '/foo.txt', 'asd');
+ $this->assertEquals(Http::STATUS_LOCKED, $result->getStatus());
}
public function testChunkedUpload() {
@@ -162,9 +158,6 @@ class UploadTest extends RequestTestCase {
$this->assertEquals(6, $info->getSize());
}
- /**
- * @expectedException \OCA\DAV\Connector\Sabre\Exception\FileLocked
- */
public function testChunkedUploadOutOfOrderReadLocked() {
$user = $this->getUniqueID();
$view = $this->setupUser($user, 'pass');
@@ -184,12 +177,10 @@ class UploadTest extends RequestTestCase {
$this->assertFalse($view->file_exists('foo.txt'));
// last chunk should trigger the locked error since it tries to assemble
- $this->request($view, $user, 'pass', 'PUT', '/foo.txt-chunking-123-2-0', 'asd', ['OC-Chunked' => '1']);
+ $result = $this->request($view, $user, 'pass', 'PUT', '/foo.txt-chunking-123-2-0', 'asd', ['OC-Chunked' => '1']);
+ $this->assertEquals(Http::STATUS_LOCKED, $result->getStatus());
}
- /**
- * @expectedException \OCA\DAV\Connector\Sabre\Exception\FileLocked
- */
public function testChunkedUploadOutOfOrderWriteLocked() {
$user = $this->getUniqueID();
$view = $this->setupUser($user, 'pass');
@@ -209,6 +200,7 @@ class UploadTest extends RequestTestCase {
$this->assertFalse($view->file_exists('foo.txt'));
// last chunk should trigger the locked error since it tries to assemble
- $this->request($view, $user, 'pass', 'PUT', '/foo.txt-chunking-123-2-0', 'asd', ['OC-Chunked' => '1']);
+ $result = $this->request($view, $user, 'pass', 'PUT', '/foo.txt-chunking-123-2-0', 'asd', ['OC-Chunked' => '1']);
+ $this->assertEquals(Http::STATUS_LOCKED, $result->getStatus());
}
}
diff --git a/apps/encryption/l10n/hu.js b/apps/encryption/l10n/hu.js
index e0bf45fbd33..aa574cf5301 100644
--- a/apps/encryption/l10n/hu.js
+++ b/apps/encryption/l10n/hu.js
@@ -31,6 +31,7 @@ OC.L10N.register(
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "A fájlt nem sikerült visszafejteni, valószínűleg ez egy megosztott fájl. Kérje meg a fájl tulajdonosát, hogy újra ossza meg veled ezt az állományt!",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Ez a fájl nem olvasható, valószínűleg ez egy megosztott fájl. Kérd meg a tulajdonosát, hogy ossza meg veled újra ezt a fájlt.",
"Default encryption module" : "Alapértelmezett titkosítási modul",
+ "Default encryption module for server-side encryption" : "Alapértelmezett titkossítási modul a szerver oldali titkosításhoz",
"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" : "Szia!\n\nA rendszergazda bekapcsolta a szerver-oldali titkosítást. A fájljaid ezzel a jelszóval lettek titkosítva: '%s'.\n\nKérlek jelentkezz be a webes felületre és a személyes beállítások 'alap titkosítási modul' szekcióban frissítsd a titkosítási jelszavad, úgy hogy megadod a 'régi bejelentkezési jelszó' mezőben ezt a jelszót, majd az aktuális bejelentkezési jelszavad.\n\n",
"The share will expire on %s." : "A megosztás lejár ekkor %s",
"Cheers!" : "Üdv.",
diff --git a/apps/encryption/l10n/hu.json b/apps/encryption/l10n/hu.json
index 1d08162c1eb..b49d0d56ea1 100644
--- a/apps/encryption/l10n/hu.json
+++ b/apps/encryption/l10n/hu.json
@@ -29,6 +29,7 @@
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "A fájlt nem sikerült visszafejteni, valószínűleg ez egy megosztott fájl. Kérje meg a fájl tulajdonosát, hogy újra ossza meg veled ezt az állományt!",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "Ez a fájl nem olvasható, valószínűleg ez egy megosztott fájl. Kérd meg a tulajdonosát, hogy ossza meg veled újra ezt a fájlt.",
"Default encryption module" : "Alapértelmezett titkosítási modul",
+ "Default encryption module for server-side encryption" : "Alapértelmezett titkossítási modul a szerver oldali titkosításhoz",
"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" : "Szia!\n\nA rendszergazda bekapcsolta a szerver-oldali titkosítást. A fájljaid ezzel a jelszóval lettek titkosítva: '%s'.\n\nKérlek jelentkezz be a webes felületre és a személyes beállítások 'alap titkosítási modul' szekcióban frissítsd a titkosítási jelszavad, úgy hogy megadod a 'régi bejelentkezési jelszó' mezőben ezt a jelszót, majd az aktuális bejelentkezési jelszavad.\n\n",
"The share will expire on %s." : "A megosztás lejár ekkor %s",
"Cheers!" : "Üdv.",
diff --git a/apps/federatedfilesharing/l10n/lt_LT.js b/apps/federatedfilesharing/l10n/lt_LT.js
index 70e35fc8f63..2d353b2a43b 100644
--- a/apps/federatedfilesharing/l10n/lt_LT.js
+++ b/apps/federatedfilesharing/l10n/lt_LT.js
@@ -5,7 +5,7 @@ OC.L10N.register(
"Remote share" : "Kitame serveryje pasidalinti duomenys",
"Remote share password" : "Kitame serveryje pasidalintų duomenų slaptažodis",
"Cancel" : "Atsisakyti",
- "Add remote share" : "Pasidalinti duomenimis kitame serveryje",
+ "Add remote share" : "Pridėti nuotolinį viešinį",
"Copy" : "Kopijuoti",
"Copied!" : "Adresas nukopijuotas",
"Not supported!" : "Nepalaikoma!",
@@ -27,7 +27,7 @@ OC.L10N.register(
"Decline" : "Atmesti",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Pasidalinti su manimi per #Nextcloud Centralizuoto Serverio ID, toliau %s",
"Share with me through my #Nextcloud Federated Cloud ID" : "Pasidalinti su manimi per #Nextcloud Centralizuoto Serverio ID",
- "Sharing" : "Duomenų keitimasis",
+ "Sharing" : "Duomenų bendrinimas",
"Federated Cloud Sharing" : "Duomenų keitimasis tarp saugyklų",
"Open documentation" : "Detalesnė informacija",
"Adjust how people can share between servers." : "Nustatyti taisykles, kaip naudotojai gali keistis duomenimis tarp saugyklų",
diff --git a/apps/federatedfilesharing/l10n/lt_LT.json b/apps/federatedfilesharing/l10n/lt_LT.json
index b5f5b7574f2..8c3ef449249 100644
--- a/apps/federatedfilesharing/l10n/lt_LT.json
+++ b/apps/federatedfilesharing/l10n/lt_LT.json
@@ -3,7 +3,7 @@
"Remote share" : "Kitame serveryje pasidalinti duomenys",
"Remote share password" : "Kitame serveryje pasidalintų duomenų slaptažodis",
"Cancel" : "Atsisakyti",
- "Add remote share" : "Pasidalinti duomenimis kitame serveryje",
+ "Add remote share" : "Pridėti nuotolinį viešinį",
"Copy" : "Kopijuoti",
"Copied!" : "Adresas nukopijuotas",
"Not supported!" : "Nepalaikoma!",
@@ -25,7 +25,7 @@
"Decline" : "Atmesti",
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Pasidalinti su manimi per #Nextcloud Centralizuoto Serverio ID, toliau %s",
"Share with me through my #Nextcloud Federated Cloud ID" : "Pasidalinti su manimi per #Nextcloud Centralizuoto Serverio ID",
- "Sharing" : "Duomenų keitimasis",
+ "Sharing" : "Duomenų bendrinimas",
"Federated Cloud Sharing" : "Duomenų keitimasis tarp saugyklų",
"Open documentation" : "Detalesnė informacija",
"Adjust how people can share between servers." : "Nustatyti taisykles, kaip naudotojai gali keistis duomenimis tarp saugyklų",
diff --git a/apps/federatedfilesharing/l10n/pl.js b/apps/federatedfilesharing/l10n/pl.js
index a8ce17ef8e9..d60b590dd48 100644
--- a/apps/federatedfilesharing/l10n/pl.js
+++ b/apps/federatedfilesharing/l10n/pl.js
@@ -17,8 +17,12 @@ OC.L10N.register(
"Couldn't establish a federated share." : "Nie udało się ustalić Stowarzyszonego udostępnienia.",
"Couldn't establish a federated share, maybe the password was wrong." : "Nie udało się ustalić Stowarzyszonego udostępnienia, może być błędne hasło.",
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Wysłano żądanie Udostępniania Stowarzyszonego, otrzymasz zaproszenie. Sprawdzaj swoje powiadomienia.",
+ "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Nie można ustanowić stowarzyszonego udziału, wygląda na to, że serwer wybrany do stowarzyszenia jest zbyt stary (Nextcloud <= 9).",
+ "It is not allowed to send federated group shares from this server." : "Wysyłanie stowarzyszonych udziałów grupowych z tego serwera jest zabronione.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Udostępnianie %1$snie powiodło się, ponieważ ten element jest już udostępniony jako %2$s",
"Not allowed to create a federated share with the same user" : "Nie można tworzyć stowarzyszonego udziału z tym samym użytkownikiem",
"File is already shared with %s" : "Plik jest już współdzielony z %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Udostępnianie %1$s nie powiodło się, nie można odnaleźć %2$s, być może serwer jest nieosiągalny lub używa certyfikatu z podpisem własnym.",
"Could not find share" : "Nie można znaleźć powiązania",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Otrzymałeś \"%3$s\" w zdalnym udziale z %1$s (w imieniu %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Otrzymałeś {share} w zdalnym udziale z {user} (w imieniu {behalf})",
@@ -29,11 +33,15 @@ OC.L10N.register(
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Podziel się ze mną przez mój ID #Nextcloud Stowarzyszonej Chmury, zobacz %s",
"Share with me through my #Nextcloud Federated Cloud ID" : "Podziel się ze mną przez mój ID #Nextcloud Stowarzyszonej Chmury",
"Sharing" : "Udostępnianie",
+ "Federated file sharing" : "Stowarzyszone udziały grupowe",
+ "Provide federated file sharing across servers" : "Zezwól na stowarzyszone udostępnianie plików na serwerach",
"Federated Cloud Sharing" : "Dzielenie się ze Stowarzyszoną Chmurą",
"Open documentation" : "Otwórz dokumentację",
"Adjust how people can share between servers." : "Dostosuj ustawienia współdzielenia między serwerami.",
"Allow users on this server to send shares to other servers" : "Zezwalaj użytkownikom na tym serwerze wysłać udostępnienia do innych serwerów",
"Allow users on this server to receive shares from other servers" : "Zezwalaj użytkownikom na tym serwerze do otrzymania udostępnień z innych serwerów",
+ "Allow users on this server to send shares to groups on other servers" : "Pozwól użytkownikom na tym serwerze na wysyłanie udziałów do grup na innych serwerach",
+ "Allow users on this server to receive group shares from other servers" : "Pozwól użytkownikom na tym serwerze na odbieranie udziałów grupy z innych serwerów",
"Search global and public address book for users" : "Szukaj użytkowników w globalnej i publicznej książce adresowej",
"Allow users to publish their data to a global and public address book" : "Pozwól użytkownikom na publikację ich danych do globalnej i publicznej książki adresowej",
"Federated Cloud" : "Stowarzyszona Chmura",
diff --git a/apps/federatedfilesharing/l10n/pl.json b/apps/federatedfilesharing/l10n/pl.json
index b7191f76892..745a1faf504 100644
--- a/apps/federatedfilesharing/l10n/pl.json
+++ b/apps/federatedfilesharing/l10n/pl.json
@@ -15,8 +15,12 @@
"Couldn't establish a federated share." : "Nie udało się ustalić Stowarzyszonego udostępnienia.",
"Couldn't establish a federated share, maybe the password was wrong." : "Nie udało się ustalić Stowarzyszonego udostępnienia, może być błędne hasło.",
"Federated Share request sent, you will receive an invitation. Check your notifications." : "Wysłano żądanie Udostępniania Stowarzyszonego, otrzymasz zaproszenie. Sprawdzaj swoje powiadomienia.",
+ "Couldn't establish a federated share, it looks like the server to federate with is too old (Nextcloud <= 9)." : "Nie można ustanowić stowarzyszonego udziału, wygląda na to, że serwer wybrany do stowarzyszenia jest zbyt stary (Nextcloud <= 9).",
+ "It is not allowed to send federated group shares from this server." : "Wysyłanie stowarzyszonych udziałów grupowych z tego serwera jest zabronione.",
+ "Sharing %1$s failed, because this item is already shared with %2$s" : "Udostępnianie %1$snie powiodło się, ponieważ ten element jest już udostępniony jako %2$s",
"Not allowed to create a federated share with the same user" : "Nie można tworzyć stowarzyszonego udziału z tym samym użytkownikiem",
"File is already shared with %s" : "Plik jest już współdzielony z %s",
+ "Sharing %1$s failed, could not find %2$s, maybe the server is currently unreachable or uses a self-signed certificate." : "Udostępnianie %1$s nie powiodło się, nie można odnaleźć %2$s, być może serwer jest nieosiągalny lub używa certyfikatu z podpisem własnym.",
"Could not find share" : "Nie można znaleźć powiązania",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Otrzymałeś \"%3$s\" w zdalnym udziale z %1$s (w imieniu %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Otrzymałeś {share} w zdalnym udziale z {user} (w imieniu {behalf})",
@@ -27,11 +31,15 @@
"Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Podziel się ze mną przez mój ID #Nextcloud Stowarzyszonej Chmury, zobacz %s",
"Share with me through my #Nextcloud Federated Cloud ID" : "Podziel się ze mną przez mój ID #Nextcloud Stowarzyszonej Chmury",
"Sharing" : "Udostępnianie",
+ "Federated file sharing" : "Stowarzyszone udziały grupowe",
+ "Provide federated file sharing across servers" : "Zezwól na stowarzyszone udostępnianie plików na serwerach",
"Federated Cloud Sharing" : "Dzielenie się ze Stowarzyszoną Chmurą",
"Open documentation" : "Otwórz dokumentację",
"Adjust how people can share between servers." : "Dostosuj ustawienia współdzielenia między serwerami.",
"Allow users on this server to send shares to other servers" : "Zezwalaj użytkownikom na tym serwerze wysłać udostępnienia do innych serwerów",
"Allow users on this server to receive shares from other servers" : "Zezwalaj użytkownikom na tym serwerze do otrzymania udostępnień z innych serwerów",
+ "Allow users on this server to send shares to groups on other servers" : "Pozwól użytkownikom na tym serwerze na wysyłanie udziałów do grup na innych serwerach",
+ "Allow users on this server to receive group shares from other servers" : "Pozwól użytkownikom na tym serwerze na odbieranie udziałów grupy z innych serwerów",
"Search global and public address book for users" : "Szukaj użytkowników w globalnej i publicznej książce adresowej",
"Allow users to publish their data to a global and public address book" : "Pozwól użytkownikom na publikację ich danych do globalnej i publicznej książki adresowej",
"Federated Cloud" : "Stowarzyszona Chmura",
diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js
index 36976f81ed5..fa6cc3d551f 100644
--- a/apps/files/l10n/hu.js
+++ b/apps/files/l10n/hu.js
@@ -135,12 +135,14 @@ OC.L10N.register(
"Save" : "Mentés",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "PHP-FPM-mel akár 5 percbe is telhet, míg ez a beállítás érvénybe lép.",
"Missing permissions to edit from here." : "Innen nem lehet szerkeszteni hiányzó jogosultság miatt.",
+ "%1$s of %2$s used" : "%1$s a %2$s-ból használva",
"%s used" : "%s használt",
"Settings" : "Beállítások",
"Show hidden files" : "Rejtett fájlok megjelenítése",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">access your Files via WebDAV</a>" : "Használd ezt a címet a <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">fájlok WebDAV-al való eléréséhez</a>",
"Cancel upload" : "Feltöltés megszakítása",
+ "Toggle grid view" : "Rácsnézet váltás",
"No files in here" : "Itt nincsenek fájlok",
"Upload some content or sync with your devices!" : "Tölts fel néhány tartalmat, vagy szinkronizálj az eszközöddel!",
"No entries found in this folder" : "Nincsenek bejegyzések ebben a mappában",
diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json
index a8167476a09..a9ae0edd3ca 100644
--- a/apps/files/l10n/hu.json
+++ b/apps/files/l10n/hu.json
@@ -133,12 +133,14 @@
"Save" : "Mentés",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "PHP-FPM-mel akár 5 percbe is telhet, míg ez a beállítás érvénybe lép.",
"Missing permissions to edit from here." : "Innen nem lehet szerkeszteni hiányzó jogosultság miatt.",
+ "%1$s of %2$s used" : "%1$s a %2$s-ból használva",
"%s used" : "%s használt",
"Settings" : "Beállítások",
"Show hidden files" : "Rejtett fájlok megjelenítése",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">access your Files via WebDAV</a>" : "Használd ezt a címet a <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">fájlok WebDAV-al való eléréséhez</a>",
"Cancel upload" : "Feltöltés megszakítása",
+ "Toggle grid view" : "Rácsnézet váltás",
"No files in here" : "Itt nincsenek fájlok",
"Upload some content or sync with your devices!" : "Tölts fel néhány tartalmat, vagy szinkronizálj az eszközöddel!",
"No entries found in this folder" : "Nincsenek bejegyzések ebben a mappában",
diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js
index 8ce30e83255..33267c118db 100644
--- a/apps/files/l10n/ja.js
+++ b/apps/files/l10n/ja.js
@@ -25,6 +25,7 @@ OC.L10N.register(
"Target folder does not exist any more" : "対象フォルダーがもう存在しません",
"Actions" : "アクション",
"Rename" : "名前の変更",
+ "Copy" : "コピー",
"Disconnect storage" : "ストレージを切断する",
"Unshare" : "共有解除",
"Could not load info for file \"{file}\"" : "\"{file}\" ファイルの情報を読み込めませんでした",
diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json
index 12bc0e63958..1d29f71f1cb 100644
--- a/apps/files/l10n/ja.json
+++ b/apps/files/l10n/ja.json
@@ -23,6 +23,7 @@
"Target folder does not exist any more" : "対象フォルダーがもう存在しません",
"Actions" : "アクション",
"Rename" : "名前の変更",
+ "Copy" : "コピー",
"Disconnect storage" : "ストレージを切断する",
"Unshare" : "共有解除",
"Could not load info for file \"{file}\"" : "\"{file}\" ファイルの情報を読み込めませんでした",
diff --git a/apps/files/l10n/lt_LT.js b/apps/files/l10n/lt_LT.js
index b5285ef13fc..7639d3ac4be 100644
--- a/apps/files/l10n/lt_LT.js
+++ b/apps/files/l10n/lt_LT.js
@@ -16,11 +16,14 @@ OC.L10N.register(
"Could not create folder \"{dir}\"" : "Nepavyko sukurti aplanko \"{dir}\"",
"Upload cancelled." : "Įkėlimo atsisakyta.",
"…" : "...",
+ "Processing files …" : "Apdorojami failai …",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Nepavyksta įkelti {filename}, nes tai yra katalogas arba šio failo dydis yra 0 baitų",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Nepakanka laisvos vietos. Jūs bandote įkelti {size1} dydžio bylą, bet liko tik {size2} vietos",
"Target folder \"{dir}\" does not exist any more" : "Paskirties aplanko \"{dir}\" daugiau nebėra",
"Not enough free space" : "Trūksta laisvos vietos",
+ "Uploading …" : "Įkeliama …",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} iš {totalSize} ({bitrate})",
+ "Uploading that item is not supported" : "To elemento įkėlimas nėra palaikomas",
"Target folder does not exist any more" : "Paskirties aplanko daugiau nebėra",
"Actions" : "Veiksmai",
"Rename" : "Pervadinti",
@@ -122,6 +125,7 @@ OC.L10N.register(
"Show hidden files" : "Rodyti paslėptus failus",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">Nuoroda WebDAV palankančiai programinei įrangai</a>",
+ "Cancel upload" : "Atsisakyti įkėlimo",
"No files in here" : "Aplankas tuščias",
"Upload some content or sync with your devices!" : "Įkelkite duomenis, dalinkitės su kitais ",
"No entries found in this folder" : "Nerasta įrašų šiame aplanke",
diff --git a/apps/files/l10n/lt_LT.json b/apps/files/l10n/lt_LT.json
index 7fe6d37d107..32a5326575f 100644
--- a/apps/files/l10n/lt_LT.json
+++ b/apps/files/l10n/lt_LT.json
@@ -14,11 +14,14 @@
"Could not create folder \"{dir}\"" : "Nepavyko sukurti aplanko \"{dir}\"",
"Upload cancelled." : "Įkėlimo atsisakyta.",
"…" : "...",
+ "Processing files …" : "Apdorojami failai …",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Nepavyksta įkelti {filename}, nes tai yra katalogas arba šio failo dydis yra 0 baitų",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Nepakanka laisvos vietos. Jūs bandote įkelti {size1} dydžio bylą, bet liko tik {size2} vietos",
"Target folder \"{dir}\" does not exist any more" : "Paskirties aplanko \"{dir}\" daugiau nebėra",
"Not enough free space" : "Trūksta laisvos vietos",
+ "Uploading …" : "Įkeliama …",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} iš {totalSize} ({bitrate})",
+ "Uploading that item is not supported" : "To elemento įkėlimas nėra palaikomas",
"Target folder does not exist any more" : "Paskirties aplanko daugiau nebėra",
"Actions" : "Veiksmai",
"Rename" : "Pervadinti",
@@ -120,6 +123,7 @@
"Show hidden files" : "Rodyti paslėptus failus",
"WebDAV" : "WebDAV",
"Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">access your Files via WebDAV</a>" : "<a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">Nuoroda WebDAV palankančiai programinei įrangai</a>",
+ "Cancel upload" : "Atsisakyti įkėlimo",
"No files in here" : "Aplankas tuščias",
"Upload some content or sync with your devices!" : "Įkelkite duomenis, dalinkitės su kitais ",
"No entries found in this folder" : "Nerasta įrašų šiame aplanke",
diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js
index fdc18a2da3f..d1abeb033bc 100644
--- a/apps/files_sharing/l10n/cs.js
+++ b/apps/files_sharing/l10n/cs.js
@@ -88,9 +88,9 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "Sdílení veřejným odkazem je zakázáno správcem",
"Public upload disabled by the administrator" : "Nahrávání veřejností zakázáno správcem",
"Public upload is only possible for publicly shared folders" : "Veřejné nahrávání je možné pouze do veřejně sdílených šložek",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Sdílení %s posláním hesla přes Nextcloud Talk se nezdařilo, protože Nextcloud Talk není zapnutý",
"Invalid date, date format must be YYYY-MM-DD" : "Neplatné datum – je třeba, aby jeho formát byl RRRR-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Sdílení %1$s se nezdařilo, protože podpůrná vrstva nepodporuje typ sdílení %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Sdílení %s posláním hesla přes Nextcloud Talk se nezdařilo, protože Nextcloud Talk není zapnutý",
"You cannot share to a Circle if the app is not enabled" : "Do okruhu nemůžete sdílet, pokud není aplikace zapnuta",
"Please specify a valid circle" : "Zadejte platný okruh",
"Sharing %s failed because the back end does not support room shares" : "Sdílení %s se nezdařilo protože podpůrná vrstva nepodporuje sdílení místností",
diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json
index 877742a4a50..415c2b53b5f 100644
--- a/apps/files_sharing/l10n/cs.json
+++ b/apps/files_sharing/l10n/cs.json
@@ -86,9 +86,9 @@
"Public link sharing is disabled by the administrator" : "Sdílení veřejným odkazem je zakázáno správcem",
"Public upload disabled by the administrator" : "Nahrávání veřejností zakázáno správcem",
"Public upload is only possible for publicly shared folders" : "Veřejné nahrávání je možné pouze do veřejně sdílených šložek",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Sdílení %s posláním hesla přes Nextcloud Talk se nezdařilo, protože Nextcloud Talk není zapnutý",
"Invalid date, date format must be YYYY-MM-DD" : "Neplatné datum – je třeba, aby jeho formát byl RRRR-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Sdílení %1$s se nezdařilo, protože podpůrná vrstva nepodporuje typ sdílení %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Sdílení %s posláním hesla přes Nextcloud Talk se nezdařilo, protože Nextcloud Talk není zapnutý",
"You cannot share to a Circle if the app is not enabled" : "Do okruhu nemůžete sdílet, pokud není aplikace zapnuta",
"Please specify a valid circle" : "Zadejte platný okruh",
"Sharing %s failed because the back end does not support room shares" : "Sdílení %s se nezdařilo protože podpůrná vrstva nepodporuje sdílení místností",
diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js
index acac2952093..84b463aca49 100644
--- a/apps/files_sharing/l10n/de.js
+++ b/apps/files_sharing/l10n/de.js
@@ -88,9 +88,9 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "Die öffentliche Freigabe von Links ist durch den Administrator deaktiviert",
"Public upload disabled by the administrator" : "Das öffentliche Hochladen ist durch den Administrator deaktiviert",
"Public upload is only possible for publicly shared folders" : "Das öffentliche Hochladen ist nur für öffentlich freigegebene Ordner erlaubt",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "%s Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
"Invalid date, date format must be YYYY-MM-DD" : "Ungültiges Datum, das Datumsformat muss JJJJ-MM-TT sein",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Freigabe von %1$s fehlgeschlagen, da das Backend die Freigabe vom Typ %2$s nicht erlaubt",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "%s Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
"You cannot share to a Circle if the app is not enabled" : "Du kannst nichts mit einem Kreis teilen, wenn die App nicht aktiviert ist",
"Please specify a valid circle" : "Bitte einen gültigen Kreis angeben",
"Sharing %s failed because the back end does not support room shares" : "Freigabe von %s fehlgeschlagen, da das Backend die Freigabe von Räumen nicht unterstützt",
diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json
index 97d761b3bd5..5b9a6e862de 100644
--- a/apps/files_sharing/l10n/de.json
+++ b/apps/files_sharing/l10n/de.json
@@ -86,9 +86,9 @@
"Public link sharing is disabled by the administrator" : "Die öffentliche Freigabe von Links ist durch den Administrator deaktiviert",
"Public upload disabled by the administrator" : "Das öffentliche Hochladen ist durch den Administrator deaktiviert",
"Public upload is only possible for publicly shared folders" : "Das öffentliche Hochladen ist nur für öffentlich freigegebene Ordner erlaubt",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "%s Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
"Invalid date, date format must be YYYY-MM-DD" : "Ungültiges Datum, das Datumsformat muss JJJJ-MM-TT sein",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Freigabe von %1$s fehlgeschlagen, da das Backend die Freigabe vom Typ %2$s nicht erlaubt",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "%s Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
"You cannot share to a Circle if the app is not enabled" : "Du kannst nichts mit einem Kreis teilen, wenn die App nicht aktiviert ist",
"Please specify a valid circle" : "Bitte einen gültigen Kreis angeben",
"Sharing %s failed because the back end does not support room shares" : "Freigabe von %s fehlgeschlagen, da das Backend die Freigabe von Räumen nicht unterstützt",
diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js
index 04090d4fff5..839cfe989e7 100644
--- a/apps/files_sharing/l10n/de_DE.js
+++ b/apps/files_sharing/l10n/de_DE.js
@@ -88,9 +88,9 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "Die öffentliche Freigabe von Links ist durch den Administrator deaktiviert",
"Public upload disabled by the administrator" : "Das öffentliche Hochladen ist durch den Administrator deaktiviert",
"Public upload is only possible for publicly shared folders" : "Das öffentliche Hochladen ist nur für öffentlich freigegebene Ordner erlaubt",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "%s Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
"Invalid date, date format must be YYYY-MM-DD" : "Ungültiges Datum, das Datumsformat muss JJJJ-MM-TT sein",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Freigabe von %1$s fehlgeschlagen, da das Backend die Freigabe vom Typ %2$s nicht erlaubt",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "%s Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
"You cannot share to a Circle if the app is not enabled" : "Sie können nichts mit einem Kreis teilen, wenn die App nicht aktiviert ist",
"Please specify a valid circle" : "Bitte einen gültigen Kreis angeben",
"Sharing %s failed because the back end does not support room shares" : "Freigabe von %s fehlgeschlagen, da das Backend die Freigabe von Räumen nicht unterstützt",
diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json
index 88cbc15a831..15df40394f1 100644
--- a/apps/files_sharing/l10n/de_DE.json
+++ b/apps/files_sharing/l10n/de_DE.json
@@ -86,9 +86,9 @@
"Public link sharing is disabled by the administrator" : "Die öffentliche Freigabe von Links ist durch den Administrator deaktiviert",
"Public upload disabled by the administrator" : "Das öffentliche Hochladen ist durch den Administrator deaktiviert",
"Public upload is only possible for publicly shared folders" : "Das öffentliche Hochladen ist nur für öffentlich freigegebene Ordner erlaubt",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "%s Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
"Invalid date, date format must be YYYY-MM-DD" : "Ungültiges Datum, das Datumsformat muss JJJJ-MM-TT sein",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Freigabe von %1$s fehlgeschlagen, da das Backend die Freigabe vom Typ %2$s nicht erlaubt",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "%s Freigeben: Senden des Passwortes über Nextcloud Talk gescheitert, da Nextcloud Talk nicht verfügbar ist",
"You cannot share to a Circle if the app is not enabled" : "Sie können nichts mit einem Kreis teilen, wenn die App nicht aktiviert ist",
"Please specify a valid circle" : "Bitte einen gültigen Kreis angeben",
"Sharing %s failed because the back end does not support room shares" : "Freigabe von %s fehlgeschlagen, da das Backend die Freigabe von Räumen nicht unterstützt",
diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js
index 62f2d8c7320..1ddf9f4fb29 100644
--- a/apps/files_sharing/l10n/es.js
+++ b/apps/files_sharing/l10n/es.js
@@ -88,9 +88,9 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "Compartir enlaces de forma pública está deshabilitado por el administrador",
"Public upload disabled by the administrator" : "La subida pública está deshabilitado por el administrador",
"Public upload is only possible for publicly shared folders" : "La subida publica solo es posible para las carpetas publicas compartidas",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Compartir %s enviando la contraseña por Nextcloud Talk ha falllado porque Nextcloud Talk no está activado",
"Invalid date, date format must be YYYY-MM-DD" : "Fecha inválida, el formato de las fechas debe ser YYYY-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Compartir %1$s ha fallado porque el backend no permite compartidos del tipo %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Compartir %s enviando la contraseña por Nextcloud Talk ha falllado porque Nextcloud Talk no está activado",
"You cannot share to a Circle if the app is not enabled" : "No puede compartir a un Circulo si la aplicación no esta activada",
"Please specify a valid circle" : "Por favor especifique un circulo valido",
"Sharing %s failed because the back end does not support room shares" : "Compartir %s ha fallado porque el backend no soporta habitaciones compartidas",
diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json
index 89899478a58..8a7b4f40259 100644
--- a/apps/files_sharing/l10n/es.json
+++ b/apps/files_sharing/l10n/es.json
@@ -86,9 +86,9 @@
"Public link sharing is disabled by the administrator" : "Compartir enlaces de forma pública está deshabilitado por el administrador",
"Public upload disabled by the administrator" : "La subida pública está deshabilitado por el administrador",
"Public upload is only possible for publicly shared folders" : "La subida publica solo es posible para las carpetas publicas compartidas",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Compartir %s enviando la contraseña por Nextcloud Talk ha falllado porque Nextcloud Talk no está activado",
"Invalid date, date format must be YYYY-MM-DD" : "Fecha inválida, el formato de las fechas debe ser YYYY-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Compartir %1$s ha fallado porque el backend no permite compartidos del tipo %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Compartir %s enviando la contraseña por Nextcloud Talk ha falllado porque Nextcloud Talk no está activado",
"You cannot share to a Circle if the app is not enabled" : "No puede compartir a un Circulo si la aplicación no esta activada",
"Please specify a valid circle" : "Por favor especifique un circulo valido",
"Sharing %s failed because the back end does not support room shares" : "Compartir %s ha fallado porque el backend no soporta habitaciones compartidas",
diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js
index e6549b0cdf5..e2976d939f0 100644
--- a/apps/files_sharing/l10n/fr.js
+++ b/apps/files_sharing/l10n/fr.js
@@ -88,9 +88,9 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "Le partage de lien public a été désactivé par l'administrateur",
"Public upload disabled by the administrator" : "Téléversement public désactivé par l'administrateur",
"Public upload is only possible for publicly shared folders" : "Le téléversement public est possible uniquement pour les dossiers partagés publiquement",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Partager %s en envoyant le mot de passe par Nextcloud Talk a échoué car Nextcloud Talk n'est pas activé.",
"Invalid date, date format must be YYYY-MM-DD" : "Date non valide, le format doit être DD/MM/YYYY",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Le partage %1$s a échoué parce que l'infrastructure n'autorise pas les partages du type %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Partager %s en envoyant le mot de passe par Nextcloud Talk a échoué car Nextcloud Talk n'est pas activé.",
"You cannot share to a Circle if the app is not enabled" : "Vous ne pouvez pas partager au Cercle si l'application n'est pas activée",
"Please specify a valid circle" : "Veuillez entrer un cercle valide",
"Sharing %s failed because the back end does not support room shares" : "Le partage %s a échoué parce que l'arrière-plan ne prend pas en charge les partages.",
diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json
index da6f68c246a..000b4bac874 100644
--- a/apps/files_sharing/l10n/fr.json
+++ b/apps/files_sharing/l10n/fr.json
@@ -86,9 +86,9 @@
"Public link sharing is disabled by the administrator" : "Le partage de lien public a été désactivé par l'administrateur",
"Public upload disabled by the administrator" : "Téléversement public désactivé par l'administrateur",
"Public upload is only possible for publicly shared folders" : "Le téléversement public est possible uniquement pour les dossiers partagés publiquement",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Partager %s en envoyant le mot de passe par Nextcloud Talk a échoué car Nextcloud Talk n'est pas activé.",
"Invalid date, date format must be YYYY-MM-DD" : "Date non valide, le format doit être DD/MM/YYYY",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Le partage %1$s a échoué parce que l'infrastructure n'autorise pas les partages du type %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Partager %s en envoyant le mot de passe par Nextcloud Talk a échoué car Nextcloud Talk n'est pas activé.",
"You cannot share to a Circle if the app is not enabled" : "Vous ne pouvez pas partager au Cercle si l'application n'est pas activée",
"Please specify a valid circle" : "Veuillez entrer un cercle valide",
"Sharing %s failed because the back end does not support room shares" : "Le partage %s a échoué parce que l'arrière-plan ne prend pas en charge les partages.",
diff --git a/apps/files_sharing/l10n/is.js b/apps/files_sharing/l10n/is.js
index b7edef7359e..93c678cdede 100644
--- a/apps/files_sharing/l10n/is.js
+++ b/apps/files_sharing/l10n/is.js
@@ -88,9 +88,9 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "Deiling opinberra sameignartengla hefur verið gerð óvirk af kerfisstjóra.",
"Public upload disabled by the administrator" : "Opinber innsending hefur verið gerð óvirk af kerfisstjóra.",
"Public upload is only possible for publicly shared folders" : "Opinber innsending er einungis möguleg í möppur sem er deilt opinberlega",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Deiling á %s með því að senda lykilorð með Nextcloud Talk mistókst því að Nextcloud Talk er ekki virkt",
"Invalid date, date format must be YYYY-MM-DD" : "Ógild dagsetning, dagsetningasniðið verður að vera ÁÁÁÁ-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Deiling %1$s mistókst, því bakvinnslukerfið leyfir ekki sameignir af gerðinni %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Deiling á %s með því að senda lykilorð með Nextcloud Talk mistókst því að Nextcloud Talk er ekki virkt",
"You cannot share to a Circle if the app is not enabled" : "Þú getur ekki deilt með hring ef forritið er ekki virkt",
"Please specify a valid circle" : "Settu inn gildan hring",
"Sharing %s failed because the back end does not support room shares" : "Deiling %s mistókst því bakvinnslukerfið leyfir ekki spjallsvæðasameignir",
diff --git a/apps/files_sharing/l10n/is.json b/apps/files_sharing/l10n/is.json
index 0a9ba701676..f88598bfa1b 100644
--- a/apps/files_sharing/l10n/is.json
+++ b/apps/files_sharing/l10n/is.json
@@ -86,9 +86,9 @@
"Public link sharing is disabled by the administrator" : "Deiling opinberra sameignartengla hefur verið gerð óvirk af kerfisstjóra.",
"Public upload disabled by the administrator" : "Opinber innsending hefur verið gerð óvirk af kerfisstjóra.",
"Public upload is only possible for publicly shared folders" : "Opinber innsending er einungis möguleg í möppur sem er deilt opinberlega",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Deiling á %s með því að senda lykilorð með Nextcloud Talk mistókst því að Nextcloud Talk er ekki virkt",
"Invalid date, date format must be YYYY-MM-DD" : "Ógild dagsetning, dagsetningasniðið verður að vera ÁÁÁÁ-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Deiling %1$s mistókst, því bakvinnslukerfið leyfir ekki sameignir af gerðinni %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Deiling á %s með því að senda lykilorð með Nextcloud Talk mistókst því að Nextcloud Talk er ekki virkt",
"You cannot share to a Circle if the app is not enabled" : "Þú getur ekki deilt með hring ef forritið er ekki virkt",
"Please specify a valid circle" : "Settu inn gildan hring",
"Sharing %s failed because the back end does not support room shares" : "Deiling %s mistókst því bakvinnslukerfið leyfir ekki spjallsvæðasameignir",
diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js
index cbc56eb8fca..0b84f6f25c0 100644
--- a/apps/files_sharing/l10n/it.js
+++ b/apps/files_sharing/l10n/it.js
@@ -88,9 +88,9 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "La condivisione pubblica di collegamenti è disabilitata dall'amministratore",
"Public upload disabled by the administrator" : "Caricamento pubblico disabilitato dall'amministratore",
"Public upload is only possible for publicly shared folders" : "Il caricamento pubblico è possibile solo per cartelle condivise pubblicamente",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "La condivisione di %s tramite invio della password da Nextcloud Talk non è riuscito poiché Nextcloud Talk non è abilitato",
"Invalid date, date format must be YYYY-MM-DD" : "Data non valida, il formato della data deve essere YYYY-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Condivisione di %1$s non riuscita poiché il motore non consente condivisioni del tipo %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "La condivisione di %s tramite invio della password da Nextcloud Talk non è riuscito poiché Nextcloud Talk non è abilitato",
"You cannot share to a Circle if the app is not enabled" : "Non puoi condividere con una cerchia se l'applicazione non è abilitata",
"Please specify a valid circle" : "Specifica una cerchia valida",
"Sharing %s failed because the back end does not support room shares" : "Condivisione di %s non riuscita poiché il motore non supporta condivisioni di stanza",
diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json
index 0a9071fd9ba..a2147b93268 100644
--- a/apps/files_sharing/l10n/it.json
+++ b/apps/files_sharing/l10n/it.json
@@ -86,9 +86,9 @@
"Public link sharing is disabled by the administrator" : "La condivisione pubblica di collegamenti è disabilitata dall'amministratore",
"Public upload disabled by the administrator" : "Caricamento pubblico disabilitato dall'amministratore",
"Public upload is only possible for publicly shared folders" : "Il caricamento pubblico è possibile solo per cartelle condivise pubblicamente",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "La condivisione di %s tramite invio della password da Nextcloud Talk non è riuscito poiché Nextcloud Talk non è abilitato",
"Invalid date, date format must be YYYY-MM-DD" : "Data non valida, il formato della data deve essere YYYY-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Condivisione di %1$s non riuscita poiché il motore non consente condivisioni del tipo %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "La condivisione di %s tramite invio della password da Nextcloud Talk non è riuscito poiché Nextcloud Talk non è abilitato",
"You cannot share to a Circle if the app is not enabled" : "Non puoi condividere con una cerchia se l'applicazione non è abilitata",
"Please specify a valid circle" : "Specifica una cerchia valida",
"Sharing %s failed because the back end does not support room shares" : "Condivisione di %s non riuscita poiché il motore non supporta condivisioni di stanza",
diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js
index 3c2f1aec70c..f0e968e138d 100644
--- a/apps/files_sharing/l10n/nl.js
+++ b/apps/files_sharing/l10n/nl.js
@@ -88,9 +88,9 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "Delen van openbare links is uitgeschakeld door de beheerder",
"Public upload disabled by the administrator" : "Publieke upload uitgeschakeld door de systeembeheerder",
"Public upload is only possible for publicly shared folders" : "Publieke upload is alleen mogelijk voor publiek gedeelde mappen",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Delen %s versturen van het wachtwoord via Nextcloud Talk is mislukt omdat Nextcloud Talk niet is ingeschakeld",
"Invalid date, date format must be YYYY-MM-DD" : "Ongeldige datum, datumnotatie moet in de vorm YYYY-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Delen van %1$s mislukte omdat de backend het delen van type %2$s niet ondersteunt",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Delen %s versturen van het wachtwoord via Nextcloud Talk is mislukt omdat Nextcloud Talk niet is ingeschakeld",
"You cannot share to a Circle if the app is not enabled" : "Je kunt niets met een Kring delen als de app niet is ingeschakeld.",
"Please specify a valid circle" : "Geef een geldige kring op",
"Sharing %s failed because the back end does not support room shares" : "Delen van %s mislukte omdat de backend het delen in ruimtes niet ondersteunt",
@@ -110,7 +110,7 @@ OC.L10N.register(
"No entries found in this folder" : "Niets gevonden in deze map",
"Name" : "Naam",
"Share time" : "Deel tijd",
- "Expiration date" : "Vervaldatm",
+ "Expiration date" : "Vervaldatum",
"Sorry, this link doesn’t seem to work anymore." : "Sorry, deze link lijkt niet meer in gebruik te zijn.",
"Reasons might be:" : "Redenen kunnen zijn:",
"the item was removed" : "bestand was verwijderd",
diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json
index 62816b3edb5..0c71e965c72 100644
--- a/apps/files_sharing/l10n/nl.json
+++ b/apps/files_sharing/l10n/nl.json
@@ -86,9 +86,9 @@
"Public link sharing is disabled by the administrator" : "Delen van openbare links is uitgeschakeld door de beheerder",
"Public upload disabled by the administrator" : "Publieke upload uitgeschakeld door de systeembeheerder",
"Public upload is only possible for publicly shared folders" : "Publieke upload is alleen mogelijk voor publiek gedeelde mappen",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Delen %s versturen van het wachtwoord via Nextcloud Talk is mislukt omdat Nextcloud Talk niet is ingeschakeld",
"Invalid date, date format must be YYYY-MM-DD" : "Ongeldige datum, datumnotatie moet in de vorm YYYY-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Delen van %1$s mislukte omdat de backend het delen van type %2$s niet ondersteunt",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Delen %s versturen van het wachtwoord via Nextcloud Talk is mislukt omdat Nextcloud Talk niet is ingeschakeld",
"You cannot share to a Circle if the app is not enabled" : "Je kunt niets met een Kring delen als de app niet is ingeschakeld.",
"Please specify a valid circle" : "Geef een geldige kring op",
"Sharing %s failed because the back end does not support room shares" : "Delen van %s mislukte omdat de backend het delen in ruimtes niet ondersteunt",
@@ -108,7 +108,7 @@
"No entries found in this folder" : "Niets gevonden in deze map",
"Name" : "Naam",
"Share time" : "Deel tijd",
- "Expiration date" : "Vervaldatm",
+ "Expiration date" : "Vervaldatum",
"Sorry, this link doesn’t seem to work anymore." : "Sorry, deze link lijkt niet meer in gebruik te zijn.",
"Reasons might be:" : "Redenen kunnen zijn:",
"the item was removed" : "bestand was verwijderd",
diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js
index beca0931e1a..ff8571fe55f 100644
--- a/apps/files_sharing/l10n/pl.js
+++ b/apps/files_sharing/l10n/pl.js
@@ -88,8 +88,8 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "Udostępnianie linków publicznych zostało zablokowane przez twojego administratora",
"Public upload disabled by the administrator" : "Publiczne wczytywanie zostało zablokowane przez twojego administratora",
"Public upload is only possible for publicly shared folders" : "Publiczne wczytywanie jest możliwe wyłącznie do katalogów publicznych",
- "Invalid date, date format must be YYYY-MM-DD" : "Nieprawidłowa data, format daty musi być w formacie YYYY-MM-DD",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Udostępnianie %s wysyłanie hasła przez Nextcloud Talk nie powiodło się, ponieważ usługa Nextcloud Talk nie jest włączona",
+ "Invalid date, date format must be YYYY-MM-DD" : "Nieprawidłowa data, format daty musi być w formacie YYYY-MM-DD",
"You cannot share to a Circle if the app is not enabled" : "Nie możesz udostępnić do Kręgów jeśli aplikacja jest wyłączona",
"Please specify a valid circle" : "Proszę podać właściwy krąg",
"Unknown share type" : "Nieznany typ udziału",
diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json
index 3deb0c8e80a..f8bc173b35c 100644
--- a/apps/files_sharing/l10n/pl.json
+++ b/apps/files_sharing/l10n/pl.json
@@ -86,8 +86,8 @@
"Public link sharing is disabled by the administrator" : "Udostępnianie linków publicznych zostało zablokowane przez twojego administratora",
"Public upload disabled by the administrator" : "Publiczne wczytywanie zostało zablokowane przez twojego administratora",
"Public upload is only possible for publicly shared folders" : "Publiczne wczytywanie jest możliwe wyłącznie do katalogów publicznych",
- "Invalid date, date format must be YYYY-MM-DD" : "Nieprawidłowa data, format daty musi być w formacie YYYY-MM-DD",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Udostępnianie %s wysyłanie hasła przez Nextcloud Talk nie powiodło się, ponieważ usługa Nextcloud Talk nie jest włączona",
+ "Invalid date, date format must be YYYY-MM-DD" : "Nieprawidłowa data, format daty musi być w formacie YYYY-MM-DD",
"You cannot share to a Circle if the app is not enabled" : "Nie możesz udostępnić do Kręgów jeśli aplikacja jest wyłączona",
"Please specify a valid circle" : "Proszę podać właściwy krąg",
"Unknown share type" : "Nieznany typ udziału",
diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js
index 52db057cdfc..59b488e5cfb 100644
--- a/apps/files_sharing/l10n/pt_BR.js
+++ b/apps/files_sharing/l10n/pt_BR.js
@@ -88,9 +88,9 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "O compartilhamento por link público foi desativado pelo administrador",
"Public upload disabled by the administrator" : "O envio público foi desativado pelo administrador",
"Public upload is only possible for publicly shared folders" : "O envio público só é possível para pastas compartilhadas publicamente",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "O compartilhamento %s falhou ao enviar a senha ao Nextcloud Talk porque este não está ativado",
"Invalid date, date format must be YYYY-MM-DD" : "Data inválida, o formato da data deve ser YYYY-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "O compartilhamento %1$s falhou porque a infraestrutura não permite compartilhamentos do tipo %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "O compartilhamento %s falhou ao enviar a senha ao Nextcloud Talk porque este não está ativado",
"You cannot share to a Circle if the app is not enabled" : "Você não pode compartilhar para um círculo se o aplicativo não está habilitado",
"Please specify a valid circle" : "Por favor especifique um círculo válido",
"Sharing %s failed because the back end does not support room shares" : "Falhou ao compartilhar %s porque o sistema não suporta compartilhamento de salas",
diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json
index 78fe47c4ac1..f73dd0f14f9 100644
--- a/apps/files_sharing/l10n/pt_BR.json
+++ b/apps/files_sharing/l10n/pt_BR.json
@@ -86,9 +86,9 @@
"Public link sharing is disabled by the administrator" : "O compartilhamento por link público foi desativado pelo administrador",
"Public upload disabled by the administrator" : "O envio público foi desativado pelo administrador",
"Public upload is only possible for publicly shared folders" : "O envio público só é possível para pastas compartilhadas publicamente",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "O compartilhamento %s falhou ao enviar a senha ao Nextcloud Talk porque este não está ativado",
"Invalid date, date format must be YYYY-MM-DD" : "Data inválida, o formato da data deve ser YYYY-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "O compartilhamento %1$s falhou porque a infraestrutura não permite compartilhamentos do tipo %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "O compartilhamento %s falhou ao enviar a senha ao Nextcloud Talk porque este não está ativado",
"You cannot share to a Circle if the app is not enabled" : "Você não pode compartilhar para um círculo se o aplicativo não está habilitado",
"Please specify a valid circle" : "Por favor especifique um círculo válido",
"Sharing %s failed because the back end does not support room shares" : "Falhou ao compartilhar %s porque o sistema não suporta compartilhamento de salas",
diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js
index 35a719de06b..7fcfb301559 100644
--- a/apps/files_sharing/l10n/ru.js
+++ b/apps/files_sharing/l10n/ru.js
@@ -88,9 +88,9 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "Возможность предоставления общего доступа созданием общедоступных ссылок отключена администратором",
"Public upload disabled by the administrator" : "Загрузка в общедоступную папку запрещена администратором",
"Public upload is only possible for publicly shared folders" : "Общедоступная загрузка возможна только в общедоступные папки",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Не удалось отправить пароль для доступа к «%s»: приложение Nextcloud Talk отключено.",
"Invalid date, date format must be YYYY-MM-DD" : "Неверная дата, формат даты должен быть ГГГГ-ММ-ДД",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Не удалось предоставить общий доступ к «%1$s», поскольку механизм удалённого обмена не разрешает публикации типа %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Не удалось отправить пароль для доступа к «%s»: приложение Nextcloud Talk отключено.",
"You cannot share to a Circle if the app is not enabled" : "Вы не можете поделиться с кругом, если приложение «Круг» не включено",
"Please specify a valid circle" : "Укажите верный круг",
"Sharing %s failed because the back end does not support room shares" : "Не удалось предоставить общий доступ к «%s» поскольку механизм обмена не поддерживает общий доступ такого типа",
diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json
index fc31b2380d7..47a1289cd42 100644
--- a/apps/files_sharing/l10n/ru.json
+++ b/apps/files_sharing/l10n/ru.json
@@ -86,9 +86,9 @@
"Public link sharing is disabled by the administrator" : "Возможность предоставления общего доступа созданием общедоступных ссылок отключена администратором",
"Public upload disabled by the administrator" : "Загрузка в общедоступную папку запрещена администратором",
"Public upload is only possible for publicly shared folders" : "Общедоступная загрузка возможна только в общедоступные папки",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Не удалось отправить пароль для доступа к «%s»: приложение Nextcloud Talk отключено.",
"Invalid date, date format must be YYYY-MM-DD" : "Неверная дата, формат даты должен быть ГГГГ-ММ-ДД",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Не удалось предоставить общий доступ к «%1$s», поскольку механизм удалённого обмена не разрешает публикации типа %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Не удалось отправить пароль для доступа к «%s»: приложение Nextcloud Talk отключено.",
"You cannot share to a Circle if the app is not enabled" : "Вы не можете поделиться с кругом, если приложение «Круг» не включено",
"Please specify a valid circle" : "Укажите верный круг",
"Sharing %s failed because the back end does not support room shares" : "Не удалось предоставить общий доступ к «%s» поскольку механизм обмена не поддерживает общий доступ такого типа",
diff --git a/apps/files_sharing/l10n/sk.js b/apps/files_sharing/l10n/sk.js
index 84d451cfb94..b09abb71ee6 100644
--- a/apps/files_sharing/l10n/sk.js
+++ b/apps/files_sharing/l10n/sk.js
@@ -88,9 +88,9 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "Sprístupnenie pomocou verejných odkazov je zakázané administrátorom",
"Public upload disabled by the administrator" : "Verejné nahrávanie je zakázané administrátorom",
"Public upload is only possible for publicly shared folders" : "Verejné nahrávanie je možné len do verejne sprístupnených priečinkov",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Zdieľanie %s odoslaním hesla cez Nextcloud Talk zlyhalo, pretože Nextcloud Talk nie je zapnutý",
"Invalid date, date format must be YYYY-MM-DD" : "Neplatný dátum, formát musí byť v tvare YYYY-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Sprístupnenie %1$s zlyhalo, backend nepodporuje typ sprístupnenia %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Zdieľanie %s odoslaním hesla cez Nextcloud Talk zlyhalo, pretože Nextcloud Talk nie je zapnutý",
"You cannot share to a Circle if the app is not enabled" : "Ak aplikácia nie je povolená, nemôžete ju zdieľať s Kruhom",
"Please specify a valid circle" : "Zadajte platný kruh",
"Sharing %s failed because the back end does not support room shares" : "Zdieľanie %s sa nepodarilo, pretože backend nepodporuje zdieľanie miestností",
diff --git a/apps/files_sharing/l10n/sk.json b/apps/files_sharing/l10n/sk.json
index 6565bcb7d80..15b7534aa7e 100644
--- a/apps/files_sharing/l10n/sk.json
+++ b/apps/files_sharing/l10n/sk.json
@@ -86,9 +86,9 @@
"Public link sharing is disabled by the administrator" : "Sprístupnenie pomocou verejných odkazov je zakázané administrátorom",
"Public upload disabled by the administrator" : "Verejné nahrávanie je zakázané administrátorom",
"Public upload is only possible for publicly shared folders" : "Verejné nahrávanie je možné len do verejne sprístupnených priečinkov",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Zdieľanie %s odoslaním hesla cez Nextcloud Talk zlyhalo, pretože Nextcloud Talk nie je zapnutý",
"Invalid date, date format must be YYYY-MM-DD" : "Neplatný dátum, formát musí byť v tvare YYYY-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Sprístupnenie %1$s zlyhalo, backend nepodporuje typ sprístupnenia %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Zdieľanie %s odoslaním hesla cez Nextcloud Talk zlyhalo, pretože Nextcloud Talk nie je zapnutý",
"You cannot share to a Circle if the app is not enabled" : "Ak aplikácia nie je povolená, nemôžete ju zdieľať s Kruhom",
"Please specify a valid circle" : "Zadajte platný kruh",
"Sharing %s failed because the back end does not support room shares" : "Zdieľanie %s sa nepodarilo, pretože backend nepodporuje zdieľanie miestností",
diff --git a/apps/files_sharing/l10n/sr.js b/apps/files_sharing/l10n/sr.js
index 2d3ff556ee7..78524b05961 100644
--- a/apps/files_sharing/l10n/sr.js
+++ b/apps/files_sharing/l10n/sr.js
@@ -88,9 +88,9 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "Администратор је забранио дељење јавном везом",
"Public upload disabled by the administrator" : "Администратор је забранио отпремања са јавним приступом",
"Public upload is only possible for publicly shared folders" : "Отпремања са јавним приступом су могућа само за јавно дељене фасцикле",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Дељење %s слањем лозинке преко Nextcloud Talk-а није успело пошто Nextcloud Talk није укључен",
"Invalid date, date format must be YYYY-MM-DD" : "Неисправан датим, формат датума мора бити ГГГГ-ММ-ДД",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Дељење %1$s није успело зато што позадина не дозвољава дељење које је типа %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Дељење %s слањем лозинке преко Nextcloud Talk-а није успело пошто Nextcloud Talk није укључен",
"You cannot share to a Circle if the app is not enabled" : "Не можете делити са Круговима ако та апликација није укључена",
"Please specify a valid circle" : "Одаберите исправан круг",
"Sharing %s failed because the back end does not support room shares" : "Није успело дељење %s зато што позадински мотор дељења не подржава дељења у соби",
diff --git a/apps/files_sharing/l10n/sr.json b/apps/files_sharing/l10n/sr.json
index 9eb7d45cf69..e163ef0e32f 100644
--- a/apps/files_sharing/l10n/sr.json
+++ b/apps/files_sharing/l10n/sr.json
@@ -86,9 +86,9 @@
"Public link sharing is disabled by the administrator" : "Администратор је забранио дељење јавном везом",
"Public upload disabled by the administrator" : "Администратор је забранио отпремања са јавним приступом",
"Public upload is only possible for publicly shared folders" : "Отпремања са јавним приступом су могућа само за јавно дељене фасцикле",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Дељење %s слањем лозинке преко Nextcloud Talk-а није успело пошто Nextcloud Talk није укључен",
"Invalid date, date format must be YYYY-MM-DD" : "Неисправан датим, формат датума мора бити ГГГГ-ММ-ДД",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Дељење %1$s није успело зато што позадина не дозвољава дељење које је типа %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Дељење %s слањем лозинке преко Nextcloud Talk-а није успело пошто Nextcloud Talk није укључен",
"You cannot share to a Circle if the app is not enabled" : "Не можете делити са Круговима ако та апликација није укључена",
"Please specify a valid circle" : "Одаберите исправан круг",
"Sharing %s failed because the back end does not support room shares" : "Није успело дељење %s зато што позадински мотор дељења не подржава дељења у соби",
diff --git a/apps/files_sharing/l10n/sv.js b/apps/files_sharing/l10n/sv.js
index 47eb4771378..439ecb2509d 100644
--- a/apps/files_sharing/l10n/sv.js
+++ b/apps/files_sharing/l10n/sv.js
@@ -88,9 +88,9 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "Offentlig delningslänk är avstängt",
"Public upload disabled by the administrator" : "Offentlig uppladdning är avstängt",
"Public upload is only possible for publicly shared folders" : "Offentlig uppladdning fungerar endast i offentligt delade mappar",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Dela %s och skicka lösenordet via Nextcloud Talk går inte eftersom Nextcloud Talk är inte aktiverad",
"Invalid date, date format must be YYYY-MM-DD" : "Ogiltigt datum, måste anges: ÅÅÅÅ-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Delning %1$s misslyckades. Ej tillåtet med delningar från typ %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Dela %s och skicka lösenordet via Nextcloud Talk går inte eftersom Nextcloud Talk är inte aktiverad",
"You cannot share to a Circle if the app is not enabled" : "Du kan inte dela till en cirkel om appen inte är aktiverad",
"Please specify a valid circle" : "Vänligen ange en giltig cirkel",
"Sharing %s failed because the back end does not support room shares" : "Dela %s misslyckades eftersom systemet inte stödjer rum-delningar",
diff --git a/apps/files_sharing/l10n/sv.json b/apps/files_sharing/l10n/sv.json
index a68cb493b17..ffccde59908 100644
--- a/apps/files_sharing/l10n/sv.json
+++ b/apps/files_sharing/l10n/sv.json
@@ -86,9 +86,9 @@
"Public link sharing is disabled by the administrator" : "Offentlig delningslänk är avstängt",
"Public upload disabled by the administrator" : "Offentlig uppladdning är avstängt",
"Public upload is only possible for publicly shared folders" : "Offentlig uppladdning fungerar endast i offentligt delade mappar",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Dela %s och skicka lösenordet via Nextcloud Talk går inte eftersom Nextcloud Talk är inte aktiverad",
"Invalid date, date format must be YYYY-MM-DD" : "Ogiltigt datum, måste anges: ÅÅÅÅ-MM-DD",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Delning %1$s misslyckades. Ej tillåtet med delningar från typ %2$s",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Dela %s och skicka lösenordet via Nextcloud Talk går inte eftersom Nextcloud Talk är inte aktiverad",
"You cannot share to a Circle if the app is not enabled" : "Du kan inte dela till en cirkel om appen inte är aktiverad",
"Please specify a valid circle" : "Vänligen ange en giltig cirkel",
"Sharing %s failed because the back end does not support room shares" : "Dela %s misslyckades eftersom systemet inte stödjer rum-delningar",
diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js
index 11f5d833fac..c0926ba1274 100644
--- a/apps/files_sharing/l10n/tr.js
+++ b/apps/files_sharing/l10n/tr.js
@@ -88,9 +88,9 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "Herkese açık bağlantı paylaşımı yönetici tarafından devre dışı bırakılmış",
"Public upload disabled by the administrator" : "Herkese açık yükleme yönetici tarafından devre dışı bırakılmış",
"Public upload is only possible for publicly shared folders" : "Herkese açık yükleme ancak herkese açık paylaşılmış klasörlere yapılabilir",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nextcloud Talk etkinleştirilmemiş olduğundan %sNextcloud Talk ile parola gönderilerek paylaşılamadı",
"Invalid date, date format must be YYYY-MM-DD" : "Tarih geçersiz. Tarih biçimi YYYY-AA-GG olmalıdır",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Yönetim bölümünden %2$s türündeki paylaşımlar yapılamadığından %1$s paylaşılamadı",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nextcloud Talk etkinleştirilmemiş olduğundan %sNextcloud Talk ile parola gönderilerek paylaşılamadı",
"You cannot share to a Circle if the app is not enabled" : "Uygulama etkinleştirilmemiş ise bir Çevre ile paylaşamazsınız",
"Please specify a valid circle" : "Lütfen geçerli bir çevre belirtin",
"Sharing %s failed because the back end does not support room shares" : "Arka uç oda paylaşımlarına izin vermediğinden %s paylaşılamadı",
diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json
index dff28b90a41..55f6821339c 100644
--- a/apps/files_sharing/l10n/tr.json
+++ b/apps/files_sharing/l10n/tr.json
@@ -86,9 +86,9 @@
"Public link sharing is disabled by the administrator" : "Herkese açık bağlantı paylaşımı yönetici tarafından devre dışı bırakılmış",
"Public upload disabled by the administrator" : "Herkese açık yükleme yönetici tarafından devre dışı bırakılmış",
"Public upload is only possible for publicly shared folders" : "Herkese açık yükleme ancak herkese açık paylaşılmış klasörlere yapılabilir",
+ "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nextcloud Talk etkinleştirilmemiş olduğundan %sNextcloud Talk ile parola gönderilerek paylaşılamadı",
"Invalid date, date format must be YYYY-MM-DD" : "Tarih geçersiz. Tarih biçimi YYYY-AA-GG olmalıdır",
"Sharing %1$s failed because the back end does not allow shares from type %2$s" : "Yönetim bölümünden %2$s türündeki paylaşımlar yapılamadığından %1$s paylaşılamadı",
- "Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "Nextcloud Talk etkinleştirilmemiş olduğundan %sNextcloud Talk ile parola gönderilerek paylaşılamadı",
"You cannot share to a Circle if the app is not enabled" : "Uygulama etkinleştirilmemiş ise bir Çevre ile paylaşamazsınız",
"Please specify a valid circle" : "Lütfen geçerli bir çevre belirtin",
"Sharing %s failed because the back end does not support room shares" : "Arka uç oda paylaşımlarına izin vermediğinden %s paylaşılamadı",
diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js
index dbed6a651ca..48119ecd7ad 100644
--- a/apps/files_sharing/l10n/zh_CN.js
+++ b/apps/files_sharing/l10n/zh_CN.js
@@ -87,8 +87,8 @@ OC.L10N.register(
"Public link sharing is disabled by the administrator" : "公共链接共享已被管理员禁用",
"Public upload disabled by the administrator" : "公共上传已被管理员禁用",
"Public upload is only possible for publicly shared folders" : "公共上传仅适用于公共共享文件夹",
- "Invalid date, date format must be YYYY-MM-DD" : "无效的日期,日期格式必须是 YYYY-MM-DD",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于 Nextcloud Talk 没有启用, 所以通过 Nextcloud Talk 发送 %s 共享密码失败.",
+ "Invalid date, date format must be YYYY-MM-DD" : "无效的日期,日期格式必须是 YYYY-MM-DD",
"You cannot share to a Circle if the app is not enabled" : "如果这个应用程序不可用,你不能共享到圈子",
"Please specify a valid circle" : "请指明一个可用圈子",
"Sharing %s failed because the back end does not support room shares" : "由于后端不支持房间共享, 所以共享 %s 失败.",
diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json
index 47c506af8a1..8bd4c81b4de 100644
--- a/apps/files_sharing/l10n/zh_CN.json
+++ b/apps/files_sharing/l10n/zh_CN.json
@@ -85,8 +85,8 @@
"Public link sharing is disabled by the administrator" : "公共链接共享已被管理员禁用",
"Public upload disabled by the administrator" : "公共上传已被管理员禁用",
"Public upload is only possible for publicly shared folders" : "公共上传仅适用于公共共享文件夹",
- "Invalid date, date format must be YYYY-MM-DD" : "无效的日期,日期格式必须是 YYYY-MM-DD",
"Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled" : "由于 Nextcloud Talk 没有启用, 所以通过 Nextcloud Talk 发送 %s 共享密码失败.",
+ "Invalid date, date format must be YYYY-MM-DD" : "无效的日期,日期格式必须是 YYYY-MM-DD",
"You cannot share to a Circle if the app is not enabled" : "如果这个应用程序不可用,你不能共享到圈子",
"Please specify a valid circle" : "请指明一个可用圈子",
"Sharing %s failed because the back end does not support room shares" : "由于后端不支持房间共享, 所以共享 %s 失败.",
diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php
index 04c72b459b4..f61b9dac58a 100644
--- a/apps/files_sharing/lib/Controller/ShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareAPIController.php
@@ -211,6 +211,8 @@ class ShareAPIController extends OCSController {
$result['share_with'] = $share->getPassword();
$result['share_with_displayname'] = $share->getPassword();
+ $result['send_password_by_talk'] = $share->getSendPasswordByTalk();
+
$result['token'] = $share->getToken();
$result['url'] = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $share->getToken()]);
@@ -479,10 +481,19 @@ class ShareAPIController extends OCSController {
$share->setPassword($password);
}
+
if (!empty($label)) {
$share->setLabel($label);
}
+ if ($sendPasswordByTalk === 'true') {
+ if (!$this->appManager->isEnabledForUser('spreed')) {
+ throw new OCSForbiddenException($this->l->t('Sharing %s sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled', [$path->getPath()]));
+ }
+
+ $share->setSendPasswordByTalk(true);
+ }
+
//Expire date
if ($expireDate !== '') {
try {
@@ -889,6 +900,15 @@ class ShareAPIController extends OCSController {
$share->setLabel($label);
}
+ if ($sendPasswordByTalk === 'true') {
+ if (!$this->appManager->isEnabledForUser('spreed')) {
+ throw new OCSForbiddenException($this->l->t('Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled'));
+ }
+
+ $share->setSendPasswordByTalk(true);
+ } else if ($sendPasswordByTalk !== null) {
+ $share->setSendPasswordByTalk(false);
+ }
} else {
if ($permissions !== null) {
$permissions = (int)$permissions;
diff --git a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php
index eb39dd7926f..efc252d49d7 100644
--- a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php
+++ b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php
@@ -430,6 +430,7 @@ class ShareAPIControllerTest extends TestCase {
'share_type' => \OCP\Share::SHARE_TYPE_LINK,
'share_with' => 'password',
'share_with_displayname' => 'password',
+ 'send_password_by_talk' => false,
'uid_owner' => 'initiatorId',
'displayname_owner' => 'initiatorDisplay',
'item_type' => 'folder',
@@ -1135,6 +1136,71 @@ class ShareAPIControllerTest extends TestCase {
$this->assertEquals($expected->getData(), $result->getData());
}
+ public function testCreateShareLinkSendPasswordByTalk() {
+ $ocs = $this->mockFormatShare();
+
+ $path = $this->getMockBuilder(Folder::class)->getMock();
+ $storage = $this->getMockBuilder(Storage::class)->getMock();
+ $storage->method('instanceOfStorage')
+ ->with('OCA\Files_Sharing\External\Storage')
+ ->willReturn(false);
+ $path->method('getStorage')->willReturn($storage);
+ $this->rootFolder->method('getUserFolder')->with($this->currentUser)->will($this->returnSelf());
+ $this->rootFolder->method('get')->with('valid-path')->willReturn($path);
+
+ $this->shareManager->method('newShare')->willReturn(\OC::$server->getShareManager()->newShare());
+ $this->shareManager->method('shareApiAllowLinks')->willReturn(true);
+ $this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true);
+
+ $this->appManager->method('isEnabledForUser')->with('spreed')->willReturn(true);
+
+ $this->shareManager->expects($this->once())->method('createShare')->with(
+ $this->callback(function (\OCP\Share\IShare $share) use ($path) {
+ return $share->getNode() === $path &&
+ $share->getShareType() === \OCP\Share::SHARE_TYPE_LINK &&
+ $share->getPermissions() === \OCP\Constants::PERMISSION_READ &&
+ $share->getSharedBy() === 'currentUser' &&
+ $share->getPassword() === 'password' &&
+ $share->getSendPasswordByTalk() === true &&
+ $share->getExpirationDate() === null;
+ })
+ )->will($this->returnArgument(0));
+
+ $expected = new DataResponse([]);
+ $result = $ocs->createShare('valid-path', \OCP\Constants::PERMISSION_ALL, \OCP\Share::SHARE_TYPE_LINK, null, 'false', 'password', 'true', '');
+
+ $this->assertInstanceOf(get_class($expected), $result);
+ $this->assertEquals($expected->getData(), $result->getData());
+ }
+
+ /**
+ * @expectedException \OCP\AppFramework\OCS\OCSForbiddenException
+ * @expectedExceptionMessage Sharing valid-path sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled
+ */
+ public function testCreateShareLinkSendPasswordByTalkWithTalkDisabled() {
+ $ocs = $this->mockFormatShare();
+
+ $path = $this->getMockBuilder(Folder::class)->getMock();
+ $storage = $this->getMockBuilder(Storage::class)->getMock();
+ $storage->method('instanceOfStorage')
+ ->with('OCA\Files_Sharing\External\Storage')
+ ->willReturn(false);
+ $path->method('getStorage')->willReturn($storage);
+ $path->method('getPath')->willReturn('valid-path');
+ $this->rootFolder->method('getUserFolder')->with($this->currentUser)->will($this->returnSelf());
+ $this->rootFolder->method('get')->with('valid-path')->willReturn($path);
+
+ $this->shareManager->method('newShare')->willReturn(\OC::$server->getShareManager()->newShare());
+ $this->shareManager->method('shareApiAllowLinks')->willReturn(true);
+ $this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true);
+
+ $this->appManager->method('isEnabledForUser')->with('spreed')->willReturn(false);
+
+ $this->shareManager->expects($this->never())->method('createShare');
+
+ $ocs->createShare('valid-path', \OCP\Constants::PERMISSION_ALL, \OCP\Share::SHARE_TYPE_LINK, null, 'false', 'password', 'true', '');
+ }
+
public function testCreateShareValidExpireDate() {
$ocs = $this->mockFormatShare();
@@ -1512,6 +1578,9 @@ class ShareAPIControllerTest extends TestCase {
->setShareType(\OCP\Share::SHARE_TYPE_LINK)
->setPassword('password')
->setExpirationDate(new \DateTime())
+ ->setNote('note')
+ ->setLabel('label')
+ ->setHideDownload(true)
->setPermissions(\OCP\Constants::PERMISSION_ALL)
->setNode($node);
@@ -1525,7 +1594,12 @@ class ShareAPIControllerTest extends TestCase {
$this->callback(function (\OCP\Share\IShare $share) {
return $share->getPermissions() === \OCP\Constants::PERMISSION_READ &&
$share->getPassword() === null &&
- $share->getExpirationDate() === null;
+ $share->getExpirationDate() === null &&
+ // Once set a note or a label are never back to null, only to an
+ // empty string.
+ $share->getNote() === '' &&
+ $share->getLabel() === '' &&
+ $share->getHideDownload() === false;
})
)->will($this->returnArgument(0));
@@ -1533,7 +1607,7 @@ class ShareAPIControllerTest extends TestCase {
->willReturn([]);
$expected = new DataResponse([]);
- $result = $ocs->updateShare(42, null, '', null, 'false', '');
+ $result = $ocs->updateShare(42, null, '', null, 'false', '', '', '', 'false');
$this->assertInstanceOf(get_class($expected), $result);
$this->assertEquals($expected->getData(), $result->getData());
@@ -1560,7 +1634,10 @@ class ShareAPIControllerTest extends TestCase {
return $share->getPermissions() === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE) &&
$share->getPassword() === 'password' &&
- $share->getExpirationDate() == $date;
+ $share->getExpirationDate() == $date &&
+ $share->getNote() === 'note' &&
+ $share->getLabel() === 'label' &&
+ $share->getHideDownload() === true;
})
)->will($this->returnArgument(0));
@@ -1568,7 +1645,7 @@ class ShareAPIControllerTest extends TestCase {
->willReturn([]);
$expected = new DataResponse([]);
- $result = $ocs->updateShare(42, null, 'password', null, 'true', '2000-01-01');
+ $result = $ocs->updateShare(42, null, 'password', null, 'true', '2000-01-01', 'note', 'label', 'true');
$this->assertInstanceOf(get_class($expected), $result);
$this->assertEquals($expected->getData(), $result->getData());
@@ -1700,7 +1777,11 @@ class ShareAPIControllerTest extends TestCase {
->setSharedBy($this->currentUser)
->setShareType(\OCP\Share::SHARE_TYPE_LINK)
->setPassword('password')
+ ->setSendPasswordByTalk(true)
->setExpirationDate($date)
+ ->setNote('note')
+ ->setLabel('label')
+ ->setHideDownload(true)
->setPermissions(\OCP\Constants::PERMISSION_ALL)
->setNode($node);
@@ -1714,12 +1795,194 @@ class ShareAPIControllerTest extends TestCase {
$this->callback(function (\OCP\Share\IShare $share) use ($date) {
return $share->getPermissions() === \OCP\Constants::PERMISSION_ALL &&
$share->getPassword() === 'newpassword' &&
- $share->getExpirationDate() === $date;
+ $share->getSendPasswordByTalk() === true &&
+ $share->getExpirationDate() === $date &&
+ $share->getNote() === 'note' &&
+ $share->getLabel() === 'label' &&
+ $share->getHideDownload() === true;
+ })
+ )->will($this->returnArgument(0));
+
+ $expected = new DataResponse([]);
+ $result = $ocs->updateShare(42, null, 'newpassword', null, null, null, null, null, null);
+
+ $this->assertInstanceOf(get_class($expected), $result);
+ $this->assertEquals($expected->getData(), $result->getData());
+ }
+
+ public function testUpdateLinkShareSendPasswordByTalkDoesNotChangeOther() {
+ $ocs = $this->mockFormatShare();
+
+ $date = new \DateTime('2000-01-01');
+ $date->setTime(0,0,0);
+
+ $node = $this->getMockBuilder(File::class)->getMock();
+ $share = $this->newShare();
+ $share->setPermissions(\OCP\Constants::PERMISSION_ALL)
+ ->setSharedBy($this->currentUser)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPassword('password')
+ ->setSendPasswordByTalk(false)
+ ->setExpirationDate($date)
+ ->setNote('note')
+ ->setLabel('label')
+ ->setHideDownload(true)
+ ->setPermissions(\OCP\Constants::PERMISSION_ALL)
+ ->setNode($node);
+
+ $node->expects($this->once())
+ ->method('lock')
+ ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
+
+ $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
+
+ $this->appManager->method('isEnabledForUser')->with('spreed')->willReturn(true);
+
+ $this->shareManager->expects($this->once())->method('updateShare')->with(
+ $this->callback(function (\OCP\Share\IShare $share) use ($date) {
+ return $share->getPermissions() === \OCP\Constants::PERMISSION_ALL &&
+ $share->getPassword() === 'password' &&
+ $share->getSendPasswordByTalk() === true &&
+ $share->getExpirationDate() === $date &&
+ $share->getNote() === 'note' &&
+ $share->getLabel() === 'label' &&
+ $share->getHideDownload() === true;
+ })
+ )->will($this->returnArgument(0));
+
+ $expected = new DataResponse([]);
+ $result = $ocs->updateShare(42, null, null, 'true', null, null, null, null, null);
+
+ $this->assertInstanceOf(get_class($expected), $result);
+ $this->assertEquals($expected->getData(), $result->getData());
+ }
+
+ /**
+ * @expectedException \OCP\AppFramework\OCS\OCSForbiddenException
+ * @expectedExceptionMessage Sharing sending the password by Nextcloud Talk failed because Nextcloud Talk is not enabled
+ */
+ public function testUpdateLinkShareSendPasswordByTalkWithTalkDisabledDoesNotChangeOther() {
+ $ocs = $this->mockFormatShare();
+
+ $date = new \DateTime('2000-01-01');
+ $date->setTime(0,0,0);
+
+ $node = $this->getMockBuilder(File::class)->getMock();
+ $share = $this->newShare();
+ $share->setPermissions(\OCP\Constants::PERMISSION_ALL)
+ ->setSharedBy($this->currentUser)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPassword('password')
+ ->setSendPasswordByTalk(false)
+ ->setExpirationDate($date)
+ ->setNote('note')
+ ->setLabel('label')
+ ->setHideDownload(true)
+ ->setPermissions(\OCP\Constants::PERMISSION_ALL)
+ ->setNode($node);
+
+ $node->expects($this->once())
+ ->method('lock')
+ ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
+
+ $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
+
+ $this->appManager->method('isEnabledForUser')->with('spreed')->willReturn(false);
+
+ $this->shareManager->expects($this->never())->method('updateShare');
+
+ $ocs->updateShare(42, null, null, 'true', null, null, null, null, null);
+ }
+
+ public function testUpdateLinkShareDoNotSendPasswordByTalkDoesNotChangeOther() {
+ $ocs = $this->mockFormatShare();
+
+ $date = new \DateTime('2000-01-01');
+ $date->setTime(0,0,0);
+
+ $node = $this->getMockBuilder(File::class)->getMock();
+ $share = $this->newShare();
+ $share->setPermissions(\OCP\Constants::PERMISSION_ALL)
+ ->setSharedBy($this->currentUser)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPassword('password')
+ ->setSendPasswordByTalk(true)
+ ->setExpirationDate($date)
+ ->setNote('note')
+ ->setLabel('label')
+ ->setHideDownload(true)
+ ->setPermissions(\OCP\Constants::PERMISSION_ALL)
+ ->setNode($node);
+
+ $node->expects($this->once())
+ ->method('lock')
+ ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
+
+ $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
+
+ $this->appManager->method('isEnabledForUser')->with('spreed')->willReturn(true);
+
+ $this->shareManager->expects($this->once())->method('updateShare')->with(
+ $this->callback(function (\OCP\Share\IShare $share) use ($date) {
+ return $share->getPermissions() === \OCP\Constants::PERMISSION_ALL &&
+ $share->getPassword() === 'password' &&
+ $share->getSendPasswordByTalk() === false &&
+ $share->getExpirationDate() === $date &&
+ $share->getNote() === 'note' &&
+ $share->getLabel() === 'label' &&
+ $share->getHideDownload() === true;
})
)->will($this->returnArgument(0));
$expected = new DataResponse([]);
- $result = $ocs->updateShare(42, null, 'newpassword', null, null, null);
+ $result = $ocs->updateShare(42, null, null, 'false', null, null, null, null, null);
+
+ $this->assertInstanceOf(get_class($expected), $result);
+ $this->assertEquals($expected->getData(), $result->getData());
+ }
+
+ public function testUpdateLinkShareDoNotSendPasswordByTalkWithTalkDisabledDoesNotChangeOther() {
+ $ocs = $this->mockFormatShare();
+
+ $date = new \DateTime('2000-01-01');
+ $date->setTime(0,0,0);
+
+ $node = $this->getMockBuilder(File::class)->getMock();
+ $share = $this->newShare();
+ $share->setPermissions(\OCP\Constants::PERMISSION_ALL)
+ ->setSharedBy($this->currentUser)
+ ->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setPassword('password')
+ ->setSendPasswordByTalk(true)
+ ->setExpirationDate($date)
+ ->setNote('note')
+ ->setLabel('label')
+ ->setHideDownload(true)
+ ->setPermissions(\OCP\Constants::PERMISSION_ALL)
+ ->setNode($node);
+
+ $node->expects($this->once())
+ ->method('lock')
+ ->with(\OCP\Lock\ILockingProvider::LOCK_SHARED);
+
+ $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share);
+
+ $this->appManager->method('isEnabledForUser')->with('spreed')->willReturn(false);
+
+ $this->shareManager->expects($this->once())->method('updateShare')->with(
+ $this->callback(function (\OCP\Share\IShare $share) use ($date) {
+ return $share->getPermissions() === \OCP\Constants::PERMISSION_ALL &&
+ $share->getPassword() === 'password' &&
+ $share->getSendPasswordByTalk() === false &&
+ $share->getExpirationDate() === $date &&
+ $share->getNote() === 'note' &&
+ $share->getLabel() === 'label' &&
+ $share->getHideDownload() === true;
+ })
+ )->will($this->returnArgument(0));
+
+ $expected = new DataResponse([]);
+ $result = $ocs->updateShare(42, null, null, 'false', null, null, null, null, null);
$this->assertInstanceOf(get_class($expected), $result);
$this->assertEquals($expected->getData(), $result->getData());
@@ -1734,7 +1997,11 @@ class ShareAPIControllerTest extends TestCase {
->setSharedBy($this->currentUser)
->setShareType(\OCP\Share::SHARE_TYPE_LINK)
->setPassword('password')
+ ->setSendPasswordByTalk(true)
->setExpirationDate(new \DateTime())
+ ->setNote('note')
+ ->setLabel('label')
+ ->setHideDownload(true)
->setPermissions(\OCP\Constants::PERMISSION_ALL)
->setNode($node);
@@ -1751,12 +2018,16 @@ class ShareAPIControllerTest extends TestCase {
return $share->getPermissions() === \OCP\Constants::PERMISSION_ALL &&
$share->getPassword() === 'password' &&
- $share->getExpirationDate() == $date;
+ $share->getSendPasswordByTalk() === true &&
+ $share->getExpirationDate() == $date &&
+ $share->getNote() === 'note' &&
+ $share->getLabel() === 'label' &&
+ $share->getHideDownload() === true;
})
)->will($this->returnArgument(0));
$expected = new DataResponse([]);
- $result = $ocs->updateShare(42, null, null, null, null, '2010-12-23');
+ $result = $ocs->updateShare(42, null, null, null, null, '2010-12-23', null, null, null);
$this->assertInstanceOf(get_class($expected), $result);
$this->assertEquals($expected->getData(), $result->getData());
@@ -1774,7 +2045,11 @@ class ShareAPIControllerTest extends TestCase {
->setSharedBy($this->currentUser)
->setShareType(\OCP\Share::SHARE_TYPE_LINK)
->setPassword('password')
+ ->setSendPasswordByTalk(true)
->setExpirationDate($date)
+ ->setNote('note')
+ ->setLabel('label')
+ ->setHideDownload(true)
->setPermissions(\OCP\Constants::PERMISSION_ALL)
->setNode($folder);
@@ -1785,7 +2060,11 @@ class ShareAPIControllerTest extends TestCase {
$this->callback(function (\OCP\Share\IShare $share) use ($date) {
return $share->getPermissions() === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE) &&
$share->getPassword() === 'password' &&
- $share->getExpirationDate() === $date;
+ $share->getSendPasswordByTalk() === true &&
+ $share->getExpirationDate() === $date &&
+ $share->getNote() === 'note' &&
+ $share->getLabel() === 'label' &&
+ $share->getHideDownload() === true;
})
)->will($this->returnArgument(0));
@@ -1793,7 +2072,7 @@ class ShareAPIControllerTest extends TestCase {
->willReturn([]);
$expected = new DataResponse([]);
- $result = $ocs->updateShare(42, null, null, null, 'true', null);
+ $result = $ocs->updateShare(42, null, null, null, 'true', null, null, null, null);
$this->assertInstanceOf(get_class($expected), $result);
$this->assertEquals($expected->getData(), $result->getData());
@@ -1811,7 +2090,11 @@ class ShareAPIControllerTest extends TestCase {
->setSharedBy($this->currentUser)
->setShareType(\OCP\Share::SHARE_TYPE_LINK)
->setPassword('password')
+ ->setSendPasswordByTalk(true)
->setExpirationDate($date)
+ ->setNote('note')
+ ->setLabel('label')
+ ->setHideDownload(true)
->setPermissions(\OCP\Constants::PERMISSION_ALL)
->setNode($folder);
@@ -1822,14 +2105,18 @@ class ShareAPIControllerTest extends TestCase {
$this->callback(function (\OCP\Share\IShare $share) use ($date) {
return $share->getPermissions() === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE) &&
$share->getPassword() === 'password' &&
- $share->getExpirationDate() === $date;
+ $share->getSendPasswordByTalk() === true &&
+ $share->getExpirationDate() === $date &&
+ $share->getNote() === 'note' &&
+ $share->getLabel() === 'label' &&
+ $share->getHideDownload() === true;
})
)->will($this->returnArgument(0));
$this->shareManager->method('getSharedWith')->willReturn([]);
$expected = new DataResponse([]);
- $result = $ocs->updateShare(42, 7, null, null, null, null);
+ $result = $ocs->updateShare(42, 7, null, null, null, null, null, null, null);
$this->assertInstanceOf(get_class($expected), $result);
$this->assertEquals($expected->getData(), $result->getData());
@@ -1847,7 +2134,11 @@ class ShareAPIControllerTest extends TestCase {
->setSharedBy($this->currentUser)
->setShareType(\OCP\Share::SHARE_TYPE_LINK)
->setPassword('password')
+ ->setSendPasswordByTalk(true)
->setExpirationDate($date)
+ ->setNote('note')
+ ->setLabel('label')
+ ->setHideDownload(true)
->setPermissions(\OCP\Constants::PERMISSION_READ)
->setNode($folder);
@@ -1858,14 +2149,18 @@ class ShareAPIControllerTest extends TestCase {
$this->callback(function (\OCP\Share\IShare $share) use ($date) {
return $share->getPermissions() === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE) &&
$share->getPassword() === 'password' &&
- $share->getExpirationDate() === $date;
+ $share->getSendPasswordByTalk() === true &&
+ $share->getExpirationDate() === $date &&
+ $share->getNote() === 'note' &&
+ $share->getLabel() === 'label' &&
+ $share->getHideDownload() === true;
})
)->will($this->returnArgument(0));
$this->shareManager->method('getSharedWith')->willReturn([]);
$expected = new DataResponse([]);
- $result = $ocs->updateShare(42, 31, null, null, null, null);
+ $result = $ocs->updateShare(42, 31, null, null, null, null, null, null, null);
$this->assertInstanceOf(get_class($expected), $result);
$this->assertEquals($expected->getData(), $result->getData());
@@ -2394,6 +2689,56 @@ class ShareAPIControllerTest extends TestCase {
'file_target' => 'myTarget',
'share_with' => 'mypassword',
'share_with_displayname' => 'mypassword',
+ 'send_password_by_talk' => false,
+ 'mail_send' => 0,
+ 'url' => 'myLink',
+ 'mimetype' => 'myMimeType',
+ 'hide_download' => 0,
+ ], $share, [], false
+ ];
+
+ $share = \OC::$server->getShareManager()->newShare();
+ $share->setShareType(\OCP\Share::SHARE_TYPE_LINK)
+ ->setSharedBy('initiator')
+ ->setShareOwner('owner')
+ ->setPermissions(\OCP\Constants::PERMISSION_READ)
+ ->setNode($file)
+ ->setShareTime(new \DateTime('2000-01-01T00:01:02'))
+ ->setTarget('myTarget')
+ ->setPassword('mypassword')
+ ->setSendPasswordByTalk(true)
+ ->setExpirationDate(new \DateTime('2001-01-02T00:00:00'))
+ ->setToken('myToken')
+ ->setNote('personal note')
+ ->setLabel('new link share')
+ ->setId(42);
+
+ $result[] = [
+ [
+ 'id' => 42,
+ 'share_type' => \OCP\Share::SHARE_TYPE_LINK,
+ 'uid_owner' => 'initiator',
+ 'displayname_owner' => 'initiator',
+ 'permissions' => 1,
+ 'stime' => 946684862,
+ 'parent' => null,
+ 'expiration' => '2001-01-02 00:00:00',
+ 'token' => 'myToken',
+ 'uid_file_owner' => 'owner',
+ 'displayname_file_owner' => 'owner',
+ 'note' => 'personal note',
+ 'label' => 'new link share',
+ 'path' => 'file',
+ 'item_type' => 'file',
+ 'storage_id' => 'storageId',
+ 'storage' => 100,
+ 'item_source' => 3,
+ 'file_source' => 3,
+ 'file_parent' => 1,
+ 'file_target' => 'myTarget',
+ 'share_with' => 'mypassword',
+ 'share_with_displayname' => 'mypassword',
+ 'send_password_by_talk' => true,
'mail_send' => 0,
'url' => 'myLink',
'mimetype' => 'myMimeType',
diff --git a/apps/files_trashbin/l10n/hu.js b/apps/files_trashbin/l10n/hu.js
index 116f496b901..0972a05203a 100644
--- a/apps/files_trashbin/l10n/hu.js
+++ b/apps/files_trashbin/l10n/hu.js
@@ -4,15 +4,22 @@ OC.L10N.register(
"Deleted files" : "Törölt fájlok",
"Restore" : "Visszaállítás",
"Delete" : "Törlés",
+ "Error while restoring file from trashbin" : "Hiba a fájl kukából történő visszaállítása során",
"Delete permanently" : "Végleges törlés",
+ "Error while removing file from trashbin" : "Hiba a fájl kukából történő eltávolítása során",
+ "Error while restoring files from trashbin" : "Hiba a fájlok kukából történő visszaállítása során",
+ "Error while emptying trashbin" : "Hiba a kuka ürítése során",
+ "Error while removing files from trashbin" : "Hiba a fájlok kukából történő eltávolítása során",
"This operation is forbidden" : "Tiltott művelet",
"This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse a rendszergazdát",
"restored" : "visszaállítva",
+ "This application enables users to restore files that were deleted from the system." : "Ez az alkalmazás lehetővé teszi a felhasználók számára, hogy visszaállítson rendszerből már törölt fájlokat.",
"No deleted files" : "Nincs törölt fájl",
"You will be able to recover deleted files from here" : "Innen vissza tudja állítani a törölt fáljait.",
"No entries found in this folder" : "Nincsenek bejegyzések ebben a mappában",
"Select all" : "Összes kijelölése",
"Name" : "Név",
+ "Actions" : "Műveletek",
"Deleted" : "Törölve",
"Couldn't delete %s permanently" : "Nem sikerült %s végleges törlése",
"Couldn't restore %s" : "Nem sikerült %s visszaállítása",
diff --git a/apps/files_trashbin/l10n/hu.json b/apps/files_trashbin/l10n/hu.json
index 99ad32eaa83..5c79d3bdff8 100644
--- a/apps/files_trashbin/l10n/hu.json
+++ b/apps/files_trashbin/l10n/hu.json
@@ -2,15 +2,22 @@
"Deleted files" : "Törölt fájlok",
"Restore" : "Visszaállítás",
"Delete" : "Törlés",
+ "Error while restoring file from trashbin" : "Hiba a fájl kukából történő visszaállítása során",
"Delete permanently" : "Végleges törlés",
+ "Error while removing file from trashbin" : "Hiba a fájl kukából történő eltávolítása során",
+ "Error while restoring files from trashbin" : "Hiba a fájlok kukából történő visszaállítása során",
+ "Error while emptying trashbin" : "Hiba a kuka ürítése során",
+ "Error while removing files from trashbin" : "Hiba a fájlok kukából történő eltávolítása során",
"This operation is forbidden" : "Tiltott művelet",
"This directory is unavailable, please check the logs or contact the administrator" : "Ez a könyvtár nem elérhető, kérem nézze meg a naplófájlokat vagy keresse a rendszergazdát",
"restored" : "visszaállítva",
+ "This application enables users to restore files that were deleted from the system." : "Ez az alkalmazás lehetővé teszi a felhasználók számára, hogy visszaállítson rendszerből már törölt fájlokat.",
"No deleted files" : "Nincs törölt fájl",
"You will be able to recover deleted files from here" : "Innen vissza tudja állítani a törölt fáljait.",
"No entries found in this folder" : "Nincsenek bejegyzések ebben a mappában",
"Select all" : "Összes kijelölése",
"Name" : "Név",
+ "Actions" : "Műveletek",
"Deleted" : "Törölve",
"Couldn't delete %s permanently" : "Nem sikerült %s végleges törlése",
"Couldn't restore %s" : "Nem sikerült %s visszaállítása",
diff --git a/apps/files_trashbin/tests/CapabilitiesTest.php b/apps/files_trashbin/tests/CapabilitiesTest.php
new file mode 100644
index 00000000000..2a3e89bf414
--- /dev/null
+++ b/apps/files_trashbin/tests/CapabilitiesTest.php
@@ -0,0 +1,44 @@
+<?php
+/**
+ * @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\Files_Trashbin\Tests;
+
+use OCA\Files_Trashbin\Capabilities;
+use Test\TestCase;
+
+class CapabilitiesTest extends TestCase {
+
+ /** @var Capabilities */
+ private $capabilities;
+
+ public function setUp() {
+ parent::setUp();
+ $this->capabilities = new Capabilities();
+ }
+
+ public function testGetCapabilities() {
+ $capabilities = [
+ 'files' => [
+ 'undelete' => true
+ ]
+ ];
+
+ $this->assertSame($capabilities, $this->capabilities->getCapabilities());
+ }
+} \ No newline at end of file
diff --git a/apps/oauth2/l10n/ca.js b/apps/oauth2/l10n/ca.js
index c7331e84238..0cf9f84b3cf 100644
--- a/apps/oauth2/l10n/ca.js
+++ b/apps/oauth2/l10n/ca.js
@@ -1,8 +1,11 @@
OC.L10N.register(
"oauth2",
{
+ "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "El teu URL de redirecció ha de ser una adreça URL completa per exemple: https://elteudomini.com/cami",
"OAuth 2.0" : "OAuth 2.0",
- "OAuth 2.0 clients" : "clients OAuth 2.0",
+ "Allows OAuth2 compatible authentication from other web applications." : "Permet autenticació compatible amb OAuth2 des d'altres aplicacions web.",
+ "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "L’app OAuth2 permet als administradors configurar el flux de treball d'autenticació integrada per també permetre l'autenticació compatible amb OAuth2 des d'altres aplicacions web.",
+ "OAuth 2.0 clients" : "Clients OAuth 2.0",
"Name" : "Nom",
"Client Identifier" : "Identificador de client",
"Add client" : "Afegir client",
diff --git a/apps/oauth2/l10n/ca.json b/apps/oauth2/l10n/ca.json
index f36e707d7d1..0ad0a3516e2 100644
--- a/apps/oauth2/l10n/ca.json
+++ b/apps/oauth2/l10n/ca.json
@@ -1,6 +1,9 @@
{ "translations": {
+ "Your redirect URL needs to be a full URL for example: https://yourdomain.com/path" : "El teu URL de redirecció ha de ser una adreça URL completa per exemple: https://elteudomini.com/cami",
"OAuth 2.0" : "OAuth 2.0",
- "OAuth 2.0 clients" : "clients OAuth 2.0",
+ "Allows OAuth2 compatible authentication from other web applications." : "Permet autenticació compatible amb OAuth2 des d'altres aplicacions web.",
+ "The OAuth2 app allows administrators to configure the built-in authentication workflow to also allow OAuth2 compatible authentication from other web applications." : "L’app OAuth2 permet als administradors configurar el flux de treball d'autenticació integrada per també permetre l'autenticació compatible amb OAuth2 des d'altres aplicacions web.",
+ "OAuth 2.0 clients" : "Clients OAuth 2.0",
"Name" : "Nom",
"Client Identifier" : "Identificador de client",
"Add client" : "Afegir client",
diff --git a/apps/sharebymail/l10n/nl.js b/apps/sharebymail/l10n/nl.js
index 214181fd65b..e1464d4d351 100644
--- a/apps/sharebymail/l10n/nl.js
+++ b/apps/sharebymail/l10n/nl.js
@@ -41,7 +41,7 @@ OC.L10N.register(
"Share provider which allows you to share files by mail" : "Share provider waarmee je bestanden via de mail kunt delen",
"Allows users to share a personalized link to a file or folder by putting in an email address." : "Staat gebruikers toe om een gepersonaliseerde link of map te delen door een e-mailadres op te geven.",
"Send password by mail" : "Wachtwoord per email verzenden",
- "Enforce password protection" : "Wachtwoord-beveiliging afdwingen",
+ "Enforce password protection" : "Wachtwoordbeveiliging afdwingen",
"Sharing %s failed, this item is already shared with %s" : "Delen van %s is mislukt, omdat dit al gedeeld wordt met %s",
"Failed to send share by E-mail" : "delen per email is mislukt",
"%s shared »%s« with you" : "%s heeft \"%s\" met je gedeeld",
diff --git a/apps/sharebymail/l10n/nl.json b/apps/sharebymail/l10n/nl.json
index ac99ce687ea..7e28778ef9d 100644
--- a/apps/sharebymail/l10n/nl.json
+++ b/apps/sharebymail/l10n/nl.json
@@ -39,7 +39,7 @@
"Share provider which allows you to share files by mail" : "Share provider waarmee je bestanden via de mail kunt delen",
"Allows users to share a personalized link to a file or folder by putting in an email address." : "Staat gebruikers toe om een gepersonaliseerde link of map te delen door een e-mailadres op te geven.",
"Send password by mail" : "Wachtwoord per email verzenden",
- "Enforce password protection" : "Wachtwoord-beveiliging afdwingen",
+ "Enforce password protection" : "Wachtwoordbeveiliging afdwingen",
"Sharing %s failed, this item is already shared with %s" : "Delen van %s is mislukt, omdat dit al gedeeld wordt met %s",
"Failed to send share by E-mail" : "delen per email is mislukt",
"%s shared »%s« with you" : "%s heeft \"%s\" met je gedeeld",
diff --git a/apps/systemtags/l10n/hu.js b/apps/systemtags/l10n/hu.js
index fe38fb31f64..9c7f729d475 100644
--- a/apps/systemtags/l10n/hu.js
+++ b/apps/systemtags/l10n/hu.js
@@ -43,6 +43,7 @@ OC.L10N.register(
"<strong>System tags</strong> for a file have been modified" : "A fájl <strong>rendszer címkéje</strong> módosítva lett",
"Collaborative tags" : "Együttműködési címkék",
"Select tag …" : "Címke választás...",
+ "Create a new tag" : "Új címke létrehozása",
"Name" : "Név",
"Public" : "Nyilvános",
"Restricted" : "Korlátozott",
diff --git a/apps/systemtags/l10n/hu.json b/apps/systemtags/l10n/hu.json
index 63e4a3132a4..f743f2095f9 100644
--- a/apps/systemtags/l10n/hu.json
+++ b/apps/systemtags/l10n/hu.json
@@ -41,6 +41,7 @@
"<strong>System tags</strong> for a file have been modified" : "A fájl <strong>rendszer címkéje</strong> módosítva lett",
"Collaborative tags" : "Együttműködési címkék",
"Select tag …" : "Címke választás...",
+ "Create a new tag" : "Új címke létrehozása",
"Name" : "Név",
"Public" : "Nyilvános",
"Restricted" : "Korlátozott",
diff --git a/apps/theming/l10n/fr.js b/apps/theming/l10n/fr.js
index ae4791e202f..0527c421061 100644
--- a/apps/theming/l10n/fr.js
+++ b/apps/theming/l10n/fr.js
@@ -8,7 +8,7 @@ OC.L10N.register(
"Name cannot be empty" : "Le nom ne peut pas être vide",
"The given name is too long" : "Le nom donné est trop long",
"The given web address is too long" : "L'adresse web donnée est trop longue",
- "The given legal notice address is too long" : "L'adresse de la notice légale donnée est trop longue",
+ "The given legal notice address is too long" : "L'adresse fournie pour la notice légale est trop longue",
"The given privacy policy address is too long" : "L'adresse de la politique de confidentialité est trop longue",
"The given slogan is too long" : "Le slogan donné est trop long",
"The given color is invalid" : "La couleur donnée est invalide",
@@ -40,7 +40,7 @@ OC.L10N.register(
"Upload new login background" : "Téléverser un nouvel arrière-plan de connexion",
"Remove background image" : "Supprimer l'image en arrière-plan",
"Advanced options" : "Options avancées",
- "Legal notice link" : "Lien de la notice légale",
+ "Legal notice link" : "Lien vers la notice légale",
"Privacy policy link" : "Lien de la politique de confidentialité",
"Header logo" : "Logo d'en-tête",
"Upload new header logo" : "Téléverser un nouveau logo d'en-tête",
diff --git a/apps/theming/l10n/fr.json b/apps/theming/l10n/fr.json
index d9f49f28f62..c47487f9e42 100644
--- a/apps/theming/l10n/fr.json
+++ b/apps/theming/l10n/fr.json
@@ -6,7 +6,7 @@
"Name cannot be empty" : "Le nom ne peut pas être vide",
"The given name is too long" : "Le nom donné est trop long",
"The given web address is too long" : "L'adresse web donnée est trop longue",
- "The given legal notice address is too long" : "L'adresse de la notice légale donnée est trop longue",
+ "The given legal notice address is too long" : "L'adresse fournie pour la notice légale est trop longue",
"The given privacy policy address is too long" : "L'adresse de la politique de confidentialité est trop longue",
"The given slogan is too long" : "Le slogan donné est trop long",
"The given color is invalid" : "La couleur donnée est invalide",
@@ -38,7 +38,7 @@
"Upload new login background" : "Téléverser un nouvel arrière-plan de connexion",
"Remove background image" : "Supprimer l'image en arrière-plan",
"Advanced options" : "Options avancées",
- "Legal notice link" : "Lien de la notice légale",
+ "Legal notice link" : "Lien vers la notice légale",
"Privacy policy link" : "Lien de la politique de confidentialité",
"Header logo" : "Logo d'en-tête",
"Upload new header logo" : "Téléverser un nouveau logo d'en-tête",
diff --git a/apps/user_ldap/l10n/nl.js b/apps/user_ldap/l10n/nl.js
index 1272701ddf5..ac0fa66bd6d 100644
--- a/apps/user_ldap/l10n/nl.js
+++ b/apps/user_ldap/l10n/nl.js
@@ -166,7 +166,7 @@ OC.L10N.register(
"Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Sta LDAP gebruikers toe om hun wachtwoord te wijzigen en sta Superbeheerders en Groepsbeheerder toe om het wachtwoord van hun LDAP gebruikers te wijzigen. Dit werkt alleen als het toegangsbeveiligingsbeleid als zodanig ook op de LDAP server is ingericht. Omdat wachtwoorden in leesbare tekst naar de LDAP worden verstuurd, moet transportversleuteling worden gebruikt en moet wachtwoord hashing zijn geconfigureerd op de LDAP server.",
"(New password is sent as plain text to LDAP)" : "(Nieuw wachtwoord is als leesbare tekst verstuurd naar LDAP)",
"Default password policy DN" : "Standaard wachtwoordbeleid DN",
- "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Het DN of standaard wachtwoordbeleid dat wordt gebruikt voor het verlopen van wachtwoorden. Wordt alleen ondersteund in combinaite met OpenLDAP wanneer paswoord wijzigingen per gebruiker is ingeschakeld. Leeg laten wanneer wanneer je wachtwoord verloop wil uitschakelen.",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Het DN of standaard wachtwoordbeleid dat wordt gebruikt voor het laten verlopen van wachtwoorden. Wordt alleen ondersteund in combinaite met OpenLDAP wanneer wachtwoordwijziging per gebruiker is ingeschakeld. Leeg laten wanneer wanneer je het laten verlopen van wachtwoorden wil uitschakelen.",
"Special Attributes" : "Speciale attributen",
"Quota Field" : "Quota veld",
"Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Laat leeg voor het standaard gebruikersquotum. Of specificeer een LDAP/AD attribuut.",
diff --git a/apps/user_ldap/l10n/nl.json b/apps/user_ldap/l10n/nl.json
index ca886cd2760..c7980737941 100644
--- a/apps/user_ldap/l10n/nl.json
+++ b/apps/user_ldap/l10n/nl.json
@@ -164,7 +164,7 @@
"Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Sta LDAP gebruikers toe om hun wachtwoord te wijzigen en sta Superbeheerders en Groepsbeheerder toe om het wachtwoord van hun LDAP gebruikers te wijzigen. Dit werkt alleen als het toegangsbeveiligingsbeleid als zodanig ook op de LDAP server is ingericht. Omdat wachtwoorden in leesbare tekst naar de LDAP worden verstuurd, moet transportversleuteling worden gebruikt en moet wachtwoord hashing zijn geconfigureerd op de LDAP server.",
"(New password is sent as plain text to LDAP)" : "(Nieuw wachtwoord is als leesbare tekst verstuurd naar LDAP)",
"Default password policy DN" : "Standaard wachtwoordbeleid DN",
- "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Het DN of standaard wachtwoordbeleid dat wordt gebruikt voor het verlopen van wachtwoorden. Wordt alleen ondersteund in combinaite met OpenLDAP wanneer paswoord wijzigingen per gebruiker is ingeschakeld. Leeg laten wanneer wanneer je wachtwoord verloop wil uitschakelen.",
+ "The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "Het DN of standaard wachtwoordbeleid dat wordt gebruikt voor het laten verlopen van wachtwoorden. Wordt alleen ondersteund in combinaite met OpenLDAP wanneer wachtwoordwijziging per gebruiker is ingeschakeld. Leeg laten wanneer wanneer je het laten verlopen van wachtwoorden wil uitschakelen.",
"Special Attributes" : "Speciale attributen",
"Quota Field" : "Quota veld",
"Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Laat leeg voor het standaard gebruikersquotum. Of specificeer een LDAP/AD attribuut.",
diff --git a/build/integration/features/webdav-related.feature b/build/integration/features/webdav-related.feature
index 77fe811fada..a5fd8140518 100644
--- a/build/integration/features/webdav-related.feature
+++ b/build/integration/features/webdav-related.feature
@@ -8,7 +8,7 @@ Feature: webdav-related
Then the HTTP status code should be "401"
And there are no duplicate headers
And The following headers should be set
- |WWW-Authenticate|Basic realm="Nextcloud"|
+ |WWW-Authenticate|Basic realm="Nextcloud", charset="UTF-8"|
Scenario: Unauthenticated call new dav path
Given using new dav path
@@ -16,7 +16,7 @@ Feature: webdav-related
Then the HTTP status code should be "401"
And there are no duplicate headers
And The following headers should be set
- |WWW-Authenticate|Basic realm="Nextcloud"|
+ |WWW-Authenticate|Basic realm="Nextcloud", charset="UTF-8"|
Scenario: Moving a file
Given using old dav path
diff --git a/core/css/header.scss b/core/css/header.scss
index 879734097ae..30f2c30b7b4 100644
--- a/core/css/header.scss
+++ b/core/css/header.scss
@@ -553,7 +553,8 @@ nav[role='navigation'] {
li {
/* Move up app icon */
svg,
- .icon-more-white {
+ .icon-more, icon-more-white,
+ .icon-loading-small, .icon-loading-small-dark {
transform: translateY(-7px);
}
@@ -582,7 +583,8 @@ nav[role='navigation'] {
li a:focus {
/* Move up app icon */
svg,
- .icon-more-white, {
+ .icon-more, icon-more-white,
+ .icon-loading-small, .icon-loading-small-dark {
transform: translateY(-7px);
}
diff --git a/core/js/js.js b/core/js/js.js
index fd6e0a68da5..026cc6bb0d6 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -1562,13 +1562,14 @@ function initCore() {
var resizeMenu = function() {
var appList = $('#appmenu li');
- var headerWidth = $('.header-left').outerWidth() - $('#nextcloud').outerWidth();
+ var rightHeaderWidth = $('.header-right').outerWidth();
+ var headerWidth = $('header').outerWidth();
var usePercentualAppMenuLimit = 0.33;
var minAppsDesktop = 8;
- var availableWidth = headerWidth - $(appList).width();
+ var availableWidth = headerWidth - $('#nextcloud').outerWidth() - (rightHeaderWidth > 210 ? rightHeaderWidth : 210)
var isMobile = $(window).width() < 768;
if (!isMobile) {
- availableWidth = headerWidth * usePercentualAppMenuLimit;
+ availableWidth = availableWidth * usePercentualAppMenuLimit;
}
var appCount = Math.floor((availableWidth / $(appList).width()));
if (isMobile && appCount > minAppsDesktop) {
@@ -1613,7 +1614,7 @@ function initCore() {
}
};
$(window).resize(resizeMenu);
- resizeMenu();
+ setTimeout(resizeMenu, 0);
// just add snapper for logged in users
if($('#app-navigation').length && !$('html').hasClass('lte9')) {
diff --git a/core/js/share/sharedialoglinkshareview_popover_menu.handlebars b/core/js/share/sharedialoglinkshareview_popover_menu.handlebars
index cc951ce047d..59312bc70b0 100644
--- a/core/js/share/sharedialoglinkshareview_popover_menu.handlebars
+++ b/core/js/share/sharedialoglinkshareview_popover_menu.handlebars
@@ -62,6 +62,16 @@
</span>
</li>
{{/if}}
+ {{#if showPasswordByTalkCheckBox}}
+ <li>
+ <span class="shareOption menuitem">
+ <span class="icon-loading-small hidden"></span>
+ <input type="checkbox" name="passwordByTalk" id="passwordByTalk-{{cid}}" class="checkbox passwordByTalkCheckbox"
+ {{#if isPasswordByTalkSet}}checked="checked"{{/if}} />
+ <label for="passwordByTalk-{{cid}}">{{passwordByTalkLabel}}</label>
+ </span>
+ </li>
+ {{/if}}
<li>
<span class="menuitem">
<input id="expireDate-{{cid}}" type="checkbox" name="expirationDate" class="expireDate checkbox"
diff --git a/core/js/sharedialoglinkshareview.js b/core/js/sharedialoglinkshareview.js
index 4ea8c0fa153..e5af4ad1f17 100644
--- a/core/js/sharedialoglinkshareview.js
+++ b/core/js/sharedialoglinkshareview.js
@@ -54,6 +54,7 @@
'focusout input.linkPassText': 'onPasswordEntered',
'keyup input.linkPassText': 'onPasswordKeyUp',
'change .showPasswordCheckbox': 'onShowPasswordClick',
+ 'change .passwordByTalkCheckbox': 'onPasswordByTalkChange',
'change .publicEditingCheckbox': 'onAllowPublicEditingChange',
// copy link url
'click .linkText': 'onLinkTextClick',
@@ -96,6 +97,37 @@
view.render();
});
+ this.model.on('change:linkShares', function(model, linkShares) {
+ // The "Password protect by Talk" item is shown only when there
+ // is a password. Unfortunately there is no fine grained
+ // rendering of items in the link shares, so the whole view
+ // needs to be rendered again when the password of a share
+ // changes.
+ // Note that this event handler is concerned only about password
+ // changes; other changes in the link shares does not trigger
+ // a rendering, so the view must be rendered again as needed in
+ // those cases (for example, when a link share is removed).
+
+ var previousLinkShares = model.previous('linkShares');
+ if (previousLinkShares.length !== linkShares.length) {
+ return;
+ }
+
+ var i;
+ for (i = 0; i < linkShares.length; i++) {
+ if (linkShares[i].id !== previousLinkShares[i].id) {
+ // A resorting should never happen, but just in case.
+ return;
+ }
+
+ if (linkShares[i].password !== previousLinkShares[i].password) {
+ view.render();
+
+ return;
+ }
+ }
+ });
+
if(!_.isUndefined(options.configModel)) {
this.configModel = options.configModel;
} else {
@@ -343,6 +375,32 @@
});
},
+ onPasswordByTalkChange: function(event) {
+ var $element = $(event.target);
+ var $li = $element.closest('li[data-share-id]');
+ var shareId = $li.data('share-id');
+ var $checkbox = $li.find('.passwordByTalkCheckbox');
+ $checkbox.siblings('.icon-loading-small').removeClass('hidden').addClass('inlineblock');
+
+ var sendPasswordByTalk = false;
+ if($checkbox.is(':checked')) {
+ sendPasswordByTalk = true;
+ }
+
+ this.model.saveLinkShare({
+ sendPasswordByTalk: sendPasswordByTalk,
+ cid: shareId
+ }, {
+ success: function() {
+ $checkbox.siblings('.icon-loading-small').addClass('hidden').removeClass('inlineblock');
+ },
+ error: function(obj, msg) {
+ OC.Notification.showTemporary(t('core', 'Unable to toggle this option'));
+ $checkbox.siblings('.icon-loading-small').addClass('hidden').removeClass('inlineblock');
+ }
+ });
+ },
+
onAllowPublicEditingChange: function(event) {
var $element = $(event.target);
var $li = $element.closest('li[data-share-id]');
@@ -790,6 +848,9 @@
expireDate = moment(share.expiration, 'YYYY-MM-DD').format('DD-MM-YYYY');
}
+ var isTalkEnabled = oc_appswebroots['spreed'] !== undefined;
+ var sendPasswordByTalk = share.sendPasswordByTalk;
+
var showHideDownloadCheckbox = !this.model.isFolder();
var hideDownload = share.hideDownload;
@@ -816,6 +877,9 @@
passwordPlaceholder: isPasswordSet ? PASSWORD_PLACEHOLDER : PASSWORD_PLACEHOLDER_MESSAGE,
isPasswordSet: isPasswordSet || isPasswordEnabledByDefault || isPasswordEnforced,
showPasswordCheckBox: showPasswordCheckBox,
+ showPasswordByTalkCheckBox: isTalkEnabled && isPasswordSet,
+ passwordByTalkLabel: t('core', 'Password protect by Talk'),
+ isPasswordByTalkSet: sendPasswordByTalk,
publicUploadRWChecked: publicUploadRWChecked,
publicUploadRChecked: publicUploadRChecked,
publicUploadWChecked: publicUploadWChecked,
diff --git a/core/js/shareitemmodel.js b/core/js/shareitemmodel.js
index f4f8c023705..2349f19092f 100644
--- a/core/js/shareitemmodel.js
+++ b/core/js/shareitemmodel.js
@@ -19,6 +19,7 @@
* @property {string} token
* @property {bool} hideDownload
* @property {string|null} password
+ * @property {bool} sendPasswordByTalk
* @property {number} permissions
* @property {Date} expiration
* @property {number} stime share time
@@ -141,6 +142,7 @@
hideDownload: false,
password: '',
passwordChanged: false,
+ sendPasswordByTalk: false,
permissions: OC.PERMISSION_READ,
expireDate: this.configModel.getDefaultExpirationDateString(),
shareType: OC.Share.SHARE_TYPE_LINK
@@ -886,7 +888,8 @@
// hide_download is returned as an int, so force it
// to a boolean
hideDownload: !!share.hide_download,
- password: share.share_with
+ password: share.share_with,
+ sendPasswordByTalk: share.send_password_by_talk
}));
return share;
diff --git a/core/js/sharetemplates.js b/core/js/sharetemplates.js
index edf73941967..0f1762c5f05 100644
--- a/core/js/sharetemplates.js
+++ b/core/js/sharetemplates.js
@@ -158,18 +158,30 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont
},"11":function(container,depth0,helpers,partials,data) {
return "hidden";
},"13":function(container,depth0,helpers,partials,data) {
- return "datepicker";
+ var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
+
+ return " <li>\n <span class=\"shareOption menuitem\">\n <span class=\"icon-loading-small hidden\"></span>\n <input type=\"checkbox\" name=\"passwordByTalk\" id=\"passwordByTalk-"
+ + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
+ + "\" class=\"checkbox passwordByTalkCheckbox\"\n "
+ + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isPasswordByTalkSet : depth0),{"name":"if","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + " />\n <label for=\"passwordByTalk-"
+ + alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
+ + "\">"
+ + alias4(((helper = (helper = helpers.passwordByTalkLabel || (depth0 != null ? depth0.passwordByTalkLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"passwordByTalkLabel","hash":{},"data":data}) : helper)))
+ + "</label>\n </span>\n </li>\n";
},"15":function(container,depth0,helpers,partials,data) {
+ return "datepicker";
+},"17":function(container,depth0,helpers,partials,data) {
var helper;
return container.escapeExpression(((helper = (helper = helpers.expireDate || (depth0 != null ? depth0.expireDate : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"expireDate","hash":{},"data":data}) : helper)));
-},"17":function(container,depth0,helpers,partials,data) {
+},"19":function(container,depth0,helpers,partials,data) {
var helper;
return container.escapeExpression(((helper = (helper = helpers.defaultExpireDate || (depth0 != null ? depth0.defaultExpireDate : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"defaultExpireDate","hash":{},"data":data}) : helper)));
-},"19":function(container,depth0,helpers,partials,data) {
- return "readonly";
},"21":function(container,depth0,helpers,partials,data) {
+ return "readonly";
+},"23":function(container,depth0,helpers,partials,data) {
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
return " <li>\n <a href=\"#\" class=\"menuitem pop-up\" data-url=\""
@@ -193,6 +205,7 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.publicEditing : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.showHideDownloadCheckbox : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.showPasswordCheckBox : depth0),{"name":"if","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.showPasswordByTalkCheckBox : depth0),{"name":"if","hash":{},"fn":container.program(13, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ " <li>\n <span class=\"menuitem\">\n <input id=\"expireDate-"
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
+ "\" type=\"checkbox\" name=\"expirationDate\" class=\"expireDate checkbox\"\n "
@@ -216,15 +229,15 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont
+ "</label>\n <!-- do not use the datepicker if enforced -->\n <input id=\"expirationDatePicker-"
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
+ "\" class=\""
- + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.isExpirationEnforced : depth0),{"name":"unless","hash":{},"fn":container.program(13, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.isExpirationEnforced : depth0),{"name":"unless","hash":{},"fn":container.program(15, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ "\" type=\"text\"\n placeholder=\""
+ alias4(((helper = (helper = helpers.expirationDatePlaceholder || (depth0 != null ? depth0.expirationDatePlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"expirationDatePlaceholder","hash":{},"data":data}) : helper)))
+ "\" value=\""
- + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{"name":"if","hash":{},"fn":container.program(15, data, 0),"inverse":container.program(17, data, 0),"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{"name":"if","hash":{},"fn":container.program(17, data, 0),"inverse":container.program(19, data, 0),"data":data})) != null ? stack1 : "")
+ "\"\n data-max-date=\""
+ alias4(((helper = (helper = helpers.maxDate || (depth0 != null ? depth0.maxDate : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"maxDate","hash":{},"data":data}) : helper)))
+ "\" "
- + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isExpirationEnforced : depth0),{"name":"if","hash":{},"fn":container.program(19, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isExpirationEnforced : depth0),{"name":"if","hash":{},"fn":container.program(21, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ " />\n </span>\n </li>\n <li>\n <a href=\"#\" class=\"share-add\">\n <span class=\"icon-loading-small hidden\"></span>\n <span class=\"icon icon-edit\"></span>\n <span>"
+ alias4(((helper = (helper = helpers.addNoteLabel || (depth0 != null ? depth0.addNoteLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"addNoteLabel","hash":{},"data":data}) : helper)))
+ "</span>\n <input type=\"button\" class=\"share-note-delete icon-delete "
@@ -236,7 +249,7 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont
+ "</textarea>\n <input type=\"submit\" class=\"icon-confirm share-note-submit\" value=\"\" id=\"add-note-"
+ alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shareId","hash":{},"data":data}) : helper)))
+ "\" />\n </span>\n </li>\n"
- + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.social : depth0),{"name":"each","hash":{},"fn":container.program(21, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.social : depth0),{"name":"each","hash":{},"fn":container.program(23, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ " <li>\n <a href=\"#\" class=\"unshare\"><span class=\"icon-loading-small hidden\"></span><span class=\"icon icon-delete\"></span><span>"
+ alias4(((helper = (helper = helpers.unshareLinkLabel || (depth0 != null ? depth0.unshareLinkLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"unshareLinkLabel","hash":{},"data":data}) : helper)))
+ "</span></a>\n </li>\n <li>\n <a href=\"#\" class=\"new-share\">\n <span class=\"icon-loading-small hidden\"></span>\n <span class=\"icon icon-add\"></span>\n <span>"
diff --git a/core/js/tests/specs/coreSpec.js b/core/js/tests/specs/coreSpec.js
index 67b7d77be6c..63c02048a34 100644
--- a/core/js/tests/specs/coreSpec.js
+++ b/core/js/tests/specs/coreSpec.js
@@ -573,6 +573,10 @@ describe('Core base tests', function() {
});
it('Clicking menu toggle toggles navigation in', function() {
window.initCore();
+ // fore show more apps icon since otherwise it would be hidden since no icons are available
+ clock.tick(1 * 1000);
+ $('#more-apps').show();
+
expect($navigation.is(':visible')).toEqual(false);
$toggle.click();
clock.tick(1 * 1000);
diff --git a/core/js/tests/specs/sharedialoglinkshareview.js b/core/js/tests/specs/sharedialoglinkshareview.js
index f5fe8725c03..c2d84fd2e87 100644
--- a/core/js/tests/specs/sharedialoglinkshareview.js
+++ b/core/js/tests/specs/sharedialoglinkshareview.js
@@ -235,4 +235,117 @@ describe('OC.Share.ShareDialogLinkShareView', function () {
});
+ describe('protect password by Talk', function () {
+
+ var $passwordByTalkCheckbox;
+ var $workingIcon;
+
+ beforeEach(function () {
+ // Needed to render the view
+ configModel.isShareWithLinkAllowed.returns(true);
+
+ // "Enable" Talk
+ window.oc_appswebroots['spreed'] = window.oc_webroot + '/apps/files/';
+
+ shareModel.set({
+ linkShares: [{
+ id: 123,
+ password: 'password'
+ }]
+ });
+ view.render();
+
+ $passwordByTalkCheckbox = view.$el.find('.passwordByTalkCheckbox');
+ $workingIcon = $passwordByTalkCheckbox.prev('.icon-loading-small');
+
+ sinon.stub(shareModel, 'saveLinkShare');
+
+ expect($workingIcon.hasClass('hidden')).toBeTruthy();
+ });
+
+ afterEach(function () {
+ shareModel.saveLinkShare.restore();
+ });
+
+ it('is shown if Talk is enabled and there is a password set', function() {
+ expect($passwordByTalkCheckbox.length).toBeTruthy();
+ });
+
+ it('is not shown if Talk is enabled but there is no password set', function() {
+ // Changing the password value also triggers the rendering
+ shareModel.set({
+ linkShares: [{
+ id: 123
+ }]
+ });
+
+ $passwordByTalkCheckbox = view.$el.find('.passwordByTalkCheckbox');
+
+ expect($passwordByTalkCheckbox.length).toBeFalsy();
+ });
+
+ it('is not shown if there is a password set but Talk is not enabled', function() {
+ // "Disable" Talk
+ delete window.oc_appswebroots['spreed'];
+
+ view.render();
+
+ $passwordByTalkCheckbox = view.$el.find('.passwordByTalkCheckbox');
+
+ expect($passwordByTalkCheckbox.length).toBeFalsy();
+ });
+
+ it('checkbox is checked when the setting is enabled', function () {
+ shareModel.set({
+ linkShares: [{
+ id: 123,
+ password: 'password',
+ sendPasswordByTalk: true
+ }]
+ });
+ view.render();
+
+ $passwordByTalkCheckbox = view.$el.find('.passwordByTalkCheckbox');
+
+ expect($passwordByTalkCheckbox.is(':checked')).toEqual(true);
+ });
+
+ it('checkbox is not checked when the setting is disabled', function () {
+ expect($passwordByTalkCheckbox.is(':checked')).toEqual(false);
+ });
+
+ it('enables the setting if clicked when unchecked', function () {
+ // Simulate the click by checking the checkbox and then triggering
+ // the "change" event.
+ $passwordByTalkCheckbox.prop('checked', true);
+ $passwordByTalkCheckbox.change();
+
+ expect($workingIcon.hasClass('hidden')).toBeFalsy();
+ expect(shareModel.saveLinkShare.withArgs({ sendPasswordByTalk: true, cid: 123 }).calledOnce).toBeTruthy();
+ });
+
+ it('disables the setting if clicked when checked', function () {
+ shareModel.set({
+ linkShares: [{
+ id: 123,
+ password: 'password',
+ sendPasswordByTalk: true
+ }]
+ });
+ view.render();
+
+ $passwordByTalkCheckbox = view.$el.find('.passwordByTalkCheckbox');
+ $workingIcon = $passwordByTalkCheckbox.prev('.icon-loading-small');
+
+ // Simulate the click by unchecking the checkbox and then triggering
+ // the "change" event.
+ $passwordByTalkCheckbox.prop('checked', false);
+ $passwordByTalkCheckbox.change();
+
+ expect($workingIcon.hasClass('hidden')).toBeFalsy();
+ expect(shareModel.saveLinkShare.withArgs({ sendPasswordByTalk: false, cid: 123 }).calledOnce).toBeTruthy();
+ });
+
+ });
+
});
diff --git a/core/js/tests/specs/shareitemmodelSpec.js b/core/js/tests/specs/shareitemmodelSpec.js
index 3b4dc5a960f..e8016950094 100644
--- a/core/js/tests/specs/shareitemmodelSpec.js
+++ b/core/js/tests/specs/shareitemmodelSpec.js
@@ -169,7 +169,8 @@ describe('OC.Share.ShareItemModel', function() {
storage: 1,
token: 'tehtoken',
uid_owner: 'root',
- hide_download: 1
+ hide_download: 1,
+ send_password_by_talk: true
}
]));
@@ -189,6 +190,7 @@ describe('OC.Share.ShareItemModel', function() {
expect(linkShares.length).toEqual(1);
var linkShare = linkShares[0];
expect(linkShare.hideDownload).toEqual(true);
+ expect(linkShare.sendPasswordByTalk).toEqual(true);
// TODO: check more attributes
});
@@ -293,7 +295,8 @@ describe('OC.Share.ShareItemModel', function() {
storage: 1,
token: 'tehtoken',
uid_owner: 'root',
- hide_download: 0
+ hide_download: 0,
+ send_password_by_talk: false
}, {
displayname_owner: 'root',
expiration: '2015-10-15 00:00:00',
@@ -312,7 +315,8 @@ describe('OC.Share.ShareItemModel', function() {
storage: 1,
token: 'anothertoken',
uid_owner: 'root',
- hide_download: 1
+ hide_download: 1,
+ send_password_by_talk: true
}]
));
OC.currentUser = 'root';
@@ -327,6 +331,7 @@ describe('OC.Share.ShareItemModel', function() {
var linkShare = linkShares[0];
expect(linkShare.token).toEqual('tehtoken');
expect(linkShare.hideDownload).toEqual(false);
+ expect(linkShare.sendPasswordByTalk).toEqual(false);
// TODO: check child too
});
@@ -588,6 +593,7 @@ describe('OC.Share.ShareItemModel', function() {
hideDownload: false,
password: '',
passwordChanged: false,
+ sendPasswordByTalk: false,
permissions: OC.PERMISSION_READ,
expireDate: '',
shareType: OC.Share.SHARE_TYPE_LINK
@@ -612,6 +618,7 @@ describe('OC.Share.ShareItemModel', function() {
hideDownload: false,
password: '',
passwordChanged: false,
+ sendPasswordByTalk: false,
permissions: OC.PERMISSION_READ,
expireDate: '2015-07-24 00:00:00',
shareType: OC.Share.SHARE_TYPE_LINK
diff --git a/core/l10n/ca.js b/core/l10n/ca.js
index abb25a9a00f..87db749cf63 100644
--- a/core/l10n/ca.js
+++ b/core/l10n/ca.js
@@ -179,6 +179,7 @@ OC.L10N.register(
"Note to recipient" : "Nota a destinatari",
"Unshare" : "Deixa de compartir",
"Share link" : "Enllaç de compartició",
+ "Password protect by Talk" : "Contrasenya protegida per Talk",
"Could not unshare" : "No pot descompartir",
"Shared with you and the group {group} by {owner}" : "Compartit amb vos i amb el grup {group} per {owner}",
"Shared with you and {circle} by {owner}" : "Compartit amb tu i {circle} per {owner}",
@@ -197,7 +198,6 @@ OC.L10N.register(
"Can create" : "Pot crear",
"Can change" : "Pot modificar",
"Can delete" : "Pot esborrar",
- "Password protect by Talk" : "Contrasenya protegida per Talk",
"Access control" : "Control d'accés",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} compartida per enllaç",
"Error while sharing" : "Error en compartir",
@@ -409,7 +409,6 @@ OC.L10N.register(
"Back to log in" : "Torna a l'accés",
"You are about to grant %s access to your %s account." : "Estàs a punt d'autoritzar a %s a accedir al teu compte %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "Depenent de la teva configuració, aquest botó també podria funcionar per confiar en el domini:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Esperant cron per acabar (torna a comprovar en 5 segons) …",
"Copy URL" : "Copiar URL",
"Enable" : "Habilitar",
"{sharee} (conversation)" : "{sharee} (conversation)",
diff --git a/core/l10n/ca.json b/core/l10n/ca.json
index ed25e166fab..f5155827daa 100644
--- a/core/l10n/ca.json
+++ b/core/l10n/ca.json
@@ -177,6 +177,7 @@
"Note to recipient" : "Nota a destinatari",
"Unshare" : "Deixa de compartir",
"Share link" : "Enllaç de compartició",
+ "Password protect by Talk" : "Contrasenya protegida per Talk",
"Could not unshare" : "No pot descompartir",
"Shared with you and the group {group} by {owner}" : "Compartit amb vos i amb el grup {group} per {owner}",
"Shared with you and {circle} by {owner}" : "Compartit amb tu i {circle} per {owner}",
@@ -195,7 +196,6 @@
"Can create" : "Pot crear",
"Can change" : "Pot modificar",
"Can delete" : "Pot esborrar",
- "Password protect by Talk" : "Contrasenya protegida per Talk",
"Access control" : "Control d'accés",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} compartida per enllaç",
"Error while sharing" : "Error en compartir",
@@ -407,7 +407,6 @@
"Back to log in" : "Torna a l'accés",
"You are about to grant %s access to your %s account." : "Estàs a punt d'autoritzar a %s a accedir al teu compte %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "Depenent de la teva configuració, aquest botó també podria funcionar per confiar en el domini:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Esperant cron per acabar (torna a comprovar en 5 segons) …",
"Copy URL" : "Copiar URL",
"Enable" : "Habilitar",
"{sharee} (conversation)" : "{sharee} (conversation)",
diff --git a/core/l10n/cs.js b/core/l10n/cs.js
index a344d987435..b41ab810398 100644
--- a/core/l10n/cs.js
+++ b/core/l10n/cs.js
@@ -179,6 +179,7 @@ OC.L10N.register(
"Note to recipient" : "Poznámka pro příjemce",
"Unshare" : "Zrušit sdílení",
"Share link" : "Odkaz pro sdílení",
+ "Password protect by Talk" : "Ochrana heslem pomocí Talk",
"Could not unshare" : "Nelze zrušit sdílení",
"Shared with you and the group {group} by {owner}" : "S Vámi a skupinou {group} sdílí {owner}",
"Shared with you and {circle} by {owner}" : "Sdíleno s vámi a {circle} od {owner}",
@@ -197,7 +198,6 @@ OC.L10N.register(
"Can create" : "Může vytvářet",
"Can change" : "Může měnit",
"Can delete" : "Může mazat",
- "Password protect by Talk" : "Ochrana heslem pomocí Talk",
"Access control" : "Řízení přístupu",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} nasdílel(a) prostřednictvím odkazu",
"Error while sharing" : "Chyba při sdílení",
@@ -408,7 +408,6 @@ OC.L10N.register(
"Back to log in" : "Zpět na přihlášení",
"You are about to grant %s access to your %s account." : "Chystáte se povolit %s přístup k vašemu %s účtu.",
"Depending on your configuration, this button could also work to trust the domain:" : "V závislosti na vaší konfiguraci by pro označení domény za důvěryhodnou mohlo fungovat i toto tlačítko:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Čekání na dokončení cronu (zkontroluje znovu za 5 sekund)…",
"Copy URL" : "Kopírovat URL",
"Enable" : "Povolit",
"{sharee} (conversation)" : "{sharee} (konverzace)",
diff --git a/core/l10n/cs.json b/core/l10n/cs.json
index 8e25242fac6..b484ec296a8 100644
--- a/core/l10n/cs.json
+++ b/core/l10n/cs.json
@@ -177,6 +177,7 @@
"Note to recipient" : "Poznámka pro příjemce",
"Unshare" : "Zrušit sdílení",
"Share link" : "Odkaz pro sdílení",
+ "Password protect by Talk" : "Ochrana heslem pomocí Talk",
"Could not unshare" : "Nelze zrušit sdílení",
"Shared with you and the group {group} by {owner}" : "S Vámi a skupinou {group} sdílí {owner}",
"Shared with you and {circle} by {owner}" : "Sdíleno s vámi a {circle} od {owner}",
@@ -195,7 +196,6 @@
"Can create" : "Může vytvářet",
"Can change" : "Může měnit",
"Can delete" : "Může mazat",
- "Password protect by Talk" : "Ochrana heslem pomocí Talk",
"Access control" : "Řízení přístupu",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} nasdílel(a) prostřednictvím odkazu",
"Error while sharing" : "Chyba při sdílení",
@@ -406,7 +406,6 @@
"Back to log in" : "Zpět na přihlášení",
"You are about to grant %s access to your %s account." : "Chystáte se povolit %s přístup k vašemu %s účtu.",
"Depending on your configuration, this button could also work to trust the domain:" : "V závislosti na vaší konfiguraci by pro označení domény za důvěryhodnou mohlo fungovat i toto tlačítko:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Čekání na dokončení cronu (zkontroluje znovu za 5 sekund)…",
"Copy URL" : "Kopírovat URL",
"Enable" : "Povolit",
"{sharee} (conversation)" : "{sharee} (konverzace)",
diff --git a/core/l10n/de.js b/core/l10n/de.js
index 396eedb3397..dcc44dd903f 100644
--- a/core/l10n/de.js
+++ b/core/l10n/de.js
@@ -163,10 +163,13 @@ OC.L10N.register(
"Not supported!" : "Nicht unterstützt!",
"Press ⌘-C to copy." : "Zum Kopieren ⌘-C drücken.",
"Press Ctrl-C to copy." : "Zum Kopieren Strg-C drücken.",
+ "Unable to create a link share" : "Link zum Teilen kann nicht erstellt werden",
+ "Unable to toggle this option" : "Option kann nicht umgeschaltet werden",
"Resharing is not allowed" : "Das Weiterverteilen ist nicht erlaubt",
"Share to {name}" : "Mit {name} teilen",
"Link" : "Link",
"Hide download" : "Download verbergen",
+ "Password protection enforced" : "Passwortschutz erzwungen",
"Password protect" : "Passwortschutz",
"Allow editing" : "Bearbeitung erlauben",
"Email link to person" : "Link per E-Mail verschicken",
@@ -174,12 +177,18 @@ OC.L10N.register(
"Allow upload and editing" : "Hochladen und Bearbeiten erlauben",
"Read only" : "Schreibgeschützt",
"File drop (upload only)" : "Dateien ablegen (nur Hochladen)",
+ "Expiration date enforced" : "Ablaufdatum erzwungen",
"Set expiration date" : "Setze ein Ablaufdatum",
"Expiration" : "Ablaufdatum",
"Expiration date" : "Ablaufdatum",
"Note to recipient" : "Notiz an Empfänger",
"Unshare" : "Freigabe aufheben",
+ "Delete share link" : "Freigabe-Link löschen",
+ "Add another link" : "Weiteren Link hinzufügen",
+ "Password protection for links is mandatory" : "Passwortschutz für Links ist zwingend",
"Share link" : "Link teilen",
+ "New share link" : "Neuer Freigabelink",
+ "Password protect by Talk" : "Passwortgeschützt von Talk",
"Could not unshare" : "Freigabe konnte nicht aufgehoben werden",
"Shared with you and the group {group} by {owner}" : "{owner} hat dies mit Dir und der Gruppe {group} geteilt",
"Shared with you and {circle} by {owner}" : "Von {owner} mit Dir und {circle} geteilt",
@@ -198,7 +207,6 @@ OC.L10N.register(
"Can create" : "kann erstellen",
"Can change" : "kann ändern",
"Can delete" : "kann löschen",
- "Password protect by Talk" : "Passwortgeschützt von Talk",
"Access control" : "Zugriffskontrolle",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} mittels Link geteilt",
"Error while sharing" : "Fehler beim Teilen",
@@ -413,7 +421,6 @@ OC.L10N.register(
"Back to log in" : "Zur Anmeldung wechseln",
"You are about to grant %s access to your %s account." : "Du bist dabei, %s Zugriff auf Dein %s-Konto zu gewähren.",
"Depending on your configuration, this button could also work to trust the domain:" : "Abhängig von Deiner Konfiguration kann diese Schaltfläche verwandt werden, um die Domain als vertrauenswürdig einzustufen:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Warte auf das Beenden von Cron (neue Prüfung in 5 Sekunden)…",
"Copy URL" : "URL kopieren",
"Enable" : "Aktivieren",
"{sharee} (conversation)" : "{sharee} (conversation)",
diff --git a/core/l10n/de.json b/core/l10n/de.json
index a062478f4f1..2761bbe65d0 100644
--- a/core/l10n/de.json
+++ b/core/l10n/de.json
@@ -161,10 +161,13 @@
"Not supported!" : "Nicht unterstützt!",
"Press ⌘-C to copy." : "Zum Kopieren ⌘-C drücken.",
"Press Ctrl-C to copy." : "Zum Kopieren Strg-C drücken.",
+ "Unable to create a link share" : "Link zum Teilen kann nicht erstellt werden",
+ "Unable to toggle this option" : "Option kann nicht umgeschaltet werden",
"Resharing is not allowed" : "Das Weiterverteilen ist nicht erlaubt",
"Share to {name}" : "Mit {name} teilen",
"Link" : "Link",
"Hide download" : "Download verbergen",
+ "Password protection enforced" : "Passwortschutz erzwungen",
"Password protect" : "Passwortschutz",
"Allow editing" : "Bearbeitung erlauben",
"Email link to person" : "Link per E-Mail verschicken",
@@ -172,12 +175,18 @@
"Allow upload and editing" : "Hochladen und Bearbeiten erlauben",
"Read only" : "Schreibgeschützt",
"File drop (upload only)" : "Dateien ablegen (nur Hochladen)",
+ "Expiration date enforced" : "Ablaufdatum erzwungen",
"Set expiration date" : "Setze ein Ablaufdatum",
"Expiration" : "Ablaufdatum",
"Expiration date" : "Ablaufdatum",
"Note to recipient" : "Notiz an Empfänger",
"Unshare" : "Freigabe aufheben",
+ "Delete share link" : "Freigabe-Link löschen",
+ "Add another link" : "Weiteren Link hinzufügen",
+ "Password protection for links is mandatory" : "Passwortschutz für Links ist zwingend",
"Share link" : "Link teilen",
+ "New share link" : "Neuer Freigabelink",
+ "Password protect by Talk" : "Passwortgeschützt von Talk",
"Could not unshare" : "Freigabe konnte nicht aufgehoben werden",
"Shared with you and the group {group} by {owner}" : "{owner} hat dies mit Dir und der Gruppe {group} geteilt",
"Shared with you and {circle} by {owner}" : "Von {owner} mit Dir und {circle} geteilt",
@@ -196,7 +205,6 @@
"Can create" : "kann erstellen",
"Can change" : "kann ändern",
"Can delete" : "kann löschen",
- "Password protect by Talk" : "Passwortgeschützt von Talk",
"Access control" : "Zugriffskontrolle",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} mittels Link geteilt",
"Error while sharing" : "Fehler beim Teilen",
@@ -411,7 +419,6 @@
"Back to log in" : "Zur Anmeldung wechseln",
"You are about to grant %s access to your %s account." : "Du bist dabei, %s Zugriff auf Dein %s-Konto zu gewähren.",
"Depending on your configuration, this button could also work to trust the domain:" : "Abhängig von Deiner Konfiguration kann diese Schaltfläche verwandt werden, um die Domain als vertrauenswürdig einzustufen:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Warte auf das Beenden von Cron (neue Prüfung in 5 Sekunden)…",
"Copy URL" : "URL kopieren",
"Enable" : "Aktivieren",
"{sharee} (conversation)" : "{sharee} (conversation)",
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index 56645a543a4..912b2f3abc2 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -163,10 +163,13 @@ OC.L10N.register(
"Not supported!" : "Nicht unterstützt!",
"Press ⌘-C to copy." : "Zum Kopieren ⌘-C drücken.",
"Press Ctrl-C to copy." : "Zum Kopieren Strg-C drücken.",
+ "Unable to create a link share" : "Link zum Teilen kann nicht erstellt werden",
+ "Unable to toggle this option" : "Option kann nicht umgeschaltet werden",
"Resharing is not allowed" : "Das Weiterverteilen ist nicht erlaubt",
"Share to {name}" : "Mit {name} teilen",
"Link" : "Link",
"Hide download" : "Download verbergen",
+ "Password protection enforced" : "Passwortschutz erzwungen",
"Password protect" : "Passwortschutz",
"Allow editing" : "Bearbeitung erlauben",
"Email link to person" : "Link per E-Mail verschicken",
@@ -174,12 +177,18 @@ OC.L10N.register(
"Allow upload and editing" : "Hochladen und Bearbeiten erlauben",
"Read only" : "Schreibgeschützt",
"File drop (upload only)" : "Dateien ablegen (nur Hochladen)",
+ "Expiration date enforced" : "Ablaufdatum erzwungen",
"Set expiration date" : "Ein Ablaufdatum setzen",
"Expiration" : "Ablauf",
"Expiration date" : "Ablaufdatum",
"Note to recipient" : "Notiz an Empfänger",
"Unshare" : "Freigabe aufheben",
+ "Delete share link" : "Freigabe-Link löschen",
+ "Add another link" : "Weiteren Link hinzufügen",
+ "Password protection for links is mandatory" : "Passwortschutz für Links ist zwingend",
"Share link" : "Link teilen",
+ "New share link" : "Neuer Freigabelink",
+ "Password protect by Talk" : "Passwortgeschützt von Talk",
"Could not unshare" : "Freigabe konnte nicht aufgehoben werden",
"Shared with you and the group {group} by {owner}" : "Von {owner} mit Ihnen und der Gruppe {group} geteilt.",
"Shared with you and {circle} by {owner}" : "Von {owner} mit Ihnen und {circle} geteilt",
@@ -198,7 +207,6 @@ OC.L10N.register(
"Can create" : "kann erstellen",
"Can change" : "kann ändern",
"Can delete" : "kann löschen",
- "Password protect by Talk" : "Passwortgeschützt von Talk",
"Access control" : "Zugriffskontrolle",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} mittels Link geteilt",
"Error while sharing" : "Fehler beim Teilen",
@@ -413,7 +421,6 @@ OC.L10N.register(
"Back to log in" : "Zur Anmeldung wechseln",
"You are about to grant %s access to your %s account." : "Sie sind dabei, %s Zugriff auf Ihr %s-Konto zu gewähren.",
"Depending on your configuration, this button could also work to trust the domain:" : "Abhängig von Ihrer Konfiguration kann diese Schaltfläche verwandt werden, um die Domain als vertrauenswürdig einzustufen:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Warte auf das Beenden von Cron (neue Prüfung in 5 Sekunden)…",
"Copy URL" : "URL kopieren",
"Enable" : "Aktivieren",
"{sharee} (conversation)" : "{sharee} (conversation)",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index 2d79e9efd37..ac6100469de 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -161,10 +161,13 @@
"Not supported!" : "Nicht unterstützt!",
"Press ⌘-C to copy." : "Zum Kopieren ⌘-C drücken.",
"Press Ctrl-C to copy." : "Zum Kopieren Strg-C drücken.",
+ "Unable to create a link share" : "Link zum Teilen kann nicht erstellt werden",
+ "Unable to toggle this option" : "Option kann nicht umgeschaltet werden",
"Resharing is not allowed" : "Das Weiterverteilen ist nicht erlaubt",
"Share to {name}" : "Mit {name} teilen",
"Link" : "Link",
"Hide download" : "Download verbergen",
+ "Password protection enforced" : "Passwortschutz erzwungen",
"Password protect" : "Passwortschutz",
"Allow editing" : "Bearbeitung erlauben",
"Email link to person" : "Link per E-Mail verschicken",
@@ -172,12 +175,18 @@
"Allow upload and editing" : "Hochladen und Bearbeiten erlauben",
"Read only" : "Schreibgeschützt",
"File drop (upload only)" : "Dateien ablegen (nur Hochladen)",
+ "Expiration date enforced" : "Ablaufdatum erzwungen",
"Set expiration date" : "Ein Ablaufdatum setzen",
"Expiration" : "Ablauf",
"Expiration date" : "Ablaufdatum",
"Note to recipient" : "Notiz an Empfänger",
"Unshare" : "Freigabe aufheben",
+ "Delete share link" : "Freigabe-Link löschen",
+ "Add another link" : "Weiteren Link hinzufügen",
+ "Password protection for links is mandatory" : "Passwortschutz für Links ist zwingend",
"Share link" : "Link teilen",
+ "New share link" : "Neuer Freigabelink",
+ "Password protect by Talk" : "Passwortgeschützt von Talk",
"Could not unshare" : "Freigabe konnte nicht aufgehoben werden",
"Shared with you and the group {group} by {owner}" : "Von {owner} mit Ihnen und der Gruppe {group} geteilt.",
"Shared with you and {circle} by {owner}" : "Von {owner} mit Ihnen und {circle} geteilt",
@@ -196,7 +205,6 @@
"Can create" : "kann erstellen",
"Can change" : "kann ändern",
"Can delete" : "kann löschen",
- "Password protect by Talk" : "Passwortgeschützt von Talk",
"Access control" : "Zugriffskontrolle",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} mittels Link geteilt",
"Error while sharing" : "Fehler beim Teilen",
@@ -411,7 +419,6 @@
"Back to log in" : "Zur Anmeldung wechseln",
"You are about to grant %s access to your %s account." : "Sie sind dabei, %s Zugriff auf Ihr %s-Konto zu gewähren.",
"Depending on your configuration, this button could also work to trust the domain:" : "Abhängig von Ihrer Konfiguration kann diese Schaltfläche verwandt werden, um die Domain als vertrauenswürdig einzustufen:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Warte auf das Beenden von Cron (neue Prüfung in 5 Sekunden)…",
"Copy URL" : "URL kopieren",
"Enable" : "Aktivieren",
"{sharee} (conversation)" : "{sharee} (conversation)",
diff --git a/core/l10n/es.js b/core/l10n/es.js
index d35849ea7a2..7b3d3334574 100644
--- a/core/l10n/es.js
+++ b/core/l10n/es.js
@@ -163,9 +163,13 @@ OC.L10N.register(
"Not supported!" : "¡No se puede!",
"Press ⌘-C to copy." : "Presiona ⌘-C para copiar.",
"Press Ctrl-C to copy." : "Presiona Ctrl-C para copiar.",
+ "Unable to create a link share" : "No se ha podido crear el enlace compartido",
+ "Unable to toggle this option" : "No se ha podido cambiar esta opción",
"Resharing is not allowed" : "No se permite compartir de nuevo",
"Share to {name}" : "Compartir a {name}",
"Link" : "Enlace",
+ "Hide download" : "Esconder descarga",
+ "Password protection enforced" : "Protección con contraseña forzada",
"Password protect" : "Protección con contraseña",
"Allow editing" : "Permitir edición",
"Email link to person" : "Enviar enlace por correo electrónico a una persona",
@@ -173,12 +177,18 @@ OC.L10N.register(
"Allow upload and editing" : "Permitir la subida y la edición",
"Read only" : "Solo lectura",
"File drop (upload only)" : "Entrega de archivos (solo subida)",
+ "Expiration date enforced" : "Fecha de expiración forzada",
"Set expiration date" : "Establecer fecha de caducidad",
"Expiration" : "Caduca el: ",
"Expiration date" : "Fecha de caducidad",
"Note to recipient" : "Nota al destinatario",
"Unshare" : "Dejar de compartir",
+ "Delete share link" : "Eliminar enlace compartido",
+ "Add another link" : "Añadir otro enlace",
+ "Password protection for links is mandatory" : "La protección con contraseña es obligatoria",
"Share link" : "Compartir enlace",
+ "New share link" : "Nuevo enlace compartido",
+ "Password protect by Talk" : "Protegido con contraseña por Talk",
"Could not unshare" : "No se puede quitar el comparto",
"Shared with you and the group {group} by {owner}" : "Compartido contigo y el grupo {group} por {owner}",
"Shared with you and {circle} by {owner}" : "Compartido contigo y {circle} por {owner}",
@@ -197,7 +207,6 @@ OC.L10N.register(
"Can create" : "Puede crear",
"Can change" : "Puede cambiar",
"Can delete" : "Puede eliminar",
- "Password protect by Talk" : "Protegido con contraseña por Talk",
"Access control" : "Control de acceso",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} compartido por medio de un link",
"Error while sharing" : "Error al compartir",
@@ -210,6 +219,8 @@ OC.L10N.register(
"An error occurred. Please try again" : "Ha ocurrido un error. Por favor inténtelo de nuevo",
"{sharee} (remote group)" : "{sharee} (grupo remoto)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "Home" : "Inicio",
+ "Other" : "Otro",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico...",
"Name or federated cloud ID..." : "Nombre o ID de nube federada...",
@@ -295,6 +306,7 @@ OC.L10N.register(
"Skip to main content" : "Saltar al contenido principal",
"Skip to navigation of app" : "Saltar a la navegación de la app",
"More apps" : "Más aplicaciones",
+ "More" : "Más",
"More apps menu" : "Menú de otras apps",
"Search" : "Buscar",
"Reset search" : "Resetear búsqueda",
@@ -409,7 +421,6 @@ OC.L10N.register(
"Back to log in" : "Volver al registro",
"You are about to grant %s access to your %s account." : "Estás a punto de conceder a %s acceso a tu cuenta de %s",
"Depending on your configuration, this button could also work to trust the domain:" : "Dependiendo de tu configuración, este botón también podría servir para confiar en el dominio:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Esperando a que termine el cron (se vuelve a comprobar en 5 segundos)",
"Copy URL" : "Copiar URL",
"Enable" : "Habilitar",
"{sharee} (conversation)" : "{sharee} (conversación)",
diff --git a/core/l10n/es.json b/core/l10n/es.json
index 4999bcc231f..82f6ec04105 100644
--- a/core/l10n/es.json
+++ b/core/l10n/es.json
@@ -161,9 +161,13 @@
"Not supported!" : "¡No se puede!",
"Press ⌘-C to copy." : "Presiona ⌘-C para copiar.",
"Press Ctrl-C to copy." : "Presiona Ctrl-C para copiar.",
+ "Unable to create a link share" : "No se ha podido crear el enlace compartido",
+ "Unable to toggle this option" : "No se ha podido cambiar esta opción",
"Resharing is not allowed" : "No se permite compartir de nuevo",
"Share to {name}" : "Compartir a {name}",
"Link" : "Enlace",
+ "Hide download" : "Esconder descarga",
+ "Password protection enforced" : "Protección con contraseña forzada",
"Password protect" : "Protección con contraseña",
"Allow editing" : "Permitir edición",
"Email link to person" : "Enviar enlace por correo electrónico a una persona",
@@ -171,12 +175,18 @@
"Allow upload and editing" : "Permitir la subida y la edición",
"Read only" : "Solo lectura",
"File drop (upload only)" : "Entrega de archivos (solo subida)",
+ "Expiration date enforced" : "Fecha de expiración forzada",
"Set expiration date" : "Establecer fecha de caducidad",
"Expiration" : "Caduca el: ",
"Expiration date" : "Fecha de caducidad",
"Note to recipient" : "Nota al destinatario",
"Unshare" : "Dejar de compartir",
+ "Delete share link" : "Eliminar enlace compartido",
+ "Add another link" : "Añadir otro enlace",
+ "Password protection for links is mandatory" : "La protección con contraseña es obligatoria",
"Share link" : "Compartir enlace",
+ "New share link" : "Nuevo enlace compartido",
+ "Password protect by Talk" : "Protegido con contraseña por Talk",
"Could not unshare" : "No se puede quitar el comparto",
"Shared with you and the group {group} by {owner}" : "Compartido contigo y el grupo {group} por {owner}",
"Shared with you and {circle} by {owner}" : "Compartido contigo y {circle} por {owner}",
@@ -195,7 +205,6 @@
"Can create" : "Puede crear",
"Can change" : "Puede cambiar",
"Can delete" : "Puede eliminar",
- "Password protect by Talk" : "Protegido con contraseña por Talk",
"Access control" : "Control de acceso",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} compartido por medio de un link",
"Error while sharing" : "Error al compartir",
@@ -208,6 +217,8 @@
"An error occurred. Please try again" : "Ha ocurrido un error. Por favor inténtelo de nuevo",
"{sharee} (remote group)" : "{sharee} (grupo remoto)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "Home" : "Inicio",
+ "Other" : "Otro",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico...",
"Name or federated cloud ID..." : "Nombre o ID de nube federada...",
@@ -293,6 +304,7 @@
"Skip to main content" : "Saltar al contenido principal",
"Skip to navigation of app" : "Saltar a la navegación de la app",
"More apps" : "Más aplicaciones",
+ "More" : "Más",
"More apps menu" : "Menú de otras apps",
"Search" : "Buscar",
"Reset search" : "Resetear búsqueda",
@@ -407,7 +419,6 @@
"Back to log in" : "Volver al registro",
"You are about to grant %s access to your %s account." : "Estás a punto de conceder a %s acceso a tu cuenta de %s",
"Depending on your configuration, this button could also work to trust the domain:" : "Dependiendo de tu configuración, este botón también podría servir para confiar en el dominio:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Esperando a que termine el cron (se vuelve a comprobar en 5 segundos)",
"Copy URL" : "Copiar URL",
"Enable" : "Habilitar",
"{sharee} (conversation)" : "{sharee} (conversación)",
diff --git a/core/l10n/fi.js b/core/l10n/fi.js
index 375b53dd3f8..c26b742721e 100644
--- a/core/l10n/fi.js
+++ b/core/l10n/fi.js
@@ -359,7 +359,6 @@ OC.L10N.register(
"Back to log in" : "Palaa kirjautumiseen",
"You are about to grant %s access to your %s account." : "Olet antamassa lupaa laitteelle %s päästä sinun %s tilille.",
"Depending on your configuration, this button could also work to trust the domain:" : "Asetuksista riippuen, ylläpitäjänä saatat pystyä alla olevalla painikkeella lisäämään tämän verkkotunnuksen luotetuksi.",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Odotetaan cronin valmistuvan (tarkista uudelleen 5 sekunnin päästä) …",
"Copy URL" : "Kopioi osoite",
"Enable" : "Ota käyttöön"
},
diff --git a/core/l10n/fi.json b/core/l10n/fi.json
index eb879ddbddc..a8e48345f4b 100644
--- a/core/l10n/fi.json
+++ b/core/l10n/fi.json
@@ -357,7 +357,6 @@
"Back to log in" : "Palaa kirjautumiseen",
"You are about to grant %s access to your %s account." : "Olet antamassa lupaa laitteelle %s päästä sinun %s tilille.",
"Depending on your configuration, this button could also work to trust the domain:" : "Asetuksista riippuen, ylläpitäjänä saatat pystyä alla olevalla painikkeella lisäämään tämän verkkotunnuksen luotetuksi.",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Odotetaan cronin valmistuvan (tarkista uudelleen 5 sekunnin päästä) …",
"Copy URL" : "Kopioi osoite",
"Enable" : "Ota käyttöön"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/core/l10n/fr.js b/core/l10n/fr.js
index fa1a68d2b2a..0378c04f7aa 100644
--- a/core/l10n/fr.js
+++ b/core/l10n/fr.js
@@ -163,6 +163,7 @@ OC.L10N.register(
"Not supported!" : "Non supporté!",
"Press ⌘-C to copy." : "Appuyez sur ⌘-C pour copier.",
"Press Ctrl-C to copy." : "Appuyez sur Ctrl-C pour copier.",
+ "Unable to create a link share" : "Impossible de créer un lien de partage",
"Resharing is not allowed" : "Le repartage n'est pas autorisé",
"Share to {name}" : "Partager avec {name}",
"Link" : "Lien",
@@ -178,7 +179,11 @@ OC.L10N.register(
"Expiration date" : "Date d'expiration",
"Note to recipient" : "Note au destinataire",
"Unshare" : "Ne plus partager",
+ "Delete share link" : "Supprimer le lien de partage",
+ "Add another link" : "Ajouter un autre lien",
"Share link" : "Partager par lien public",
+ "New share link" : "Nouveau lien de partage",
+ "Password protect by Talk" : "Mot de passe protégé par Talk",
"Could not unshare" : "Impossible d'arrêter de partager",
"Shared with you and the group {group} by {owner}" : "Partagé avec vous et le groupe {group} par {owner}",
"Shared with you and {circle} by {owner}" : "Partagé avec vous et {circle} par {owner}",
@@ -197,7 +202,6 @@ OC.L10N.register(
"Can create" : "Peut créer",
"Can change" : "Peut modifier",
"Can delete" : "Peut supprimer",
- "Password protect by Talk" : "Mot de passe protégé par Talk",
"Access control" : "Contrôle d'accès",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} a partagé via un lien",
"Error while sharing" : "Erreur lors de la mise en partage",
@@ -210,6 +214,7 @@ OC.L10N.register(
"An error occurred. Please try again" : "Une erreur est survenue. Merci de réessayer",
"{sharee} (remote group)" : "{sharee} (groupe distant)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "Other" : "Divers",
"Share" : "Partager",
"Name or email address..." : "Nom ou adresse mail...",
"Name or federated cloud ID..." : "Nom ou ID du cloud fédéré...",
@@ -295,6 +300,7 @@ OC.L10N.register(
"Skip to main content" : "Passer au contenu principal",
"Skip to navigation of app" : "Passer à la navigation d'application",
"More apps" : "Plus d'applications",
+ "More" : "Plus",
"More apps menu" : "Menu des autres applications",
"Search" : "Rechercher",
"Reset search" : "Réinitialiser la recherche",
@@ -409,7 +415,6 @@ OC.L10N.register(
"Back to log in" : "Retour à la page de connexion",
"You are about to grant %s access to your %s account." : "Vous êtes sur le point d'accorder à \"%s\" l'accès à votre compte \"%s\".",
"Depending on your configuration, this button could also work to trust the domain:" : "En fonction de votre configuration, ce bouton peut aussi fonctionner pour approuver ce domaine :",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "En attente que la tâche cron se termine (vérification dans 5 secondes)...",
"Copy URL" : "Copier l'adresse URL",
"Enable" : "Activer",
"{sharee} (conversation)" : "{sharee} (discussion)",
diff --git a/core/l10n/fr.json b/core/l10n/fr.json
index f77c64466a9..78052b136e8 100644
--- a/core/l10n/fr.json
+++ b/core/l10n/fr.json
@@ -161,6 +161,7 @@
"Not supported!" : "Non supporté!",
"Press ⌘-C to copy." : "Appuyez sur ⌘-C pour copier.",
"Press Ctrl-C to copy." : "Appuyez sur Ctrl-C pour copier.",
+ "Unable to create a link share" : "Impossible de créer un lien de partage",
"Resharing is not allowed" : "Le repartage n'est pas autorisé",
"Share to {name}" : "Partager avec {name}",
"Link" : "Lien",
@@ -176,7 +177,11 @@
"Expiration date" : "Date d'expiration",
"Note to recipient" : "Note au destinataire",
"Unshare" : "Ne plus partager",
+ "Delete share link" : "Supprimer le lien de partage",
+ "Add another link" : "Ajouter un autre lien",
"Share link" : "Partager par lien public",
+ "New share link" : "Nouveau lien de partage",
+ "Password protect by Talk" : "Mot de passe protégé par Talk",
"Could not unshare" : "Impossible d'arrêter de partager",
"Shared with you and the group {group} by {owner}" : "Partagé avec vous et le groupe {group} par {owner}",
"Shared with you and {circle} by {owner}" : "Partagé avec vous et {circle} par {owner}",
@@ -195,7 +200,6 @@
"Can create" : "Peut créer",
"Can change" : "Peut modifier",
"Can delete" : "Peut supprimer",
- "Password protect by Talk" : "Mot de passe protégé par Talk",
"Access control" : "Contrôle d'accès",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} a partagé via un lien",
"Error while sharing" : "Erreur lors de la mise en partage",
@@ -208,6 +212,7 @@
"An error occurred. Please try again" : "Une erreur est survenue. Merci de réessayer",
"{sharee} (remote group)" : "{sharee} (groupe distant)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "Other" : "Divers",
"Share" : "Partager",
"Name or email address..." : "Nom ou adresse mail...",
"Name or federated cloud ID..." : "Nom ou ID du cloud fédéré...",
@@ -293,6 +298,7 @@
"Skip to main content" : "Passer au contenu principal",
"Skip to navigation of app" : "Passer à la navigation d'application",
"More apps" : "Plus d'applications",
+ "More" : "Plus",
"More apps menu" : "Menu des autres applications",
"Search" : "Rechercher",
"Reset search" : "Réinitialiser la recherche",
@@ -407,7 +413,6 @@
"Back to log in" : "Retour à la page de connexion",
"You are about to grant %s access to your %s account." : "Vous êtes sur le point d'accorder à \"%s\" l'accès à votre compte \"%s\".",
"Depending on your configuration, this button could also work to trust the domain:" : "En fonction de votre configuration, ce bouton peut aussi fonctionner pour approuver ce domaine :",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "En attente que la tâche cron se termine (vérification dans 5 secondes)...",
"Copy URL" : "Copier l'adresse URL",
"Enable" : "Activer",
"{sharee} (conversation)" : "{sharee} (discussion)",
diff --git a/core/l10n/he.js b/core/l10n/he.js
index 1177e25b12d..5370a4c00d1 100644
--- a/core/l10n/he.js
+++ b/core/l10n/he.js
@@ -171,6 +171,7 @@ OC.L10N.register(
"Expiration date" : "תאריך התפוגה",
"Unshare" : "הסר שיתוף",
"Share link" : "קישור לשיתוף",
+ "Password protect by Talk" : "הגנה בססמה על ידי Talk",
"Could not unshare" : "לא ניתן לבטל שיתוף",
"Shared with you and the group {group} by {owner}" : "שותף אתך ועם הקבוצה {group} שבבעלות {owner}",
"Shared with you by {owner}" : "שותף אתך על ידי {owner}",
@@ -186,7 +187,6 @@ OC.L10N.register(
"Can create" : "ניתן ליצור",
"Can change" : "ניתן לשנות",
"Can delete" : "ניתן למחוק",
- "Password protect by Talk" : "הגנה בססמה על ידי Talk",
"Access control" : "בקרת גישה",
"Error while sharing" : "שגיאה במהלך השיתוף",
"Share details could not be loaded for this item." : "לא ניתן היה לטעון מידע שיתוף לפריט זה",
@@ -386,7 +386,6 @@ OC.L10N.register(
"Back to log in" : "חזרה לכניסה",
"You are about to grant %s access to your %s account." : "פעולה זו תעניק הרשאת %s לחשבון שלך ב־%s.",
"Depending on your configuration, this button could also work to trust the domain:" : "בהתאם לתצורה שלך, הכפתור הזה יכול לעבוד גם כדי לתת אמון בשם המתחם:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "בהמתנה לסיום משימת ה־cron (תתבצע בדיקה עוד 5 שניות)…",
"Enable" : "הפעלה",
"{sharee} (conversation)" : "{sharee} (דיון)",
"Please log in before granting %s access to your %s account." : "נא להיכנס בטרם מתן הרשאת %s לחשבון שלך ב־%s.",
diff --git a/core/l10n/he.json b/core/l10n/he.json
index fa83e22e3f0..983ddbd2630 100644
--- a/core/l10n/he.json
+++ b/core/l10n/he.json
@@ -169,6 +169,7 @@
"Expiration date" : "תאריך התפוגה",
"Unshare" : "הסר שיתוף",
"Share link" : "קישור לשיתוף",
+ "Password protect by Talk" : "הגנה בססמה על ידי Talk",
"Could not unshare" : "לא ניתן לבטל שיתוף",
"Shared with you and the group {group} by {owner}" : "שותף אתך ועם הקבוצה {group} שבבעלות {owner}",
"Shared with you by {owner}" : "שותף אתך על ידי {owner}",
@@ -184,7 +185,6 @@
"Can create" : "ניתן ליצור",
"Can change" : "ניתן לשנות",
"Can delete" : "ניתן למחוק",
- "Password protect by Talk" : "הגנה בססמה על ידי Talk",
"Access control" : "בקרת גישה",
"Error while sharing" : "שגיאה במהלך השיתוף",
"Share details could not be loaded for this item." : "לא ניתן היה לטעון מידע שיתוף לפריט זה",
@@ -384,7 +384,6 @@
"Back to log in" : "חזרה לכניסה",
"You are about to grant %s access to your %s account." : "פעולה זו תעניק הרשאת %s לחשבון שלך ב־%s.",
"Depending on your configuration, this button could also work to trust the domain:" : "בהתאם לתצורה שלך, הכפתור הזה יכול לעבוד גם כדי לתת אמון בשם המתחם:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "בהמתנה לסיום משימת ה־cron (תתבצע בדיקה עוד 5 שניות)…",
"Enable" : "הפעלה",
"{sharee} (conversation)" : "{sharee} (דיון)",
"Please log in before granting %s access to your %s account." : "נא להיכנס בטרם מתן הרשאת %s לחשבון שלך ב־%s.",
diff --git a/core/l10n/hr.js b/core/l10n/hr.js
index 8ae26fa3872..d9fe5d40530 100644
--- a/core/l10n/hr.js
+++ b/core/l10n/hr.js
@@ -272,7 +272,6 @@ OC.L10N.register(
"Thank you for your patience." : "Hvala vam na strpljenju",
"Back to log in" : "Natrag na prijavu",
"You are about to grant %s access to your %s account." : "Ovim će te dopustiti %s pristup vašem %s računu.",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Čekanje cron funkcije da završi (ponovna provjera za 5 sekundi) ...",
"Please log in before granting %s access to your %s account." : "Prijavite se prije nego dopustite %s pristup vašem %s računu.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Daljnje informacije o konfiguraciji se mogu naći u %spriloženoj dokumentaciji%s."
},
diff --git a/core/l10n/hr.json b/core/l10n/hr.json
index 01dfda8c27b..2d15793dfe8 100644
--- a/core/l10n/hr.json
+++ b/core/l10n/hr.json
@@ -270,7 +270,6 @@
"Thank you for your patience." : "Hvala vam na strpljenju",
"Back to log in" : "Natrag na prijavu",
"You are about to grant %s access to your %s account." : "Ovim će te dopustiti %s pristup vašem %s računu.",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Čekanje cron funkcije da završi (ponovna provjera za 5 sekundi) ...",
"Please log in before granting %s access to your %s account." : "Prijavite se prije nego dopustite %s pristup vašem %s računu.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Daljnje informacije o konfiguraciji se mogu naći u %spriloženoj dokumentaciji%s."
},"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"
diff --git a/core/l10n/hu.js b/core/l10n/hu.js
index eac4d1418e3..2e6a9e93e06 100644
--- a/core/l10n/hu.js
+++ b/core/l10n/hu.js
@@ -379,7 +379,6 @@ OC.L10N.register(
"Back to log in" : "Vissza a bejelentkezéshez",
"You are about to grant %s access to your %s account." : "Hozzáférést készülsz biztosítani neki: %s ehhez a fiókodhoz: %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "Beállításoktól függően ez a gomb is működhet a domain megbízhatóvá tételében:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Várakozás az ütemezőre, hogy befejezze a műveletet (újra próbálkozás 5 másodperc múlva)...",
"Please log in before granting %s access to your %s account." : "Kérlek lépj be mielőtt %s hozzáférést biztosítasz a %s fiókodhoz.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Ennek a beállításához további infomációkat talál a %sleírásban %s."
},
diff --git a/core/l10n/hu.json b/core/l10n/hu.json
index 5003c8a9111..91cf6ada765 100644
--- a/core/l10n/hu.json
+++ b/core/l10n/hu.json
@@ -377,7 +377,6 @@
"Back to log in" : "Vissza a bejelentkezéshez",
"You are about to grant %s access to your %s account." : "Hozzáférést készülsz biztosítani neki: %s ehhez a fiókodhoz: %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "Beállításoktól függően ez a gomb is működhet a domain megbízhatóvá tételében:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Várakozás az ütemezőre, hogy befejezze a műveletet (újra próbálkozás 5 másodperc múlva)...",
"Please log in before granting %s access to your %s account." : "Kérlek lépj be mielőtt %s hozzáférést biztosítasz a %s fiókodhoz.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Ennek a beállításához további infomációkat talál a %sleírásban %s."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/core/l10n/is.js b/core/l10n/is.js
index 7f06ee151e8..3164cdc881c 100644
--- a/core/l10n/is.js
+++ b/core/l10n/is.js
@@ -174,6 +174,7 @@ OC.L10N.register(
"Note to recipient" : "Minnispunktur til viðtakanda",
"Unshare" : "Hætta deilingu",
"Share link" : "Deila tengli",
+ "Password protect by Talk" : "Verja með lykilorði í gegnum Talk",
"Could not unshare" : "Gat ekki hætt deilingu",
"Shared with you and the group {group} by {owner}" : "Deilt með þér og hópnum {group} af {owner}",
"Shared with you and {circle} by {owner}" : "Deilt með þér og {circle} af {owner}",
@@ -191,7 +192,6 @@ OC.L10N.register(
"Can create" : "Getur búið til",
"Can change" : "Getur skipt um",
"Can delete" : "Getur eytt",
- "Password protect by Talk" : "Verja með lykilorði í gegnum Talk",
"Access control" : "Aðgangsstýring",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} deildi með tengli",
"Error while sharing" : "Villa við deilingu",
@@ -399,7 +399,6 @@ OC.L10N.register(
"Back to log in" : "Til baka í innskráningu",
"You are about to grant %s access to your %s account." : "Þú ert að fara að leyfa %s aðgang að %s notandaaðgangnum þínum.",
"Depending on your configuration, this button could also work to trust the domain:" : "Það fer eftir stillingunum þínum, þessi hnappur gæti einnig virkað til að treysta þessu léni.",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Bíð þess að cron ljúki vinnslu (athugaðu aftur eftir 5 sekúndur) …",
"Copy URL" : "Afrita slóð",
"Enable" : "Virkja",
"{sharee} (conversation)" : "{sharee} (samtal)",
diff --git a/core/l10n/is.json b/core/l10n/is.json
index 423f7c9250d..53cafdd0f3d 100644
--- a/core/l10n/is.json
+++ b/core/l10n/is.json
@@ -172,6 +172,7 @@
"Note to recipient" : "Minnispunktur til viðtakanda",
"Unshare" : "Hætta deilingu",
"Share link" : "Deila tengli",
+ "Password protect by Talk" : "Verja með lykilorði í gegnum Talk",
"Could not unshare" : "Gat ekki hætt deilingu",
"Shared with you and the group {group} by {owner}" : "Deilt með þér og hópnum {group} af {owner}",
"Shared with you and {circle} by {owner}" : "Deilt með þér og {circle} af {owner}",
@@ -189,7 +190,6 @@
"Can create" : "Getur búið til",
"Can change" : "Getur skipt um",
"Can delete" : "Getur eytt",
- "Password protect by Talk" : "Verja með lykilorði í gegnum Talk",
"Access control" : "Aðgangsstýring",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} deildi með tengli",
"Error while sharing" : "Villa við deilingu",
@@ -397,7 +397,6 @@
"Back to log in" : "Til baka í innskráningu",
"You are about to grant %s access to your %s account." : "Þú ert að fara að leyfa %s aðgang að %s notandaaðgangnum þínum.",
"Depending on your configuration, this button could also work to trust the domain:" : "Það fer eftir stillingunum þínum, þessi hnappur gæti einnig virkað til að treysta þessu léni.",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Bíð þess að cron ljúki vinnslu (athugaðu aftur eftir 5 sekúndur) …",
"Copy URL" : "Afrita slóð",
"Enable" : "Virkja",
"{sharee} (conversation)" : "{sharee} (samtal)",
diff --git a/core/l10n/it.js b/core/l10n/it.js
index 5f118785f1b..806072518f8 100644
--- a/core/l10n/it.js
+++ b/core/l10n/it.js
@@ -163,10 +163,13 @@ OC.L10N.register(
"Not supported!" : "Non supportato!",
"Press ⌘-C to copy." : "Premi ⌘-C per copiare.",
"Press Ctrl-C to copy." : "Premi Ctrl-C per copiare.",
+ "Unable to create a link share" : "Impossibile creare un collegamento di condivisione",
+ "Unable to toggle this option" : "Impossibile attivare questa opzione",
"Resharing is not allowed" : "La ri-condivisione non è consentita",
"Share to {name}" : "Condividi con {name}",
"Link" : "Collegamento",
"Hide download" : "Nascondi scaricamento",
+ "Password protection enforced" : "Protezione con password applicata",
"Password protect" : "Proteggi con password",
"Allow editing" : "Consenti la modifica",
"Email link to person" : "Invia collegamento via email",
@@ -174,12 +177,18 @@ OC.L10N.register(
"Allow upload and editing" : "Consenti il caricamento e la modifica",
"Read only" : "Sola lettura",
"File drop (upload only)" : "Rilascia file (solo caricamento)",
+ "Expiration date enforced" : "Data di scadenza applicata",
"Set expiration date" : "Imposta data di scadenza",
"Expiration" : "Scadenza",
"Expiration date" : "Data di scadenza",
"Note to recipient" : "Nota per destinatario",
"Unshare" : "Rimuovi condivisione",
+ "Delete share link" : "Elimina collegamento di condivisione",
+ "Add another link" : "Aggiungi un altro collegamento",
+ "Password protection for links is mandatory" : "La protezione con password è obbligatoria per i collegamenti",
"Share link" : "Condividi collegamento",
+ "New share link" : "Nuovo collegamento di condivisione",
+ "Password protect by Talk" : "Protezione con password di Talk",
"Could not unshare" : "Impossibile rimuovere la condivisione",
"Shared with you and the group {group} by {owner}" : "Condiviso con te e con il gruppo {group} da {owner}",
"Shared with you and {circle} by {owner}" : "Condiviso con te e {circle} da {owner}",
@@ -198,7 +207,6 @@ OC.L10N.register(
"Can create" : "Può creare",
"Can change" : "Può cambiare",
"Can delete" : "Può eliminare",
- "Password protect by Talk" : "Protezione con password di Talk",
"Access control" : "Controllo d'accesso",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} ha condiviso tramite collegamento",
"Error while sharing" : "Errore durante la condivisione",
@@ -413,7 +421,6 @@ OC.L10N.register(
"Back to log in" : "Torna alla schermata di accesso",
"You are about to grant %s access to your %s account." : "Stai per accordare a \"%s\" l'accesso al tuo account %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "In base alla tua configurazione, questo pulsante può funzionare anche per rendere attendibile il dominio:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "In attesa che cron finisca (nuovo controllo tra 5 secondi)…",
"Copy URL" : "Copia URL",
"Enable" : "Abilita",
"{sharee} (conversation)" : "{sharee} (conversation)",
diff --git a/core/l10n/it.json b/core/l10n/it.json
index 743a3be5dd5..a053f44b06e 100644
--- a/core/l10n/it.json
+++ b/core/l10n/it.json
@@ -161,10 +161,13 @@
"Not supported!" : "Non supportato!",
"Press ⌘-C to copy." : "Premi ⌘-C per copiare.",
"Press Ctrl-C to copy." : "Premi Ctrl-C per copiare.",
+ "Unable to create a link share" : "Impossibile creare un collegamento di condivisione",
+ "Unable to toggle this option" : "Impossibile attivare questa opzione",
"Resharing is not allowed" : "La ri-condivisione non è consentita",
"Share to {name}" : "Condividi con {name}",
"Link" : "Collegamento",
"Hide download" : "Nascondi scaricamento",
+ "Password protection enforced" : "Protezione con password applicata",
"Password protect" : "Proteggi con password",
"Allow editing" : "Consenti la modifica",
"Email link to person" : "Invia collegamento via email",
@@ -172,12 +175,18 @@
"Allow upload and editing" : "Consenti il caricamento e la modifica",
"Read only" : "Sola lettura",
"File drop (upload only)" : "Rilascia file (solo caricamento)",
+ "Expiration date enforced" : "Data di scadenza applicata",
"Set expiration date" : "Imposta data di scadenza",
"Expiration" : "Scadenza",
"Expiration date" : "Data di scadenza",
"Note to recipient" : "Nota per destinatario",
"Unshare" : "Rimuovi condivisione",
+ "Delete share link" : "Elimina collegamento di condivisione",
+ "Add another link" : "Aggiungi un altro collegamento",
+ "Password protection for links is mandatory" : "La protezione con password è obbligatoria per i collegamenti",
"Share link" : "Condividi collegamento",
+ "New share link" : "Nuovo collegamento di condivisione",
+ "Password protect by Talk" : "Protezione con password di Talk",
"Could not unshare" : "Impossibile rimuovere la condivisione",
"Shared with you and the group {group} by {owner}" : "Condiviso con te e con il gruppo {group} da {owner}",
"Shared with you and {circle} by {owner}" : "Condiviso con te e {circle} da {owner}",
@@ -196,7 +205,6 @@
"Can create" : "Può creare",
"Can change" : "Può cambiare",
"Can delete" : "Può eliminare",
- "Password protect by Talk" : "Protezione con password di Talk",
"Access control" : "Controllo d'accesso",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} ha condiviso tramite collegamento",
"Error while sharing" : "Errore durante la condivisione",
@@ -411,7 +419,6 @@
"Back to log in" : "Torna alla schermata di accesso",
"You are about to grant %s access to your %s account." : "Stai per accordare a \"%s\" l'accesso al tuo account %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "In base alla tua configurazione, questo pulsante può funzionare anche per rendere attendibile il dominio:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "In attesa che cron finisca (nuovo controllo tra 5 secondi)…",
"Copy URL" : "Copia URL",
"Enable" : "Abilita",
"{sharee} (conversation)" : "{sharee} (conversation)",
diff --git a/core/l10n/ja.js b/core/l10n/ja.js
index 4846686d5b3..cd65ed21618 100644
--- a/core/l10n/ja.js
+++ b/core/l10n/ja.js
@@ -103,6 +103,7 @@ OC.L10N.register(
"Pending" : "保留中",
"Copy to {folder}" : "{folder}へコピー",
"Move to {folder}" : "{folder}へ移動",
+ "View changelog" : "変更履歴を確認する",
"Very weak password" : "非常に弱いパスワード",
"Weak password" : "弱いパスワード",
"So-so password" : "まずまずのパスワード",
@@ -297,6 +298,7 @@ OC.L10N.register(
"Thank you for your patience." : "しばらくお待ちください。",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips</a>." : "\"Strict-Transport-Security\" HTTPヘッダが、最低でも \"{seconds}\" 秒に設定されていません。セキュリティを強化するには、<a href=\"{docUrl}\" rel=\"noreferrer noopener\">セキュリティTips</a>で解説しているHSTSを有効にすることを推奨します。",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips</a>." : "セキュアではないHTTP経由でアクセスしています。<a href=\"{docUrl}\">セキュリティTips</a>で述べているように、代わりにHTTPSを必要とするようサーバーを設定することを強くおすすめします。",
- "You are about to grant %s access to your %s account." : "%s アカウントに あなたのアカウント %s へのアクセスを許可"
+ "You are about to grant %s access to your %s account." : "%s アカウントに あなたのアカウント %s へのアクセスを許可",
+ "Copy URL" : "URL をコピー"
},
"nplurals=1; plural=0;");
diff --git a/core/l10n/ja.json b/core/l10n/ja.json
index 75e65c805c7..6c18c265c0a 100644
--- a/core/l10n/ja.json
+++ b/core/l10n/ja.json
@@ -101,6 +101,7 @@
"Pending" : "保留中",
"Copy to {folder}" : "{folder}へコピー",
"Move to {folder}" : "{folder}へ移動",
+ "View changelog" : "変更履歴を確認する",
"Very weak password" : "非常に弱いパスワード",
"Weak password" : "弱いパスワード",
"So-so password" : "まずまずのパスワード",
@@ -295,6 +296,7 @@
"Thank you for your patience." : "しばらくお待ちください。",
"The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the <a href=\"{docUrl}\" rel=\"noreferrer noopener\">security tips</a>." : "\"Strict-Transport-Security\" HTTPヘッダが、最低でも \"{seconds}\" 秒に設定されていません。セキュリティを強化するには、<a href=\"{docUrl}\" rel=\"noreferrer noopener\">セキュリティTips</a>で解説しているHSTSを有効にすることを推奨します。",
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips</a>." : "セキュアではないHTTP経由でアクセスしています。<a href=\"{docUrl}\">セキュリティTips</a>で述べているように、代わりにHTTPSを必要とするようサーバーを設定することを強くおすすめします。",
- "You are about to grant %s access to your %s account." : "%s アカウントに あなたのアカウント %s へのアクセスを許可"
+ "You are about to grant %s access to your %s account." : "%s アカウントに あなたのアカウント %s へのアクセスを許可",
+ "Copy URL" : "URL をコピー"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/core/l10n/ko.js b/core/l10n/ko.js
index c8a71bf7671..65c534aae28 100644
--- a/core/l10n/ko.js
+++ b/core/l10n/ko.js
@@ -359,7 +359,6 @@ OC.L10N.register(
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips</a>." : "사이트에 HTTP를 통해서 보안 없이 접근하고 있습니다. <a href=\"{docUrl}\">보안 팁</a>에서 제안하는 것처럼 HTTPS를 설정하는 것을 추천합니다.",
"Back to log in" : "로그인으로 돌아가기",
"You are about to grant %s access to your %s account." : "\"%s\"에 접근하기 위해서 %s 계정을 사용하려고 합니다.",
- "Depending on your configuration, this button could also work to trust the domain:" : "설정에 따라 아래 단추는 도메인 신뢰를 추가하는 데 사용할 수 있습니다:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Cron이 끝날때까지 기다리는중(5초후에 다시 확인)..."
+ "Depending on your configuration, this button could also work to trust the domain:" : "설정에 따라 아래 단추는 도메인 신뢰를 추가하는 데 사용할 수 있습니다:"
},
"nplurals=1; plural=0;");
diff --git a/core/l10n/ko.json b/core/l10n/ko.json
index 5d6ee25addb..a1794a00cd8 100644
--- a/core/l10n/ko.json
+++ b/core/l10n/ko.json
@@ -357,7 +357,6 @@
"Accessing site insecurely via HTTP. You are strongly adviced to set up your server to require HTTPS instead, as described in the <a href=\"{docUrl}\">security tips</a>." : "사이트에 HTTP를 통해서 보안 없이 접근하고 있습니다. <a href=\"{docUrl}\">보안 팁</a>에서 제안하는 것처럼 HTTPS를 설정하는 것을 추천합니다.",
"Back to log in" : "로그인으로 돌아가기",
"You are about to grant %s access to your %s account." : "\"%s\"에 접근하기 위해서 %s 계정을 사용하려고 합니다.",
- "Depending on your configuration, this button could also work to trust the domain:" : "설정에 따라 아래 단추는 도메인 신뢰를 추가하는 데 사용할 수 있습니다:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Cron이 끝날때까지 기다리는중(5초후에 다시 확인)..."
+ "Depending on your configuration, this button could also work to trust the domain:" : "설정에 따라 아래 단추는 도메인 신뢰를 추가하는 데 사용할 수 있습니다:"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js
index 6f6f4e23f3d..28ef1045bb3 100644
--- a/core/l10n/lt_LT.js
+++ b/core/l10n/lt_LT.js
@@ -111,7 +111,7 @@ OC.L10N.register(
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Jūsų svetainės serveris nėra tinkamai sukonfiguruotas, Failų sinchronizavimas negalimas, nes neveikia WebDAV interfeisas.",
"Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Jūsų svetainės serveris nėra sukonfiguruotas atpažinti \"{url}\". Daugiau informacijos rasite <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentacijoje</a>.",
"Error occurred while checking server setup" : "Tikrinant serverio sąranką, įvyko klaida",
- "Shared" : "Dalinamasi",
+ "Shared" : "Bendrinama",
"Shared with" : "Pasidalinta su",
"Shared by" : "Dalinasi",
"Choose a password for the public link" : "Pasirinkite slaptažodį, skirtą nuorodai atidaryti",
@@ -134,8 +134,7 @@ OC.L10N.register(
"Expiration" : "Veikimo pabaiga",
"Expiration date" : "Veikimo pabaigos data",
"Unshare" : "Nebesidalinti",
- "Share link" : "Dalintis nuoroda",
- "Could not unshare" : "Negalima nustoti dalintis",
+ "Could not unshare" : "Nepavyko nustoti bendrinti",
"Shared with you and the group {group} by {owner}" : "{owner} pasidalino su Jumis ir {group} grupe",
"Shared with you by {owner}" : "{owner} pasidalino su Jumis ",
"Choose a password for the mail share" : "Pasirinkite slaptažodį pasidalinimui per elektroninį paštą",
@@ -163,7 +162,7 @@ OC.L10N.register(
"Name, federated cloud ID or email address..." : "Vardas, NextCloud tinklo kompiuterio ID arba elektroninio pašto adresas...",
"Name..." : "Vardas...",
"Error" : "Klaida",
- "Error removing share" : "Klaida bandant sustabdyti dalinimąsi",
+ "Error removing share" : "Klaida šalinant viešinį",
"Non-existing tag #{tag}" : "Neegzistuojanti žymė #{tag}",
"restricted" : "apribota",
"invisible" : "nematoma",
diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json
index f13a21ff580..1d764f63143 100644
--- a/core/l10n/lt_LT.json
+++ b/core/l10n/lt_LT.json
@@ -109,7 +109,7 @@
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Jūsų svetainės serveris nėra tinkamai sukonfiguruotas, Failų sinchronizavimas negalimas, nes neveikia WebDAV interfeisas.",
"Your web server is not properly set up to resolve \"{url}\". Further information can be found in the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">documentation</a>." : "Jūsų svetainės serveris nėra sukonfiguruotas atpažinti \"{url}\". Daugiau informacijos rasite <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"{docLink}\">dokumentacijoje</a>.",
"Error occurred while checking server setup" : "Tikrinant serverio sąranką, įvyko klaida",
- "Shared" : "Dalinamasi",
+ "Shared" : "Bendrinama",
"Shared with" : "Pasidalinta su",
"Shared by" : "Dalinasi",
"Choose a password for the public link" : "Pasirinkite slaptažodį, skirtą nuorodai atidaryti",
@@ -132,8 +132,7 @@
"Expiration" : "Veikimo pabaiga",
"Expiration date" : "Veikimo pabaigos data",
"Unshare" : "Nebesidalinti",
- "Share link" : "Dalintis nuoroda",
- "Could not unshare" : "Negalima nustoti dalintis",
+ "Could not unshare" : "Nepavyko nustoti bendrinti",
"Shared with you and the group {group} by {owner}" : "{owner} pasidalino su Jumis ir {group} grupe",
"Shared with you by {owner}" : "{owner} pasidalino su Jumis ",
"Choose a password for the mail share" : "Pasirinkite slaptažodį pasidalinimui per elektroninį paštą",
@@ -161,7 +160,7 @@
"Name, federated cloud ID or email address..." : "Vardas, NextCloud tinklo kompiuterio ID arba elektroninio pašto adresas...",
"Name..." : "Vardas...",
"Error" : "Klaida",
- "Error removing share" : "Klaida bandant sustabdyti dalinimąsi",
+ "Error removing share" : "Klaida šalinant viešinį",
"Non-existing tag #{tag}" : "Neegzistuojanti žymė #{tag}",
"restricted" : "apribota",
"invisible" : "nematoma",
diff --git a/core/l10n/lv.js b/core/l10n/lv.js
index 5b25f0bdfb9..de0c8198aaf 100644
--- a/core/l10n/lv.js
+++ b/core/l10n/lv.js
@@ -147,6 +147,7 @@ OC.L10N.register(
"Expiration date" : "Termiņa datums",
"Unshare" : "Pārtraukt koplietošanu",
"Share link" : "Koplietot saiti",
+ "Password protect by Talk" : "Aizsargāts ar paroli no Talk",
"Could not unshare" : "Nevarēja pārtraukt koplietošanu",
"Shared with you and the group {group} by {owner}" : "{owner} koplietoja ar jums un grupu {group}",
"Shared with you and {circle} by {owner}" : " {owner} koplietoja ar tevi un {circle}",
@@ -162,7 +163,6 @@ OC.L10N.register(
"Can create" : "Var izveidot",
"Can change" : "Var mainīt",
"Can delete" : "Var dzēst",
- "Password protect by Talk" : "Aizsargāts ar paroli no Talk",
"Access control" : "Piekļuves vadība",
"Error while sharing" : "Kļūda, daloties",
"Share details could not be loaded for this item." : "Šim nevarēja ielādēt koplietošanas detaļas.",
@@ -314,7 +314,6 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Lapa tiks atsvaidzināta kad %s instance atkal ir pieejama.",
"Thank you for your patience." : "Paldies par jūsu pacietību.",
"Back to log in" : "Atpakaļ uz pierakstīšanos",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Gaidām līdz cron pabeigs darbu (atkārtoti pārbaudām ik pēc 5 sekundēm) ...",
"Enable" : "Iespējot"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/core/l10n/lv.json b/core/l10n/lv.json
index 760a24e2795..7d0f6f4f4ec 100644
--- a/core/l10n/lv.json
+++ b/core/l10n/lv.json
@@ -145,6 +145,7 @@
"Expiration date" : "Termiņa datums",
"Unshare" : "Pārtraukt koplietošanu",
"Share link" : "Koplietot saiti",
+ "Password protect by Talk" : "Aizsargāts ar paroli no Talk",
"Could not unshare" : "Nevarēja pārtraukt koplietošanu",
"Shared with you and the group {group} by {owner}" : "{owner} koplietoja ar jums un grupu {group}",
"Shared with you and {circle} by {owner}" : " {owner} koplietoja ar tevi un {circle}",
@@ -160,7 +161,6 @@
"Can create" : "Var izveidot",
"Can change" : "Var mainīt",
"Can delete" : "Var dzēst",
- "Password protect by Talk" : "Aizsargāts ar paroli no Talk",
"Access control" : "Piekļuves vadība",
"Error while sharing" : "Kļūda, daloties",
"Share details could not be loaded for this item." : "Šim nevarēja ielādēt koplietošanas detaļas.",
@@ -312,7 +312,6 @@
"This page will refresh itself when the %s instance is available again." : "Lapa tiks atsvaidzināta kad %s instance atkal ir pieejama.",
"Thank you for your patience." : "Paldies par jūsu pacietību.",
"Back to log in" : "Atpakaļ uz pierakstīšanos",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Gaidām līdz cron pabeigs darbu (atkārtoti pārbaudām ik pēc 5 sekundēm) ...",
"Enable" : "Iespējot"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
} \ No newline at end of file
diff --git a/core/l10n/nb.js b/core/l10n/nb.js
index 5a82d1ffb7a..ac5a7069436 100644
--- a/core/l10n/nb.js
+++ b/core/l10n/nb.js
@@ -179,6 +179,7 @@ OC.L10N.register(
"Note to recipient" : "Note til mottaker",
"Unshare" : "Avslutt deling",
"Share link" : "Del lenke",
+ "Password protect by Talk" : "Passord beskyttet av Talk",
"Could not unshare" : "Kunne ikke avslutte deling",
"Shared with you and the group {group} by {owner}" : "Delt med deg og gruppen {group} av {owner}",
"Shared with you and {circle} by {owner}" : "Delt med deg og {circle} av {owner}",
@@ -197,7 +198,6 @@ OC.L10N.register(
"Can create" : "Kan opprette",
"Can change" : "Kan endre",
"Can delete" : "Kan slette",
- "Password protect by Talk" : "Passord beskyttet av Talk",
"Access control" : "Tilgangskontroll",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} delt via lenke",
"Error while sharing" : "Feil under deling",
@@ -409,7 +409,6 @@ OC.L10N.register(
"Back to log in" : "Tilbake til innlogging",
"You are about to grant %s access to your %s account." : "Du er i ferd med å gi %s tilgang til din %s konto.",
"Depending on your configuration, this button could also work to trust the domain:" : "Avhengig av ditt oppsett, kan denne knappen også betro domenet.",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Venter på at cron skal bli ferdig (sjekk om 5 sekund)...",
"Copy URL" : "Kopier URL",
"Enable" : "Aktiver",
"{sharee} (conversation)" : "{sharee} (conversation)",
diff --git a/core/l10n/nb.json b/core/l10n/nb.json
index 24d21513229..f23ed4122a7 100644
--- a/core/l10n/nb.json
+++ b/core/l10n/nb.json
@@ -177,6 +177,7 @@
"Note to recipient" : "Note til mottaker",
"Unshare" : "Avslutt deling",
"Share link" : "Del lenke",
+ "Password protect by Talk" : "Passord beskyttet av Talk",
"Could not unshare" : "Kunne ikke avslutte deling",
"Shared with you and the group {group} by {owner}" : "Delt med deg og gruppen {group} av {owner}",
"Shared with you and {circle} by {owner}" : "Delt med deg og {circle} av {owner}",
@@ -195,7 +196,6 @@
"Can create" : "Kan opprette",
"Can change" : "Kan endre",
"Can delete" : "Kan slette",
- "Password protect by Talk" : "Passord beskyttet av Talk",
"Access control" : "Tilgangskontroll",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} delt via lenke",
"Error while sharing" : "Feil under deling",
@@ -407,7 +407,6 @@
"Back to log in" : "Tilbake til innlogging",
"You are about to grant %s access to your %s account." : "Du er i ferd med å gi %s tilgang til din %s konto.",
"Depending on your configuration, this button could also work to trust the domain:" : "Avhengig av ditt oppsett, kan denne knappen også betro domenet.",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Venter på at cron skal bli ferdig (sjekk om 5 sekund)...",
"Copy URL" : "Kopier URL",
"Enable" : "Aktiver",
"{sharee} (conversation)" : "{sharee} (conversation)",
diff --git a/core/l10n/nl.js b/core/l10n/nl.js
index a016b5b931f..280053215df 100644
--- a/core/l10n/nl.js
+++ b/core/l10n/nl.js
@@ -163,10 +163,13 @@ OC.L10N.register(
"Not supported!" : "Niet ondersteund!",
"Press ⌘-C to copy." : "Druk op ⌘-C om te kopiëren.",
"Press Ctrl-C to copy." : "Druk op Ctrl-C om te kopiëren.",
+ "Unable to create a link share" : "Kan deze deellink niet maken",
+ "Unable to toggle this option" : "Kan deze optie niet omschakelen",
"Resharing is not allowed" : "Verder delen is niet toegestaan",
"Share to {name}" : "Delen naar {name}",
"Link" : "Link",
"Hide download" : "Verberg download",
+ "Password protection enforced" : "Wachtwoordbeveiliging afgedwongen",
"Password protect" : "Wachtwoord beveiligd",
"Allow editing" : "Bewerken toestaan",
"Email link to person" : "Email-link naar persoon",
@@ -174,12 +177,18 @@ OC.L10N.register(
"Allow upload and editing" : "Toestaan uploaden en bewerken",
"Read only" : "Alleen lezen",
"File drop (upload only)" : "File drop (alleen uploaden)",
+ "Expiration date enforced" : "Vervaldatum afgedwongen",
"Set expiration date" : "Stel vervaldatum in",
"Expiration" : "Vervaltermijn",
"Expiration date" : "Vervaldatum",
"Note to recipient" : "Notitie voor ontvanger",
"Unshare" : "Delen stoppen",
+ "Delete share link" : "Verwijderen deellink",
+ "Add another link" : "Toevoegen andere link",
+ "Password protection for links is mandatory" : "Wachtwoordbeveiliging voor links is verplicht",
"Share link" : "Deellink",
+ "New share link" : "Nieuwe deellink",
+ "Password protect by Talk" : "Wachtwoord beveiligd door Talk",
"Could not unshare" : "Kon delen niet ongedaan maken",
"Shared with you and the group {group} by {owner}" : "Met jou en de groep {group} gedeeld door {owner}",
"Shared with you and {circle} by {owner}" : "Gedeeld met jou en {circle} door {owner}",
@@ -198,7 +207,6 @@ OC.L10N.register(
"Can create" : "Kan creëren",
"Can change" : "Kan wijzigen",
"Can delete" : "Kan verwijderen",
- "Password protect by Talk" : "Wachtwoord beveiligd door Talk",
"Access control" : "Toegangscontrole",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} gedeeld via link",
"Error while sharing" : "Fout tijdens het delen",
@@ -211,6 +219,7 @@ OC.L10N.register(
"An error occurred. Please try again" : "Er trad een fout op. Probeer het opnieuw",
"{sharee} (remote group)" : "{sharee} (remote group)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "Home" : "Startpagina",
"Other" : "Ander",
"Share" : "Delen",
"Name or email address..." : "Naam of emailadres...",
@@ -412,7 +421,6 @@ OC.L10N.register(
"Back to log in" : "Terug naar inloggen",
"You are about to grant %s access to your %s account." : "Je staat op het punt om %s toegang te verlenen to je %s account.",
"Depending on your configuration, this button could also work to trust the domain:" : "Afhankelijk van je configuratie kan deze knop ook werken om het volgende domein te vertrouwen:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Wachten op gereedmelding cron (over 5 seconden nieuwe check) …",
"Copy URL" : "Kopiëren URL",
"Enable" : "Inschakelen",
"{sharee} (conversation)" : "{sharee} (gesprek)",
diff --git a/core/l10n/nl.json b/core/l10n/nl.json
index 3bf30565352..09764561ef5 100644
--- a/core/l10n/nl.json
+++ b/core/l10n/nl.json
@@ -161,10 +161,13 @@
"Not supported!" : "Niet ondersteund!",
"Press ⌘-C to copy." : "Druk op ⌘-C om te kopiëren.",
"Press Ctrl-C to copy." : "Druk op Ctrl-C om te kopiëren.",
+ "Unable to create a link share" : "Kan deze deellink niet maken",
+ "Unable to toggle this option" : "Kan deze optie niet omschakelen",
"Resharing is not allowed" : "Verder delen is niet toegestaan",
"Share to {name}" : "Delen naar {name}",
"Link" : "Link",
"Hide download" : "Verberg download",
+ "Password protection enforced" : "Wachtwoordbeveiliging afgedwongen",
"Password protect" : "Wachtwoord beveiligd",
"Allow editing" : "Bewerken toestaan",
"Email link to person" : "Email-link naar persoon",
@@ -172,12 +175,18 @@
"Allow upload and editing" : "Toestaan uploaden en bewerken",
"Read only" : "Alleen lezen",
"File drop (upload only)" : "File drop (alleen uploaden)",
+ "Expiration date enforced" : "Vervaldatum afgedwongen",
"Set expiration date" : "Stel vervaldatum in",
"Expiration" : "Vervaltermijn",
"Expiration date" : "Vervaldatum",
"Note to recipient" : "Notitie voor ontvanger",
"Unshare" : "Delen stoppen",
+ "Delete share link" : "Verwijderen deellink",
+ "Add another link" : "Toevoegen andere link",
+ "Password protection for links is mandatory" : "Wachtwoordbeveiliging voor links is verplicht",
"Share link" : "Deellink",
+ "New share link" : "Nieuwe deellink",
+ "Password protect by Talk" : "Wachtwoord beveiligd door Talk",
"Could not unshare" : "Kon delen niet ongedaan maken",
"Shared with you and the group {group} by {owner}" : "Met jou en de groep {group} gedeeld door {owner}",
"Shared with you and {circle} by {owner}" : "Gedeeld met jou en {circle} door {owner}",
@@ -196,7 +205,6 @@
"Can create" : "Kan creëren",
"Can change" : "Kan wijzigen",
"Can delete" : "Kan verwijderen",
- "Password protect by Talk" : "Wachtwoord beveiligd door Talk",
"Access control" : "Toegangscontrole",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} gedeeld via link",
"Error while sharing" : "Fout tijdens het delen",
@@ -209,6 +217,7 @@
"An error occurred. Please try again" : "Er trad een fout op. Probeer het opnieuw",
"{sharee} (remote group)" : "{sharee} (remote group)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "Home" : "Startpagina",
"Other" : "Ander",
"Share" : "Delen",
"Name or email address..." : "Naam of emailadres...",
@@ -410,7 +419,6 @@
"Back to log in" : "Terug naar inloggen",
"You are about to grant %s access to your %s account." : "Je staat op het punt om %s toegang te verlenen to je %s account.",
"Depending on your configuration, this button could also work to trust the domain:" : "Afhankelijk van je configuratie kan deze knop ook werken om het volgende domein te vertrouwen:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Wachten op gereedmelding cron (over 5 seconden nieuwe check) …",
"Copy URL" : "Kopiëren URL",
"Enable" : "Inschakelen",
"{sharee} (conversation)" : "{sharee} (gesprek)",
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index a3e75e165be..d667c8bee64 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -176,6 +176,7 @@ OC.L10N.register(
"Note to recipient" : "Notatka dla odbiorcy",
"Unshare" : "Zatrzymaj współdzielenie",
"Share link" : "Udostępnij link",
+ "Password protect by Talk" : "Ochronę hasłem zapewnia Talk",
"Could not unshare" : "Nie udało się usunąć udostępnienia",
"Shared with you and the group {group} by {owner}" : "Udostępnione tobie i grupie {group} przez {owner}",
"Shared with you and {circle} by {owner}" : "Współdzielone z Tobą i {circle} przez {owner}",
@@ -194,7 +195,6 @@ OC.L10N.register(
"Can create" : "Może tworzyć",
"Can change" : "Może zmieniać",
"Can delete" : "Może usuwać",
- "Password protect by Talk" : "Ochronę hasłem zapewnia Talk",
"Access control" : "Kontrola dostępu",
"Error while sharing" : "Błąd podczas udostępniania",
"Share details could not be loaded for this item." : "Szczegóły udziału nie mogły zostać wczytane dla tego obiektu.",
@@ -397,7 +397,6 @@ OC.L10N.register(
"Back to log in" : "Powrót do logowania",
"You are about to grant %s access to your %s account." : "Zamierzasz udzielić %s dostępu do Twojego konta %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "W zależności od Twojej konfiguracji, ten przycisk aby zaufać domenie powinien również zadziałać: ",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Oczekiwanie na zakończenie zadania cron (ponowne sprawdzenie w ciągu 5 sekund) ...",
"Copy URL" : "Skopiuj URL",
"Enable" : "Włącz",
"{sharee} (conversation)" : "{sharee} (konwersacja)",
diff --git a/core/l10n/pl.json b/core/l10n/pl.json
index 00e3fe4ab32..271348c8a3d 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -174,6 +174,7 @@
"Note to recipient" : "Notatka dla odbiorcy",
"Unshare" : "Zatrzymaj współdzielenie",
"Share link" : "Udostępnij link",
+ "Password protect by Talk" : "Ochronę hasłem zapewnia Talk",
"Could not unshare" : "Nie udało się usunąć udostępnienia",
"Shared with you and the group {group} by {owner}" : "Udostępnione tobie i grupie {group} przez {owner}",
"Shared with you and {circle} by {owner}" : "Współdzielone z Tobą i {circle} przez {owner}",
@@ -192,7 +193,6 @@
"Can create" : "Może tworzyć",
"Can change" : "Może zmieniać",
"Can delete" : "Może usuwać",
- "Password protect by Talk" : "Ochronę hasłem zapewnia Talk",
"Access control" : "Kontrola dostępu",
"Error while sharing" : "Błąd podczas udostępniania",
"Share details could not be loaded for this item." : "Szczegóły udziału nie mogły zostać wczytane dla tego obiektu.",
@@ -395,7 +395,6 @@
"Back to log in" : "Powrót do logowania",
"You are about to grant %s access to your %s account." : "Zamierzasz udzielić %s dostępu do Twojego konta %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "W zależności od Twojej konfiguracji, ten przycisk aby zaufać domenie powinien również zadziałać: ",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Oczekiwanie na zakończenie zadania cron (ponowne sprawdzenie w ciągu 5 sekund) ...",
"Copy URL" : "Skopiuj URL",
"Enable" : "Włącz",
"{sharee} (conversation)" : "{sharee} (konwersacja)",
diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index 0466b367ccf..8ded4df100f 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -163,10 +163,13 @@ OC.L10N.register(
"Not supported!" : "Não suportado!",
"Press ⌘-C to copy." : "Pressione ⌘-C para copiar.",
"Press Ctrl-C to copy." : "Pressione Ctrl-C para copiar.",
+ "Unable to create a link share" : "Não é possível criar um compartilhamento por link",
+ "Unable to toggle this option" : "Não é possível alternar esta opção",
"Resharing is not allowed" : "Não é permitido recompartilhar",
"Share to {name}" : "Compartilhar com {name}",
"Link" : "Link",
"Hide download" : "Ocultar download",
+ "Password protection enforced" : "Proteção por senha aplicada",
"Password protect" : "Proteger com senha",
"Allow editing" : "Permitir edição",
"Email link to person" : "Enviar link por e-mail",
@@ -174,12 +177,18 @@ OC.L10N.register(
"Allow upload and editing" : "Permitir envio e edição",
"Read only" : "Somente leitura",
"File drop (upload only)" : "Zona de arquivos (somente envio)",
+ "Expiration date enforced" : "Data de expiração aplicada",
"Set expiration date" : "Definir data de expiração",
"Expiration" : "Expiração",
"Expiration date" : "Data de expiração",
"Note to recipient" : "Nota para o destinatário",
"Unshare" : "Descompartilhar",
+ "Delete share link" : "Excluir link de compartilhamento",
+ "Add another link" : "Adicionar outro link",
+ "Password protection for links is mandatory" : "A proteção por senha para links é obrigatória",
"Share link" : "Compartilhar link",
+ "New share link" : "Novo link de compartilhamento",
+ "Password protect by Talk" : "Senha protegida pelo Talk",
"Could not unshare" : "Não foi possível descompartilhar",
"Shared with you and the group {group} by {owner}" : "Compartilhado com você e com o grupo {group} por {owner}",
"Shared with you and {circle} by {owner}" : "Compartilhado com você e {circle} por {owner}",
@@ -198,7 +207,6 @@ OC.L10N.register(
"Can create" : "Pode criar",
"Can change" : "Pode modificar",
"Can delete" : "Pode excluir",
- "Password protect by Talk" : "Senha protegida pelo Talk",
"Access control" : "Controle de acesso",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} compartilhou por link",
"Error while sharing" : "Erro ao compartilhar",
@@ -413,7 +421,6 @@ OC.L10N.register(
"Back to log in" : "Voltar ao login",
"You are about to grant %s access to your %s account." : "Você está prestes a conceder acesso a %s à sua conta %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "Dependendo de sua configuração, este botão também pode funcionar para confiar no domínio.",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Aguardando o cron terminar (verificando de novo em 5 segundos)…",
"Copy URL" : "Copiar URL",
"Enable" : "Ativar",
"{sharee} (conversation)" : "{sharee} (conversation)",
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index edbdfd11eef..a625b363842 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -161,10 +161,13 @@
"Not supported!" : "Não suportado!",
"Press ⌘-C to copy." : "Pressione ⌘-C para copiar.",
"Press Ctrl-C to copy." : "Pressione Ctrl-C para copiar.",
+ "Unable to create a link share" : "Não é possível criar um compartilhamento por link",
+ "Unable to toggle this option" : "Não é possível alternar esta opção",
"Resharing is not allowed" : "Não é permitido recompartilhar",
"Share to {name}" : "Compartilhar com {name}",
"Link" : "Link",
"Hide download" : "Ocultar download",
+ "Password protection enforced" : "Proteção por senha aplicada",
"Password protect" : "Proteger com senha",
"Allow editing" : "Permitir edição",
"Email link to person" : "Enviar link por e-mail",
@@ -172,12 +175,18 @@
"Allow upload and editing" : "Permitir envio e edição",
"Read only" : "Somente leitura",
"File drop (upload only)" : "Zona de arquivos (somente envio)",
+ "Expiration date enforced" : "Data de expiração aplicada",
"Set expiration date" : "Definir data de expiração",
"Expiration" : "Expiração",
"Expiration date" : "Data de expiração",
"Note to recipient" : "Nota para o destinatário",
"Unshare" : "Descompartilhar",
+ "Delete share link" : "Excluir link de compartilhamento",
+ "Add another link" : "Adicionar outro link",
+ "Password protection for links is mandatory" : "A proteção por senha para links é obrigatória",
"Share link" : "Compartilhar link",
+ "New share link" : "Novo link de compartilhamento",
+ "Password protect by Talk" : "Senha protegida pelo Talk",
"Could not unshare" : "Não foi possível descompartilhar",
"Shared with you and the group {group} by {owner}" : "Compartilhado com você e com o grupo {group} por {owner}",
"Shared with you and {circle} by {owner}" : "Compartilhado com você e {circle} por {owner}",
@@ -196,7 +205,6 @@
"Can create" : "Pode criar",
"Can change" : "Pode modificar",
"Can delete" : "Pode excluir",
- "Password protect by Talk" : "Senha protegida pelo Talk",
"Access control" : "Controle de acesso",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} compartilhou por link",
"Error while sharing" : "Erro ao compartilhar",
@@ -411,7 +419,6 @@
"Back to log in" : "Voltar ao login",
"You are about to grant %s access to your %s account." : "Você está prestes a conceder acesso a %s à sua conta %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "Dependendo de sua configuração, este botão também pode funcionar para confiar no domínio.",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Aguardando o cron terminar (verificando de novo em 5 segundos)…",
"Copy URL" : "Copiar URL",
"Enable" : "Ativar",
"{sharee} (conversation)" : "{sharee} (conversation)",
diff --git a/core/l10n/ru.js b/core/l10n/ru.js
index 8be04ef91cf..7bf5e82f0c4 100644
--- a/core/l10n/ru.js
+++ b/core/l10n/ru.js
@@ -179,6 +179,7 @@ OC.L10N.register(
"Note to recipient" : "Примечание для получателя",
"Unshare" : "Закрыть доступ",
"Share link" : "Общий доступ по ссылке",
+ "Password protect by Talk" : "Защита пароля Talk",
"Could not unshare" : "Невозможно закрыть общий доступ",
"Shared with you and the group {group} by {owner}" : "{owner} предоставил(а) доступ Вам и группе {group}",
"Shared with you and {circle} by {owner}" : "{owner} предоставил(а) доступ Вам и участникам круга «{circle}»",
@@ -197,7 +198,6 @@ OC.L10N.register(
"Can create" : "Можно создавать",
"Can change" : "Можно изменять",
"Can delete" : "Можно удалять",
- "Password protect by Talk" : "Защита пароля Talk",
"Access control" : "Управление доступом",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} предоставил(а) доступ созданием ссылки",
"Error while sharing" : "При попытке поделиться произошла ошибка",
@@ -407,7 +407,6 @@ OC.L10N.register(
"Back to log in" : "Вернуться к диалогу входа в систему",
"You are about to grant %s access to your %s account." : "Вы собираетесь предоставить пользователю %s доступ к вашему аккаунту %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "В зависимости от конфигурации, эта кнопка может сделать доверенным следующий домен:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Ожидание завершения работы планировщика (проверка каждые 5 секунд)…",
"Copy URL" : "Копировать ссылку",
"Enable" : "Использовать",
"{sharee} (conversation)" : "{sharee} (разговор)",
diff --git a/core/l10n/ru.json b/core/l10n/ru.json
index 37a46e013d0..74827aa3dcc 100644
--- a/core/l10n/ru.json
+++ b/core/l10n/ru.json
@@ -177,6 +177,7 @@
"Note to recipient" : "Примечание для получателя",
"Unshare" : "Закрыть доступ",
"Share link" : "Общий доступ по ссылке",
+ "Password protect by Talk" : "Защита пароля Talk",
"Could not unshare" : "Невозможно закрыть общий доступ",
"Shared with you and the group {group} by {owner}" : "{owner} предоставил(а) доступ Вам и группе {group}",
"Shared with you and {circle} by {owner}" : "{owner} предоставил(а) доступ Вам и участникам круга «{circle}»",
@@ -195,7 +196,6 @@
"Can create" : "Можно создавать",
"Can change" : "Можно изменять",
"Can delete" : "Можно удалять",
- "Password protect by Talk" : "Защита пароля Talk",
"Access control" : "Управление доступом",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} предоставил(а) доступ созданием ссылки",
"Error while sharing" : "При попытке поделиться произошла ошибка",
@@ -405,7 +405,6 @@
"Back to log in" : "Вернуться к диалогу входа в систему",
"You are about to grant %s access to your %s account." : "Вы собираетесь предоставить пользователю %s доступ к вашему аккаунту %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "В зависимости от конфигурации, эта кнопка может сделать доверенным следующий домен:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Ожидание завершения работы планировщика (проверка каждые 5 секунд)…",
"Copy URL" : "Копировать ссылку",
"Enable" : "Использовать",
"{sharee} (conversation)" : "{sharee} (разговор)",
diff --git a/core/l10n/sk.js b/core/l10n/sk.js
index a60ff6e8f6e..391ceeabd21 100644
--- a/core/l10n/sk.js
+++ b/core/l10n/sk.js
@@ -179,6 +179,7 @@ OC.L10N.register(
"Note to recipient" : "Poznámka pre príjemcu",
"Unshare" : "Zneprístupniť",
"Share link" : "Sprístupniť odkaz",
+ "Password protect by Talk" : "Chránené heslom apkou Talk",
"Could not unshare" : "Nepodarilo sa zrušiť sprístupnenie",
"Shared with you and the group {group} by {owner}" : "Sprístupnené vám a skupine {group} používateľom {owner}",
"Shared with you and {circle} by {owner}" : "Sprístupnené vám a {circle} od {owner}",
@@ -197,7 +198,6 @@ OC.L10N.register(
"Can create" : "Môže vytvárať",
"Can change" : "Môže meniť",
"Can delete" : "Môže odstraňovať",
- "Password protect by Talk" : "Chránené heslom apkou Talk",
"Access control" : "Prístupové práva",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} zdieľal pomocou odkazu",
"Error while sharing" : "Chyba počas sprístupňovania",
@@ -210,6 +210,8 @@ OC.L10N.register(
"An error occurred. Please try again" : "Nastala chyba. Skúste to prosím znovu",
"{sharee} (remote group)" : "{sharee} (vzdialená skupina)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "Home" : "Domov",
+ "Other" : "Iné",
"Share" : "Sprístupniť",
"Name or email address..." : "Meno alebo e-mailová adresa...",
"Name or federated cloud ID..." : "Meno alebo federatívny cloud ID...",
@@ -295,6 +297,7 @@ OC.L10N.register(
"Skip to main content" : "Prejsť na hlavný obsah",
"Skip to navigation of app" : "Preskočiť do navigácie apky",
"More apps" : "Viac aplikácií",
+ "More" : "Viac",
"More apps menu" : "Menu ostatných aplikácií",
"Search" : "Hľadať",
"Reset search" : "Vynuluj vyhľadávanie",
@@ -409,7 +412,6 @@ OC.L10N.register(
"Back to log in" : "Späť na prihlásenie",
"You are about to grant %s access to your %s account." : "Chystáte sa udeliť %s prístup k svojmu %s účtu.",
"Depending on your configuration, this button could also work to trust the domain:" : "V závislosti od vašej konfigurácie by toto tlačidlo mohlo fungovať tak, že dôverujete doméne:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Čaká sa na dokončenie cronu (skontrolujte znovu za 5 sekúnd) ...",
"Copy URL" : "Kopírovať URL",
"Enable" : "Povoliť",
"{sharee} (conversation)" : "{sharee} (rozhovor)",
diff --git a/core/l10n/sk.json b/core/l10n/sk.json
index c1dcd68d75f..4c63b47c6b9 100644
--- a/core/l10n/sk.json
+++ b/core/l10n/sk.json
@@ -177,6 +177,7 @@
"Note to recipient" : "Poznámka pre príjemcu",
"Unshare" : "Zneprístupniť",
"Share link" : "Sprístupniť odkaz",
+ "Password protect by Talk" : "Chránené heslom apkou Talk",
"Could not unshare" : "Nepodarilo sa zrušiť sprístupnenie",
"Shared with you and the group {group} by {owner}" : "Sprístupnené vám a skupine {group} používateľom {owner}",
"Shared with you and {circle} by {owner}" : "Sprístupnené vám a {circle} od {owner}",
@@ -195,7 +196,6 @@
"Can create" : "Môže vytvárať",
"Can change" : "Môže meniť",
"Can delete" : "Môže odstraňovať",
- "Password protect by Talk" : "Chránené heslom apkou Talk",
"Access control" : "Prístupové práva",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} zdieľal pomocou odkazu",
"Error while sharing" : "Chyba počas sprístupňovania",
@@ -208,6 +208,8 @@
"An error occurred. Please try again" : "Nastala chyba. Skúste to prosím znovu",
"{sharee} (remote group)" : "{sharee} (vzdialená skupina)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "Home" : "Domov",
+ "Other" : "Iné",
"Share" : "Sprístupniť",
"Name or email address..." : "Meno alebo e-mailová adresa...",
"Name or federated cloud ID..." : "Meno alebo federatívny cloud ID...",
@@ -293,6 +295,7 @@
"Skip to main content" : "Prejsť na hlavný obsah",
"Skip to navigation of app" : "Preskočiť do navigácie apky",
"More apps" : "Viac aplikácií",
+ "More" : "Viac",
"More apps menu" : "Menu ostatných aplikácií",
"Search" : "Hľadať",
"Reset search" : "Vynuluj vyhľadávanie",
@@ -407,7 +410,6 @@
"Back to log in" : "Späť na prihlásenie",
"You are about to grant %s access to your %s account." : "Chystáte sa udeliť %s prístup k svojmu %s účtu.",
"Depending on your configuration, this button could also work to trust the domain:" : "V závislosti od vašej konfigurácie by toto tlačidlo mohlo fungovať tak, že dôverujete doméne:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Čaká sa na dokončenie cronu (skontrolujte znovu za 5 sekúnd) ...",
"Copy URL" : "Kopírovať URL",
"Enable" : "Povoliť",
"{sharee} (conversation)" : "{sharee} (rozhovor)",
diff --git a/core/l10n/sr.js b/core/l10n/sr.js
index 854a8a3b6e4..4532fe65513 100644
--- a/core/l10n/sr.js
+++ b/core/l10n/sr.js
@@ -163,9 +163,13 @@ OC.L10N.register(
"Not supported!" : "Није подржано!",
"Press ⌘-C to copy." : "Притисни ⌘-C за копирање.",
"Press Ctrl-C to copy." : "Притисни Ctrl-C за копирање.",
+ "Unable to create a link share" : "Не могу да направим везу дељења",
+ "Unable to toggle this option" : "Не могу да укључим/искључим ову опцију",
"Resharing is not allowed" : "Поновно дељење није дозвољено",
"Share to {name}" : "Подели са {name}",
"Link" : "Веза",
+ "Hide download" : "Сакриј скидање",
+ "Password protection enforced" : "Захтевана заштита лозинком",
"Password protect" : "Заштићено лозинком",
"Allow editing" : "Дозволи уређивање",
"Email link to person" : "Пошаљи е-поштом",
@@ -173,12 +177,18 @@ OC.L10N.register(
"Allow upload and editing" : "Дозволи отпремање и уређивање",
"Read only" : "Само за читање",
"File drop (upload only)" : "Превлачење фајлова (само за отпремање)",
+ "Expiration date enforced" : "Захтевано постављање датума истека",
"Set expiration date" : "Постави датум истека",
"Expiration" : "Истиче",
"Expiration date" : "Датум истека",
"Note to recipient" : "Белешка примаоцу",
"Unshare" : "Укини дељење",
+ "Delete share link" : "Обриши везу дељења",
+ "Add another link" : "Додај још једну везу",
+ "Password protection for links is mandatory" : "За везе је обавезна заштита лозинком",
"Share link" : "Веза дељења",
+ "New share link" : "Нова веза дељења",
+ "Password protect by Talk" : "Заштити лозинком преко Talk-а",
"Could not unshare" : "Не могу да укинем дељење",
"Shared with you and the group {group} by {owner}" : "{owner} дели са вама и са групом {group}.",
"Shared with you and {circle} by {owner}" : "Дељемп са Вама и кругом {circle} од стране корисника {owner}",
@@ -197,7 +207,6 @@ OC.L10N.register(
"Can create" : "Може да направи",
"Can change" : "Може да мења",
"Can delete" : "Може да брише",
- "Password protect by Talk" : "Заштити лозинком преко Talk-а",
"Access control" : "Контрола приступа",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} је поделио преко везе",
"Error while sharing" : "Грешка при дељењу",
@@ -210,6 +219,8 @@ OC.L10N.register(
"An error occurred. Please try again" : "Дошло је до грешке. Покушајте поново",
"{sharee} (remote group)" : "{sharee} (удаљена група)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "Home" : "Почетна",
+ "Other" : "Остало",
"Share" : "Дели",
"Name or email address..." : "Име или адреса е-поште...",
"Name or federated cloud ID..." : "Име или ID здруженог облака...",
@@ -295,6 +306,7 @@ OC.L10N.register(
"Skip to main content" : "Прескочи на главни садржај",
"Skip to navigation of app" : "Прескочи на навигацију апликације",
"More apps" : "Још апликација",
+ "More" : "Још",
"More apps menu" : "Мени још апликација",
"Search" : "Претражи",
"Reset search" : "Ресетуј претрагу",
@@ -409,7 +421,6 @@ OC.L10N.register(
"Back to log in" : "Назад на пријаву",
"You are about to grant %s access to your %s account." : "Управо ћете одобрити %s приступ Вашем %s налогу.",
"Depending on your configuration, this button could also work to trust the domain:" : "У зависности од Ваше конфигурације, овим дугметом може да послужи да почнете да верујете овом домену:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Чекање да се заврши крон (проверите опет за 5 секунди) …",
"Copy URL" : "Копирај URL",
"Enable" : "Укључи",
"{sharee} (conversation)" : "{sharee} (разговор)",
diff --git a/core/l10n/sr.json b/core/l10n/sr.json
index 8fd071999df..62fda5015f9 100644
--- a/core/l10n/sr.json
+++ b/core/l10n/sr.json
@@ -161,9 +161,13 @@
"Not supported!" : "Није подржано!",
"Press ⌘-C to copy." : "Притисни ⌘-C за копирање.",
"Press Ctrl-C to copy." : "Притисни Ctrl-C за копирање.",
+ "Unable to create a link share" : "Не могу да направим везу дељења",
+ "Unable to toggle this option" : "Не могу да укључим/искључим ову опцију",
"Resharing is not allowed" : "Поновно дељење није дозвољено",
"Share to {name}" : "Подели са {name}",
"Link" : "Веза",
+ "Hide download" : "Сакриј скидање",
+ "Password protection enforced" : "Захтевана заштита лозинком",
"Password protect" : "Заштићено лозинком",
"Allow editing" : "Дозволи уређивање",
"Email link to person" : "Пошаљи е-поштом",
@@ -171,12 +175,18 @@
"Allow upload and editing" : "Дозволи отпремање и уређивање",
"Read only" : "Само за читање",
"File drop (upload only)" : "Превлачење фајлова (само за отпремање)",
+ "Expiration date enforced" : "Захтевано постављање датума истека",
"Set expiration date" : "Постави датум истека",
"Expiration" : "Истиче",
"Expiration date" : "Датум истека",
"Note to recipient" : "Белешка примаоцу",
"Unshare" : "Укини дељење",
+ "Delete share link" : "Обриши везу дељења",
+ "Add another link" : "Додај још једну везу",
+ "Password protection for links is mandatory" : "За везе је обавезна заштита лозинком",
"Share link" : "Веза дељења",
+ "New share link" : "Нова веза дељења",
+ "Password protect by Talk" : "Заштити лозинком преко Talk-а",
"Could not unshare" : "Не могу да укинем дељење",
"Shared with you and the group {group} by {owner}" : "{owner} дели са вама и са групом {group}.",
"Shared with you and {circle} by {owner}" : "Дељемп са Вама и кругом {circle} од стране корисника {owner}",
@@ -195,7 +205,6 @@
"Can create" : "Може да направи",
"Can change" : "Може да мења",
"Can delete" : "Може да брише",
- "Password protect by Talk" : "Заштити лозинком преко Talk-а",
"Access control" : "Контрола приступа",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} је поделио преко везе",
"Error while sharing" : "Грешка при дељењу",
@@ -208,6 +217,8 @@
"An error occurred. Please try again" : "Дошло је до грешке. Покушајте поново",
"{sharee} (remote group)" : "{sharee} (удаљена група)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "Home" : "Почетна",
+ "Other" : "Остало",
"Share" : "Дели",
"Name or email address..." : "Име или адреса е-поште...",
"Name or federated cloud ID..." : "Име или ID здруженог облака...",
@@ -293,6 +304,7 @@
"Skip to main content" : "Прескочи на главни садржај",
"Skip to navigation of app" : "Прескочи на навигацију апликације",
"More apps" : "Још апликација",
+ "More" : "Још",
"More apps menu" : "Мени још апликација",
"Search" : "Претражи",
"Reset search" : "Ресетуј претрагу",
@@ -407,7 +419,6 @@
"Back to log in" : "Назад на пријаву",
"You are about to grant %s access to your %s account." : "Управо ћете одобрити %s приступ Вашем %s налогу.",
"Depending on your configuration, this button could also work to trust the domain:" : "У зависности од Ваше конфигурације, овим дугметом може да послужи да почнете да верујете овом домену:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Чекање да се заврши крон (проверите опет за 5 секунди) …",
"Copy URL" : "Копирај URL",
"Enable" : "Укључи",
"{sharee} (conversation)" : "{sharee} (разговор)",
diff --git a/core/l10n/sv.js b/core/l10n/sv.js
index ed98904793e..8e126b33df4 100644
--- a/core/l10n/sv.js
+++ b/core/l10n/sv.js
@@ -124,9 +124,13 @@ OC.L10N.register(
"Not supported!" : "Stöds ej!",
"Press ⌘-C to copy." : "Tryck ned ⌘-C för att kopiera.",
"Press Ctrl-C to copy." : "Tryck ned Ctrl-C för att kopiera.",
+ "Unable to create a link share" : "Kan inte skapa länkdelning",
+ "Unable to toggle this option" : "Kan inte växla om det här alternativet",
"Resharing is not allowed" : "Dela vidare är inte tillåtet",
"Share to {name}" : "Dela till {name}",
"Link" : "Länk",
+ "Hide download" : "Dölj nedladdning",
+ "Password protection enforced" : "Lösenordsskydd obligatorisk",
"Password protect" : "Lösenordsskydda",
"Allow editing" : "Tillåt redigering",
"Email link to person" : "Skicka länken som e-postmeddelande",
@@ -134,12 +138,18 @@ OC.L10N.register(
"Allow upload and editing" : "Tillåt uppladdning och redigering",
"Read only" : "Läsbehörigheter",
"File drop (upload only)" : "Göm fillista (endast uppladdning)",
+ "Expiration date enforced" : "Förfallodatum obligatorisk",
"Set expiration date" : "Välj utgångsdatum",
"Expiration" : "Upphör",
"Expiration date" : "Utgångsdatum",
"Note to recipient" : "Notering till mottagare",
"Unshare" : "Sluta dela",
+ "Delete share link" : "Radera delad länk",
+ "Add another link" : "Lägg till en annan länk",
+ "Password protection for links is mandatory" : "Lösenordsskydd för länkar är obligatoriskt",
"Share link" : "Dela länk",
+ "New share link" : "Ny delad länk",
+ "Password protect by Talk" : "Lösenordsskydda med Talk",
"Could not unshare" : "Kunde inte ta bort delning",
"Shared with you and the group {group} by {owner}" : "Delad med dig och gruppen {group} av {owner}",
"Shared with you and {circle} by {owner}" : "Delad med dig och {circle} av {owner}",
@@ -158,7 +168,6 @@ OC.L10N.register(
"Can create" : "Kan skapa",
"Can change" : "Kan ändra",
"Can delete" : "Kan radera",
- "Password protect by Talk" : "Lösenordsskydda med Talk",
"Access control" : "Åtkomstkontroll",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} delad via länk",
"Error while sharing" : "Fel vid delning",
@@ -170,6 +179,8 @@ OC.L10N.register(
"An error occurred (\"{message}\"). Please try again" : "Ett fel uppstod (\"{message}\"). Försök igen",
"An error occurred. Please try again" : "Ett fel uppstod. Vänligen försök igen",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "Home" : "Hem",
+ "Other" : "Annan",
"Share" : "Dela",
"Name or email address..." : "Namn eller e-postadress",
"Name or federated cloud ID..." : "Namn eller federerat moln-ID",
@@ -255,6 +266,7 @@ OC.L10N.register(
"Skip to main content" : "Skippa till huvudinnehållet",
"Skip to navigation of app" : "Skippa till navigering av app",
"More apps" : "Fler appar",
+ "More" : "Mer",
"Search" : "Sök",
"Reset search" : "Återställ sökning",
"Contacts" : "Kontakter",
diff --git a/core/l10n/sv.json b/core/l10n/sv.json
index 23859044868..49358261562 100644
--- a/core/l10n/sv.json
+++ b/core/l10n/sv.json
@@ -122,9 +122,13 @@
"Not supported!" : "Stöds ej!",
"Press ⌘-C to copy." : "Tryck ned ⌘-C för att kopiera.",
"Press Ctrl-C to copy." : "Tryck ned Ctrl-C för att kopiera.",
+ "Unable to create a link share" : "Kan inte skapa länkdelning",
+ "Unable to toggle this option" : "Kan inte växla om det här alternativet",
"Resharing is not allowed" : "Dela vidare är inte tillåtet",
"Share to {name}" : "Dela till {name}",
"Link" : "Länk",
+ "Hide download" : "Dölj nedladdning",
+ "Password protection enforced" : "Lösenordsskydd obligatorisk",
"Password protect" : "Lösenordsskydda",
"Allow editing" : "Tillåt redigering",
"Email link to person" : "Skicka länken som e-postmeddelande",
@@ -132,12 +136,18 @@
"Allow upload and editing" : "Tillåt uppladdning och redigering",
"Read only" : "Läsbehörigheter",
"File drop (upload only)" : "Göm fillista (endast uppladdning)",
+ "Expiration date enforced" : "Förfallodatum obligatorisk",
"Set expiration date" : "Välj utgångsdatum",
"Expiration" : "Upphör",
"Expiration date" : "Utgångsdatum",
"Note to recipient" : "Notering till mottagare",
"Unshare" : "Sluta dela",
+ "Delete share link" : "Radera delad länk",
+ "Add another link" : "Lägg till en annan länk",
+ "Password protection for links is mandatory" : "Lösenordsskydd för länkar är obligatoriskt",
"Share link" : "Dela länk",
+ "New share link" : "Ny delad länk",
+ "Password protect by Talk" : "Lösenordsskydda med Talk",
"Could not unshare" : "Kunde inte ta bort delning",
"Shared with you and the group {group} by {owner}" : "Delad med dig och gruppen {group} av {owner}",
"Shared with you and {circle} by {owner}" : "Delad med dig och {circle} av {owner}",
@@ -156,7 +166,6 @@
"Can create" : "Kan skapa",
"Can change" : "Kan ändra",
"Can delete" : "Kan radera",
- "Password protect by Talk" : "Lösenordsskydda med Talk",
"Access control" : "Åtkomstkontroll",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} delad via länk",
"Error while sharing" : "Fel vid delning",
@@ -168,6 +177,8 @@
"An error occurred (\"{message}\"). Please try again" : "Ett fel uppstod (\"{message}\"). Försök igen",
"An error occurred. Please try again" : "Ett fel uppstod. Vänligen försök igen",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
+ "Home" : "Hem",
+ "Other" : "Annan",
"Share" : "Dela",
"Name or email address..." : "Namn eller e-postadress",
"Name or federated cloud ID..." : "Namn eller federerat moln-ID",
@@ -253,6 +264,7 @@
"Skip to main content" : "Skippa till huvudinnehållet",
"Skip to navigation of app" : "Skippa till navigering av app",
"More apps" : "Fler appar",
+ "More" : "Mer",
"Search" : "Sök",
"Reset search" : "Återställ sökning",
"Contacts" : "Kontakter",
diff --git a/core/l10n/tr.js b/core/l10n/tr.js
index e0ea88ee138..dbb1505ac94 100644
--- a/core/l10n/tr.js
+++ b/core/l10n/tr.js
@@ -163,10 +163,13 @@ OC.L10N.register(
"Not supported!" : "Desteklenmiyor!",
"Press ⌘-C to copy." : "Kopyalamak için ⌘-C tuşlarına basın.",
"Press Ctrl-C to copy." : "Kopyalamak için Ctrl-C tuşlarına basın.",
+ "Unable to create a link share" : "Paylaşım bağlantısı oluşturulamadı",
+ "Unable to toggle this option" : "Bu seçenek değiştirilemedi",
"Resharing is not allowed" : "Yeniden paylaşıma izin verilmiyor",
"Share to {name}" : "{name} ile paylaş",
"Link" : "Bağlantı",
"Hide download" : "İndirmeyi gizle",
+ "Password protection enforced" : "Parola koruması dayatılıyor",
"Password protect" : "Parola koruması",
"Allow editing" : "Düzenlenebilsin",
"Email link to person" : "Bağlantıyı e-posta ile gönder",
@@ -174,12 +177,18 @@ OC.L10N.register(
"Allow upload and editing" : "Yüklenebilsin ve düzenlenebilsin",
"Read only" : "Salt okunur",
"File drop (upload only)" : "Dosya bırakma (yalnız yükleme)",
+ "Expiration date enforced" : "Son kullanma süresi dayatılıyor",
"Set expiration date" : "Son kullanma tarihini ayarla",
"Expiration" : "Son kullanma",
"Expiration date" : "Son kullanma tarihi",
"Note to recipient" : "Alıcıya not",
"Unshare" : "Paylaşımdan Kaldır",
+ "Delete share link" : "Paylaşım bağlantısını sil",
+ "Add another link" : "Başka bir bağlantı ekle",
+ "Password protection for links is mandatory" : "Bağlantı için parola koruması zorunludur",
"Share link" : "Paylaşma bağlantısı",
+ "New share link" : "Yeni paylaşım bağlantısı ",
+ "Password protect by Talk" : "Talk tarafından parola koruması",
"Could not unshare" : "Paylaşım kaldırılamadı",
"Shared with you and the group {group} by {owner}" : "{owner} tarafından sizinle ve {group} ile paylaşılmış",
"Shared with you and {circle} by {owner}" : "{owner} tarafından sizinle ve {circle} ile paylaşılmış",
@@ -198,7 +207,6 @@ OC.L10N.register(
"Can create" : "Ekleyebilir",
"Can change" : "Düzenleyebilir",
"Can delete" : "Silebilir",
- "Password protect by Talk" : "Talk tarafından parola koruması",
"Access control" : "Erişim denetimi",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} bağlantı ile paylaşılmış",
"Error while sharing" : "Paylaşılırken sorun çıktı",
@@ -413,7 +421,6 @@ OC.L10N.register(
"Back to log in" : "Oturum açmaya geri dön",
"You are about to grant %s access to your %s account." : "%s erişim iznini %s hesabınız için vermek üzeresiniz.",
"Depending on your configuration, this button could also work to trust the domain:" : "Yapılandırmanıza bağlı olarak, bu düğme etki alanına güvenmek için de kullanılabilir:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Bitirmek için zamanlanmış görev bekleniyor (5 saniye sonra yeniden denetlenecek)…",
"Copy URL" : "Adresi Kopyala",
"Enable" : "Etkinleştir",
"{sharee} (conversation)" : "{sharee} (görüşme)",
diff --git a/core/l10n/tr.json b/core/l10n/tr.json
index 21331837970..d5ccee96d57 100644
--- a/core/l10n/tr.json
+++ b/core/l10n/tr.json
@@ -161,10 +161,13 @@
"Not supported!" : "Desteklenmiyor!",
"Press ⌘-C to copy." : "Kopyalamak için ⌘-C tuşlarına basın.",
"Press Ctrl-C to copy." : "Kopyalamak için Ctrl-C tuşlarına basın.",
+ "Unable to create a link share" : "Paylaşım bağlantısı oluşturulamadı",
+ "Unable to toggle this option" : "Bu seçenek değiştirilemedi",
"Resharing is not allowed" : "Yeniden paylaşıma izin verilmiyor",
"Share to {name}" : "{name} ile paylaş",
"Link" : "Bağlantı",
"Hide download" : "İndirmeyi gizle",
+ "Password protection enforced" : "Parola koruması dayatılıyor",
"Password protect" : "Parola koruması",
"Allow editing" : "Düzenlenebilsin",
"Email link to person" : "Bağlantıyı e-posta ile gönder",
@@ -172,12 +175,18 @@
"Allow upload and editing" : "Yüklenebilsin ve düzenlenebilsin",
"Read only" : "Salt okunur",
"File drop (upload only)" : "Dosya bırakma (yalnız yükleme)",
+ "Expiration date enforced" : "Son kullanma süresi dayatılıyor",
"Set expiration date" : "Son kullanma tarihini ayarla",
"Expiration" : "Son kullanma",
"Expiration date" : "Son kullanma tarihi",
"Note to recipient" : "Alıcıya not",
"Unshare" : "Paylaşımdan Kaldır",
+ "Delete share link" : "Paylaşım bağlantısını sil",
+ "Add another link" : "Başka bir bağlantı ekle",
+ "Password protection for links is mandatory" : "Bağlantı için parola koruması zorunludur",
"Share link" : "Paylaşma bağlantısı",
+ "New share link" : "Yeni paylaşım bağlantısı ",
+ "Password protect by Talk" : "Talk tarafından parola koruması",
"Could not unshare" : "Paylaşım kaldırılamadı",
"Shared with you and the group {group} by {owner}" : "{owner} tarafından sizinle ve {group} ile paylaşılmış",
"Shared with you and {circle} by {owner}" : "{owner} tarafından sizinle ve {circle} ile paylaşılmış",
@@ -196,7 +205,6 @@
"Can create" : "Ekleyebilir",
"Can change" : "Düzenleyebilir",
"Can delete" : "Silebilir",
- "Password protect by Talk" : "Talk tarafından parola koruması",
"Access control" : "Erişim denetimi",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} bağlantı ile paylaşılmış",
"Error while sharing" : "Paylaşılırken sorun çıktı",
@@ -411,7 +419,6 @@
"Back to log in" : "Oturum açmaya geri dön",
"You are about to grant %s access to your %s account." : "%s erişim iznini %s hesabınız için vermek üzeresiniz.",
"Depending on your configuration, this button could also work to trust the domain:" : "Yapılandırmanıza bağlı olarak, bu düğme etki alanına güvenmek için de kullanılabilir:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Bitirmek için zamanlanmış görev bekleniyor (5 saniye sonra yeniden denetlenecek)…",
"Copy URL" : "Adresi Kopyala",
"Enable" : "Etkinleştir",
"{sharee} (conversation)" : "{sharee} (görüşme)",
diff --git a/core/l10n/vi.js b/core/l10n/vi.js
index f5226f674a0..a3d4928fff2 100644
--- a/core/l10n/vi.js
+++ b/core/l10n/vi.js
@@ -133,6 +133,7 @@ OC.L10N.register(
"Expiration date" : "Ngày kết thúc",
"Unshare" : "Bỏ chia sẻ",
"Share link" : "Chia sẻ liên kết",
+ "Password protect by Talk" : "Mật khẩu bảo vệ bằng đàm thoại",
"Could not unshare" : "Không thể chia sẻ",
"Shared with you and the group {group} by {owner}" : "Đã được chia sẽ với bạn và nhóm {group} bởi {owner}",
"Shared with you by {owner}" : "Đã được chia sẽ bởi {owner}",
@@ -147,7 +148,6 @@ OC.L10N.register(
"Can create" : "Có thể tạo",
"Can change" : "Có thể thay đổi",
"Can delete" : "Có thể xóa",
- "Password protect by Talk" : "Mật khẩu bảo vệ bằng đàm thoại",
"Access control" : "Kiểm soát truy cập",
"Error while sharing" : "Lỗi trong quá trình chia sẻ",
"Share details could not be loaded for this item." : "Các chi tiết chia sẻ không thể được nạp đối với mục này",
@@ -307,7 +307,6 @@ OC.L10N.register(
"Back to log in" : "Trở lại trang đăng nhập",
"You are about to grant %s access to your %s account." : "Bạn sắp được phép %s truy nhập tới tài khoản %s của bạn.",
"Depending on your configuration, this button could also work to trust the domain:" : "Phụ thuộc vào cấu hình của bạn, nút lệnh này có thể hoạt động để bảo đảm tin tưởng tên miền:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Chờ hoàn tất cron (kiểm tra lại trong 5s nữa)...",
"Enable" : "Bật"
},
"nplurals=1; plural=0;");
diff --git a/core/l10n/vi.json b/core/l10n/vi.json
index 9a405502a58..ba2e77671b2 100644
--- a/core/l10n/vi.json
+++ b/core/l10n/vi.json
@@ -131,6 +131,7 @@
"Expiration date" : "Ngày kết thúc",
"Unshare" : "Bỏ chia sẻ",
"Share link" : "Chia sẻ liên kết",
+ "Password protect by Talk" : "Mật khẩu bảo vệ bằng đàm thoại",
"Could not unshare" : "Không thể chia sẻ",
"Shared with you and the group {group} by {owner}" : "Đã được chia sẽ với bạn và nhóm {group} bởi {owner}",
"Shared with you by {owner}" : "Đã được chia sẽ bởi {owner}",
@@ -145,7 +146,6 @@
"Can create" : "Có thể tạo",
"Can change" : "Có thể thay đổi",
"Can delete" : "Có thể xóa",
- "Password protect by Talk" : "Mật khẩu bảo vệ bằng đàm thoại",
"Access control" : "Kiểm soát truy cập",
"Error while sharing" : "Lỗi trong quá trình chia sẻ",
"Share details could not be loaded for this item." : "Các chi tiết chia sẻ không thể được nạp đối với mục này",
@@ -305,7 +305,6 @@
"Back to log in" : "Trở lại trang đăng nhập",
"You are about to grant %s access to your %s account." : "Bạn sắp được phép %s truy nhập tới tài khoản %s của bạn.",
"Depending on your configuration, this button could also work to trust the domain:" : "Phụ thuộc vào cấu hình của bạn, nút lệnh này có thể hoạt động để bảo đảm tin tưởng tên miền:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "Chờ hoàn tất cron (kiểm tra lại trong 5s nữa)...",
"Enable" : "Bật"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js
index de14f8b09b8..39b0b8a58c9 100644
--- a/core/l10n/zh_CN.js
+++ b/core/l10n/zh_CN.js
@@ -178,6 +178,7 @@ OC.L10N.register(
"Note to recipient" : "备注",
"Unshare" : "取消共享",
"Share link" : "共享链接",
+ "Password protect by Talk" : "通过 Talk 保护密码",
"Could not unshare" : "无法共享",
"Shared with you and the group {group} by {owner}" : "{owner} 共享给您及 {group} 分组",
"Shared with you and {circle} by {owner}" : "{owner} 共享给您及 {circle}",
@@ -196,7 +197,6 @@ OC.L10N.register(
"Can create" : "可以创建",
"Can change" : "可以修改",
"Can delete" : "可以删除",
- "Password protect by Talk" : "通过 Talk 保护密码",
"Access control" : "访问控制",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} 通过链接共享",
"Error while sharing" : "共享时出错",
@@ -408,7 +408,6 @@ OC.L10N.register(
"Back to log in" : "返回登录",
"You are about to grant %s access to your %s account." : "你将分配 %s 访问权限给你的 %s 账户。",
"Depending on your configuration, this button could also work to trust the domain:" : "取决于配置,此按钮也可用作设置信任域名:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "等待cron进程结束(5秒后重新检测) …",
"Copy URL" : "复制超链接",
"Enable" : "启用",
"{sharee} (conversation)" : "{sharee}(对话)",
diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json
index e2806e58b00..0aa703b9dc4 100644
--- a/core/l10n/zh_CN.json
+++ b/core/l10n/zh_CN.json
@@ -176,6 +176,7 @@
"Note to recipient" : "备注",
"Unshare" : "取消共享",
"Share link" : "共享链接",
+ "Password protect by Talk" : "通过 Talk 保护密码",
"Could not unshare" : "无法共享",
"Shared with you and the group {group} by {owner}" : "{owner} 共享给您及 {group} 分组",
"Shared with you and {circle} by {owner}" : "{owner} 共享给您及 {circle}",
@@ -194,7 +195,6 @@
"Can create" : "可以创建",
"Can change" : "可以修改",
"Can delete" : "可以删除",
- "Password protect by Talk" : "通过 Talk 保护密码",
"Access control" : "访问控制",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} 通过链接共享",
"Error while sharing" : "共享时出错",
@@ -406,7 +406,6 @@
"Back to log in" : "返回登录",
"You are about to grant %s access to your %s account." : "你将分配 %s 访问权限给你的 %s 账户。",
"Depending on your configuration, this button could also work to trust the domain:" : "取决于配置,此按钮也可用作设置信任域名:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "等待cron进程结束(5秒后重新检测) …",
"Copy URL" : "复制超链接",
"Enable" : "启用",
"{sharee} (conversation)" : "{sharee}(对话)",
diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js
index fcbe3615f98..98cd2a24a45 100644
--- a/core/l10n/zh_TW.js
+++ b/core/l10n/zh_TW.js
@@ -162,6 +162,7 @@ OC.L10N.register(
"Note to recipient" : "給收件人的訊息",
"Unshare" : "取消分享",
"Share link" : "分享連結",
+ "Password protect by Talk" : "密碼受 Talk 保護",
"Could not unshare" : "無法取消分享",
"Shared with you and the group {group} by {owner}" : "由 {owner} 分享給您和 {group}",
"Shared with you and {circle} by {owner}" : "{owner} 分享給你和 {circle}",
@@ -180,7 +181,6 @@ OC.L10N.register(
"Can create" : "新增",
"Can change" : "允許更動",
"Can delete" : "允許刪除",
- "Password protect by Talk" : "密碼受 Talk 保護",
"Access control" : "存取控制",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} 分享了連結",
"Error while sharing" : "分享時發生錯誤",
@@ -376,7 +376,6 @@ OC.L10N.register(
"Back to log in" : "回到登入頁面",
"You are about to grant %s access to your %s account." : "您將授予「%s」存取您的 %s 帳戶",
"Depending on your configuration, this button could also work to trust the domain:" : "根據你的設定值,此按鈕也可用於信任以下網域:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "等待 cron 結束(5 秒後重新檢查)…",
"Enable" : "啟用",
"{sharee} (conversation)" : "{sharee} (對話)",
"Please log in before granting %s access to your %s account." : "請登入後再授權 %s 存取你的 %s 帳號",
diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json
index db2fe767e7e..c9ea8a54ef5 100644
--- a/core/l10n/zh_TW.json
+++ b/core/l10n/zh_TW.json
@@ -160,6 +160,7 @@
"Note to recipient" : "給收件人的訊息",
"Unshare" : "取消分享",
"Share link" : "分享連結",
+ "Password protect by Talk" : "密碼受 Talk 保護",
"Could not unshare" : "無法取消分享",
"Shared with you and the group {group} by {owner}" : "由 {owner} 分享給您和 {group}",
"Shared with you and {circle} by {owner}" : "{owner} 分享給你和 {circle}",
@@ -178,7 +179,6 @@
"Can create" : "新增",
"Can change" : "允許更動",
"Can delete" : "允許刪除",
- "Password protect by Talk" : "密碼受 Talk 保護",
"Access control" : "存取控制",
"{shareInitiatorDisplayName} shared via link" : "{shareInitiatorDisplayName} 分享了連結",
"Error while sharing" : "分享時發生錯誤",
@@ -374,7 +374,6 @@
"Back to log in" : "回到登入頁面",
"You are about to grant %s access to your %s account." : "您將授予「%s」存取您的 %s 帳戶",
"Depending on your configuration, this button could also work to trust the domain:" : "根據你的設定值,此按鈕也可用於信任以下網域:",
- "Waiting for cron to finish (checks again in 5 seconds) …" : "等待 cron 結束(5 秒後重新檢查)…",
"Enable" : "啟用",
"{sharee} (conversation)" : "{sharee} (對話)",
"Please log in before granting %s access to your %s account." : "請登入後再授權 %s 存取你的 %s 帳號",
diff --git a/index.php b/index.php
index ba83054ccca..7eabe64c160 100644
--- a/index.php
+++ b/index.php
@@ -78,7 +78,7 @@ try {
print("Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.\n");
print("More details can be found in the webserver log.\n");
- throw $e;
+ throw $ex;
}
OC_Template::printExceptionErrorPage($ex, 500);
}
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 53a7c9d3cf7..6c2463939bd 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -966,6 +966,7 @@ return array(
'OC\\Repair\\NC13\\RepairInvalidPaths' => $baseDir . '/lib/private/Repair/NC13/RepairInvalidPaths.php',
'OC\\Repair\\NC14\\AddPreviewBackgroundCleanupJob' => $baseDir . '/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php',
'OC\\Repair\\NC14\\RepairPendingCronJobs' => $baseDir . '/lib/private/Repair/NC14/RepairPendingCronJobs.php',
+ 'OC\\Repair\\NC15\\SetVcardDatabaseUID' => $baseDir . '/lib/private/Repair/NC15/SetVcardDatabaseUID.php',
'OC\\Repair\\OldGroupMembershipShares' => $baseDir . '/lib/private/Repair/OldGroupMembershipShares.php',
'OC\\Repair\\Owncloud\\DropAccountTermsTable' => $baseDir . '/lib/private/Repair/Owncloud/DropAccountTermsTable.php',
'OC\\Repair\\Owncloud\\SaveAccountsTableData' => $baseDir . '/lib/private/Repair/Owncloud/SaveAccountsTableData.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 6cd39952b1b..847ae43fb65 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -996,6 +996,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Repair\\NC13\\RepairInvalidPaths' => __DIR__ . '/../../..' . '/lib/private/Repair/NC13/RepairInvalidPaths.php',
'OC\\Repair\\NC14\\AddPreviewBackgroundCleanupJob' => __DIR__ . '/../../..' . '/lib/private/Repair/NC14/AddPreviewBackgroundCleanupJob.php',
'OC\\Repair\\NC14\\RepairPendingCronJobs' => __DIR__ . '/../../..' . '/lib/private/Repair/NC14/RepairPendingCronJobs.php',
+ 'OC\\Repair\\NC15\\SetVcardDatabaseUID' => __DIR__ . '/../../..' . '/lib/private/Repair/NC15/SetVcardDatabaseUID.php',
'OC\\Repair\\OldGroupMembershipShares' => __DIR__ . '/../../..' . '/lib/private/Repair/OldGroupMembershipShares.php',
'OC\\Repair\\Owncloud\\DropAccountTermsTable' => __DIR__ . '/../../..' . '/lib/private/Repair/Owncloud/DropAccountTermsTable.php',
'OC\\Repair\\Owncloud\\SaveAccountsTableData' => __DIR__ . '/../../..' . '/lib/private/Repair/Owncloud/SaveAccountsTableData.php',
diff --git a/lib/l10n/lt_LT.js b/lib/l10n/lt_LT.js
index 0b2ecd6b3eb..9079ab0266b 100644
--- a/lib/l10n/lt_LT.js
+++ b/lib/l10n/lt_LT.js
@@ -52,7 +52,7 @@ OC.L10N.register(
"Delete" : "Ištrinti",
"Overview" : "Apžvalga",
"Basic settings" : "Pagrindiniai nustatymai",
- "Sharing" : "Dalijimasis",
+ "Sharing" : "Bendrinimas",
"Security" : "Saugumas",
"Additional settings" : "Papildomi nustatymai",
"Personal info" : "Asmeninė informacija",
diff --git a/lib/l10n/lt_LT.json b/lib/l10n/lt_LT.json
index ba92e39575e..ea36f3667ac 100644
--- a/lib/l10n/lt_LT.json
+++ b/lib/l10n/lt_LT.json
@@ -50,7 +50,7 @@
"Delete" : "Ištrinti",
"Overview" : "Apžvalga",
"Basic settings" : "Pagrindiniai nustatymai",
- "Sharing" : "Dalijimasis",
+ "Sharing" : "Bendrinimas",
"Security" : "Saugumas",
"Additional settings" : "Papildomi nustatymai",
"Personal info" : "Asmeninė informacija",
diff --git a/lib/private/Mail/Mailer.php b/lib/private/Mail/Mailer.php
index 6f148bc0c6e..df23b669365 100644
--- a/lib/private/Mail/Mailer.php
+++ b/lib/private/Mail/Mailer.php
@@ -274,7 +274,11 @@ class Mailer implements IMailer {
$binaryPath = '/var/qmail/bin/sendmail';
break;
default:
- $binaryPath = '/usr/sbin/sendmail';
+ $sendmail = \OC_Helper::findBinaryPath('sendmail');
+ if ($sendmail === null) {
+ $sendmail = '/usr/sbin/sendmail';
+ }
+ $binaryPath = $sendmail;
break;
}
diff --git a/lib/private/Repair.php b/lib/private/Repair.php
index ad9662ca1d7..01724fd6a38 100644
--- a/lib/private/Repair.php
+++ b/lib/private/Repair.php
@@ -39,6 +39,7 @@ use OC\Repair\NC11\FixMountStorages;
use OC\Repair\NC13\AddLogRotateJob;
use OC\Repair\NC14\AddPreviewBackgroundCleanupJob;
use OC\Repair\NC14\RepairPendingCronJobs;
+use OC\Repair\NC15\SetVcardDatabaseUID;
use OC\Repair\OldGroupMembershipShares;
use OC\Repair\Owncloud\DropAccountTermsTable;
use OC\Repair\Owncloud\SaveAccountsTableData;
@@ -139,6 +140,7 @@ class Repair implements IOutput{
new AddPreviewBackgroundCleanupJob(\OC::$server->getJobList()),
new AddCleanupUpdaterBackupsJob(\OC::$server->getJobList()),
new RepairPendingCronJobs(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig()),
+ new SetVcardDatabaseUID(\OC::$server->getDatabaseConnection(), \OC::$server->getConfig()),
];
}
diff --git a/lib/private/Repair/NC15/SetVcardDatabaseUID.php b/lib/private/Repair/NC15/SetVcardDatabaseUID.php
new file mode 100644
index 00000000000..ccf6c47cbc8
--- /dev/null
+++ b/lib/private/Repair/NC15/SetVcardDatabaseUID.php
@@ -0,0 +1,137 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @author John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @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 OC\Repair\NC15;
+
+use OCP\IConfig;
+use OCP\IDBConnection;
+use OCP\Migration\IOutput;
+use OCP\Migration\IRepairStep;
+use Sabre\VObject\Reader;
+
+class SetVcardDatabaseUID implements IRepairStep {
+ const MAX_ROWS = 1000;
+
+ /** @var IDBConnection */
+ private $connection;
+
+ /** @var IConfig */
+ private $config;
+
+ private $updateQuery;
+
+ public function __construct(IDBConnection $connection, IConfig $config) {
+ $this->connection = $connection;
+ $this->config = $config;
+ }
+
+ public function getName() {
+ return 'Extract the vcard uid and store it in the db';
+ }
+
+ /**
+ * @return \Generator
+ * @suppress SqlInjectionChecker
+ */
+ private function getInvalidEntries() {
+ $builder = $this->connection->getQueryBuilder();
+
+ $builder->select('id', 'carddata')
+ ->from('cards')
+ ->where($builder->expr()->isNull('uid'))
+ ->setMaxResults(self::MAX_ROWS);
+
+ do {
+ $result = $builder->execute();
+ $rows = $result->fetchAll();
+ foreach ($rows as $row) {
+ yield $row;
+ }
+ $result->closeCursor();
+ } while (count($rows) > 0);
+ }
+
+ /**
+ * Extract UID from vcard
+ *
+ * @param string $cardData the vcard raw data
+ * @return string the uid or empty if none
+ */
+ private function getUID(string $cardData): string {
+ $vCard = Reader::read($cardData);
+ if ($vCard->UID) {
+ $uid = $vCard->UID->getValue();
+ return $uid;
+ }
+
+ return '';
+ }
+
+ /**
+ * @param int $id
+ * @param string $uid
+ */
+ private function update(int $id, string $uid) {
+ if (!$this->updateQuery) {
+ $builder = $this->connection->getQueryBuilder();
+
+ $this->updateQuery = $builder->update('cards')
+ ->set('uid', $builder->createParameter('uid'))
+ ->where($builder->expr()->eq('id', $builder->createParameter('id')));
+ }
+
+ $this->updateQuery->setParameter('id', $id);
+ $this->updateQuery->setParameter('uid', $uid);
+
+ $this->updateQuery->execute();
+ }
+
+ private function repair(): int {
+ $this->connection->beginTransaction();
+ $entries = $this->getInvalidEntries();
+ $count = 0;
+ foreach ($entries as $entry) {
+ $count++;
+ $uid = $this->getUID($entry['carddata']);
+ $this->update($entry['id'], $uid);
+ }
+ $this->connection->commit();
+
+ return $count;
+ }
+
+ private function shouldRun() {
+ $versionFromBeforeUpdate = $this->config->getSystemValue('version', '0.0.0.0');
+
+ // was added to 15.0.0.2
+ return version_compare($versionFromBeforeUpdate, '15.0.0.2', '<=');
+ }
+
+ public function run(IOutput $output) {
+ if ($this->shouldRun()) {
+ $count = $this->repair();
+
+ $output->info('Fixed ' . $count . ' vcards');
+ }
+ }
+}
diff --git a/lib/private/Settings/Admin/Sharing.php b/lib/private/Settings/Admin/Sharing.php
index dfc0b11478b..ee6a64c85bf 100644
--- a/lib/private/Settings/Admin/Sharing.php
+++ b/lib/private/Settings/Admin/Sharing.php
@@ -32,6 +32,7 @@ use OCP\Constants;
use OCP\IConfig;
use OCP\IL10N;
use OCP\Settings\ISettings;
+use OCP\Share\IManager;
use OCP\Util;
class Sharing implements ISettings {
@@ -41,12 +42,16 @@ class Sharing implements ISettings {
/** @var IL10N */
private $l;
+ /** @var IManager */
+ private $shareManager;
+
/**
* @param IConfig $config
*/
- public function __construct(IConfig $config, IL10N $l) {
+ public function __construct(IConfig $config, IL10N $l, IManager $shareManager) {
$this->config = $config;
$this->l = $l;
+ $this->shareManager = $shareManager;
}
/**
@@ -65,7 +70,7 @@ class Sharing implements ISettings {
'allowResharing' => $this->config->getAppValue('core', 'shareapi_allow_resharing', 'yes'),
'allowShareDialogUserEnumeration' => $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes'),
'enforceLinkPassword' => Util::isPublicLinkPasswordRequired(),
- 'onlyShareWithGroupMembers' => Share::shareWithGroupMembersOnly(),
+ 'onlyShareWithGroupMembers' => $this->shareManager->shareWithGroupMembersOnly(),
'shareAPIEnabled' => $this->config->getAppValue('core', 'shareapi_enabled', 'yes'),
'shareDefaultExpireDateSet' => $this->config->getAppValue('core', 'shareapi_default_expire_date', 'no'),
'shareExpireAfterNDays' => $this->config->getAppValue('core', 'shareapi_expire_after_n_days', '7'),
diff --git a/lib/private/Share/Share.php b/lib/private/Share/Share.php
index 36912dcafe3..76a6a1baeca 100644
--- a/lib/private/Share/Share.php
+++ b/lib/private/Share/Share.php
@@ -341,7 +341,7 @@ class Share extends Constants {
}
$uidOwner = \OC_User::getUser();
- $shareWithinGroupOnly = self::shareWithGroupMembersOnly();
+ $shareWithinGroupOnly = \OC::$server->getConfig()->getAppValue('core', 'shareapi_only_share_with_group_members', 'no') === 'yes';
if (is_null($itemSourceName)) {
$itemSourceName = $itemSource;
@@ -2055,15 +2055,6 @@ class Share extends Constants {
}
/**
- * check if user can only share with group members
- * @return bool
- */
- public static function shareWithGroupMembersOnly() {
- $value = \OC::$server->getConfig()->getAppValue('core', 'shareapi_only_share_with_group_members', 'no');
- return $value === 'yes';
- }
-
- /**
* @return bool
*/
public static function isDefaultExpireDateEnabled() {
@@ -2104,15 +2095,6 @@ class Share extends Constants {
}
/**
- * @param IConfig $config
- * @return bool
- */
- public static function enforcePassword(IConfig $config) {
- $enforcePassword = $config->getAppValue('core', 'shareapi_enforce_links_password', 'no');
- return $enforcePassword === 'yes';
- }
-
- /**
* @param string $password
* @throws \Exception
*/
diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php
index 3bdbc69e897..a2388012fe7 100644
--- a/lib/private/Share20/DefaultShareProvider.php
+++ b/lib/private/Share20/DefaultShareProvider.php
@@ -156,6 +156,8 @@ class DefaultShareProvider implements IShareProvider {
$qb->setValue('password', $qb->createNamedParameter($share->getPassword()));
}
+ $qb->setValue('password_by_talk', $qb->createNamedParameter($share->getSendPasswordByTalk(), IQueryBuilder::PARAM_BOOL));
+
//If an expiration date is set store it
if ($share->getExpirationDate() !== null) {
$qb->setValue('expiration', $qb->createNamedParameter($share->getExpirationDate(), 'datetime'));
@@ -293,6 +295,7 @@ class DefaultShareProvider implements IShareProvider {
$qb->update('share')
->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
->set('password', $qb->createNamedParameter($share->getPassword()))
+ ->set('password_by_talk', $qb->createNamedParameter($share->getSendPasswordByTalk(), IQueryBuilder::PARAM_BOOL))
->set('uid_owner', $qb->createNamedParameter($share->getShareOwner()))
->set('uid_initiator', $qb->createNamedParameter($share->getSharedBy()))
->set('permissions', $qb->createNamedParameter($share->getPermissions()))
@@ -940,6 +943,7 @@ class DefaultShareProvider implements IShareProvider {
$share->setSharedWith($data['share_with']);
} else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
$share->setPassword($data['password']);
+ $share->setSendPasswordByTalk((bool)$data['password_by_talk']);
$share->setToken($data['token']);
}
diff --git a/settings/l10n/lt_LT.js b/settings/l10n/lt_LT.js
index 37699cdb637..4d71cbaf4bb 100644
--- a/settings/l10n/lt_LT.js
+++ b/settings/l10n/lt_LT.js
@@ -61,44 +61,60 @@ OC.L10N.register(
"Error while deleting the token" : "Klaida, ištrinant prieigos raktą",
"Valid until {date}" : "Galioja iki {date}",
"Delete" : "Ištrinti",
+ "Private" : "Privatu",
"Only visible to local users" : "Matoma tik vietiniams naudotojams",
"Only visible to you" : "Matoma tik jums",
+ "Contacts" : "Kontaktai",
"Visible to local users and to trusted servers" : "Matoma tik vietiniams naudotojams ir patikimiems serveriams",
- "Public" : "Viešai",
+ "Public" : "Vieša",
+ "Will be synced to a global and public address book" : "Bus sinchronizuota į visuotinę ir viešą adresų knygą",
"Very weak password" : "Labai silpnas slaptažodis",
"Weak password" : "Silpnas slaptažodis",
"So-so password" : "Neblogas slaptažodis",
"Good password" : "Geras slaptažodis",
"Strong password" : "Stiprus slaptažodis",
"Select a profile picture" : "Pasirinkite profilio paveikslą",
+ "Week starts on {fdow}" : "Savaitės pradžia yra {fdow}",
"Groups" : "Grupės",
"Official" : "Oficiali",
"Visit website" : "Aplankyti svetainę",
"User documentation" : "Naudotojo dokumentacija",
"Enable" : "Įjungti",
- "Email" : "El. Paštas",
+ "Delete user" : "Ištrinti naudotoją",
+ "Disable user" : "Išjungti naudotoją",
+ "Enable user" : "Įjungti naudotoją",
+ "Email" : "El. paštas",
"Language" : "Kalba",
"Unlimited" : "Neribotai",
"Default quota" : "Numatytasis leidžiamas duomenų kiekis",
+ "Default language" : "Numatytoji kalba",
+ "All languages" : "Visos kalbos",
"Your apps" : "Jūsų programėlės",
"Disabled apps" : "Išjungtos programėlės",
"Updates" : "Atnaujinimai",
"App bundles" : "Programėlių rinkiniai",
+ "Please confirm the group removal " : "Patvirtinkite grupės pašalinimą",
+ "Remove group" : "Šalinti grupę",
"Add group" : "Pridėti grupę",
+ "New user" : "Naujas naudotojas",
+ "Documentation" : "Dokumentacija",
"Forum" : "Forumas",
- "None" : "Nieko",
+ "None" : "Nėra",
"Login" : "Prisijungti",
"SSL/TLS" : "SSL/TLS",
"STARTTLS" : "STARTTLS",
"Email server" : "El. pašto serveris",
"Open documentation" : "Atverti dokumentaciją",
+ "Send mode" : "Siuntimo veiksena",
"Encryption" : "Šifravimas",
"Authentication required" : "Reikalingas tapatybės nustatymas",
"Server address" : "Serverio adresas",
"Port" : "Prievadas",
"SMTP Username" : "SMTP naudotojo vardas",
"SMTP Password" : "SMTP slaptažodis",
- "Security & setup warnings" : "Saugos ir diegimo perspėjimai",
+ "Test email settings" : "Išbandyti el. pašto nustatymus",
+ "Send email" : "Siųsti el. paštą",
+ "Security & setup warnings" : "Saugumo ir sąrankos įspėjimai",
"Version" : "Versija",
"Server-side encryption" : "Šifravimas serveryje",
"Be aware that encryption always increases the file size." : "Turėkite omenyje, kad šifravimas visada padidina failų dydį.",
@@ -113,27 +129,45 @@ OC.L10N.register(
"Last job execution ran %s. Something seems wrong." : "Paskutinės užduoties vykdymas vyko %s. Atrodo, kad kažkas nutiko.",
"Background job didn’t run yet!" : "Foninės užduotys kol kas nebuvo vykdomos!",
"Execute one task with each page loaded" : "Įvykdyti vieną užduotį su kiekvieno puslapio įkėlimu",
- "Sharing" : "Dalijimasis",
+ "Sharing" : "Bendrinimas",
+ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Būdami administratoriumi, galite reguliuoti bendrinimo elgseną. Išsamesnei informacijai, žiūrėkite dokumentaciją.",
"Allow apps to use the Share API" : "Leidžia programoms naudoti Share API",
+ "Allow users to share via link" : "Leisti naudotojams bendrinti per nuorodą",
"Allow public uploads" : "Leisti viešus įkėlimus",
+ "Always ask for a password" : "Visada prašyti slaptažodžio",
"days" : "dienos",
"Allow resharing" : "Leisti dalintis",
+ "Personal" : "Asmeniniai",
+ "Administration" : "Administravimas",
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Sukurta {communityopen}Nextcloud bendruomenės{linkclose}, {githubopen}pirminis kodas{linkclose} yra licencijuotas pagal {licenseopen}AGPL{linkclose}.",
+ "Follow us on Google+" : "Sekite mus Google+",
+ "Like our Facebook page" : "Spauskite \"Patinka\" mūsų Facebook puslapyje",
+ "Follow us on Twitter" : "Sekite mus Twitter",
+ "Follow us on Mastodon" : "Sekite mus Mastodon",
+ "Check out our blog" : "Peržvelkite mūsų tinklaraštį",
+ "Subscribe to our newsletter" : "Prenumeruokite mūsų naujienlaiškį",
"Profile picture" : "Profilio paveikslas",
"Upload new" : "Įkelti naują",
+ "Select from Files" : "Pasirinkti iš failų",
"Remove image" : "Šalinti paveikslą",
"png or jpg, max. 20 MB" : "png arba jpg, daugiausiai 20 MB",
"Cancel" : "Atsisakyti",
+ "Details" : "Išsamiau",
+ "You are a member of the following groups:" : "Jūs esate šių grupių narys:",
"You are using <strong>%s</strong>" : "Jūs naudojate <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Jūs naudojate <strong>%1$s</strong> iš <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Pilnas vardas",
"Your email address" : "Jūsų el. pašto adresas",
"No email address set" : "Nenustatytas joks el. pašto adresas",
+ "For password reset and notifications" : "Skirtas slaptažodžio atstatymui ir pranešimams",
"Phone number" : "Telefono numeris",
"Your phone number" : "Jūsų telefono numeris",
"Address" : "Adresas",
+ "Your postal address" : "Jūsų adresas",
"Website" : "Svetainė",
"Twitter" : "Twitter",
"Help translate" : "Padėkite išversti",
+ "Locale" : "Lokalė",
"Password" : "Slaptažodis",
"Current password" : "Dabartinis slaptažodis",
"New password" : "Naujas slaptažodis",
diff --git a/settings/l10n/lt_LT.json b/settings/l10n/lt_LT.json
index 23992f776e4..b8d1ec98012 100644
--- a/settings/l10n/lt_LT.json
+++ b/settings/l10n/lt_LT.json
@@ -59,44 +59,60 @@
"Error while deleting the token" : "Klaida, ištrinant prieigos raktą",
"Valid until {date}" : "Galioja iki {date}",
"Delete" : "Ištrinti",
+ "Private" : "Privatu",
"Only visible to local users" : "Matoma tik vietiniams naudotojams",
"Only visible to you" : "Matoma tik jums",
+ "Contacts" : "Kontaktai",
"Visible to local users and to trusted servers" : "Matoma tik vietiniams naudotojams ir patikimiems serveriams",
- "Public" : "Viešai",
+ "Public" : "Vieša",
+ "Will be synced to a global and public address book" : "Bus sinchronizuota į visuotinę ir viešą adresų knygą",
"Very weak password" : "Labai silpnas slaptažodis",
"Weak password" : "Silpnas slaptažodis",
"So-so password" : "Neblogas slaptažodis",
"Good password" : "Geras slaptažodis",
"Strong password" : "Stiprus slaptažodis",
"Select a profile picture" : "Pasirinkite profilio paveikslą",
+ "Week starts on {fdow}" : "Savaitės pradžia yra {fdow}",
"Groups" : "Grupės",
"Official" : "Oficiali",
"Visit website" : "Aplankyti svetainę",
"User documentation" : "Naudotojo dokumentacija",
"Enable" : "Įjungti",
- "Email" : "El. Paštas",
+ "Delete user" : "Ištrinti naudotoją",
+ "Disable user" : "Išjungti naudotoją",
+ "Enable user" : "Įjungti naudotoją",
+ "Email" : "El. paštas",
"Language" : "Kalba",
"Unlimited" : "Neribotai",
"Default quota" : "Numatytasis leidžiamas duomenų kiekis",
+ "Default language" : "Numatytoji kalba",
+ "All languages" : "Visos kalbos",
"Your apps" : "Jūsų programėlės",
"Disabled apps" : "Išjungtos programėlės",
"Updates" : "Atnaujinimai",
"App bundles" : "Programėlių rinkiniai",
+ "Please confirm the group removal " : "Patvirtinkite grupės pašalinimą",
+ "Remove group" : "Šalinti grupę",
"Add group" : "Pridėti grupę",
+ "New user" : "Naujas naudotojas",
+ "Documentation" : "Dokumentacija",
"Forum" : "Forumas",
- "None" : "Nieko",
+ "None" : "Nėra",
"Login" : "Prisijungti",
"SSL/TLS" : "SSL/TLS",
"STARTTLS" : "STARTTLS",
"Email server" : "El. pašto serveris",
"Open documentation" : "Atverti dokumentaciją",
+ "Send mode" : "Siuntimo veiksena",
"Encryption" : "Šifravimas",
"Authentication required" : "Reikalingas tapatybės nustatymas",
"Server address" : "Serverio adresas",
"Port" : "Prievadas",
"SMTP Username" : "SMTP naudotojo vardas",
"SMTP Password" : "SMTP slaptažodis",
- "Security & setup warnings" : "Saugos ir diegimo perspėjimai",
+ "Test email settings" : "Išbandyti el. pašto nustatymus",
+ "Send email" : "Siųsti el. paštą",
+ "Security & setup warnings" : "Saugumo ir sąrankos įspėjimai",
"Version" : "Versija",
"Server-side encryption" : "Šifravimas serveryje",
"Be aware that encryption always increases the file size." : "Turėkite omenyje, kad šifravimas visada padidina failų dydį.",
@@ -111,27 +127,45 @@
"Last job execution ran %s. Something seems wrong." : "Paskutinės užduoties vykdymas vyko %s. Atrodo, kad kažkas nutiko.",
"Background job didn’t run yet!" : "Foninės užduotys kol kas nebuvo vykdomos!",
"Execute one task with each page loaded" : "Įvykdyti vieną užduotį su kiekvieno puslapio įkėlimu",
- "Sharing" : "Dalijimasis",
+ "Sharing" : "Bendrinimas",
+ "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Būdami administratoriumi, galite reguliuoti bendrinimo elgseną. Išsamesnei informacijai, žiūrėkite dokumentaciją.",
"Allow apps to use the Share API" : "Leidžia programoms naudoti Share API",
+ "Allow users to share via link" : "Leisti naudotojams bendrinti per nuorodą",
"Allow public uploads" : "Leisti viešus įkėlimus",
+ "Always ask for a password" : "Visada prašyti slaptažodžio",
"days" : "dienos",
"Allow resharing" : "Leisti dalintis",
+ "Personal" : "Asmeniniai",
+ "Administration" : "Administravimas",
"Developed by the {communityopen}Nextcloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}AGPL{linkclose}." : "Sukurta {communityopen}Nextcloud bendruomenės{linkclose}, {githubopen}pirminis kodas{linkclose} yra licencijuotas pagal {licenseopen}AGPL{linkclose}.",
+ "Follow us on Google+" : "Sekite mus Google+",
+ "Like our Facebook page" : "Spauskite \"Patinka\" mūsų Facebook puslapyje",
+ "Follow us on Twitter" : "Sekite mus Twitter",
+ "Follow us on Mastodon" : "Sekite mus Mastodon",
+ "Check out our blog" : "Peržvelkite mūsų tinklaraštį",
+ "Subscribe to our newsletter" : "Prenumeruokite mūsų naujienlaiškį",
"Profile picture" : "Profilio paveikslas",
"Upload new" : "Įkelti naują",
+ "Select from Files" : "Pasirinkti iš failų",
"Remove image" : "Šalinti paveikslą",
"png or jpg, max. 20 MB" : "png arba jpg, daugiausiai 20 MB",
"Cancel" : "Atsisakyti",
+ "Details" : "Išsamiau",
+ "You are a member of the following groups:" : "Jūs esate šių grupių narys:",
"You are using <strong>%s</strong>" : "Jūs naudojate <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Jūs naudojate <strong>%1$s</strong> iš <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Pilnas vardas",
"Your email address" : "Jūsų el. pašto adresas",
"No email address set" : "Nenustatytas joks el. pašto adresas",
+ "For password reset and notifications" : "Skirtas slaptažodžio atstatymui ir pranešimams",
"Phone number" : "Telefono numeris",
"Your phone number" : "Jūsų telefono numeris",
"Address" : "Adresas",
+ "Your postal address" : "Jūsų adresas",
"Website" : "Svetainė",
"Twitter" : "Twitter",
"Help translate" : "Padėkite išversti",
+ "Locale" : "Lokalė",
"Password" : "Slaptažodis",
"Current password" : "Dabartinis slaptažodis",
"New password" : "Naujas slaptažodis",
diff --git a/settings/l10n/nl.js b/settings/l10n/nl.js
index a791efcf20f..5d687d1193a 100644
--- a/settings/l10n/nl.js
+++ b/settings/l10n/nl.js
@@ -95,7 +95,7 @@ OC.L10N.register(
"Contacts" : "Contactpersonen",
"Visible to local users and to trusted servers" : "Alleen zichtbaar voor lokale gebruikers en vertrouwde servers",
"Public" : "Openbaar",
- "Will be synced to a global and public address book" : "Wordt gesyncht met een globaal en openbaar adresboek",
+ "Will be synced to a global and public address book" : "Wordt gesynct met een globaal en openbaar adresboek",
"Verify" : "Verifiëren",
"Verifying …" : "Verifiëren...",
"Very weak password" : "Zeer zwak wachtwoord",
diff --git a/settings/l10n/nl.json b/settings/l10n/nl.json
index b2c1575dc63..fa47373a0c1 100644
--- a/settings/l10n/nl.json
+++ b/settings/l10n/nl.json
@@ -93,7 +93,7 @@
"Contacts" : "Contactpersonen",
"Visible to local users and to trusted servers" : "Alleen zichtbaar voor lokale gebruikers en vertrouwde servers",
"Public" : "Openbaar",
- "Will be synced to a global and public address book" : "Wordt gesyncht met een globaal en openbaar adresboek",
+ "Will be synced to a global and public address book" : "Wordt gesynct met een globaal en openbaar adresboek",
"Verify" : "Verifiëren",
"Verifying …" : "Verifiëren...",
"Very weak password" : "Zeer zwak wachtwoord",
diff --git a/settings/l10n/pl.js b/settings/l10n/pl.js
index b67418d8a24..0de753c1fe0 100644
--- a/settings/l10n/pl.js
+++ b/settings/l10n/pl.js
@@ -23,6 +23,7 @@ OC.L10N.register(
"Backend doesn't support password change, but the user's encryption key was updated." : "Backend nie wspiera zmiany hasła, ale klucz szyfrujący użytkownika został zaktualizowany.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalacji i aktualizacji aplikacji za pośrednictwem sklepu z aplikacjami lub udziałem Stowarzyszonej Chmury",
"Federated Cloud Sharing" : "Dzielenie się ze Stowarzyszoną Chmurą",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "Używasz przestarzałej wersji cURL %1$s wersja (%2$s). Zaktualizuj system operacyjny lub funkcje takie jak %3$s nie będą działać prawidłowo.",
"Invalid SMTP password." : "Błędne hasło SMTP.",
"Email setting test" : "Test ustawień e-mail",
"Well done, %s!" : "Dobra robota, %s!",
@@ -109,7 +110,10 @@ OC.L10N.register(
"Groups" : "Grupy",
"Group list is empty" : "Lista grup jest pusta",
"Unable to retrieve the group list" : "Nie można pobrać listy grup",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Uwierzytelnianie dwuskładnikowe może być wymuszane dla wszystkich\tużytkowników i określonych grup. Jeśli nie mają skonfigurowanego dostawcy logowania dwuskładnikowego, nie będą mogli zalogować się do systemu.",
+ "Enforce two-factor authentication" : "Wymuś uwierzytelnianie dwuskładnikowe",
"Limit to groups" : "Ogranicz do group",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "Uwierzytelnianie dwuskładnikowe nie jest wymuszane dla\tczłonków następujących grup.",
"Official" : "Oficjalny",
"No results" : "Brak wyników",
"Visit website" : "Odwiedź stronę",
@@ -198,6 +202,7 @@ OC.L10N.register(
"There are some errors regarding your setup." : "Znaleziono błędy w Twojej konfiguracji.",
"There are some warnings regarding your setup." : "Znaleziono zastrzeżenia w Twojej konfiguracji.",
"Checking for system and security issues." : "Sprawdzanie błędów systemu i bezpieczeństwa.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Sprawdź dokładnie <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">instrukcję instalacji ↗</a>, i sprawdź ewentualne błędy lub ostrzeżenia w <a href=\"%2$s\">dzienniku</a>.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Sprawdź bezpieczeństwo swojego serwera Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">naszym skanerem bezpieczeństwa ↗</a>.",
"Version" : "Wersja",
"Two-Factor Authentication" : "Weryfikacja dwuetapowa",
@@ -266,6 +271,7 @@ OC.L10N.register(
"Details" : "Szczegóły",
"You are a member of the following groups:" : "Należysz do następujących grup:",
"You are using <strong>%s</strong>" : "Używasz <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Używasz <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Pełna nazwa",
"No display name set" : "Brak nazwa wyświetlanej",
"Your email address" : "Twój adres e-mail",
diff --git a/settings/l10n/pl.json b/settings/l10n/pl.json
index 4fa249741c7..f304458c831 100644
--- a/settings/l10n/pl.json
+++ b/settings/l10n/pl.json
@@ -21,6 +21,7 @@
"Backend doesn't support password change, but the user's encryption key was updated." : "Backend nie wspiera zmiany hasła, ale klucz szyfrujący użytkownika został zaktualizowany.",
"installing and updating apps via the app store or Federated Cloud Sharing" : "instalacji i aktualizacji aplikacji za pośrednictwem sklepu z aplikacjami lub udziałem Stowarzyszonej Chmury",
"Federated Cloud Sharing" : "Dzielenie się ze Stowarzyszoną Chmurą",
+ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "Używasz przestarzałej wersji cURL %1$s wersja (%2$s). Zaktualizuj system operacyjny lub funkcje takie jak %3$s nie będą działać prawidłowo.",
"Invalid SMTP password." : "Błędne hasło SMTP.",
"Email setting test" : "Test ustawień e-mail",
"Well done, %s!" : "Dobra robota, %s!",
@@ -107,7 +108,10 @@
"Groups" : "Grupy",
"Group list is empty" : "Lista grup jest pusta",
"Unable to retrieve the group list" : "Nie można pobrać listy grup",
+ "Two-factor authentication can be enforced for all\tusers and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "Uwierzytelnianie dwuskładnikowe może być wymuszane dla wszystkich\tużytkowników i określonych grup. Jeśli nie mają skonfigurowanego dostawcy logowania dwuskładnikowego, nie będą mogli zalogować się do systemu.",
+ "Enforce two-factor authentication" : "Wymuś uwierzytelnianie dwuskładnikowe",
"Limit to groups" : "Ogranicz do group",
+ "Two-factor authentication is not enforced for\tmembers of the following groups." : "Uwierzytelnianie dwuskładnikowe nie jest wymuszane dla\tczłonków następujących grup.",
"Official" : "Oficjalny",
"No results" : "Brak wyników",
"Visit website" : "Odwiedź stronę",
@@ -196,6 +200,7 @@
"There are some errors regarding your setup." : "Znaleziono błędy w Twojej konfiguracji.",
"There are some warnings regarding your setup." : "Znaleziono zastrzeżenia w Twojej konfiguracji.",
"Checking for system and security issues." : "Sprawdzanie błędów systemu i bezpieczeństwa.",
+ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Sprawdź dokładnie <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">instrukcję instalacji ↗</a>, i sprawdź ewentualne błędy lub ostrzeżenia w <a href=\"%2$s\">dzienniku</a>.",
"Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Sprawdź bezpieczeństwo swojego serwera Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">naszym skanerem bezpieczeństwa ↗</a>.",
"Version" : "Wersja",
"Two-Factor Authentication" : "Weryfikacja dwuetapowa",
@@ -264,6 +269,7 @@
"Details" : "Szczegóły",
"You are a member of the following groups:" : "Należysz do następujących grup:",
"You are using <strong>%s</strong>" : "Używasz <strong>%s</strong>",
+ "You are using <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)" : "Używasz <strong>%1$s</strong> of <strong>%2$s</strong> (<strong>%3$s %%</strong>)",
"Full name" : "Pełna nazwa",
"No display name set" : "Brak nazwa wyświetlanej",
"Your email address" : "Twój adres e-mail",
diff --git a/tests/acceptance/features/app-files.feature b/tests/acceptance/features/app-files.feature
index 70e085ca665..33bed4a3ef2 100644
--- a/tests/acceptance/features/app-files.feature
+++ b/tests/acceptance/features/app-files.feature
@@ -218,6 +218,10 @@ Feature: app-files
When I protect the shared link with the password "abcdef"
Then I see that the working icon for password protect is shown
And I see that the working icon for password protect is eventually not shown
+ And I see that the link share is password protected
+ # As Talk is not enabled in the acceptance tests of the server the checkbox
+ # is never shown.
+ And I see that the checkbox to protect the password of the link share by Talk is not shown
Scenario: access a shared link protected by password with a valid password
Given I act as John
diff --git a/tests/acceptance/features/bootstrap/FilesAppContext.php b/tests/acceptance/features/bootstrap/FilesAppContext.php
index 459028813b5..d9ac6431716 100644
--- a/tests/acceptance/features/bootstrap/FilesAppContext.php
+++ b/tests/acceptance/features/bootstrap/FilesAppContext.php
@@ -279,6 +279,15 @@ class FilesAppContext implements Context, ActorAwareInterface {
/**
* @return Locator
*/
+ public static function passwordProtectCheckboxInput() {
+ return Locator::forThe()->checkbox("Password protect")->
+ descendantOf(self::shareLinkMenu())->
+ describedAs("Password protect checkbox input in the details view in Files app");
+ }
+
+ /**
+ * @return Locator
+ */
public static function passwordProtectField() {
return Locator::forThe()->css(".linkPassText")->descendantOf(self::shareLinkMenu())->
describedAs("Password protect field in the details view in Files app");
@@ -293,6 +302,27 @@ class FilesAppContext implements Context, ActorAwareInterface {
}
/**
+ * @return Locator
+ */
+ public static function passwordProtectByTalkCheckbox() {
+ // forThe()->checkbox("Password protect by Talk") can not be used here;
+ // that would return the checkbox itself, but the element that the user
+ // interacts with is the label.
+ return Locator::forThe()->xpath("//label[normalize-space() = 'Password protect by Talk']")->
+ descendantOf(self::shareLinkMenu())->
+ describedAs("Password protect by Talk checkbox in the details view in Files app");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function passwordProtectByTalkCheckboxInput() {
+ return Locator::forThe()->checkbox("Password protect by Talk")->
+ descendantOf(self::shareLinkMenu())->
+ describedAs("Password protect by Talk checkbox input in the details view in Files app");
+ }
+
+ /**
* @Given I close the details view
*/
public function iCloseTheDetailsView() {
@@ -320,6 +350,14 @@ class FilesAppContext implements Context, ActorAwareInterface {
$this->actor->find(FileListContext::shareActionForFile(self::currentSectionMainView(), $fileName), 10)->click();
$this->actor->find(self::shareLinkAddNewButton(), 5)->click();
+
+ // Wait until the menu was opened after the share creation to continue.
+ if (!WaitFor::elementToBeEventuallyShown(
+ $this->actor,
+ self::shareLinkMenu(),
+ $timeout = 5 * $this->actor->getFindTimeoutMultiplier())) {
+ PHPUnit_Framework_Assert::fail("The share link menu is not open yet after $timeout seconds");
+ }
}
/**
@@ -395,6 +433,28 @@ class FilesAppContext implements Context, ActorAwareInterface {
}
/**
+ * @When I set the password of the shared link as protected by Talk
+ */
+ public function iSetThePasswordOfTheSharedLinkAsProtectedByTalk() {
+ $this->showShareLinkMenuIfNeeded();
+
+ $this->iSeeThatThePasswordOfTheLinkShareIsNotProtectedByTalk();
+
+ $this->actor->find(self::passwordProtectByTalkCheckbox(), 2)->click();
+ }
+
+ /**
+ * @When I set the password of the shared link as not protected by Talk
+ */
+ public function iSetThePasswordOfTheSharedLinkAsNotProtectedByTalk() {
+ $this->showShareLinkMenuIfNeeded();
+
+ $this->iSeeThatThePasswordOfTheLinkShareIsProtectedByTalk();
+
+ $this->actor->find(self::passwordProtectByTalkCheckbox(), 2)->click();
+ }
+
+ /**
* @Then I see that the current page is the Files app
*/
public function iSeeThatTheCurrentPageIsTheFilesApp() {
@@ -538,6 +598,47 @@ class FilesAppContext implements Context, ActorAwareInterface {
}
/**
+ * @Then I see that the link share is password protected
+ */
+ public function iSeeThatTheLinkShareIsPasswordProtected() {
+ $this->showShareLinkMenuIfNeeded();
+
+ PHPUnit_Framework_Assert::assertTrue($this->actor->find(self::passwordProtectCheckboxInput(), 10)->isChecked(), "Password protect checkbox is checked");
+ PHPUnit_Framework_Assert::assertTrue($this->actor->find(self::passwordProtectField(), 10)->isVisible(), "Password protect field is visible");
+ }
+
+ /**
+ * @Then I see that the password of the link share is protected by Talk
+ */
+ public function iSeeThatThePasswordOfTheLinkShareIsProtectedByTalk() {
+ $this->showShareLinkMenuIfNeeded();
+
+ PHPUnit_Framework_Assert::assertTrue($this->actor->find(self::passwordProtectByTalkCheckboxInput(), 10)->isChecked());
+ }
+
+ /**
+ * @Then I see that the password of the link share is not protected by Talk
+ */
+ public function iSeeThatThePasswordOfTheLinkShareIsNotProtectedByTalk() {
+ $this->showShareLinkMenuIfNeeded();
+
+ PHPUnit_Framework_Assert::assertFalse($this->actor->find(self::passwordProtectByTalkCheckboxInput(), 10)->isChecked());
+ }
+
+ /**
+ * @Then I see that the checkbox to protect the password of the link share by Talk is not shown
+ */
+ public function iSeeThatTheCheckboxToProtectThePasswordOfTheLinkShareByTalkIsNotShown() {
+ $this->showShareLinkMenuIfNeeded();
+
+ try {
+ PHPUnit_Framework_Assert::assertFalse(
+ $this->actor->find(self::passwordProtectByTalkCheckbox())->isVisible());
+ } catch (NoSuchElementException $exception) {
+ }
+ }
+
+ /**
* @Given I share the link for :fileName protected by the password :password
*/
public function iShareTheLinkForProtectedByThePassword($fileName, $password) {
diff --git a/tests/lib/Mail/MailerTest.php b/tests/lib/Mail/MailerTest.php
index d724cd630d3..ddae38ff54d 100644
--- a/tests/lib/Mail/MailerTest.php
+++ b/tests/lib/Mail/MailerTest.php
@@ -55,7 +55,13 @@ class MailerTest extends TestCase {
->with('mail_smtpmode', 'smtp')
->will($this->returnValue('sendmail'));
- $this->assertEquals(new \Swift_SendmailTransport('/usr/sbin/sendmail -bs'), self::invokePrivate($this->mailer, 'getSendMailInstance'));
+ $path = \OC_Helper::findBinaryPath('sendmail');
+ if ($path === null) {
+ $path = '/usr/sbin/sendmail';
+ }
+
+ $expected = new \Swift_SendmailTransport($path . ' -bs');
+ $this->assertEquals($expected, self::invokePrivate($this->mailer, 'getSendMailInstance'));
}
public function testGetSendMailInstanceSendMailQmail() {
diff --git a/tests/lib/Repair/SetVcardDatabaseUIDTest.php b/tests/lib/Repair/SetVcardDatabaseUIDTest.php
new file mode 100644
index 00000000000..97da3c6a901
--- /dev/null
+++ b/tests/lib/Repair/SetVcardDatabaseUIDTest.php
@@ -0,0 +1,121 @@
+<?php
+/**
+ * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @author John Molakvoæ <skjnldsv@protonmail.com>
+ *
+ * @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 Test\Repair;
+
+use OCP\IConfig;
+use OC\Repair\NC15\SetVcardDatabaseUID;
+use Test\TestCase;
+
+/**
+ * @group DB
+ */
+class SetVcardDatabaseUIDTest extends TestCase {
+
+ /** @var SetVcardDatabaseUID */
+ private $repair;
+
+ /** @var IConfig */
+ private $config;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->config = $this->createMock(IConfig::class);
+ $this->repair = new SetVcardDatabaseUID(\OC::$server->getDatabaseConnection(), $this->config);
+ }
+
+ protected function tearDown() {
+ return parent::tearDown();
+ }
+
+ public function dataTestVcards() {
+ return [
+ // classic vcard
+ ['BEGIN:VCARD'.PHP_EOL.
+ 'VERSION:3.0'.PHP_EOL.
+ 'PRODID:-//Sabre//Sabre VObject 4.1.2//EN'.PHP_EOL.
+ 'UID:Test'.PHP_EOL.
+ 'FN:Test'.PHP_EOL.
+ 'N:Test;;;;'.PHP_EOL.
+ 'END:VCARD', 'Test'],
+
+ // UID as url
+ ['BEGIN:VCARD'.PHP_EOL.
+ 'VERSION:3.0'.PHP_EOL.
+ 'PRODID:-//Sabre//Sabre VObject 4.1.2//EN'.PHP_EOL.
+ 'UID:https://User@old.domain.com/remote.php/carddav/addressbooks/User/contacts/2EAF6525-17ADC861-38D6BB1D.vcf'.PHP_EOL.
+ 'FN:Test'.PHP_EOL.
+ 'N:Test;;;;'.PHP_EOL.
+ 'END:VCARD', 'https://User@old.domain.com/remote.php/carddav/addressbooks/User/contacts/2EAF6525-17ADC861-38D6BB1D.vcf'],
+
+ // No uid
+ ['BEGIN:VCARD'.PHP_EOL.
+ 'VERSION:3.0'.PHP_EOL.
+ 'PRODID:-//Sabre//Sabre VObject 4.1.2//EN'.PHP_EOL.
+ 'FN:Test'.PHP_EOL.
+ 'N:Test;;;;'.PHP_EOL.
+ 'END:VCARD', false]
+ ];
+ }
+
+ /**
+ * @dataProvider dataTestVcards
+ *
+ * @param string $from
+ * @param string|boolean $expected
+ */
+ public function testExtractUIDFromVcard($from, $expected) {
+ $uid = $this->invokePrivate($this->repair, 'getUid', ['carddata' => $from]);
+ $this->assertEquals($expected, $uid);
+ }
+
+ public function shouldRunDataProvider() {
+ return [
+ ['11.0.0.0', true],
+ ['15.0.0.3', false],
+ ['13.0.5.2', true],
+ ['12.0.0.0', true],
+ ['16.0.0.1', false],
+ ['15.0.0.2', true],
+ ['13.0.0.0', true],
+ ['13.0.0.1', true]
+ ];
+ }
+
+ /**
+ * @dataProvider shouldRunDataProvider
+ *
+ * @param string $from
+ * @param boolean $expected
+ */
+ public function testShouldRun($from, $expected) {
+ $this->config->expects($this->any())
+ ->method('getSystemValue')
+ ->with('version', '0.0.0.0')
+ ->willReturn($from);
+
+ $this->assertEquals($expected, $this->invokePrivate($this->repair, 'shouldRun'));
+ }
+
+}
diff --git a/tests/lib/Settings/Admin/SharingTest.php b/tests/lib/Settings/Admin/SharingTest.php
index 79065fb8d21..c97f22e54b6 100644
--- a/tests/lib/Settings/Admin/SharingTest.php
+++ b/tests/lib/Settings/Admin/SharingTest.php
@@ -28,6 +28,7 @@ use OCP\AppFramework\Http\TemplateResponse;
use OCP\Constants;
use OCP\IConfig;
use OCP\IL10N;
+use OCP\Share\IManager;
use Test\TestCase;
class SharingTest extends TestCase {
@@ -37,15 +38,19 @@ class SharingTest extends TestCase {
private $config;
/** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */
private $l10n;
+ /** @var IManager|\PHPUnit_Framework_MockObject_MockObject */
+ private $shareManager;
public function setUp() {
parent::setUp();
$this->config = $this->getMockBuilder(IConfig::class)->getMock();
$this->l10n = $this->getMockBuilder(IL10N::class)->getMock();
+ $this->shareManager = $this->getMockBuilder(IManager::class)->getMock();
$this->admin = new Sharing(
$this->config,
- $this->l10n
+ $this->l10n,
+ $this->shareManager
);
}
diff --git a/tests/lib/Share20/DefaultShareProviderTest.php b/tests/lib/Share20/DefaultShareProviderTest.php
index 19f37160627..578225840b6 100644
--- a/tests/lib/Share20/DefaultShareProviderTest.php
+++ b/tests/lib/Share20/DefaultShareProviderTest.php
@@ -363,6 +363,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
->values([
'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_LINK),
'password' => $qb->expr()->literal('password'),
+ 'password_by_talk' => $qb->expr()->literal(true),
'uid_owner' => $qb->expr()->literal('shareOwner'),
'uid_initiator' => $qb->expr()->literal('sharedBy'),
'item_type' => $qb->expr()->literal('file'),
@@ -392,6 +393,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertEquals(\OCP\Share::SHARE_TYPE_LINK, $share->getShareType());
$this->assertNull($share->getSharedWith());
$this->assertEquals('password', $share->getPassword());
+ $this->assertEquals(true, $share->getSendPasswordByTalk());
$this->assertEquals('sharedBy', $share->getSharedBy());
$this->assertEquals('shareOwner', $share->getShareOwner());
$this->assertEquals($ownerPath, $share->getNode());
@@ -775,6 +777,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$share->setNode($path);
$share->setPermissions(1);
$share->setPassword('password');
+ $share->setSendPasswordByTalk(true);
$share->setToken('token');
$expireDate = new \DateTime();
$share->setExpirationDate($expireDate);
@@ -792,6 +795,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertLessThanOrEqual(new \DateTime(), $share2->getShareTime());
$this->assertSame($path, $share2->getNode());
$this->assertSame('password', $share2->getPassword());
+ $this->assertSame(true, $share2->getSendPasswordByTalk());
$this->assertSame('token', $share2->getToken());
$this->assertEquals($expireDate->getTimestamp(), $share2->getExpirationDate()->getTimestamp());
}
@@ -803,6 +807,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
->values([
'share_type' => $qb->expr()->literal(\OCP\Share::SHARE_TYPE_LINK),
'password' => $qb->expr()->literal('password'),
+ 'password_by_talk' => $qb->expr()->literal(true),
'uid_owner' => $qb->expr()->literal('shareOwner'),
'uid_initiator' => $qb->expr()->literal('sharedBy'),
'item_type' => $qb->expr()->literal('file'),
@@ -825,6 +830,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertSame('sharedBy', $share->getSharedBy());
$this->assertSame('secrettoken', $share->getToken());
$this->assertSame('password', $share->getPassword());
+ $this->assertSame(true, $share->getSendPasswordByTalk());
$this->assertSame(null, $share->getSharedWith());
}
@@ -1788,6 +1794,14 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertSame('user4', $share2->getSharedBy());
$this->assertSame('user5', $share2->getShareOwner());
$this->assertSame(1, $share2->getPermissions());
+
+ $share2 = $this->provider->getShareById($id);
+
+ $this->assertEquals($id, $share2->getId());
+ $this->assertSame('user3', $share2->getSharedWith());
+ $this->assertSame('user4', $share2->getSharedBy());
+ $this->assertSame('user5', $share2->getShareOwner());
+ $this->assertSame(1, $share2->getPermissions());
}
public function testUpdateLink() {
@@ -1825,6 +1839,7 @@ class DefaultShareProviderTest extends \Test\TestCase {
$share = $this->provider->getShareById($id);
$share->setPassword('password');
+ $share->setSendPasswordByTalk(true);
$share->setSharedBy('user4');
$share->setShareOwner('user5');
$share->setNode($file2);
@@ -1833,7 +1848,17 @@ class DefaultShareProviderTest extends \Test\TestCase {
$share2 = $this->provider->update($share);
$this->assertEquals($id, $share2->getId());
- $this->assertEquals('password', $share->getPassword());
+ $this->assertEquals('password', $share2->getPassword());
+ $this->assertSame(true, $share2->getSendPasswordByTalk());
+ $this->assertSame('user4', $share2->getSharedBy());
+ $this->assertSame('user5', $share2->getShareOwner());
+ $this->assertSame(1, $share2->getPermissions());
+
+ $share2 = $this->provider->getShareById($id);
+
+ $this->assertEquals($id, $share2->getId());
+ $this->assertEquals('password', $share2->getPassword());
+ $this->assertSame(true, $share2->getSendPasswordByTalk());
$this->assertSame('user4', $share2->getSharedBy());
$this->assertSame('user5', $share2->getShareOwner());
$this->assertSame(1, $share2->getPermissions());
@@ -1843,6 +1868,12 @@ class DefaultShareProviderTest extends \Test\TestCase {
$id = $this->addShareToDB(\OCP\Share::SHARE_TYPE_LINK, 'foo', 'user1', 'user2',
'file', 42, 'target', 31, null, null);
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->update('share');
+ $qb->where($qb->expr()->eq('id', $qb->createNamedParameter($id)));
+ $qb->set('password', $qb->createNamedParameter('password'));
+ $this->assertEquals(1, $qb->execute());
+
$users = [];
for($i = 0; $i < 6; $i++) {
$user = $this->createMock(IUser::class);
@@ -1882,7 +1913,15 @@ class DefaultShareProviderTest extends \Test\TestCase {
$share2 = $this->provider->update($share);
$this->assertEquals($id, $share2->getId());
- $this->assertEquals(null, $share->getPassword());
+ $this->assertEquals(null, $share2->getPassword());
+ $this->assertSame('user4', $share2->getSharedBy());
+ $this->assertSame('user5', $share2->getShareOwner());
+ $this->assertSame(1, $share2->getPermissions());
+
+ $share2 = $this->provider->getShareById($id);
+
+ $this->assertEquals($id, $share2->getId());
+ $this->assertEquals(null, $share2->getPassword());
$this->assertSame('user4', $share2->getSharedBy());
$this->assertSame('user5', $share2->getShareOwner());
$this->assertSame(1, $share2->getPermissions());
@@ -1949,6 +1988,15 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertSame('user4', $share2->getSharedBy());
$this->assertSame('user5', $share2->getShareOwner());
$this->assertSame(1, $share2->getPermissions());
+
+ $share2 = $this->provider->getShareById($id);
+
+ $this->assertEquals($id, $share2->getId());
+ // Group shares do not allow updating the recipient
+ $this->assertSame('group0', $share2->getSharedWith());
+ $this->assertSame('user4', $share2->getSharedBy());
+ $this->assertSame('user5', $share2->getShareOwner());
+ $this->assertSame(1, $share2->getPermissions());
}
public function testUpdateGroupSubShares() {
@@ -2019,6 +2067,15 @@ class DefaultShareProviderTest extends \Test\TestCase {
$this->assertSame('user5', $share2->getShareOwner());
$this->assertSame(1, $share2->getPermissions());
+ $share2 = $this->provider->getShareById($id);
+
+ $this->assertEquals($id, $share2->getId());
+ // Group shares do not allow updating the recipient
+ $this->assertSame('group0', $share2->getSharedWith());
+ $this->assertSame('user4', $share2->getSharedBy());
+ $this->assertSame('user5', $share2->getShareOwner());
+ $this->assertSame(1, $share2->getPermissions());
+
$qb = $this->dbConn->getQueryBuilder();
$stmt = $qb->select('*')
->from('share')