From 040c5411386d05f64c6dc2a6e3d52ba5c3af9f96 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 23 Jun 2016 14:19:55 +0200 Subject: Remove a fed share from the local table before trying to notify the remote server --- apps/federatedfilesharing/lib/FederatedShareProvider.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'apps') diff --git a/apps/federatedfilesharing/lib/FederatedShareProvider.php b/apps/federatedfilesharing/lib/FederatedShareProvider.php index 4892908c329..01737256769 100644 --- a/apps/federatedfilesharing/lib/FederatedShareProvider.php +++ b/apps/federatedfilesharing/lib/FederatedShareProvider.php @@ -473,6 +473,8 @@ class FederatedShareProvider implements IShareProvider { $isOwner = false; + $this->removeShareFromTable($share); + // if the local user is the owner we can send the unShare request directly... if ($this->userManager->userExists($share->getShareOwner())) { $this->notifications->sendRemoteUnShare($remote, $share->getId(), $share->getToken()); @@ -494,8 +496,6 @@ class FederatedShareProvider implements IShareProvider { } $this->notifications->sendRevokeShare($remote, $remoteId, $share->getToken()); } - - $this->removeShareFromTable($share); } /** -- cgit v1.2.3 From 955635c7aaaf932c698069a08ff8f218f0ea990c Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Thu, 23 Jun 2016 15:43:21 +0200 Subject: Add explicit delete permission to link shares Link shares always allowed deletion, however internally the permissions were stored as 7 which lacked delete permissions. This created an inconsistency in the Webdav permissions. This fix makes sure we include delete permissions in the share permissions, which now become 15. In case a client is still passing 7 for legacy reasons, it gets converted automatically to 15. --- apps/files_sharing/lib/API/Share20OCS.php | 21 +++++-- apps/files_sharing/tests/API/Share20OCSTest.php | 77 +++++++++++++++++++++---- apps/files_sharing/tests/ApiTest.php | 16 ++++- build/integration/features/sharing-v1.feature | 6 +- core/js/sharedialoglinkshareview.js | 2 +- lib/private/Share20/Manager.php | 7 +-- tests/lib/Share20/ManagerTest.php | 18 ------ 7 files changed, 103 insertions(+), 44 deletions(-) (limited to 'apps') diff --git a/apps/files_sharing/lib/API/Share20OCS.php b/apps/files_sharing/lib/API/Share20OCS.php index 53b27aae0b8..436b8d15ac8 100644 --- a/apps/files_sharing/lib/API/Share20OCS.php +++ b/apps/files_sharing/lib/API/Share20OCS.php @@ -354,7 +354,8 @@ class Share20OCS { $share->setPermissions( \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | - \OCP\Constants::PERMISSION_UPDATE + \OCP\Constants::PERMISSION_UPDATE | + \OCP\Constants::PERMISSION_DELETE ); } else { $share->setPermissions(\OCP\Constants::PERMISSION_READ); @@ -591,7 +592,7 @@ class Share20OCS { $newPermissions = null; if ($publicUpload === 'true') { - $newPermissions = \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE; + $newPermissions = \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE; } else if ($publicUpload === 'false') { $newPermissions = \OCP\Constants::PERMISSION_READ; } @@ -602,12 +603,21 @@ class Share20OCS { if ($newPermissions !== null && $newPermissions !== \OCP\Constants::PERMISSION_READ && - $newPermissions !== (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE)) { + // legacy + $newPermissions !== (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE) && + // correct + $newPermissions !== (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE) + ) { $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); return new \OC_OCS_Result(null, 400, $this->l->t('Can\'t change permissions for public share links')); } - if ($newPermissions === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE)) { + if ( + // legacy + $newPermissions === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE) || + // correct + $newPermissions === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE) + ) { if (!$this->shareManager->shareApiLinkAllowPublicUpload()) { $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); return new \OC_OCS_Result(null, 403, $this->l->t('Public upload disabled by the administrator')); @@ -617,6 +627,9 @@ class Share20OCS { $share->getNode()->unlock(ILockingProvider::LOCK_SHARED); return new \OC_OCS_Result(null, 400, $this->l->t('Public upload is only possible for publicly shared folders')); } + + // normalize to correct public upload permissions + $newPermissions = \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE; } if ($newPermissions !== null) { diff --git a/apps/files_sharing/tests/API/Share20OCSTest.php b/apps/files_sharing/tests/API/Share20OCSTest.php index b760a0f47a0..6435c992f25 100644 --- a/apps/files_sharing/tests/API/Share20OCSTest.php +++ b/apps/files_sharing/tests/API/Share20OCSTest.php @@ -1035,7 +1035,7 @@ class Share20OCSTest extends \Test\TestCase { $this->callback(function (\OCP\Share\IShare $share) use ($path) { return $share->getNode() === $path && $share->getShareType() === \OCP\Share::SHARE_TYPE_LINK && - $share->getPermissions() === \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_DELETE && + $share->getPermissions() === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE) && $share->getSharedBy() === 'currentUser' && $share->getPassword() === null && $share->getExpirationDate() === null; @@ -1366,7 +1366,7 @@ class Share20OCSTest extends \Test\TestCase { $date = new \DateTime('2000-01-01'); $date->setTime(0,0,0); - return $share->getPermissions() === \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE && \OCP\Constants::PERMISSION_DELETE && + return $share->getPermissions() === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE) && $share->getPassword() === 'password' && $share->getExpirationDate() == $date; }) @@ -1379,6 +1379,44 @@ class Share20OCSTest extends \Test\TestCase { $this->assertEquals($expected->getData(), $result->getData()); } + /** + * @dataProvider publicUploadParamsProvider + */ + public function testUpdateLinkShareEnablePublicUpload($params) { + $ocs = $this->mockFormatShare(); + + $folder = $this->getMock('\OCP\Files\Folder'); + + $share = \OC::$server->getShareManager()->newShare(); + $share->setPermissions(\OCP\Constants::PERMISSION_ALL) + ->setSharedBy($this->currentUser->getUID()) + ->setShareType(\OCP\Share::SHARE_TYPE_LINK) + ->setPassword('password') + ->setNode($folder); + + $this->request + ->method('getParam') + ->will($this->returnValueMap($params)); + + $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share); + $this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(true); + $this->shareManager->method('getSharedWith')->willReturn([]); + + $this->shareManager->expects($this->once())->method('updateShare')->with( + $this->callback(function (\OCP\Share\IShare $share) { + return $share->getPermissions() === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE) && + $share->getPassword() === 'password' && + $share->getExpirationDate() === null; + }) + )->will($this->returnArgument(0)); + + $expected = new \OC_OCS_Result(null); + $result = $ocs->updateShare(42); + + $this->assertEquals($expected->getMeta(), $result->getMeta()); + $this->assertEquals($expected->getData(), $result->getData()); + } + public function testUpdateLinkShareInvalidDate() { $ocs = $this->mockFormatShare(); @@ -1408,7 +1446,30 @@ class Share20OCSTest extends \Test\TestCase { $this->assertEquals($expected->getData(), $result->getData()); } - public function testUpdateLinkSharePublicUploadNotAllowed() { + public function publicUploadParamsProvider() { + return [ + [[ + ['publicUpload', null, 'true'], + ['expireDate', '', null], + ['password', '', 'password'], + ]], [[ + // legacy had no delete + ['permissions', null, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE], + ['expireDate', '', null], + ['password', '', 'password'], + ]], [[ + // correct + ['permissions', null, \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE], + ['expireDate', '', null], + ['password', '', 'password'], + ]], + ]; + } + + /** + * @dataProvider publicUploadParamsProvider + */ + public function testUpdateLinkSharePublicUploadNotAllowed($params) { $ocs = $this->mockFormatShare(); $folder = $this->getMock('\OCP\Files\Folder'); @@ -1421,11 +1482,7 @@ class Share20OCSTest extends \Test\TestCase { $this->request ->method('getParam') - ->will($this->returnValueMap([ - ['publicUpload', null, 'true'], - ['expireDate', '', null], - ['password', '', 'password'], - ])); + ->will($this->returnValueMap($params)); $this->shareManager->method('getShareById')->with('ocinternal:42')->willReturn($share); $this->shareManager->method('shareApiLinkAllowPublicUpload')->willReturn(false); @@ -1585,7 +1642,7 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->expects($this->once())->method('updateShare')->with( $this->callback(function (\OCP\Share\IShare $share) use ($date) { - return $share->getPermissions() === \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_DELETE && + return $share->getPermissions() === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE) && $share->getPassword() === 'password' && $share->getExpirationDate() === $date; }) @@ -1625,7 +1682,7 @@ class Share20OCSTest extends \Test\TestCase { $this->shareManager->expects($this->once())->method('updateShare')->with( $this->callback(function (\OCP\Share\IShare $share) use ($date) { - return $share->getPermissions() === \OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_DELETE && + return $share->getPermissions() === (\OCP\Constants::PERMISSION_READ | \OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE) && $share->getPassword() === 'password' && $share->getExpirationDate() === $date; }) diff --git a/apps/files_sharing/tests/ApiTest.php b/apps/files_sharing/tests/ApiTest.php index 058b0c4758c..40c9085353c 100644 --- a/apps/files_sharing/tests/ApiTest.php +++ b/apps/files_sharing/tests/ApiTest.php @@ -257,7 +257,13 @@ class ApiTest extends TestCase { $this->assertTrue($result->succeeded()); $data = $result->getData(); - $this->assertEquals(7, $data['permissions']); + $this->assertEquals( + \OCP\Constants::PERMISSION_READ | + \OCP\Constants::PERMISSION_CREATE | + \OCP\Constants::PERMISSION_UPDATE | + \OCP\Constants::PERMISSION_DELETE, + $data['permissions'] + ); $this->assertEmpty($data['expiration']); $this->assertTrue(is_string($data['token'])); @@ -1081,7 +1087,13 @@ class ApiTest extends TestCase { $this->assertTrue($result->succeeded()); $share1 = $this->shareManager->getShareById($share1->getFullId()); - $this->assertEquals(7, $share1->getPermissions()); + $this->assertEquals( + \OCP\Constants::PERMISSION_READ | + \OCP\Constants::PERMISSION_CREATE | + \OCP\Constants::PERMISSION_UPDATE | + \OCP\Constants::PERMISSION_DELETE, + $share1->getPermissions() + ); // cleanup $this->shareManager->deleteShare($share1); diff --git a/build/integration/features/sharing-v1.feature b/build/integration/features/sharing-v1.feature index 79dc1326f3c..3878e741f60 100644 --- a/build/integration/features/sharing-v1.feature +++ b/build/integration/features/sharing-v1.feature @@ -61,7 +61,7 @@ Feature: sharing And the HTTP status code should be "200" And Share fields of last share match with | id | A_NUMBER | - | permissions | 7 | + | permissions | 15 | | expiration | +3 days | | url | AN_URL | | token | A_TOKEN | @@ -159,7 +159,7 @@ Feature: sharing | share_type | 3 | | file_source | A_NUMBER | | file_target | /FOLDER | - | permissions | 7 | + | permissions | 15 | | stime | A_NUMBER | | token | A_TOKEN | | storage | A_NUMBER | @@ -189,7 +189,7 @@ Feature: sharing | share_type | 3 | | file_source | A_NUMBER | | file_target | /FOLDER | - | permissions | 7 | + | permissions | 15 | | stime | A_NUMBER | | token | A_TOKEN | | storage | A_NUMBER | diff --git a/core/js/sharedialoglinkshareview.js b/core/js/sharedialoglinkshareview.js index 817c3408e7e..59f7ffcae03 100644 --- a/core/js/sharedialoglinkshareview.js +++ b/core/js/sharedialoglinkshareview.js @@ -202,7 +202,7 @@ var permissions = OC.PERMISSION_READ; if($checkbox.is(':checked')) { - permissions = OC.PERMISSION_UPDATE | OC.PERMISSION_CREATE | OC.PERMISSION_READ; + permissions = OC.PERMISSION_UPDATE | OC.PERMISSION_CREATE | OC.PERMISSION_READ | OC.PERMISSION_DELETE; } this.model.saveLinkShare({ diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index e2730f4d5fb..2c08e616f82 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -446,14 +446,9 @@ class Manager implements IManager { throw new \InvalidArgumentException('Link shares can\'t have reshare permissions'); } - // We don't allow deletion on link shares - if ($share->getPermissions() & \OCP\Constants::PERMISSION_DELETE) { - throw new \InvalidArgumentException('Link shares can\'t have delete permissions'); - } - // Check if public upload is allowed if (!$this->shareApiLinkAllowPublicUpload() && - ($share->getPermissions() & (\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE))) { + ($share->getPermissions() & (\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_DELETE))) { throw new \InvalidArgumentException('Public upload not allowed'); } } diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index a50ea6c892a..d2539f8577c 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -1318,24 +1318,6 @@ class ManagerTest extends \Test\TestCase { $this->invokePrivate($this->manager, 'linkCreateChecks', [$share]); } - /** - * @expectedException Exception - * @expectedExceptionMessage Link shares can't have delete permissions - */ - public function testLinkCreateChecksDeletePermissions() { - $share = $this->manager->newShare(); - - $share->setPermissions(\OCP\Constants::PERMISSION_DELETE); - - $this->config - ->method('getAppValue') - ->will($this->returnValueMap([ - ['core', 'shareapi_allow_links', 'yes', 'yes'], - ])); - - $this->invokePrivate($this->manager, 'linkCreateChecks', [$share]); - } - /** * @expectedException Exception * @expectedExceptionMessage Public upload not allowed -- cgit v1.2.3 From b4cf29775849236be338fc7c8e2ad0d7f361ade7 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Thu, 23 Jun 2016 11:27:02 +0200 Subject: Prerender file list pages to include search results When filtering the file list, if a result is on an unrendered page, make sure to call _nextPage() to prerender the pages in order to display all matching results. --- apps/files/js/filelist.js | 22 ++++++++++++++++++---- apps/files/tests/js/filelistSpec.js | 11 +++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) (limited to 'apps') diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index f249f2d35c9..18f17a7207c 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -2351,22 +2351,36 @@ * @param filter */ setFilter:function(filter) { + var total = 0; this._filter = filter; this.fileSummary.setFilter(filter, this.files); + total = this.fileSummary.getTotal(); if (!this.$el.find('.mask').exists()) { this.hideIrrelevantUIWhenNoFilesMatch(); } var that = this; + var visibleCount = 0; filter = filter.toLowerCase(); - this.$fileList.find('tr').each(function(i,e) { - var $e = $(e); + + function filterRows(tr) { + var $e = $(tr); if ($e.data('file').toString().toLowerCase().indexOf(filter) === -1) { $e.addClass('hidden'); } else { + visibleCount++; $e.removeClass('hidden'); } - }); - that.$container.trigger('scroll'); + } + + var $trs = this.$fileList.find('tr'); + do { + _.each($trs, filterRows); + if (visibleCount < total) { + $trs = this._nextPage(false); + } + } while (visibleCount < total); + + this.$container.trigger('scroll'); }, hideIrrelevantUIWhenNoFilesMatch:function() { if (this._filter && this.fileSummary.summary.totalDirs + this.fileSummary.summary.totalFiles === 0) { diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index 7e6408128bb..a74e1c7328c 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -989,6 +989,17 @@ describe('OCA.Files.FileList tests', function() { expect($summary.find('.info').text()).toEqual("1 folder and 3 files"); expect($nofilterresults.hasClass('hidden')).toEqual(true); }); + it('filters the list of non-rendered rows using filter()', function() { + var $summary = $('#filestable .summary'); + var $nofilterresults = fileList.$el.find(".nofilterresults"); + fileList.setFiles(generateFiles(0, 64)); + + fileList.setFilter('63'); + expect($('#fileList tr:not(.hidden)').length).toEqual(1); + expect($summary.hasClass('hidden')).toEqual(false); + expect($summary.find('.info').text()).toEqual("0 folders and 1 file matches '63'"); + expect($nofilterresults.hasClass('hidden')).toEqual(true); + }); it('hides the emptyfiles notice when using filter()', function() { expect(fileList.files.length).toEqual(0); expect(fileList.files).toEqual([]); -- cgit v1.2.3 From ee90bef50a179e542b15ea5c7b1cf3d808cd3ad4 Mon Sep 17 00:00:00 2001 From: Jenkins for ownCloud Date: Mon, 27 Jun 2016 01:55:57 -0400 Subject: [tx-robot] updated from transifex --- apps/comments/l10n/fi_FI.js | 3 +++ apps/comments/l10n/fi_FI.json | 3 +++ apps/comments/l10n/pl.js | 3 +++ apps/comments/l10n/pl.json | 3 +++ apps/systemtags/l10n/pl.js | 1 + apps/systemtags/l10n/pl.json | 1 + core/l10n/pl.js | 7 +++++++ core/l10n/pl.json | 7 +++++++ settings/l10n/pl.js | 2 ++ settings/l10n/pl.json | 2 ++ 10 files changed, 32 insertions(+) (limited to 'apps') diff --git a/apps/comments/l10n/fi_FI.js b/apps/comments/l10n/fi_FI.js index 7b4de946763..b541b9987fe 100644 --- a/apps/comments/l10n/fi_FI.js +++ b/apps/comments/l10n/fi_FI.js @@ -12,6 +12,9 @@ OC.L10N.register( "More comments..." : "Lisää kommentteja...", "Save" : "Tallenna", "Allowed characters {count} of {max}" : "Sallittujen merkkien määrä {count}/{max}", + "Error occurred while retrieving comment with id {id}" : "Virhe noutaessa kommenttia tunnisteella {id}", + "Error occurred while updating comment with id {id}" : "Virhe päivittäessä kommenttia tunnisteella {id}", + "Error occurred while posting comment" : "Virhe kommenttia lähettäessä", "{count} unread comments" : "{count} lukematonta kommenttia", "Comment" : "Kommentti", "Comments for files (always listed in stream)" : "Kommentit tiedostoille (aina listattu luettelossa)", diff --git a/apps/comments/l10n/fi_FI.json b/apps/comments/l10n/fi_FI.json index 5e9bcc74402..b5be601d905 100644 --- a/apps/comments/l10n/fi_FI.json +++ b/apps/comments/l10n/fi_FI.json @@ -10,6 +10,9 @@ "More comments..." : "Lisää kommentteja...", "Save" : "Tallenna", "Allowed characters {count} of {max}" : "Sallittujen merkkien määrä {count}/{max}", + "Error occurred while retrieving comment with id {id}" : "Virhe noutaessa kommenttia tunnisteella {id}", + "Error occurred while updating comment with id {id}" : "Virhe päivittäessä kommenttia tunnisteella {id}", + "Error occurred while posting comment" : "Virhe kommenttia lähettäessä", "{count} unread comments" : "{count} lukematonta kommenttia", "Comment" : "Kommentti", "Comments for files (always listed in stream)" : "Kommentit tiedostoille (aina listattu luettelossa)", diff --git a/apps/comments/l10n/pl.js b/apps/comments/l10n/pl.js index d4a492e1da2..b8df4dea02b 100644 --- a/apps/comments/l10n/pl.js +++ b/apps/comments/l10n/pl.js @@ -12,6 +12,9 @@ OC.L10N.register( "More comments..." : "Więcej komentarzy...", "Save" : "Zapisz", "Allowed characters {count} of {max}" : "Dozwolone znaki {count} z {max}", + "Error occurred while retrieving comment with id {id}" : "W trakcie otrzymywania komentarza o identyfikatorze {id} wystąpił błąd.", + "Error occurred while updating comment with id {id}" : "W trakcie aktualizacji komentarza o identyfikatorze {id} wystąpił błąd.", + "Error occurred while posting comment" : "Podczas wysyłania komentarza wystąpił błąd", "{count} unread comments" : "{count} nieprzeczytanych komentarzy", "Comment" : "Komentarz", "Comments for files (always listed in stream)" : "Komentarze dla plików (zawsze wypisane w strumieniu)", diff --git a/apps/comments/l10n/pl.json b/apps/comments/l10n/pl.json index 78e9f0ff210..47e4b101f98 100644 --- a/apps/comments/l10n/pl.json +++ b/apps/comments/l10n/pl.json @@ -10,6 +10,9 @@ "More comments..." : "Więcej komentarzy...", "Save" : "Zapisz", "Allowed characters {count} of {max}" : "Dozwolone znaki {count} z {max}", + "Error occurred while retrieving comment with id {id}" : "W trakcie otrzymywania komentarza o identyfikatorze {id} wystąpił błąd.", + "Error occurred while updating comment with id {id}" : "W trakcie aktualizacji komentarza o identyfikatorze {id} wystąpił błąd.", + "Error occurred while posting comment" : "Podczas wysyłania komentarza wystąpił błąd", "{count} unread comments" : "{count} nieprzeczytanych komentarzy", "Comment" : "Komentarz", "Comments for files (always listed in stream)" : "Komentarze dla plików (zawsze wypisane w strumieniu)", diff --git a/apps/systemtags/l10n/pl.js b/apps/systemtags/l10n/pl.js index f5e4775d540..fca05665ec8 100644 --- a/apps/systemtags/l10n/pl.js +++ b/apps/systemtags/l10n/pl.js @@ -14,6 +14,7 @@ OC.L10N.register( "%1$s updated system tag %3$s to %2$s" : "%1$s zaktualizowany system etykiet%3$s do %2$s", "%1$s assigned system tag %3$s to %2$s" : "%1$s przypisywalny system etykiet%3$s do %2$s", "%1$s unassigned system tag %3$s from %2$s" : "%1$s nieprzypisany system etykiet %3$s z %2$s", + "%s (restricted)" : "%s (ograniczone)", "%s (invisible)" : "%s (niewidoczny)", "No files in here" : "Brak plików", "No entries found in this folder" : "Brak wpisów w tym folderze", diff --git a/apps/systemtags/l10n/pl.json b/apps/systemtags/l10n/pl.json index 6cb103ed4a5..97ae0230be4 100644 --- a/apps/systemtags/l10n/pl.json +++ b/apps/systemtags/l10n/pl.json @@ -12,6 +12,7 @@ "%1$s updated system tag %3$s to %2$s" : "%1$s zaktualizowany system etykiet%3$s do %2$s", "%1$s assigned system tag %3$s to %2$s" : "%1$s przypisywalny system etykiet%3$s do %2$s", "%1$s unassigned system tag %3$s from %2$s" : "%1$s nieprzypisany system etykiet %3$s z %2$s", + "%s (restricted)" : "%s (ograniczone)", "%s (invisible)" : "%s (niewidoczny)", "No files in here" : "Brak plików", "No entries found in this folder" : "Brak wpisów w tym folderze", diff --git a/core/l10n/pl.js b/core/l10n/pl.js index 3b284163b4f..da251abd079 100644 --- a/core/l10n/pl.js +++ b/core/l10n/pl.js @@ -166,9 +166,13 @@ OC.L10N.register( "delete" : "usuń", "access control" : "kontrola dostępu", "Could not unshare" : "Nie udało się usunąć udostępnienia", + "Share details could not be loaded for this item." : "Szczegóły udziału nie mogły zostać wczytane dla tego obiektu.", "No users or groups found for {search}" : "Nie znaleziono użytkowników lub grup dla {search}", "No users found for {search}" : "Nie znaleziono użytkowników dla {search}", "An error occurred. Please try again" : "Wystąpił błąd. Proszę spróbować ponownie.", + "{sharee} (group)" : "{sharee} (grupa)", + "{sharee} (at {server})" : "{sharee} (na {server})", + "{sharee} (remote)" : "{sharee} (zdalny)", "Share" : "Udostępnij", "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Współdziel z użytkownikami innych chmur ownCloud używając wzorca uzytkownik@example.com/owncloud", "Share with users…" : "Współdziel z użytkownikami...", @@ -181,6 +185,7 @@ OC.L10N.register( "Non-existing tag #{tag}" : "Znacznik #{tag} nie istnieje", "restricted" : "ograniczone", "invisible" : "niewidoczny", + "({scope})" : "({scope})", "Delete" : "Usuń", "Rename" : "Zmień nazwę", "The object type is not specified." : "Nie określono typu obiektu.", @@ -237,6 +242,7 @@ OC.L10N.register( "Data folder" : "Katalog danych", "Configure the database" : "Skonfiguruj bazę danych", "Only %s is available." : "Dostępne jest wyłącznie %s.", + "Install and activate additional PHP modules to choose other database types." : "Zainstaluj lub aktywuj dodatkowe moduły PHP, aby uzyskać możliwość wyboru innych typów baz danych.", "For more details check out the documentation." : "Aby uzyskać więcej informacji zapoznaj się z dokumentacją.", "Database user" : "Użytkownik bazy danych", "Database password" : "Hasło do bazy danych", @@ -289,6 +295,7 @@ OC.L10N.register( "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Aby uniknąć timeout-ów przy większych instalacjach, możesz zamiast tego uruchomić następującą komendę w katalogu Twojej instalacji:", "Detailed logs" : "Szczegółowe logi", "Update needed" : "Wymagana aktualizacja", + "Please use the command line updater because you have a big instance." : "Ze względu na rozmiar Twojej instalacji użyj programu do aktualizacji z linii poleceń.", "For help, see the documentation." : "Aby uzyskać pomoc, zajrzyj do dokumentacji.", "This page will refresh itself when the %s instance is available again." : "Strona odświeży się gdy instancja %s będzie ponownie dostępna." }, diff --git a/core/l10n/pl.json b/core/l10n/pl.json index 6833611713d..9f06fcf2d66 100644 --- a/core/l10n/pl.json +++ b/core/l10n/pl.json @@ -164,9 +164,13 @@ "delete" : "usuń", "access control" : "kontrola dostępu", "Could not unshare" : "Nie udało się usunąć udostępnienia", + "Share details could not be loaded for this item." : "Szczegóły udziału nie mogły zostać wczytane dla tego obiektu.", "No users or groups found for {search}" : "Nie znaleziono użytkowników lub grup dla {search}", "No users found for {search}" : "Nie znaleziono użytkowników dla {search}", "An error occurred. Please try again" : "Wystąpił błąd. Proszę spróbować ponownie.", + "{sharee} (group)" : "{sharee} (grupa)", + "{sharee} (at {server})" : "{sharee} (na {server})", + "{sharee} (remote)" : "{sharee} (zdalny)", "Share" : "Udostępnij", "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Współdziel z użytkownikami innych chmur ownCloud używając wzorca uzytkownik@example.com/owncloud", "Share with users…" : "Współdziel z użytkownikami...", @@ -179,6 +183,7 @@ "Non-existing tag #{tag}" : "Znacznik #{tag} nie istnieje", "restricted" : "ograniczone", "invisible" : "niewidoczny", + "({scope})" : "({scope})", "Delete" : "Usuń", "Rename" : "Zmień nazwę", "The object type is not specified." : "Nie określono typu obiektu.", @@ -235,6 +240,7 @@ "Data folder" : "Katalog danych", "Configure the database" : "Skonfiguruj bazę danych", "Only %s is available." : "Dostępne jest wyłącznie %s.", + "Install and activate additional PHP modules to choose other database types." : "Zainstaluj lub aktywuj dodatkowe moduły PHP, aby uzyskać możliwość wyboru innych typów baz danych.", "For more details check out the documentation." : "Aby uzyskać więcej informacji zapoznaj się z dokumentacją.", "Database user" : "Użytkownik bazy danych", "Database password" : "Hasło do bazy danych", @@ -287,6 +293,7 @@ "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Aby uniknąć timeout-ów przy większych instalacjach, możesz zamiast tego uruchomić następującą komendę w katalogu Twojej instalacji:", "Detailed logs" : "Szczegółowe logi", "Update needed" : "Wymagana aktualizacja", + "Please use the command line updater because you have a big instance." : "Ze względu na rozmiar Twojej instalacji użyj programu do aktualizacji z linii poleceń.", "For help, see the documentation." : "Aby uzyskać pomoc, zajrzyj do dokumentacji.", "This page will refresh itself when the %s instance is available again." : "Strona odświeży się gdy instancja %s będzie ponownie dostępna." },"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);" diff --git a/settings/l10n/pl.js b/settings/l10n/pl.js index 0d68b384931..903b374e0af 100644 --- a/settings/l10n/pl.js +++ b/settings/l10n/pl.js @@ -28,6 +28,7 @@ OC.L10N.register( "Email saved" : "E-mail zapisany", "Your full name has been changed." : "Twoja pełna nazwa została zmieniona.", "Unable to change full name" : "Nie można zmienić pełnej nazwy", + "Redis" : "Redis", "Security & setup warnings" : "Ostrzeżenia bezpieczeństwa i konfiguracji", "Sharing" : "Udostępnianie", "Server-side encryption" : "Szyfrowanie po stronie serwera", @@ -48,6 +49,7 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Trwa migracja. Proszę poczekać, aż migracja dobiegnie końca.", "Migration started …" : "Migracja rozpoczęta...", "Sending..." : "Wysyłam...", + "Experimental" : "Eksperymentalny", "All" : "Wszystkie", "No apps found for your version" : "Nie znaleziono aplikacji dla twojej wersji", "Update to %s" : "Uaktualnij do %s", diff --git a/settings/l10n/pl.json b/settings/l10n/pl.json index bdae17d4eef..f1c1994dd1d 100644 --- a/settings/l10n/pl.json +++ b/settings/l10n/pl.json @@ -26,6 +26,7 @@ "Email saved" : "E-mail zapisany", "Your full name has been changed." : "Twoja pełna nazwa została zmieniona.", "Unable to change full name" : "Nie można zmienić pełnej nazwy", + "Redis" : "Redis", "Security & setup warnings" : "Ostrzeżenia bezpieczeństwa i konfiguracji", "Sharing" : "Udostępnianie", "Server-side encryption" : "Szyfrowanie po stronie serwera", @@ -46,6 +47,7 @@ "Migration in progress. Please wait until the migration is finished" : "Trwa migracja. Proszę poczekać, aż migracja dobiegnie końca.", "Migration started …" : "Migracja rozpoczęta...", "Sending..." : "Wysyłam...", + "Experimental" : "Eksperymentalny", "All" : "Wszystkie", "No apps found for your version" : "Nie znaleziono aplikacji dla twojej wersji", "Update to %s" : "Uaktualnij do %s", -- cgit v1.2.3 From 0d3de20b021e3323f1873accacb7c4533f34e213 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Mon, 27 Jun 2016 10:50:10 +0200 Subject: Quickfix: do not lazy load auth mechanisms for ext storages Some auth mechanisms like SessionCredentials need to register hooks early, so they cannot be lazy loaded. --- apps/files_external/lib/AppInfo/Application.php | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'apps') diff --git a/apps/files_external/lib/AppInfo/Application.php b/apps/files_external/lib/AppInfo/Application.php index f78411038fa..b2eaf225e9e 100644 --- a/apps/files_external/lib/AppInfo/Application.php +++ b/apps/files_external/lib/AppInfo/Application.php @@ -52,6 +52,10 @@ class Application extends App implements IBackendProvider, IAuthMechanismProvide $backendService->registerBackendProvider($this); $backendService->registerAuthMechanismProvider($this); + // force-load auth mechanisms since some will register hooks + // TODO: obsolete these and use the TokenProvider to get the user's password from the session + $this->getAuthMechanisms(); + // app developers: do NOT depend on this! it will disappear with oC 9.0! \OC::$server->getEventDispatcher()->dispatch( 'OCA\\Files_External::loadAdditionalBackends' -- cgit v1.2.3