diff options
author | Lukas Reschke <lukas@owncloud.com> | 2016-06-21 11:18:22 +0200 |
---|---|---|
committer | Lukas Reschke <lukas@owncloud.com> | 2016-06-21 11:18:22 +0200 |
commit | 2b493e2f9dca674ba11f88a1d182d6872e04eaaa (patch) | |
tree | ef7fa75d1b4da812de80e93c3590dbb5404d7f06 /apps | |
parent | b4df57f3f02f65ed71d1072280751170379a53e8 (diff) | |
parent | 0e575c7eeadc6c8eb11b0be2ed1d39cdcf6cfcb8 (diff) | |
download | nextcloud-server-2b493e2f9dca674ba11f88a1d182d6872e04eaaa.tar.gz nextcloud-server-2b493e2f9dca674ba11f88a1d182d6872e04eaaa.zip |
Merge remote-tracking branch 'upstream/master' into master-sync-upstream
Diffstat (limited to 'apps')
70 files changed, 608 insertions, 153 deletions
diff --git a/apps/comments/l10n/pl.js b/apps/comments/l10n/pl.js index d5e3f4b3320..d4a492e1da2 100644 --- a/apps/comments/l10n/pl.js +++ b/apps/comments/l10n/pl.js @@ -14,7 +14,10 @@ OC.L10N.register( "Allowed characters {count} of {max}" : "Dozwolone znaki {count} z {max}", "{count} unread comments" : "{count} nieprzeczytanych komentarzy", "Comment" : "Komentarz", + "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Komentarze</strong> dla plików <em>(zawsze wypisane w strumieniu)</em>", + "You commented" : "Skomentowałeś/łaś", "%1$s commented" : "%1$s skomentował", + "You commented on %2$s" : "Skomentowałeś/łaś %2$s", "%1$s commented on %2$s" : "%1$s skomentował %2$s" }, "nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/comments/l10n/pl.json b/apps/comments/l10n/pl.json index 28bbf20817f..78e9f0ff210 100644 --- a/apps/comments/l10n/pl.json +++ b/apps/comments/l10n/pl.json @@ -12,7 +12,10 @@ "Allowed characters {count} of {max}" : "Dozwolone znaki {count} z {max}", "{count} unread comments" : "{count} nieprzeczytanych komentarzy", "Comment" : "Komentarz", + "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "<strong>Komentarze</strong> dla plików <em>(zawsze wypisane w strumieniu)</em>", + "You commented" : "Skomentowałeś/łaś", "%1$s commented" : "%1$s skomentował", + "You commented on %2$s" : "Skomentowałeś/łaś %2$s", "%1$s commented on %2$s" : "%1$s skomentował %2$s" },"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/comments/l10n/zh_CN.js b/apps/comments/l10n/zh_CN.js index 6ae1c231ae0..326fa6407a4 100644 --- a/apps/comments/l10n/zh_CN.js +++ b/apps/comments/l10n/zh_CN.js @@ -14,7 +14,10 @@ OC.L10N.register( "Allowed characters {count} of {max}" : "当前字数: {count},最大允许:{max}", "{count} unread comments" : "{count} 条未读评论", "Comment" : "评论", + "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "文件的<strong>评论</strong><em>(始终在数据流中列出)</em>", + "You commented" : "您的评论", "%1$s commented" : "%1$s 已评论", + "You commented on %2$s" : "你评论了 %2$s", "%1$s commented on %2$s" : "%1$s 评论了 %2$s" }, "nplurals=1; plural=0;"); diff --git a/apps/comments/l10n/zh_CN.json b/apps/comments/l10n/zh_CN.json index f5dab6f5ab1..98aa243e1c2 100644 --- a/apps/comments/l10n/zh_CN.json +++ b/apps/comments/l10n/zh_CN.json @@ -12,7 +12,10 @@ "Allowed characters {count} of {max}" : "当前字数: {count},最大允许:{max}", "{count} unread comments" : "{count} 条未读评论", "Comment" : "评论", + "<strong>Comments</strong> for files <em>(always listed in stream)</em>" : "文件的<strong>评论</strong><em>(始终在数据流中列出)</em>", + "You commented" : "您的评论", "%1$s commented" : "%1$s 已评论", + "You commented on %2$s" : "你评论了 %2$s", "%1$s commented on %2$s" : "%1$s 评论了 %2$s" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index 26e37e6bb86..df147a032fe 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -24,5 +24,8 @@ <post-migration> <job>OCA\DAV\Migration\Classification</job> </post-migration> + <live-migration> + <job>OCA\DAV\Migration\GenerateBirthdays</job> + </live-migration> </repair-steps> </info> diff --git a/apps/dav/appinfo/update.php b/apps/dav/appinfo/update.php deleted file mode 100644 index d2ee06cc9fe..00000000000 --- a/apps/dav/appinfo/update.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/** - * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * - * @copyright Copyright (c) 2016, ownCloud, Inc. - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * 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, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * - */ - -use OCA\DAV\AppInfo\Application; - -$app = new Application(); -$app->generateBirthdays(); diff --git a/apps/dav/lib/AppInfo/Application.php b/apps/dav/lib/AppInfo/Application.php index 9e0d2da4e17..de2056ebc35 100644 --- a/apps/dav/lib/AppInfo/Application.php +++ b/apps/dav/lib/AppInfo/Application.php @@ -32,6 +32,7 @@ use OCA\DAV\Connector\Sabre\Principal; use OCA\DAV\DAV\GroupPrincipalBackend; use OCA\DAV\HookManager; use OCA\DAV\Migration\Classification; +use OCA\DAV\Migration\GenerateBirthdays; use \OCP\AppFramework\App; use OCP\AppFramework\IAppContainer; use OCP\Contacts\IManager; @@ -116,6 +117,16 @@ class Application extends App { $c->getServer()->getUserManager() ); }); + + $container->registerService('OCA\DAV\Migration\GenerateBirthdays', function ($c) { + /** @var IAppContainer $c */ + /** @var BirthdayService $b */ + $b = $c->query('BirthdayService'); + return new GenerateBirthdays( + $b, + $c->getServer()->getUserManager() + ); + }); } /** @@ -164,18 +175,4 @@ class Application extends App { return $this->getContainer()->query('SyncService'); } - public function generateBirthdays() { - try { - /** @var BirthdayService $migration */ - $migration = $this->getContainer()->query('BirthdayService'); - $userManager = $this->getContainer()->getServer()->getUserManager(); - - $userManager->callForAllUsers(function($user) use($migration) { - /** @var IUser $user */ - $migration->syncUser($user->getUID()); - }); - } catch (\Exception $ex) { - $this->getContainer()->getServer()->getLogger()->logException($ex); - } - } } diff --git a/apps/dav/lib/Connector/Sabre/Auth.php b/apps/dav/lib/Connector/Sabre/Auth.php index 653da10bc3c..82c2711b560 100644 --- a/apps/dav/lib/Connector/Sabre/Auth.php +++ b/apps/dav/lib/Connector/Sabre/Auth.php @@ -31,8 +31,10 @@ namespace OCA\DAV\Connector\Sabre; use Exception; use OC\AppFramework\Http\Request; +use OC\Authentication\Exceptions\PasswordLoginForbiddenException; use OC\Authentication\TwoFactorAuth\Manager; use OC\User\Session; +use OCA\DAV\Connector\Sabre\Exception\PasswordLoginForbidden; use OCP\IRequest; use OCP\ISession; use Sabre\DAV\Auth\Backend\AbstractBasic; @@ -115,15 +117,19 @@ class Auth extends AbstractBasic { return true; } else { \OC_Util::setupFS(); //login hooks may need early access to the filesystem - if($this->userSession->logClientIn($username, $password)) { - $this->userSession->createSessionToken($this->request, $this->userSession->getUser()->getUID(), $username, $password); - \OC_Util::setupFS($this->userSession->getUser()->getUID()); - $this->session->set(self::DAV_AUTHENTICATED, $this->userSession->getUser()->getUID()); + try { + if ($this->userSession->logClientIn($username, $password, $this->request)) { + \OC_Util::setupFS($this->userSession->getUser()->getUID()); + $this->session->set(self::DAV_AUTHENTICATED, $this->userSession->getUser()->getUID()); + $this->session->close(); + return true; + } else { + $this->session->close(); + return false; + } + } catch (PasswordLoginForbiddenException $ex) { $this->session->close(); - return true; - } else { - $this->session->close(); - return false; + throw new PasswordLoginForbidden(); } } } diff --git a/apps/dav/lib/Connector/Sabre/Exception/PasswordLoginForbidden.php b/apps/dav/lib/Connector/Sabre/Exception/PasswordLoginForbidden.php new file mode 100644 index 00000000000..6537da3d56d --- /dev/null +++ b/apps/dav/lib/Connector/Sabre/Exception/PasswordLoginForbidden.php @@ -0,0 +1,54 @@ +<?php + +/** + * @author Christoph Wurst <christoph@owncloud.com> + * + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * 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, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +namespace OCA\DAV\Connector\Sabre\Exception; + +use DOMElement; +use Sabre\DAV\Server; +use Sabre\DAV\Exception\NotAuthenticated; + +class PasswordLoginForbidden extends NotAuthenticated { + + const NS_OWNCLOUD = 'http://owncloud.org/ns'; + + public function getHTTPCode() { + return 401; + } + + /** + * This method allows the exception to include additional information + * into the WebDAV error response + * + * @param Server $server + * @param DOMElement $errorNode + * @return void + */ + public function serialize(Server $server, DOMElement $errorNode) { + + // set ownCloud namespace + $errorNode->setAttribute('xmlns:o', self::NS_OWNCLOUD); + + $error = $errorNode->ownerDocument->createElementNS('o:', 'o:hint', 'password login forbidden'); + $errorNode->appendChild($error); + } + +} diff --git a/apps/dav/lib/Migration/GenerateBirthdays.php b/apps/dav/lib/Migration/GenerateBirthdays.php new file mode 100644 index 00000000000..dfc8838bcbb --- /dev/null +++ b/apps/dav/lib/Migration/GenerateBirthdays.php @@ -0,0 +1,70 @@ +<?php +/** + * @author Thomas Müller <thomas.mueller@tmit.eu> + * + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * 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, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + + +namespace OCA\DAV\Migration; + +use OCA\DAV\CalDAV\BirthdayService; +use OCP\IUser; +use OCP\IUserManager; +use OCP\Migration\IOutput; +use OCP\Migration\IRepairStep; + +class GenerateBirthdays implements IRepairStep { + + /** @var BirthdayService */ + private $birthdayService; + + /** @var IUserManager */ + private $userManager; + + /** + * GenerateBirthdays constructor. + * + * @param BirthdayService $birthdayService + * @param IUserManager $userManager + */ + public function __construct(BirthdayService $birthdayService, IUserManager $userManager) { + $this->birthdayService = $birthdayService; + $this->userManager = $userManager; + } + + /** + * @inheritdoc + */ + public function getName() { + return 'Regenerate birthday calendar for all users'; + } + + /** + * @inheritdoc + */ + public function run(IOutput $output) { + + $output->startProgress(); + $this->userManager->callForAllUsers(function($user) use ($output) { + /** @var IUser $user */ + $output->advance(1, $user->getDisplayName()); + $this->birthdayService->syncUser($user->getUID()); + }); + $output->finishProgress(); + } +} diff --git a/apps/dav/tests/unit/Connector/Sabre/AuthTest.php b/apps/dav/tests/unit/Connector/Sabre/AuthTest.php index b3ab49a027e..9564298f23a 100644 --- a/apps/dav/tests/unit/Connector/Sabre/AuthTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/AuthTest.php @@ -159,7 +159,7 @@ class AuthTest extends TestCase { $user = $this->getMockBuilder('\OCP\IUser') ->disableOriginalConstructor() ->getMock(); - $user->expects($this->exactly(4)) + $user->expects($this->exactly(3)) ->method('getUID') ->will($this->returnValue('MyTestUser')); $this->userSession @@ -167,7 +167,7 @@ class AuthTest extends TestCase { ->method('isLoggedIn') ->will($this->returnValue(true)); $this->userSession - ->expects($this->exactly(4)) + ->expects($this->exactly(3)) ->method('getUser') ->will($this->returnValue($user)); $this->session @@ -178,12 +178,8 @@ class AuthTest extends TestCase { $this->userSession ->expects($this->once()) ->method('logClientIn') - ->with('MyTestUser', 'MyTestPassword') + ->with('MyTestUser', 'MyTestPassword', $this->request) ->will($this->returnValue(true)); - $this->userSession - ->expects($this->once()) - ->method('createSessionToken') - ->with($this->request, 'MyTestUser', 'MyTestUser', 'MyTestPassword'); $this->session ->expects($this->once()) ->method('set') @@ -212,6 +208,25 @@ class AuthTest extends TestCase { $this->assertFalse($this->invokePrivate($this->auth, 'validateUserPass', ['MyTestUser', 'MyTestPassword'])); } + /** + * @expectedException \OCA\DAV\Connector\Sabre\Exception\PasswordLoginForbidden + */ + public function testValidateUserPassWithPasswordLoginForbidden() { + $this->userSession + ->expects($this->once()) + ->method('isLoggedIn') + ->will($this->returnValue(false)); + $this->userSession + ->expects($this->once()) + ->method('logClientIn') + ->with('MyTestUser', 'MyTestPassword') + ->will($this->throwException(new \OC\Authentication\Exceptions\PasswordLoginForbiddenException())); + $this->session + ->expects($this->once()) + ->method('close'); + + $this->invokePrivate($this->auth, 'validateUserPass', ['MyTestUser', 'MyTestPassword']); + } public function testAuthenticateAlreadyLoggedInWithoutCsrfTokenForNonGet() { $request = $this->getMockBuilder('Sabre\HTTP\RequestInterface') @@ -626,17 +641,14 @@ class AuthTest extends TestCase { ->method('logClientIn') ->with('username', 'password') ->will($this->returnValue(true)); - $this->userSession - ->expects($this->once()) - ->method('createSessionToken'); $user = $this->getMockBuilder('\OCP\IUser') ->disableOriginalConstructor() ->getMock(); - $user->expects($this->exactly(4)) + $user->expects($this->exactly(3)) ->method('getUID') ->will($this->returnValue('MyTestUser')); $this->userSession - ->expects($this->exactly(4)) + ->expects($this->exactly(3)) ->method('getUser') ->will($this->returnValue($user)); $response = $this->auth->check($server->httpRequest, $server->httpResponse); diff --git a/apps/encryption/l10n/zh_CN.js b/apps/encryption/l10n/zh_CN.js index 93a1b13996a..e2f9212c8cf 100644 --- a/apps/encryption/l10n/zh_CN.js +++ b/apps/encryption/l10n/zh_CN.js @@ -15,6 +15,7 @@ OC.L10N.register( "Could not change the password. Maybe the old password was not correct." : "不能修改密码。旧密码可能不正确。", "Could not update the private key password." : "不能更新私有密钥。", "The old password was not correct, please try again." : "原始密码错误,请重试。", + "The current log-in password was not correct, please try again." : "当前登录密码不正确,请重试。", "Private key password successfully updated." : "私钥密码成功更新。", "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "无效的私有密钥。请到您的个人配置里去更新私有密钥,来恢复对加密文件的访问。", "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "加密应用被启用了,但是你的加密密钥没有初始化,请重新登出登录系统一次。", diff --git a/apps/encryption/l10n/zh_CN.json b/apps/encryption/l10n/zh_CN.json index 0fb653b232c..8ac6c9eef01 100644 --- a/apps/encryption/l10n/zh_CN.json +++ b/apps/encryption/l10n/zh_CN.json @@ -13,6 +13,7 @@ "Could not change the password. Maybe the old password was not correct." : "不能修改密码。旧密码可能不正确。", "Could not update the private key password." : "不能更新私有密钥。", "The old password was not correct, please try again." : "原始密码错误,请重试。", + "The current log-in password was not correct, please try again." : "当前登录密码不正确,请重试。", "Private key password successfully updated." : "私钥密码成功更新。", "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "无效的私有密钥。请到您的个人配置里去更新私有密钥,来恢复对加密文件的访问。", "Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "加密应用被启用了,但是你的加密密钥没有初始化,请重新登出登录系统一次。", diff --git a/apps/federatedfilesharing/l10n/ca.js b/apps/federatedfilesharing/l10n/ca.js index bc2ea1e51c6..d56ab77a8f2 100644 --- a/apps/federatedfilesharing/l10n/ca.js +++ b/apps/federatedfilesharing/l10n/ca.js @@ -1,7 +1,27 @@ OC.L10N.register( "federatedfilesharing", { + "Federated sharing" : "Compartició federada", + "Invalid Federated Cloud ID" : "ID de núvol federat invàlid", "Sharing %s failed, because this item is already shared with %s" : "Ha fallat en compartir %s, perquè l'element ja està compartit amb %s", - "Open documentation" : "Obre la documentació" + "Not allowed to create a federated share with the same user" : "No està permés crear una compartició federada amb el mateix usuari", + "File is already shared with %s" : "El fitxer ja està compartit amb %s", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "La compartició de %s ha fallat, no es pot trobar %s, potser el servidor està actualment innacessible.", + "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Has rebut \"/%3$s\" com una compartició remota des de %1$s (de part de %2$s)", + "You received \"/%3$s\" as a remote share from %1$s" : "Has rebut \"/%3$s\" com una compartició remota de %1$s", + "Accept" : "Acceptar", + "Decline" : "Denegar", + "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Comparteix amb mi a través del meu #ownCloud ID de Núvol Federat, consulteu %s", + "Share with me through my #ownCloud Federated Cloud ID" : "Comparteix amb mi a través del meu #ownCloud ID de Núvol Federat", + "Federated Cloud Sharing" : "Compartició federada de núvol", + "Open documentation" : "Obre la documentació", + "Allow users on this server to send shares to other servers" : "Permet als usuaris d'aquest servidor enviar comparticions a d'altres servidors", + "Allow users on this server to receive shares from other servers" : "Permet als usuaris d'aquest servidor rebre comparticions a d'altres servidors", + "Federated Cloud" : "Núvol federat", + "Your Federated Cloud ID:" : "El teu ID de Núvol Federat:", + "Share it:" : "Comparteix-lo:", + "Add to your website" : "Afegeix a la teva pàgina web", + "Share with me via ownCloud" : "Comparteix amb mi amb ownCloud", + "HTML Code:" : "Codi HTML:" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federatedfilesharing/l10n/ca.json b/apps/federatedfilesharing/l10n/ca.json index 9ac1be24429..782557f24a9 100644 --- a/apps/federatedfilesharing/l10n/ca.json +++ b/apps/federatedfilesharing/l10n/ca.json @@ -1,5 +1,25 @@ { "translations": { + "Federated sharing" : "Compartició federada", + "Invalid Federated Cloud ID" : "ID de núvol federat invàlid", "Sharing %s failed, because this item is already shared with %s" : "Ha fallat en compartir %s, perquè l'element ja està compartit amb %s", - "Open documentation" : "Obre la documentació" + "Not allowed to create a federated share with the same user" : "No està permés crear una compartició federada amb el mateix usuari", + "File is already shared with %s" : "El fitxer ja està compartit amb %s", + "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "La compartició de %s ha fallat, no es pot trobar %s, potser el servidor està actualment innacessible.", + "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Has rebut \"/%3$s\" com una compartició remota des de %1$s (de part de %2$s)", + "You received \"/%3$s\" as a remote share from %1$s" : "Has rebut \"/%3$s\" com una compartició remota de %1$s", + "Accept" : "Acceptar", + "Decline" : "Denegar", + "Share with me through my #ownCloud Federated Cloud ID, see %s" : "Comparteix amb mi a través del meu #ownCloud ID de Núvol Federat, consulteu %s", + "Share with me through my #ownCloud Federated Cloud ID" : "Comparteix amb mi a través del meu #ownCloud ID de Núvol Federat", + "Federated Cloud Sharing" : "Compartició federada de núvol", + "Open documentation" : "Obre la documentació", + "Allow users on this server to send shares to other servers" : "Permet als usuaris d'aquest servidor enviar comparticions a d'altres servidors", + "Allow users on this server to receive shares from other servers" : "Permet als usuaris d'aquest servidor rebre comparticions a d'altres servidors", + "Federated Cloud" : "Núvol federat", + "Your Federated Cloud ID:" : "El teu ID de Núvol Federat:", + "Share it:" : "Comparteix-lo:", + "Add to your website" : "Afegeix a la teva pàgina web", + "Share with me via ownCloud" : "Comparteix amb mi amb ownCloud", + "HTML Code:" : "Codi HTML:" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federatedfilesharing/l10n/nl.js b/apps/federatedfilesharing/l10n/nl.js index 090c2a9f19d..364d540640a 100644 --- a/apps/federatedfilesharing/l10n/nl.js +++ b/apps/federatedfilesharing/l10n/nl.js @@ -5,7 +5,10 @@ OC.L10N.register( "Invalid Federated Cloud ID" : "Ongeldige Federated Cloud ID", "Sharing %s failed, because this item is already shared with %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met %s", "Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken", + "File is already shared with %s" : "Bestand is al gedeeld met %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Delen van %s mislukt, kon %s niet vinden, misschien is de server niet bereikbaar.", + "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "U ontving \"/%3$s\" als een externe share van %1$s (namens %2$s)", + "You received \"/%3$s\" as a remote share from %1$s" : "U ontving \"/%3$s\" as een externe share van %1$s", "Accept" : "Accepteren", "Decline" : "Afwijzen", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Deel met mij via mijn #Nextcloud federated Cloud ID, zie %s", diff --git a/apps/federatedfilesharing/l10n/nl.json b/apps/federatedfilesharing/l10n/nl.json index 65b298df963..01e1579dbc8 100644 --- a/apps/federatedfilesharing/l10n/nl.json +++ b/apps/federatedfilesharing/l10n/nl.json @@ -3,7 +3,10 @@ "Invalid Federated Cloud ID" : "Ongeldige Federated Cloud ID", "Sharing %s failed, because this item is already shared with %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met %s", "Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken", + "File is already shared with %s" : "Bestand is al gedeeld met %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Delen van %s mislukt, kon %s niet vinden, misschien is de server niet bereikbaar.", + "You received \"/%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "U ontving \"/%3$s\" als een externe share van %1$s (namens %2$s)", + "You received \"/%3$s\" as a remote share from %1$s" : "U ontving \"/%3$s\" as een externe share van %1$s", "Accept" : "Accepteren", "Decline" : "Afwijzen", "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Deel met mij via mijn #Nextcloud federated Cloud ID, zie %s", diff --git a/apps/federatedfilesharing/l10n/pl.js b/apps/federatedfilesharing/l10n/pl.js index 1d8b949c74a..4f65f44553e 100644 --- a/apps/federatedfilesharing/l10n/pl.js +++ b/apps/federatedfilesharing/l10n/pl.js @@ -1,6 +1,7 @@ OC.L10N.register( "federatedfilesharing", { + "Federated sharing" : "Sfederowane udostępnianie", "Sharing %s failed, because this item is already shared with %s" : "Współdzielenie %s nie powiodło się, ponieważ element jest już współdzielony z %s", "File is already shared with %s" : "Plik jest już współdzielony z %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Współdzielenie %s nie powiodło się, nie można odnaleźć %s. Prawdopobnie serwer nie jest teraz osiągalny.", diff --git a/apps/federatedfilesharing/l10n/pl.json b/apps/federatedfilesharing/l10n/pl.json index c44eecbeeb7..7b43ed3fce1 100644 --- a/apps/federatedfilesharing/l10n/pl.json +++ b/apps/federatedfilesharing/l10n/pl.json @@ -1,4 +1,5 @@ { "translations": { + "Federated sharing" : "Sfederowane udostępnianie", "Sharing %s failed, because this item is already shared with %s" : "Współdzielenie %s nie powiodło się, ponieważ element jest już współdzielony z %s", "File is already shared with %s" : "Plik jest już współdzielony z %s", "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Współdzielenie %s nie powiodło się, nie można odnaleźć %s. Prawdopobnie serwer nie jest teraz osiągalny.", diff --git a/apps/federation/js/settings-admin.js b/apps/federation/js/settings-admin.js index 45d5d62a5a3..10fabbeb9b9 100644 --- a/apps/federation/js/settings-admin.js +++ b/apps/federation/js/settings-admin.js @@ -60,7 +60,7 @@ $(document).ready(function () { // remove trusted server from list $( "#listOfTrustedServers" ).on('click', 'li > .icon-delete', function() { var $this = $(this).parent(); - id = $this.attr('id'); + var id = $this.attr('id'); $.ajax({ url: OC.generateUrl('/apps/federation/trusted-servers/' + id), type: 'DELETE', diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js index c0d1f22e74b..b2d6662a9ce 100644 --- a/apps/files/l10n/fr.js +++ b/apps/files/l10n/fr.js @@ -21,6 +21,7 @@ OC.L10N.register( "Invalid directory." : "Dossier non valide.", "Files" : "Fichiers", "All files" : "Tous les fichiers", + "File could not be found" : "Ce fichier n'a pu être trouvé.", "Home" : "Mes fichiers", "Close" : "Fermer", "Favorites" : "Favoris", diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json index 7db4cf95312..780ef364b9f 100644 --- a/apps/files/l10n/fr.json +++ b/apps/files/l10n/fr.json @@ -19,6 +19,7 @@ "Invalid directory." : "Dossier non valide.", "Files" : "Fichiers", "All files" : "Tous les fichiers", + "File could not be found" : "Ce fichier n'a pu être trouvé.", "Home" : "Mes fichiers", "Close" : "Fermer", "Favorites" : "Favoris", diff --git a/apps/files/l10n/he.js b/apps/files/l10n/he.js index a0152b94d2e..13b0922efd2 100644 --- a/apps/files/l10n/he.js +++ b/apps/files/l10n/he.js @@ -21,6 +21,7 @@ OC.L10N.register( "Invalid directory." : "תיקייה שגויה.", "Files" : "קבצים", "All files" : "כל הקבצים", + "File could not be found" : "הקובץ לא ניתן לאיתור", "Home" : "בית", "Close" : "סגירה", "Favorites" : "מועדפים", @@ -33,8 +34,14 @@ OC.L10N.register( "Uploading..." : "העלאה...", "..." : "...", "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hour{plural_s} left", + "{hours}:{minutes}h" : "{hours}:{minutes}שעות", + "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} דקות{plural_s} נשארו", + "{minutes}:{seconds}m" : "{minutes}:{seconds}דקות", + "{seconds} second{plural_s} left" : "{seconds} שניות{plural_s} נשארו", + "{seconds}s" : "{seconds}שניות", "Any moment now..." : "עכשיו בכל רגע...", "Soon..." : "בקרוב...", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} מתוך {totalSize} ({bitrate})", "File upload is in progress. Leaving the page now will cancel the upload." : "מתבצעת כעת העלאת קבצים. עזיבה של העמוד תבטל את ההעלאה.", "Actions" : "פעולות", "Download" : "הורדה", diff --git a/apps/files/l10n/he.json b/apps/files/l10n/he.json index c5e22507e04..57ecefe49b2 100644 --- a/apps/files/l10n/he.json +++ b/apps/files/l10n/he.json @@ -19,6 +19,7 @@ "Invalid directory." : "תיקייה שגויה.", "Files" : "קבצים", "All files" : "כל הקבצים", + "File could not be found" : "הקובץ לא ניתן לאיתור", "Home" : "בית", "Close" : "סגירה", "Favorites" : "מועדפים", @@ -31,8 +32,14 @@ "Uploading..." : "העלאה...", "..." : "...", "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} hour{plural_s} left", + "{hours}:{minutes}h" : "{hours}:{minutes}שעות", + "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} דקות{plural_s} נשארו", + "{minutes}:{seconds}m" : "{minutes}:{seconds}דקות", + "{seconds} second{plural_s} left" : "{seconds} שניות{plural_s} נשארו", + "{seconds}s" : "{seconds}שניות", "Any moment now..." : "עכשיו בכל רגע...", "Soon..." : "בקרוב...", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} מתוך {totalSize} ({bitrate})", "File upload is in progress. Leaving the page now will cancel the upload." : "מתבצעת כעת העלאת קבצים. עזיבה של העמוד תבטל את ההעלאה.", "Actions" : "פעולות", "Download" : "הורדה", diff --git a/apps/files/l10n/nl.js b/apps/files/l10n/nl.js index 94483ede498..974349d6333 100644 --- a/apps/files/l10n/nl.js +++ b/apps/files/l10n/nl.js @@ -21,6 +21,7 @@ OC.L10N.register( "Invalid directory." : "Ongeldige directory.", "Files" : "Bestanden", "All files" : "Alle bestanden", + "File could not be found" : "Bestand kon niet worden gevonden", "Home" : "Thuis", "Close" : "Sluiten", "Favorites" : "Favorieten", @@ -32,6 +33,15 @@ OC.L10N.register( "Could not get result from server." : "Kon het resultaat van de server niet terugkrijgen.", "Uploading..." : "Uploading...", "..." : "...", + "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} uur{plural_s} over", + "{hours}:{minutes}h" : "{hours}:{minutes}h", + "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuten{plural_s} over", + "{minutes}:{seconds}m" : "{minutes}:{seconds}m", + "{seconds} second{plural_s} left" : "{seconds} seconden{plural_s} over", + "{seconds}s" : "{seconds}en", + "Any moment now..." : "Heel snel nu...", + "Soon..." : "Binnenkort...", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} van {totalSize} ({bitrate})", "File upload is in progress. Leaving the page now will cancel the upload." : "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.", "Actions" : "Acties", "Download" : "Downloaden", @@ -86,7 +96,7 @@ OC.L10N.register( "A file or folder has been <strong>changed</strong>" : "Een bestand of map is <strong>gewijzigd</strong>", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Beperk meldingen over aanmaken en wijzigen aan uw <strong>favoriete bestanden</strong> <em>(Alleen stream)</em>", "A file or folder has been <strong>deleted</strong>" : "Een bestand of map is <strong>verwijderd</strong>", - "A file or folder has been <strong>restored</strong>" : "Een bestand of een mmaps is <strong>hersteld</strong>", + "A file or folder has been <strong>restored</strong>" : "Een bestand of een map is <strong>hersteld</strong>", "You created %1$s" : "Gecreëerd: %1$s", "%2$s created %1$s" : "%2$s creëerde %1$s", "%1$s was created in a public folder" : "%1$s werd gecreëerd in een openbare map", diff --git a/apps/files/l10n/nl.json b/apps/files/l10n/nl.json index 524570f487e..6caa76f49c1 100644 --- a/apps/files/l10n/nl.json +++ b/apps/files/l10n/nl.json @@ -19,6 +19,7 @@ "Invalid directory." : "Ongeldige directory.", "Files" : "Bestanden", "All files" : "Alle bestanden", + "File could not be found" : "Bestand kon niet worden gevonden", "Home" : "Thuis", "Close" : "Sluiten", "Favorites" : "Favorieten", @@ -30,6 +31,15 @@ "Could not get result from server." : "Kon het resultaat van de server niet terugkrijgen.", "Uploading..." : "Uploading...", "..." : "...", + "{hours}:{minutes}:{seconds} hour{plural_s} left" : "{hours}:{minutes}:{seconds} uur{plural_s} over", + "{hours}:{minutes}h" : "{hours}:{minutes}h", + "{minutes}:{seconds} minute{plural_s} left" : "{minutes}:{seconds} minuten{plural_s} over", + "{minutes}:{seconds}m" : "{minutes}:{seconds}m", + "{seconds} second{plural_s} left" : "{seconds} seconden{plural_s} over", + "{seconds}s" : "{seconds}en", + "Any moment now..." : "Heel snel nu...", + "Soon..." : "Binnenkort...", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} van {totalSize} ({bitrate})", "File upload is in progress. Leaving the page now will cancel the upload." : "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.", "Actions" : "Acties", "Download" : "Downloaden", @@ -84,7 +94,7 @@ "A file or folder has been <strong>changed</strong>" : "Een bestand of map is <strong>gewijzigd</strong>", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Beperk meldingen over aanmaken en wijzigen aan uw <strong>favoriete bestanden</strong> <em>(Alleen stream)</em>", "A file or folder has been <strong>deleted</strong>" : "Een bestand of map is <strong>verwijderd</strong>", - "A file or folder has been <strong>restored</strong>" : "Een bestand of een mmaps is <strong>hersteld</strong>", + "A file or folder has been <strong>restored</strong>" : "Een bestand of een map is <strong>hersteld</strong>", "You created %1$s" : "Gecreëerd: %1$s", "%2$s created %1$s" : "%2$s creëerde %1$s", "%1$s was created in a public folder" : "%1$s werd gecreëerd in een openbare map", diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js index a366c6a967c..c5273a36ebd 100644 --- a/apps/files/l10n/pl.js +++ b/apps/files/l10n/pl.js @@ -21,6 +21,7 @@ OC.L10N.register( "Invalid directory." : "Zła ścieżka.", "Files" : "Pliki", "All files" : "Wszystkie pliki", + "File could not be found" : "Nie można odnaleźć pliku", "Home" : "Dom", "Close" : "Zamknij", "Favorites" : "Ulubione", @@ -32,8 +33,15 @@ OC.L10N.register( "Could not get result from server." : "Nie można uzyskać wyniku z serwera.", "Uploading..." : "Wgrywanie....", "..." : "...", + "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Pozostało {hours}:{minutes}:{seconds} hour{plural_s} ", + "{hours}:{minutes}h" : "{hours}:{minutes}godz.", + "{minutes}:{seconds} minute{plural_s} left" : "Pozostało {minutes}:{seconds} minute{plural_s}", + "{minutes}:{seconds}m" : "{minutes}:{seconds}min.", "{seconds} second{plural_s} left" : "Pozostało sekund: {seconds}", "{seconds}s" : "{seconds} s", + "Any moment now..." : "Jeszcze chwilę...", + "Soon..." : "Wkrótce...", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} z {totalSize} ({bitrate})", "File upload is in progress. Leaving the page now will cancel the upload." : "Wysyłanie pliku jest w toku. Jeśli opuścisz tę stronę, wysyłanie zostanie przerwane.", "Actions" : "Akcje", "Download" : "Pobierz", @@ -49,6 +57,10 @@ OC.L10N.register( "This directory is unavailable, please check the logs or contact the administrator" : "Ten folder jest niedostępny, proszę sprawdzić logi lub skontaktować się z administratorem.", "Could not move \"{file}\", target exists" : "Nie można było przenieść „{file}” – plik o takiej nazwie już istnieje", "Could not move \"{file}\"" : "Nie można było przenieść \"{file}\"", + "{newName} already exists" : "{newName} już istnieje", + "Could not rename \"{fileName}\", it does not exist any more" : "Nie można zmienić nazwy \"{fileName}\", plik nie istnieje", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Nazwa \"{targetName}\" jest juz używana w folderze \"{dir}\". Proszę wybrać inną nazwę.", + "Could not rename \"{fileName}\"" : "Nie można zmienić nazwy \"{fileName}\"", "Could not create file \"{file}\"" : "Nie można było utworzyć pliku \"{file}\"", "Could not create file \"{file}\" because it already exists" : "Nie można było utworzyć pliku \"{file}\", ponieważ ten plik już istnieje.", "Could not create folder \"{dir}\"" : "Nie można utworzyć folderu „{dir}”", @@ -71,8 +83,10 @@ OC.L10N.register( "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Miejsce dla {owner} jest na wyczerpaniu ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Twój magazyn jest prawie pełny ({usedSpacePercent}%)", "Path" : "Ścieżka", + "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtów"], "Favorited" : "Ulubione", "Favorite" : "Ulubione", + "Local link" : "Lokalny odnośnik", "Folder" : "Folder", "New folder" : "Nowy folder", "{newname} already exists" : "{newname} już istnieje", @@ -80,6 +94,7 @@ OC.L10N.register( "An error occurred while trying to update the tags" : "Wystąpił błąd podczas aktualizacji tagów", "A new file or folder has been <strong>created</strong>" : "Nowy plik lub folder został <strong>utworzony</strong>", "A file or folder has been <strong>changed</strong>" : "Plik lub folder został <strong>zmieniony</strong>", + "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Ogranicz powiadomienia o utworzeniu i zmianach do swoich <strong>ulubionych plkow</strong> <em>(Tylko w strumieniu aktywności)</em>", "A file or folder has been <strong>deleted</strong>" : "Plik lub folder został <strong>usunięty</strong>", "A file or folder has been <strong>restored</strong>" : "Plik lub folder został <strong>przywrócy</strong>", "You created %1$s" : "Utworzyłeś %1$s", @@ -99,15 +114,20 @@ OC.L10N.register( "Maximum upload size" : "Maksymalny rozmiar wysyłanego pliku", "max. possible: " : "maks. możliwy:", "Save" : "Zapisz", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "Z PHP-FPM zastosowanie zmian może zająć 5 minut.", + "Missing permissions to edit from here." : "Brakuje uprawnień do edycji.", "Settings" : "Ustawienia", "Show hidden files" : "Pokaż ukryte pliki", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Użyj tego adresu aby uzyskać <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dostęp do swoich plików poprzez WebDAV</a>", "No files in here" : "Brak plików", + "Upload some content or sync with your devices!" : "Wgraj coś, albo wykonaj synchronizację ze swoimi urządzeniami.", "No entries found in this folder" : "Brak wpisów w tym folderze", "Select all" : "Wybierz wszystko", "Upload too large" : "Ładowany plik jest za duży", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Pliki, które próbujesz przesłać, przekraczają maksymalną dopuszczalną wielkość.", "No favorites" : "Brak ulubionych", + "Files and folders you mark as favorite will show up here" : "Pliki i katalogi, które oznaczysz jako ulubione wyświetlą się tutaj", "Text file" : "Plik tekstowy", "New text file.txt" : "Nowy plik tekstowy.txt" }, diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json index 05b65b2f84a..c0be569faf6 100644 --- a/apps/files/l10n/pl.json +++ b/apps/files/l10n/pl.json @@ -19,6 +19,7 @@ "Invalid directory." : "Zła ścieżka.", "Files" : "Pliki", "All files" : "Wszystkie pliki", + "File could not be found" : "Nie można odnaleźć pliku", "Home" : "Dom", "Close" : "Zamknij", "Favorites" : "Ulubione", @@ -30,8 +31,15 @@ "Could not get result from server." : "Nie można uzyskać wyniku z serwera.", "Uploading..." : "Wgrywanie....", "..." : "...", + "{hours}:{minutes}:{seconds} hour{plural_s} left" : "Pozostało {hours}:{minutes}:{seconds} hour{plural_s} ", + "{hours}:{minutes}h" : "{hours}:{minutes}godz.", + "{minutes}:{seconds} minute{plural_s} left" : "Pozostało {minutes}:{seconds} minute{plural_s}", + "{minutes}:{seconds}m" : "{minutes}:{seconds}min.", "{seconds} second{plural_s} left" : "Pozostało sekund: {seconds}", "{seconds}s" : "{seconds} s", + "Any moment now..." : "Jeszcze chwilę...", + "Soon..." : "Wkrótce...", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} z {totalSize} ({bitrate})", "File upload is in progress. Leaving the page now will cancel the upload." : "Wysyłanie pliku jest w toku. Jeśli opuścisz tę stronę, wysyłanie zostanie przerwane.", "Actions" : "Akcje", "Download" : "Pobierz", @@ -47,6 +55,10 @@ "This directory is unavailable, please check the logs or contact the administrator" : "Ten folder jest niedostępny, proszę sprawdzić logi lub skontaktować się z administratorem.", "Could not move \"{file}\", target exists" : "Nie można było przenieść „{file}” – plik o takiej nazwie już istnieje", "Could not move \"{file}\"" : "Nie można było przenieść \"{file}\"", + "{newName} already exists" : "{newName} już istnieje", + "Could not rename \"{fileName}\", it does not exist any more" : "Nie można zmienić nazwy \"{fileName}\", plik nie istnieje", + "The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Nazwa \"{targetName}\" jest juz używana w folderze \"{dir}\". Proszę wybrać inną nazwę.", + "Could not rename \"{fileName}\"" : "Nie można zmienić nazwy \"{fileName}\"", "Could not create file \"{file}\"" : "Nie można było utworzyć pliku \"{file}\"", "Could not create file \"{file}\" because it already exists" : "Nie można było utworzyć pliku \"{file}\", ponieważ ten plik już istnieje.", "Could not create folder \"{dir}\"" : "Nie można utworzyć folderu „{dir}”", @@ -69,8 +81,10 @@ "Storage of {owner} is almost full ({usedSpacePercent}%)" : "Miejsce dla {owner} jest na wyczerpaniu ({usedSpacePercent}%)", "Your storage is almost full ({usedSpacePercent}%)" : "Twój magazyn jest prawie pełny ({usedSpacePercent}%)", "Path" : "Ścieżka", + "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtów"], "Favorited" : "Ulubione", "Favorite" : "Ulubione", + "Local link" : "Lokalny odnośnik", "Folder" : "Folder", "New folder" : "Nowy folder", "{newname} already exists" : "{newname} już istnieje", @@ -78,6 +92,7 @@ "An error occurred while trying to update the tags" : "Wystąpił błąd podczas aktualizacji tagów", "A new file or folder has been <strong>created</strong>" : "Nowy plik lub folder został <strong>utworzony</strong>", "A file or folder has been <strong>changed</strong>" : "Plik lub folder został <strong>zmieniony</strong>", + "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Ogranicz powiadomienia o utworzeniu i zmianach do swoich <strong>ulubionych plkow</strong> <em>(Tylko w strumieniu aktywności)</em>", "A file or folder has been <strong>deleted</strong>" : "Plik lub folder został <strong>usunięty</strong>", "A file or folder has been <strong>restored</strong>" : "Plik lub folder został <strong>przywrócy</strong>", "You created %1$s" : "Utworzyłeś %1$s", @@ -97,15 +112,20 @@ "Maximum upload size" : "Maksymalny rozmiar wysyłanego pliku", "max. possible: " : "maks. możliwy:", "Save" : "Zapisz", + "With PHP-FPM it might take 5 minutes for changes to be applied." : "Z PHP-FPM zastosowanie zmian może zająć 5 minut.", + "Missing permissions to edit from here." : "Brakuje uprawnień do edycji.", "Settings" : "Ustawienia", "Show hidden files" : "Pokaż ukryte pliki", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "Użyj tego adresu aby uzyskać <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">dostęp do swoich plików poprzez WebDAV</a>", "No files in here" : "Brak plików", + "Upload some content or sync with your devices!" : "Wgraj coś, albo wykonaj synchronizację ze swoimi urządzeniami.", "No entries found in this folder" : "Brak wpisów w tym folderze", "Select all" : "Wybierz wszystko", "Upload too large" : "Ładowany plik jest za duży", "The files you are trying to upload exceed the maximum size for file uploads on this server." : "Pliki, które próbujesz przesłać, przekraczają maksymalną dopuszczalną wielkość.", "No favorites" : "Brak ulubionych", + "Files and folders you mark as favorite will show up here" : "Pliki i katalogi, które oznaczysz jako ulubione wyświetlą się tutaj", "Text file" : "Plik tekstowy", "New text file.txt" : "Nowy plik tekstowy.txt" },"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js index 4e5afe599d2..632804a4fad 100644 --- a/apps/files/l10n/zh_CN.js +++ b/apps/files/l10n/zh_CN.js @@ -21,6 +21,7 @@ OC.L10N.register( "Invalid directory." : "无效文件夹。", "Files" : "文件", "All files" : "全部文件", + "File could not be found" : "文件未找到", "Home" : "家庭", "Close" : "关闭", "Favorites" : "收藏", @@ -32,6 +33,15 @@ OC.L10N.register( "Could not get result from server." : "不能从服务器得到结果", "Uploading..." : "上传中...", "..." : "...", + "{hours}:{minutes}:{seconds} hour{plural_s} left" : "剩余时间:{hours}:{minutes}:{seconds} ", + "{hours}:{minutes}h" : "{hours}:{minutes}", + "{minutes}:{seconds} minute{plural_s} left" : "剩余分钟:{minutes}:{seconds} ", + "{minutes}:{seconds}m" : "{minutes}:{seconds}", + "{seconds} second{plural_s} left" : "剩下{seconds} 秒", + "{seconds}s" : "{seconds}秒", + "Any moment now..." : "现在任何时候...", + "Soon..." : "很快...", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})", "File upload is in progress. Leaving the page now will cancel the upload." : "文件正在上传中。现在离开此页会导致上传动作被取消。", "Actions" : "动作", "Download" : "下载", @@ -77,6 +87,7 @@ OC.L10N.register( "_%n byte_::_%n bytes_" : ["%n 字节"], "Favorited" : "已收藏", "Favorite" : "收藏", + "Local link" : "本地链接", "Folder" : "文件夹", "New folder" : "增加文件夹", "{newname} already exists" : "{newname} 已经存在", @@ -107,7 +118,9 @@ OC.L10N.register( "With PHP-FPM it might take 5 minutes for changes to be applied." : "对于 PHP-FPM 这个值改变后可能需要 5 分钟才会生效。", "Missing permissions to edit from here." : "没有从这里进行编辑的权限", "Settings" : "设置", + "Show hidden files" : "显示隐藏文件", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "使用这个地址 <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">通过 WebDAV 访问您的文件</a>", "No files in here" : "无文件", "Upload some content or sync with your devices!" : "上传一些内容或者与设备同步!", "No entries found in this folder" : "此文件夹中无项目", diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json index a4cd89935f6..60db09ade1a 100644 --- a/apps/files/l10n/zh_CN.json +++ b/apps/files/l10n/zh_CN.json @@ -19,6 +19,7 @@ "Invalid directory." : "无效文件夹。", "Files" : "文件", "All files" : "全部文件", + "File could not be found" : "文件未找到", "Home" : "家庭", "Close" : "关闭", "Favorites" : "收藏", @@ -30,6 +31,15 @@ "Could not get result from server." : "不能从服务器得到结果", "Uploading..." : "上传中...", "..." : "...", + "{hours}:{minutes}:{seconds} hour{plural_s} left" : "剩余时间:{hours}:{minutes}:{seconds} ", + "{hours}:{minutes}h" : "{hours}:{minutes}", + "{minutes}:{seconds} minute{plural_s} left" : "剩余分钟:{minutes}:{seconds} ", + "{minutes}:{seconds}m" : "{minutes}:{seconds}", + "{seconds} second{plural_s} left" : "剩下{seconds} 秒", + "{seconds}s" : "{seconds}秒", + "Any moment now..." : "现在任何时候...", + "Soon..." : "很快...", + "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} / {totalSize} ({bitrate})", "File upload is in progress. Leaving the page now will cancel the upload." : "文件正在上传中。现在离开此页会导致上传动作被取消。", "Actions" : "动作", "Download" : "下载", @@ -75,6 +85,7 @@ "_%n byte_::_%n bytes_" : ["%n 字节"], "Favorited" : "已收藏", "Favorite" : "收藏", + "Local link" : "本地链接", "Folder" : "文件夹", "New folder" : "增加文件夹", "{newname} already exists" : "{newname} 已经存在", @@ -105,7 +116,9 @@ "With PHP-FPM it might take 5 minutes for changes to be applied." : "对于 PHP-FPM 这个值改变后可能需要 5 分钟才会生效。", "Missing permissions to edit from here." : "没有从这里进行编辑的权限", "Settings" : "设置", + "Show hidden files" : "显示隐藏文件", "WebDAV" : "WebDAV", + "Use this address to <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">access your Files via WebDAV</a>" : "使用这个地址 <a href=\"%s\" target=\"_blank\" rel=\"noreferrer\">通过 WebDAV 访问您的文件</a>", "No files in here" : "无文件", "Upload some content or sync with your devices!" : "上传一些内容或者与设备同步!", "No entries found in this folder" : "此文件夹中无项目", diff --git a/apps/files_external/3rdparty/composer.json b/apps/files_external/3rdparty/composer.json index 72335c8d891..158478741ec 100644 --- a/apps/files_external/3rdparty/composer.json +++ b/apps/files_external/3rdparty/composer.json @@ -9,7 +9,7 @@ }, "require": { "icewind/smb": "1.1.0", - "icewind/streams": "0.4" + "icewind/streams": "0.4.1" } } diff --git a/apps/files_external/3rdparty/composer.lock b/apps/files_external/3rdparty/composer.lock index 7161ae19a2c..8f324299ff3 100644 --- a/apps/files_external/3rdparty/composer.lock +++ b/apps/files_external/3rdparty/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "8de0823d3d0a167ee24450a111cb67b9", - "content-hash": "6733058865c1765823b31cfbb24552e1", + "hash": "8ed3150b0b3e916ad66558242b4cf2a0", + "content-hash": "70722dcee13b3ac1c1951479b7431c97", "packages": [ { "name": "icewind/smb", @@ -51,16 +51,16 @@ }, { "name": "icewind/streams", - "version": "0.4.0", + "version": "0.4.1", "source": { "type": "git", "url": "https://github.com/icewind1991/Streams.git", - "reference": "9ca40274645a967ecc3408b0ca2e6255ead1d1d3" + "reference": "d3620e8dc410c86c2ba55579803679c4e0b289ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/icewind1991/Streams/zipball/9ca40274645a967ecc3408b0ca2e6255ead1d1d3", - "reference": "9ca40274645a967ecc3408b0ca2e6255ead1d1d3", + "url": "https://api.github.com/repos/icewind1991/Streams/zipball/d3620e8dc410c86c2ba55579803679c4e0b289ac", + "reference": "d3620e8dc410c86c2ba55579803679c4e0b289ac", "shasum": "" }, "require": { @@ -88,7 +88,7 @@ } ], "description": "A set of generic stream wrappers", - "time": "2016-03-17 12:32:25" + "time": "2016-06-02 14:37:52" } ], "packages-dev": [], diff --git a/apps/files_external/3rdparty/composer/autoload_classmap.php b/apps/files_external/3rdparty/composer/autoload_classmap.php index 942dbce7336..0f9a43c6cd7 100644 --- a/apps/files_external/3rdparty/composer/autoload_classmap.php +++ b/apps/files_external/3rdparty/composer/autoload_classmap.php @@ -42,13 +42,6 @@ return array( 'Icewind\\SMB\\Server' => $vendorDir . '/icewind/smb/src/Server.php', 'Icewind\\SMB\\Share' => $vendorDir . '/icewind/smb/src/Share.php', 'Icewind\\SMB\\System' => $vendorDir . '/icewind/smb/src/System.php', - 'Icewind\\SMB\\Test\\AbstractShare' => $vendorDir . '/icewind/smb/tests/AbstractShare.php', - 'Icewind\\SMB\\Test\\NativeShare' => $vendorDir . '/icewind/smb/tests/NativeShare.php', - 'Icewind\\SMB\\Test\\NativeStream' => $vendorDir . '/icewind/smb/tests/NativeStream.php', - 'Icewind\\SMB\\Test\\Parser' => $vendorDir . '/icewind/smb/tests/Parser.php', - 'Icewind\\SMB\\Test\\Server' => $vendorDir . '/icewind/smb/tests/Server.php', - 'Icewind\\SMB\\Test\\Share' => $vendorDir . '/icewind/smb/tests/Share.php', - 'Icewind\\SMB\\Test\\TestCase' => $vendorDir . '/icewind/smb/tests/TestCase.php', 'Icewind\\SMB\\TimeZoneProvider' => $vendorDir . '/icewind/smb/src/TimeZoneProvider.php', 'Icewind\\Streams\\CallbackWrapper' => $vendorDir . '/icewind/streams/src/CallbackWrapper.php', 'Icewind\\Streams\\Directory' => $vendorDir . '/icewind/streams/src/Directory.php', @@ -60,14 +53,6 @@ return array( 'Icewind\\Streams\\Path' => $vendorDir . '/icewind/streams/src/Path.php', 'Icewind\\Streams\\RetryWrapper' => $vendorDir . '/icewind/streams/src/RetryWrapper.php', 'Icewind\\Streams\\SeekableWrapper' => $vendorDir . '/icewind/streams/src/SeekableWrapper.php', - 'Icewind\\Streams\\Tests\\DirectoryFilter' => $vendorDir . '/icewind/streams/tests/DirectoryFilter.php', - 'Icewind\\Streams\\Tests\\DirectoryWrapper' => $vendorDir . '/icewind/streams/tests/DirectoryWrapper.php', - 'Icewind\\Streams\\Tests\\DirectoryWrapperDummy' => $vendorDir . '/icewind/streams/tests/DirectoryWrapper.php', - 'Icewind\\Streams\\Tests\\DirectoryWrapperNull' => $vendorDir . '/icewind/streams/tests/DirectoryWrapper.php', - 'Icewind\\Streams\\Tests\\PartialWrapper' => $vendorDir . '/icewind/streams/tests/RetryWrapper.php', - 'Icewind\\Streams\\Tests\\RetryWrapper' => $vendorDir . '/icewind/streams/tests/RetryWrapper.php', - 'Icewind\\Streams\\Tests\\SeekableWrapper' => $vendorDir . '/icewind/streams/tests/SeekableWrapper.php', - 'Icewind\\Streams\\Tests\\UrlCallBack' => $vendorDir . '/icewind/streams/tests/UrlCallBack.php', 'Icewind\\Streams\\Url' => $vendorDir . '/icewind/streams/src/Url.php', 'Icewind\\Streams\\UrlCallback' => $vendorDir . '/icewind/streams/src/UrlCallBack.php', 'Icewind\\Streams\\Wrapper' => $vendorDir . '/icewind/streams/src/Wrapper.php', diff --git a/apps/files_external/3rdparty/composer/installed.json b/apps/files_external/3rdparty/composer/installed.json index 31c602de3ca..127d2bd3a19 100644 --- a/apps/files_external/3rdparty/composer/installed.json +++ b/apps/files_external/3rdparty/composer/installed.json @@ -1,33 +1,34 @@ [ { - "name": "icewind/streams", - "version": "0.4.0", - "version_normalized": "0.4.0.0", + "name": "icewind/smb", + "version": "v1.1.0", + "version_normalized": "1.1.0.0", "source": { "type": "git", - "url": "https://github.com/icewind1991/Streams.git", - "reference": "9ca40274645a967ecc3408b0ca2e6255ead1d1d3" + "url": "https://github.com/icewind1991/SMB.git", + "reference": "822f924967c68228555cea84ea44765f8e85c601" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/icewind1991/Streams/zipball/9ca40274645a967ecc3408b0ca2e6255ead1d1d3", - "reference": "9ca40274645a967ecc3408b0ca2e6255ead1d1d3", + "url": "https://api.github.com/repos/icewind1991/SMB/zipball/822f924967c68228555cea84ea44765f8e85c601", + "reference": "822f924967c68228555cea84ea44765f8e85c601", "shasum": "" }, "require": { + "icewind/streams": ">=0.2.0", "php": ">=5.3" }, "require-dev": { "phpunit/phpunit": "^4.8", "satooshi/php-coveralls": "v1.0.0" }, - "time": "2016-03-17 12:32:25", + "time": "2016-04-26 13:26:39", "type": "library", - "installation-source": "dist", + "installation-source": "source", "autoload": { "psr-4": { - "Icewind\\Streams\\Tests\\": "tests/", - "Icewind\\Streams\\": "src/" + "Icewind\\SMB\\": "src/", + "Icewind\\SMB\\Test\\": "tests/" } }, "notification-url": "https://packagist.org/downloads/", @@ -40,38 +41,37 @@ "email": "icewind@owncloud.com" } ], - "description": "A set of generic stream wrappers" + "description": "php wrapper for smbclient and libsmbclient-php" }, { - "name": "icewind/smb", - "version": "v1.1.0", - "version_normalized": "1.1.0.0", + "name": "icewind/streams", + "version": "0.4.1", + "version_normalized": "0.4.1.0", "source": { "type": "git", - "url": "https://github.com/icewind1991/SMB.git", - "reference": "822f924967c68228555cea84ea44765f8e85c601" + "url": "https://github.com/icewind1991/Streams.git", + "reference": "d3620e8dc410c86c2ba55579803679c4e0b289ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/icewind1991/SMB/zipball/822f924967c68228555cea84ea44765f8e85c601", - "reference": "822f924967c68228555cea84ea44765f8e85c601", + "url": "https://api.github.com/repos/icewind1991/Streams/zipball/d3620e8dc410c86c2ba55579803679c4e0b289ac", + "reference": "d3620e8dc410c86c2ba55579803679c4e0b289ac", "shasum": "" }, "require": { - "icewind/streams": ">=0.2.0", "php": ">=5.3" }, "require-dev": { "phpunit/phpunit": "^4.8", "satooshi/php-coveralls": "v1.0.0" }, - "time": "2016-04-26 13:26:39", + "time": "2016-06-02 14:37:52", "type": "library", - "installation-source": "source", + "installation-source": "dist", "autoload": { "psr-4": { - "Icewind\\SMB\\": "src/", - "Icewind\\SMB\\Test\\": "tests/" + "Icewind\\Streams\\Tests\\": "tests/", + "Icewind\\Streams\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -84,6 +84,6 @@ "email": "icewind@owncloud.com" } ], - "description": "php wrapper for smbclient and libsmbclient-php" + "description": "A set of generic stream wrappers" } ] diff --git a/apps/files_external/3rdparty/icewind/streams/src/RetryWrapper.php b/apps/files_external/3rdparty/icewind/streams/src/RetryWrapper.php index 84b43f6bd02..8238f19f7c9 100644 --- a/apps/files_external/3rdparty/icewind/streams/src/RetryWrapper.php +++ b/apps/files_external/3rdparty/icewind/streams/src/RetryWrapper.php @@ -44,7 +44,7 @@ class RetryWrapper extends Wrapper { $result = parent::stream_read($count); $bytesReceived = strlen($result); - while ($bytesReceived < $count && !$this->stream_eof()) { + while (strlen($result) > 0 && $bytesReceived < $count && !$this->stream_eof()) { $result .= parent::stream_read($count - $bytesReceived); $bytesReceived = strlen($result); } @@ -54,11 +54,13 @@ class RetryWrapper extends Wrapper { public function stream_write($data) { $bytesToSend = strlen($data); - $result = parent::stream_write($data); + $bytesWritten = parent::stream_write($data); + $result = $bytesWritten; - while ($result < $bytesToSend && !$this->stream_eof()) { + while ($bytesWritten > 0 && $result < $bytesToSend && !$this->stream_eof()) { $dataLeft = substr($data, $result); - $result += parent::stream_write($dataLeft); + $bytesWritten = parent::stream_write($dataLeft); + $result += $bytesWritten; } return $result; diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js index 2477f513db3..d210c158ec1 100644 --- a/apps/files_external/js/settings.js +++ b/apps/files_external/js/settings.js @@ -854,7 +854,7 @@ MountConfigListView.prototype = _.extend({ this.configureAuthMechanism($tr, storageConfig.authMechanism, onCompletion); if (storageConfig.backendOptions) { - $td.children().each(function() { + $td.find('input, select').each(function() { var input = $(this); var val = storageConfig.backendOptions[input.data('parameter')]; if (val !== undefined) { @@ -1001,7 +1001,7 @@ MountConfigListView.prototype = _.extend({ newElement = $('<input type="password" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" placeholder="'+ trimmedPlaceholder+'" />'); } else if (placeholder.type === MountConfigListView.ParameterTypes.BOOLEAN) { var checkboxId = _.uniqueId('checkbox_'); - newElement = $('<input type="checkbox" id="'+checkboxId+'" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" /><label for="'+checkboxId+'">'+ trimmedPlaceholder+'</label>'); + newElement = $('<div><label><input type="checkbox" id="'+checkboxId+'" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" />'+ trimmedPlaceholder+'</label></div>'); } else if (placeholder.type === MountConfigListView.ParameterTypes.HIDDEN) { newElement = $('<input type="hidden" class="'+classes.join(' ')+'" data-parameter="'+parameter+'" />'); } else { diff --git a/apps/files_external/l10n/nl.js b/apps/files_external/l10n/nl.js index 71c8d2aeac3..26ff4881eb3 100644 --- a/apps/files_external/l10n/nl.js +++ b/apps/files_external/l10n/nl.js @@ -7,6 +7,8 @@ OC.L10N.register( "Step 1 failed. Exception: %s" : "Stap 1 is mislukt. Uitzondering: %s", "Step 2 failed. Exception: %s" : "Stap 2 is mislukt. Uitzondering: %s", "External storage" : "Externe opslag", + "Dropbox App Configuration" : "Dropbox app configuratie", + "Google Drive App Configuration" : "Google Drive app configuratie", "Personal" : "Persoonlijk", "System" : "Systeem", "Grant access" : "Sta toegang toe", @@ -16,6 +18,7 @@ OC.L10N.register( "Error generating key pair" : "Fout bij genereren sleutelpaar", "All users. Type to select user or group." : "Alle gebruikers. Tikken om een gebruiker of groep te selecteren.", "(group)" : "(groep)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibiliteit met Mac NFD encoding (traag)", "Admin defined" : "Beheerder gedefinieerd", "Saved" : "Bewaard", "Empty response from the server" : "Lege reactie van de server", diff --git a/apps/files_external/l10n/nl.json b/apps/files_external/l10n/nl.json index 6603af23bea..958d1f7059c 100644 --- a/apps/files_external/l10n/nl.json +++ b/apps/files_external/l10n/nl.json @@ -5,6 +5,8 @@ "Step 1 failed. Exception: %s" : "Stap 1 is mislukt. Uitzondering: %s", "Step 2 failed. Exception: %s" : "Stap 2 is mislukt. Uitzondering: %s", "External storage" : "Externe opslag", + "Dropbox App Configuration" : "Dropbox app configuratie", + "Google Drive App Configuration" : "Google Drive app configuratie", "Personal" : "Persoonlijk", "System" : "Systeem", "Grant access" : "Sta toegang toe", @@ -14,6 +16,7 @@ "Error generating key pair" : "Fout bij genereren sleutelpaar", "All users. Type to select user or group." : "Alle gebruikers. Tikken om een gebruiker of groep te selecteren.", "(group)" : "(groep)", + "Compatibility with Mac NFD encoding (slow)" : "Compatibiliteit met Mac NFD encoding (traag)", "Admin defined" : "Beheerder gedefinieerd", "Saved" : "Bewaard", "Empty response from the server" : "Lege reactie van de server", diff --git a/apps/files_external/lib/Controller/GlobalStoragesController.php b/apps/files_external/lib/Controller/GlobalStoragesController.php index 471e3b51593..71bef7dc714 100644 --- a/apps/files_external/lib/Controller/GlobalStoragesController.php +++ b/apps/files_external/lib/Controller/GlobalStoragesController.php @@ -127,6 +127,7 @@ class GlobalStoragesController extends StoragesController { * @param array $applicableUsers users for which to mount the storage * @param array $applicableGroups groups for which to mount the storage * @param int $priority priority + * @param bool $testOnly whether to storage should only test the connection or do more things * * @return DataResponse */ diff --git a/apps/files_external/lib/Controller/StoragesController.php b/apps/files_external/lib/Controller/StoragesController.php index e50426f4888..c1216008ffa 100644 --- a/apps/files_external/lib/Controller/StoragesController.php +++ b/apps/files_external/lib/Controller/StoragesController.php @@ -237,6 +237,7 @@ abstract class StoragesController extends Controller { * on whether the remote storage is available or not. * * @param StorageConfig $storage storage configuration + * @param bool $testOnly whether to storage should only test the connection or do more things */ protected function updateStorageStatus(StorageConfig &$storage, $testOnly = true) { try { @@ -291,6 +292,7 @@ abstract class StoragesController extends Controller { * Get an external storage entry. * * @param int $id storage id + * @param bool $testOnly whether to storage should only test the connection or do more things * * @return DataResponse */ diff --git a/apps/files_external/lib/Controller/UserGlobalStoragesController.php b/apps/files_external/lib/Controller/UserGlobalStoragesController.php index f65e578507d..3006e72666d 100644 --- a/apps/files_external/lib/Controller/UserGlobalStoragesController.php +++ b/apps/files_external/lib/Controller/UserGlobalStoragesController.php @@ -107,6 +107,7 @@ class UserGlobalStoragesController extends StoragesController { * Get an external storage entry. * * @param int $id storage id + * @param bool $testOnly whether to storage should only test the connection or do more things * @return DataResponse * * @NoAdminRequired @@ -139,6 +140,7 @@ class UserGlobalStoragesController extends StoragesController { * * @param int $id storage id * @param array $backendOptions backend-specific options + * @param bool $testOnly whether to storage should only test the connection or do more things * * @return DataResponse * diff --git a/apps/files_external/lib/Controller/UserStoragesController.php b/apps/files_external/lib/Controller/UserStoragesController.php index 28663090e89..5dc23aad769 100644 --- a/apps/files_external/lib/Controller/UserStoragesController.php +++ b/apps/files_external/lib/Controller/UserStoragesController.php @@ -159,6 +159,7 @@ class UserStoragesController extends StoragesController { * @param string $authMechanism authentication mechanism identifier * @param array $backendOptions backend-specific options * @param array $mountOptions backend-specific mount options + * @param bool $testOnly whether to storage should only test the connection or do more things * * @return DataResponse * diff --git a/apps/files_external/lib/Lib/Storage/Dropbox.php b/apps/files_external/lib/Lib/Storage/Dropbox.php index f15cbba0469..f0f62f9f35a 100644 --- a/apps/files_external/lib/Lib/Storage/Dropbox.php +++ b/apps/files_external/lib/Lib/Storage/Dropbox.php @@ -32,6 +32,7 @@ namespace OCA\Files_External\Lib\Storage; use GuzzleHttp\Exception\RequestException; use Icewind\Streams\IteratorDirectory; use Icewind\Streams\RetryWrapper; +use OCP\Files\StorageNotAvailableException; require_once __DIR__ . '/../../../3rdparty/Dropbox/autoload.php'; @@ -94,6 +95,8 @@ class Dropbox extends \OC\Files\Storage\Common { if ($list) { try { $response = $this->dropbox->getMetaData($path); + } catch (\Dropbox_Exception_Forbidden $e) { + throw new StorageNotAvailableException('Dropbox API rate limit exceeded', StorageNotAvailableException::STATUS_ERROR, $e); } catch (\Exception $exception) { \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR); return false; @@ -127,6 +130,8 @@ class Dropbox extends \OC\Files\Storage\Common { return $response; } return null; + } catch (\Dropbox_Exception_Forbidden $e) { + throw new StorageNotAvailableException('Dropbox API rate limit exceeded', StorageNotAvailableException::STATUS_ERROR, $e); } catch (\Exception $exception) { if ($exception instanceof \Dropbox_Exception_NotFound) { // don't log, might be a file_exist check diff --git a/apps/files_external/lib/Lib/Storage/Google.php b/apps/files_external/lib/Lib/Storage/Google.php index 96f12800c10..0b617aafe9d 100644 --- a/apps/files_external/lib/Lib/Storage/Google.php +++ b/apps/files_external/lib/Lib/Storage/Google.php @@ -168,11 +168,11 @@ class Google extends \OC\Files\Storage\Common { $path = trim($path, '/'); $this->driveFiles[$path] = $file; if ($file === false) { - // Set all child paths as false + // Remove all children $len = strlen($path); foreach ($this->driveFiles as $key => $file) { if (substr($key, 0, $len) === $path) { - $this->driveFiles[$key] = false; + unset($this->driveFiles[$key]); } } } diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php index c9cc40b0ba0..6662f637039 100644 --- a/apps/files_external/templates/settings.php +++ b/apps/files_external/templates/settings.php @@ -51,13 +51,17 @@ break; case DefinitionParameter::VALUE_BOOLEAN: ?> <?php $checkboxId = uniqid("checkbox_"); ?> + <div> + <label> <input type="checkbox" id="<?php p($checkboxId); ?>" <?php if (!empty($classes)): ?> class="checkbox <?php p(implode(' ', $classes)); ?>"<?php endif; ?> data-parameter="<?php p($parameter->getName()); ?>" <?php if ($value === true): ?> checked="checked"<?php endif; ?> /> - <label for="<?php p($checkboxId); ?>"><?php p($placeholder); ?></label> + <?php p($placeholder); ?> + </label> + </div> <?php break; case DefinitionParameter::VALUE_HIDDEN: ?> diff --git a/apps/files_external/tests/env/start-swift-ceph.sh b/apps/files_external/tests/env/start-swift-ceph.sh index 1e417c69057..ba17b8f42dd 100755 --- a/apps/files_external/tests/env/start-swift-ceph.sh +++ b/apps/files_external/tests/env/start-swift-ceph.sh @@ -24,6 +24,9 @@ docker_image=xenopathic/ceph-keystone echo "Fetch recent ${docker_image} docker image" docker pull ${docker_image} +# debian 8 default comes without loaded loop module. please run "sudo modprobe loop" if you get an error here: +lsmod | grep '^loop' || { echo "Error: kernel module loop not loaded. Needed by docker image ${docker_image}"; exit 1; } + # retrieve current folder to place the config in the parent folder thisFolder=`echo $0 | sed 's#env/start-swift-ceph\.sh##'` diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php index 5740574ec4c..c6ae6903eec 100644 --- a/apps/files_sharing/appinfo/app.php +++ b/apps/files_sharing/appinfo/app.php @@ -32,14 +32,14 @@ $l = \OC::$server->getL10N('files_sharing'); \OC::$CLASSPATH['OC_Share_Backend_Folder'] = 'files_sharing/lib/share/folder.php'; \OC::$CLASSPATH['OC\Files\Storage\Shared'] = 'files_sharing/lib/sharedstorage.php'; -$application = new \OCA\Files_Sharing\AppInfo\Application(); -$application->registerMountProviders(); - \OCA\Files_Sharing\Helper::registerHooks(); \OCP\Share::registerBackend('file', 'OC_Share_Backend_File'); \OCP\Share::registerBackend('folder', 'OC_Share_Backend_Folder', 'file'); +$application = new \OCA\Files_Sharing\AppInfo\Application(); +$application->registerMountProviders(); + $eventDispatcher = \OC::$server->getEventDispatcher(); $eventDispatcher->addListener( 'OCA\Files::loadAdditionalScripts', diff --git a/apps/files_sharing/l10n/he.js b/apps/files_sharing/l10n/he.js index 32fe49005a1..985e5807e5a 100644 --- a/apps/files_sharing/l10n/he.js +++ b/apps/files_sharing/l10n/he.js @@ -27,6 +27,25 @@ OC.L10N.register( "Invalid ownCloud url" : "נתיב ownCloud לא חוקי", "Shared by" : "שותף על־ידי", "Sharing" : "שיתוף", + "Share API is disabled" : "שיתוף API מנוטרל", + "Wrong share ID, share doesn't exist" : "מספר זיהוי שיתוף שגוי, שיתוף אינו קיים", + "Could not delete share" : "לא ניתן היה למחוק את השיתוף", + "Please specify a file or folder path" : "יש לספק נתיב לקובץ או תיקייה", + "Wrong path, file/folder doesn't exist" : "נתיב שגוי, קובץ/תיקייה אינם קיימים", + "Please specify a valid user" : "יש לספק משתמש חוקי", + "Group sharing is disabled by the administrator" : "שיתוף קבוצתי מנוטרל על ידי המנהל", + "Please specify a valid group" : "יש לספק קבוצה חוקית", + "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 failed because the back end does not allow shares from type %s" : "שיתוף %s נכשל כיוון שהצד האחרוי ינו מאפשר שיתוף מסוג %s", + "Unknown share type" : "סוג שיתוף אינו מוכר", + "Not a directory" : "אינה תיקייה", + "Could not lock path" : "לא ניתן היה לנעול נתיב", + "Can't change permissions for public share links" : "לא ניתן לשנות הרשאות לקישורי שיתוף ציבוריים", + "Wrong or no update parameter given" : "משתנה עדכון שניתן שגוי או לא קיים", + "Cannot increase permissions" : "לא ניתן להעלות הרשאות", "A file or folder has been <strong>shared</strong>" : "קובץ או תיקייה <strong>שותפו<strong/>", "A file or folder was shared from <strong>another server</strong>" : "קובץ או תיקייה שותפו מ- <strong>שרת אחר</strong>", "A public shared file or folder was <strong>downloaded</strong>" : "קובץ או תיקייה עם שיתוף ציבורי <strong>הורדו</strong>", diff --git a/apps/files_sharing/l10n/he.json b/apps/files_sharing/l10n/he.json index 4aa639d8e50..247c8e2239d 100644 --- a/apps/files_sharing/l10n/he.json +++ b/apps/files_sharing/l10n/he.json @@ -25,6 +25,25 @@ "Invalid ownCloud url" : "נתיב ownCloud לא חוקי", "Shared by" : "שותף על־ידי", "Sharing" : "שיתוף", + "Share API is disabled" : "שיתוף API מנוטרל", + "Wrong share ID, share doesn't exist" : "מספר זיהוי שיתוף שגוי, שיתוף אינו קיים", + "Could not delete share" : "לא ניתן היה למחוק את השיתוף", + "Please specify a file or folder path" : "יש לספק נתיב לקובץ או תיקייה", + "Wrong path, file/folder doesn't exist" : "נתיב שגוי, קובץ/תיקייה אינם קיימים", + "Please specify a valid user" : "יש לספק משתמש חוקי", + "Group sharing is disabled by the administrator" : "שיתוף קבוצתי מנוטרל על ידי המנהל", + "Please specify a valid group" : "יש לספק קבוצה חוקית", + "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 failed because the back end does not allow shares from type %s" : "שיתוף %s נכשל כיוון שהצד האחרוי ינו מאפשר שיתוף מסוג %s", + "Unknown share type" : "סוג שיתוף אינו מוכר", + "Not a directory" : "אינה תיקייה", + "Could not lock path" : "לא ניתן היה לנעול נתיב", + "Can't change permissions for public share links" : "לא ניתן לשנות הרשאות לקישורי שיתוף ציבוריים", + "Wrong or no update parameter given" : "משתנה עדכון שניתן שגוי או לא קיים", + "Cannot increase permissions" : "לא ניתן להעלות הרשאות", "A file or folder has been <strong>shared</strong>" : "קובץ או תיקייה <strong>שותפו<strong/>", "A file or folder was shared from <strong>another server</strong>" : "קובץ או תיקייה שותפו מ- <strong>שרת אחר</strong>", "A public shared file or folder was <strong>downloaded</strong>" : "קובץ או תיקייה עם שיתוף ציבורי <strong>הורדו</strong>", diff --git a/apps/files_sharing/lib/AppInfo/Application.php b/apps/files_sharing/lib/AppInfo/Application.php index 2907ceaaea2..fda16c7acac 100644 --- a/apps/files_sharing/lib/AppInfo/Application.php +++ b/apps/files_sharing/lib/AppInfo/Application.php @@ -115,7 +115,8 @@ class Application extends App { $server = $c->query('ServerContainer'); return new MountProvider( $server->getConfig(), - $server->getShareManager() + $server->getShareManager(), + $server->getLogger() ); }); diff --git a/apps/files_sharing/lib/External/Storage.php b/apps/files_sharing/lib/External/Storage.php index a12b9597dbd..ca99393a1e0 100644 --- a/apps/files_sharing/lib/External/Storage.php +++ b/apps/files_sharing/lib/External/Storage.php @@ -89,8 +89,17 @@ class Storage extends DAV implements ISharedStorage { 'user' => $options['token'], 'password' => (string)$options['password'] )); + } - $this->getWatcher()->setPolicy(\OC\Files\Cache\Watcher::CHECK_ONCE); + public function getWatcher($path = '', $storage = null) { + if (!$storage) { + $storage = $this; + } + if (!isset($this->watcher)) { + $this->watcher = new Watcher($storage); + $this->watcher->setPolicy(\OC\Files\Cache\Watcher::CHECK_ONCE); + } + return $this->watcher; } public function getRemoteUser() { diff --git a/apps/dav/appinfo/install.php b/apps/files_sharing/lib/External/Watcher.php index d2ee06cc9fe..6be35bdeb3b 100644 --- a/apps/dav/appinfo/install.php +++ b/apps/files_sharing/lib/External/Watcher.php @@ -1,7 +1,6 @@ <?php /** - * @author Joas Schilling <nickvergessen@owncloud.com> - * @author Thomas Müller <thomas.mueller@tmit.eu> + * @author Robin Appelman <icewind@owncloud.com> * * @copyright Copyright (c) 2016, ownCloud, Inc. * @license AGPL-3.0 @@ -20,7 +19,15 @@ * */ -use OCA\DAV\AppInfo\Application; +namespace OCA\Files_Sharing\External; -$app = new Application(); -$app->generateBirthdays(); +class Watcher extends \OC\Files\Cache\Watcher { + /** + * remove deleted files in $path from the cache + * + * @param string $path + */ + public function cleanFolder($path) { + // not needed, the scanner takes care of this + } +} diff --git a/apps/files_sharing/lib/Helper.php b/apps/files_sharing/lib/Helper.php index e4640f82eb6..2353a281b7e 100644 --- a/apps/files_sharing/lib/Helper.php +++ b/apps/files_sharing/lib/Helper.php @@ -277,19 +277,23 @@ class Helper { /** * get default share folder * + * @param \OC\Files\View * @return string */ - public static function getShareFolder() { + public static function getShareFolder($view = null) { + if ($view === null) { + $view = Filesystem::getView(); + } $shareFolder = \OC::$server->getConfig()->getSystemValue('share_folder', '/'); $shareFolder = Filesystem::normalizePath($shareFolder); - if (!Filesystem::file_exists($shareFolder)) { + if (!$view->file_exists($shareFolder)) { $dir = ''; $subdirs = explode('/', $shareFolder); foreach ($subdirs as $subdir) { $dir = $dir . '/' . $subdir; - if (!Filesystem::is_dir($dir)) { - Filesystem::mkdir($dir); + if (!$view->is_dir($dir)) { + $view->mkdir($dir); } } } diff --git a/apps/files_sharing/lib/MountProvider.php b/apps/files_sharing/lib/MountProvider.php index d8f355f2fd3..a9ae48860c2 100644 --- a/apps/files_sharing/lib/MountProvider.php +++ b/apps/files_sharing/lib/MountProvider.php @@ -26,6 +26,7 @@ namespace OCA\Files_Sharing; use OCP\Files\Config\IMountProvider; use OCP\Files\Storage\IStorageFactory; use OCP\IConfig; +use OCP\ILogger; use OCP\IUser; use OCP\Share\IManager; @@ -41,12 +42,19 @@ class MountProvider implements IMountProvider { protected $shareManager; /** + * @var ILogger + */ + protected $logger; + + /** * @param \OCP\IConfig $config * @param IManager $shareManager + * @param ILogger $logger */ - public function __construct(IConfig $config, IManager $shareManager) { + public function __construct(IConfig $config, IManager $shareManager, ILogger $logger) { $this->config = $config; $this->shareManager = $shareManager; + $this->logger = $logger; } @@ -67,15 +75,20 @@ class MountProvider implements IMountProvider { $mounts = []; foreach ($shares as $share) { - $mounts[] = new SharedMount( - '\OC\Files\Storage\Shared', - $mounts, - [ - 'user' => $user->getUID(), - 'newShare' => $share, - ], - $storageFactory - ); + try { + $mounts[] = new SharedMount( + '\OC\Files\Storage\Shared', + $mounts, + [ + 'user' => $user->getUID(), + 'newShare' => $share, + ], + $storageFactory + ); + } catch (\Exception $e) { + $this->logger->logException($e); + $this->logger->error('Error while trying to create shared mount'); + } } // array_filter removes the null values from the array diff --git a/apps/files_sharing/lib/SharedMount.php b/apps/files_sharing/lib/SharedMount.php index 83527053f43..2b066bd2d94 100644 --- a/apps/files_sharing/lib/SharedMount.php +++ b/apps/files_sharing/lib/SharedMount.php @@ -81,7 +81,7 @@ class SharedMount extends MountPoint implements MoveableMount { $parent = dirname($share->getTarget()); if (!$this->recipientView->is_dir($parent)) { - $parent = Helper::getShareFolder(); + $parent = Helper::getShareFolder($this->recipientView); } $newMountPoint = $this->generateUniqueTarget( diff --git a/apps/systemtags/l10n/ca.js b/apps/systemtags/l10n/ca.js index 20ec2d4edb1..46d9d409662 100644 --- a/apps/systemtags/l10n/ca.js +++ b/apps/systemtags/l10n/ca.js @@ -2,6 +2,27 @@ OC.L10N.register( "systemtags", { "Tags" : "Etiquetes", + "Tagged files" : "Fitxers marcats", + "Select tags to filter by" : "Selecciona les marques per filtrar-ne", + "Please select tags to filter by" : "Si us plau selecciona les marques per filtrar-ne", + "No files found for the selected tags" : "No s'han trobat fitxers per les marques sel·leccionades", + "<strong>System tags</strong> for a file have been modified" : "Les <strong>Marques de Sistema</strong> d'un fitxer s'han modificat", + "You assigned system tag %3$s" : "Has assignat la marca de sistema %3$s", + "%1$s assigned system tag %3$s" : "%1$s ha assignat la marca de sistema %3$s", + "You unassigned system tag %3$s" : "Has des-assignat la marca de sistema %3$s", + "%1$s unassigned system tag %3$s" : "%1$s ha des-assignat la marca de sistema %3$s", + "You created system tag %2$s" : "Has creat la marca de sistema %2$s", + "%1$s created system tag %2$s" : "%1$s ha creat la marca de sistema %2$s", + "You deleted system tag %2$s" : "Has esborrat la marca de sistema %2$s", + "%1$s deleted system tag %2$s" : "%1$s ha esborrat la marca de sistema %2$s", + "You updated system tag %3$s to %2$s" : "Has actualitzat les marques de sistema de la %3$s a la %2$s", + "%1$s updated system tag %3$s to %2$s" : "%1$s ha actualitzat les marques de sistema de la %3$s a la %2$s", + "You assigned system tag %3$s to %2$s" : "Has assignat les marques de sistema de la %3$s a la %2$s", + "%1$s assigned system tag %3$s to %2$s" : "%1$s ha assignat les marques de sistema de la %3$s a la %2$s", + "You unassigned system tag %3$s from %2$s" : "Has des-assignat les marques de sistema de la %3$s a la %2$s", + "%1$s unassigned system tag %3$s from %2$s" : "%1$s ha des-assignat les marques de sistema de la %3$s a la %2$s", + "%s (restricted)" : "%s (restringit)", + "%s (invisible)" : "%s (invisible)", "No files in here" : "No hi ha arxius", "No entries found in this folder" : "No hi ha entrades en aquesta carpeta", "Name" : "Nom", diff --git a/apps/systemtags/l10n/ca.json b/apps/systemtags/l10n/ca.json index 87c8c678761..9bb1d6fba83 100644 --- a/apps/systemtags/l10n/ca.json +++ b/apps/systemtags/l10n/ca.json @@ -1,5 +1,26 @@ { "translations": { "Tags" : "Etiquetes", + "Tagged files" : "Fitxers marcats", + "Select tags to filter by" : "Selecciona les marques per filtrar-ne", + "Please select tags to filter by" : "Si us plau selecciona les marques per filtrar-ne", + "No files found for the selected tags" : "No s'han trobat fitxers per les marques sel·leccionades", + "<strong>System tags</strong> for a file have been modified" : "Les <strong>Marques de Sistema</strong> d'un fitxer s'han modificat", + "You assigned system tag %3$s" : "Has assignat la marca de sistema %3$s", + "%1$s assigned system tag %3$s" : "%1$s ha assignat la marca de sistema %3$s", + "You unassigned system tag %3$s" : "Has des-assignat la marca de sistema %3$s", + "%1$s unassigned system tag %3$s" : "%1$s ha des-assignat la marca de sistema %3$s", + "You created system tag %2$s" : "Has creat la marca de sistema %2$s", + "%1$s created system tag %2$s" : "%1$s ha creat la marca de sistema %2$s", + "You deleted system tag %2$s" : "Has esborrat la marca de sistema %2$s", + "%1$s deleted system tag %2$s" : "%1$s ha esborrat la marca de sistema %2$s", + "You updated system tag %3$s to %2$s" : "Has actualitzat les marques de sistema de la %3$s a la %2$s", + "%1$s updated system tag %3$s to %2$s" : "%1$s ha actualitzat les marques de sistema de la %3$s a la %2$s", + "You assigned system tag %3$s to %2$s" : "Has assignat les marques de sistema de la %3$s a la %2$s", + "%1$s assigned system tag %3$s to %2$s" : "%1$s ha assignat les marques de sistema de la %3$s a la %2$s", + "You unassigned system tag %3$s from %2$s" : "Has des-assignat les marques de sistema de la %3$s a la %2$s", + "%1$s unassigned system tag %3$s from %2$s" : "%1$s ha des-assignat les marques de sistema de la %3$s a la %2$s", + "%s (restricted)" : "%s (restringit)", + "%s (invisible)" : "%s (invisible)", "No files in here" : "No hi ha arxius", "No entries found in this folder" : "No hi ha entrades en aquesta carpeta", "Name" : "Nom", diff --git a/apps/systemtags/l10n/nl.js b/apps/systemtags/l10n/nl.js index 3b4aa7eb56d..567b14aa1f4 100644 --- a/apps/systemtags/l10n/nl.js +++ b/apps/systemtags/l10n/nl.js @@ -21,6 +21,7 @@ OC.L10N.register( "%1$s assigned system tag %3$s to %2$s" : "%1$s wees systeem tag %3$s aan %2$s toe", "You unassigned system tag %3$s from %2$s" : "Je maakte toewijzing systeem tag %3$s van %2$s ongedaan", "%1$s unassigned system tag %3$s from %2$s" : "%1$s verwijderde systeem tag %3$s van %2$s", + "%s (restricted)" : "%s (beperkt)", "%s (invisible)" : "%s (onzichtbaar)", "No files in here" : "Hier geen bestanden", "No entries found in this folder" : "Niets gevonden in deze map", diff --git a/apps/systemtags/l10n/nl.json b/apps/systemtags/l10n/nl.json index f941ce3a4a6..f7d83699c2d 100644 --- a/apps/systemtags/l10n/nl.json +++ b/apps/systemtags/l10n/nl.json @@ -19,6 +19,7 @@ "%1$s assigned system tag %3$s to %2$s" : "%1$s wees systeem tag %3$s aan %2$s toe", "You unassigned system tag %3$s from %2$s" : "Je maakte toewijzing systeem tag %3$s van %2$s ongedaan", "%1$s unassigned system tag %3$s from %2$s" : "%1$s verwijderde systeem tag %3$s van %2$s", + "%s (restricted)" : "%s (beperkt)", "%s (invisible)" : "%s (onzichtbaar)", "No files in here" : "Hier geen bestanden", "No entries found in this folder" : "Niets gevonden in deze map", diff --git a/apps/systemtags/lib/Activity/Listener.php b/apps/systemtags/lib/Activity/Listener.php index 9b6597119c6..435109053bd 100644 --- a/apps/systemtags/lib/Activity/Listener.php +++ b/apps/systemtags/lib/Activity/Listener.php @@ -188,6 +188,10 @@ class Listener { $activity->setAffectedUser($user); foreach ($tags as $tag) { + // don't publish activity for non-admins if tag is invisible + if (!$tag->isUserVisible() && !$this->groupManager->isAdmin($user)) { + continue; + } if ($event->getEvent() === MapperEvent::EVENT_ASSIGN) { $activity->setSubject(Extension::ASSIGN_TAG, [ $actor, diff --git a/apps/updatenotification/l10n/ca.js b/apps/updatenotification/l10n/ca.js index 5f6db3199a6..10e7328cb07 100644 --- a/apps/updatenotification/l10n/ca.js +++ b/apps/updatenotification/l10n/ca.js @@ -1,7 +1,19 @@ OC.L10N.register( "updatenotification", { + "Update notifications" : "Notificacions d'actualització", "{version} is available. Get more information on how to update." : "Hi ha disponible la versió {version}. Obtingueu més informació sobre com actualitzar.", - "Updater" : "Actualitzador" + "Updated channel" : "Canal actualitzat", + "ownCloud core" : "Nucli d'ownCloud", + "Update for %1$s to version %2$s is available." : "L'actualització per %1$s a la versió %2$s està disponible.", + "Updater" : "Actualitzador", + "A new version is available: %s" : "Una nova versió està disponible: %s", + "Open updater" : "Obrir actualitzador", + "Your version is up to date." : "La teva versió està actualitzada.", + "Checked on %s" : "Comprovat en %s", + "Update channel:" : "Actualitzar canal:", + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Sempre podràs actualitzar a una versió més recent / canal experimental. Però mai es pot fer un \"downgrade\" a un canal més estable.", + "Notify members of the following groups about available updates:" : "Notificar als membres dels següents grups sobre les actualitzacions disponibles:", + "Only notification for app updates are available, because the selected update channel for ownCloud itself does not allow notifications." : "Només notificació d'actualitzacions d'aplicacions estan disponibles, degut a que el canal d'actualització per ownCloud seleccionat no permet les notificacions." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/ca.json b/apps/updatenotification/l10n/ca.json index 74b1a731e90..673db0accd8 100644 --- a/apps/updatenotification/l10n/ca.json +++ b/apps/updatenotification/l10n/ca.json @@ -1,5 +1,17 @@ { "translations": { + "Update notifications" : "Notificacions d'actualització", "{version} is available. Get more information on how to update." : "Hi ha disponible la versió {version}. Obtingueu més informació sobre com actualitzar.", - "Updater" : "Actualitzador" + "Updated channel" : "Canal actualitzat", + "ownCloud core" : "Nucli d'ownCloud", + "Update for %1$s to version %2$s is available." : "L'actualització per %1$s a la versió %2$s està disponible.", + "Updater" : "Actualitzador", + "A new version is available: %s" : "Una nova versió està disponible: %s", + "Open updater" : "Obrir actualitzador", + "Your version is up to date." : "La teva versió està actualitzada.", + "Checked on %s" : "Comprovat en %s", + "Update channel:" : "Actualitzar canal:", + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Sempre podràs actualitzar a una versió més recent / canal experimental. Però mai es pot fer un \"downgrade\" a un canal més estable.", + "Notify members of the following groups about available updates:" : "Notificar als membres dels següents grups sobre les actualitzacions disponibles:", + "Only notification for app updates are available, because the selected update channel for ownCloud itself does not allow notifications." : "Només notificació d'actualitzacions d'aplicacions estan disponibles, degut a que el canal d'actualització per ownCloud seleccionat no permet les notificacions." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/nl.js b/apps/updatenotification/l10n/nl.js index d7bc20bcfea..93b65f6976d 100644 --- a/apps/updatenotification/l10n/nl.js +++ b/apps/updatenotification/l10n/nl.js @@ -1,14 +1,19 @@ OC.L10N.register( "updatenotification", { + "Update notifications" : "Bijwerken meldingen", "{version} is available. Get more information on how to update." : "{version} is beschikbaar. Meer informatie over het bijwerken.", "Updated channel" : "Bijgewerkt kanaal", + "ownCloud core" : "ownCloud core", + "Update for %1$s to version %2$s is available." : "Update voor %1$s naar versie %2$s is beschikbaar.", "Updater" : "Updater", "A new version is available: %s" : "Er is een nieuwe versie beschikbaar: %s", "Open updater" : "Open updater", "Your version is up to date." : "Uw versie is up to date.", "Checked on %s" : "Gecontroleerd op %s", "Update channel:" : "Bijwerkkanaal:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "U kunt altijd updaten naar een nieuwere versie of experimenteel kanaal. Maar terug naar een oudere versie of een stabieler kanaal is niet mogelijk." + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "U kunt altijd updaten naar een nieuwere versie of experimenteel kanaal. Maar terug naar een oudere versie of een stabieler kanaal is niet mogelijk.", + "Notify members of the following groups about available updates:" : "Geef een melding over beschikbare updates aan leden van de volgende groepen:", + "Only notification for app updates are available, because the selected update channel for ownCloud itself does not allow notifications." : "Er zin alleen meldingen voor app updates beschikbaar, omdat het geselecteerde ownCloud update kanaal zelf geen meldingen toestaat." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/updatenotification/l10n/nl.json b/apps/updatenotification/l10n/nl.json index caecfa275f5..4c028cc5964 100644 --- a/apps/updatenotification/l10n/nl.json +++ b/apps/updatenotification/l10n/nl.json @@ -1,12 +1,17 @@ { "translations": { + "Update notifications" : "Bijwerken meldingen", "{version} is available. Get more information on how to update." : "{version} is beschikbaar. Meer informatie over het bijwerken.", "Updated channel" : "Bijgewerkt kanaal", + "ownCloud core" : "ownCloud core", + "Update for %1$s to version %2$s is available." : "Update voor %1$s naar versie %2$s is beschikbaar.", "Updater" : "Updater", "A new version is available: %s" : "Er is een nieuwe versie beschikbaar: %s", "Open updater" : "Open updater", "Your version is up to date." : "Uw versie is up to date.", "Checked on %s" : "Gecontroleerd op %s", "Update channel:" : "Bijwerkkanaal:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "U kunt altijd updaten naar een nieuwere versie of experimenteel kanaal. Maar terug naar een oudere versie of een stabieler kanaal is niet mogelijk." + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "U kunt altijd updaten naar een nieuwere versie of experimenteel kanaal. Maar terug naar een oudere versie of een stabieler kanaal is niet mogelijk.", + "Notify members of the following groups about available updates:" : "Geef een melding over beschikbare updates aan leden van de volgende groepen:", + "Only notification for app updates are available, because the selected update channel for ownCloud itself does not allow notifications." : "Er zin alleen meldingen voor app updates beschikbaar, omdat het geselecteerde ownCloud update kanaal zelf geen meldingen toestaat." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/pl.js b/apps/updatenotification/l10n/pl.js index d86fdf3c243..ffeb1b0601f 100644 --- a/apps/updatenotification/l10n/pl.js +++ b/apps/updatenotification/l10n/pl.js @@ -12,6 +12,8 @@ OC.L10N.register( "Your version is up to date." : "Posiadasz aktualną wersję.", "Checked on %s" : "Sprawdzone na %s", "Update channel:" : "Kanał aktualizacji:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Możesz zawsze zaktualizować swoją wersję do nowego / ekperymentalnego kanału. Jednakże nie możesz powrócić do poprzedniej stabilniejszej wersji. " + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Możesz zawsze zaktualizować swoją wersję do nowego / ekperymentalnego kanału. Jednakże nie możesz powrócić do poprzedniej stabilniejszej wersji. ", + "Notify members of the following groups about available updates:" : "Powiadom członków następujących grup o dostępnych aktualizacjach: ", + "Only notification for app updates are available, because the selected update channel for ownCloud itself does not allow notifications." : "Tylko powiadomienia o aktualizacjach aplikacji są dostępne, gdyż wybrany kanał aktualizacji ownCloud nie zezwala na powiadomienia. " }, "nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"); diff --git a/apps/updatenotification/l10n/pl.json b/apps/updatenotification/l10n/pl.json index b5d7132d9f0..6f03b0105bf 100644 --- a/apps/updatenotification/l10n/pl.json +++ b/apps/updatenotification/l10n/pl.json @@ -10,6 +10,8 @@ "Your version is up to date." : "Posiadasz aktualną wersję.", "Checked on %s" : "Sprawdzone na %s", "Update channel:" : "Kanał aktualizacji:", - "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Możesz zawsze zaktualizować swoją wersję do nowego / ekperymentalnego kanału. Jednakże nie możesz powrócić do poprzedniej stabilniejszej wersji. " + "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Możesz zawsze zaktualizować swoją wersję do nowego / ekperymentalnego kanału. Jednakże nie możesz powrócić do poprzedniej stabilniejszej wersji. ", + "Notify members of the following groups about available updates:" : "Powiadom członków następujących grup o dostępnych aktualizacjach: ", + "Only notification for app updates are available, because the selected update channel for ownCloud itself does not allow notifications." : "Tylko powiadomienia o aktualizacjach aplikacji są dostępne, gdyż wybrany kanał aktualizacji ownCloud nie zezwala na powiadomienia. " },"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/sl.js b/apps/updatenotification/l10n/sl.js index 12ba787e5e4..a59a58731fb 100644 --- a/apps/updatenotification/l10n/sl.js +++ b/apps/updatenotification/l10n/sl.js @@ -4,6 +4,7 @@ OC.L10N.register( "Update notifications" : "Posodobi obvestila", "{version} is available. Get more information on how to update." : "Na voljo je nova različica {version}. Na voljo je več podrobnosti o nadgradnji.", "Updated channel" : "Posodobljen kanal", + "ownCloud core" : "Jedro ownCloud", "Update for %1$s to version %2$s is available." : "Posodobitev %1$s na različico %2$s je na voljo.", "Updater" : "Posodabljalnik", "A new version is available: %s" : "Na voljo je nova različica: %s", diff --git a/apps/updatenotification/l10n/sl.json b/apps/updatenotification/l10n/sl.json index ecc0e3519d4..c96c9666fb1 100644 --- a/apps/updatenotification/l10n/sl.json +++ b/apps/updatenotification/l10n/sl.json @@ -2,6 +2,7 @@ "Update notifications" : "Posodobi obvestila", "{version} is available. Get more information on how to update." : "Na voljo je nova različica {version}. Na voljo je več podrobnosti o nadgradnji.", "Updated channel" : "Posodobljen kanal", + "ownCloud core" : "Jedro ownCloud", "Update for %1$s to version %2$s is available." : "Posodobitev %1$s na različico %2$s je na voljo.", "Updater" : "Posodabljalnik", "A new version is available: %s" : "Na voljo je nova različica: %s", diff --git a/apps/user_ldap/l10n/he.js b/apps/user_ldap/l10n/he.js index 385132a0b58..8ff1a2037e4 100644 --- a/apps/user_ldap/l10n/he.js +++ b/apps/user_ldap/l10n/he.js @@ -13,6 +13,7 @@ OC.L10N.register( " Could not set configuration %s" : " לא ניתן היה לקבוע הגדרות %s", "Action does not exist" : "פעולה לא קיימת", "The Base DN appears to be wrong" : "בסיס DN נראה כשגוי", + "Testing configuration…" : "בדיקת תצורה...", "Configuration incorrect" : "הגדרה שגויה", "Configuration incomplete" : "הגדרה לא מלאה", "Configuration OK" : "הגדרה בסדר", @@ -95,6 +96,7 @@ OC.L10N.register( "Test Base DN" : "בדיקת DN בסיסי", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "נמנע מבקשות אוטומטיות של LDAP. מועדף עבור התקנות גדולות, אבל מחייב ידע מסויים של LDAP.", "Manually enter LDAP filters (recommended for large directories)" : "הכנסת מסנני LDAP ידנית (מומלץ עבוק תיקיות גדולות)", + "%s access is limited to users meeting these criteria:" : "%s גישה מוגבלת למשתמשים שעונים על קריטריונים אלו:", "The filter specifies which LDAP users shall have access to the %s instance." : "הסינון קובע לאיזו משתמשי LDAP תהיה יכולת כניסה למקרה %s.", "Verify settings and count users" : "מאמת הגדרות וסופר משתמשים", "Saving" : "שמירה", diff --git a/apps/user_ldap/l10n/he.json b/apps/user_ldap/l10n/he.json index 44e94a58702..0ad2d1fc61b 100644 --- a/apps/user_ldap/l10n/he.json +++ b/apps/user_ldap/l10n/he.json @@ -11,6 +11,7 @@ " Could not set configuration %s" : " לא ניתן היה לקבוע הגדרות %s", "Action does not exist" : "פעולה לא קיימת", "The Base DN appears to be wrong" : "בסיס DN נראה כשגוי", + "Testing configuration…" : "בדיקת תצורה...", "Configuration incorrect" : "הגדרה שגויה", "Configuration incomplete" : "הגדרה לא מלאה", "Configuration OK" : "הגדרה בסדר", @@ -93,6 +94,7 @@ "Test Base DN" : "בדיקת DN בסיסי", "Avoids automatic LDAP requests. Better for bigger setups, but requires some LDAP knowledge." : "נמנע מבקשות אוטומטיות של LDAP. מועדף עבור התקנות גדולות, אבל מחייב ידע מסויים של LDAP.", "Manually enter LDAP filters (recommended for large directories)" : "הכנסת מסנני LDAP ידנית (מומלץ עבוק תיקיות גדולות)", + "%s access is limited to users meeting these criteria:" : "%s גישה מוגבלת למשתמשים שעונים על קריטריונים אלו:", "The filter specifies which LDAP users shall have access to the %s instance." : "הסינון קובע לאיזו משתמשי LDAP תהיה יכולת כניסה למקרה %s.", "Verify settings and count users" : "מאמת הגדרות וסופר משתמשים", "Saving" : "שמירה", |