diff options
58 files changed, 776 insertions, 733 deletions
diff --git a/apps/comments/lib/Notification/Notifier.php b/apps/comments/lib/Notification/Notifier.php index a9daef3031f..09092da539c 100644 --- a/apps/comments/lib/Notification/Notifier.php +++ b/apps/comments/lib/Notification/Notifier.php @@ -23,7 +23,7 @@ namespace OCA\Comments\Notification; use OCP\Comments\ICommentsManager; use OCP\Comments\NotFoundException; -use OCP\Files\Folder; +use OCP\Files\IRootFolder; use OCP\IURLGenerator; use OCP\IUserManager; use OCP\L10N\IFactory; @@ -35,8 +35,8 @@ class Notifier implements INotifier { /** @var IFactory */ protected $l10nFactory; - /** @var Folder */ - protected $userFolder; + /** @var IRootFolder */ + protected $rootFolder; /** @var ICommentsManager */ protected $commentsManager; @@ -49,13 +49,13 @@ class Notifier implements INotifier { public function __construct( IFactory $l10nFactory, - Folder $userFolder, + IRootFolder $rootFolder, ICommentsManager $commentsManager, IURLGenerator $url, IUserManager $userManager ) { $this->l10nFactory = $l10nFactory; - $this->userFolder = $userFolder; + $this->rootFolder = $rootFolder; $this->commentsManager = $commentsManager; $this->url = $url; $this->userManager = $userManager; @@ -93,7 +93,8 @@ class Notifier implements INotifier { if($parameters[0] !== 'files') { throw new \InvalidArgumentException('Unsupported comment object'); } - $nodes = $this->userFolder->getById($parameters[1]); + $userFolder = $this->rootFolder->getUserFolder($notification->getUser()); + $nodes = $userFolder->getById($parameters[1]); if(empty($nodes)) { throw new \InvalidArgumentException('Cannot resolve file id to Node instance'); } diff --git a/apps/comments/tests/Unit/AppInfo/ApplicationTest.php b/apps/comments/tests/Unit/AppInfo/ApplicationTest.php index e0a47dbfff9..5adfbbcc635 100644 --- a/apps/comments/tests/Unit/AppInfo/ApplicationTest.php +++ b/apps/comments/tests/Unit/AppInfo/ApplicationTest.php @@ -22,6 +22,7 @@ namespace OCA\Comments\Tests\Unit\AppInfo; use OCA\Comments\AppInfo\Application; +use OCA\Comments\Notification\Notifier; use Test\TestCase; /** @@ -56,7 +57,8 @@ class ApplicationTest extends TestCase { 'OCA\Comments\Activity\Listener', 'OCA\Comments\Activity\Provider', 'OCA\Comments\Activity\Setting', - 'OCA\Comments\Notification\Listener' + 'OCA\Comments\Notification\Listener', + Notifier::class, ]; foreach($services as $service) { diff --git a/apps/comments/tests/Unit/Notification/NotifierTest.php b/apps/comments/tests/Unit/Notification/NotifierTest.php index 25b8b4b278d..0b08849030b 100644 --- a/apps/comments/tests/Unit/Notification/NotifierTest.php +++ b/apps/comments/tests/Unit/Notification/NotifierTest.php @@ -28,6 +28,7 @@ use OCP\Comments\IComment; use OCP\Comments\ICommentsManager; use OCP\Comments\NotFoundException; use OCP\Files\Folder; +use OCP\Files\IRootFolder; use OCP\Files\Node; use OCP\IL10N; use OCP\IURLGenerator; @@ -41,41 +42,33 @@ class NotifierTest extends TestCase { /** @var Notifier */ protected $notifier; - /** @var IFactory|\PHPUnit_Framework_MockObject_MockObject */ protected $l10nFactory; - - /** @var Folder|\PHPUnit_Framework_MockObject_MockObject */ + /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ + protected $l; + /** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */ protected $folder; - - /** @var ICommentsManager|\PHPUnit_Framework_MockObject_MockObject */ + /** @var ICommentsManager|\PHPUnit_Framework_MockObject_MockObject */ protected $commentsManager; /** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */ protected $url; - /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */ + /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */ protected $userManager; - - - /** @var string */ - protected $lc = 'tlh_KX'; - - /** @var INotification|\PHPUnit_Framework_MockObject_MockObject */ + /** @var INotification|\PHPUnit_Framework_MockObject_MockObject */ protected $notification; - - /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ - protected $l; - - /** @var IComment|\PHPUnit_Framework_MockObject_MockObject */ + /** @var IComment|\PHPUnit_Framework_MockObject_MockObject */ protected $comment; + /** @var string */ + protected $lc = 'tlh_KX'; protected function setUp() { parent::setUp(); - $this->l10nFactory = $this->getMockBuilder('OCP\L10N\IFactory')->getMock(); - $this->folder = $this->getMockBuilder('OCP\Files\Folder')->getMock(); - $this->commentsManager = $this->getMockBuilder('OCP\Comments\ICommentsManager')->getMock(); + $this->l10nFactory = $this->createMock(IFactory::class); + $this->folder = $this->createMock(IRootFolder::class); + $this->commentsManager = $this->createMock(ICommentsManager::class); $this->url = $this->createMock(IURLGenerator::class); - $this->userManager = $this->getMockBuilder('OCP\IUserManager')->getMock(); + $this->userManager = $this->createMock(IUserManager::class); $this->notifier = new Notifier( $this->l10nFactory, @@ -92,8 +85,8 @@ class NotifierTest extends TestCase { return vsprintf($text, $parameters); })); - $this->notification = $this->getMockBuilder('OCP\Notification\INotification')->getMock(); - $this->comment = $this->getMockBuilder('OCP\Comments\IComment')->getMock(); + $this->notification = $this->createMock(INotification::class); + $this->comment = $this->createMock(IComment::class); } public function testPrepareSuccess() { @@ -102,24 +95,31 @@ class NotifierTest extends TestCase { $message = 'Huraga mentioned you in a comment on “Gre\'thor.odp”'; /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->getMockBuilder('OCP\IUser')->getMock(); + $user = $this->createMock(IUser::class); $user->expects($this->once()) ->method('getDisplayName') ->willReturn($displayName); - /** @var Node|\PHPUnit_Framework_MockObject_MockObject */ - $node = $this->getMockBuilder('OCP\Files\Node')->getMock(); + /** @var Node|\PHPUnit_Framework_MockObject_MockObject $node */ + $node = $this->createMock(Node::class); $node ->expects($this->atLeastOnce()) ->method('getName') ->willReturn($fileName); - $this->folder - ->expects($this->once()) + $userFolder = $this->createMock(Folder::class); + $this->folder->expects($this->once()) + ->method('getUserFolder') + ->with('you') + ->willReturn($userFolder); + $userFolder->expects($this->once()) ->method('getById') ->with('678') ->willReturn([$node]); + $this->notification->expects($this->once()) + ->method('getUser') + ->willReturn('you'); $this->notification ->expects($this->once()) ->method('getApp') @@ -172,7 +172,7 @@ class NotifierTest extends TestCase { ->willReturn('users'); $this->commentsManager - ->expects(($this->once())) + ->expects($this->once()) ->method('get') ->willReturn($this->comment); @@ -189,19 +189,26 @@ class NotifierTest extends TestCase { $fileName = 'Gre\'thor.odp'; $message = 'A (now) deleted user mentioned you in a comment on “Gre\'thor.odp”'; - /** @var Node|\PHPUnit_Framework_MockObject_MockObject */ - $node = $this->getMockBuilder('OCP\Files\Node')->getMock(); + /** @var Node|\PHPUnit_Framework_MockObject_MockObject $node */ + $node = $this->createMock(Node::class); $node ->expects($this->atLeastOnce()) ->method('getName') ->willReturn($fileName); - $this->folder - ->expects($this->once()) + $userFolder = $this->createMock(Folder::class); + $this->folder->expects($this->once()) + ->method('getUserFolder') + ->with('you') + ->willReturn($userFolder); + $userFolder->expects($this->once()) ->method('getById') ->with('678') ->willReturn([$node]); + $this->notification->expects($this->once()) + ->method('getUser') + ->willReturn('you'); $this->notification ->expects($this->once()) ->method('getApp') @@ -254,7 +261,7 @@ class NotifierTest extends TestCase { ->willReturn(ICommentsManager::DELETED_USER); $this->commentsManager - ->expects(($this->once())) + ->expects($this->once()) ->method('get') ->willReturn($this->comment); @@ -292,7 +299,7 @@ class NotifierTest extends TestCase { ->method('get'); $this->commentsManager - ->expects(($this->never())) + ->expects($this->never()) ->method('get'); $this->userManager @@ -329,7 +336,7 @@ class NotifierTest extends TestCase { ->method('get'); $this->commentsManager - ->expects(($this->once())) + ->expects($this->once()) ->method('get') ->willThrowException(new NotFoundException()); @@ -347,7 +354,7 @@ class NotifierTest extends TestCase { $displayName = 'Huraga'; /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->getMockBuilder('OCP\IUser')->getMock(); + $user = $this->createMock(IUser::class); $user->expects($this->once()) ->method('getDisplayName') ->willReturn($displayName); @@ -390,7 +397,7 @@ class NotifierTest extends TestCase { ->willReturn('users'); $this->commentsManager - ->expects(($this->once())) + ->expects($this->once()) ->method('get') ->willReturn($this->comment); @@ -410,7 +417,7 @@ class NotifierTest extends TestCase { $displayName = 'Huraga'; /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->getMockBuilder('OCP\IUser')->getMock(); + $user = $this->createMock(IUser::class); $user->expects($this->once()) ->method('getDisplayName') ->willReturn($displayName); @@ -454,7 +461,7 @@ class NotifierTest extends TestCase { ->willReturn('users'); $this->commentsManager - ->expects(($this->once())) + ->expects($this->once()) ->method('get') ->willReturn($this->comment); @@ -474,17 +481,24 @@ class NotifierTest extends TestCase { $displayName = 'Huraga'; /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */ - $user = $this->getMockBuilder('OCP\IUser')->getMock(); + $user = $this->createMock(IUser::class); $user->expects($this->once()) ->method('getDisplayName') ->willReturn($displayName); - $this->folder - ->expects($this->once()) + $userFolder = $this->createMock(Folder::class); + $this->folder->expects($this->once()) + ->method('getUserFolder') + ->with('you') + ->willReturn($userFolder); + $userFolder->expects($this->once()) ->method('getById') ->with('678') ->willReturn([]); + $this->notification->expects($this->once()) + ->method('getUser') + ->willReturn('you'); $this->notification ->expects($this->once()) ->method('getApp') @@ -520,7 +534,7 @@ class NotifierTest extends TestCase { ->willReturn('users'); $this->commentsManager - ->expects(($this->once())) + ->expects($this->once()) ->method('get') ->willReturn($this->comment); diff --git a/apps/dav/lib/Connector/Sabre/FakeLockerPlugin.php b/apps/dav/lib/Connector/Sabre/FakeLockerPlugin.php index eb490851fcb..3baacfc064a 100644 --- a/apps/dav/lib/Connector/Sabre/FakeLockerPlugin.php +++ b/apps/dav/lib/Connector/Sabre/FakeLockerPlugin.php @@ -138,6 +138,7 @@ class FakeLockerPlugin extends ServerPlugin { $response->setStatus(200); $response->setBody($body); + $response->setStatus(200); return false; } diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php index d0826ee5a8c..391d42393f5 100644 --- a/apps/dav/lib/Connector/Sabre/File.php +++ b/apps/dav/lib/Connector/Sabre/File.php @@ -206,7 +206,12 @@ class File extends Node implements IFile { // allow sync clients to send the mtime along in a header $request = \OC::$server->getRequest(); if (isset($request->server['HTTP_X_OC_MTIME'])) { - if ($this->fileView->touch($this->path, $request->server['HTTP_X_OC_MTIME'])) { + $mtimeStr = $request->server['HTTP_X_OC_MTIME']; + if (!is_numeric($mtimeStr)) { + throw new \InvalidArgumentException('X-OC-Mtime header must be an integer (unix timestamp).'); + } + $mtime = intval($mtimeStr); + if ($this->fileView->touch($this->path, $mtime)) { header('X-OC-MTime: accepted'); } } diff --git a/apps/federatedfilesharing/tests/TestCase.php b/apps/federatedfilesharing/tests/TestCase.php index 7ccf76bbbc6..b31772e4e9e 100644 --- a/apps/federatedfilesharing/tests/TestCase.php +++ b/apps/federatedfilesharing/tests/TestCase.php @@ -42,7 +42,7 @@ abstract class TestCase extends \Test\TestCase { // reset backend \OC_User::clearBackends(); - \OC_Group::clearBackends(); + \OC::$server->getGroupManager()->clearBackends(); // create users $backend = new \Test\Util\User\Dummy(); @@ -76,8 +76,8 @@ abstract class TestCase extends \Test\TestCase { // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); - \OC_Group::clearBackends(); - \OC_Group::useBackend(new Database()); + \OC::$server->getGroupManager()->clearBackends(); + \OC::$server->getGroupManager()->addBackend(new Database()); parent::tearDownAfterClass(); } @@ -94,9 +94,15 @@ abstract class TestCase extends \Test\TestCase { } if ($create) { - \OC::$server->getUserManager()->createUser($user, $password); - \OC_Group::createGroup('group'); - \OC_Group::addToGroup($user, 'group'); + $userManager = \OC::$server->getUserManager(); + $groupManager = \OC::$server->getGroupManager(); + + $userObject = $userManager->createUser($user, $password); + $group = $groupManager->createGroup('group'); + + if ($group and $userObject) { + $group->addUser($userObject); + } } self::resetStorage(); diff --git a/apps/federation/appinfo/routes.php b/apps/federation/appinfo/routes.php index b9515812a01..4c742dd705c 100644 --- a/apps/federation/appinfo/routes.php +++ b/apps/federation/appinfo/routes.php @@ -43,6 +43,7 @@ $application->registerRoutes( ], ], 'ocs' => [ + // old endpoints, only used by Nextcloud and ownCloud [ 'name' => 'OCSAuthAPI#getSharedSecret', 'url' => '/api/v1/shared-secret', @@ -53,6 +54,19 @@ $application->registerRoutes( 'url' => '/api/v1/request-shared-secret', 'verb' => 'POST', ], + // new endpoints, published as public api + [ + 'name' => 'OCSAuthAPI#getSharedSecret', + 'root' => '/cloud', + 'url' => '/shared-secret', + 'verb' => 'GET', + ], + [ + 'name' => 'OCSAuthAPI#requestSharedSecret', + 'root' => '/cloud', + 'url' => '/shared-secret', + 'verb' => 'POST', + ], ], ] ); diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js index c93abd5244d..6f9fd9aafea 100644 --- a/apps/files/js/file-upload.js +++ b/apps/files/js/file-upload.js @@ -222,7 +222,7 @@ OC.FileUpload.prototype = { if (file.lastModified) { // preserve timestamp - this.data.headers['X-OC-Mtime'] = file.lastModified / 1000; + this.data.headers['X-OC-Mtime'] = (file.lastModified / 1000).toFixed(0); } var userName = this.uploader.filesClient.getUserName(); diff --git a/apps/files/l10n/tr.js b/apps/files/l10n/tr.js index e46a11abb6c..71250b967e1 100644 --- a/apps/files/l10n/tr.js +++ b/apps/files/l10n/tr.js @@ -85,6 +85,7 @@ OC.L10N.register( "{user} created {file}" : "{user} tarafından {file} oluşturuldu", "You changed {file}" : "Siz {file} dosyasını değiştirdiniz", "You deleted {file}" : "Siz {file} dosyasını sildiniz", + "{user} deleted {file}" : "{user} tarafından {file} silindi", "A new file or folder has been <strong>created</strong>" : "Yeni bir dosya veya klasör <strong>oluşturuldu</strong>", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>Sık kullanılan dosyalarınızın</strong> oluşturulma ve değiştirilme hakkındaki bildirimlerini sınırla <em>(Sadece akışta)</em>", "Upload (max. %s)" : "Yükle (azami: %s)", diff --git a/apps/files/l10n/tr.json b/apps/files/l10n/tr.json index d5b70fa9b58..beaa034e6bc 100644 --- a/apps/files/l10n/tr.json +++ b/apps/files/l10n/tr.json @@ -83,6 +83,7 @@ "{user} created {file}" : "{user} tarafından {file} oluşturuldu", "You changed {file}" : "Siz {file} dosyasını değiştirdiniz", "You deleted {file}" : "Siz {file} dosyasını sildiniz", + "{user} deleted {file}" : "{user} tarafından {file} silindi", "A new file or folder has been <strong>created</strong>" : "Yeni bir dosya veya klasör <strong>oluşturuldu</strong>", "Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "<strong>Sık kullanılan dosyalarınızın</strong> oluşturulma ve değiştirilme hakkındaki bildirimlerini sınırla <em>(Sadece akışta)</em>", "Upload (max. %s)" : "Yükle (azami: %s)", diff --git a/apps/files_sharing/tests/TestCase.php b/apps/files_sharing/tests/TestCase.php index a9163a086bf..3b1ccb71a94 100644 --- a/apps/files_sharing/tests/TestCase.php +++ b/apps/files_sharing/tests/TestCase.php @@ -75,7 +75,7 @@ abstract class TestCase extends \Test\TestCase { // reset backend \OC_User::clearBackends(); - \OC_Group::clearBackends(); + \OC::$server->getGroupManager()->clearBackends(); // clear share hooks \OC_Hook::clear('OCP\\Share'); @@ -103,7 +103,7 @@ abstract class TestCase extends \Test\TestCase { $groupBackend->addToGroup(self::TEST_FILES_SHARING_API_USER3, 'group2'); $groupBackend->addToGroup(self::TEST_FILES_SHARING_API_USER4, 'group3'); $groupBackend->addToGroup(self::TEST_FILES_SHARING_API_USER2, self::TEST_FILES_SHARING_API_GROUP1); - \OC_Group::useBackend($groupBackend); + \OC::$server->getGroupManager()->addBackend($groupBackend); } protected function setUp() { @@ -136,7 +136,10 @@ abstract class TestCase extends \Test\TestCase { if ($user !== null) { $user->delete(); } // delete group - \OC_Group::deleteGroup(self::TEST_FILES_SHARING_API_GROUP1); + $group = \OC::$server->getGroupManager()->get(self::TEST_FILES_SHARING_API_GROUP1); + if ($group) { + $group->delete(); + } \OC_Util::tearDownFS(); \OC_User::setUserId(''); @@ -145,8 +148,8 @@ abstract class TestCase extends \Test\TestCase { // reset backend \OC_User::clearBackends(); \OC_User::useBackend('database'); - \OC_Group::clearBackends(); - \OC_Group::useBackend(new \OC\Group\Database()); + \OC::$server->getGroupManager()->clearBackends(); + \OC::$server->getGroupManager()->addBackend(new \OC\Group\Database()); parent::tearDownAfterClass(); } @@ -163,9 +166,15 @@ abstract class TestCase extends \Test\TestCase { } if ($create) { - \OC::$server->getUserManager()->createUser($user, $password); - \OC_Group::createGroup('group'); - \OC_Group::addToGroup($user, 'group'); + $userManager = \OC::$server->getUserManager(); + $groupManager = \OC::$server->getGroupManager(); + + $userObject = $userManager->createUser($user, $password); + $group = $groupManager->createGroup('group'); + + if ($group and $userObject) { + $group->addUser($userObject); + } } self::resetStorage(); diff --git a/apps/theming/l10n/hu.js b/apps/theming/l10n/hu.js new file mode 100644 index 00000000000..a0549dfd06b --- /dev/null +++ b/apps/theming/l10n/hu.js @@ -0,0 +1,27 @@ +OC.L10N.register( + "theming", + { + "Admin" : "Adminisztrátor", + "a safe home for all your data" : "biztonságos hely az adataid számára", + "The given name is too long" : "A bevitt név túl hosszú", + "The given web address is too long" : "A bevitt webcím túl hosszú", + "The given slogan is too long" : "A bevitt szlogen túl hosszú", + "The given color is invalid" : "A bevitt szín érvénytelen", + "Saved" : "Mentve!", + "No file uploaded" : "Nincs fájl feltöltve", + "Unsupported image type" : "Nem támogatott képtípus", + "You are already using a custom theme" : "Már egyedi témát használ", + "Theming" : "Témázás", + "Name" : "Név", + "reset to default" : "Visszaállítás alapértelmezettre", + "Web address" : "Webcím", + "Web address https://…" : "Webcím https://...", + "Slogan" : "Szlogen", + "Color" : "Szín", + "Logo" : "Logó", + "Upload new logo" : "Új logó feltöltése", + "Login image" : "Bejelentkező kép", + "Upload new login background" : "Új bejelentkező kép feltöltése", + "Log in image" : "Bejelentkező kép" +}, +"nplurals=2; plural=(n != 1);"); diff --git a/apps/theming/l10n/hu.json b/apps/theming/l10n/hu.json new file mode 100644 index 00000000000..6023637c81d --- /dev/null +++ b/apps/theming/l10n/hu.json @@ -0,0 +1,25 @@ +{ "translations": { + "Admin" : "Adminisztrátor", + "a safe home for all your data" : "biztonságos hely az adataid számára", + "The given name is too long" : "A bevitt név túl hosszú", + "The given web address is too long" : "A bevitt webcím túl hosszú", + "The given slogan is too long" : "A bevitt szlogen túl hosszú", + "The given color is invalid" : "A bevitt szín érvénytelen", + "Saved" : "Mentve!", + "No file uploaded" : "Nincs fájl feltöltve", + "Unsupported image type" : "Nem támogatott képtípus", + "You are already using a custom theme" : "Már egyedi témát használ", + "Theming" : "Témázás", + "Name" : "Név", + "reset to default" : "Visszaállítás alapértelmezettre", + "Web address" : "Webcím", + "Web address https://…" : "Webcím https://...", + "Slogan" : "Szlogen", + "Color" : "Szín", + "Logo" : "Logó", + "Upload new logo" : "Új logó feltöltése", + "Login image" : "Bejelentkező kép", + "Upload new login background" : "Új bejelentkező kép feltöltése", + "Log in image" : "Bejelentkező kép" +},"pluralForm" :"nplurals=2; plural=(n != 1);" +}
\ No newline at end of file diff --git a/apps/twofactor_backupcodes/l10n/tr.js b/apps/twofactor_backupcodes/l10n/tr.js index a5c93acebfd..ff68c827c78 100644 --- a/apps/twofactor_backupcodes/l10n/tr.js +++ b/apps/twofactor_backupcodes/l10n/tr.js @@ -10,9 +10,12 @@ OC.L10N.register( "If you regenerate backup codes, you automatically invalidate old codes." : "Yedek kodlarını yeniden oluşturursanız, eski kodlar geçersiz olur.", "An error occurred while generating your backup codes" : "Yedek kodlar oluşturulurken bir sorun çıktı", "Nextcloud backup codes" : "Nextcloud yedek kodları", - "Two-factor authentication" : "Iki faktörlü kimlik doğrulama", - "Backup code" : "Yedek kodu", - "Use backup code" : "Yedek kodunu kullan", + "Two-factor authentication" : "Iki aşamalı kimlik doğrulama", + "You successfully logged in using two-factor authentication (%1$s)" : "İki aşamalı kimlik doğrulama ile oturum açtınız (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "İki aşamalı kimlik doğrulama ile oturum açma girişimi reddedildi (%1$s)", + "You created two-factor backup codes for your account" : "İki aşamalı kimlik doğrulama için yedek kodlarınızı oluşturdunuz", + "Backup code" : "Yedek kod", + "Use backup code" : "Yedek kodu kullan", "Second-factor backup codes" : "İki aşamalı yedek kodları" }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/twofactor_backupcodes/l10n/tr.json b/apps/twofactor_backupcodes/l10n/tr.json index 44c86cd60cc..fb392c867ff 100644 --- a/apps/twofactor_backupcodes/l10n/tr.json +++ b/apps/twofactor_backupcodes/l10n/tr.json @@ -8,9 +8,12 @@ "If you regenerate backup codes, you automatically invalidate old codes." : "Yedek kodlarını yeniden oluşturursanız, eski kodlar geçersiz olur.", "An error occurred while generating your backup codes" : "Yedek kodlar oluşturulurken bir sorun çıktı", "Nextcloud backup codes" : "Nextcloud yedek kodları", - "Two-factor authentication" : "Iki faktörlü kimlik doğrulama", - "Backup code" : "Yedek kodu", - "Use backup code" : "Yedek kodunu kullan", + "Two-factor authentication" : "Iki aşamalı kimlik doğrulama", + "You successfully logged in using two-factor authentication (%1$s)" : "İki aşamalı kimlik doğrulama ile oturum açtınız (%1$s)", + "A login attempt using two-factor authentication failed (%1$s)" : "İki aşamalı kimlik doğrulama ile oturum açma girişimi reddedildi (%1$s)", + "You created two-factor backup codes for your account" : "İki aşamalı kimlik doğrulama için yedek kodlarınızı oluşturdunuz", + "Backup code" : "Yedek kod", + "Use backup code" : "Yedek kodu kullan", "Second-factor backup codes" : "İki aşamalı yedek kodları" },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/tr.js b/apps/updatenotification/l10n/tr.js index b5160c7b6b3..21e5fde7504 100644 --- a/apps/updatenotification/l10n/tr.js +++ b/apps/updatenotification/l10n/tr.js @@ -18,6 +18,7 @@ OC.L10N.register( "Notify members of the following groups about available updates:" : "Yayınlanan güncellemeler şu grupların üyelerine bildirilsin:", "Only notification for app updates are available." : "Yalnız uygulama güncellemeleri kullanılabilir.", "The selected update channel makes dedicated notifications for the server obsolete." : "Seçilmiş güncelleme kanalı kullanımdan kalkmış sunucu bildirimleri için kullanılıyor.", - "The selected update channel does not support updates of the server." : "Seçilmiş güncelleme kanalı sunucunun güncellemelerini desteklemiyor." + "The selected update channel does not support updates of the server." : "Seçilmiş güncelleme kanalı sunucunun güncellemelerini desteklemiyor.", + "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "PHP %s sürümünü kullanıyorsanız. Nextcloud 11 ve üzerindeki sürümleri kullanabilmek için PHP sürümünüz en az 5.6 olmalıdır. PHP sürümünüzü yükselttikten sonra yeni sürümler ile ilgili güncelleme bildirimlerini görebilirsiniz." }, "nplurals=2; plural=(n > 1);"); diff --git a/apps/updatenotification/l10n/tr.json b/apps/updatenotification/l10n/tr.json index 7eba40df793..d5536cf6da2 100644 --- a/apps/updatenotification/l10n/tr.json +++ b/apps/updatenotification/l10n/tr.json @@ -16,6 +16,7 @@ "Notify members of the following groups about available updates:" : "Yayınlanan güncellemeler şu grupların üyelerine bildirilsin:", "Only notification for app updates are available." : "Yalnız uygulama güncellemeleri kullanılabilir.", "The selected update channel makes dedicated notifications for the server obsolete." : "Seçilmiş güncelleme kanalı kullanımdan kalkmış sunucu bildirimleri için kullanılıyor.", - "The selected update channel does not support updates of the server." : "Seçilmiş güncelleme kanalı sunucunun güncellemelerini desteklemiyor." + "The selected update channel does not support updates of the server." : "Seçilmiş güncelleme kanalı sunucunun güncellemelerini desteklemiyor.", + "You are running PHP %s. To allow you to upgrade to Nextcloud 11 and higher you need to run at least PHP 5.6. Once you upgraded your PHP version you will be able to receive update notifications for these newer versions." : "PHP %s sürümünü kullanıyorsanız. Nextcloud 11 ve üzerindeki sürümleri kullanabilmek için PHP sürümünüz en az 5.6 olmalıdır. PHP sürümünüzü yükselttikten sonra yeni sürümler ile ilgili güncelleme bildirimlerini görebilirsiniz." },"pluralForm" :"nplurals=2; plural=(n > 1);" }
\ No newline at end of file diff --git a/apps/user_ldap/appinfo/app.php b/apps/user_ldap/appinfo/app.php index 995b1226649..6f930ea39f0 100644 --- a/apps/user_ldap/appinfo/app.php +++ b/apps/user_ldap/appinfo/app.php @@ -58,7 +58,7 @@ if(count($configPrefixes) === 1) { if(count($configPrefixes) > 0) { // register user backend OC_User::useBackend($userBackend); - OC_Group::useBackend($groupBackend); + \OC::$server->getGroupManager()->addBackend($groupBackend); } \OCP\Util::connectHook( diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php index cc0446ae523..ff95d96ebdb 100644 --- a/apps/user_ldap/lib/Access.php +++ b/apps/user_ldap/lib/Access.php @@ -570,7 +570,7 @@ class Access extends LDAPUtility implements IUserTools { $originalTTL = $this->connection->ldapCacheTTL; $this->connection->setConfiguration(array('ldapCacheTTL' => 0)); if(($isUser && !\OCP\User::userExists($intName)) - || (!$isUser && !\OC_Group::groupExists($intName))) { + || (!$isUser && !\OC::$server->getGroupManager()->groupExists($intName))) { if($mapper->map($fdn, $intName, $uuid)) { $this->connection->setConfiguration(array('ldapCacheTTL' => $originalTTL)); return $intName; @@ -737,7 +737,7 @@ class Access extends LDAPUtility implements IUserTools { // Check to be really sure it is unique // while loop is just a precaution. If a name is not generated within // 20 attempts, something else is very wrong. Avoids infinite loop. - if(!\OC_Group::groupExists($altName)) { + if(!\OC::$server->getGroupManager()->groupExists($altName)) { return $altName; } $altName = $name . '_' . ($lastNo + $attempts); diff --git a/apps/user_ldap/tests/User_LDAPTest.php b/apps/user_ldap/tests/User_LDAPTest.php index 606eff4e7a7..f1a23f9a6c8 100644 --- a/apps/user_ldap/tests/User_LDAPTest.php +++ b/apps/user_ldap/tests/User_LDAPTest.php @@ -64,7 +64,7 @@ class User_LDAPTest extends TestCase { parent::setUp(); \OC_User::clearBackends(); - \OC_Group::clearBackends(); + \OC::$server->getGroupManager()->clearBackends(); } /** diff --git a/apps/workflowengine/l10n/tr.js b/apps/workflowengine/l10n/tr.js new file mode 100644 index 00000000000..d07c5471fe7 --- /dev/null +++ b/apps/workflowengine/l10n/tr.js @@ -0,0 +1,71 @@ +OC.L10N.register( + "workflowengine", + { + "Successfully saved" : "Kaydedildi", + "Saving failed:" : "Kaydedilemedi:", + "File mime type" : "Dosya MIME türü", + "is" : "şu olan", + "is not" : "şu olmayan", + "matches" : "şuna uyan", + "does not match" : "şuna uymayan", + "Example: {placeholder}" : "Örnek: {placeholder}", + "File size (upload)" : "Dosya boyutu (yükleme)", + "less" : "şundan küçük", + "less or equals" : "şundan küçük ya da eşit", + "greater or equals" : "şundan büyük ya da eşit", + "greater" : "şundan büyük", + "File system tag" : "Dosya sistemi etiketi", + "is tagged with" : "şununla etiketlenmiş", + "is not tagged with" : "şununla etiketlenmemiş", + "Select tag…" : "Etiketi seçin...", + "Request remote address" : "Uzak adres isteği", + "matches IPv4" : "şu IPv4 adresine uyan", + "does not match IPv4" : "şu IPv4 adresine uymayan", + "matches IPv6" : "şu IPv6 adresine uyan", + "does not match IPv6" : "şu IPv6 adresine uymayan", + "Request time" : "İstek zamanı", + "between" : "şunların arasında olan", + "not between" : "şunların arasında olmayan", + "Start" : "Başlangıç", + "End" : "Bitiş", + "Select timezone…" : "Saat dilimini seçin...", + "Request URL" : "İstek Adresi", + "Predefined URLs" : "Hazır Adresler", + "Files WebDAV" : "Dosya WebDAV", + "Request user agent" : "Kullanıcı yazılımı istensin", + "Sync clients" : "İstemciler eşitlensin", + "Android client" : "Android istemcisi", + "iOS client" : "iOS istemcisi", + "Desktop client" : "Masaüstü istemcisi", + "User group membership" : "Kullanıcı grubu üyeliği", + "is member of" : "şunun üyesi olan", + "is not member of" : "şunun üyesi olmayan", + "The given operator is invalid" : "Belirtilen işlem geçersiz", + "The given regular expression is invalid" : "Belirtilen kurallı ifade geçersiz", + "The given file size is invalid" : "Belirtilen dosya boyutu geçersiz", + "The given tag id is invalid" : "Belirtilen etiket kodu geçersiz", + "The given IP range is invalid" : "Belirtilen IP adresi aralığı geçersiz", + "The given IP range is not valid for IPv4" : "Belirtilen IP adresi aralığı IPv4 için geçersiz", + "The given IP range is not valid for IPv6" : "Belirtilen IP adresi aralığı IPv6 için geçersiz", + "The given time span is invalid" : "Belirtilen zaman aralığı geçersiz", + "The given start time is invalid" : "Belirtilen başlangıç zamanı geçersiz", + "The given end time is invalid" : "Belirtilen bitiş zamanı geçersiz", + "The given group does not exist" : "Belirtilen grup bulunamadı", + "Check %s is invalid or does not exist" : "%s denetimi geçersiz ya da bulunamadı", + "Operation #%s does not exist" : "#%s işlemi bulunamadı", + "Operation %s does not exist" : "%s işlemi bulunamadı", + "Operation %s is invalid" : "%s işlemi geçersiz", + "Check %s does not exist" : "%s denetimi bulunamadı", + "Check %s is invalid" : "%s denetimi geçersiz", + "Check #%s does not exist" : "#%s denetimi bulunamadı", + "Workflow" : "İş akışı", + "Open documentation" : "Belgeleri aç", + "Add rule group" : "Kural grubu ekle", + "Short rule description" : "Kısa kural açıklaması", + "Add rule" : "Kural ekle", + "Reset" : "Sıfırla", + "Save" : "Kaydet", + "Saving…" : "Kaydediliyor...", + "Loading…" : "Yükleniyor..." +}, +"nplurals=2; plural=(n > 1);"); diff --git a/apps/workflowengine/l10n/tr.json b/apps/workflowengine/l10n/tr.json new file mode 100644 index 00000000000..8996dffcb95 --- /dev/null +++ b/apps/workflowengine/l10n/tr.json @@ -0,0 +1,69 @@ +{ "translations": { + "Successfully saved" : "Kaydedildi", + "Saving failed:" : "Kaydedilemedi:", + "File mime type" : "Dosya MIME türü", + "is" : "şu olan", + "is not" : "şu olmayan", + "matches" : "şuna uyan", + "does not match" : "şuna uymayan", + "Example: {placeholder}" : "Örnek: {placeholder}", + "File size (upload)" : "Dosya boyutu (yükleme)", + "less" : "şundan küçük", + "less or equals" : "şundan küçük ya da eşit", + "greater or equals" : "şundan büyük ya da eşit", + "greater" : "şundan büyük", + "File system tag" : "Dosya sistemi etiketi", + "is tagged with" : "şununla etiketlenmiş", + "is not tagged with" : "şununla etiketlenmemiş", + "Select tag…" : "Etiketi seçin...", + "Request remote address" : "Uzak adres isteği", + "matches IPv4" : "şu IPv4 adresine uyan", + "does not match IPv4" : "şu IPv4 adresine uymayan", + "matches IPv6" : "şu IPv6 adresine uyan", + "does not match IPv6" : "şu IPv6 adresine uymayan", + "Request time" : "İstek zamanı", + "between" : "şunların arasında olan", + "not between" : "şunların arasında olmayan", + "Start" : "Başlangıç", + "End" : "Bitiş", + "Select timezone…" : "Saat dilimini seçin...", + "Request URL" : "İstek Adresi", + "Predefined URLs" : "Hazır Adresler", + "Files WebDAV" : "Dosya WebDAV", + "Request user agent" : "Kullanıcı yazılımı istensin", + "Sync clients" : "İstemciler eşitlensin", + "Android client" : "Android istemcisi", + "iOS client" : "iOS istemcisi", + "Desktop client" : "Masaüstü istemcisi", + "User group membership" : "Kullanıcı grubu üyeliği", + "is member of" : "şunun üyesi olan", + "is not member of" : "şunun üyesi olmayan", + "The given operator is invalid" : "Belirtilen işlem geçersiz", + "The given regular expression is invalid" : "Belirtilen kurallı ifade geçersiz", + "The given file size is invalid" : "Belirtilen dosya boyutu geçersiz", + "The given tag id is invalid" : "Belirtilen etiket kodu geçersiz", + "The given IP range is invalid" : "Belirtilen IP adresi aralığı geçersiz", + "The given IP range is not valid for IPv4" : "Belirtilen IP adresi aralığı IPv4 için geçersiz", + "The given IP range is not valid for IPv6" : "Belirtilen IP adresi aralığı IPv6 için geçersiz", + "The given time span is invalid" : "Belirtilen zaman aralığı geçersiz", + "The given start time is invalid" : "Belirtilen başlangıç zamanı geçersiz", + "The given end time is invalid" : "Belirtilen bitiş zamanı geçersiz", + "The given group does not exist" : "Belirtilen grup bulunamadı", + "Check %s is invalid or does not exist" : "%s denetimi geçersiz ya da bulunamadı", + "Operation #%s does not exist" : "#%s işlemi bulunamadı", + "Operation %s does not exist" : "%s işlemi bulunamadı", + "Operation %s is invalid" : "%s işlemi geçersiz", + "Check %s does not exist" : "%s denetimi bulunamadı", + "Check %s is invalid" : "%s denetimi geçersiz", + "Check #%s does not exist" : "#%s denetimi bulunamadı", + "Workflow" : "İş akışı", + "Open documentation" : "Belgeleri aç", + "Add rule group" : "Kural grubu ekle", + "Short rule description" : "Kısa kural açıklaması", + "Add rule" : "Kural ekle", + "Reset" : "Sıfırla", + "Save" : "Kaydet", + "Saving…" : "Kaydediliyor...", + "Loading…" : "Yükleniyor..." +},"pluralForm" :"nplurals=2; plural=(n > 1);" +}
\ No newline at end of file diff --git a/core/css/fixes.css b/core/css/fixes.scss index 3cb89c6599f..3cb89c6599f 100644 --- a/core/css/fixes.css +++ b/core/css/fixes.scss diff --git a/core/css/fonts.css b/core/css/fonts.scss index f72aa2930cf..f72aa2930cf 100644 --- a/core/css/fonts.css +++ b/core/css/fonts.scss diff --git a/core/css/global.css b/core/css/global.scss index 9511d4324fa..9511d4324fa 100644 --- a/core/css/global.css +++ b/core/css/global.scss diff --git a/core/css/mobile.css b/core/css/mobile.scss index b0f8421345c..b0f8421345c 100644 --- a/core/css/mobile.css +++ b/core/css/mobile.scss diff --git a/core/css/server.scss b/core/css/server.scss new file mode 100644 index 00000000000..516220f2ad5 --- /dev/null +++ b/core/css/server.scss @@ -0,0 +1,11 @@ +@import 'styles.scss'; +@import 'inputs.scss'; +@import 'header.scss'; +@import 'icons.scss'; +@import 'fonts.scss'; +@import 'apps.scss'; +@import 'global.scss'; +@import 'fixes.scss'; +@import 'multiselect.scss'; +@import 'mobile.scss'; +@import 'tooltip.scss'; diff --git a/core/l10n/tr.js b/core/l10n/tr.js index 8e6b02f4239..66a4295d39e 100644 --- a/core/l10n/tr.js +++ b/core/l10n/tr.js @@ -3,78 +3,90 @@ OC.L10N.register( { "Please select a file." : "Lütfen bir dosya seçin.", "File is too big" : "Dosya çok büyük", - "Invalid file provided" : "Geçersiz dosya sağlandı", - "No image or file provided" : "Resim veya dosya belirtilmedi", - "Unknown filetype" : "Bilinmeyen dosya türü", - "Invalid image" : "Geçersiz resim", - "An error occurred. Please contact your admin." : "Bir hata oluştu. Lütfen yöneticinize başvurun.", - "No temporary profile picture available, try again" : "Kullanılabilir geçici profil resmi yok, tekrar deneyin", - "No crop data provided" : "Kesme verisi sağlanmamış", - "No valid crop data provided" : "Geçerli kırpma verisi sağlanmadı", - "Crop is not square" : "Kırpma kare değil", - "Couldn't reset password because the token is invalid" : "Belirteç geçersiz olduğundan parola sıfırlanamadı", - "Couldn't reset password because the token is expired" : "Jeton zaman aşımına uğradığından parola sıfırlanamadı", + "The selected file is not an image." : "Seçilmiş dosya bir görsel dosyası değil.", + "The selected file cannot be read." : "Seçilmiş dosya okunamadı.", + "Invalid file provided" : "Belirtilen dosya geçersiz", + "No image or file provided" : "Bir görsel ya da dosya belirtilmemiş", + "Unknown filetype" : "Dosya türü bilinmiyor", + "Invalid image" : "Görsel geçersiz", + "An error occurred. Please contact your admin." : "Bir sorun çıktı. Lütfen yöneticinizle görüşün.", + "No temporary profile picture available, try again" : "Kullanılabilecek geçici bir profil görseli bulunamadı. Yeniden deneyin", + "No crop data provided" : "Kırpma verileri belirtilmemiş", + "No valid crop data provided" : "Geçerli bir kırpma verisi belirtilmemiş", + "Crop is not square" : "Kırpma kare şeklinde değil", + "Couldn't reset password because the token is invalid" : "Kod geçersiz olduğundan parola sıfırlanamadı", + "Couldn't reset password because the token is expired" : "Kodun süresi geçtiğinden parola sıfırlanamadı", "Couldn't send reset email. Please make sure your username is correct." : "Sıfırlama e-postası gönderilemedi. Lütfen kullanıcı adınızın doğru olduğundan emin olun.", - "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Sıfırlama e-postası, bu kullanıcı için bir e-posta adresi olmadığından gönderilemedi. Lütfen yöneticiniz ile iletişime geçin.", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Bu kullanıcı için bir e-posta adresi olmadığından sıfırlama e-postası gönderilemedi. Lütfen yöneticiniz ile görüşün.", "%s password reset" : "%s parola sıfırlama", - "Couldn't send reset email. Please contact your administrator." : "Sıfırlama e-postası gönderilemedi. Lütfen yöneticiniz ile iletişime geçin.", + "Couldn't send reset email. Please contact your administrator." : "Sıfırlama e-postası gönderilemedi. Lütfen yöneticiniz ile görüşün.", "Preparing update" : "Güncelleme hazırlanıyor", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Onarım uyarısı:", "Repair error: " : "Onarım hatası:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Otomatik güncellemeler config.php dosyasından pasif duruma getirildiği için, lütfen komut satırı güncelleyicisini kullanın. Oto", - "[%d / %d]: Checking table %s" : "[%d / %d]: Tablo kontroi ediliyor %s", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Otomatik güncellemeler config.php dosyasında devre dışı bırakılmış olduğundan, komut satırı güncelleyicisini kullanın.", + "[%d / %d]: Checking table %s" : "[%d / %d]: %s tablosu denetleniyor", "Turned on maintenance mode" : "Bakım kipi etkinleştirildi", - "Turned off maintenance mode" : "Bakım kipi kapatıldı", + "Turned off maintenance mode" : "Bakım kipi devre dışı bırakıldı", "Maintenance mode is kept active" : "Bakım kipi etkin tutuldu", "Updating database schema" : "Veritabanı şeması güncelleniyor", "Updated database" : "Veritabanı güncellendi", - "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Veritabanı şeması güncellenebilirliği denetleniyor (Veritabanının büyüklüğüne bağlı olarak uzun sürebilir)", - "Checked database schema update" : "Veritabanı şema güncellemesi denetlendi", - "Checking updates of apps" : "Uygulamaların güncellemeleri denetleniyor", - "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "%s için veritabanı güncellenebilirliği denetleniyor (Veritabanının büyüklüğüne bağlı olarak uzun sürebilir)", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Veritabanı şeması güncellemesi denetleniyor (veritabanının büyüklüğüne bağlı olarak uzun sürebilir)", + "Checked database schema update" : "Veritabanı şeması güncellemesi denetlendi", + "Checking updates of apps" : "Uygulama güncellemeleri denetleniyor", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "%s için veritabanı şeması güncellemesi denetleniyor (veritabanının büyüklüğüne bağlı olarak uzun sürebilir)", "Checked database schema update for apps" : "Uygulamalar için veritabanı şema güncellemesi denetlendi", "Updated \"%s\" to %s" : "\"%s\", %s sürümüne güncellendi", - "Set log level to debug" : "Günlük seviyesini hata ayıklama olarak ayarla", - "Reset log level" : "Günlük seviyesini sıfırla", + "Set log level to debug" : "Günlükleme düzeyini Hata Ayıklama olarak ayarla", + "Reset log level" : "Günlükleme düzeyini sıfırla", "Starting code integrity check" : "Kod bütünlük sınaması başlatılıyor", "Finished code integrity check" : "Kod bütünlük sınaması bitti", - "%s (3rdparty)" : "%s (3. parti)", + "%s (3rdparty)" : "%s (3. taraf)", "%s (incompatible)" : "%s (uyumsuz)", "Following apps have been disabled: %s" : "Aşağıdaki uygulamalar devre dışı bırakıldı: %s", "Already up to date" : "Zaten güncel", - "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Kod bütünlük sınamasında sorunlar oluştu. Daha fazla bilgi…</a>", + "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Kod bütünlük sınamasında sorunlar çıktı. Ayrıntılı bilgi…</a>", "Settings" : "Ayarlar", + "Connection to server lost" : "Sunucu bağlantısı kesildi", + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Sayfa yüklenirken bir sorun çıktı. %n saniye sonra yeniden yüklenecek","Sayfa yüklenirken bir sorun çıktı. %n saniye sonra yeniden yüklenecek"], "Saving..." : "Kaydediliyor...", - "Dismiss" : "İptal et", + "Dismiss" : "Yoksay", + "This action requires you to confirm your password" : "Bu işlemi yapabilmek için parolanızı yazmalısınız", + "Authentication required" : "Kimlik doğrulaması gerekli", "Password" : "Parola", "Cancel" : "İptal", - "seconds ago" : "saniyeler önce", - "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Parolanızı değiştirme bağlantısı e-posta adresinize gönderildi. Makul bir süre içerisinde almadıysanız spam/gereksiz klasörlerini kontrol ediniz.<br>Bu konumlarda da yoksa yerel sistem yöneticinize sorunuz.", + "Confirm" : "Onayla", + "Failed to authenticate, try again" : "Kimlik doğrulanamadı, yeniden deneyin", + "seconds ago" : "saniye önce", + "Logging in …" : "Oturum açılıyor ...", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Parola sıfırlama bağlantısı e-posta adresinize gönderildi. Bir kaç dakika içinde e-postayı almazsanız spam/gereksiz klasörlerinize bakın.<br>E-postayı göremiyorsanız yerel sistem yöneticinizle görüşün.", + "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Dosyalarınız şifrelenmiş. Parola sıfırlama işleminden sonra verilerinize erişemeyeceksiniz.<br />Ne yapacağınızdan emin değilseniz, ilerlemeden önce sistem yöneticiniz ile görüşün.<br />Gerçekten devam etmek istiyor musunuz?", "I know what I'm doing" : "Ne yaptığımı biliyorum", - "Password can not be changed. Please contact your administrator." : "Parola değiştirilemedi. Lütfen yöneticiniz ile iletişime geçin.", + "Password can not be changed. Please contact your administrator." : "Parola değiştirilemedi. Lütfen yöneticiniz ile görüşün.", "No" : "Hayır", "Yes" : "Evet", - "Choose" : "Seç", - "Error loading file picker template: {error}" : "Dosya seçici şablonu yüklenirken hata: {error}", + "No files in here" : "Burada herhangi bir dosya yok", + "Choose" : "Seçin", + "Error loading file picker template: {error}" : "Dosya seçme kalıbı yüklenirken sorun çıktı: {error}", "Ok" : "Tamam", - "Error loading message template: {error}" : "İleti şablonu yüklenirken hata: {error}", + "Error loading message template: {error}" : "İleti kalıbı yüklenirken sorun çıktı: {error}", "read-only" : "salt okunur", "_{count} file conflict_::_{count} file conflicts_" : ["{count} dosya çakışması","{count} dosya çakışması"], "One file conflict" : "Bir dosya çakışması", "New Files" : "Yeni Dosyalar", - "Already existing files" : "Zaten mevcut olan dosyalar", + "Already existing files" : "Zaten var olan dosyalar", "Which files do you want to keep?" : "Hangi dosyaları saklamak istiyorsunuz?", - "If you select both versions, the copied file will have a number added to its name." : "İki sürümü de seçerseniz, kopyalanan dosyanın ismine bir sayı ilave edilecektir.", + "If you select both versions, the copied file will have a number added to its name." : "İki sürümü de seçerseniz, kopyalanan dosyanın adına bir sayı eklenir.", "Continue" : "Devam et", - "(all selected)" : "(tümü seçildi)", - "({count} selected)" : "({count} seçildi)", - "Error loading file exists template" : "Dosya mevcut şablonu yüklenirken hata", - "Very weak password" : "Çok güçsüz parola", - "Weak password" : "Güçsüz parola", - "So-so password" : "Normal parola", - "Good password" : "İyi parola", - "Strong password" : "Güçlü parola", + "(all selected)" : "(tüm seçilmişler)", + "({count} selected)" : "({count} seçilmiş)", + "Error loading file exists template" : "Dosya var kalıbı yüklenirken sorun çıktı", + "Pending" : "Bekliyor", + "Very weak password" : "Parola çok zayıf", + "Weak password" : "Parola zayıf", + "So-so password" : "Parola idare eder", + "Good password" : "Parola iyi", + "Strong password" : "Parola güçlü", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Web sunucunuz dosya transferi için düzgün bir şekilde yapılandırılmamış. WevDAV arabirimini sorunlu gözüküyor.", "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Web sunucunuz \"{url}\" adresini çözümleyecek şekilde uygun yapılandırılmamış. Daha fazla bilgi <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">belgelendirmemizde</a> bulunabilir.", "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Bu sunucunun çalışan bir İnternet bağlantısı yok. Birden fazla uç noktaya ulaşılamıyor. Bu, harici depolama alanı bağlama, güncelleştirme bildirimleri veya üçüncü parti uygulama kurma gibi bazı özellikler çalışmayacak demektir. Uzak dosyalara erişim ve e-posta ile bildirim gönderme de çalışmayacaktır. Eğer bu özelliklerin tamamını kullanmak istiyorsanız, sunucu için İnternet bağlantısını etkinleştirmenizi öneriyoruz.", diff --git a/core/l10n/tr.json b/core/l10n/tr.json index 09737016722..56ff4f0e3e6 100644 --- a/core/l10n/tr.json +++ b/core/l10n/tr.json @@ -1,78 +1,90 @@ { "translations": { "Please select a file." : "Lütfen bir dosya seçin.", "File is too big" : "Dosya çok büyük", - "Invalid file provided" : "Geçersiz dosya sağlandı", - "No image or file provided" : "Resim veya dosya belirtilmedi", - "Unknown filetype" : "Bilinmeyen dosya türü", - "Invalid image" : "Geçersiz resim", - "An error occurred. Please contact your admin." : "Bir hata oluştu. Lütfen yöneticinize başvurun.", - "No temporary profile picture available, try again" : "Kullanılabilir geçici profil resmi yok, tekrar deneyin", - "No crop data provided" : "Kesme verisi sağlanmamış", - "No valid crop data provided" : "Geçerli kırpma verisi sağlanmadı", - "Crop is not square" : "Kırpma kare değil", - "Couldn't reset password because the token is invalid" : "Belirteç geçersiz olduğundan parola sıfırlanamadı", - "Couldn't reset password because the token is expired" : "Jeton zaman aşımına uğradığından parola sıfırlanamadı", + "The selected file is not an image." : "Seçilmiş dosya bir görsel dosyası değil.", + "The selected file cannot be read." : "Seçilmiş dosya okunamadı.", + "Invalid file provided" : "Belirtilen dosya geçersiz", + "No image or file provided" : "Bir görsel ya da dosya belirtilmemiş", + "Unknown filetype" : "Dosya türü bilinmiyor", + "Invalid image" : "Görsel geçersiz", + "An error occurred. Please contact your admin." : "Bir sorun çıktı. Lütfen yöneticinizle görüşün.", + "No temporary profile picture available, try again" : "Kullanılabilecek geçici bir profil görseli bulunamadı. Yeniden deneyin", + "No crop data provided" : "Kırpma verileri belirtilmemiş", + "No valid crop data provided" : "Geçerli bir kırpma verisi belirtilmemiş", + "Crop is not square" : "Kırpma kare şeklinde değil", + "Couldn't reset password because the token is invalid" : "Kod geçersiz olduğundan parola sıfırlanamadı", + "Couldn't reset password because the token is expired" : "Kodun süresi geçtiğinden parola sıfırlanamadı", "Couldn't send reset email. Please make sure your username is correct." : "Sıfırlama e-postası gönderilemedi. Lütfen kullanıcı adınızın doğru olduğundan emin olun.", - "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Sıfırlama e-postası, bu kullanıcı için bir e-posta adresi olmadığından gönderilemedi. Lütfen yöneticiniz ile iletişime geçin.", + "Could not send reset email because there is no email address for this username. Please contact your administrator." : "Bu kullanıcı için bir e-posta adresi olmadığından sıfırlama e-postası gönderilemedi. Lütfen yöneticiniz ile görüşün.", "%s password reset" : "%s parola sıfırlama", - "Couldn't send reset email. Please contact your administrator." : "Sıfırlama e-postası gönderilemedi. Lütfen yöneticiniz ile iletişime geçin.", + "Couldn't send reset email. Please contact your administrator." : "Sıfırlama e-postası gönderilemedi. Lütfen yöneticiniz ile görüşün.", "Preparing update" : "Güncelleme hazırlanıyor", "[%d / %d]: %s" : "[%d / %d]: %s", "Repair warning: " : "Onarım uyarısı:", "Repair error: " : "Onarım hatası:", - "Please use the command line updater because automatic updating is disabled in the config.php." : "Otomatik güncellemeler config.php dosyasından pasif duruma getirildiği için, lütfen komut satırı güncelleyicisini kullanın. Oto", - "[%d / %d]: Checking table %s" : "[%d / %d]: Tablo kontroi ediliyor %s", + "Please use the command line updater because automatic updating is disabled in the config.php." : "Otomatik güncellemeler config.php dosyasında devre dışı bırakılmış olduğundan, komut satırı güncelleyicisini kullanın.", + "[%d / %d]: Checking table %s" : "[%d / %d]: %s tablosu denetleniyor", "Turned on maintenance mode" : "Bakım kipi etkinleştirildi", - "Turned off maintenance mode" : "Bakım kipi kapatıldı", + "Turned off maintenance mode" : "Bakım kipi devre dışı bırakıldı", "Maintenance mode is kept active" : "Bakım kipi etkin tutuldu", "Updating database schema" : "Veritabanı şeması güncelleniyor", "Updated database" : "Veritabanı güncellendi", - "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Veritabanı şeması güncellenebilirliği denetleniyor (Veritabanının büyüklüğüne bağlı olarak uzun sürebilir)", - "Checked database schema update" : "Veritabanı şema güncellemesi denetlendi", - "Checking updates of apps" : "Uygulamaların güncellemeleri denetleniyor", - "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "%s için veritabanı güncellenebilirliği denetleniyor (Veritabanının büyüklüğüne bağlı olarak uzun sürebilir)", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Veritabanı şeması güncellemesi denetleniyor (veritabanının büyüklüğüne bağlı olarak uzun sürebilir)", + "Checked database schema update" : "Veritabanı şeması güncellemesi denetlendi", + "Checking updates of apps" : "Uygulama güncellemeleri denetleniyor", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "%s için veritabanı şeması güncellemesi denetleniyor (veritabanının büyüklüğüne bağlı olarak uzun sürebilir)", "Checked database schema update for apps" : "Uygulamalar için veritabanı şema güncellemesi denetlendi", "Updated \"%s\" to %s" : "\"%s\", %s sürümüne güncellendi", - "Set log level to debug" : "Günlük seviyesini hata ayıklama olarak ayarla", - "Reset log level" : "Günlük seviyesini sıfırla", + "Set log level to debug" : "Günlükleme düzeyini Hata Ayıklama olarak ayarla", + "Reset log level" : "Günlükleme düzeyini sıfırla", "Starting code integrity check" : "Kod bütünlük sınaması başlatılıyor", "Finished code integrity check" : "Kod bütünlük sınaması bitti", - "%s (3rdparty)" : "%s (3. parti)", + "%s (3rdparty)" : "%s (3. taraf)", "%s (incompatible)" : "%s (uyumsuz)", "Following apps have been disabled: %s" : "Aşağıdaki uygulamalar devre dışı bırakıldı: %s", "Already up to date" : "Zaten güncel", - "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Kod bütünlük sınamasında sorunlar oluştu. Daha fazla bilgi…</a>", + "<a href=\"{docUrl}\">There were problems with the code integrity check. More information…</a>" : "<a href=\"{docUrl}\">Kod bütünlük sınamasında sorunlar çıktı. Ayrıntılı bilgi…</a>", "Settings" : "Ayarlar", + "Connection to server lost" : "Sunucu bağlantısı kesildi", + "_Problem loading page, reloading in %n second_::_Problem loading page, reloading in %n seconds_" : ["Sayfa yüklenirken bir sorun çıktı. %n saniye sonra yeniden yüklenecek","Sayfa yüklenirken bir sorun çıktı. %n saniye sonra yeniden yüklenecek"], "Saving..." : "Kaydediliyor...", - "Dismiss" : "İptal et", + "Dismiss" : "Yoksay", + "This action requires you to confirm your password" : "Bu işlemi yapabilmek için parolanızı yazmalısınız", + "Authentication required" : "Kimlik doğrulaması gerekli", "Password" : "Parola", "Cancel" : "İptal", - "seconds ago" : "saniyeler önce", - "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Parolanızı değiştirme bağlantısı e-posta adresinize gönderildi. Makul bir süre içerisinde almadıysanız spam/gereksiz klasörlerini kontrol ediniz.<br>Bu konumlarda da yoksa yerel sistem yöneticinize sorunuz.", + "Confirm" : "Onayla", + "Failed to authenticate, try again" : "Kimlik doğrulanamadı, yeniden deneyin", + "seconds ago" : "saniye önce", + "Logging in …" : "Oturum açılıyor ...", + "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "Parola sıfırlama bağlantısı e-posta adresinize gönderildi. Bir kaç dakika içinde e-postayı almazsanız spam/gereksiz klasörlerinize bakın.<br>E-postayı göremiyorsanız yerel sistem yöneticinizle görüşün.", + "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Dosyalarınız şifrelenmiş. Parola sıfırlama işleminden sonra verilerinize erişemeyeceksiniz.<br />Ne yapacağınızdan emin değilseniz, ilerlemeden önce sistem yöneticiniz ile görüşün.<br />Gerçekten devam etmek istiyor musunuz?", "I know what I'm doing" : "Ne yaptığımı biliyorum", - "Password can not be changed. Please contact your administrator." : "Parola değiştirilemedi. Lütfen yöneticiniz ile iletişime geçin.", + "Password can not be changed. Please contact your administrator." : "Parola değiştirilemedi. Lütfen yöneticiniz ile görüşün.", "No" : "Hayır", "Yes" : "Evet", - "Choose" : "Seç", - "Error loading file picker template: {error}" : "Dosya seçici şablonu yüklenirken hata: {error}", + "No files in here" : "Burada herhangi bir dosya yok", + "Choose" : "Seçin", + "Error loading file picker template: {error}" : "Dosya seçme kalıbı yüklenirken sorun çıktı: {error}", "Ok" : "Tamam", - "Error loading message template: {error}" : "İleti şablonu yüklenirken hata: {error}", + "Error loading message template: {error}" : "İleti kalıbı yüklenirken sorun çıktı: {error}", "read-only" : "salt okunur", "_{count} file conflict_::_{count} file conflicts_" : ["{count} dosya çakışması","{count} dosya çakışması"], "One file conflict" : "Bir dosya çakışması", "New Files" : "Yeni Dosyalar", - "Already existing files" : "Zaten mevcut olan dosyalar", + "Already existing files" : "Zaten var olan dosyalar", "Which files do you want to keep?" : "Hangi dosyaları saklamak istiyorsunuz?", - "If you select both versions, the copied file will have a number added to its name." : "İki sürümü de seçerseniz, kopyalanan dosyanın ismine bir sayı ilave edilecektir.", + "If you select both versions, the copied file will have a number added to its name." : "İki sürümü de seçerseniz, kopyalanan dosyanın adına bir sayı eklenir.", "Continue" : "Devam et", - "(all selected)" : "(tümü seçildi)", - "({count} selected)" : "({count} seçildi)", - "Error loading file exists template" : "Dosya mevcut şablonu yüklenirken hata", - "Very weak password" : "Çok güçsüz parola", - "Weak password" : "Güçsüz parola", - "So-so password" : "Normal parola", - "Good password" : "İyi parola", - "Strong password" : "Güçlü parola", + "(all selected)" : "(tüm seçilmişler)", + "({count} selected)" : "({count} seçilmiş)", + "Error loading file exists template" : "Dosya var kalıbı yüklenirken sorun çıktı", + "Pending" : "Bekliyor", + "Very weak password" : "Parola çok zayıf", + "Weak password" : "Parola zayıf", + "So-so password" : "Parola idare eder", + "Good password" : "Parola iyi", + "Strong password" : "Parola güçlü", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Web sunucunuz dosya transferi için düzgün bir şekilde yapılandırılmamış. WevDAV arabirimini sorunlu gözüküyor.", "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>." : "Web sunucunuz \"{url}\" adresini çözümleyecek şekilde uygun yapılandırılmamış. Daha fazla bilgi <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">belgelendirmemizde</a> bulunabilir.", "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Bu sunucunun çalışan bir İnternet bağlantısı yok. Birden fazla uç noktaya ulaşılamıyor. Bu, harici depolama alanı bağlama, güncelleştirme bildirimleri veya üçüncü parti uygulama kurma gibi bazı özellikler çalışmayacak demektir. Uzak dosyalara erişim ve e-posta ile bildirim gönderme de çalışmayacaktır. Eğer bu özelliklerin tamamını kullanmak istiyorsanız, sunucu için İnternet bağlantısını etkinleştirmenizi öneriyoruz.", diff --git a/lib/base.php b/lib/base.php index a4bb4f584f8..68178b06c5b 100644 --- a/lib/base.php +++ b/lib/base.php @@ -528,7 +528,7 @@ class OC { // // Questions about this code? Ask Lukas ;-) $currentUrl = substr(explode('?',$request->getRequestUri(), 2)[0], strlen(\OC::$WEBROOT)); - if($currentUrl === '/index.php/apps/user_saml/saml/acs') { + if($currentUrl === '/index.php/apps/user_saml/saml/acs' || $currentUrl === '/apps/user_saml/saml/acs') { return; } // For the "index.php" endpoint only a lax cookie is required. @@ -698,7 +698,7 @@ class OC { } OC_User::useBackend(new \OC\User\Database()); - OC_Group::useBackend(new \OC\Group\Database()); + \OC::$server->getGroupManager()->addBackend(new \OC\Group\Database()); // Subscribe to the hook \OCP\Util::connectHook( diff --git a/lib/composer/composer/ClassLoader.php b/lib/composer/composer/ClassLoader.php index 4626994fd4d..2c72175e772 100644 --- a/lib/composer/composer/ClassLoader.php +++ b/lib/composer/composer/ClassLoader.php @@ -374,9 +374,13 @@ class ClassLoader $first = $class[0]; if (isset($this->prefixLengthsPsr4[$first])) { - foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) { - if (0 === strpos($class, $prefix)) { - foreach ($this->prefixDirsPsr4[$prefix] as $dir) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath.'\\'; + if (isset($this->prefixDirsPsr4[$search])) { + foreach ($this->prefixDirsPsr4[$search] as $dir) { + $length = $this->prefixLengthsPsr4[$first][$search]; if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) { return $file; } diff --git a/lib/composer/composer/LICENSE b/lib/composer/composer/LICENSE index 1a28124886d..f27399a042d 100644 --- a/lib/composer/composer/LICENSE +++ b/lib/composer/composer/LICENSE @@ -1,5 +1,5 @@ -Copyright (c) 2016 Nils Adermann, Jordi Boggiano +Copyright (c) Nils Adermann, Jordi Boggiano Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/lib/private/Encryption/Util.php b/lib/private/Encryption/Util.php index 3afa1bb9596..76e1200a1cb 100644 --- a/lib/private/Encryption/Util.php +++ b/lib/private/Encryption/Util.php @@ -273,8 +273,18 @@ class Util { $result = \OCP\User::getUsers(); } else { $result = array_merge($result, $users); + + $groupManager = \OC::$server->getGroupManager(); foreach ($groups as $group) { - $result = array_merge($result, \OC_Group::usersInGroup($group)); + $groupObject = $groupManager->get($group); + if ($groupObject) { + $foundUsers = $groupObject->searchUsers('', -1, 0); + $userIds = []; + foreach ($foundUsers as $user) { + $userIds[] = $user->getUID(); + } + $result = array_merge($result, $userIds); + } } } diff --git a/lib/private/OCS/Provider.php b/lib/private/OCS/Provider.php index 7d53479c6e2..2e9ed85b67b 100644 --- a/lib/private/OCS/Provider.php +++ b/lib/private/OCS/Provider.php @@ -70,6 +70,23 @@ class Provider extends \OCP\AppFramework\Controller { ]; } + if ($this->appManager->isEnabledForUser('federation')) { + if (isset($services['FEDERATED_SHARING'])) { + $services['FEDERATED_SHARING']['endpoints']['shared-secret'] = '/ocs/v2.php/cloud/shared-secret'; + $services['FEDERATED_SHARING']['endpoints']['system-address-book'] = '/remote.php/dav/addressbooks/system/system/system'; + $services['FEDERATED_SHARING']['endpoints']['carddav-user'] = 'system'; + } else { + $services['FEDERATED_SHARING'] = [ + 'version' => 1, + 'endpoints' => [ + 'shared-secret' => '/ocs/v2.php/cloud/shared-secret', + 'system-address-book' => '/remote.php/dav/addressbooks/system/system/system', + 'carddav-user' => 'system' + ], + ]; + } + } + if($this->appManager->isEnabledForUser('activity')) { $services['ACTIVITY'] = [ 'version' => 1, diff --git a/lib/private/Preview/MP3.php b/lib/private/Preview/MP3.php index 804ec7fbcd9..05cd7c0edb1 100644 --- a/lib/private/Preview/MP3.php +++ b/lib/private/Preview/MP3.php @@ -61,24 +61,6 @@ class MP3 extends Provider { } } - return $this->getNoCoverThumbnail(); + return false; } - - /** - * Generates a default image when the file has no cover - * - * @return bool|\OCP\IImage false if the default image is missing or invalid - */ - private function getNoCoverThumbnail() { - $icon = \OC::$SERVERROOT . '/core/img/filetypes/audio.svg'; - - if(!file_exists($icon)) { - return false; - } - - $image = new \OC_Image(); - $image->loadFromFile($icon); - return $image->valid() ? $image : false; - } - } diff --git a/lib/private/Share/Share.php b/lib/private/Share/Share.php index 6abaa7dd413..da4b7dda91c 100644 --- a/lib/private/Share/Share.php +++ b/lib/private/Share/Share.php @@ -237,8 +237,19 @@ class Share extends Constants { if (\OCP\DB::isError($result)) { \OCP\Util::writeLog('OCP\Share', \OC_DB::getErrorMessage(), \OCP\Util::ERROR); } else { + $groupManager = \OC::$server->getGroupManager(); while ($row = $result->fetchRow()) { - $usersInGroup = \OC_Group::usersInGroup($row['share_with']); + + $usersInGroup = []; + $group = $groupManager->get($row['share_with']); + if ($group) { + $users = $group->searchUsers('', -1, 0); + $userIds = array(); + foreach ($users as $user) { + $userIds[] = $user->getUID(); + } + $usersInGroup = $userIds; + } $shares = array_merge($shares, $usersInGroup); if ($returnUserPaths) { foreach ($usersInGroup as $user) { @@ -468,7 +479,11 @@ class Share extends Constants { //if didn't found a result than let's look for a group share. if(empty($shares) && $user !== null) { - $groups = \OC_Group::getUserGroups($user); + $userObject = \OC::$server->getUserManager()->get($user); + $groups = []; + if ($userObject) { + $groups = \OC::$server->getGroupManager()->getUserGroupIds($userObject); + } if (!empty($groups)) { $where = $fileDependentWhere . ' WHERE `' . $column . '` = ? AND `item_type` = ? AND `share_with` in (?)'; @@ -628,7 +643,18 @@ class Share extends Constants { if ((int)$item['share_type'] === self::SHARE_TYPE_USER) { $users[] = $item['share_with']; } else if ((int)$item['share_type'] === self::SHARE_TYPE_GROUP) { - $users = array_merge($users, \OC_Group::usersInGroup($item['share_with'])); + + $group = \OC::$server->getGroupManager()->get($item['share_with']); + $userIds = []; + if ($group) { + $users = $group->searchUsers('', -1, 0); + foreach ($users as $user) { + $userIds[] = $user->getUID(); + } + return $userIds; + } + + $users = array_merge($users, $userIds); } } } @@ -740,7 +766,19 @@ class Share extends Constants { throw new \Exception($message_t); } if ($shareWithinGroupOnly) { - $inGroup = array_intersect(\OC_Group::getUserGroups($uidOwner), \OC_Group::getUserGroups($shareWith)); + $userManager = \OC::$server->getUserManager(); + $groupManager = \OC::$server->getGroupManager(); + $userOwner = $userManager->get($uidOwner); + $userShareWith = $userManager->get($shareWith); + $groupsOwner = []; + $groupsShareWith = []; + if ($userOwner) { + $groupsOwner = $groupManager->getUserGroupIds($userOwner); + } + if ($userShareWith) { + $groupsShareWith = $groupManager->getUserGroupIds($userShareWith); + } + $inGroup = array_intersect($groupsOwner, $groupsShareWith); if (empty($inGroup)) { $message = 'Sharing %s failed, because the user ' .'%s is not a member of any groups that %s is a member of'; @@ -775,18 +813,22 @@ class Share extends Constants { } } } else if ($shareType === self::SHARE_TYPE_GROUP) { - if (!\OC_Group::groupExists($shareWith)) { + if (!\OC::$server->getGroupManager()->groupExists($shareWith)) { $message = 'Sharing %s failed, because the group %s does not exist'; $message_t = $l->t('Sharing %s failed, because the group %s does not exist', array($itemSourceName, $shareWith)); \OCP\Util::writeLog('OCP\Share', sprintf($message, $itemSourceName, $shareWith), \OCP\Util::DEBUG); throw new \Exception($message_t); } if ($shareWithinGroupOnly && !\OC_Group::inGroup($uidOwner, $shareWith)) { - $message = 'Sharing %s failed, because ' - .'%s is not a member of the group %s'; - $message_t = $l->t('Sharing %s failed, because %s is not a member of the group %s', array($itemSourceName, $uidOwner, $shareWith)); - \OCP\Util::writeLog('OCP\Share', sprintf($message, $itemSourceName, $uidOwner, $shareWith), \OCP\Util::DEBUG); - throw new \Exception($message_t); + $group = \OC::$server->getGroupManager()->get($shareWith); + $user = \OC::$server->getUserManager()->get($uidOwner); + if (!$group || !$user || !$group->inGroup($user)) { + $message = 'Sharing %s failed, because ' + . '%s is not a member of the group %s'; + $message_t = $l->t('Sharing %s failed, because %s is not a member of the group %s', array($itemSourceName, $uidOwner, $shareWith)); + \OCP\Util::writeLog('OCP\Share', sprintf($message, $itemSourceName, $uidOwner, $shareWith), \OCP\Util::DEBUG); + throw new \Exception($message_t); + } } // Check if the item source is already shared with the group, either from the same owner or a different user // The check for each user in the group is done inside the put() function @@ -804,7 +846,18 @@ class Share extends Constants { $group = $shareWith; $shareWith = array(); $shareWith['group'] = $group; - $shareWith['users'] = array_diff(\OC_Group::usersInGroup($group), array($uidOwner)); + + + $groupObject = \OC::$server->getGroupManager()->get($group); + $userIds = []; + if ($groupObject) { + $users = $groupObject->searchUsers('', -1, 0); + foreach ($users as $user) { + $userIds[] = $user->getUID(); + } + } + + $shareWith['users'] = array_diff($userIds, array($uidOwner)); } else if ($shareType === self::SHARE_TYPE_LINK) { $updateExistingShare = false; if (\OC::$server->getAppConfig()->getValue('core', 'shareapi_allow_links', 'yes') == 'yes') { @@ -1057,7 +1110,9 @@ class Share extends Constants { $itemUnshared = true; break; } elseif ((int)$share['share_type'] === \OCP\Share::SHARE_TYPE_GROUP) { - if (\OC_Group::inGroup($uid, $share['share_with'])) { + $group = \OC::$server->getGroupManager()->get($share['share_with']); + $user = \OC::$server->getUserManager()->get($uid); + if ($group && $user && $group->inGroup($user)) { $groupShare = $share; } } elseif ((int)$share['share_type'] === self::$shareTypeGroupUserUnique && @@ -1746,7 +1801,12 @@ class Share extends Constants { $queryArgs[] = self::SHARE_TYPE_USER; $queryArgs[] = self::$shareTypeGroupUserUnique; $queryArgs[] = $shareWith; - $groups = \OC_Group::getUserGroups($shareWith); + + $user = \OC::$server->getUserManager()->get($shareWith); + $groups = []; + if ($user) { + $groups = \OC::$server->getGroupManager()->getUserGroupIds($user); + } if (!empty($groups)) { $placeholders = join(',', array_fill(0, count($groups), '?')); $where .= ' OR (`share_type` = ? AND `share_with` IN ('.$placeholders.')) '; @@ -2171,7 +2231,17 @@ class Share extends Constants { if (isset($shareWith['users'])) { $users = $shareWith['users']; } else { - $users = \OC_Group::usersInGroup($shareWith['group']); + $group = \OC::$server->getGroupManager()->get($shareWith['group']); + if ($group) { + $users = $group->searchUsers('', -1, 0); + $userIds = []; + foreach ($users as $user) { + $userIds[] = $user->getUID(); + } + $users = $userIds; + } else { + $users = []; + } } // remove current user from list if (in_array(\OCP\User::getUser(), $users)) { diff --git a/lib/private/Template/SCSSCacher.php b/lib/private/Template/SCSSCacher.php index d6f5a2c6fd3..744ea80761e 100644 --- a/lib/private/Template/SCSSCacher.php +++ b/lib/private/Template/SCSSCacher.php @@ -103,10 +103,17 @@ class SCSSCacher { private function isCached($fileNameCSS, $fileNameSCSS, ISimpleFolder $folder, $path) { try{ $cachedFile = $folder->getFile($fileNameCSS); - if( $cachedFile->getMTime() > filemtime($path.'/'.$fileNameSCSS) - && $cachedFile->getSize() > 0 ) { - return true; + if ($cachedFile->getSize() > 0) { + $depFile = $folder->getFile($fileNameCSS . '.deps'); + $deps = json_decode($depFile->getContent(), true); + + foreach ($deps as $file=>$mtime) { + if (!file_exists($file) || filemtime($file) > $mtime) { + return false; + } + } } + return true; } catch(NotFoundException $e) { return false; } @@ -140,6 +147,13 @@ class SCSSCacher { $cachedfile = $folder->newFile($fileNameCSS); } + $depFileName = $fileNameCSS . '.deps'; + try { + $depFile = $folder->getFile($depFileName); + } catch (NotFoundException $e) { + $depFile = $folder->newFile($depFileName); + } + // Compile try { $compiledScss = $scss->compile('@import "'.$fileNameSCSS.'";'); @@ -150,6 +164,7 @@ class SCSSCacher { try { $cachedfile->putContent($this->rebaseUrls($compiledScss, $webDir)); + $depFile->putContent(json_encode($scss->getParsedFiles())); $this->logger->debug($webDir.'/'.$fileNameSCSS.' compiled and successfully cached', ['app' => 'core']); return true; } catch(NotFoundException $e) { diff --git a/lib/private/User/User.php b/lib/private/User/User.php index 961f70f8a8e..bca9c46bfd0 100644 --- a/lib/private/User/User.php +++ b/lib/private/User/User.php @@ -204,9 +204,15 @@ class User implements IUser { // FIXME: Feels like an hack - suggestions? + $groupManager = \OC::$server->getGroupManager(); // We have to delete the user from all groups - foreach (\OC::$server->getGroupManager()->getUserGroupIds($this) as $groupId) { - \OC_Group::removeFromGroup($this->uid, $groupId); + foreach ($groupManager->getUserGroupIds($this) as $groupId) { + $group = $groupManager->get($groupId); + if ($group) { + \OC_Hook::emit("OC_Group", "pre_removeFromGroup", ["run" => true, "uid" => $this->uid, "gid" => $groupId]); + $group->removeUser($this); + \OC_Hook::emit("OC_User", "post_removeFromGroup", ["uid" => $this->uid, "gid" => $groupId]); + } } // Delete the user's keys in preferences \OC::$server->getConfig()->deleteAllUserValues($this->uid); diff --git a/lib/private/legacy/group.php b/lib/private/legacy/group.php deleted file mode 100644 index 6b58cb4c834..00000000000 --- a/lib/private/legacy/group.php +++ /dev/null @@ -1,302 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Arthur Schiwon <blizzz@arthur-schiwon.de> - * @author Bart Visscher <bartv@thisnet.nl> - * @author Björn Schießle <bjoern@schiessle.org> - * @author Georg Ehrke <georg@owncloud.com> - * @author goodkiller <markopraakli@gmail.com> - * @author Jakob Sack <mail@jakobsack.de> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author macjohnny <estebanmarin@gmx.ch> - * @author Michael Gapczynski <GapczynskiM@gmail.com> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Qingping Hou <dave2008713@gmail.com> - * @author Robin Appelman <robin@icewind.nl> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * - * @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/> - * - */ - -/** - * This class provides all methods needed for managing groups. - * - * Note that &run is deprecated and won't work anymore. - * Hooks provided: - * pre_createGroup(&run, gid) - * post_createGroup(gid) - * pre_deleteGroup(&run, gid) - * post_deleteGroup(gid) - * pre_addToGroup(&run, uid, gid) - * post_addToGroup(uid, gid) - * pre_removeFromGroup(&run, uid, gid) - * post_removeFromGroup(uid, gid) - */ -class OC_Group { - - /** - * @return \OC\Group\Manager - * @deprecated Use \OC::$server->getGroupManager(); - */ - public static function getManager() { - return \OC::$server->getGroupManager(); - } - - /** - * @return \OC\User\Manager - * @deprecated Use \OC::$server->getUserManager() - */ - private static function getUserManager() { - return \OC::$server->getUserManager(); - } - - /** - * set the group backend - * @param \OC\Group\Backend $backend The backend to use for user management - * @return bool - */ - public static function useBackend($backend) { - self::getManager()->addBackend($backend); - return true; - } - - /** - * remove all used backends - */ - public static function clearBackends() { - self::getManager()->clearBackends(); - } - - /** - * Try to create a new group - * @param string $gid The name of the group to create - * @return bool - * - * Tries to create a new group. If the group name already exists, false will - * be returned. Basic checking of Group name - * @deprecated Use \OC::$server->getGroupManager()->createGroup() instead - */ - public static function createGroup($gid) { - if (self::getManager()->createGroup($gid)) { - return true; - } else { - return false; - } - } - - /** - * delete a group - * @param string $gid gid of the group to delete - * @return bool - * - * Deletes a group and removes it from the group_user-table - * @deprecated Use \OC::$server->getGroupManager()->delete() instead - */ - public static function deleteGroup($gid) { - $group = self::getManager()->get($gid); - if ($group) { - if ($group->delete()) { - return true; - } - } - return false; - } - - /** - * is user in group? - * @param string $uid uid of the user - * @param string $gid gid of the group - * @return bool - * - * Checks whether the user is member of a group or not. - * @deprecated Use \OC::$server->getGroupManager->inGroup($user); - */ - public static function inGroup($uid, $gid) { - $group = self::getManager()->get($gid); - $user = self::getUserManager()->get($uid); - if ($group and $user) { - return $group->inGroup($user); - } - return false; - } - - /** - * Add a user to a group - * @param string $uid Name of the user to add to group - * @param string $gid Name of the group in which add the user - * @return bool - * - * Adds a user to a group. - * @deprecated Use \OC::$server->getGroupManager->addUser(); - */ - public static function addToGroup($uid, $gid) { - $group = self::getManager()->get($gid); - $user = self::getUserManager()->get($uid); - if ($group and $user) { - $group->addUser($user); - return true; - } else { - return false; - } - } - - /** - * Removes a user from a group - * @param string $uid Name of the user to remove from group - * @param string $gid Name of the group from which remove the user - * @return bool - * - * removes the user from a group. - */ - public static function removeFromGroup($uid, $gid) { - $group = self::getManager()->get($gid); - $user = self::getUserManager()->get($uid); - if ($group and $user) { - OC_Hook::emit("OC_Group", "pre_removeFromGroup", array("run" => true, "uid" => $uid, "gid" => $gid)); - $group->removeUser($user); - OC_Hook::emit("OC_User", "post_removeFromGroup", array("uid" => $uid, "gid" => $gid)); - return true; - } else { - return false; - } - } - - /** - * Get all groups a user belongs to - * @param string $uid Name of the user - * @return array an array of group names - * - * This function fetches all groups a user belongs to. It does not check - * if the user exists at all. - * @deprecated Use \OC::$server->getGroupManager->getUserGroupIds($user) - */ - public static function getUserGroups($uid) { - $user = self::getUserManager()->get($uid); - if ($user) { - return self::getManager()->getUserGroupIds($user); - } else { - return array(); - } - } - - /** - * get a list of all groups - * @param string $search - * @param int|null $limit - * @param int|null $offset - * @return array an array of group names - * - * Returns a list with all groups - */ - public static function getGroups($search = '', $limit = null, $offset = null) { - $groups = self::getManager()->search($search, $limit, $offset); - $groupIds = array(); - foreach ($groups as $group) { - $groupIds[] = $group->getGID(); - } - return $groupIds; - } - - /** - * check if a group exists - * - * @param string $gid - * @return bool - * @deprecated Use \OC::$server->getGroupManager->groupExists($gid) - */ - public static function groupExists($gid) { - return self::getManager()->groupExists($gid); - } - - /** - * get a list of all users in a group - * @param string $gid - * @param string $search - * @param int $limit - * @param int $offset - * @return array an array of user ids - */ - public static function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) { - $group = self::getManager()->get($gid); - if ($group) { - $users = $group->searchUsers($search, $limit, $offset); - $userIds = array(); - foreach ($users as $user) { - $userIds[] = $user->getUID(); - } - return $userIds; - } else { - return array(); - } - } - - /** - * get a list of all users in several groups - * @param string[] $gids - * @param string $search - * @param int $limit - * @param int $offset - * @return array an array of user ids - */ - public static function usersInGroups($gids, $search = '', $limit = -1, $offset = 0) { - $users = array(); - foreach ($gids as $gid) { - // TODO Need to apply limits to groups as total - $users = array_merge(array_diff(self::usersInGroup($gid, $search, $limit, $offset), $users), $users); - } - return $users; - } - - /** - * get a list of all display names in a group - * @param string $gid - * @param string $search - * @param int $limit - * @param int $offset - * @return array an array of display names (value) and user ids(key) - * @deprecated Use \OC::$server->getGroupManager->displayNamesInGroup($gid, $search, $limit, $offset) - */ - public static function displayNamesInGroup($gid, $search = '', $limit = -1, $offset = 0) { - return self::getManager()->displayNamesInGroup($gid, $search, $limit, $offset); - } - - /** - * get a list of all display names in several groups - * @param array $gids - * @param string $search - * @param int $limit - * @param int $offset - * @return array an array of display names (Key) user ids (value) - */ - public static function displayNamesInGroups($gids, $search = '', $limit = -1, $offset = 0) { - $displayNames = array(); - foreach ($gids as $gid) { - // TODO Need to apply limits to groups as total - $diff = array_diff( - self::displayNamesInGroup($gid, $search, $limit, $offset), - $displayNames - ); - if ($diff) { - // A fix for LDAP users. array_merge loses keys... - $displayNames = $diff + $displayNames; - } - } - return $displayNames; - } -} diff --git a/lib/private/legacy/template.php b/lib/private/legacy/template.php index 09e3d130f49..8535e018879 100644 --- a/lib/private/legacy/template.php +++ b/lib/private/legacy/template.php @@ -106,19 +106,9 @@ class OC_Template extends \OC\Template\Base { } } - OC_Util::addStyle("tooltip",null,true); OC_Util::addStyle('jquery-ui-fixes',null,true); OC_Util::addVendorStyle('jquery-ui/themes/base/jquery-ui',null,true); - OC_Util::addStyle("mobile",null,true); - OC_Util::addStyle("multiselect",null,true); - OC_Util::addStyle("fixes",null,true); - OC_Util::addStyle("global",null,true); - OC_Util::addStyle("apps",null,true); - OC_Util::addStyle("fonts",null,true); - OC_Util::addStyle("icons",null,true); - OC_Util::addStyle("header",null,true); - OC_Util::addStyle("inputs"); - OC_Util::addStyle("styles",null,true); + OC_Util::addStyle('server', null, true); // avatars \OC_Util::addScript('jquery.avatar', null, true); diff --git a/lib/private/legacy/user.php b/lib/private/legacy/user.php index 661242a659a..621ea3535b1 100644 --- a/lib/private/legacy/user.php +++ b/lib/private/legacy/user.php @@ -333,7 +333,9 @@ class OC_User { * @return bool */ public static function isAdminUser($uid) { - if (OC_Group::inGroup($uid, 'admin') && self::$incognitoMode === false) { + $group = \OC::$server->getGroupManager()->get('admin'); + $user = \OC::$server->getUserManager()->get($uid); + if ($group && $user && $group->inGroup($user) && self::$incognitoMode === false) { return true; } return false; diff --git a/settings/l10n/de.js b/settings/l10n/de.js index 2843806b069..ac55f6e8f7e 100644 --- a/settings/l10n/de.js +++ b/settings/l10n/de.js @@ -125,6 +125,7 @@ OC.L10N.register( "undo" : "rückgängig machen", "never" : "niemals", "deleted {userName}" : "{userName} gelöscht", + "No user found for <strong>{pattern}</strong>" : "Keine Benutzer für <strong>{pattern}</strong> gefunden", "Unable to add user to group {group}" : "Benutzer kann nicht zur Gruppe {group} hinzugefügt werden ", "Unable to remove user from group {group}" : "Benutzer kann nicht aus der Gruppe {group} entfernt werden ", "Add group" : "Gruppe hinzufügen", diff --git a/settings/l10n/de.json b/settings/l10n/de.json index 115d89312ff..fa061a7eadf 100644 --- a/settings/l10n/de.json +++ b/settings/l10n/de.json @@ -123,6 +123,7 @@ "undo" : "rückgängig machen", "never" : "niemals", "deleted {userName}" : "{userName} gelöscht", + "No user found for <strong>{pattern}</strong>" : "Keine Benutzer für <strong>{pattern}</strong> gefunden", "Unable to add user to group {group}" : "Benutzer kann nicht zur Gruppe {group} hinzugefügt werden ", "Unable to remove user from group {group}" : "Benutzer kann nicht aus der Gruppe {group} entfernt werden ", "Add group" : "Gruppe hinzufügen", diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js index 63a68200bd7..4e41e2cb317 100644 --- a/settings/l10n/de_DE.js +++ b/settings/l10n/de_DE.js @@ -125,6 +125,7 @@ OC.L10N.register( "undo" : "rückgängig machen", "never" : "niemals", "deleted {userName}" : "{userName} gelöscht", + "No user found for <strong>{pattern}</strong>" : "Keine Benutzer für <strong>{pattern}</strong> gefunden", "Unable to add user to group {group}" : "Benutzer kann nicht zur Gruppe {group} hinzugefügt werden ", "Unable to remove user from group {group}" : "Benutzer kann nicht aus der Gruppe {group} entfernt werden ", "Add group" : "Gruppe hinzufügen", diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json index 3e0ab8eab9e..9ee6357457c 100644 --- a/settings/l10n/de_DE.json +++ b/settings/l10n/de_DE.json @@ -123,6 +123,7 @@ "undo" : "rückgängig machen", "never" : "niemals", "deleted {userName}" : "{userName} gelöscht", + "No user found for <strong>{pattern}</strong>" : "Keine Benutzer für <strong>{pattern}</strong> gefunden", "Unable to add user to group {group}" : "Benutzer kann nicht zur Gruppe {group} hinzugefügt werden ", "Unable to remove user from group {group}" : "Benutzer kann nicht aus der Gruppe {group} entfernt werden ", "Add group" : "Gruppe hinzufügen", diff --git a/settings/l10n/eu.js b/settings/l10n/eu.js index e533f692df0..b3a360cace5 100644 --- a/settings/l10n/eu.js +++ b/settings/l10n/eu.js @@ -57,6 +57,7 @@ OC.L10N.register( "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Official apps are developed by and within the community. They offer central functionality and are ready for production use.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "This app is not checked for security issues and is new or known to be unstable. Install at your own risk.", + "Disabling app …" : "Aplikazioa desgaitzen...", "Error while disabling app" : "Erroea izan da aplikazioa desgaitzerakoan", "Disable" : "Ez-gaitu", "Enable" : "Gaitu", @@ -109,6 +110,7 @@ OC.L10N.register( "Contacts" : "Kontaktuak", "Visible to local users and to trusted servers" : "Bertako erabiltzaile eta zerbitzarien jendearentzat ikusgai", "Public" : "Publikoa", + "Will be synced to a global and public address book" : "Helbide liburu global eta publikoan sinkronizatuko da", "Select a profile picture" : "Profilaren irudia aukeratu", "Very weak password" : "Pasahitz oso ahula", "Weak password" : "Pasahitz ahula", @@ -123,6 +125,7 @@ OC.L10N.register( "undo" : "desegin", "never" : "inoiz", "deleted {userName}" : "{userName} ezabatuta", + "No user found for <strong>{pattern}</strong>" : "Ez da aurkitu <strong>{pattern}</strong>erabiltzailea", "Unable to add user to group {group}" : "Ezin erabiltzailea {group} taldera gehitu", "Unable to remove user from group {group}" : "Ezin erabiltzailea {group} taldetik kendu", "Add group" : "Taldea gehitu", @@ -173,6 +176,7 @@ OC.L10N.register( "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data.", "This is the final warning: Do you really want to enable encryption?" : "This is the final warning: Do you really want to enable encryption?", "Enable encryption" : "Gaitu enkriptatzea", + "Security & setup warnings" : "Segurtasun eta konfigurazio abisuak", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Bakarrik irakurtzeko konfigurazioa gaitu da. Honek web-interfazearen bidez konfigurazio batzuk aldatzea ekiditzen du. Are gehiago, fitxategia eskuz ezarri behar da idazteko moduan eguneraketa bakoitzerako.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Badirudi PHP konfiguratuta dagoela lineako dokumentu blokeak aldatzeko. Honek zenbait oinarrizko aplikazio eskuraezin bihurtuko ditu.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Hau ziur aski cache/accelerator batek eragin du, hala nola Zend OPcache edo eAccelerator.", @@ -181,11 +185,15 @@ OC.L10N.register( "This means that there might be problems with certain characters in file names." : "Honek esan nahi du fitxategien izenetako karaktere batzuekin arazoak egon daitezkeela.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Biziki gomendatzen dizugu beharrezkoak diren paketea zure sisteman instalatzea honi euskarria eman ahal izateko: %s.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Zure instalazioa ez badago domeinuaren sustraian egina eta erabiltzen badu sistemaren cron-a, arazoak izan daitezke URL sorreran. Arazo horiek saihesteko ezarri \"overwrite.cli.url\" opzioa zure config.php fitxategian zure instalazioaren webroot bidera (Proposatua: \"%s\")", + "All checks passed." : "Egiaztapen guztiak gaindituta.", "Cron" : "Cron", + "Last cron job execution: %s." : "Azken cron lan exekuzioa: %s.", + "Last cron job execution: %s. Something seems wrong." : "Azken cron lan exekuzioa: %s. Zerbait gaizki dirudi.", "Cron was not executed yet!" : "Cron-a oraindik ez da exekutatu!", "Execute one task with each page loaded" : "Exekutatu zeregin bat orri karga bakoitzean", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php webcron zerbitzu batean erregistratua dago cron.php 15 minuturo http bidez deitzeko.", "Use system's cron service to call the cron.php file every 15 minutes." : "Erabili sistemaren cron zerbitzua deitzeko cron.php fitxategia 15 minutuan behin.", + "The cron.php needs to be executed by the system user \"%s\"." : "Sistemako \"%s\" erabiltzaileak, cron.php exekutatu behar du.", "Version" : "Bertsioa", "Sharing" : "Partekatzea", "Allow apps to use the Share API" : "Baimendu aplikazioak partekatzeko APIa erabiltzeko", @@ -197,9 +205,11 @@ OC.L10N.register( "days" : "egun", "Enforce expiration date" : "Muga data betearazi", "Allow resharing" : "Baimendu birpartekatzea", + "Allow sharing with groups" : "Onartu taldeekin partekatzen", "Restrict users to only share with users in their groups" : "Mugatu partekatzeak taldeko erabiltzaileetara", "Exclude groups from sharing" : "Baztertu taldeak partekatzean", "These groups will still be able to receive shares, but not to initiate them." : "Talde hauek oraindik jaso ahal izango dute partekatzeak, baina ezingo dute partekatu", + "Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "Onartu elkarbanatze elkarrizketan, erabiltzaile osatze automatikoa. Desgaituta badago, erabiltzaile izena osoa sartu behar da.", "Tips & tricks" : "Aholkuak eta trikimailuak", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>.", "How to do backups" : "Nola egin babes kopiak", @@ -215,6 +225,7 @@ OC.L10N.register( "User documentation" : "Erabiltzailearen dokumentazioa", "Admin documentation" : "Administratzailearen dokumentazioa", "Visit website" : "Web orria ikusi", + "Report a bug" : "Akats baten berri eman", "Show description …" : "Erakutsi deskribapena ...", "Hide description …" : "Ezkutatu deskribapena ...", "This app has an update available." : "Aplikazio honek eguneraketa bat eskuragarri ditu.", @@ -232,9 +243,14 @@ OC.L10N.register( "Cheers!" : "Ongi izan!", "Hey there,\n\njust letting you know that you now have a %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Kaixo,\n\nJakinarazi nahi dizugu, badaukazula %s kontua.\n\nZure erabiltzaile izena: %s \nSar zaitez: %s\n", "Administrator documentation" : "Administratzaile dokumentazioa", + "Online documentation" : "Online dokumentazioa", "Forum" : "Foroa", + "Getting help" : "Laguntza lortzen", + "Commercial support" : "Merkataritza laguntza", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Zuk <strong>%s</strong> erabiltzen ari zara <strong>%s</strong>-tik", "Profile picture" : "Zure irudia", "Upload new" : "Igo berria", + "Select from Files" : "Aukeratu fitxategien artean", "Remove image" : "Irudia ezabatu", "Picture provided by original account" : "Irudia jatorrizko kontutik hartuta", "Cancel" : "Ezeztatu", @@ -244,12 +260,16 @@ OC.L10N.register( "Email" : "E-posta", "Your email address" : "Zure e-posta", "No email address set" : "Ez da eposta helbidea ezarri", + "For password reset and notifications" : "Pasahitza berrezartzeko eta jakinarazpenerako", "Phone number" : "Telefono zenbakia", "Your phone number" : "Zure telefono zenbakia", "Address" : "Helbidea", "Your postal address" : "Zure helbidea", "Website" : "Web orria", "Your website" : "Zure web orria", + "Twitter" : "Twitter", + "Your Twitter handle" : "Zure Twitter erabiltzailea", + "You are member of the following groups:" : "Zuk honako talde kide zara:", "Password" : "Pasahitza", "Current password" : "Uneko pasahitza", "New password" : "Pasahitz berria", @@ -261,7 +281,15 @@ OC.L10N.register( "Android app" : "Android aplikazioa", "iOS app" : "iOS aplikazioa", "Show First Run Wizard again" : "Erakutsi berriz Lehenengo Aldiko Morroia", + "Web, desktop and mobile clients currently logged in to your account." : "Web-gune, mahaigain eta mugikorrean zure kontuan saioa hasita dago.", + "Device" : "Gailu", + "Last activity" : "Azken jarduera", + "Passcodes that give an app or device permissions to access your account." : "Zure kontuan sartzeko aplikazio edo gailuei baimena ematen dien pasahitzak.", "Name" : "Izena", + "App name" : "Aplikazioaren izena", + "Create new app password" : "Sortu app pasahitza berria", + "Use the credentials below to configure your app or device." : "Erabili kredentzialak beheko zure aplikazioa edo gailua konfiguratzeko.", + "For security reasons this password will only be shown once." : "Segurtasun arrazoiengatik, pasahitz hau behin soilik erakutsiko da.", "Username" : "Erabiltzaile izena", "Done" : "Egina", "Show storage location" : "Erakutsi biltegiaren kokapena", @@ -273,11 +301,17 @@ OC.L10N.register( "Create" : "Sortu", "Admin Recovery Password" : "Administratzailearen pasahitza berreskuratzea", "Enter the recovery password in order to recover the users files during password change" : "Berreskuratze pasahitza idatzi pasahitz aldaketan erabiltzaileen fitxategiak berreskuratzeko", + "Group name" : "Taldearen izena", "Everyone" : "Edonor", "Admins" : "Administratzaileak", + "Default quota" : "Kuota lehenetsia", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Mesedez sartu biltegiratze kouta (adb: \"512 MB\" edo \"12 GB\")", "Other" : "Bestelakoa", + "Group admin for" : "Talde honen administratzailea", "Quota" : "Kuota", + "Storage location" : "Biltegiratze kokapena", + "User backend" : "Erabiltzaile jatorria", + "Last login" : "Azken saioa", "change full name" : "aldatu izena", "set new password" : "ezarri pasahitz berria", "change email address" : "aldatu eposta helbidea", @@ -289,6 +323,7 @@ OC.L10N.register( "Unable to remove user from group %s" : "Ezin izan da erabiltzailea %s taldetik ezabatu", "Are you really sure you want add \"{domain}\" as trusted domain?" : "Ziur zaude gehitu nahi duzula \"{domain}\" domeinu fidagarri gisa?", "Please wait...." : "Itxoin mesedez...", + "add group" : "Taldea gehitu", "Everything (fatal issues, errors, warnings, info, debug)" : "Dena (arazo larriak, erroreak, abisuak, informazioa, arazketa)", "Info, warnings, errors and fatal issues" : "Informazioa, abisuak, erroreak eta arazo larriak.", "Warnings, errors and fatal issues" : "Abisuak, erroreak eta arazo larriak", @@ -303,7 +338,13 @@ OC.L10N.register( "Uninstall App" : "Desinstalatu aplikazioa", "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Kaixo,<br><br>orain %s kontu bat duzula esateko besterik ez.<br><br>Zure erabiltzailea: %s<br>Sar zaitez: <a href=\"%s\">%s</a><br><br>", "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Kaixo,\n\norain %s kontu bat duzula esateko besterik ez.\n\nZure erabiltzailea: %s\nSar zaitez: %s\n\n", + "Add Group" : "Gehitu taldea", "Group" : "Taldea", - "Full Name" : "Izen osoa" + "Default Quota" : "Lehenetsitako kuota", + "Full Name" : "Izen osoa", + "Group Admin for" : "Talde honen administratzailea", + "Storage Location" : "Biltegiratze kokapena", + "User Backend" : "Erabiltzaile jatorria", + "Last Login" : "Azken saioa" }, "nplurals=2; plural=(n != 1);"); diff --git a/settings/l10n/eu.json b/settings/l10n/eu.json index b5421f74f07..f7c05b2a41b 100644 --- a/settings/l10n/eu.json +++ b/settings/l10n/eu.json @@ -55,6 +55,7 @@ "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Official apps are developed by and within the community. They offer central functionality and are ready for production use.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "This app is not checked for security issues and is new or known to be unstable. Install at your own risk.", + "Disabling app …" : "Aplikazioa desgaitzen...", "Error while disabling app" : "Erroea izan da aplikazioa desgaitzerakoan", "Disable" : "Ez-gaitu", "Enable" : "Gaitu", @@ -107,6 +108,7 @@ "Contacts" : "Kontaktuak", "Visible to local users and to trusted servers" : "Bertako erabiltzaile eta zerbitzarien jendearentzat ikusgai", "Public" : "Publikoa", + "Will be synced to a global and public address book" : "Helbide liburu global eta publikoan sinkronizatuko da", "Select a profile picture" : "Profilaren irudia aukeratu", "Very weak password" : "Pasahitz oso ahula", "Weak password" : "Pasahitz ahula", @@ -121,6 +123,7 @@ "undo" : "desegin", "never" : "inoiz", "deleted {userName}" : "{userName} ezabatuta", + "No user found for <strong>{pattern}</strong>" : "Ez da aurkitu <strong>{pattern}</strong>erabiltzailea", "Unable to add user to group {group}" : "Ezin erabiltzailea {group} taldera gehitu", "Unable to remove user from group {group}" : "Ezin erabiltzailea {group} taldetik kendu", "Add group" : "Taldea gehitu", @@ -171,6 +174,7 @@ "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data.", "This is the final warning: Do you really want to enable encryption?" : "This is the final warning: Do you really want to enable encryption?", "Enable encryption" : "Gaitu enkriptatzea", + "Security & setup warnings" : "Segurtasun eta konfigurazio abisuak", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Bakarrik irakurtzeko konfigurazioa gaitu da. Honek web-interfazearen bidez konfigurazio batzuk aldatzea ekiditzen du. Are gehiago, fitxategia eskuz ezarri behar da idazteko moduan eguneraketa bakoitzerako.", "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "Badirudi PHP konfiguratuta dagoela lineako dokumentu blokeak aldatzeko. Honek zenbait oinarrizko aplikazio eskuraezin bihurtuko ditu.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Hau ziur aski cache/accelerator batek eragin du, hala nola Zend OPcache edo eAccelerator.", @@ -179,11 +183,15 @@ "This means that there might be problems with certain characters in file names." : "Honek esan nahi du fitxategien izenetako karaktere batzuekin arazoak egon daitezkeela.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Biziki gomendatzen dizugu beharrezkoak diren paketea zure sisteman instalatzea honi euskarria eman ahal izateko: %s.", "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Zure instalazioa ez badago domeinuaren sustraian egina eta erabiltzen badu sistemaren cron-a, arazoak izan daitezke URL sorreran. Arazo horiek saihesteko ezarri \"overwrite.cli.url\" opzioa zure config.php fitxategian zure instalazioaren webroot bidera (Proposatua: \"%s\")", + "All checks passed." : "Egiaztapen guztiak gaindituta.", "Cron" : "Cron", + "Last cron job execution: %s." : "Azken cron lan exekuzioa: %s.", + "Last cron job execution: %s. Something seems wrong." : "Azken cron lan exekuzioa: %s. Zerbait gaizki dirudi.", "Cron was not executed yet!" : "Cron-a oraindik ez da exekutatu!", "Execute one task with each page loaded" : "Exekutatu zeregin bat orri karga bakoitzean", "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php webcron zerbitzu batean erregistratua dago cron.php 15 minuturo http bidez deitzeko.", "Use system's cron service to call the cron.php file every 15 minutes." : "Erabili sistemaren cron zerbitzua deitzeko cron.php fitxategia 15 minutuan behin.", + "The cron.php needs to be executed by the system user \"%s\"." : "Sistemako \"%s\" erabiltzaileak, cron.php exekutatu behar du.", "Version" : "Bertsioa", "Sharing" : "Partekatzea", "Allow apps to use the Share API" : "Baimendu aplikazioak partekatzeko APIa erabiltzeko", @@ -195,9 +203,11 @@ "days" : "egun", "Enforce expiration date" : "Muga data betearazi", "Allow resharing" : "Baimendu birpartekatzea", + "Allow sharing with groups" : "Onartu taldeekin partekatzen", "Restrict users to only share with users in their groups" : "Mugatu partekatzeak taldeko erabiltzaileetara", "Exclude groups from sharing" : "Baztertu taldeak partekatzean", "These groups will still be able to receive shares, but not to initiate them." : "Talde hauek oraindik jaso ahal izango dute partekatzeak, baina ezingo dute partekatu", + "Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered." : "Onartu elkarbanatze elkarrizketan, erabiltzaile osatze automatikoa. Desgaituta badago, erabiltzaile izena osoa sartu behar da.", "Tips & tricks" : "Aholkuak eta trikimailuak", "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>." : "To migrate to another database use the command line tool: 'occ db:convert-type', or see the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a>.", "How to do backups" : "Nola egin babes kopiak", @@ -213,6 +223,7 @@ "User documentation" : "Erabiltzailearen dokumentazioa", "Admin documentation" : "Administratzailearen dokumentazioa", "Visit website" : "Web orria ikusi", + "Report a bug" : "Akats baten berri eman", "Show description …" : "Erakutsi deskribapena ...", "Hide description …" : "Ezkutatu deskribapena ...", "This app has an update available." : "Aplikazio honek eguneraketa bat eskuragarri ditu.", @@ -230,9 +241,14 @@ "Cheers!" : "Ongi izan!", "Hey there,\n\njust letting you know that you now have a %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Kaixo,\n\nJakinarazi nahi dizugu, badaukazula %s kontua.\n\nZure erabiltzaile izena: %s \nSar zaitez: %s\n", "Administrator documentation" : "Administratzaile dokumentazioa", + "Online documentation" : "Online dokumentazioa", "Forum" : "Foroa", + "Getting help" : "Laguntza lortzen", + "Commercial support" : "Merkataritza laguntza", + "You are using <strong>%s</strong> of <strong>%s</strong>" : "Zuk <strong>%s</strong> erabiltzen ari zara <strong>%s</strong>-tik", "Profile picture" : "Zure irudia", "Upload new" : "Igo berria", + "Select from Files" : "Aukeratu fitxategien artean", "Remove image" : "Irudia ezabatu", "Picture provided by original account" : "Irudia jatorrizko kontutik hartuta", "Cancel" : "Ezeztatu", @@ -242,12 +258,16 @@ "Email" : "E-posta", "Your email address" : "Zure e-posta", "No email address set" : "Ez da eposta helbidea ezarri", + "For password reset and notifications" : "Pasahitza berrezartzeko eta jakinarazpenerako", "Phone number" : "Telefono zenbakia", "Your phone number" : "Zure telefono zenbakia", "Address" : "Helbidea", "Your postal address" : "Zure helbidea", "Website" : "Web orria", "Your website" : "Zure web orria", + "Twitter" : "Twitter", + "Your Twitter handle" : "Zure Twitter erabiltzailea", + "You are member of the following groups:" : "Zuk honako talde kide zara:", "Password" : "Pasahitza", "Current password" : "Uneko pasahitza", "New password" : "Pasahitz berria", @@ -259,7 +279,15 @@ "Android app" : "Android aplikazioa", "iOS app" : "iOS aplikazioa", "Show First Run Wizard again" : "Erakutsi berriz Lehenengo Aldiko Morroia", + "Web, desktop and mobile clients currently logged in to your account." : "Web-gune, mahaigain eta mugikorrean zure kontuan saioa hasita dago.", + "Device" : "Gailu", + "Last activity" : "Azken jarduera", + "Passcodes that give an app or device permissions to access your account." : "Zure kontuan sartzeko aplikazio edo gailuei baimena ematen dien pasahitzak.", "Name" : "Izena", + "App name" : "Aplikazioaren izena", + "Create new app password" : "Sortu app pasahitza berria", + "Use the credentials below to configure your app or device." : "Erabili kredentzialak beheko zure aplikazioa edo gailua konfiguratzeko.", + "For security reasons this password will only be shown once." : "Segurtasun arrazoiengatik, pasahitz hau behin soilik erakutsiko da.", "Username" : "Erabiltzaile izena", "Done" : "Egina", "Show storage location" : "Erakutsi biltegiaren kokapena", @@ -271,11 +299,17 @@ "Create" : "Sortu", "Admin Recovery Password" : "Administratzailearen pasahitza berreskuratzea", "Enter the recovery password in order to recover the users files during password change" : "Berreskuratze pasahitza idatzi pasahitz aldaketan erabiltzaileen fitxategiak berreskuratzeko", + "Group name" : "Taldearen izena", "Everyone" : "Edonor", "Admins" : "Administratzaileak", + "Default quota" : "Kuota lehenetsia", "Please enter storage quota (ex: \"512 MB\" or \"12 GB\")" : "Mesedez sartu biltegiratze kouta (adb: \"512 MB\" edo \"12 GB\")", "Other" : "Bestelakoa", + "Group admin for" : "Talde honen administratzailea", "Quota" : "Kuota", + "Storage location" : "Biltegiratze kokapena", + "User backend" : "Erabiltzaile jatorria", + "Last login" : "Azken saioa", "change full name" : "aldatu izena", "set new password" : "ezarri pasahitz berria", "change email address" : "aldatu eposta helbidea", @@ -287,6 +321,7 @@ "Unable to remove user from group %s" : "Ezin izan da erabiltzailea %s taldetik ezabatu", "Are you really sure you want add \"{domain}\" as trusted domain?" : "Ziur zaude gehitu nahi duzula \"{domain}\" domeinu fidagarri gisa?", "Please wait...." : "Itxoin mesedez...", + "add group" : "Taldea gehitu", "Everything (fatal issues, errors, warnings, info, debug)" : "Dena (arazo larriak, erroreak, abisuak, informazioa, arazketa)", "Info, warnings, errors and fatal issues" : "Informazioa, abisuak, erroreak eta arazo larriak.", "Warnings, errors and fatal issues" : "Abisuak, erroreak eta arazo larriak", @@ -301,7 +336,13 @@ "Uninstall App" : "Desinstalatu aplikazioa", "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Kaixo,<br><br>orain %s kontu bat duzula esateko besterik ez.<br><br>Zure erabiltzailea: %s<br>Sar zaitez: <a href=\"%s\">%s</a><br><br>", "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Kaixo,\n\norain %s kontu bat duzula esateko besterik ez.\n\nZure erabiltzailea: %s\nSar zaitez: %s\n\n", + "Add Group" : "Gehitu taldea", "Group" : "Taldea", - "Full Name" : "Izen osoa" + "Default Quota" : "Lehenetsitako kuota", + "Full Name" : "Izen osoa", + "Group Admin for" : "Talde honen administratzailea", + "Storage Location" : "Biltegiratze kokapena", + "User Backend" : "Erabiltzaile jatorria", + "Last Login" : "Azken saioa" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js index ab82fb252cb..ec41e297957 100644 --- a/settings/l10n/fr.js +++ b/settings/l10n/fr.js @@ -125,6 +125,7 @@ OC.L10N.register( "undo" : "annuler", "never" : "jamais", "deleted {userName}" : "{userName} supprimé", + "No user found for <strong>{pattern}</strong>" : "Aucun utilisateur trouvé pour <strong>{pattern}</strong>", "Unable to add user to group {group}" : "Impossible d'ajouter l'utilisateur au groupe {group}", "Unable to remove user from group {group}" : "Impossible de supprimer l'utilisateur du groupe {group}", "Add group" : "Ajouter un groupe", diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json index 60c50acb5d9..37fb3cf0e5b 100644 --- a/settings/l10n/fr.json +++ b/settings/l10n/fr.json @@ -123,6 +123,7 @@ "undo" : "annuler", "never" : "jamais", "deleted {userName}" : "{userName} supprimé", + "No user found for <strong>{pattern}</strong>" : "Aucun utilisateur trouvé pour <strong>{pattern}</strong>", "Unable to add user to group {group}" : "Impossible d'ajouter l'utilisateur au groupe {group}", "Unable to remove user from group {group}" : "Impossible de supprimer l'utilisateur du groupe {group}", "Add group" : "Ajouter un groupe", diff --git a/settings/l10n/is.js b/settings/l10n/is.js index cedd821dd17..1065d806b58 100644 --- a/settings/l10n/is.js +++ b/settings/l10n/is.js @@ -57,6 +57,7 @@ OC.L10N.register( "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Opinber forrit eru þróuð af og innan samfélagsins. Þau bjóða upp á ýmsa kjarnaeiginleika og eru tilbúin til notkunar í raunvinnslu.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Samþykkt forrit eru þróuð af treystum forriturum og hafa gengist undir lauslegar öryggisprófanir. Þau eru í virku viðhaldi í opnum hugbúnaðarsöfnum og umsjónarmenn þeirra dæma þau nógu stöðug til notkunar í allri venjulegri vinnslu.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Þetta forrit hefur ekki verið öryggisprófað, er nýtt erða þekkt fyrir ótöðugleika við vissar aðstæður. Uppsetning er á þína ábyrgð.", + "Disabling app …" : "Geri forrit óvirkt …", "Error while disabling app" : "Villa við að afvirkja forrit", "Disable" : "Gera óvirkt", "Enable" : "Virkja", @@ -124,6 +125,7 @@ OC.L10N.register( "undo" : "afturkalla", "never" : "aldrei", "deleted {userName}" : "eyddi {userName}", + "No user found for <strong>{pattern}</strong>" : "Enginn notandi fannst fyrir <strong>{pattern}</strong>", "Unable to add user to group {group}" : "Tókst ekki að bæta notanda við hópinn {group}", "Unable to remove user from group {group}" : "Ekki tókst að fjarlægja notanda úr hópnum {group}", "Add group" : "Bæta við hópi", @@ -168,6 +170,7 @@ OC.L10N.register( "Server-side encryption" : "Dulritun á þjóni", "Enable server-side encryption" : "Virkja dulritun á þjóni", "Please read carefully before activating server-side encryption: " : "Lestu eftirfarandi gaumgæfilega áður en þú virkjar dulritun á þjóni: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Þegar dulritun er virkjuð, munu frá þeim tímapunkti allar skrár sem sendar eru inn á þjóninn verða dulritaðar inni á honum. Einungis mun verða hægt að afvirkja dulritun síðar, ef virka dulritunareiningin styður þá aðgerð, og ef allar forsendur (t.d. að setja endurheimtulykil) eru uppfylltar.", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Dulritun ein og sér tryggir ekki öryggi kerfisins. Endilega skoðaðu hjálparskjölin um hvernig dulritunarforritið virkar, og dæmi um hvaða uppsetningar eru studdar.", "Be aware that encryption always increases the file size." : "Hafðu í huga að dulritun eykur alltaf skráastærð.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Það er góður siður að taka regluleg öryggisafrit af gögnunum þínum; ef um dulrituð gögn er að ræða, gakktu úr skugga um að einnig sé tekið öryggisafrit af dulritunarlyklum ásamt gögnunum.", @@ -182,13 +185,16 @@ OC.L10N.register( "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Það lítur út eins og að PHP sé ekki rétt sett upp varðandi fyrirspurnir um umhverfisbreytur. Prófun með getenv(\"PATH\") skilar auðu svari.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Endilega skoðaðu <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">hjálparskjöl uppsetningarinnar ↗</a> varðandi athugasemdir vegna uppsetningar PHP og sjálfa uppsetningu PHP-þjónsins, Sérstaklega ef þú notar php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Skrifvarða stillingaskráin hefur verið virkjuð. Þetta kemur í veg fyrir að hægt sé að sýsla með sumar stillingar í gegnum vefviðmótið. Að auki þarf þessi skrá að vera skrifanleg við hverja uppfærslu.", + "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP virðist vera sett upp to fjarlægja innantextablokkir (inline doc blocks). Þetta mun gera ýmis kjarnaforrit óaðgengileg.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Þessu veldur væntanlega biðminni/hraðall á borð við Zend OPcache eða eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Gagnagrunnurinn keyrir ekki með \"READ COMMITTED\" færsluaðgreiningarstiginu. Þetta getur valdið vandamálum þegar margar aðgerðir eru keyrðar í einu.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s eldra en útgáfa %2$s er uppsett, en vegna stöðugleika og afkasta mælum við með að útgáfa %1$s verði sett upp.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP-eininguna 'fileinfo' vantar. Við mælum eindregið með notkun þessarar einingar til að fá bestu útkomu við greiningu á MIME-skráagerðum.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Færslulæsing skráa (transactional file locking) er óvirk, þetta gæti leitt til vandamála út frá forgangsskilyrðum (race conditions). Virkjaðu 'filelocking.enabled' í config.php til að forðast slík vandamál. Skoðaðu <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">hjálparskjölin ↗</a> til að sjá nánari upplýsingar.", "System locale can not be set to a one which supports UTF-8." : "Ekki var hægt að setja staðfærslu kerfisins á neina sem styður UTF-8.", "This means that there might be problems with certain characters in file names." : "Þetta þýðir að það geta komið upp vandamál við að birta ákveðna stafi í skráaheitum.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Við mælum eindregið með því að þessir nauðsynlegu pakkar séu á kerfinu til stuðnings einnar af eftirfarandi staðfærslum: %s", + "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Ef uppsetningin þín er ekki á rót lénsins og þú notar cron stýrikerfisins, þá geta komið upp vandamál við gerð URL-slóða. Til að forðast slík vandamál, skaltu stilla \"overwrite.cli.url\" valkostinn í config.php skránni þinni á slóð vefrótarinnar (webroot) í uppsetningunni (tillaga: \"%s\")", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "Ekki var hægt að keyra cron-verkið á skipanalínu. Eftirfarandi tæknilegar villur komu upp:", "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Yfirfarðu vandlega <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">uppsetningarleiðbeiningarnar ↗</a>, og athugaðu hvort nokkrar villumeldingar eða aðvaranir séu í <a href=\"%s\">annálnum</a>.", "All checks passed." : "Stóðst allar prófanir.", @@ -367,6 +373,7 @@ OC.L10N.register( "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Hæ þú,<br><br>bara að láta þig vita að þú átt núna %s aðgang.<br><br>Notandanafnið þitt: %s<br>Tengstu honum: <a href=\"%s\">%s</a><br><br>", "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Hæ þú,\n\nbara að láta þig vita að þú átt núna %s aðgang.\n\nNotandanafnið þitt: %s\nTengstu honum: %s\n\n", "For password recovery and notifications" : "Fyrir tilkynningar og endurheimtingu lykilorðs", + "If you want to support the project\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ef þú vilt styðja við verkefnið\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">taktu þátt í þróuninni</a>\n\t\teða\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">láttu orð út ganga</a>!", "Add Group" : "Bæta við hópi", "Group" : "Hópur", "Default Quota" : "Sjálfgefinn kvóti", diff --git a/settings/l10n/is.json b/settings/l10n/is.json index 286323f8c11..147a4ba5476 100644 --- a/settings/l10n/is.json +++ b/settings/l10n/is.json @@ -55,6 +55,7 @@ "Official apps are developed by and within the community. They offer central functionality and are ready for production use." : "Opinber forrit eru þróuð af og innan samfélagsins. Þau bjóða upp á ýmsa kjarnaeiginleika og eru tilbúin til notkunar í raunvinnslu.", "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "Samþykkt forrit eru þróuð af treystum forriturum og hafa gengist undir lauslegar öryggisprófanir. Þau eru í virku viðhaldi í opnum hugbúnaðarsöfnum og umsjónarmenn þeirra dæma þau nógu stöðug til notkunar í allri venjulegri vinnslu.", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "Þetta forrit hefur ekki verið öryggisprófað, er nýtt erða þekkt fyrir ótöðugleika við vissar aðstæður. Uppsetning er á þína ábyrgð.", + "Disabling app …" : "Geri forrit óvirkt …", "Error while disabling app" : "Villa við að afvirkja forrit", "Disable" : "Gera óvirkt", "Enable" : "Virkja", @@ -122,6 +123,7 @@ "undo" : "afturkalla", "never" : "aldrei", "deleted {userName}" : "eyddi {userName}", + "No user found for <strong>{pattern}</strong>" : "Enginn notandi fannst fyrir <strong>{pattern}</strong>", "Unable to add user to group {group}" : "Tókst ekki að bæta notanda við hópinn {group}", "Unable to remove user from group {group}" : "Ekki tókst að fjarlægja notanda úr hópnum {group}", "Add group" : "Bæta við hópi", @@ -166,6 +168,7 @@ "Server-side encryption" : "Dulritun á þjóni", "Enable server-side encryption" : "Virkja dulritun á þjóni", "Please read carefully before activating server-side encryption: " : "Lestu eftirfarandi gaumgæfilega áður en þú virkjar dulritun á þjóni: ", + "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Þegar dulritun er virkjuð, munu frá þeim tímapunkti allar skrár sem sendar eru inn á þjóninn verða dulritaðar inni á honum. Einungis mun verða hægt að afvirkja dulritun síðar, ef virka dulritunareiningin styður þá aðgerð, og ef allar forsendur (t.d. að setja endurheimtulykil) eru uppfylltar.", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Dulritun ein og sér tryggir ekki öryggi kerfisins. Endilega skoðaðu hjálparskjölin um hvernig dulritunarforritið virkar, og dæmi um hvaða uppsetningar eru studdar.", "Be aware that encryption always increases the file size." : "Hafðu í huga að dulritun eykur alltaf skráastærð.", "It is always good to create regular backups of your data, in case of encryption make sure to backup the encryption keys along with your data." : "Það er góður siður að taka regluleg öryggisafrit af gögnunum þínum; ef um dulrituð gögn er að ræða, gakktu úr skugga um að einnig sé tekið öryggisafrit af dulritunarlyklum ásamt gögnunum.", @@ -180,13 +183,16 @@ "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "Það lítur út eins og að PHP sé ekki rétt sett upp varðandi fyrirspurnir um umhverfisbreytur. Prófun með getenv(\"PATH\") skilar auðu svari.", "Please check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Endilega skoðaðu <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">hjálparskjöl uppsetningarinnar ↗</a> varðandi athugasemdir vegna uppsetningar PHP og sjálfa uppsetningu PHP-þjónsins, Sérstaklega ef þú notar php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Skrifvarða stillingaskráin hefur verið virkjuð. Þetta kemur í veg fyrir að hægt sé að sýsla með sumar stillingar í gegnum vefviðmótið. Að auki þarf þessi skrá að vera skrifanleg við hverja uppfærslu.", + "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP virðist vera sett upp to fjarlægja innantextablokkir (inline doc blocks). Þetta mun gera ýmis kjarnaforrit óaðgengileg.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Þessu veldur væntanlega biðminni/hraðall á borð við Zend OPcache eða eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Gagnagrunnurinn keyrir ekki með \"READ COMMITTED\" færsluaðgreiningarstiginu. Þetta getur valdið vandamálum þegar margar aðgerðir eru keyrðar í einu.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s eldra en útgáfa %2$s er uppsett, en vegna stöðugleika og afkasta mælum við með að útgáfa %1$s verði sett upp.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "PHP-eininguna 'fileinfo' vantar. Við mælum eindregið með notkun þessarar einingar til að fá bestu útkomu við greiningu á MIME-skráagerðum.", + "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Færslulæsing skráa (transactional file locking) er óvirk, þetta gæti leitt til vandamála út frá forgangsskilyrðum (race conditions). Virkjaðu 'filelocking.enabled' í config.php til að forðast slík vandamál. Skoðaðu <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">hjálparskjölin ↗</a> til að sjá nánari upplýsingar.", "System locale can not be set to a one which supports UTF-8." : "Ekki var hægt að setja staðfærslu kerfisins á neina sem styður UTF-8.", "This means that there might be problems with certain characters in file names." : "Þetta þýðir að það geta komið upp vandamál við að birta ákveðna stafi í skráaheitum.", "We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Við mælum eindregið með því að þessir nauðsynlegu pakkar séu á kerfinu til stuðnings einnar af eftirfarandi staðfærslum: %s", + "If your installation is not installed in the root of the domain and uses system cron, there can be issues with the URL generation. To avoid these problems, please set the \"overwrite.cli.url\" option in your config.php file to the webroot path of your installation (Suggested: \"%s\")" : "Ef uppsetningin þín er ekki á rót lénsins og þú notar cron stýrikerfisins, þá geta komið upp vandamál við gerð URL-slóða. Til að forðast slík vandamál, skaltu stilla \"overwrite.cli.url\" valkostinn í config.php skránni þinni á slóð vefrótarinnar (webroot) í uppsetningunni (tillaga: \"%s\")", "It was not possible to execute the cronjob via CLI. The following technical errors have appeared:" : "Ekki var hægt að keyra cron-verkið á skipanalínu. Eftirfarandi tæknilegar villur komu upp:", "Please double check the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%s\">log</a>." : "Yfirfarðu vandlega <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">uppsetningarleiðbeiningarnar ↗</a>, og athugaðu hvort nokkrar villumeldingar eða aðvaranir séu í <a href=\"%s\">annálnum</a>.", "All checks passed." : "Stóðst allar prófanir.", @@ -365,6 +371,7 @@ "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Hæ þú,<br><br>bara að láta þig vita að þú átt núna %s aðgang.<br><br>Notandanafnið þitt: %s<br>Tengstu honum: <a href=\"%s\">%s</a><br><br>", "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Hæ þú,\n\nbara að láta þig vita að þú átt núna %s aðgang.\n\nNotandanafnið þitt: %s\nTengstu honum: %s\n\n", "For password recovery and notifications" : "Fyrir tilkynningar og endurheimtingu lykilorðs", + "If you want to support the project\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Ef þú vilt styðja við verkefnið\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">taktu þátt í þróuninni</a>\n\t\teða\n\t\t<a href=\"https://nextcloud.com/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">láttu orð út ganga</a>!", "Add Group" : "Bæta við hópi", "Group" : "Hópur", "Default Quota" : "Sjálfgefinn kvóti", diff --git a/settings/l10n/pl.js b/settings/l10n/pl.js index f46fa84052a..2db3db32d80 100644 --- a/settings/l10n/pl.js +++ b/settings/l10n/pl.js @@ -125,6 +125,7 @@ OC.L10N.register( "undo" : "cofnij", "never" : "nigdy", "deleted {userName}" : "usunięto {userName}", + "No user found for <strong>{pattern}</strong>" : "Nie znaleziono użytkownika dla <strong>{pattern}</strong>", "Unable to add user to group {group}" : "Nie mogę dodać użytkownika do grupy {group}", "Unable to remove user from group {group}" : "Nie mogę usunąć użytkownika z grupy {group}", "Add group" : "Dodaj grupę", diff --git a/settings/l10n/pl.json b/settings/l10n/pl.json index 6bcb77480a4..bd10e734041 100644 --- a/settings/l10n/pl.json +++ b/settings/l10n/pl.json @@ -123,6 +123,7 @@ "undo" : "cofnij", "never" : "nigdy", "deleted {userName}" : "usunięto {userName}", + "No user found for <strong>{pattern}</strong>" : "Nie znaleziono użytkownika dla <strong>{pattern}</strong>", "Unable to add user to group {group}" : "Nie mogę dodać użytkownika do grupy {group}", "Unable to remove user from group {group}" : "Nie mogę usunąć użytkownika z grupy {group}", "Add group" : "Dodaj grupę", diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js index 14e52679104..1c27236f476 100644 --- a/settings/l10n/pt_BR.js +++ b/settings/l10n/pt_BR.js @@ -125,6 +125,7 @@ OC.L10N.register( "undo" : "desfazer", "never" : "nunca", "deleted {userName}" : "eliminado {userName}", + "No user found for <strong>{pattern}</strong>" : "Nenhum usuário encontrado para <strong>{pattern}</strong>", "Unable to add user to group {group}" : "Não é possível adicionar usuário ao grupo {group}", "Unable to remove user from group {group}" : "Não é possível remover usuário do grupo {group}", "Add group" : "Adicionar grupo", diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json index 803ee756a89..164cb7e5eef 100644 --- a/settings/l10n/pt_BR.json +++ b/settings/l10n/pt_BR.json @@ -123,6 +123,7 @@ "undo" : "desfazer", "never" : "nunca", "deleted {userName}" : "eliminado {userName}", + "No user found for <strong>{pattern}</strong>" : "Nenhum usuário encontrado para <strong>{pattern}</strong>", "Unable to add user to group {group}" : "Não é possível adicionar usuário ao grupo {group}", "Unable to remove user from group {group}" : "Não é possível remover usuário do grupo {group}", "Add group" : "Adicionar grupo", diff --git a/settings/users.php b/settings/users.php index 1b0f4f7b8e8..1986592af75 100644 --- a/settings/users.php +++ b/settings/users.php @@ -40,7 +40,7 @@ OC_Util::checkSubAdminUser(); \OC::$server->getNavigationManager()->setActiveEntry('core_users'); $userManager = \OC::$server->getUserManager(); -$groupManager = \OC_Group::getManager(); +$groupManager = \OC::$server->getGroupManager(); // Set the sort option: SORT_USERCOUNT or SORT_GROUPNAME $sortGroupsBy = \OC\Group\MetaData::SORT_USERCOUNT; diff --git a/tests/lib/Group/LegacyGroupTest.php b/tests/lib/Group/LegacyGroupTest.php deleted file mode 100644 index b7d13437a64..00000000000 --- a/tests/lib/Group/LegacyGroupTest.php +++ /dev/null @@ -1,208 +0,0 @@ -<?php -/** - * ownCloud - * - * @author Robin Appelman - * @author Bernhard Posselt - * @copyright 2012 Robin Appelman <icewind@owncloud.com> - * @copyright 2012 Bernhard Posselt <dev@bernhard-posselt.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE - * License as published by the Free Software Foundation; either - * version 3 of the License, or any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU AFFERO GENERAL PUBLIC LICENSE for more details. - * - * You should have received a copy of the GNU Affero General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - */ - -namespace Test\Group; - -use OC_Group; -use OC_User; - -/** - * Class LegacyGroupTest - * - * @package Test\Group - * @group DB - */ -class LegacyGroupTest extends \Test\TestCase { - protected function setUp() { - parent::setUp(); - OC_Group::clearBackends(); - OC_User::clearBackends(); - } - - public function testSingleBackend() { - $userBackend = new \Test\Util\User\Dummy(); - \OC::$server->getUserManager()->registerBackend($userBackend); - OC_Group::useBackend(new \Test\Util\Group\Dummy()); - - $group1 = $this->getUniqueID(); - $group2 = $this->getUniqueID(); - OC_Group::createGroup($group1); - OC_Group::createGroup($group2); - - $user1 = $this->getUniqueID(); - $user2 = $this->getUniqueID(); - $userBackend->createUser($user1, ''); - $userBackend->createUser($user2, ''); - - $this->assertFalse(OC_Group::inGroup($user1, $group1), 'Asserting that user1 is not in group1'); - $this->assertFalse(OC_Group::inGroup($user2, $group1), 'Asserting that user2 is not in group1'); - $this->assertFalse(OC_Group::inGroup($user1, $group2), 'Asserting that user1 is not in group2'); - $this->assertFalse(OC_Group::inGroup($user2, $group2), 'Asserting that user2 is not in group2'); - - $this->assertTrue(OC_Group::addToGroup($user1, $group1)); - - $this->assertTrue(OC_Group::inGroup($user1, $group1), 'Asserting that user1 is in group1'); - $this->assertFalse(OC_Group::inGroup($user2, $group1), 'Asserting that user2 is not in group1'); - $this->assertFalse(OC_Group::inGroup($user1, $group2), 'Asserting that user1 is not in group2'); - $this->assertFalse(OC_Group::inGroup($user2, $group2), 'Asserting that user2 is not in group2'); - - $this->assertTrue(OC_Group::addToGroup($user1, $group1)); - - $this->assertEquals(array($user1), OC_Group::usersInGroup($group1)); - $this->assertEquals(array(), OC_Group::usersInGroup($group2)); - - $this->assertEquals(array($group1), OC_Group::getUserGroups($user1)); - $this->assertEquals(array(), OC_Group::getUserGroups($user2)); - - OC_Group::deleteGroup($group1); - $this->assertEquals(array(), OC_Group::getUserGroups($user1)); - $this->assertEquals(array(), OC_Group::usersInGroup($group1)); - $this->assertFalse(OC_Group::inGroup($user1, $group1)); - } - - - public function testNoEmptyGIDs() { - OC_Group::useBackend(new \Test\Util\Group\Dummy()); - $emptyGroup = null; - - $this->assertFalse(OC_Group::createGroup($emptyGroup)); - } - - - public function testNoGroupsTwice() { - OC_Group::useBackend(new \Test\Util\Group\Dummy()); - $group = $this->getUniqueID(); - OC_Group::createGroup($group); - - $groupCopy = $group; - - OC_Group::createGroup($groupCopy); - $this->assertEquals(array($group), OC_Group::getGroups()); - } - - - public function testDontDeleteAdminGroup() { - OC_Group::useBackend(new \Test\Util\Group\Dummy()); - $adminGroup = 'admin'; - OC_Group::createGroup($adminGroup); - - $this->assertFalse(OC_Group::deleteGroup($adminGroup)); - $this->assertEquals(array($adminGroup), OC_Group::getGroups()); - } - - - public function testDontAddUserToNonexistentGroup() { - OC_Group::useBackend(new \Test\Util\Group\Dummy()); - $groupNonExistent = 'notExistent'; - $user = $this->getUniqueID(); - - $this->assertEquals(false, OC_Group::addToGroup($user, $groupNonExistent)); - $this->assertEquals(array(), OC_Group::getGroups()); - } - - public function testUsersInGroup() { - OC_Group::useBackend(new \Test\Util\Group\Dummy()); - $userBackend = new \Test\Util\User\Dummy(); - \OC::$server->getUserManager()->registerBackend($userBackend); - - $group1 = $this->getUniqueID(); - $group2 = $this->getUniqueID(); - $group3 = $this->getUniqueID(); - $user1 = $this->getUniqueID(); - $user2 = $this->getUniqueID(); - $user3 = $this->getUniqueID(); - OC_Group::createGroup($group1); - OC_Group::createGroup($group2); - OC_Group::createGroup($group3); - - $userBackend->createUser($user1, ''); - $userBackend->createUser($user2, ''); - $userBackend->createUser($user3, ''); - - OC_Group::addToGroup($user1, $group1); - OC_Group::addToGroup($user2, $group1); - OC_Group::addToGroup($user3, $group1); - OC_Group::addToGroup($user3, $group2); - - $this->assertEquals(array($user1, $user2, $user3), - OC_Group::usersInGroups(array($group1, $group2, $group3))); - - // FIXME: needs more parameter variation - } - - public function testMultiBackend() { - $userBackend = new \Test\Util\User\Dummy(); - \OC::$server->getUserManager()->registerBackend($userBackend); - $backend1 = new \Test\Util\Group\Dummy(); - $backend2 = new \Test\Util\Group\Dummy(); - OC_Group::useBackend($backend1); - OC_Group::useBackend($backend2); - - $group1 = $this->getUniqueID(); - $group2 = $this->getUniqueID(); - OC_Group::createGroup($group1); - - //groups should be added to the first registered backend - $this->assertEquals(array($group1), $backend1->getGroups()); - $this->assertEquals(array(), $backend2->getGroups()); - - $this->assertEquals(array($group1), OC_Group::getGroups()); - $this->assertTrue(OC_Group::groupExists($group1)); - $this->assertFalse(OC_Group::groupExists($group2)); - - $backend1->createGroup($group2); - - $this->assertEquals(array($group1, $group2), OC_Group::getGroups()); - $this->assertTrue(OC_Group::groupExists($group1)); - $this->assertTrue(OC_Group::groupExists($group2)); - - $user1 = $this->getUniqueID(); - $user2 = $this->getUniqueID(); - - $userBackend->createUser($user1, ''); - $userBackend->createUser($user2, ''); - - $this->assertFalse(OC_Group::inGroup($user1, $group1)); - $this->assertFalse(OC_Group::inGroup($user2, $group1)); - - - $this->assertTrue(OC_Group::addToGroup($user1, $group1)); - - $this->assertTrue(OC_Group::inGroup($user1, $group1)); - $this->assertFalse(OC_Group::inGroup($user2, $group1)); - $this->assertFalse($backend2->inGroup($user1, $group1)); - - OC_Group::addToGroup($user1, $group1); - - $this->assertEquals(array($user1), OC_Group::usersInGroup($group1)); - - $this->assertEquals(array($group1), OC_Group::getUserGroups($user1)); - $this->assertEquals(array(), OC_Group::getUserGroups($user2)); - - OC_Group::deleteGroup($group1); - $this->assertEquals(array(), OC_Group::getUserGroups($user1)); - $this->assertEquals(array(), OC_Group::usersInGroup($group1)); - $this->assertFalse(OC_Group::inGroup($user1, $group1)); - } -} diff --git a/tests/lib/OCS/ProviderTest.php b/tests/lib/OCS/ProviderTest.php index 399fd3933d9..9444544d12a 100644 --- a/tests/lib/OCS/ProviderTest.php +++ b/tests/lib/OCS/ProviderTest.php @@ -48,11 +48,16 @@ class ProviderTest extends \Test\TestCase { $this->appManager ->expects($this->at(1)) ->method('isEnabledForUser') - ->with('activity') + ->with('federation') ->will($this->returnValue(false)); $this->appManager ->expects($this->at(2)) ->method('isEnabledForUser') + ->with('activity') + ->will($this->returnValue(false)); + $this->appManager + ->expects($this->at(3)) + ->method('isEnabledForUser') ->with('provisioning_api') ->will($this->returnValue(false)); @@ -84,11 +89,16 @@ class ProviderTest extends \Test\TestCase { $this->appManager ->expects($this->at(1)) ->method('isEnabledForUser') - ->with('activity') + ->with('federation') ->will($this->returnValue(false)); $this->appManager ->expects($this->at(2)) ->method('isEnabledForUser') + ->with('activity') + ->will($this->returnValue(false)); + $this->appManager + ->expects($this->at(3)) + ->method('isEnabledForUser') ->with('provisioning_api') ->will($this->returnValue(false)); @@ -124,6 +134,55 @@ class ProviderTest extends \Test\TestCase { $this->assertEquals($expected, $this->ocsProvider->buildProviderList()); } + public function testBuildProviderListWithFederationEnabled() { + $this->appManager + ->expects($this->at(0)) + ->method('isEnabledForUser') + ->with('files_sharing') + ->will($this->returnValue(false)); + $this->appManager + ->expects($this->at(1)) + ->method('isEnabledForUser') + ->with('federation') + ->will($this->returnValue(true)); + $this->appManager + ->expects($this->at(2)) + ->method('isEnabledForUser') + ->with('activity') + ->will($this->returnValue(false)); + $this->appManager + ->expects($this->at(3)) + ->method('isEnabledForUser') + ->with('provisioning_api') + ->will($this->returnValue(false)); + + $expected = new \OCP\AppFramework\Http\JSONResponse( + [ + 'version' => 2, + 'services' => [ + 'PRIVATE_DATA' => [ + 'version' => 1, + 'endpoints' => [ + 'store' => '/ocs/v2.php/privatedata/setattribute', + 'read' => '/ocs/v2.php/privatedata/getattribute', + 'delete' => '/ocs/v2.php/privatedata/deleteattribute', + ], + ], + 'FEDERATED_SHARING' => [ + 'version' => 1, + 'endpoints' => [ + 'shared-secret' => '/ocs/v2.php/cloud/shared-secret', + 'system-address-book' => '/remote.php/dav/addressbooks/system/system/system', + 'carddav-user' => 'system' + ], + ], + ], + ] + ); + + $this->assertEquals($expected, $this->ocsProvider->buildProviderList()); + } + public function testBuildProviderListWithEverythingEnabled() { $this->appManager ->expects($this->any()) @@ -147,6 +206,9 @@ class ProviderTest extends \Test\TestCase { 'endpoints' => [ 'share' => '/ocs/v2.php/cloud/shares', 'webdav' => '/public.php/webdav/', + 'shared-secret' => '/ocs/v2.php/cloud/shared-secret', + 'system-address-book' => '/remote.php/dav/addressbooks/system/system/system', + 'carddav-user' => 'system' ], ], 'SHARING' => [ |