summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.scrutinizer.yml3
m---------3rdparty0
-rw-r--r--apps/comments/l10n/hu_HU.js13
-rw-r--r--apps/comments/l10n/hu_HU.json13
-rw-r--r--apps/dav/lib/carddav/addressbook.php4
-rw-r--r--apps/dav/lib/migration/migrateaddressbooks.php5
-rw-r--r--apps/dav/lib/migration/migratecalendars.php5
-rw-r--r--apps/dav/tests/unit/migration/migrateaddressbooktest.php18
-rw-r--r--apps/dav/tests/unit/migration/migratecalendartest.php17
-rw-r--r--apps/federatedfilesharing/l10n/hu_HU.js5
-rw-r--r--apps/federatedfilesharing/l10n/hu_HU.json5
-rw-r--r--apps/federatedfilesharing/l10n/sv.js4
-rw-r--r--apps/federatedfilesharing/l10n/sv.json4
-rw-r--r--apps/federation/l10n/es.js6
-rw-r--r--apps/federation/l10n/es.json6
-rw-r--r--apps/federation/l10n/hu_HU.js15
-rw-r--r--apps/federation/l10n/hu_HU.json13
-rw-r--r--apps/files/js/newfilemenu.js2
-rw-r--r--apps/files/l10n/hu_HU.js1
-rw-r--r--apps/files/l10n/hu_HU.json1
-rw-r--r--apps/files/l10n/pl.js2
-rw-r--r--apps/files/l10n/pl.json2
-rw-r--r--apps/files/l10n/sv.js2
-rw-r--r--apps/files/l10n/sv.json2
-rw-r--r--apps/files_external/l10n/pl.js1
-rw-r--r--apps/files_external/l10n/pl.json1
-rw-r--r--apps/files_external/lib/google.php3
-rw-r--r--apps/files_sharing/api/share20ocs.php94
-rw-r--r--apps/files_sharing/js/authenticate.js9
-rw-r--r--apps/files_sharing/l10n/es.js8
-rw-r--r--apps/files_sharing/l10n/es.json8
-rw-r--r--apps/files_sharing/l10n/pl.js1
-rw-r--r--apps/files_sharing/l10n/pl.json1
-rw-r--r--apps/files_sharing/lib/external/storage.php54
-rw-r--r--apps/files_sharing/lib/sharedstorage.php2
-rw-r--r--apps/files_sharing/templates/authenticate.php5
-rw-r--r--apps/systemtags/l10n/hu_HU.js14
-rw-r--r--apps/systemtags/l10n/hu_HU.json14
-rw-r--r--apps/updatenotification/controller/admincontroller.php5
-rw-r--r--apps/updatenotification/l10n/de.js2
-rw-r--r--apps/updatenotification/l10n/de.json2
-rw-r--r--apps/updatenotification/l10n/de_DE.js1
-rw-r--r--apps/updatenotification/l10n/de_DE.json1
-rw-r--r--apps/updatenotification/l10n/es.js3
-rw-r--r--apps/updatenotification/l10n/es.json3
-rw-r--r--apps/updatenotification/l10n/hu_HU.js7
-rw-r--r--apps/updatenotification/l10n/hu_HU.json7
-rw-r--r--apps/updatenotification/l10n/pt_BR.js5
-rw-r--r--apps/updatenotification/l10n/pt_BR.json5
-rw-r--r--apps/updatenotification/l10n/sv.js7
-rw-r--r--apps/updatenotification/l10n/sv.json7
-rw-r--r--apps/updatenotification/tests/controller/AdminControllerTest.php4
-rw-r--r--apps/user_ldap/l10n/he.js1
-rw-r--r--apps/user_ldap/l10n/he.json1
-rw-r--r--build/integration/features/bootstrap/CapabilitiesContext.php4
-rw-r--r--core/l10n/da.js5
-rw-r--r--core/l10n/da.json5
-rw-r--r--core/l10n/es.js1
-rw-r--r--core/l10n/es.json1
-rw-r--r--core/l10n/hu_HU.js1
-rw-r--r--core/l10n/hu_HU.json1
-rw-r--r--core/l10n/pl.js7
-rw-r--r--core/l10n/pl.json7
-rw-r--r--core/l10n/uk.js4
-rw-r--r--core/l10n/uk.json4
-rw-r--r--lib/base.php3
-rw-r--r--lib/l10n/cs_CZ.js2
-rw-r--r--lib/l10n/cs_CZ.json2
-rw-r--r--lib/l10n/hu_HU.js1
-rw-r--r--lib/l10n/hu_HU.json1
-rw-r--r--lib/l10n/pl.js1
-rw-r--r--lib/l10n/pl.json1
-rw-r--r--lib/private/files/config/usermountcache.php9
-rw-r--r--lib/private/share20/defaultshareprovider.php61
-rw-r--r--lib/private/streamer.php4
-rw-r--r--lib/private/util.php5
-rw-r--r--settings/js/old-apps.js0
-rw-r--r--settings/l10n/cs_CZ.js3
-rw-r--r--settings/l10n/cs_CZ.json3
-rw-r--r--settings/l10n/da.js2
-rw-r--r--settings/l10n/da.json2
-rw-r--r--settings/l10n/de_DE.js2
-rw-r--r--settings/l10n/de_DE.json2
-rw-r--r--settings/l10n/es.js3
-rw-r--r--settings/l10n/es.json3
-rw-r--r--settings/l10n/sv.js14
-rw-r--r--settings/l10n/sv.json14
87 files changed, 439 insertions, 163 deletions
diff --git a/.scrutinizer.yml b/.scrutinizer.yml
index 687613d6c26..72f6f1c30f9 100644
--- a/.scrutinizer.yml
+++ b/.scrutinizer.yml
@@ -1,3 +1,6 @@
+before_commands:
+ - 'git submodule update --init --recursive'
+
filter:
excluded_paths:
- '3rdparty/*'
diff --git a/3rdparty b/3rdparty
-Subproject fc0c1159f4e275186b45f8454aaa89f90718b89
+Subproject c3b4612313742540cdf472a923a0dc6d2d80653
diff --git a/apps/comments/l10n/hu_HU.js b/apps/comments/l10n/hu_HU.js
index c74b27f34cd..a7370f92f1c 100644
--- a/apps/comments/l10n/hu_HU.js
+++ b/apps/comments/l10n/hu_HU.js
@@ -1,8 +1,21 @@
OC.L10N.register(
"comments",
{
+ "<strong>Comments</strong> for files" : "<strong>Hozzászólások</strong> a fájlokhoz",
+ "%1$s commented" : "%1$s hozzászólt",
+ "%1$s commented on %2$s" : "%1$s hozzászólt ehhez: %2$s",
+ "Comments" : "Hozzászólások",
+ "Type in a new comment..." : "Új hozzászólás beírása...",
+ "Delete comment" : "Hozzászólás törlése",
+ "Post" : "Küldés",
"Cancel" : "Mégsem",
+ "Edit comment" : "Hozzászólás szerkesztése",
+ "[Deleted user]" : "[Törölt felhasználó]",
+ "No other comments available" : "Nincs további hozzászólás.",
+ "More comments..." : "Több hozzászólás...",
"Save" : "Mentés",
+ "Allowed characters {count} of {max}" : "Engedélyezett karakterek: {count} / {max}",
+ "{count} unread comments" : "{count} olvasatlan hozzászólás",
"Comment" : "Komment"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/comments/l10n/hu_HU.json b/apps/comments/l10n/hu_HU.json
index 7c8d8886895..ee8ccda250a 100644
--- a/apps/comments/l10n/hu_HU.json
+++ b/apps/comments/l10n/hu_HU.json
@@ -1,6 +1,19 @@
{ "translations": {
+ "<strong>Comments</strong> for files" : "<strong>Hozzászólások</strong> a fájlokhoz",
+ "%1$s commented" : "%1$s hozzászólt",
+ "%1$s commented on %2$s" : "%1$s hozzászólt ehhez: %2$s",
+ "Comments" : "Hozzászólások",
+ "Type in a new comment..." : "Új hozzászólás beírása...",
+ "Delete comment" : "Hozzászólás törlése",
+ "Post" : "Küldés",
"Cancel" : "Mégsem",
+ "Edit comment" : "Hozzászólás szerkesztése",
+ "[Deleted user]" : "[Törölt felhasználó]",
+ "No other comments available" : "Nincs további hozzászólás.",
+ "More comments..." : "Több hozzászólás...",
"Save" : "Mentés",
+ "Allowed characters {count} of {max}" : "Engedélyezett karakterek: {count} / {max}",
+ "{count} unread comments" : "{count} olvasatlan hozzászólás",
"Comment" : "Komment"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/lib/carddav/addressbook.php b/apps/dav/lib/carddav/addressbook.php
index 6ae938b8e29..bb9d13b981e 100644
--- a/apps/dav/lib/carddav/addressbook.php
+++ b/apps/dav/lib/carddav/addressbook.php
@@ -27,10 +27,6 @@ use Sabre\DAV\PropPatch;
class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
- public function __construct(CardDavBackend $carddavBackend, array $addressBookInfo) {
- parent::__construct($carddavBackend, $addressBookInfo);
- }
-
/**
* Updates the list of shares.
*
diff --git a/apps/dav/lib/migration/migrateaddressbooks.php b/apps/dav/lib/migration/migrateaddressbooks.php
index c0223b30e2c..7e1f47ea75e 100644
--- a/apps/dav/lib/migration/migrateaddressbooks.php
+++ b/apps/dav/lib/migration/migrateaddressbooks.php
@@ -115,11 +115,12 @@ class MigrateAddressbooks {
$add = array_map(function($s) {
$prefix = 'principal:principals/users/';
- if ($s['share_type'] === 1) {
+ if ((int)$s['share_type'] === 1) {
$prefix = 'principal:principals/groups/';
}
return [
- 'href' => $prefix . $s['share_with']
+ 'href' => $prefix . $s['share_with'],
+ 'readOnly' => !((int)$s['permissions'] === 31)
];
}, $shares);
diff --git a/apps/dav/lib/migration/migratecalendars.php b/apps/dav/lib/migration/migratecalendars.php
index 9bd6e6d3a3f..3c1487761c2 100644
--- a/apps/dav/lib/migration/migratecalendars.php
+++ b/apps/dav/lib/migration/migratecalendars.php
@@ -116,11 +116,12 @@ class MigrateCalendars {
$add = array_map(function($s) {
$prefix = 'principal:principals/users/';
- if ($s['share_type'] === 1) {
+ if ((int)$s['share_type'] === 1) {
$prefix = 'principal:principals/groups/';
}
return [
- 'href' => $prefix . $s['share_with']
+ 'href' => $prefix . $s['share_with'],
+ 'readOnly' => !((int)$s['permissions'] === 31)
];
}, $shares);
diff --git a/apps/dav/tests/unit/migration/migrateaddressbooktest.php b/apps/dav/tests/unit/migration/migrateaddressbooktest.php
index 0679e687a04..31cb16265c0 100644
--- a/apps/dav/tests/unit/migration/migrateaddressbooktest.php
+++ b/apps/dav/tests/unit/migration/migrateaddressbooktest.php
@@ -29,13 +29,21 @@ class MigrateAddressbookTest extends TestCase {
public function testMigration() {
/** @var AddressBookAdapter | \PHPUnit_Framework_MockObject_MockObject $adapter */
- $adapter = $this->mockAdapter();
+ $adapter = $this->mockAdapter([
+ ['share_type' => '1', 'share_with' => 'users', 'permissions' => '31'],
+ ['share_type' => '2', 'share_with' => 'adam', 'permissions' => '1'],
+ ]);
/** @var CardDavBackend | \PHPUnit_Framework_MockObject_MockObject $cardDav */
$cardDav = $this->getMockBuilder('\OCA\Dav\CardDAV\CardDAVBackend')->disableOriginalConstructor()->getMock();
- $cardDav->method('createAddressBook')->willReturn(666);
+ $cardDav->expects($this->any())->method('createAddressBook')->willReturn(666);
+ $cardDav->expects($this->any())->method('getAddressBookById')->willReturn([]);
$cardDav->expects($this->once())->method('createAddressBook')->with('principals/users/test01', 'test_contacts');
$cardDav->expects($this->once())->method('createCard')->with(666, '63f0dd6c-39d5-44be-9d34-34e7a7441fc2.vcf', 'BEGIN:VCARD');
+ $cardDav->expects($this->once())->method('updateShares')->with($this->anything(), [
+ ['href' => 'principal:principals/groups/users', 'readOnly' => false],
+ ['href' => 'principal:principals/users/adam', 'readOnly' => true]
+ ]);
/** @var ILogger $logger */
$logger = $this->getMockBuilder('\OCP\ILogger')->disableOriginalConstructor()->getMock();
@@ -48,7 +56,7 @@ class MigrateAddressbookTest extends TestCase {
*/
private function mockAdapter($shares = []) {
$adapter = $this->getMockBuilder('\OCA\Dav\Migration\AddressBookAdapter')->disableOriginalConstructor()->getMock();
- $adapter->method('foreachBook')->willReturnCallback(function ($user, \Closure $callBack) {
+ $adapter->expects($this->any())->method('foreachBook')->willReturnCallback(function ($user, \Closure $callBack) {
$callBack([
'id' => 0,
'userid' => $user,
@@ -59,14 +67,14 @@ class MigrateAddressbookTest extends TestCase {
'active' => 1
]);
});
- $adapter->method('foreachCard')->willReturnCallback(function ($addressBookId, \Closure $callBack) {
+ $adapter->expects($this->any())->method('foreachCard')->willReturnCallback(function ($addressBookId, \Closure $callBack) {
$callBack([
'userid' => $addressBookId,
'uri' => '63f0dd6c-39d5-44be-9d34-34e7a7441fc2.vcf',
'carddata' => 'BEGIN:VCARD'
]);
});
- $adapter->method('getShares')->willReturn($shares);
+ $adapter->expects($this->any())->method('getShares')->willReturn($shares);
return $adapter;
}
diff --git a/apps/dav/tests/unit/migration/migratecalendartest.php b/apps/dav/tests/unit/migration/migratecalendartest.php
index ad3f6af2322..e62970aef34 100644
--- a/apps/dav/tests/unit/migration/migratecalendartest.php
+++ b/apps/dav/tests/unit/migration/migratecalendartest.php
@@ -29,13 +29,20 @@ class MigrateCalendarTest extends TestCase {
public function testMigration() {
/** @var CalendarAdapter | \PHPUnit_Framework_MockObject_MockObject $adapter */
- $adapter = $this->mockAdapter();
+ $adapter = $this->mockAdapter([
+ ['share_type' => '1', 'share_with' => 'users', 'permissions' => '31'],
+ ['share_type' => '2', 'share_with' => 'adam', 'permissions' => '1'],
+ ]);
/** @var CalDavBackend | \PHPUnit_Framework_MockObject_MockObject $cardDav */
$cardDav = $this->getMockBuilder('\OCA\Dav\CalDAV\CalDAVBackend')->disableOriginalConstructor()->getMock();
- $cardDav->method('createCalendar')->willReturn(666);
+ $cardDav->expects($this->any())->method('createCalendar')->willReturn(666);
$cardDav->expects($this->once())->method('createCalendar')->with('principals/users/test01', 'test_contacts');
$cardDav->expects($this->once())->method('createCalendarObject')->with(666, '63f0dd6c-39d5-44be-9d34-34e7a7441fc2.ics', 'BEGIN:VCARD');
+ $cardDav->expects($this->once())->method('updateShares')->with($this->anything(), [
+ ['href' => 'principal:principals/groups/users', 'readOnly' => false],
+ ['href' => 'principal:principals/users/adam', 'readOnly' => true]
+ ]);
/** @var ILogger $logger */
$logger = $this->getMockBuilder('\OCP\ILogger')->disableOriginalConstructor()->getMock();
@@ -50,7 +57,7 @@ class MigrateCalendarTest extends TestCase {
$adapter = $this->getMockBuilder('\OCA\Dav\Migration\CalendarAdapter')
->disableOriginalConstructor()
->getMock();
- $adapter->method('foreachCalendar')->willReturnCallback(function ($user, \Closure $callBack) {
+ $adapter->expects($this->any())->method('foreachCalendar')->willReturnCallback(function ($user, \Closure $callBack) {
$callBack([
// calendarorder | calendarcolor | timezone | components
'id' => 0,
@@ -65,14 +72,14 @@ class MigrateCalendarTest extends TestCase {
'components' => 'VEVENT,VTODO,VJOURNAL'
]);
});
- $adapter->method('foreachCalendarObject')->willReturnCallback(function ($addressBookId, \Closure $callBack) use ($calData) {
+ $adapter->expects($this->any())->method('foreachCalendarObject')->willReturnCallback(function ($addressBookId, \Closure $callBack) use ($calData) {
$callBack([
'userid' => $addressBookId,
'uri' => '63f0dd6c-39d5-44be-9d34-34e7a7441fc2.ics',
'calendardata' => $calData
]);
});
- $adapter->method('getShares')->willReturn($shares);
+ $adapter->expects($this->any())->method('getShares')->willReturn($shares);
return $adapter;
}
}
diff --git a/apps/federatedfilesharing/l10n/hu_HU.js b/apps/federatedfilesharing/l10n/hu_HU.js
index 7d64fe0c3b7..0f4785e6665 100644
--- a/apps/federatedfilesharing/l10n/hu_HU.js
+++ b/apps/federatedfilesharing/l10n/hu_HU.js
@@ -2,7 +2,8 @@ OC.L10N.register(
"federatedfilesharing",
{
"Invalid Federated Cloud ID" : "Érvénytelen Egyesített Felhő Azonosító",
- "Sharing %s failed, because this item is already shared with %s" : "%s megosztása nem sikerült, mert ez már meg van osztva %s-vel",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s megosztása sikertelen, mert %s nem található, talán a szerver jelenleg nem elérhető."
+ "Sharing %s failed, because this item is already shared with %s" : "%s megosztása nem sikerült, mert ez már meg van osztva vele: %s",
+ "Not allowed to create a federated share with the same user" : "Azonos felhasználóval nem lehet létrehozni egyesített megosztást",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s megosztása sikertelen, mert %s nem található; talán a szerver jelenleg nem elérhető."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federatedfilesharing/l10n/hu_HU.json b/apps/federatedfilesharing/l10n/hu_HU.json
index 3e24578c77f..7297ea1bd4f 100644
--- a/apps/federatedfilesharing/l10n/hu_HU.json
+++ b/apps/federatedfilesharing/l10n/hu_HU.json
@@ -1,6 +1,7 @@
{ "translations": {
"Invalid Federated Cloud ID" : "Érvénytelen Egyesített Felhő Azonosító",
- "Sharing %s failed, because this item is already shared with %s" : "%s megosztása nem sikerült, mert ez már meg van osztva %s-vel",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s megosztása sikertelen, mert %s nem található, talán a szerver jelenleg nem elérhető."
+ "Sharing %s failed, because this item is already shared with %s" : "%s megosztása nem sikerült, mert ez már meg van osztva vele: %s",
+ "Not allowed to create a federated share with the same user" : "Azonos felhasználóval nem lehet létrehozni egyesített megosztást",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s megosztása sikertelen, mert %s nem található; talán a szerver jelenleg nem elérhető."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federatedfilesharing/l10n/sv.js b/apps/federatedfilesharing/l10n/sv.js
index 5e262c577d4..54f98bcb34f 100644
--- a/apps/federatedfilesharing/l10n/sv.js
+++ b/apps/federatedfilesharing/l10n/sv.js
@@ -1,9 +1,9 @@
OC.L10N.register(
"federatedfilesharing",
{
- "Invalid Federated Cloud ID" : "Ogiltigt \"Federated Cloud\"-ID",
+ "Invalid Federated Cloud ID" : "Ogiltig Federerad Cloud-ID",
"Sharing %s failed, because this item is already shared with %s" : "Delning %s misslyckades därför att objektet redan är delat med %s",
- "Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en förbundsdelning med samma användare",
+ "Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en federerad delning med samma användare",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Misslyckades dela ut %s, kan inte hitta %s, kanske är servern inte åtkomlig för närvarande."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federatedfilesharing/l10n/sv.json b/apps/federatedfilesharing/l10n/sv.json
index 2e0d3dc071c..70a11577280 100644
--- a/apps/federatedfilesharing/l10n/sv.json
+++ b/apps/federatedfilesharing/l10n/sv.json
@@ -1,7 +1,7 @@
{ "translations": {
- "Invalid Federated Cloud ID" : "Ogiltigt \"Federated Cloud\"-ID",
+ "Invalid Federated Cloud ID" : "Ogiltig Federerad Cloud-ID",
"Sharing %s failed, because this item is already shared with %s" : "Delning %s misslyckades därför att objektet redan är delat med %s",
- "Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en förbundsdelning med samma användare",
+ "Not allowed to create a federated share with the same user" : "Ej tillåtet att skapa en federerad delning med samma användare",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Misslyckades dela ut %s, kan inte hitta %s, kanske är servern inte åtkomlig för närvarande."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/es.js b/apps/federation/l10n/es.js
index fb899bb0fc2..c559a39c979 100644
--- a/apps/federation/l10n/es.js
+++ b/apps/federation/l10n/es.js
@@ -6,6 +6,10 @@ OC.L10N.register(
"No ownCloud server found" : "No se ha encontrado el servidor ownCloud",
"Could not add server" : "No se pudo agregar el servidor",
"Federation" : "Federación",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La Federación de ownCloud permite conectar con otros ownClouds en los que se confíe para intercambiar el directorio de usuario. Por ejemplo esto se usará para autocompletar usuarios externos para compartición federada."
+ "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La Federación de ownCloud permite conectar con otros ownClouds en los que se confíe para intercambiar el directorio de usuario. Por ejemplo esto se puede usar para autocompletar usuarios externos en caso de compartición federada.",
+ "Add server automatically once a federated share was created successfully" : "Añadir el servidor automáticamente una vez que un compartido federado se haya creado exitosamente",
+ "Trusted ownCloud Servers" : "Servidores onwCloud en los que confío",
+ "+ Add ownCloud server" : "+ Añadir servidor onwCloud",
+ "ownCloud Server" : "Servidor ownCloud"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/es.json b/apps/federation/l10n/es.json
index f4797b10ee4..17c11ebae3c 100644
--- a/apps/federation/l10n/es.json
+++ b/apps/federation/l10n/es.json
@@ -4,6 +4,10 @@
"No ownCloud server found" : "No se ha encontrado el servidor ownCloud",
"Could not add server" : "No se pudo agregar el servidor",
"Federation" : "Federación",
- "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La Federación de ownCloud permite conectar con otros ownClouds en los que se confíe para intercambiar el directorio de usuario. Por ejemplo esto se usará para autocompletar usuarios externos para compartición federada."
+ "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "La Federación de ownCloud permite conectar con otros ownClouds en los que se confíe para intercambiar el directorio de usuario. Por ejemplo esto se puede usar para autocompletar usuarios externos en caso de compartición federada.",
+ "Add server automatically once a federated share was created successfully" : "Añadir el servidor automáticamente una vez que un compartido federado se haya creado exitosamente",
+ "Trusted ownCloud Servers" : "Servidores onwCloud en los que confío",
+ "+ Add ownCloud server" : "+ Añadir servidor onwCloud",
+ "ownCloud Server" : "Servidor ownCloud"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federation/l10n/hu_HU.js b/apps/federation/l10n/hu_HU.js
new file mode 100644
index 00000000000..c210bd910d2
--- /dev/null
+++ b/apps/federation/l10n/hu_HU.js
@@ -0,0 +1,15 @@
+OC.L10N.register(
+ "federation",
+ {
+ "Server added to the list of trusted ownClouds" : "Szerver hozzáadva a megbízható ownCloud szerverekhez",
+ "Server is already in the list of trusted servers." : "A szerver már a megbízható szerverek közt van.",
+ "No ownCloud server found" : "Nem található ownCloud szerver",
+ "Could not add server" : "Nem lehet hozzáadni a szervert",
+ "Federation" : "Egyesítés",
+ "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Az ownCloud Egyesítés lehetővé teszi más megbízható ownCloud szerverekkel a felhasználói könyvtár csereforgalmát. Például ezt használjuk a külső felhasználók automata kiegészítéséhez az egyesített megosztásban.",
+ "Add server automatically once a federated share was created successfully" : "Szerver automatikus hozzáadása, ha az egyesített megosztás létrehozása sikeres",
+ "Trusted ownCloud Servers" : "Megbízható ownCloud szerverek",
+ "+ Add ownCloud server" : "+ ownCloud szerver hozzáadása",
+ "ownCloud Server" : "ownCloud szerver"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/hu_HU.json b/apps/federation/l10n/hu_HU.json
new file mode 100644
index 00000000000..6f5eddb5d76
--- /dev/null
+++ b/apps/federation/l10n/hu_HU.json
@@ -0,0 +1,13 @@
+{ "translations": {
+ "Server added to the list of trusted ownClouds" : "Szerver hozzáadva a megbízható ownCloud szerverekhez",
+ "Server is already in the list of trusted servers." : "A szerver már a megbízható szerverek közt van.",
+ "No ownCloud server found" : "Nem található ownCloud szerver",
+ "Could not add server" : "Nem lehet hozzáadni a szervert",
+ "Federation" : "Egyesítés",
+ "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Az ownCloud Egyesítés lehetővé teszi más megbízható ownCloud szerverekkel a felhasználói könyvtár csereforgalmát. Például ezt használjuk a külső felhasználók automata kiegészítéséhez az egyesített megosztásban.",
+ "Add server automatically once a federated share was created successfully" : "Szerver automatikus hozzáadása, ha az egyesített megosztás létrehozása sikeres",
+ "Trusted ownCloud Servers" : "Megbízható ownCloud szerverek",
+ "+ Add ownCloud server" : "+ ownCloud szerver hozzáadása",
+ "ownCloud Server" : "ownCloud szerver"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/files/js/newfilemenu.js b/apps/files/js/newfilemenu.js
index 3553d2d1aa0..f6cf87a55bf 100644
--- a/apps/files/js/newfilemenu.js
+++ b/apps/files/js/newfilemenu.js
@@ -27,7 +27,7 @@
var TEMPLATE_FILENAME_FORM =
'<form class="filenameform">' +
'<label class="hidden-visually" for="{{cid}}-input-{{fileType}}">{{fileName}}</label>' +
- '<input id="{{cid}}-input-{{fileType}}" type="text" value="{{fileName}}" autocomplete="off" autocapitalize="off" autocorrect="off">' +
+ '<input id="{{cid}}-input-{{fileType}}" type="text" value="{{fileName}}" autocomplete="off" autocapitalize="off">' +
'</form>';
/**
diff --git a/apps/files/l10n/hu_HU.js b/apps/files/l10n/hu_HU.js
index 399c70932b7..0ea1a02d594 100644
--- a/apps/files/l10n/hu_HU.js
+++ b/apps/files/l10n/hu_HU.js
@@ -28,6 +28,7 @@ OC.L10N.register(
"Unable to upload {filename} as it is a directory or has 0 bytes" : "A(z) {filename} állomány nem tölthető fel, mert ez vagy egy mappa, vagy pedig 0 bájtból áll.",
"Total file size {size1} exceeds upload limit {size2}" : "A teljes fájlméret: {size1} meghaladja a feltöltési limitet: {size2}",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Nincs elég szabad hely. A feltöltés mérete {size1}, de csak ennyi hely van: {size2}.",
+ "Error uploading file \"{fileName}\": {message}" : "Hiba történt a fájlfeltöltés közben: \"{fileName}\": {message}",
"Could not get result from server." : "A kiszolgálótól nem kapható meg a művelet eredménye.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Fájlfeltöltés van folyamatban. Az oldal elhagyása megszakítja a feltöltést.",
"Actions" : "Műveletek",
diff --git a/apps/files/l10n/hu_HU.json b/apps/files/l10n/hu_HU.json
index fdad8332499..69314709c39 100644
--- a/apps/files/l10n/hu_HU.json
+++ b/apps/files/l10n/hu_HU.json
@@ -26,6 +26,7 @@
"Unable to upload {filename} as it is a directory or has 0 bytes" : "A(z) {filename} állomány nem tölthető fel, mert ez vagy egy mappa, vagy pedig 0 bájtból áll.",
"Total file size {size1} exceeds upload limit {size2}" : "A teljes fájlméret: {size1} meghaladja a feltöltési limitet: {size2}",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Nincs elég szabad hely. A feltöltés mérete {size1}, de csak ennyi hely van: {size2}.",
+ "Error uploading file \"{fileName}\": {message}" : "Hiba történt a fájlfeltöltés közben: \"{fileName}\": {message}",
"Could not get result from server." : "A kiszolgálótól nem kapható meg a művelet eredménye.",
"File upload is in progress. Leaving the page now will cancel the upload." : "Fájlfeltöltés van folyamatban. Az oldal elhagyása megszakítja a feltöltést.",
"Actions" : "Műveletek",
diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js
index 6513707cad1..9070ccb090b 100644
--- a/apps/files/l10n/pl.js
+++ b/apps/files/l10n/pl.js
@@ -41,6 +41,8 @@ OC.L10N.register(
"Pending" : "Oczekujące",
"Unable to determine date" : "Nie można ustalić daty",
"This directory is unavailable, please check the logs or contact the administrator" : "Ten folder jest niedostępny, proszę sprawdzić logi lub skontaktować się z administratorem.",
+ "Could not create folder \"{dir}\" because it already exists" : "Nie można utworzyć folderu „{dir}”, ponieważ już istnieje.",
+ "Error deleting file \"{fileName}\"." : "Błąd podczas usuwania pliku „{fileName}”.",
"No entries in this folder match '{filter}'" : "Brak wyników pasujących do '{filter}'",
"Name" : "Nazwa",
"Size" : "Rozmiar",
diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json
index 7fd95619b17..f2a2a805a9b 100644
--- a/apps/files/l10n/pl.json
+++ b/apps/files/l10n/pl.json
@@ -39,6 +39,8 @@
"Pending" : "Oczekujące",
"Unable to determine date" : "Nie można ustalić daty",
"This directory is unavailable, please check the logs or contact the administrator" : "Ten folder jest niedostępny, proszę sprawdzić logi lub skontaktować się z administratorem.",
+ "Could not create folder \"{dir}\" because it already exists" : "Nie można utworzyć folderu „{dir}”, ponieważ już istnieje.",
+ "Error deleting file \"{fileName}\"." : "Błąd podczas usuwania pliku „{fileName}”.",
"No entries in this folder match '{filter}'" : "Brak wyników pasujących do '{filter}'",
"Name" : "Nazwa",
"Size" : "Rozmiar",
diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js
index 2a11c614c3f..14e86cfdfc7 100644
--- a/apps/files/l10n/sv.js
+++ b/apps/files/l10n/sv.js
@@ -71,7 +71,7 @@ OC.L10N.register(
"Your storage is almost full ({usedSpacePercent}%)" : "Ditt lagringsutrymme är nästan fullt ({usedSpacePercent}%)",
"Path" : "sökväg",
"_%n byte_::_%n bytes_" : ["%n bytes","%n bytes"],
- "Favorited" : "Favoritiserad",
+ "Favorited" : "Favoriserad",
"Favorite" : "Favorit",
"Folder" : "Mapp",
"New folder" : "Ny mapp",
diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json
index d948763241d..0a1c43788f0 100644
--- a/apps/files/l10n/sv.json
+++ b/apps/files/l10n/sv.json
@@ -69,7 +69,7 @@
"Your storage is almost full ({usedSpacePercent}%)" : "Ditt lagringsutrymme är nästan fullt ({usedSpacePercent}%)",
"Path" : "sökväg",
"_%n byte_::_%n bytes_" : ["%n bytes","%n bytes"],
- "Favorited" : "Favoritiserad",
+ "Favorited" : "Favoriserad",
"Favorite" : "Favorit",
"Folder" : "Mapp",
"New folder" : "Ny mapp",
diff --git a/apps/files_external/l10n/pl.js b/apps/files_external/l10n/pl.js
index e8c64830073..176a10af6b9 100644
--- a/apps/files_external/l10n/pl.js
+++ b/apps/files_external/l10n/pl.js
@@ -24,6 +24,7 @@ OC.L10N.register(
"Username" : "Nazwa użytkownika",
"Password" : "Hasło",
"Save" : "Zapisz",
+ "Access key" : "Klucz dostępu",
"None" : "Nic",
"App key" : "Klucz aplikacji",
"App secret" : "Hasło aplikacji",
diff --git a/apps/files_external/l10n/pl.json b/apps/files_external/l10n/pl.json
index 7420ff8ac34..241f6568f61 100644
--- a/apps/files_external/l10n/pl.json
+++ b/apps/files_external/l10n/pl.json
@@ -22,6 +22,7 @@
"Username" : "Nazwa użytkownika",
"Password" : "Hasło",
"Save" : "Zapisz",
+ "Access key" : "Klucz dostępu",
"None" : "Nic",
"App key" : "Klucz aplikacji",
"App secret" : "Hasło aplikacji",
diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php
index 3e8b60d33df..5e5716cf438 100644
--- a/apps/files_external/lib/google.php
+++ b/apps/files_external/lib/google.php
@@ -265,7 +265,8 @@ class Google extends \OC\Files\Storage\Common {
foreach ($children->getItems() as $child) {
$name = $child->getTitle();
// Check if this is a Google Doc i.e. no extension in name
- if (empty($child->getFileExtension())
+ $extension = $child->getFileExtension();
+ if (empty($extension)
&& $child->getMimeType() !== self::FOLDER
) {
$name .= '.'.$this->getGoogleDocExtension($child->getMimeType());
diff --git a/apps/files_sharing/api/share20ocs.php b/apps/files_sharing/api/share20ocs.php
index 4abd821f2ae..0c9e5473d9c 100644
--- a/apps/files_sharing/api/share20ocs.php
+++ b/apps/files_sharing/api/share20ocs.php
@@ -33,6 +33,11 @@ use OCP\Share\IManager;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\Exceptions\GenericShareException;
+/**
+ * Class Share20OCS
+ *
+ * @package OCA\Files_Sharing\API
+ */
class Share20OCS {
/** @var IManager */
@@ -155,27 +160,10 @@ class Share20OCS {
* @return \OC_OCS_Result
*/
public function getShare($id) {
- // Try both our default, and our federated provider..
- $share = null;
-
- // First check if it is an internal share.
try {
- $share = $this->shareManager->getShareById('ocinternal:'.$id);
+ $share = $this->getShareById($id);
} catch (ShareNotFound $e) {
- // Ignore for now
- //return new \OC_OCS_Result(null, 404, 'wrong share ID, share doesn\'t exist.');
- }
-
- if ($share === null) {
- if (!$this->shareManager->outgoingServer2ServerSharesAllowed()) {
- return new \OC_OCS_Result(null, 404, 'wrong share ID, share doesn\'t exist.');
- }
-
- try {
- $share = $this->shareManager->getShareById('ocFederatedSharing:' . $id);
- } catch (ShareNotFound $e) {
- return new \OC_OCS_Result(null, 404, 'wrong share ID, share doesn\'t exist.');
- }
+ return new \OC_OCS_Result(null, 404, 'wrong share ID, share doesn\'t exist.');
}
if ($this->canAccessShare($share)) {
@@ -198,26 +186,10 @@ class Share20OCS {
*/
public function deleteShare($id) {
// Try both our default and our federated provider
- $share = null;
-
try {
- $share = $this->shareManager->getShareById('ocinternal:' . $id);
+ $share = $this->getShareById($id);
} catch (ShareNotFound $e) {
- //Ignore for now
- //return new \OC_OCS_Result(null, 404, 'wrong share ID, share doesn\'t exist.');
- }
-
- // Could not find the share as internal share... maybe it is a federated share
- if ($share === null) {
- if (!$this->shareManager->outgoingServer2ServerSharesAllowed()) {
- return new \OC_OCS_Result(null, 404, 'wrong share ID, share doesn\'t exist.');
- }
-
- try {
- $share = $this->shareManager->getShareById('ocFederatedSharing:' . $id);
- } catch (ShareNotFound $e) {
- return new \OC_OCS_Result(null, 404, 'wrong share ID, share doesn\'t exist.');
- }
+ return new \OC_OCS_Result(null, 404, 'wrong share ID, share doesn\'t exist.');
}
if (!$this->canAccessShare($share)) {
@@ -354,7 +326,7 @@ class Share20OCS {
} else if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE) {
if (!$this->shareManager->outgoingServer2ServerSharesAllowed()) {
- return new \OC_OCS_Result(null, 403, 'Sharing '.$path.' failed, because the backend does not allow shares from type '.$shareType);
+ return new \OC_OCS_Result(null, 403, 'Sharing '.$path->getPath().' failed, because the backend does not allow shares from type '.$shareType);
}
$share->setSharedWith($shareWith);
@@ -505,27 +477,10 @@ class Share20OCS {
* @return \OC_OCS_Result
*/
public function updateShare($id) {
- // Try both our default and our federated provider
- $share = null;
-
try {
- $share = $this->shareManager->getShareById('ocinternal:' . $id);
+ $share = $this->getShareById($id);
} catch (ShareNotFound $e) {
- //Ignore for now
- //return new \OC_OCS_Result(null, 404, 'wrong share ID, share doesn\'t exist.');
- }
-
- // Could not find the share as internal share... maybe it is a federated share
- if ($share === null) {
- if (!$this->shareManager->outgoingServer2ServerSharesAllowed()) {
- return new \OC_OCS_Result(null, 404, 'wrong share ID, share doesn\'t exist.');
- }
-
- try {
- $share = $this->shareManager->getShareById('ocFederatedSharing:' . $id);
- } catch (ShareNotFound $e) {
- return new \OC_OCS_Result(null, 404, 'wrong share ID, share doesn\'t exist.');
- }
+ return new \OC_OCS_Result(null, 404, 'wrong share ID, share doesn\'t exist.');
}
if (!$this->canAccessShare($share)) {
@@ -688,4 +643,29 @@ class Share20OCS {
return $date;
}
+
+ /**
+ * Since we have multiple providers but the OCS Share API v1 does
+ * not support this we need to check all backends.
+ *
+ * @param string $id
+ * @return \OCP\Share\IShare
+ * @throws ShareNotFound
+ */
+ private function getShareById($id) {
+ $share = null;
+
+ // First check if it is an internal share.
+ try {
+ $share = $this->shareManager->getShareById('ocinternal:'.$id);
+ } catch (ShareNotFound $e) {
+ if (!$this->shareManager->outgoingServer2ServerSharesAllowed()) {
+ throw new ShareNotFound();
+ }
+
+ $share = $this->shareManager->getShareById('ocFederatedSharing:' . $id);
+ }
+
+ return $share;
+ }
}
diff --git a/apps/files_sharing/js/authenticate.js b/apps/files_sharing/js/authenticate.js
new file mode 100644
index 00000000000..7f3f0d0a7d4
--- /dev/null
+++ b/apps/files_sharing/js/authenticate.js
@@ -0,0 +1,9 @@
+$(document).ready(function(){
+ $('#password').on('keyup input change', function() {
+ if ($('#password').val().length > 0) {
+ $('#password-submit').prop('disabled', false);
+ } else {
+ $('#password-submit').prop('disabled', true);
+ }
+ });
+});
diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js
index 01f65761abb..2dc3a69c2d0 100644
--- a/apps/files_sharing/l10n/es.js
+++ b/apps/files_sharing/l10n/es.js
@@ -53,17 +53,25 @@ OC.L10N.register(
"Your public link for %1$s expired" : "Su enlace público %1$s ha expirado",
"The public link of %2$s for %1$s expired" : "El enlace público de %2$s para %1$s ha expirado",
"%2$s shared %1$s with you" : "%2$s ha compartido %1$s con usted",
+ "%2$s removed the share for %1$s" : "%2$s ha borrado el compartido %1$s",
"Downloaded via public link" : "Descargado vía enlace público",
"Shared with %2$s" : "Compartido con %2$s",
"Shared with %3$s by %2$s" : "Compartido con %3$s por %2$s",
+ "Removed share for %2$s" : "Borrado el compartido %2$s",
+ "%2$s removed share for %3$s" : "%2$s ha borrado el compartido %3$s",
"Shared with group %2$s" : "Compartido con el grupo %2$s",
"Shared with group %3$s by %2$s" : "Compartido con el grupo %3$s por %2$s",
+ "Removed share of group %2$s" : "Borrado el compartido del grupo %2$s",
+ "%2$s removed share of group %3$s" : "%2$s ha borrado el compartido del grupo %3$s",
"Shared via link by %2$s" : "Compartido vía enlace por %2$s",
"Shared via public link" : "Compartido vía enlace público",
"Removed public link" : "Eliminado enlace público",
+ "%2$s removed public link" : "%2$s ha borrado el enlace público",
"Public link expired" : "El enlace público ha expirado",
+ "Public link of %2$s expired" : "El enlace público %2$s ha expirado",
"Shared by %2$s" : "Compartido por %2$s",
"Shares" : "Compartidos",
+ "You received \"/%2$s\" as a remote share from %1$s" : "Acaba de recibir el siguiente enlace demoto \"/%2$s\" de %1$s",
"Accept" : "Aceptar",
"Decline" : "Denegar",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID Nube Federada #ownCloud, ver %s",
diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json
index bd5d497829b..40a16c5f25d 100644
--- a/apps/files_sharing/l10n/es.json
+++ b/apps/files_sharing/l10n/es.json
@@ -51,17 +51,25 @@
"Your public link for %1$s expired" : "Su enlace público %1$s ha expirado",
"The public link of %2$s for %1$s expired" : "El enlace público de %2$s para %1$s ha expirado",
"%2$s shared %1$s with you" : "%2$s ha compartido %1$s con usted",
+ "%2$s removed the share for %1$s" : "%2$s ha borrado el compartido %1$s",
"Downloaded via public link" : "Descargado vía enlace público",
"Shared with %2$s" : "Compartido con %2$s",
"Shared with %3$s by %2$s" : "Compartido con %3$s por %2$s",
+ "Removed share for %2$s" : "Borrado el compartido %2$s",
+ "%2$s removed share for %3$s" : "%2$s ha borrado el compartido %3$s",
"Shared with group %2$s" : "Compartido con el grupo %2$s",
"Shared with group %3$s by %2$s" : "Compartido con el grupo %3$s por %2$s",
+ "Removed share of group %2$s" : "Borrado el compartido del grupo %2$s",
+ "%2$s removed share of group %3$s" : "%2$s ha borrado el compartido del grupo %3$s",
"Shared via link by %2$s" : "Compartido vía enlace por %2$s",
"Shared via public link" : "Compartido vía enlace público",
"Removed public link" : "Eliminado enlace público",
+ "%2$s removed public link" : "%2$s ha borrado el enlace público",
"Public link expired" : "El enlace público ha expirado",
+ "Public link of %2$s expired" : "El enlace público %2$s ha expirado",
"Shared by %2$s" : "Compartido por %2$s",
"Shares" : "Compartidos",
+ "You received \"/%2$s\" as a remote share from %1$s" : "Acaba de recibir el siguiente enlace demoto \"/%2$s\" de %1$s",
"Accept" : "Aceptar",
"Decline" : "Denegar",
"Share with me through my #ownCloud Federated Cloud ID, see %s" : "Compartirlo conmigo a través de mi ID Nube Federada #ownCloud, ver %s",
diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js
index 9ffad090397..f96a684b704 100644
--- a/apps/files_sharing/l10n/pl.js
+++ b/apps/files_sharing/l10n/pl.js
@@ -29,6 +29,7 @@ OC.L10N.register(
"You shared %1$s with group %2$s" : "Współdzielisz %1$s z grupą %2$s",
"You shared %1$s via link" : "Udostępniasz %1$s przez link",
"%2$s shared %1$s with you" : "%2$s współdzieli %1$s z Tobą",
+ "%2$s removed the share for %1$s" : "%2$s usunął udział dla %1$s",
"Shares" : "Udziały",
"Accept" : "Akceptuj",
"This share is password-protected" : "Udział ten jest chroniony hasłem",
diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json
index 3f59d73864d..917d1a4cfaa 100644
--- a/apps/files_sharing/l10n/pl.json
+++ b/apps/files_sharing/l10n/pl.json
@@ -27,6 +27,7 @@
"You shared %1$s with group %2$s" : "Współdzielisz %1$s z grupą %2$s",
"You shared %1$s via link" : "Udostępniasz %1$s przez link",
"%2$s shared %1$s with you" : "%2$s współdzieli %1$s z Tobą",
+ "%2$s removed the share for %1$s" : "%2$s usunął udział dla %1$s",
"Shares" : "Udziały",
"Accept" : "Akceptuj",
"This share is password-protected" : "Udział ten jest chroniony hasłem",
diff --git a/apps/files_sharing/lib/external/storage.php b/apps/files_sharing/lib/external/storage.php
index 87f5a3598fb..16fd84bdba5 100644
--- a/apps/files_sharing/lib/external/storage.php
+++ b/apps/files_sharing/lib/external/storage.php
@@ -25,6 +25,8 @@
namespace OCA\Files_Sharing\External;
+use GuzzleHttp\Exception\ClientException;
+use GuzzleHttp\Exception\ConnectException;
use OC\Files\Storage\DAV;
use OC\ForbiddenException;
use OCA\FederatedFileSharing\DiscoveryManager;
@@ -34,36 +36,21 @@ use OCP\Files\StorageInvalidException;
use OCP\Files\StorageNotAvailableException;
class Storage extends DAV implements ISharedStorage {
- /**
- * @var string
- */
+ /** @var string */
private $remoteUser;
-
- /**
- * @var string
- */
+ /** @var string */
private $remote;
-
- /**
- * @var string
- */
+ /** @var string */
private $mountPoint;
-
- /**
- * @var string
- */
+ /** @var string */
private $token;
-
- /**
- * @var \OCP\ICacheFactory
- */
+ /** @var \OCP\ICacheFactory */
private $memcacheFactory;
-
- /**
- * @var \OCP\ICertificateManager
- */
+ /** @var \OCP\Http\Client\IClientService */
+ private $httpClient;
+ /** @var \OCP\ICertificateManager */
private $certificateManager;
-
+ /** @var bool */
private $updateChecked = false;
/**
@@ -73,6 +60,7 @@ class Storage extends DAV implements ISharedStorage {
public function __construct($options) {
$this->memcacheFactory = \OC::$server->getMemCacheFactory();
+ $this->httpClient = \OC::$server->getHTTPClientService();
$discoveryManager = new DiscoveryManager(
$this->memcacheFactory,
\OC::$server->getHTTPClientService()
@@ -253,13 +241,21 @@ class Storage extends DAV implements ISharedStorage {
*/
private function testRemoteUrl($url) {
$cache = $this->memcacheFactory->create('files_sharing_remote_url');
- if($result = $cache->get($url)) {
- return (bool)$result;
+ if($cache->hasKey($url)) {
+ return (bool)$cache->get($url);
+ }
+
+ $client = $this->httpClient->newClient();
+ try {
+ $result = $client->get($url)->getBody();
+ $data = json_decode($result);
+ $returnValue = (is_object($data) && !empty($data->version));
+ } catch (ConnectException $e) {
+ $returnValue = false;
+ } catch (ClientException $e) {
+ $returnValue = false;
}
- $result = file_get_contents($url);
- $data = json_decode($result);
- $returnValue = (is_object($data) and !empty($data->version));
$cache->set($url, $returnValue);
return $returnValue;
}
diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php
index 600599d7175..6998f94698e 100644
--- a/apps/files_sharing/lib/sharedstorage.php
+++ b/apps/files_sharing/lib/sharedstorage.php
@@ -85,6 +85,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
}
private function isValid() {
+ $this->init();
return ($this->sourceRootInfo->getPermissions() & Constants::PERMISSION_SHARE) === Constants::PERMISSION_SHARE;
}
@@ -566,6 +567,7 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage {
}
public function getCache($path = '', $storage = null) {
+ $this->init();
if (!$storage) {
$storage = $this;
}
diff --git a/apps/files_sharing/templates/authenticate.php b/apps/files_sharing/templates/authenticate.php
index 72adf0d1674..909e839177c 100644
--- a/apps/files_sharing/templates/authenticate.php
+++ b/apps/files_sharing/templates/authenticate.php
@@ -2,6 +2,7 @@
/** @var $_ array */
/** @var $l OC_L10N */
style('files_sharing', 'authenticate');
+ script('files_sharing', 'authenticate');
?>
<form method="post">
<fieldset>
@@ -18,8 +19,8 @@
placeholder="<?php p($l->t('Password')); ?>" value=""
autocomplete="off" autocapitalize="off" autocorrect="off"
autofocus />
- <input type="submit" value=""
- class="svg icon-confirm input-button-inline" />
+ <input type="submit" id="password-submit"
+ class="svg icon-confirm input-button-inline" value="" disabled="disabled" />
</p>
</fieldset>
</form>
diff --git a/apps/systemtags/l10n/hu_HU.js b/apps/systemtags/l10n/hu_HU.js
index ed90b2b07dc..1e121781941 100644
--- a/apps/systemtags/l10n/hu_HU.js
+++ b/apps/systemtags/l10n/hu_HU.js
@@ -1,7 +1,21 @@
OC.L10N.register(
"systemtags",
{
+ "<strong>System tags</strong> for a file have been modified" : "A fájl <strong>rendszer címkéje</strong> módosítva lett",
+ "%1$s assigned system tag %3$s" : "%1$s hozzárendelte ezt a rendszer címkét: %3$s",
+ "%1$s unassigned system tag %3$s" : "%1$s elvette ezt a rendszer címkét: %3$s",
+ "%1$s created system tag %2$s" : "%1$s létrehozta ezt a rendszer címkét: %2$s",
+ "%1$s deleted system tag %2$s" : "%1$s törölte ezt a rendszer címkét: %2$s",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s frissítette ezt a rendszer címkét erről: %3$s erre: %2$s",
+ "%1$s assigned system tag %3$s to %2$s" : "%1$s hozzárendelte ezt a rendszer címkét: %3$s neki: %2$s",
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s elvette ezt a rendszer címkét %3$s tőle: %2$s",
+ "%s (not-assignable)" : "%s (nem hozzárendelhető)",
+ "%s (invisible)" : "%s (láthatatlan)",
"Tags" : "Címkék",
+ "Tagged files" : "Címkézett fájlok",
+ "Select tags to filter by" : "Kiválasztott címkék a szűrő által:",
+ "Please select tags to filter by" : "Kéjük, válasszon ki címkét a szűréshez:",
+ "No files found for the selected tags" : "Nem található fájl a kiválasztott címkéhez.",
"No files in here" : "Itt nincsenek fájlok",
"No entries found in this folder" : "Nincsenek bejegyzések ebben a könyvtárban",
"Name" : "Név",
diff --git a/apps/systemtags/l10n/hu_HU.json b/apps/systemtags/l10n/hu_HU.json
index 8122c6f93ca..182f7f11ecf 100644
--- a/apps/systemtags/l10n/hu_HU.json
+++ b/apps/systemtags/l10n/hu_HU.json
@@ -1,5 +1,19 @@
{ "translations": {
+ "<strong>System tags</strong> for a file have been modified" : "A fájl <strong>rendszer címkéje</strong> módosítva lett",
+ "%1$s assigned system tag %3$s" : "%1$s hozzárendelte ezt a rendszer címkét: %3$s",
+ "%1$s unassigned system tag %3$s" : "%1$s elvette ezt a rendszer címkét: %3$s",
+ "%1$s created system tag %2$s" : "%1$s létrehozta ezt a rendszer címkét: %2$s",
+ "%1$s deleted system tag %2$s" : "%1$s törölte ezt a rendszer címkét: %2$s",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s frissítette ezt a rendszer címkét erről: %3$s erre: %2$s",
+ "%1$s assigned system tag %3$s to %2$s" : "%1$s hozzárendelte ezt a rendszer címkét: %3$s neki: %2$s",
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s elvette ezt a rendszer címkét %3$s tőle: %2$s",
+ "%s (not-assignable)" : "%s (nem hozzárendelhető)",
+ "%s (invisible)" : "%s (láthatatlan)",
"Tags" : "Címkék",
+ "Tagged files" : "Címkézett fájlok",
+ "Select tags to filter by" : "Kiválasztott címkék a szűrő által:",
+ "Please select tags to filter by" : "Kéjük, válasszon ki címkét a szűréshez:",
+ "No files found for the selected tags" : "Nem található fájl a kiválasztott címkéhez.",
"No files in here" : "Itt nincsenek fájlok",
"No entries found in this folder" : "Nincsenek bejegyzések ebben a könyvtárban",
"Name" : "Név",
diff --git a/apps/updatenotification/controller/admincontroller.php b/apps/updatenotification/controller/admincontroller.php
index cb0c6409d7e..5dbcc685809 100644
--- a/apps/updatenotification/controller/admincontroller.php
+++ b/apps/updatenotification/controller/admincontroller.php
@@ -99,12 +99,13 @@ class AdminController extends Controller {
if(($key = array_search($currentChannel, $channels)) !== false) {
unset($channels[$key]);
}
-
+ $updateState = $this->updateChecker->getUpdateState();
$params = [
- 'isNewVersionAvailable' => ($this->updateChecker->getUpdateState() === []) ? false : true,
+ 'isNewVersionAvailable' => ($updateState === []) ? false : true,
'lastChecked' => $lastUpdateCheck,
'currentChannel' => $currentChannel,
'channels' => $channels,
+ 'newVersionString' => ($updateState === []) ? '' : $updateState['updateVersion'],
];
return new TemplateResponse($this->appName, 'admin', $params, '');
diff --git a/apps/updatenotification/l10n/de.js b/apps/updatenotification/l10n/de.js
index 8b069192b34..3cd825bff94 100644
--- a/apps/updatenotification/l10n/de.js
+++ b/apps/updatenotification/l10n/de.js
@@ -1,11 +1,13 @@
OC.L10N.register(
"updatenotification",
{
+ "Updated channel" : "Aktualisierter Kanal",
"{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierungen.",
"Updater" : "Updater",
"A new version is available: %s" : "Eine neue Version ist verfügbar: %s",
"Open updater" : "Updater aufrufen",
"Your version is up to date." : "Deine Version ist aktuell.",
+ "Checked on %s" : "Geprüft auf %s",
"Update channel:" : "Update-Kanal:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kannst immer auf eine neuere Version updaten / experimentelle Version, aber kein Downgrade auf eine stabiliere Version durchführen."
},
diff --git a/apps/updatenotification/l10n/de.json b/apps/updatenotification/l10n/de.json
index d9035a07a57..566a33d9ba6 100644
--- a/apps/updatenotification/l10n/de.json
+++ b/apps/updatenotification/l10n/de.json
@@ -1,9 +1,11 @@
{ "translations": {
+ "Updated channel" : "Aktualisierter Kanal",
"{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierungen.",
"Updater" : "Updater",
"A new version is available: %s" : "Eine neue Version ist verfügbar: %s",
"Open updater" : "Updater aufrufen",
"Your version is up to date." : "Deine Version ist aktuell.",
+ "Checked on %s" : "Geprüft auf %s",
"Update channel:" : "Update-Kanal:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kannst immer auf eine neuere Version updaten / experimentelle Version, aber kein Downgrade auf eine stabiliere Version durchführen."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/updatenotification/l10n/de_DE.js b/apps/updatenotification/l10n/de_DE.js
index 4ab4e34f140..cda4c603038 100644
--- a/apps/updatenotification/l10n/de_DE.js
+++ b/apps/updatenotification/l10n/de_DE.js
@@ -5,6 +5,7 @@ OC.L10N.register(
"Updater" : "Updater",
"A new version is available: %s" : "Eine neue Version ist verfügbar: %s",
"Open updater" : "Updater aufrufen",
+ "Your version is up to date." : "Die neuste Version ist installiert.",
"Update channel:" : "Update-Kanal:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/de_DE.json b/apps/updatenotification/l10n/de_DE.json
index 0b20ec750aa..8df6bf57ab5 100644
--- a/apps/updatenotification/l10n/de_DE.json
+++ b/apps/updatenotification/l10n/de_DE.json
@@ -3,6 +3,7 @@
"Updater" : "Updater",
"A new version is available: %s" : "Eine neue Version ist verfügbar: %s",
"Open updater" : "Updater aufrufen",
+ "Your version is up to date." : "Die neuste Version ist installiert.",
"Update channel:" : "Update-Kanal:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/es.js b/apps/updatenotification/l10n/es.js
index 3e4f1c7202e..3922e49a7ff 100644
--- a/apps/updatenotification/l10n/es.js
+++ b/apps/updatenotification/l10n/es.js
@@ -1,10 +1,13 @@
OC.L10N.register(
"updatenotification",
{
+ "Updated channel" : "Canal actualizado",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obtenga más información sobre cómo actualizar.",
"Updater" : "Actualizador",
"A new version is available: %s" : "Hay una nueva versión disponible: %s",
"Open updater" : "Abrir el actualizador",
+ "Your version is up to date." : "Su versión está actualizada.",
+ "Checked on %s" : "Revisado el %s",
"Update channel:" : "Canal de actualización: ",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre podrás actualizar a la versión más reciente o al canal experimental, pero nunca podrás regresar a un canal más estable."
},
diff --git a/apps/updatenotification/l10n/es.json b/apps/updatenotification/l10n/es.json
index 679a915d863..a72d2d84e8a 100644
--- a/apps/updatenotification/l10n/es.json
+++ b/apps/updatenotification/l10n/es.json
@@ -1,8 +1,11 @@
{ "translations": {
+ "Updated channel" : "Canal actualizado",
"{version} is available. Get more information on how to update." : "{version} está disponible. Obtenga más información sobre cómo actualizar.",
"Updater" : "Actualizador",
"A new version is available: %s" : "Hay una nueva versión disponible: %s",
"Open updater" : "Abrir el actualizador",
+ "Your version is up to date." : "Su versión está actualizada.",
+ "Checked on %s" : "Revisado el %s",
"Update channel:" : "Canal de actualización: ",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Siempre podrás actualizar a la versión más reciente o al canal experimental, pero nunca podrás regresar a un canal más estable."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/apps/updatenotification/l10n/hu_HU.js b/apps/updatenotification/l10n/hu_HU.js
index d48806ef2a9..9fe551f060e 100644
--- a/apps/updatenotification/l10n/hu_HU.js
+++ b/apps/updatenotification/l10n/hu_HU.js
@@ -1,9 +1,14 @@
OC.L10N.register(
"updatenotification",
{
+ "Updated channel" : "Frissített csatorna",
"{version} is available. Get more information on how to update." : "{version} rendelkezésre áll. További információ a frissítéshez.",
"Updater" : "Frissítéskezelő",
+ "A new version is available: %s" : "Új verzió érhető el: %s",
+ "Open updater" : "Frissítő megnyitása",
+ "Your version is up to date." : "Verzió frissítve.",
+ "Checked on %s" : "Ellenőrizve: %s",
"Update channel:" : "Frissítési csatorna:",
- "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Mindig frissíthetsz a újabb verzióra vagy kísérleti csatornára, de visszafelé sosem frissíthetsz egy jóval stabilabb verzióra."
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Mindig frissíthetsz az újabb verzióra vagy kísérleti csatornára, de visszafelé sosem frissíthetsz egy jóval stabilabb verzióra."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/hu_HU.json b/apps/updatenotification/l10n/hu_HU.json
index ec51cfdf532..13c37924428 100644
--- a/apps/updatenotification/l10n/hu_HU.json
+++ b/apps/updatenotification/l10n/hu_HU.json
@@ -1,7 +1,12 @@
{ "translations": {
+ "Updated channel" : "Frissített csatorna",
"{version} is available. Get more information on how to update." : "{version} rendelkezésre áll. További információ a frissítéshez.",
"Updater" : "Frissítéskezelő",
+ "A new version is available: %s" : "Új verzió érhető el: %s",
+ "Open updater" : "Frissítő megnyitása",
+ "Your version is up to date." : "Verzió frissítve.",
+ "Checked on %s" : "Ellenőrizve: %s",
"Update channel:" : "Frissítési csatorna:",
- "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Mindig frissíthetsz a újabb verzióra vagy kísérleti csatornára, de visszafelé sosem frissíthetsz egy jóval stabilabb verzióra."
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Mindig frissíthetsz az újabb verzióra vagy kísérleti csatornára, de visszafelé sosem frissíthetsz egy jóval stabilabb verzióra."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/l10n/pt_BR.js b/apps/updatenotification/l10n/pt_BR.js
index 6b5f48697da..4ee77e8745c 100644
--- a/apps/updatenotification/l10n/pt_BR.js
+++ b/apps/updatenotification/l10n/pt_BR.js
@@ -1,10 +1,13 @@
OC.L10N.register(
"updatenotification",
{
+ "Updated channel" : "Canal atualizado",
"{version} is available. Get more information on how to update." : "{version} está disponível. Obtenha mais informações sobre como atualizar.",
"Updater" : "Atualizador",
- "A new version is available: %s" : "A nova versão está disponível: %s",
+ "A new version is available: %s" : "Uma nova versão está disponível: %s",
"Open updater" : "Abrir o atualizador",
+ "Your version is up to date." : "Sua versão está atualizada",
+ "Checked on %s" : "Verificada em %s",
"Update channel:" : "Atualização do canal:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Você pode sempre atualizar para uma versão / canal experimental mais recente. Mas você nunca pode voltar para um canal mais estável."
},
diff --git a/apps/updatenotification/l10n/pt_BR.json b/apps/updatenotification/l10n/pt_BR.json
index bed50f65e90..43763f7448f 100644
--- a/apps/updatenotification/l10n/pt_BR.json
+++ b/apps/updatenotification/l10n/pt_BR.json
@@ -1,8 +1,11 @@
{ "translations": {
+ "Updated channel" : "Canal atualizado",
"{version} is available. Get more information on how to update." : "{version} está disponível. Obtenha mais informações sobre como atualizar.",
"Updater" : "Atualizador",
- "A new version is available: %s" : "A nova versão está disponível: %s",
+ "A new version is available: %s" : "Uma nova versão está disponível: %s",
"Open updater" : "Abrir o atualizador",
+ "Your version is up to date." : "Sua versão está atualizada",
+ "Checked on %s" : "Verificada em %s",
"Update channel:" : "Atualização do canal:",
"You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Você pode sempre atualizar para uma versão / canal experimental mais recente. Mas você nunca pode voltar para um canal mais estável."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
diff --git a/apps/updatenotification/l10n/sv.js b/apps/updatenotification/l10n/sv.js
index 410143a050d..ed2bf1ddb16 100644
--- a/apps/updatenotification/l10n/sv.js
+++ b/apps/updatenotification/l10n/sv.js
@@ -1,9 +1,14 @@
OC.L10N.register(
"updatenotification",
{
+ "Updated channel" : "Uppdaterad kanal",
"{version} is available. Get more information on how to update." : "{version} är tillgänglig. Få mer information om hur du uppdaterar.",
"Updater" : "Uppdaterare",
"A new version is available: %s" : "En ny version är tillgänglig: %s",
- "Open updater" : "Öppna uppdateraren"
+ "Open updater" : "Öppna uppdateraren",
+ "Your version is up to date." : "Din version är uppdaterad.",
+ "Checked on %s" : "Senast kontrollerad %s",
+ "Update channel:" : "Uppdateringskanal:",
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kan alltid uppdatera till en nyare version / experimentell kanal. Men du kan aldrig nedgradera till en mer stabil kanal."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/updatenotification/l10n/sv.json b/apps/updatenotification/l10n/sv.json
index 3e7855a9994..4c3ec1d3ed4 100644
--- a/apps/updatenotification/l10n/sv.json
+++ b/apps/updatenotification/l10n/sv.json
@@ -1,7 +1,12 @@
{ "translations": {
+ "Updated channel" : "Uppdaterad kanal",
"{version} is available. Get more information on how to update." : "{version} är tillgänglig. Få mer information om hur du uppdaterar.",
"Updater" : "Uppdaterare",
"A new version is available: %s" : "En ny version är tillgänglig: %s",
- "Open updater" : "Öppna uppdateraren"
+ "Open updater" : "Öppna uppdateraren",
+ "Your version is up to date." : "Din version är uppdaterad.",
+ "Checked on %s" : "Senast kontrollerad %s",
+ "Update channel:" : "Uppdateringskanal:",
+ "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Du kan alltid uppdatera till en nyare version / experimentell kanal. Men du kan aldrig nedgradera till en mer stabil kanal."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/updatenotification/tests/controller/AdminControllerTest.php b/apps/updatenotification/tests/controller/AdminControllerTest.php
index 50adcd2028b..d8fc2dd335c 100644
--- a/apps/updatenotification/tests/controller/AdminControllerTest.php
+++ b/apps/updatenotification/tests/controller/AdminControllerTest.php
@@ -107,13 +107,14 @@ class AdminControllerTest extends TestCase {
$this->updateChecker
->expects($this->once())
->method('getUpdateState')
- ->willReturn(['foo' => 'bar']);
+ ->willReturn(['updateVersion' => '8.1.2']);
$params = [
'isNewVersionAvailable' => true,
'lastChecked' => 'LastCheckedReturnValue',
'currentChannel' => \OCP\Util::getChannel(),
'channels' => $channels,
+ 'newVersionString' => '8.1.2',
];
$expected = new TemplateResponse('updatenotification', 'admin', $params, '');
@@ -154,6 +155,7 @@ class AdminControllerTest extends TestCase {
'lastChecked' => 'LastCheckedReturnValue',
'currentChannel' => \OCP\Util::getChannel(),
'channels' => $channels,
+ 'newVersionString' => '',
];
$expected = new TemplateResponse('updatenotification', 'admin', $params, '');
diff --git a/apps/user_ldap/l10n/he.js b/apps/user_ldap/l10n/he.js
index e093f1b73a0..b0ef6a5c0a3 100644
--- a/apps/user_ldap/l10n/he.js
+++ b/apps/user_ldap/l10n/he.js
@@ -120,6 +120,7 @@ OC.L10N.register(
"in seconds. A change empties the cache." : "בשניות. שינוי מרוקן את המטמון.",
"Directory Settings" : "הגדרות תיקייה",
"User Display Name Field" : "שדה שם תצוגה למשתמש",
+ "The LDAP attribute to use to generate the user's display name." : "תכונת LDAP לשימוש כדי להפיק את שם התצוגה של המשתמש.",
"2nd User Display Name Field" : "שדה שני לשם תצוגת משתמש",
"Base User Tree" : "עץ משתמש בסיסי",
"User Search Attributes" : "מאפייני חיפוש משתמש",
diff --git a/apps/user_ldap/l10n/he.json b/apps/user_ldap/l10n/he.json
index 8e8805e944d..bfa91e63aba 100644
--- a/apps/user_ldap/l10n/he.json
+++ b/apps/user_ldap/l10n/he.json
@@ -118,6 +118,7 @@
"in seconds. A change empties the cache." : "בשניות. שינוי מרוקן את המטמון.",
"Directory Settings" : "הגדרות תיקייה",
"User Display Name Field" : "שדה שם תצוגה למשתמש",
+ "The LDAP attribute to use to generate the user's display name." : "תכונת LDAP לשימוש כדי להפיק את שם התצוגה של המשתמש.",
"2nd User Display Name Field" : "שדה שני לשם תצוגת משתמש",
"Base User Tree" : "עץ משתמש בסיסי",
"User Search Attributes" : "מאפייני חיפוש משתמש",
diff --git a/build/integration/features/bootstrap/CapabilitiesContext.php b/build/integration/features/bootstrap/CapabilitiesContext.php
index d30984f0db7..83d5f5fd2f3 100644
--- a/build/integration/features/bootstrap/CapabilitiesContext.php
+++ b/build/integration/features/bootstrap/CapabilitiesContext.php
@@ -39,9 +39,9 @@ class CapabilitiesContext implements Context, SnippetAcceptingContext {
foreach ($formData->getHash() as $row) {
$path_to_element = explode('@@@', $row['path_to_element']);
- $answeredValue = $capabilitiesXML->$row['capability'];
+ $answeredValue = $capabilitiesXML->{$row['capability']};
for ($i = 0; $i < count($path_to_element); $i++){
- $answeredValue = $answeredValue->$path_to_element[$i];
+ $answeredValue = $answeredValue->{$path_to_element[$i]};
}
$answeredValue = (string)$answeredValue;
PHPUnit_Framework_Assert::assertEquals(
diff --git a/core/l10n/da.js b/core/l10n/da.js
index 03ecb6f175d..ce367988553 100644
--- a/core/l10n/da.js
+++ b/core/l10n/da.js
@@ -20,6 +20,7 @@ OC.L10N.register(
"%s (incompatible)" : "%s (inkombatible)",
"Following apps have been disabled: %s" : "Følgende apps er blevet deaktiveret: %s",
"Already up to date" : "Allerede opdateret",
+ "Please select a file." : "Vælg fil",
"File is too big" : "Filen er for stor",
"Invalid file provided" : "Der er angivet en ugyldig fil",
"No image or file provided" : "Ingen fil eller billede givet",
@@ -156,8 +157,10 @@ OC.L10N.register(
"Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Del med andre på ownCloud ved hjælp af syntaxen username@example.com/owncloud",
"Share with users or groups …" : "Del med brugere eller grupper",
"Share with users, groups or remote users …" : "Del med brugere, grupper eller eksterne brugere...",
+ "Error removing share" : "Fejl ved fjernelse af deling",
"Warning" : "Advarsel",
"Error while sending notification" : "Fejl ved afsendelse af notifikation",
+ "invisible" : "usynlig",
"Delete" : "Slet",
"Rename" : "Omdøb",
"The object type is not specified." : "Objekttypen er ikke angivet.",
@@ -171,6 +174,7 @@ OC.L10N.register(
"sunny" : "solrigt",
"Hello {name}, the weather is {weather}" : "Hej {name}, vejret er {weather}",
"Hello {name}" : "Hej {name}",
+ "new" : "ny",
"_download %n file_::_download %n files_" : ["hent %n fil","hent %n filer"],
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Opgraderingen er i gang, forlader du denne side kan det afbryde processen.",
"Updating {productName} to version {version}, this may take a while." : "Opdaterer {productName} til version {version}, det kan tage et stykke tid.",
@@ -248,6 +252,7 @@ OC.L10N.register(
"Please try again or contact your administrator." : "Kontakt venligst din administrator.",
"Log in" : "Log ind",
"Wrong password. Reset it?" : "Forkert kodeord. Skal det nulstilles?",
+ "Wrong password." : "Forkert kodeord.",
"Stay logged in" : "Forbliv logget ind",
"Alternative Logins" : "Alternative logins",
"Use the following link to reset your password: {link}" : "Anvend følgende link til at nulstille din adgangskode: {link}",
diff --git a/core/l10n/da.json b/core/l10n/da.json
index 10be7aa4b54..8f31696bb23 100644
--- a/core/l10n/da.json
+++ b/core/l10n/da.json
@@ -18,6 +18,7 @@
"%s (incompatible)" : "%s (inkombatible)",
"Following apps have been disabled: %s" : "Følgende apps er blevet deaktiveret: %s",
"Already up to date" : "Allerede opdateret",
+ "Please select a file." : "Vælg fil",
"File is too big" : "Filen er for stor",
"Invalid file provided" : "Der er angivet en ugyldig fil",
"No image or file provided" : "Ingen fil eller billede givet",
@@ -154,8 +155,10 @@
"Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Del med andre på ownCloud ved hjælp af syntaxen username@example.com/owncloud",
"Share with users or groups …" : "Del med brugere eller grupper",
"Share with users, groups or remote users …" : "Del med brugere, grupper eller eksterne brugere...",
+ "Error removing share" : "Fejl ved fjernelse af deling",
"Warning" : "Advarsel",
"Error while sending notification" : "Fejl ved afsendelse af notifikation",
+ "invisible" : "usynlig",
"Delete" : "Slet",
"Rename" : "Omdøb",
"The object type is not specified." : "Objekttypen er ikke angivet.",
@@ -169,6 +172,7 @@
"sunny" : "solrigt",
"Hello {name}, the weather is {weather}" : "Hej {name}, vejret er {weather}",
"Hello {name}" : "Hej {name}",
+ "new" : "ny",
"_download %n file_::_download %n files_" : ["hent %n fil","hent %n filer"],
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Opgraderingen er i gang, forlader du denne side kan det afbryde processen.",
"Updating {productName} to version {version}, this may take a while." : "Opdaterer {productName} til version {version}, det kan tage et stykke tid.",
@@ -246,6 +250,7 @@
"Please try again or contact your administrator." : "Kontakt venligst din administrator.",
"Log in" : "Log ind",
"Wrong password. Reset it?" : "Forkert kodeord. Skal det nulstilles?",
+ "Wrong password." : "Forkert kodeord.",
"Stay logged in" : "Forbliv logget ind",
"Alternative Logins" : "Alternative logins",
"Use the following link to reset your password: {link}" : "Anvend følgende link til at nulstille din adgangskode: {link}",
diff --git a/core/l10n/es.js b/core/l10n/es.js
index 145879a957a..99b5233976f 100644
--- a/core/l10n/es.js
+++ b/core/l10n/es.js
@@ -197,6 +197,7 @@ OC.L10N.register(
"sunny" : "soleado",
"Hello {name}, the weather is {weather}" : "Hola {name}, el día es {weather}",
"Hello {name}" : "Hola {name}",
+ "new" : "Nuevo",
"_download %n file_::_download %n files_" : ["descargar %n ficheros","descargar %n archivos"],
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "La actualización está en curso, salir de esta página podrían interrumpir el proceso en algunos entornos.",
"Updating {productName} to version {version}, this may take a while." : "Actualizando {productName} a la versión {version}. Esto puede tardar un poco.",
diff --git a/core/l10n/es.json b/core/l10n/es.json
index 299d6303cec..d9e837de90c 100644
--- a/core/l10n/es.json
+++ b/core/l10n/es.json
@@ -195,6 +195,7 @@
"sunny" : "soleado",
"Hello {name}, the weather is {weather}" : "Hola {name}, el día es {weather}",
"Hello {name}" : "Hola {name}",
+ "new" : "Nuevo",
"_download %n file_::_download %n files_" : ["descargar %n ficheros","descargar %n archivos"],
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "La actualización está en curso, salir de esta página podrían interrumpir el proceso en algunos entornos.",
"Updating {productName} to version {version}, this may take a while." : "Actualizando {productName} a la versión {version}. Esto puede tardar un poco.",
diff --git a/core/l10n/hu_HU.js b/core/l10n/hu_HU.js
index 305fd814052..c99f7bbbe0b 100644
--- a/core/l10n/hu_HU.js
+++ b/core/l10n/hu_HU.js
@@ -184,6 +184,7 @@ OC.L10N.register(
"sunny" : "napos",
"Hello {name}, the weather is {weather}" : "Üdv, {name}, {weather} időnk van",
"Hello {name}" : "Hello {name}",
+ "new" : "új",
"_download %n file_::_download %n files_" : ["%n fájl letöltése","%n fájl letöltése"],
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A frissítés folyamatban van, az oldal elhagyása néhány környezetben lehet, hogy megszakítja a folyamatot.",
"Updating {productName} to version {version}, this may take a while." : " {productName} frissítése zajlik erre a verzióra: {version}. Ez eltarthat egy darabig.",
diff --git a/core/l10n/hu_HU.json b/core/l10n/hu_HU.json
index 9c6818ca349..99f3e448e63 100644
--- a/core/l10n/hu_HU.json
+++ b/core/l10n/hu_HU.json
@@ -182,6 +182,7 @@
"sunny" : "napos",
"Hello {name}, the weather is {weather}" : "Üdv, {name}, {weather} időnk van",
"Hello {name}" : "Hello {name}",
+ "new" : "új",
"_download %n file_::_download %n files_" : ["%n fájl letöltése","%n fájl letöltése"],
"The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A frissítés folyamatban van, az oldal elhagyása néhány környezetben lehet, hogy megszakítja a folyamatot.",
"Updating {productName} to version {version}, this may take a while." : " {productName} frissítése zajlik erre a verzióra: {version}. Ez eltarthat egy darabig.",
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index 0203ac579e6..dca5d0dc734 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -34,6 +34,13 @@ OC.L10N.register(
"Thu." : "Cz.",
"Fri." : "Pt.",
"Sat." : "S.",
+ "Su" : "Nd",
+ "Mo" : "Pn",
+ "Tu" : "Wt",
+ "We" : "Śr",
+ "Th" : "Czw",
+ "Fr" : "Pt",
+ "Sa" : "So",
"January" : "Styczeń",
"February" : "Luty",
"March" : "Marzec",
diff --git a/core/l10n/pl.json b/core/l10n/pl.json
index d82bc2eca24..00356d39db3 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -32,6 +32,13 @@
"Thu." : "Cz.",
"Fri." : "Pt.",
"Sat." : "S.",
+ "Su" : "Nd",
+ "Mo" : "Pn",
+ "Tu" : "Wt",
+ "We" : "Śr",
+ "Th" : "Czw",
+ "Fr" : "Pt",
+ "Sa" : "So",
"January" : "Styczeń",
"February" : "Luty",
"March" : "Marzec",
diff --git a/core/l10n/uk.js b/core/l10n/uk.js
index 60594fbf889..5df7f8244c5 100644
--- a/core/l10n/uk.js
+++ b/core/l10n/uk.js
@@ -8,12 +8,16 @@ OC.L10N.register(
"Maintenance mode is kept active" : "Режим обслуговування залишається активним",
"Updating database schema" : "Оновлення схеми бази даних",
"Updated database" : "Базу даних оновлено",
+ "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Перевіряю, чи схема бази даних може бути оновлена (це може зайняти багато часу, залежно від розмірів бази даних)",
"Checked database schema update" : "Перевірено оновлення схеми бази даних",
"Checking updates of apps" : "Перевірка оновлень додатків",
+ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Перевіряю, чи схема бази даних для %s може бути оновлена (це може зайняти багато часу, залежно від розмірів бази даних)",
"Checked database schema update for apps" : "Перевірено оновлення схеми бази даних для додатків",
"Updated \"%s\" to %s" : "Оновлено \"%s\" до %s",
"Repair warning: " : "Попередження відновлення:",
"Repair error: " : "Помилка відновлення:",
+ "Set log level to debug" : "Записувати дані для пошуку помилок в журнал",
+ "Reset log level" : "Скинути налаштування детальності журналу",
"Starting code integrity check" : "Початок перевірки цілісності коду",
"Finished code integrity check" : "Завершено перевірку цілісності коду",
"Following apps have been disabled: %s" : "Наступні додатки були вимкнені: %s",
diff --git a/core/l10n/uk.json b/core/l10n/uk.json
index 2f9f5d5e269..a8ce3552427 100644
--- a/core/l10n/uk.json
+++ b/core/l10n/uk.json
@@ -6,12 +6,16 @@
"Maintenance mode is kept active" : "Режим обслуговування залишається активним",
"Updating database schema" : "Оновлення схеми бази даних",
"Updated database" : "Базу даних оновлено",
+ "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Перевіряю, чи схема бази даних може бути оновлена (це може зайняти багато часу, залежно від розмірів бази даних)",
"Checked database schema update" : "Перевірено оновлення схеми бази даних",
"Checking updates of apps" : "Перевірка оновлень додатків",
+ "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Перевіряю, чи схема бази даних для %s може бути оновлена (це може зайняти багато часу, залежно від розмірів бази даних)",
"Checked database schema update for apps" : "Перевірено оновлення схеми бази даних для додатків",
"Updated \"%s\" to %s" : "Оновлено \"%s\" до %s",
"Repair warning: " : "Попередження відновлення:",
"Repair error: " : "Помилка відновлення:",
+ "Set log level to debug" : "Записувати дані для пошуку помилок в журнал",
+ "Reset log level" : "Скинути налаштування детальності журналу",
"Starting code integrity check" : "Початок перевірки цілісності коду",
"Finished code integrity check" : "Завершено перевірку цілісності коду",
"Following apps have been disabled: %s" : "Наступні додатки були вимкнені: %s",
diff --git a/lib/base.php b/lib/base.php
index b462a49fc9b..9db4a482f23 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -714,6 +714,9 @@ class OC {
try {
$cache = new \OC\Cache\File();
$cache->gc();
+ } catch (\OC\ServerNotAvailableException $e) {
+ // not a GC exception, pass it on
+ throw $e;
} catch (\Exception $e) {
// a GC exception should not prevent users from using OC,
// so log the exception
diff --git a/lib/l10n/cs_CZ.js b/lib/l10n/cs_CZ.js
index a68a1e0d627..9bef7503e92 100644
--- a/lib/l10n/cs_CZ.js
+++ b/lib/l10n/cs_CZ.js
@@ -37,7 +37,7 @@ OC.L10N.register(
"_%n hour ago_::_%n hours ago_" : ["před %n hodinou","před %n hodinami","před %n hodinami"],
"_%n minute ago_::_%n minutes ago_" : ["před %n minutou","před %n minutami","před %n minutami"],
"seconds ago" : "před pár sekundami",
- "web services under your control" : "webové služby pod Vaší kontrolou",
+ "web services under your control" : "webové služby pod vlastní kontrolou",
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s id: %s neexistuje. Povolte ho prosím ve svých nastaveních aplikací nebo kontaktujte svého administrátora.",
"Empty filename is not allowed" : "Prázdné jméno souboru není povoleno",
"Dot files are not allowed" : "Jména souborů začínající tečkou nejsou povolena",
diff --git a/lib/l10n/cs_CZ.json b/lib/l10n/cs_CZ.json
index a85998ff589..fa28e353325 100644
--- a/lib/l10n/cs_CZ.json
+++ b/lib/l10n/cs_CZ.json
@@ -35,7 +35,7 @@
"_%n hour ago_::_%n hours ago_" : ["před %n hodinou","před %n hodinami","před %n hodinami"],
"_%n minute ago_::_%n minutes ago_" : ["před %n minutou","před %n minutami","před %n minutami"],
"seconds ago" : "před pár sekundami",
- "web services under your control" : "webové služby pod Vaší kontrolou",
+ "web services under your control" : "webové služby pod vlastní kontrolou",
"Module with id: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul s id: %s neexistuje. Povolte ho prosím ve svých nastaveních aplikací nebo kontaktujte svého administrátora.",
"Empty filename is not allowed" : "Prázdné jméno souboru není povoleno",
"Dot files are not allowed" : "Jména souborů začínající tečkou nejsou povolena",
diff --git a/lib/l10n/hu_HU.js b/lib/l10n/hu_HU.js
index 626bd0c44a3..3c96c9770e2 100644
--- a/lib/l10n/hu_HU.js
+++ b/lib/l10n/hu_HU.js
@@ -87,6 +87,7 @@ OC.L10N.register(
"Sharing %s failed, because %s is not a member of the group %s" : "%s megosztása nem sikerült, mert %s felhasználó nem tagja a %s csoportnak",
"You need to provide a password to create a public link, only protected links are allowed" : "Meg kell adnia egy jelszót is, mert a nyilvános linkek csak jelszóval védetten használhatók",
"Sharing %s failed, because sharing with links is not allowed" : "%s megosztása nem sikerült, mert a linkekkel történő megosztás nincs engedélyezve",
+ "Not allowed to create a federated share with the same user" : "Azonos felhasználóval nem lehet létrehozni egyesített megosztást.",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s megosztása sikertelen, mert %s nem található, talán a szerver jelenleg nem elérhető.",
"Share type %s is not valid for %s" : "A %s megosztási típus nem érvényes %s-re",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Nem sikerült %s-re beállítani az elérési jogosultságokat, mert a megadottak túllépik a %s-re érvényes jogosultságokat",
diff --git a/lib/l10n/hu_HU.json b/lib/l10n/hu_HU.json
index dde921ce3b1..e73e82cc283 100644
--- a/lib/l10n/hu_HU.json
+++ b/lib/l10n/hu_HU.json
@@ -85,6 +85,7 @@
"Sharing %s failed, because %s is not a member of the group %s" : "%s megosztása nem sikerült, mert %s felhasználó nem tagja a %s csoportnak",
"You need to provide a password to create a public link, only protected links are allowed" : "Meg kell adnia egy jelszót is, mert a nyilvános linkek csak jelszóval védetten használhatók",
"Sharing %s failed, because sharing with links is not allowed" : "%s megosztása nem sikerült, mert a linkekkel történő megosztás nincs engedélyezve",
+ "Not allowed to create a federated share with the same user" : "Azonos felhasználóval nem lehet létrehozni egyesített megosztást.",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "%s megosztása sikertelen, mert %s nem található, talán a szerver jelenleg nem elérhető.",
"Share type %s is not valid for %s" : "A %s megosztási típus nem érvényes %s-re",
"Setting permissions for %s failed, because the permissions exceed permissions granted to %s" : "Nem sikerült %s-re beállítani az elérési jogosultságokat, mert a megadottak túllépik a %s-re érvényes jogosultságokat",
diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js
index c432b8c1301..ea276b76f1c 100644
--- a/lib/l10n/pl.js
+++ b/lib/l10n/pl.js
@@ -35,6 +35,7 @@ OC.L10N.register(
"_%n minute ago_::_%n minutes ago_" : ["%n minute temu","%n minut temu","%n minut temu"],
"seconds ago" : "sekund temu",
"web services under your control" : "Kontrolowane serwisy",
+ "File name contains at least one invalid character" : "Nazwa pliku zawiera co najmniej jeden nieprawidłowy znak",
"App directory already exists" : "Katalog aplikacji już isnieje",
"Can't create app folder. Please fix permissions. %s" : "Nie mogę utworzyć katalogu aplikacji. Proszę popraw uprawnienia. %s",
"No source specified when installing app" : "Nie określono źródła podczas instalacji aplikacji",
diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json
index b48d1c49f09..0314da202c3 100644
--- a/lib/l10n/pl.json
+++ b/lib/l10n/pl.json
@@ -33,6 +33,7 @@
"_%n minute ago_::_%n minutes ago_" : ["%n minute temu","%n minut temu","%n minut temu"],
"seconds ago" : "sekund temu",
"web services under your control" : "Kontrolowane serwisy",
+ "File name contains at least one invalid character" : "Nazwa pliku zawiera co najmniej jeden nieprawidłowy znak",
"App directory already exists" : "Katalog aplikacji już isnieje",
"Can't create app folder. Please fix permissions. %s" : "Nie mogę utworzyć katalogu aplikacji. Proszę popraw uprawnienia. %s",
"No source specified when installing app" : "Nie określono źródła podczas instalacji aplikacji",
diff --git a/lib/private/files/config/usermountcache.php b/lib/private/files/config/usermountcache.php
index 58e7e9d156d..78b19972787 100644
--- a/lib/private/files/config/usermountcache.php
+++ b/lib/private/files/config/usermountcache.php
@@ -24,6 +24,7 @@ namespace OC\Files\Config;
use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
use OC\Files\Filesystem;
+use OCA\Files_Sharing\SharedMount;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\Files\Config\ICachedMountInfo;
use OCP\Files\Config\IUserMountCache;
@@ -75,12 +76,16 @@ class UserMountCache implements IUserMountCache {
public function registerMounts(IUser $user, array $mounts) {
// filter out non-proper storages coming from unit tests
$mounts = array_filter($mounts, function (IMountPoint $mount) {
- return $mount->getStorage() && $mount->getStorage()->getCache();
+ return $mount instanceof SharedMount || $mount->getStorage() && $mount->getStorage()->getCache();
});
/** @var ICachedMountInfo[] $newMounts */
$newMounts = array_map(function (IMountPoint $mount) use ($user) {
$storage = $mount->getStorage();
- $rootId = (int)$storage->getCache()->getId('');
+ if ($storage->instanceOfStorage('\OC\Files\Storage\Shared')) {
+ $rootId = (int)$storage->getShare()['file_source'];
+ } else {
+ $rootId = (int)$storage->getCache()->getId('');
+ }
$storageId = (int)$storage->getStorageCache()->getNumericId();
// filter out any storages which aren't scanned yet since we aren't interested in files from those storages (yet)
if ($rootId === -1) {
diff --git a/lib/private/share20/defaultshareprovider.php b/lib/private/share20/defaultshareprovider.php
index dc5b47b0ab0..43dc6090a35 100644
--- a/lib/private/share20/defaultshareprovider.php
+++ b/lib/private/share20/defaultshareprovider.php
@@ -274,6 +274,10 @@ class DefaultShareProvider implements IShareProvider {
], IQueryBuilder::PARAM_INT_ARRAY)
)
)
+ ->andWhere($qb->expr()->orX(
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
+ ))
->orderBy('id');
$cursor = $qb->execute();
@@ -332,6 +336,10 @@ class DefaultShareProvider implements IShareProvider {
->where($qb->expr()->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE_USERGROUP)))
->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($recipient)))
->andWhere($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())))
+ ->andWhere($qb->expr()->orX(
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
+ ))
->execute();
$data = $stmt->fetch();
@@ -405,6 +413,10 @@ class DefaultShareProvider implements IShareProvider {
->where($qb->expr()->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE_USERGROUP)))
->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($recipient)))
->andWhere($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())))
+ ->andWhere($qb->expr()->orX(
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
+ ))
->setMaxResults(1)
->execute();
@@ -455,7 +467,11 @@ class DefaultShareProvider implements IShareProvider {
public function getSharesBy($userId, $shareType, $node, $reshares, $limit, $offset) {
$qb = $this->dbConn->getQueryBuilder();
$qb->select('*')
- ->from('share');
+ ->from('share')
+ ->andWhere($qb->expr()->orX(
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
+ ));
$qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter($shareType)));
@@ -523,7 +539,11 @@ class DefaultShareProvider implements IShareProvider {
\OCP\Share::SHARE_TYPE_LINK,
], IQueryBuilder::PARAM_INT_ARRAY)
)
- );
+ )
+ ->andWhere($qb->expr()->orX(
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
+ ));
$cursor = $qb->execute();
$data = $cursor->fetch();
@@ -564,7 +584,12 @@ class DefaultShareProvider implements IShareProvider {
$qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_USER)),
$qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_GROUP))
)
- )->execute();
+ )
+ ->andWhere($qb->expr()->orX(
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
+ ))
+ ->execute();
$shares = [];
while($data = $cursor->fetch()) {
@@ -597,8 +622,12 @@ class DefaultShareProvider implements IShareProvider {
}
$qb->setFirstResult($offset);
- $qb->where($qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_USER)));
- $qb->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($userId)));
+ $qb->where($qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_USER)))
+ ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($userId)))
+ ->andWhere($qb->expr()->orX(
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
+ ));
// Filter by node if provided
if ($node !== null) {
@@ -645,11 +674,15 @@ class DefaultShareProvider implements IShareProvider {
$groups = array_map(function(IGroup $group) { return $group->getGID(); }, $groups);
- $qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_GROUP)));
- $qb->andWhere($qb->expr()->in('share_with', $qb->createNamedParameter(
- $groups,
- IQueryBuilder::PARAM_STR_ARRAY
- )));
+ $qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_GROUP)))
+ ->andWhere($qb->expr()->in('share_with', $qb->createNamedParameter(
+ $groups,
+ IQueryBuilder::PARAM_STR_ARRAY
+ )))
+ ->andWhere($qb->expr()->orX(
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
+ ));
$cursor = $qb->execute();
while($data = $cursor->fetch()) {
@@ -691,6 +724,10 @@ class DefaultShareProvider implements IShareProvider {
->from('share')
->where($qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_LINK)))
->andWhere($qb->expr()->eq('token', $qb->createNamedParameter($token)))
+ ->andWhere($qb->expr()->orX(
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
+ ))
->execute();
$data = $cursor->fetch();
@@ -802,6 +839,10 @@ class DefaultShareProvider implements IShareProvider {
->where($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId())))
->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(self::SHARE_TYPE_USERGROUP)))
->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($userId)))
+ ->andWhere($qb->expr()->orX(
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
+ ))
->setMaxResults(1)
->execute();
diff --git a/lib/private/streamer.php b/lib/private/streamer.php
index 5fffa7ac368..23c191b68da 100644
--- a/lib/private/streamer.php
+++ b/lib/private/streamer.php
@@ -51,10 +51,6 @@ class Streamer {
public function sendHeaders($name){
$extension = $this->streamerInstance instanceof ZipStreamer ? '.zip' : '.tar';
$fullName = $name . $extension;
- // ZipStreamer does not escape name in Content-Disposition atm
- if ($this->streamerInstance instanceof ZipStreamer) {
- $fullName = rawurlencode($fullName);
- }
$this->streamerInstance->sendHeaders($fullName);
}
diff --git a/lib/private/util.php b/lib/private/util.php
index 6884e55c243..6f53be8446a 100644
--- a/lib/private/util.php
+++ b/lib/private/util.php
@@ -165,7 +165,7 @@ class OC_Util {
// install storage availability wrapper, before most other wrappers
\OC\Files\Filesystem::addStorageWrapper('oc_availability', function ($mountPoint, $storage) {
- if (!$storage->isLocal()) {
+ if (!$storage->instanceOfStorage('\OC\Files\Storage\Shared') && !$storage->isLocal()) {
return new \OC\Files\Storage\Wrapper\Availability(['storage' => $storage]);
}
return $storage;
@@ -726,7 +726,8 @@ class OC_Util {
'classes' => array(
'ZipArchive' => 'zip',
'DOMDocument' => 'dom',
- 'XMLWriter' => 'XMLWriter'
+ 'XMLWriter' => 'XMLWriter',
+ 'XMLReader' => 'XMLReader',
),
'functions' => [
'xml_parser_create' => 'libxml',
diff --git a/settings/js/old-apps.js b/settings/js/old-apps.js
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/settings/js/old-apps.js
+++ /dev/null
diff --git a/settings/l10n/cs_CZ.js b/settings/l10n/cs_CZ.js
index cb981c7a6e5..5eb82ca0239 100644
--- a/settings/l10n/cs_CZ.js
+++ b/settings/l10n/cs_CZ.js
@@ -73,6 +73,9 @@ OC.L10N.register(
"Disable" : "Zakázat",
"Enable" : "Povolit",
"Error while enabling app" : "Chyba při povolování aplikace",
+ "Error: this app cannot be enabled because it makes the server unstable" : "Chyba: tuto aplikaci nelze zapnout, protože způsobuje nestabilitu serveru",
+ "Error: could not disable broken app" : "Chyba: nezdařilo se vypnout rozbitou aplikaci",
+ "Error while disabling broken app" : "Chyba při vypínání rozbité aplikace",
"Updating...." : "Aktualizuji...",
"Error while updating app" : "Chyba při aktualizaci aplikace",
"Updated" : "Aktualizováno",
diff --git a/settings/l10n/cs_CZ.json b/settings/l10n/cs_CZ.json
index 25c60d52fe9..197e6f2e1b6 100644
--- a/settings/l10n/cs_CZ.json
+++ b/settings/l10n/cs_CZ.json
@@ -71,6 +71,9 @@
"Disable" : "Zakázat",
"Enable" : "Povolit",
"Error while enabling app" : "Chyba při povolování aplikace",
+ "Error: this app cannot be enabled because it makes the server unstable" : "Chyba: tuto aplikaci nelze zapnout, protože způsobuje nestabilitu serveru",
+ "Error: could not disable broken app" : "Chyba: nezdařilo se vypnout rozbitou aplikaci",
+ "Error while disabling broken app" : "Chyba při vypínání rozbité aplikace",
"Updating...." : "Aktualizuji...",
"Error while updating app" : "Chyba při aktualizaci aplikace",
"Updated" : "Aktualizováno",
diff --git a/settings/l10n/da.js b/settings/l10n/da.js
index 343bb07b80c..2df6c04e2a1 100644
--- a/settings/l10n/da.js
+++ b/settings/l10n/da.js
@@ -220,10 +220,12 @@ OC.L10N.register(
"Upload new" : "Upload nyt",
"Remove image" : "Fjern billede",
"Cancel" : "Annuller",
+ "Choose as profile picture" : "Vælg et profilbillede",
"Full name" : "Fulde navn",
"No display name set" : "Der er ikke angivet skærmnavn",
"Email" : "E-mail",
"Your email address" : "Din e-mailadresse",
+ "For password recovery and notifications" : "Angiv en e-mailadresse for at aktivere gendannelse af adgangskode og modtage notifikationer",
"No email address set" : "Der er ikke angivet e-mailadresse",
"You are member of the following groups:" : "Der er medlem af følgende grupper:",
"Password" : "Kodeord",
diff --git a/settings/l10n/da.json b/settings/l10n/da.json
index d9f08cf2df7..315c2ea4d1f 100644
--- a/settings/l10n/da.json
+++ b/settings/l10n/da.json
@@ -218,10 +218,12 @@
"Upload new" : "Upload nyt",
"Remove image" : "Fjern billede",
"Cancel" : "Annuller",
+ "Choose as profile picture" : "Vælg et profilbillede",
"Full name" : "Fulde navn",
"No display name set" : "Der er ikke angivet skærmnavn",
"Email" : "E-mail",
"Your email address" : "Din e-mailadresse",
+ "For password recovery and notifications" : "Angiv en e-mailadresse for at aktivere gendannelse af adgangskode og modtage notifikationer",
"No email address set" : "Der er ikke angivet e-mailadresse",
"You are member of the following groups:" : "Der er medlem af følgende grupper:",
"Password" : "Kodeord",
diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js
index 40a9eb35eb2..c263d7215e2 100644
--- a/settings/l10n/de_DE.js
+++ b/settings/l10n/de_DE.js
@@ -91,6 +91,7 @@ OC.L10N.register(
"Strong password" : "Starkes Passwort",
"Groups" : "Gruppen",
"Unable to delete {objName}" : "Löschen von {objName} nicht möglich",
+ "Error creating group: {message}" : "Fehler beim Erstellen einer Gruppe: {message}",
"A valid group name must be provided" : "Ein gültiger Gruppenname muss angegeben werden",
"deleted {groupName}" : "{groupName} gelöscht",
"undo" : "rückgängig machen",
@@ -100,6 +101,7 @@ OC.L10N.register(
"add group" : "Gruppe hinzufügen",
"Changing the password will result in data loss, because data recovery is not available for this user" : "Die Änderung des Passworts führt zu Datenverlust, weil die Datenwiederherstellung für diesen Benutzer nicht verfügbar ist",
"A valid username must be provided" : "Es muss ein gültiger Benutzername angegeben werden",
+ "Error creating user: {message}" : "Fehler beim Erstellen eines Benutzers: {message}",
"A valid password must be provided" : "Es muss ein gültiges Passwort angegeben werden",
"A valid email must be provided" : "Es muss eine gültige E-Mail-Adresse angegeben werden",
"__language_name__" : "Deutsch (Förmlich: Sie)",
diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json
index 0749bb8553a..93e8d731de2 100644
--- a/settings/l10n/de_DE.json
+++ b/settings/l10n/de_DE.json
@@ -89,6 +89,7 @@
"Strong password" : "Starkes Passwort",
"Groups" : "Gruppen",
"Unable to delete {objName}" : "Löschen von {objName} nicht möglich",
+ "Error creating group: {message}" : "Fehler beim Erstellen einer Gruppe: {message}",
"A valid group name must be provided" : "Ein gültiger Gruppenname muss angegeben werden",
"deleted {groupName}" : "{groupName} gelöscht",
"undo" : "rückgängig machen",
@@ -98,6 +99,7 @@
"add group" : "Gruppe hinzufügen",
"Changing the password will result in data loss, because data recovery is not available for this user" : "Die Änderung des Passworts führt zu Datenverlust, weil die Datenwiederherstellung für diesen Benutzer nicht verfügbar ist",
"A valid username must be provided" : "Es muss ein gültiger Benutzername angegeben werden",
+ "Error creating user: {message}" : "Fehler beim Erstellen eines Benutzers: {message}",
"A valid password must be provided" : "Es muss ein gültiges Passwort angegeben werden",
"A valid email must be provided" : "Es muss eine gültige E-Mail-Adresse angegeben werden",
"__language_name__" : "Deutsch (Förmlich: Sie)",
diff --git a/settings/l10n/es.js b/settings/l10n/es.js
index d728feb50eb..f376e818062 100644
--- a/settings/l10n/es.js
+++ b/settings/l10n/es.js
@@ -73,6 +73,9 @@ OC.L10N.register(
"Disable" : "Desactivar",
"Enable" : "Activar",
"Error while enabling app" : "Error mientras se activaba la aplicación",
+ "Error: this app cannot be enabled because it makes the server unstable" : "Error: Esta App no puede habilitarse porque el servidor se volveria inestable.",
+ "Error: could not disable broken app" : "Error: No puedo deshabilitar la App dañada.",
+ "Error while disabling broken app" : "Error mientras deshabilitaba la App dañada",
"Updating...." : "Actualizando...",
"Error while updating app" : "Error mientras se actualizaba la aplicación",
"Updated" : "Actualizado",
diff --git a/settings/l10n/es.json b/settings/l10n/es.json
index 094fe6bff3b..0a23eb79a6f 100644
--- a/settings/l10n/es.json
+++ b/settings/l10n/es.json
@@ -71,6 +71,9 @@
"Disable" : "Desactivar",
"Enable" : "Activar",
"Error while enabling app" : "Error mientras se activaba la aplicación",
+ "Error: this app cannot be enabled because it makes the server unstable" : "Error: Esta App no puede habilitarse porque el servidor se volveria inestable.",
+ "Error: could not disable broken app" : "Error: No puedo deshabilitar la App dañada.",
+ "Error while disabling broken app" : "Error mientras deshabilitaba la App dañada",
"Updating...." : "Actualizando...",
"Error while updating app" : "Error mientras se actualizaba la aplicación",
"Updated" : "Actualizado",
diff --git a/settings/l10n/sv.js b/settings/l10n/sv.js
index 56a74b43153..dc806c534c4 100644
--- a/settings/l10n/sv.js
+++ b/settings/l10n/sv.js
@@ -5,6 +5,7 @@ OC.L10N.register(
"Redis" : "Redis",
"Security & setup warnings" : "Säkerhet & systemvarningar",
"Sharing" : "Dela",
+ "Server-side encryption" : "Serverkryptering",
"External Storage" : "Extern lagring",
"Cron" : "Cron",
"Email server" : "E-post server",
@@ -31,8 +32,8 @@ OC.L10N.register(
"Unable to delete group." : "Lyckades inte radera grupp.",
"log-level out of allowed range" : "logg-nivå utanför tillåtet område",
"Saved" : "Sparad",
- "test email settings" : "testa e-post inställningar",
- "Email sent" : "E-post skickat",
+ "test email settings" : "Testa e-post inställningar",
+ "Email sent" : "E-post skickad",
"You need to set your user email before being able to send test emails." : "Du behöver ställa in din användares e-postadress före du kan skicka test e-post.",
"Invalid mail address" : "Ogiltig e-postadress",
"Unable to create user." : "Kan inte skapa användare.",
@@ -100,7 +101,7 @@ OC.L10N.register(
"NT LAN Manager" : "NT LAN Manager",
"SSL" : "SSL",
"TLS" : "TLS",
- "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." : "Lär-bara konfigureringen har blivit aktiv. Detta förhindrar att några konfigureringar kan sättas via web-gränssnittet.",
+ "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." : "Läs-bara konfigureringen har blivit aktiv. Detta förhindrar att några konfigureringar kan sättas via web-gränssnittet.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP är tydligen inställd för att rensa inline doc block. Detta kommer att göra flera kärnapplikationer otillgängliga.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Detta orsakas troligtvis av en cache/accelerator som t ex Zend OPchache eller eAccelerator.",
"Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Din server använder Microsoft Windows. Vi rekommenderar starkt Linux för en optimal användarerfarenhet.",
@@ -110,7 +111,7 @@ OC.L10N.register(
"We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Vi rekommenderar starkt att installera de nödvändiga paketen på ditt system för att stödja en av följande språkversioner: %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\")" : "Om din installation inte installerades på roten av domänen och använder system cron så kan det uppstå problem med URL-genereringen. För att undvika dessa problem, var vänlig sätt \"overwrite.cli.url\"-inställningen i din config.php-fil till webbrotsökvägen av din installation (Föreslagen: \"%s\")",
"Please double check the <a target=\"_blank\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Vänligen dubbelkolla <a target=\"_blank\" href=\"%s\">installationsguiden ↗</a>, och kolla efter fel eller varningar i <a href=\"#log-section\">loggen</a>.",
- "All checks passed." : "Alla kontroller lyckades.",
+ "All checks passed." : "Alla kontroller lyckades!",
"Allow apps to use the Share API" : "Tillåt applikationer att använda delat API",
"Allow users to share via link" : "Tillåt användare att dela via länk",
"Enforce password protection" : "Tillämpa lösenordskydd",
@@ -127,7 +128,7 @@ OC.L10N.register(
"These groups will still be able to receive shares, but not to initiate them." : "Dessa grupper kommer fortfarande kunna ta emot delningar, men inte skapa delningar.",
"Last cron job execution: %s." : "Sista cron kördes %s",
"Last cron job execution: %s. Something seems wrong." : "Sista cron kördes %s. Något verkar vara fel.",
- "Cron was not executed yet!" : "Cron kördes inte ännu!",
+ "Cron was not executed yet!" : "Cron har inte körts ännu!",
"Execute one task with each page loaded" : "Exekvera en uppgift vid varje sidladdning",
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php är registrerad som en webcron service att ropa på cron.php varje 15 minuter över http.",
"Use system's cron service to call the cron.php file every 15 minutes." : "Använd systemets cron-tjänst för att anropa cron.php var 15:e minut.",
@@ -191,9 +192,10 @@ OC.L10N.register(
"iOS app" : "iOS-app",
"If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Om du vill stödja projektet\n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">delta i utevcklingen</a>\n⇥⇥eller\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">sprid det vidare</a>!",
"Show First Run Wizard again" : "Visa Första uppstarts-guiden igen",
+ "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Utvecklad av {communityopen}ownCloud community{linkclose}, {githubopen}källkoden {linkclose} är licensierad under {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.",
"Show storage location" : "Visa lagringsplats",
"Show last log in" : "Visa senaste inloggning",
- "Show user backend" : "Visa användar-back-end",
+ "Show user backend" : "Visa användar-backend",
"Send email to new user" : "Skicka e-post till ny användare",
"Show email address" : "Visa e-postadress",
"Username" : "Användarnamn",
diff --git a/settings/l10n/sv.json b/settings/l10n/sv.json
index b1ff144c9ce..ef01f7b4304 100644
--- a/settings/l10n/sv.json
+++ b/settings/l10n/sv.json
@@ -3,6 +3,7 @@
"Redis" : "Redis",
"Security & setup warnings" : "Säkerhet & systemvarningar",
"Sharing" : "Dela",
+ "Server-side encryption" : "Serverkryptering",
"External Storage" : "Extern lagring",
"Cron" : "Cron",
"Email server" : "E-post server",
@@ -29,8 +30,8 @@
"Unable to delete group." : "Lyckades inte radera grupp.",
"log-level out of allowed range" : "logg-nivå utanför tillåtet område",
"Saved" : "Sparad",
- "test email settings" : "testa e-post inställningar",
- "Email sent" : "E-post skickat",
+ "test email settings" : "Testa e-post inställningar",
+ "Email sent" : "E-post skickad",
"You need to set your user email before being able to send test emails." : "Du behöver ställa in din användares e-postadress före du kan skicka test e-post.",
"Invalid mail address" : "Ogiltig e-postadress",
"Unable to create user." : "Kan inte skapa användare.",
@@ -98,7 +99,7 @@
"NT LAN Manager" : "NT LAN Manager",
"SSL" : "SSL",
"TLS" : "TLS",
- "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." : "Lär-bara konfigureringen har blivit aktiv. Detta förhindrar att några konfigureringar kan sättas via web-gränssnittet.",
+ "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." : "Läs-bara konfigureringen har blivit aktiv. Detta förhindrar att några konfigureringar kan sättas via web-gränssnittet.",
"PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP är tydligen inställd för att rensa inline doc block. Detta kommer att göra flera kärnapplikationer otillgängliga.",
"This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Detta orsakas troligtvis av en cache/accelerator som t ex Zend OPchache eller eAccelerator.",
"Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Din server använder Microsoft Windows. Vi rekommenderar starkt Linux för en optimal användarerfarenhet.",
@@ -108,7 +109,7 @@
"We strongly suggest installing the required packages on your system to support one of the following locales: %s." : "Vi rekommenderar starkt att installera de nödvändiga paketen på ditt system för att stödja en av följande språkversioner: %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\")" : "Om din installation inte installerades på roten av domänen och använder system cron så kan det uppstå problem med URL-genereringen. För att undvika dessa problem, var vänlig sätt \"overwrite.cli.url\"-inställningen i din config.php-fil till webbrotsökvägen av din installation (Föreslagen: \"%s\")",
"Please double check the <a target=\"_blank\" href=\"%s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"#log-section\">log</a>." : "Vänligen dubbelkolla <a target=\"_blank\" href=\"%s\">installationsguiden ↗</a>, och kolla efter fel eller varningar i <a href=\"#log-section\">loggen</a>.",
- "All checks passed." : "Alla kontroller lyckades.",
+ "All checks passed." : "Alla kontroller lyckades!",
"Allow apps to use the Share API" : "Tillåt applikationer att använda delat API",
"Allow users to share via link" : "Tillåt användare att dela via länk",
"Enforce password protection" : "Tillämpa lösenordskydd",
@@ -125,7 +126,7 @@
"These groups will still be able to receive shares, but not to initiate them." : "Dessa grupper kommer fortfarande kunna ta emot delningar, men inte skapa delningar.",
"Last cron job execution: %s." : "Sista cron kördes %s",
"Last cron job execution: %s. Something seems wrong." : "Sista cron kördes %s. Något verkar vara fel.",
- "Cron was not executed yet!" : "Cron kördes inte ännu!",
+ "Cron was not executed yet!" : "Cron har inte körts ännu!",
"Execute one task with each page loaded" : "Exekvera en uppgift vid varje sidladdning",
"cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "cron.php är registrerad som en webcron service att ropa på cron.php varje 15 minuter över http.",
"Use system's cron service to call the cron.php file every 15 minutes." : "Använd systemets cron-tjänst för att anropa cron.php var 15:e minut.",
@@ -189,9 +190,10 @@
"iOS app" : "iOS-app",
"If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Om du vill stödja projektet\n⇥⇥<a href=\"https://owncloud.org/contribute\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">delta i utevcklingen</a>\n⇥⇥eller\n⇥⇥<a href=\"https://owncloud.org/promote\"\n⇥⇥⇥target=\"_blank\" rel=\"noreferrer\">sprid det vidare</a>!",
"Show First Run Wizard again" : "Visa Första uppstarts-guiden igen",
+ "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Utvecklad av {communityopen}ownCloud community{linkclose}, {githubopen}källkoden {linkclose} är licensierad under {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.",
"Show storage location" : "Visa lagringsplats",
"Show last log in" : "Visa senaste inloggning",
- "Show user backend" : "Visa användar-back-end",
+ "Show user backend" : "Visa användar-backend",
"Send email to new user" : "Skicka e-post till ny användare",
"Show email address" : "Visa e-postadress",
"Username" : "Användarnamn",