summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/dav/lib/caldav/caldavbackend.php4
-rw-r--r--apps/dav/lib/carddav/carddavbackend.php4
-rw-r--r--apps/dav/tests/unit/carddav/carddavbackendtest.php7
-rw-r--r--apps/encryption/l10n/es.js2
-rw-r--r--apps/encryption/l10n/es.json2
-rw-r--r--apps/encryption/lib/crypto/decryptall.php57
-rw-r--r--apps/encryption/lib/keymanager.php2
-rw-r--r--apps/encryption/tests/lib/crypto/decryptalltest.php14
-rw-r--r--apps/federation/l10n/es.js11
-rw-r--r--apps/federation/l10n/es.json9
-rw-r--r--apps/files/l10n/nb_NO.js2
-rw-r--r--apps/files/l10n/nb_NO.json2
-rw-r--r--apps/files_external/service/dbconfigservice.php58
-rwxr-xr-xapps/files_external/tests/env/stop-swift-ceph.sh2
-rw-r--r--apps/files_sharing/api/share20ocs.php16
-rw-r--r--apps/files_sharing/l10n/es.js10
-rw-r--r--apps/files_sharing/l10n/es.json10
-rw-r--r--apps/files_sharing/tests/api/share20ocstest.php4
-rw-r--r--apps/systemtags/l10n/es.js14
-rw-r--r--apps/systemtags/l10n/es.json14
-rw-r--r--build/integration/features/sharing-v1.feature21
-rw-r--r--core/css/apps.css2
-rw-r--r--core/css/inputs.css4
-rw-r--r--core/css/mobile.css4
-rw-r--r--core/css/styles.css3
-rw-r--r--core/img/appstore.svg131
-rw-r--r--core/img/desktopapp.svg35
-rw-r--r--core/img/googleplay.pngbin22758 -> 17919 bytes
-rw-r--r--core/js/l10n.js18
-rw-r--r--core/js/tests/specs/l10nSpec.js8
-rw-r--r--core/l10n/ar.js2
-rw-r--r--core/l10n/ar.json2
-rw-r--r--core/l10n/en_GB.js1
-rw-r--r--core/l10n/en_GB.json1
-rw-r--r--core/l10n/es.js6
-rw-r--r--core/l10n/es.json6
-rw-r--r--core/l10n/nb_NO.js3
-rw-r--r--core/l10n/nb_NO.json3
-rw-r--r--core/l10n/pt_BR.js1
-rw-r--r--core/l10n/pt_BR.json1
-rw-r--r--issue_template.md2
-rw-r--r--lib/l10n/nb_NO.js2
-rw-r--r--lib/l10n/nb_NO.json2
-rw-r--r--lib/private/appframework/db/db.php3
-rw-r--r--lib/private/backgroundjob/joblist.php13
-rw-r--r--lib/private/comments/manager.php15
-rw-r--r--lib/private/db/querybuilder/querybuilder.php12
-rw-r--r--lib/private/files/cache/homepropagator.php50
-rw-r--r--lib/private/files/cache/scanner.php6
-rw-r--r--lib/private/files/storage/home.php18
-rw-r--r--lib/private/template/jsresourcelocator.php21
-rw-r--r--lib/public/appframework/db/mapper.php2
-rw-r--r--lib/public/db/querybuilder/iquerybuilder.php12
-rw-r--r--lib/public/idbconnection.php3
-rw-r--r--settings/css/settings.css4
-rw-r--r--settings/l10n/sv.js4
-rw-r--r--settings/l10n/sv.json4
-rw-r--r--settings/templates/personal.php2
-rw-r--r--tests/lib/appframework/db/mappertestutility.php2
-rw-r--r--tests/lib/db/connection.php3
-rw-r--r--tests/lib/db/querybuilder/expressionbuildertest.php2
-rw-r--r--tests/lib/repair/cleantags.php5
62 files changed, 401 insertions, 282 deletions
diff --git a/apps/dav/lib/caldav/caldavbackend.php b/apps/dav/lib/caldav/caldavbackend.php
index 7f6810fb1e2..70dbccb8745 100644
--- a/apps/dav/lib/caldav/caldavbackend.php
+++ b/apps/dav/lib/caldav/caldavbackend.php
@@ -607,7 +607,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
->values([
'calendarid' => $query->createNamedParameter($calendarId),
'uri' => $query->createNamedParameter($objectUri),
- 'calendardata' => $query->createNamedParameter($calendarData, \PDO::PARAM_LOB),
+ 'calendardata' => $query->createNamedParameter($calendarData, IQueryBuilder::PARAM_LOB),
'lastmodified' => $query->createNamedParameter(time()),
'etag' => $query->createNamedParameter($extraData['etag']),
'size' => $query->createNamedParameter($extraData['size']),
@@ -646,7 +646,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$query = $this->db->getQueryBuilder();
$query->update('calendarobjects')
- ->set('calendardata', $query->createNamedParameter($calendarData, \PDO::PARAM_LOB))
+ ->set('calendardata', $query->createNamedParameter($calendarData, IQueryBuilder::PARAM_LOB))
->set('lastmodified', $query->createNamedParameter(time()))
->set('etag', $query->createNamedParameter($extraData['etag']))
->set('size', $query->createNamedParameter($extraData['size']))
diff --git a/apps/dav/lib/carddav/carddavbackend.php b/apps/dav/lib/carddav/carddavbackend.php
index 61bdec52479..a109e8bde4a 100644
--- a/apps/dav/lib/carddav/carddavbackend.php
+++ b/apps/dav/lib/carddav/carddavbackend.php
@@ -489,7 +489,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
$query = $this->db->getQueryBuilder();
$query->insert('cards')
->values([
- 'carddata' => $query->createNamedParameter($cardData, \PDO::PARAM_LOB),
+ 'carddata' => $query->createNamedParameter($cardData, IQueryBuilder::PARAM_LOB),
'uri' => $query->createNamedParameter($cardUri),
'lastmodified' => $query->createNamedParameter(time()),
'addressbookid' => $query->createNamedParameter($addressBookId),
@@ -542,7 +542,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
$etag = md5($cardData);
$query = $this->db->getQueryBuilder();
$query->update('cards')
- ->set('carddata', $query->createNamedParameter($cardData, \PDO::PARAM_LOB))
+ ->set('carddata', $query->createNamedParameter($cardData, IQueryBuilder::PARAM_LOB))
->set('lastmodified', $query->createNamedParameter(time()))
->set('size', $query->createNamedParameter(strlen($cardData)))
->set('etag', $query->createNamedParameter($etag))
diff --git a/apps/dav/tests/unit/carddav/carddavbackendtest.php b/apps/dav/tests/unit/carddav/carddavbackendtest.php
index 401041d6e39..2f96fc5da90 100644
--- a/apps/dav/tests/unit/carddav/carddavbackendtest.php
+++ b/apps/dav/tests/unit/carddav/carddavbackendtest.php
@@ -26,6 +26,7 @@ use InvalidArgumentException;
use OCA\DAV\CardDAV\AddressBook;
use OCA\DAV\CardDAV\CardDavBackend;
use OCA\DAV\Connector\Sabre\Principal;
+use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
use Sabre\DAV\PropPatch;
use Sabre\VObject\Component\VCard;
@@ -480,7 +481,7 @@ class CardDavBackendTest extends TestCase {
->values(
[
'addressbookid' => $query->createNamedParameter(0),
- 'carddata' => $query->createNamedParameter($vCards[$i]->serialize(), \PDO::PARAM_LOB),
+ 'carddata' => $query->createNamedParameter($vCards[$i]->serialize(), IQueryBuilder::PARAM_LOB),
'uri' => $query->createNamedParameter('uri' . $i),
'lastmodified' => $query->createNamedParameter(time()),
'etag' => $query->createNamedParameter('etag' . $i),
@@ -558,7 +559,7 @@ class CardDavBackendTest extends TestCase {
->values(
[
'addressbookid' => $query->createNamedParameter(1),
- 'carddata' => $query->createNamedParameter('carddata', \PDO::PARAM_LOB),
+ 'carddata' => $query->createNamedParameter('carddata', IQueryBuilder::PARAM_LOB),
'uri' => $query->createNamedParameter('uri'),
'lastmodified' => $query->createNamedParameter(5489543),
'etag' => $query->createNamedParameter('etag'),
@@ -586,7 +587,7 @@ class CardDavBackendTest extends TestCase {
->values(
[
'addressbookid' => $query->createNamedParameter($i),
- 'carddata' => $query->createNamedParameter('carddata' . $i, \PDO::PARAM_LOB),
+ 'carddata' => $query->createNamedParameter('carddata' . $i, IQueryBuilder::PARAM_LOB),
'uri' => $query->createNamedParameter('uri' . $i),
'lastmodified' => $query->createNamedParameter(5489543),
'etag' => $query->createNamedParameter('etag' . $i),
diff --git a/apps/encryption/l10n/es.js b/apps/encryption/l10n/es.js
index bdaeabb68cb..ec15af8fc2f 100644
--- a/apps/encryption/l10n/es.js
+++ b/apps/encryption/l10n/es.js
@@ -25,6 +25,8 @@ OC.L10N.register(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "La clave privada no es válida para la app de cifrado. Por favor, actualiza la contraseña de tu clave privada en tus ajustes personales para recuperar el acceso a tus archivos cifrados.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La app de cifrado está habilitada pero sus claves no se han inicializado, por favor, cierre la sesión y vuelva a iniciarla de nuevo.",
"Encryption App is enabled and ready" : "Cifrado App está habilitada y lista",
+ "Bad Signature" : "Firma errónea",
+ "Missing Signature" : "No se encuentra la firma",
"one-time password for server-side-encryption" : "Contraseña de un solo uso para el cifrado en el lado servidor",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No fue posible descifrar este archivo, probablemente se trate de un archivo compartido. Solicite al propietario del mismo que vuelva a compartirlo con usted.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No se puede leer este archivo, probablemente sea un archivo compartido. Consulte con el propietario del mismo y que lo vuelva a compartir con usted.",
diff --git a/apps/encryption/l10n/es.json b/apps/encryption/l10n/es.json
index 3eb7994eb9d..12d0c6188e7 100644
--- a/apps/encryption/l10n/es.json
+++ b/apps/encryption/l10n/es.json
@@ -23,6 +23,8 @@
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." : "La clave privada no es válida para la app de cifrado. Por favor, actualiza la contraseña de tu clave privada en tus ajustes personales para recuperar el acceso a tus archivos cifrados.",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" : "La app de cifrado está habilitada pero sus claves no se han inicializado, por favor, cierre la sesión y vuelva a iniciarla de nuevo.",
"Encryption App is enabled and ready" : "Cifrado App está habilitada y lista",
+ "Bad Signature" : "Firma errónea",
+ "Missing Signature" : "No se encuentra la firma",
"one-time password for server-side-encryption" : "Contraseña de un solo uso para el cifrado en el lado servidor",
"Can not decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No fue posible descifrar este archivo, probablemente se trate de un archivo compartido. Solicite al propietario del mismo que vuelva a compartirlo con usted.",
"Can not read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No se puede leer este archivo, probablemente sea un archivo compartido. Consulte con el propietario del mismo y que lo vuelva a compartir con usted.",
diff --git a/apps/encryption/lib/crypto/decryptall.php b/apps/encryption/lib/crypto/decryptall.php
index fa9a3e0db95..694aba2fb89 100644
--- a/apps/encryption/lib/crypto/decryptall.php
+++ b/apps/encryption/lib/crypto/decryptall.php
@@ -81,35 +81,42 @@ class DecryptAll {
public function prepare(InputInterface $input, OutputInterface $output, $user) {
$question = new Question('Please enter the recovery key password: ');
- $recoveryKeyId = $this->keyManager->getRecoveryKeyId();
- if (!empty($user)) {
- $output->writeln('You can only decrypt the users files if you know');
- $output->writeln('the users password or if he activated the recovery key.');
- $output->writeln('');
- $questionUseLoginPassword = new ConfirmationQuestion(
- 'Do you want to use the users login password to decrypt all files? (y/n) ',
- false
- );
- $useLoginPassword = $this->questionHelper->ask($input, $output, $questionUseLoginPassword);
- if ($useLoginPassword) {
- $question = new Question('Please enter the user\'s login password: ');
- } else if ($this->util->isRecoveryEnabledForUser($user) === false) {
- $output->writeln('No recovery key available for user ' . $user);
- return false;
+ if($this->util->isMasterKeyEnabled()) {
+ $output->writeln('Use master key to decrypt all files');
+ $user = $this->keyManager->getMasterKeyId();
+ $password =$this->keyManager->getMasterKeyPassword();
+ } else {
+ $recoveryKeyId = $this->keyManager->getRecoveryKeyId();
+ if (!empty($user)) {
+ $output->writeln('You can only decrypt the users files if you know');
+ $output->writeln('the users password or if he activated the recovery key.');
+ $output->writeln('');
+ $questionUseLoginPassword = new ConfirmationQuestion(
+ 'Do you want to use the users login password to decrypt all files? (y/n) ',
+ false
+ );
+ $useLoginPassword = $this->questionHelper->ask($input, $output, $questionUseLoginPassword);
+ if ($useLoginPassword) {
+ $question = new Question('Please enter the user\'s login password: ');
+ } else if ($this->util->isRecoveryEnabledForUser($user) === false) {
+ $output->writeln('No recovery key available for user ' . $user);
+ return false;
+ } else {
+ $user = $recoveryKeyId;
+ }
} else {
+ $output->writeln('You can only decrypt the files of all users if the');
+ $output->writeln('recovery key is enabled by the admin and activated by the users.');
+ $output->writeln('');
$user = $recoveryKeyId;
}
- } else {
- $output->writeln('You can only decrypt the files of all users if the');
- $output->writeln('recovery key is enabled by the admin and activated by the users.');
- $output->writeln('');
- $user = $recoveryKeyId;
+
+ $question->setHidden(true);
+ $question->setHiddenFallback(false);
+ $password = $this->questionHelper->ask($input, $output, $question);
}
- $question->setHidden(true);
- $question->setHiddenFallback(false);
- $password = $this->questionHelper->ask($input, $output, $question);
$privateKey = $this->getPrivateKey($user, $password);
if ($privateKey !== false) {
$this->updateSession($user, $privateKey);
@@ -132,9 +139,13 @@ class DecryptAll {
*/
protected function getPrivateKey($user, $password) {
$recoveryKeyId = $this->keyManager->getRecoveryKeyId();
+ $masterKeyId = $this->keyManager->getMasterKeyId();
if ($user === $recoveryKeyId) {
$recoveryKey = $this->keyManager->getSystemPrivateKey($recoveryKeyId);
$privateKey = $this->crypt->decryptPrivateKey($recoveryKey, $password);
+ } elseif ($user === $masterKeyId) {
+ $masterKey = $this->keyManager->getSystemPrivateKey($masterKeyId);
+ $privateKey = $this->crypt->decryptPrivateKey($masterKey, $password, $masterKeyId);
} else {
$userKey = $this->keyManager->getPrivateKey($user);
$privateKey = $this->crypt->decryptPrivateKey($userKey, $password, $user);
diff --git a/apps/encryption/lib/keymanager.php b/apps/encryption/lib/keymanager.php
index 0c957e12012..4169569d8b2 100644
--- a/apps/encryption/lib/keymanager.php
+++ b/apps/encryption/lib/keymanager.php
@@ -658,7 +658,7 @@ class KeyManager {
* @return string
* @throws \Exception
*/
- protected function getMasterKeyPassword() {
+ public function getMasterKeyPassword() {
$password = $this->config->getSystemValue('secret');
if (empty($password)){
throw new \Exception('Can not get secret from ownCloud instance');
diff --git a/apps/encryption/tests/lib/crypto/decryptalltest.php b/apps/encryption/tests/lib/crypto/decryptalltest.php
index 84819aa73bd..0945692e427 100644
--- a/apps/encryption/tests/lib/crypto/decryptalltest.php
+++ b/apps/encryption/tests/lib/crypto/decryptalltest.php
@@ -87,7 +87,7 @@ class DecryptAllTest extends TestCase {
* @param string $user
* @param string $recoveryKeyId
*/
- public function testGetPrivateKey($user, $recoveryKeyId) {
+ public function testGetPrivateKey($user, $recoveryKeyId, $masterKeyId) {
$password = 'passwd';
$recoveryKey = 'recoveryKey';
$userKey = 'userKey';
@@ -102,6 +102,13 @@ class DecryptAllTest extends TestCase {
$this->keyManager->expects($this->never())->method('getPrivateKey');
$this->crypt->expects($this->once())->method('decryptPrivateKey')
->with($recoveryKey, $password)->willReturn($unencryptedKey);
+ } elseif ($user === $masterKeyId) {
+ $this->keyManager->expects($this->once())->method('getSystemPrivateKey')
+ ->with($masterKeyId)->willReturn($masterKey);
+ $this->keyManager->expects($this->never())->method('getPrivateKey');
+ $this->crypt->expects($this->once())->method('decryptPrivateKey')
+ ->with($masterKey, $password, $masterKeyId)->willReturn($unencryptedKey);
+
} else {
$this->keyManager->expects($this->never())->method('getSystemPrivateKey');
$this->keyManager->expects($this->once())->method('getPrivateKey')
@@ -117,8 +124,9 @@ class DecryptAllTest extends TestCase {
public function dataTestGetPrivateKey() {
return [
- ['user1', 'recoveryKey'],
- ['recoveryKeyId', 'recoveryKeyId']
+ ['user1', 'recoveryKey', 'masterKeyId'],
+ ['recoveryKeyId', 'recoveryKeyId', 'masterKeyId'],
+ ['masterKeyId', 'masterKeyId', 'masterKeyId']
];
}
diff --git a/apps/federation/l10n/es.js b/apps/federation/l10n/es.js
new file mode 100644
index 00000000000..fb899bb0fc2
--- /dev/null
+++ b/apps/federation/l10n/es.js
@@ -0,0 +1,11 @@
+OC.L10N.register(
+ "federation",
+ {
+ "Server added to the list of trusted ownClouds" : "Servidor agregado a la lista de ownClouds en los que se confía",
+ "Server is already in the list of trusted servers." : "El servidor ya está en la lista de servidores en los que se confía.",
+ "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."
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/es.json b/apps/federation/l10n/es.json
new file mode 100644
index 00000000000..f4797b10ee4
--- /dev/null
+++ b/apps/federation/l10n/es.json
@@ -0,0 +1,9 @@
+{ "translations": {
+ "Server added to the list of trusted ownClouds" : "Servidor agregado a la lista de ownClouds en los que se confía",
+ "Server is already in the list of trusted servers." : "El servidor ya está en la lista de servidores en los que se confía.",
+ "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."
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/files/l10n/nb_NO.js b/apps/files/l10n/nb_NO.js
index 5227bf0b9ac..4b4a9e19273 100644
--- a/apps/files/l10n/nb_NO.js
+++ b/apps/files/l10n/nb_NO.js
@@ -79,7 +79,7 @@ OC.L10N.register(
"New folder" : "Ny mappe",
"{newname} already exists" : "{newname} finnes allerede",
"Upload" : "Last opp",
- "An error occurred while trying to update the tags" : "En feil oppstod under oppdatering av taggene",
+ "An error occurred while trying to update the tags" : "En feil oppstod under oppdatering av merkelappene",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mappe ble <strong>opprettet</strong>",
"A file or folder has been <strong>changed</strong>" : "En fil eller mappe ble <strong>endret</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begrens varsling om oppretting og endringer til <strong>favorittfilene</strong> dine <em>(Kun strøm)</em>",
diff --git a/apps/files/l10n/nb_NO.json b/apps/files/l10n/nb_NO.json
index 586850a9e8a..f3b0021dbbf 100644
--- a/apps/files/l10n/nb_NO.json
+++ b/apps/files/l10n/nb_NO.json
@@ -77,7 +77,7 @@
"New folder" : "Ny mappe",
"{newname} already exists" : "{newname} finnes allerede",
"Upload" : "Last opp",
- "An error occurred while trying to update the tags" : "En feil oppstod under oppdatering av taggene",
+ "An error occurred while trying to update the tags" : "En feil oppstod under oppdatering av merkelappene",
"A new file or folder has been <strong>created</strong>" : "En ny fil eller mappe ble <strong>opprettet</strong>",
"A file or folder has been <strong>changed</strong>" : "En fil eller mappe ble <strong>endret</strong>",
"Limit notifications about creation and changes to your <strong>favorite files</strong> <em>(Stream only)</em>" : "Begrens varsling om oppretting og endringer til <strong>favorittfilene</strong> dine <em>(Kun strøm)</em>",
diff --git a/apps/files_external/service/dbconfigservice.php b/apps/files_external/service/dbconfigservice.php
index 07f9942e05c..16d5de2665f 100644
--- a/apps/files_external/service/dbconfigservice.php
+++ b/apps/files_external/service/dbconfigservice.php
@@ -65,7 +65,7 @@ class DBConfigService {
$builder = $this->connection->getQueryBuilder();
$query = $builder->select(['mount_id', 'mount_point', 'storage_backend', 'auth_backend', 'priority', 'type'])
->from('external_mounts', 'm')
- ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, \PDO::PARAM_INT)));
+ ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT)));
$mounts = $this->getMountsFromQuery($query);
if (count($mounts) > 0) {
return $mounts[0];
@@ -83,7 +83,7 @@ class DBConfigService {
$builder = $this->connection->getQueryBuilder();
$query = $builder->select(['mount_id', 'mount_point', 'storage_backend', 'auth_backend', 'priority', 'type'])
->from('external_mounts')
- ->where($builder->expr()->eq('type', $builder->expr()->literal(self::MOUNT_TYPE_ADMIN, \PDO::PARAM_INT)));
+ ->where($builder->expr()->eq('type', $builder->expr()->literal(self::MOUNT_TYPE_ADMIN, IQueryBuilder::PARAM_INT)));
return $this->getMountsFromQuery($query);
}
@@ -91,7 +91,7 @@ class DBConfigService {
$query = $builder->select(['m.mount_id', 'mount_point', 'storage_backend', 'auth_backend', 'priority', 'm.type'])
->from('external_mounts', 'm')
->innerJoin('m', 'external_applicable', 'a', 'm.mount_id = a.mount_id')
- ->where($builder->expr()->eq('a.type', $builder->createNamedParameter($type, \PDO::PARAM_INT)));
+ ->where($builder->expr()->eq('a.type', $builder->createNamedParameter($type, IQueryBuilder::PARAM_INT)));
if (is_null($value)) {
$query = $query->andWhere($builder->expr()->isNull('a.value'));
@@ -126,7 +126,7 @@ class DBConfigService {
public function getAdminMountsFor($type, $value) {
$builder = $this->connection->getQueryBuilder();
$query = $this->getForQuery($builder, $type, $value);
- $query->andWhere($builder->expr()->eq('m.type', $builder->expr()->literal(self::MOUNT_TYPE_ADMIN, \PDO::PARAM_INT)));
+ $query->andWhere($builder->expr()->eq('m.type', $builder->expr()->literal(self::MOUNT_TYPE_ADMIN, IQueryBuilder::PARAM_INT)));
return $this->getMountsFromQuery($query);
}
@@ -141,15 +141,15 @@ class DBConfigService {
public function getAdminMountsForMultiple($type, array $values) {
$builder = $this->connection->getQueryBuilder();
$params = array_map(function ($value) use ($builder) {
- return $builder->createNamedParameter($value, \PDO::PARAM_STR);
+ return $builder->createNamedParameter($value, IQueryBuilder::PARAM_STR);
}, $values);
$query = $builder->select(['m.mount_id', 'mount_point', 'storage_backend', 'auth_backend', 'priority', 'm.type'])
->from('external_mounts', 'm')
->innerJoin('m', 'external_applicable', 'a', 'm.mount_id = a.mount_id')
- ->where($builder->expr()->eq('a.type', $builder->createNamedParameter($type, \PDO::PARAM_INT)))
+ ->where($builder->expr()->eq('a.type', $builder->createNamedParameter($type, IQueryBuilder::PARAM_INT)))
->andWhere($builder->expr()->in('a.value', $params));
- $query->andWhere($builder->expr()->eq('m.type', $builder->expr()->literal(self::MOUNT_TYPE_ADMIN, \PDO::PARAM_INT)));
+ $query->andWhere($builder->expr()->eq('m.type', $builder->expr()->literal(self::MOUNT_TYPE_ADMIN, IQueryBuilder::PARAM_INT)));
return $this->getMountsFromQuery($query);
}
@@ -164,7 +164,7 @@ class DBConfigService {
public function getUserMountsFor($type, $value) {
$builder = $this->connection->getQueryBuilder();
$query = $this->getForQuery($builder, $type, $value);
- $query->andWhere($builder->expr()->eq('m.type', $builder->expr()->literal(self::MOUNT_TYPE_PERSONAl, \PDO::PARAM_INT)));
+ $query->andWhere($builder->expr()->eq('m.type', $builder->expr()->literal(self::MOUNT_TYPE_PERSONAl, IQueryBuilder::PARAM_INT)));
return $this->getMountsFromQuery($query);
}
@@ -186,11 +186,11 @@ class DBConfigService {
$builder = $this->connection->getQueryBuilder();
$query = $builder->insert('external_mounts')
->values([
- 'mount_point' => $builder->createNamedParameter($mountPoint, \PDO::PARAM_STR),
- 'storage_backend' => $builder->createNamedParameter($storageBackend, \PDO::PARAM_STR),
- 'auth_backend' => $builder->createNamedParameter($authBackend, \PDO::PARAM_STR),
- 'priority' => $builder->createNamedParameter($priority, \PDO::PARAM_INT),
- 'type' => $builder->createNamedParameter($type, \PDO::PARAM_INT)
+ 'mount_point' => $builder->createNamedParameter($mountPoint, IQueryBuilder::PARAM_STR),
+ 'storage_backend' => $builder->createNamedParameter($storageBackend, IQueryBuilder::PARAM_STR),
+ 'auth_backend' => $builder->createNamedParameter($authBackend, IQueryBuilder::PARAM_STR),
+ 'priority' => $builder->createNamedParameter($priority, IQueryBuilder::PARAM_INT),
+ 'type' => $builder->createNamedParameter($type, IQueryBuilder::PARAM_INT)
]);
$query->execute();
return (int)$this->connection->lastInsertId('external_mounts');
@@ -204,19 +204,19 @@ class DBConfigService {
public function removeMount($mountId) {
$builder = $this->connection->getQueryBuilder();
$query = $builder->delete('external_mounts')
- ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, \PDO::PARAM_INT)));
+ ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT)));
$query->execute();
$query = $builder->delete('external_applicable')
- ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, \PDO::PARAM_INT)));
+ ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT)));
$query->execute();
$query = $builder->delete('external_config')
- ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, \PDO::PARAM_INT)));
+ ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT)));
$query->execute();
$query = $builder->delete('external_options')
- ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, \PDO::PARAM_INT)));
+ ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT)));
$query->execute();
}
@@ -229,7 +229,7 @@ class DBConfigService {
$query = $builder->update('external_mounts')
->set('mount_point', $builder->createNamedParameter($newMountPoint))
- ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, \PDO::PARAM_INT)));
+ ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT)));
$query->execute();
}
@@ -243,7 +243,7 @@ class DBConfigService {
$query = $builder->update('external_mounts')
->set('auth_backend', $builder->createNamedParameter($newAuthBackend))
- ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, \PDO::PARAM_INT)));
+ ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT)));
$query->execute();
}
@@ -265,9 +265,9 @@ class DBConfigService {
if ($count === 0) {
$builder = $this->connection->getQueryBuilder();
$query = $builder->update('external_config')
- ->set('value', $builder->createNamedParameter($value, \PDO::PARAM_STR))
- ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, \PDO::PARAM_INT)))
- ->andWhere($builder->expr()->eq('key', $builder->createNamedParameter($key, \PDO::PARAM_STR)));
+ ->set('value', $builder->createNamedParameter($value, IQueryBuilder::PARAM_STR))
+ ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT)))
+ ->andWhere($builder->expr()->eq('key', $builder->createNamedParameter($key, IQueryBuilder::PARAM_STR)));
$query->execute();
}
}
@@ -287,9 +287,9 @@ class DBConfigService {
if ($count === 0) {
$builder = $this->connection->getQueryBuilder();
$query = $builder->update('external_options')
- ->set('value', $builder->createNamedParameter(json_encode($value), \PDO::PARAM_STR))
- ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, \PDO::PARAM_INT)))
- ->andWhere($builder->expr()->eq('key', $builder->createNamedParameter($key, \PDO::PARAM_STR)));
+ ->set('value', $builder->createNamedParameter(json_encode($value), IQueryBuilder::PARAM_STR))
+ ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT)))
+ ->andWhere($builder->expr()->eq('key', $builder->createNamedParameter($key, IQueryBuilder::PARAM_STR)));
$query->execute();
}
}
@@ -305,13 +305,13 @@ class DBConfigService {
public function removeApplicable($mountId, $type, $value) {
$builder = $this->connection->getQueryBuilder();
$query = $builder->delete('external_applicable')
- ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, \PDO::PARAM_INT)))
- ->andWhere($builder->expr()->eq('type', $builder->createNamedParameter($type, \PDO::PARAM_INT)));
+ ->where($builder->expr()->eq('mount_id', $builder->createNamedParameter($mountId, IQueryBuilder::PARAM_INT)))
+ ->andWhere($builder->expr()->eq('type', $builder->createNamedParameter($type, IQueryBuilder::PARAM_INT)));
if (is_null($value)) {
$query = $query->andWhere($builder->expr()->isNull('value'));
} else {
- $query = $query->andWhere($builder->expr()->eq('value', $builder->createNamedParameter($value, \PDO::PARAM_STR)));
+ $query = $query->andWhere($builder->expr()->eq('value', $builder->createNamedParameter($value, IQueryBuilder::PARAM_STR)));
}
$query->execute();
@@ -354,7 +354,7 @@ class DBConfigService {
$builder = $this->connection->getQueryBuilder();
$fields[] = 'mount_id';
$placeHolders = array_map(function ($id) use ($builder) {
- return $builder->createPositionalParameter($id, \PDO::PARAM_INT);
+ return $builder->createPositionalParameter($id, IQueryBuilder::PARAM_INT);
}, $mountIds);
$query = $builder->select($fields)
->from($table)
diff --git a/apps/files_external/tests/env/stop-swift-ceph.sh b/apps/files_external/tests/env/stop-swift-ceph.sh
index edac1389a78..b1cbe94b482 100755
--- a/apps/files_external/tests/env/stop-swift-ceph.sh
+++ b/apps/files_external/tests/env/stop-swift-ceph.sh
@@ -25,6 +25,8 @@ fi;
# stopping and removing docker containers
for container in `cat $thisFolder/dockerContainerCeph.$EXECUTOR_NUMBER.swift`; do
+ docker logs $container
+
echo "Stopping and removing docker container $container"
# kills running container and removes it
docker rm -f $container
diff --git a/apps/files_sharing/api/share20ocs.php b/apps/files_sharing/api/share20ocs.php
index 588538fbb6c..f5834fb2831 100644
--- a/apps/files_sharing/api/share20ocs.php
+++ b/apps/files_sharing/api/share20ocs.php
@@ -594,6 +594,22 @@ class Share20OCS {
}
}
+ if ($permissions !== null) {
+ /* Check if this is an incomming share */
+ $incomingShares = $this->shareManager->getSharedWith($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_USER, $share->getNode(), -1, 0);
+ $incomingShares = array_merge($incomingShares, $this->shareManager->getSharedWith($this->currentUser->getUID(), \OCP\Share::SHARE_TYPE_GROUP, $share->getNode(), -1, 0));
+
+ if (!empty($incomingShares)) {
+ $maxPermissions = 0;
+ foreach ($incomingShares as $incomingShare) {
+ $maxPermissions |= $incomingShare->getPermissions();
+ }
+
+ if ($share->getPermissions() & ~$maxPermissions) {
+ return new \OC_OCS_Result(null, 404, 'Cannot increase permissions');
+ }
+ }
+ }
try {
diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js
index e2110f2b6a3..01f65761abb 100644
--- a/apps/files_sharing/l10n/es.js
+++ b/apps/files_sharing/l10n/es.js
@@ -40,10 +40,18 @@ OC.L10N.register(
"Public shared file %1$s was downloaded" : "Se descargó el archivo público compartido %1$s",
"You shared %1$s with %2$s" : "Usted compartió %1$s con %2$s",
"%2$s shared %1$s with %3$s" : "%2$s compartó %1$s con %3$s",
+ "You removed the share of %2$s for %1$s" : "Ha cambiado el compartido %2$s por %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s eliminó la compartición de %3$s con %1$s",
"You shared %1$s with group %2$s" : "Usted ha compartido %1$s con el grupo %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s compartió %1$s con el grupo %3$s",
+ "You removed the share of group %2$s for %1$s" : "Ha cambiado el compartido del grupo %2$s por %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s ha cambiado el compartido del grupo %3$s por %1$s",
"%2$s shared %1$s via link" : "%2$s compartió %1$s vía enlace",
"You shared %1$s via link" : "Ha compartido %1$s vía enlace",
+ "You removed the public link for %1$s" : "Ha borrado el enlace público de %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s ha eliminado el enlace público de %1$s",
+ "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",
"Downloaded via public link" : "Descargado vía enlace público",
"Shared with %2$s" : "Compartido con %2$s",
@@ -52,6 +60,8 @@ OC.L10N.register(
"Shared with group %3$s by %2$s" : "Compartido con el grupo %3$s por %2$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",
+ "Public link expired" : "El enlace público ha expirado",
"Shared by %2$s" : "Compartido por %2$s",
"Shares" : "Compartidos",
"Accept" : "Aceptar",
diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json
index 4372f6c661d..bd5d497829b 100644
--- a/apps/files_sharing/l10n/es.json
+++ b/apps/files_sharing/l10n/es.json
@@ -38,10 +38,18 @@
"Public shared file %1$s was downloaded" : "Se descargó el archivo público compartido %1$s",
"You shared %1$s with %2$s" : "Usted compartió %1$s con %2$s",
"%2$s shared %1$s with %3$s" : "%2$s compartó %1$s con %3$s",
+ "You removed the share of %2$s for %1$s" : "Ha cambiado el compartido %2$s por %1$s",
+ "%2$s removed the share of %3$s for %1$s" : "%2$s eliminó la compartición de %3$s con %1$s",
"You shared %1$s with group %2$s" : "Usted ha compartido %1$s con el grupo %2$s",
"%2$s shared %1$s with group %3$s" : "%2$s compartió %1$s con el grupo %3$s",
+ "You removed the share of group %2$s for %1$s" : "Ha cambiado el compartido del grupo %2$s por %1$s",
+ "%2$s removed the share of group %3$s for %1$s" : "%2$s ha cambiado el compartido del grupo %3$s por %1$s",
"%2$s shared %1$s via link" : "%2$s compartió %1$s vía enlace",
"You shared %1$s via link" : "Ha compartido %1$s vía enlace",
+ "You removed the public link for %1$s" : "Ha borrado el enlace público de %1$s",
+ "%2$s removed the public link for %1$s" : "%2$s ha eliminado el enlace público de %1$s",
+ "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",
"Downloaded via public link" : "Descargado vía enlace público",
"Shared with %2$s" : "Compartido con %2$s",
@@ -50,6 +58,8 @@
"Shared with group %3$s by %2$s" : "Compartido con el grupo %3$s por %2$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",
+ "Public link expired" : "El enlace público ha expirado",
"Shared by %2$s" : "Compartido por %2$s",
"Shares" : "Compartidos",
"Accept" : "Aceptar",
diff --git a/apps/files_sharing/tests/api/share20ocstest.php b/apps/files_sharing/tests/api/share20ocstest.php
index 057df20a5a4..81db3b96333 100644
--- a/apps/files_sharing/tests/api/share20ocstest.php
+++ b/apps/files_sharing/tests/api/share20ocstest.php
@@ -1433,6 +1433,8 @@ class Share20OCSTest extends \Test\TestCase {
})
)->will($this->returnArgument(0));
+ $this->shareManager->method('getSharedWith')->willReturn([]);
+
$expected = new \OC_OCS_Result(null);
$result = $ocs->updateShare(42);
@@ -1498,6 +1500,8 @@ class Share20OCSTest extends \Test\TestCase {
})
)->will($this->returnArgument(0));
+ $this->shareManager->method('getSharedWith')->willReturn([]);
+
$expected = new \OC_OCS_Result(null);
$result = $ocs->updateShare(42);
diff --git a/apps/systemtags/l10n/es.js b/apps/systemtags/l10n/es.js
index 7ed27b6c085..56941f3f5da 100644
--- a/apps/systemtags/l10n/es.js
+++ b/apps/systemtags/l10n/es.js
@@ -1,7 +1,21 @@
OC.L10N.register(
"systemtags",
{
+ "<strong>System tags</strong> for a file have been modified" : "Se han modificado las <strong>etiquetas de sistema</strong> de un archivo",
+ "%1$s assigned system tag %3$s" : "%1$s asignó la etiqueta de sistema %3$s",
+ "%1$s unassigned system tag %3$s" : "%1$s eliminó la asignación de etiqueta de sistema %3$s",
+ "%1$s created system tag %2$s" : "%1$s creó la etiqueta de sistema %2$s",
+ "%1$s deleted system tag %2$s" : "%1$s eliminó la etiqueta de sistema %2$s",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s actualizó la etiqueta de sistema %3$s a %2$s",
+ "%1$s assigned system tag %3$s to %2$s" : "%1$s asignó la etiqueta de sistema %3$s a %2$s",
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s eliminó la asignación de etiqueta de sistema %3$s de %2$s",
+ "%s (not-assignable)" : "%s (no asignable)",
+ "%s (invisible)" : "%s (invisible)",
"Tags" : "Etiquetas",
+ "Tagged files" : "Archivos etiquetados",
+ "Select tags to filter by" : "Seleccionar etiquetas por las que filtrar",
+ "Please select tags to filter by" : "Por favor, seleccione las etiquetas por las que desea filtrar",
+ "No files found for the selected tags" : "No se han encontrado archivos para las etiquetas seleccionadas",
"No files in here" : "Aquí no hay archivos",
"No entries found in this folder" : "No hay entradas en esta carpeta",
"Name" : "Nombre",
diff --git a/apps/systemtags/l10n/es.json b/apps/systemtags/l10n/es.json
index 038cf956fb3..e5ad1d78fef 100644
--- a/apps/systemtags/l10n/es.json
+++ b/apps/systemtags/l10n/es.json
@@ -1,5 +1,19 @@
{ "translations": {
+ "<strong>System tags</strong> for a file have been modified" : "Se han modificado las <strong>etiquetas de sistema</strong> de un archivo",
+ "%1$s assigned system tag %3$s" : "%1$s asignó la etiqueta de sistema %3$s",
+ "%1$s unassigned system tag %3$s" : "%1$s eliminó la asignación de etiqueta de sistema %3$s",
+ "%1$s created system tag %2$s" : "%1$s creó la etiqueta de sistema %2$s",
+ "%1$s deleted system tag %2$s" : "%1$s eliminó la etiqueta de sistema %2$s",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s actualizó la etiqueta de sistema %3$s a %2$s",
+ "%1$s assigned system tag %3$s to %2$s" : "%1$s asignó la etiqueta de sistema %3$s a %2$s",
+ "%1$s unassigned system tag %3$s from %2$s" : "%1$s eliminó la asignación de etiqueta de sistema %3$s de %2$s",
+ "%s (not-assignable)" : "%s (no asignable)",
+ "%s (invisible)" : "%s (invisible)",
"Tags" : "Etiquetas",
+ "Tagged files" : "Archivos etiquetados",
+ "Select tags to filter by" : "Seleccionar etiquetas por las que filtrar",
+ "Please select tags to filter by" : "Por favor, seleccione las etiquetas por las que desea filtrar",
+ "No files found for the selected tags" : "No se han encontrado archivos para las etiquetas seleccionadas",
"No files in here" : "Aquí no hay archivos",
"No entries found in this folder" : "No hay entradas en esta carpeta",
"Name" : "Nombre",
diff --git a/build/integration/features/sharing-v1.feature b/build/integration/features/sharing-v1.feature
index bfd52ec6605..8faffdd2965 100644
--- a/build/integration/features/sharing-v1.feature
+++ b/build/integration/features/sharing-v1.feature
@@ -526,3 +526,24 @@ Feature: sharing
When Updating last share with
| permissions | 1 |
Then the OCS status code should be "100"
+
+ Scenario: Do not allow reshare to exceed permissions
+ Given user "user0" exists
+ And user "user1" exists
+ And user "user2" exists
+ And user "user0" created a folder "/TMP"
+ And As an "user0"
+ And creating a share with
+ | path | /TMP |
+ | shareType | 0 |
+ | shareWith | user1 |
+ | permissions | 21 |
+ And As an "user1"
+ And creating a share with
+ | path | /TMP |
+ | shareType | 0 |
+ | shareWith | user2 |
+ | permissions | 21 |
+ When Updating last share with
+ | permissions | 31 |
+ Then the OCS status code should be "404"
diff --git a/core/css/apps.css b/core/css/apps.css
index c4e2d11b6fc..de40c40dfc5 100644
--- a/core/css/apps.css
+++ b/core/css/apps.css
@@ -445,7 +445,7 @@
left: auto;
bottom: 0;
width: 27%;
- min-width: 250px;
+ min-width: 300px;
display: block;
background: #fff;
border-left: 1px solid #eee;
diff --git a/core/css/inputs.css b/core/css/inputs.css
index fe03af85f61..c61f14e4120 100644
--- a/core/css/inputs.css
+++ b/core/css/inputs.css
@@ -10,6 +10,7 @@ input[type="password"],
input[type="search"],
input[type="number"],
input[type="email"],
+input[type="tel"],
input[type="url"],
input[type="time"],
input[type="date"],
@@ -39,6 +40,7 @@ input[type="password"],
input[type="search"],
input[type="number"],
input[type="email"],
+input[type="tel"],
input[type="url"],
input[type="time"],
textarea {
@@ -52,6 +54,7 @@ input[type="password"],
input[type="search"],
input[type="number"],
input[type="email"],
+input[type="tel"],
input[type="url"],
input[type="time"] {
-webkit-appearance:textfield; -moz-appearance:textfield;
@@ -62,6 +65,7 @@ input[type="password"]:hover, input[type="password"]:focus, input[type="password
input[type="number"]:hover, input[type="number"]:focus, input[type="number"]:active,
input[type="search"]:hover, input[type="search"]:focus, input[type="search"]:active,
input[type="email"]:hover, input[type="email"]:focus, input[type="email"]:active,
+input[type="tel"]:hover, input[type="tel"]:focus, input[type="tel"]:active,
input[type="url"]:hover, input[type="url"]:focus, input[type="url"]:active,
input[type="time"]:hover, input[type="time"]:focus, input[type="time"]:active,
textarea:hover, textarea:focus, textarea:active {
diff --git a/core/css/mobile.css b/core/css/mobile.css
index 131907eb09d..5bf0b1e58a7 100644
--- a/core/css/mobile.css
+++ b/core/css/mobile.css
@@ -73,10 +73,6 @@
z-index: 1000;
}
-#app-sidebar{
- width: 100% !important;
-}
-
/* allow horizontal scrollbar in settings
otherwise user management is not usable on mobile */
#body-settings #app-content {
diff --git a/core/css/styles.css b/core/css/styles.css
index 4edb29a8c6e..a429d55560e 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -73,13 +73,14 @@ body {
/* SCROLLING */
::-webkit-scrollbar {
- width: 8px;
+ width: 5px;
}
::-webkit-scrollbar-track-piece {
background-color: transparent;
}
::-webkit-scrollbar-thumb {
background: #ddd;
+ border-radius: 3px;
}
/* Searchbox */
diff --git a/core/img/appstore.svg b/core/img/appstore.svg
index ac111e59746..8e062a5e522 100644
--- a/core/img/appstore.svg
+++ b/core/img/appstore.svg
@@ -1,129 +1,2 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="US_UK_Download_on_the" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
- x="0px" y="0px" width="135px" height="40px" viewBox="0 0 135 40" enable-background="new 0 0 135 40" xml:space="preserve">
-<g>
- <path fill="#A6A6A6" d="M130.197,40H4.729C2.122,40,0,37.872,0,35.267V4.726C0,2.12,2.122,0,4.729,0h125.468
- C132.803,0,135,2.12,135,4.726v30.541C135,37.872,132.803,40,130.197,40L130.197,40z"/>
- <path d="M134.032,35.268c0,2.116-1.714,3.83-3.834,3.83H4.729c-2.119,0-3.839-1.714-3.839-3.83V4.725
- c0-2.115,1.72-3.835,3.839-3.835h125.468c2.121,0,3.834,1.72,3.834,3.835L134.032,35.268L134.032,35.268z"/>
- <g>
- <g>
- <path fill="#FFFFFF" d="M30.128,19.784c-0.029-3.223,2.639-4.791,2.761-4.864c-1.511-2.203-3.853-2.504-4.676-2.528
- c-1.967-0.207-3.875,1.177-4.877,1.177c-1.022,0-2.565-1.157-4.228-1.123c-2.14,0.033-4.142,1.272-5.24,3.196
- c-2.266,3.923-0.576,9.688,1.595,12.859c1.086,1.553,2.355,3.287,4.016,3.226c1.625-0.067,2.232-1.036,4.193-1.036
- c1.943,0,2.513,1.036,4.207,0.997c1.744-0.028,2.842-1.56,3.89-3.127c1.255-1.78,1.759-3.533,1.779-3.623
- C33.507,24.924,30.161,23.647,30.128,19.784z"/>
- <path fill="#FFFFFF" d="M26.928,10.306c0.874-1.093,1.472-2.58,1.306-4.089c-1.265,0.056-2.847,0.875-3.758,1.944
- c-0.806,0.942-1.526,2.486-1.34,3.938C24.557,12.205,26.016,11.382,26.928,10.306z"/>
- </g>
- </g>
- <g>
- <path fill="#FFFFFF" d="M53.645,31.504h-2.271l-1.244-3.909h-4.324l-1.185,3.909h-2.211l4.284-13.308h2.646L53.645,31.504z
- M49.755,25.955L48.63,22.48c-0.119-0.355-0.342-1.191-0.671-2.507h-0.04c-0.131,0.566-0.342,1.402-0.632,2.507l-1.105,3.475
- H49.755z"/>
- <path fill="#FFFFFF" d="M64.662,26.588c0,1.632-0.441,2.922-1.323,3.869c-0.79,0.843-1.771,1.264-2.942,1.264
- c-1.264,0-2.172-0.454-2.725-1.362h-0.04v5.055h-2.132V25.067c0-1.026-0.027-2.079-0.079-3.159h1.875l0.119,1.521h0.04
- c0.711-1.146,1.79-1.718,3.238-1.718c1.132,0,2.077,0.447,2.833,1.342C64.284,23.949,64.662,25.127,64.662,26.588z M62.49,26.666
- c0-0.934-0.21-1.704-0.632-2.31c-0.461-0.632-1.08-0.948-1.856-0.948c-0.526,0-1.004,0.176-1.431,0.523
- c-0.428,0.35-0.708,0.807-0.839,1.373c-0.066,0.264-0.099,0.48-0.099,0.65v1.6c0,0.698,0.214,1.287,0.642,1.768
- s0.984,0.721,1.668,0.721c0.803,0,1.428-0.31,1.875-0.928C62.266,28.496,62.49,27.68,62.49,26.666z"/>
- <path fill="#FFFFFF" d="M75.699,26.588c0,1.632-0.441,2.922-1.324,3.869c-0.789,0.843-1.77,1.264-2.941,1.264
- c-1.264,0-2.172-0.454-2.724-1.362H68.67v5.055h-2.132V25.067c0-1.026-0.027-2.079-0.079-3.159h1.875l0.119,1.521h0.04
- c0.71-1.146,1.789-1.718,3.238-1.718c1.131,0,2.076,0.447,2.834,1.342C75.32,23.949,75.699,25.127,75.699,26.588z M73.527,26.666
- c0-0.934-0.211-1.704-0.633-2.31c-0.461-0.632-1.078-0.948-1.855-0.948c-0.527,0-1.004,0.176-1.432,0.523
- c-0.428,0.35-0.707,0.807-0.838,1.373c-0.065,0.264-0.099,0.48-0.099,0.65v1.6c0,0.698,0.214,1.287,0.64,1.768
- c0.428,0.48,0.984,0.721,1.67,0.721c0.803,0,1.428-0.31,1.875-0.928C73.303,28.496,73.527,27.68,73.527,26.666z"/>
- <path fill="#FFFFFF" d="M88.039,27.772c0,1.132-0.393,2.053-1.182,2.764c-0.867,0.777-2.074,1.165-3.625,1.165
- c-1.432,0-2.58-0.276-3.449-0.829l0.494-1.777c0.936,0.566,1.963,0.85,3.082,0.85c0.803,0,1.428-0.182,1.877-0.544
- c0.447-0.362,0.67-0.848,0.67-1.454c0-0.54-0.184-0.995-0.553-1.364c-0.367-0.369-0.98-0.712-1.836-1.029
- c-2.33-0.869-3.494-2.142-3.494-3.816c0-1.094,0.408-1.991,1.225-2.689c0.814-0.699,1.9-1.048,3.258-1.048
- c1.211,0,2.217,0.211,3.02,0.632l-0.533,1.738c-0.75-0.408-1.598-0.612-2.547-0.612c-0.75,0-1.336,0.185-1.756,0.553
- c-0.355,0.329-0.533,0.73-0.533,1.205c0,0.526,0.203,0.961,0.611,1.303c0.355,0.316,1,0.658,1.936,1.027
- c1.145,0.461,1.986,1,2.527,1.618C87.77,26.081,88.039,26.852,88.039,27.772z"/>
- <path fill="#FFFFFF" d="M95.088,23.508h-2.35v4.659c0,1.185,0.414,1.777,1.244,1.777c0.381,0,0.697-0.033,0.947-0.099l0.059,1.619
- c-0.42,0.157-0.973,0.236-1.658,0.236c-0.842,0-1.5-0.257-1.975-0.77c-0.473-0.514-0.711-1.376-0.711-2.587v-4.837h-1.4v-1.6h1.4
- v-1.757l2.094-0.632v2.389h2.35V23.508z"/>
- <path fill="#FFFFFF" d="M105.691,26.627c0,1.475-0.422,2.686-1.264,3.633c-0.883,0.975-2.055,1.461-3.516,1.461
- c-1.408,0-2.529-0.467-3.365-1.401s-1.254-2.113-1.254-3.534c0-1.487,0.43-2.705,1.293-3.652c0.861-0.948,2.023-1.422,3.484-1.422
- c1.408,0,2.541,0.467,3.396,1.402C105.283,24.021,105.691,25.192,105.691,26.627z M103.479,26.696
- c0-0.885-0.189-1.644-0.572-2.277c-0.447-0.766-1.086-1.148-1.914-1.148c-0.857,0-1.508,0.383-1.955,1.148
- c-0.383,0.634-0.572,1.405-0.572,2.317c0,0.885,0.189,1.644,0.572,2.276c0.461,0.766,1.105,1.148,1.936,1.148
- c0.814,0,1.453-0.39,1.914-1.168C103.281,28.347,103.479,27.58,103.479,26.696z"/>
- <path fill="#FFFFFF" d="M112.621,23.783c-0.211-0.039-0.436-0.059-0.672-0.059c-0.75,0-1.33,0.283-1.738,0.85
- c-0.355,0.5-0.533,1.132-0.533,1.895v5.035h-2.131l0.02-6.574c0-1.106-0.027-2.113-0.08-3.021h1.857l0.078,1.836h0.059
- c0.225-0.631,0.58-1.139,1.066-1.52c0.475-0.343,0.988-0.514,1.541-0.514c0.197,0,0.375,0.014,0.533,0.039V23.783z"/>
- <path fill="#FFFFFF" d="M122.156,26.252c0,0.382-0.025,0.704-0.078,0.967h-6.396c0.025,0.948,0.334,1.673,0.928,2.173
- c0.539,0.447,1.236,0.671,2.092,0.671c0.947,0,1.811-0.151,2.588-0.454l0.334,1.48c-0.908,0.396-1.98,0.593-3.217,0.593
- c-1.488,0-2.656-0.438-3.506-1.313c-0.848-0.875-1.273-2.05-1.273-3.524c0-1.447,0.395-2.652,1.186-3.613
- c0.828-1.026,1.947-1.539,3.355-1.539c1.383,0,2.43,0.513,3.141,1.539C121.873,24.047,122.156,25.055,122.156,26.252z
- M120.123,25.699c0.014-0.632-0.125-1.178-0.414-1.639c-0.369-0.593-0.936-0.889-1.699-0.889c-0.697,0-1.264,0.289-1.697,0.869
- c-0.355,0.461-0.566,1.014-0.631,1.658H120.123z"/>
- </g>
- <g>
- <g>
- <path fill="#FFFFFF" d="M49.05,10.009c0,1.177-0.353,2.063-1.058,2.658c-0.653,0.549-1.581,0.824-2.783,0.824
- c-0.596,0-1.106-0.026-1.533-0.078V6.982c0.557-0.09,1.157-0.136,1.805-0.136c1.145,0,2.008,0.249,2.59,0.747
- C48.723,8.156,49.05,8.961,49.05,10.009z M47.945,10.038c0-0.763-0.202-1.348-0.606-1.756c-0.404-0.407-0.994-0.611-1.771-0.611
- c-0.33,0-0.611,0.022-0.844,0.068v4.889c0.129,0.02,0.365,0.029,0.708,0.029c0.802,0,1.421-0.223,1.857-0.669
- S47.945,10.892,47.945,10.038z"/>
- <path fill="#FFFFFF" d="M54.909,11.037c0,0.725-0.207,1.319-0.621,1.785c-0.434,0.479-1.009,0.718-1.727,0.718
- c-0.692,0-1.243-0.229-1.654-0.689c-0.41-0.459-0.615-1.038-0.615-1.736c0-0.73,0.211-1.329,0.635-1.794s0.994-0.698,1.712-0.698
- c0.692,0,1.248,0.229,1.669,0.688C54.708,9.757,54.909,10.333,54.909,11.037z M53.822,11.071c0-0.435-0.094-0.808-0.281-1.119
- c-0.22-0.376-0.533-0.564-0.94-0.564c-0.421,0-0.741,0.188-0.961,0.564c-0.188,0.311-0.281,0.69-0.281,1.138
- c0,0.435,0.094,0.808,0.281,1.119c0.227,0.376,0.543,0.564,0.951,0.564c0.4,0,0.714-0.191,0.94-0.574
- C53.725,11.882,53.822,11.506,53.822,11.071z"/>
- <path fill="#FFFFFF" d="M62.765,8.719l-1.475,4.714h-0.96l-0.611-2.047c-0.155-0.511-0.281-1.019-0.379-1.523h-0.019
- c-0.091,0.518-0.217,1.025-0.379,1.523l-0.649,2.047h-0.971l-1.387-4.714h1.077l0.533,2.241c0.129,0.53,0.235,1.035,0.32,1.513
- h0.019c0.078-0.394,0.207-0.896,0.389-1.503l0.669-2.25h0.854l0.641,2.202c0.155,0.537,0.281,1.054,0.378,1.552h0.029
- c0.071-0.485,0.178-1.002,0.32-1.552l0.572-2.202H62.765z"/>
- <path fill="#FFFFFF" d="M68.198,13.433H67.15v-2.7c0-0.832-0.316-1.248-0.95-1.248c-0.311,0-0.562,0.114-0.757,0.343
- c-0.193,0.229-0.291,0.499-0.291,0.808v2.796h-1.048v-3.366c0-0.414-0.013-0.863-0.038-1.349h0.921l0.049,0.737h0.029
- c0.122-0.229,0.304-0.418,0.543-0.569c0.284-0.176,0.602-0.265,0.95-0.265c0.44,0,0.806,0.142,1.097,0.427
- c0.362,0.349,0.543,0.87,0.543,1.562V13.433z"/>
- <path fill="#FFFFFF" d="M71.088,13.433h-1.047V6.556h1.047V13.433z"/>
- <path fill="#FFFFFF" d="M77.258,11.037c0,0.725-0.207,1.319-0.621,1.785c-0.434,0.479-1.01,0.718-1.727,0.718
- c-0.693,0-1.244-0.229-1.654-0.689c-0.41-0.459-0.615-1.038-0.615-1.736c0-0.73,0.211-1.329,0.635-1.794s0.994-0.698,1.711-0.698
- c0.693,0,1.248,0.229,1.67,0.688C77.057,9.757,77.258,10.333,77.258,11.037z M76.17,11.071c0-0.435-0.094-0.808-0.281-1.119
- c-0.219-0.376-0.533-0.564-0.939-0.564c-0.422,0-0.742,0.188-0.961,0.564c-0.188,0.311-0.281,0.69-0.281,1.138
- c0,0.435,0.094,0.808,0.281,1.119c0.227,0.376,0.543,0.564,0.951,0.564c0.4,0,0.713-0.191,0.939-0.574
- C76.074,11.882,76.17,11.506,76.17,11.071z"/>
- <path fill="#FFFFFF" d="M82.33,13.433h-0.941l-0.078-0.543h-0.029c-0.322,0.433-0.781,0.65-1.377,0.65
- c-0.445,0-0.805-0.143-1.076-0.427c-0.246-0.258-0.369-0.579-0.369-0.96c0-0.576,0.24-1.015,0.723-1.319
- c0.482-0.304,1.16-0.453,2.033-0.446V10.3c0-0.621-0.326-0.931-0.979-0.931c-0.465,0-0.875,0.117-1.229,0.349l-0.213-0.688
- c0.438-0.271,0.979-0.407,1.617-0.407c1.232,0,1.85,0.65,1.85,1.95v1.736C82.262,12.78,82.285,13.155,82.33,13.433z
- M81.242,11.813v-0.727c-1.156-0.02-1.734,0.297-1.734,0.95c0,0.246,0.066,0.43,0.201,0.553c0.135,0.123,0.307,0.184,0.512,0.184
- c0.23,0,0.445-0.073,0.641-0.218c0.197-0.146,0.318-0.331,0.363-0.558C81.236,11.946,81.242,11.884,81.242,11.813z"/>
- <path fill="#FFFFFF" d="M88.285,13.433h-0.93l-0.049-0.757h-0.029c-0.297,0.576-0.803,0.864-1.514,0.864
- c-0.568,0-1.041-0.223-1.416-0.669s-0.562-1.025-0.562-1.736c0-0.763,0.203-1.381,0.611-1.853c0.395-0.44,0.879-0.66,1.455-0.66
- c0.633,0,1.076,0.213,1.328,0.64h0.02V6.556h1.049v5.607C88.248,12.622,88.26,13.045,88.285,13.433z M87.199,11.445v-0.786
- c0-0.136-0.01-0.246-0.029-0.33c-0.059-0.252-0.186-0.464-0.379-0.635c-0.195-0.171-0.43-0.257-0.701-0.257
- c-0.391,0-0.697,0.155-0.922,0.466c-0.223,0.311-0.336,0.708-0.336,1.193c0,0.466,0.107,0.844,0.322,1.135
- c0.227,0.31,0.533,0.465,0.916,0.465c0.344,0,0.619-0.129,0.828-0.388C87.1,12.069,87.199,11.781,87.199,11.445z"/>
- <path fill="#FFFFFF" d="M97.248,11.037c0,0.725-0.207,1.319-0.621,1.785c-0.434,0.479-1.008,0.718-1.727,0.718
- c-0.691,0-1.242-0.229-1.654-0.689c-0.41-0.459-0.615-1.038-0.615-1.736c0-0.73,0.211-1.329,0.635-1.794s0.994-0.698,1.713-0.698
- c0.691,0,1.248,0.229,1.668,0.688C97.047,9.757,97.248,10.333,97.248,11.037z M96.162,11.071c0-0.435-0.094-0.808-0.281-1.119
- c-0.221-0.376-0.533-0.564-0.941-0.564c-0.42,0-0.74,0.188-0.961,0.564c-0.188,0.311-0.281,0.69-0.281,1.138
- c0,0.435,0.094,0.808,0.281,1.119c0.227,0.376,0.543,0.564,0.951,0.564c0.4,0,0.715-0.191,0.941-0.574
- C96.064,11.882,96.162,11.506,96.162,11.071z"/>
- <path fill="#FFFFFF" d="M102.883,13.433h-1.047v-2.7c0-0.832-0.316-1.248-0.951-1.248c-0.311,0-0.562,0.114-0.756,0.343
- s-0.291,0.499-0.291,0.808v2.796h-1.049v-3.366c0-0.414-0.012-0.863-0.037-1.349h0.92l0.049,0.737h0.029
- c0.123-0.229,0.305-0.418,0.543-0.569c0.285-0.176,0.602-0.265,0.951-0.265c0.439,0,0.805,0.142,1.096,0.427
- c0.363,0.349,0.543,0.87,0.543,1.562V13.433z"/>
- <path fill="#FFFFFF" d="M109.936,9.504h-1.154v2.29c0,0.582,0.205,0.873,0.611,0.873c0.188,0,0.344-0.016,0.467-0.049
- l0.027,0.795c-0.207,0.078-0.479,0.117-0.814,0.117c-0.414,0-0.736-0.126-0.969-0.378c-0.234-0.252-0.35-0.676-0.35-1.271V9.504
- h-0.689V8.719h0.689V7.855l1.027-0.31v1.173h1.154V9.504z"/>
- <path fill="#FFFFFF" d="M115.484,13.433h-1.049v-2.68c0-0.845-0.316-1.268-0.949-1.268c-0.486,0-0.818,0.245-1,0.735
- c-0.031,0.103-0.049,0.229-0.049,0.377v2.835h-1.047V6.556h1.047v2.841h0.02c0.33-0.517,0.803-0.775,1.416-0.775
- c0.434,0,0.793,0.142,1.078,0.427c0.355,0.355,0.533,0.883,0.533,1.581V13.433z"/>
- <path fill="#FFFFFF" d="M121.207,10.853c0,0.188-0.014,0.346-0.039,0.475h-3.143c0.014,0.466,0.164,0.821,0.455,1.067
- c0.266,0.22,0.609,0.33,1.029,0.33c0.465,0,0.889-0.074,1.271-0.223l0.164,0.728c-0.447,0.194-0.973,0.291-1.582,0.291
- c-0.73,0-1.305-0.215-1.721-0.645c-0.418-0.43-0.625-1.007-0.625-1.731c0-0.711,0.193-1.303,0.582-1.775
- c0.406-0.504,0.955-0.756,1.648-0.756c0.678,0,1.193,0.252,1.541,0.756C121.068,9.77,121.207,10.265,121.207,10.853z
- M120.207,10.582c0.008-0.311-0.061-0.579-0.203-0.805c-0.182-0.291-0.459-0.437-0.834-0.437c-0.342,0-0.621,0.142-0.834,0.427
- c-0.174,0.227-0.277,0.498-0.311,0.815H120.207z"/>
- </g>
- </g>
-</g>
-</svg>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 135 40" xml:space="preserve" height="40px" viewBox="0 0 135 40" width="135px" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><path d="m130.2 40h-125.47c-2.608 0-4.73-2.128-4.73-4.733v-30.541c0-2.606 2.122-4.726 4.729-4.726h125.47c2.6 0 4.8 2.12 4.8 4.726v30.541c0 2.605-2.2 4.733-4.8 4.733z"/><path fill="#fff" d="m28.234 6.2168c-1.265 0.056-2.846 0.8744-3.757 1.9434-0.806 0.942-1.526 2.4878-1.34 3.9398 1.421 0.106 2.879-0.717 3.791-1.793 0.874-1.0934 1.472-2.5812 1.306-4.0902zm41.807 0.3398v6.8774h1.047v-6.8774h-1.047zm17.158 0v2.7051h-0.019c-0.252-0.427-0.695-0.6406-1.328-0.6406-0.576 0-1.061 0.2201-1.456 0.6601-0.408 0.472-0.611 1.0908-0.611 1.8538 0 0.711 0.188 1.29 0.563 1.736s0.848 0.668 1.416 0.668c0.711 0 1.216-0.287 1.513-0.863h0.03l0.048 0.758h0.93c-0.025-0.388-0.037-0.813-0.037-1.272v-5.6054h-1.049zm24.191 0v6.8754h1.05v-2.834c0-0.148 0.02-0.274 0.05-0.377 0.18-0.4903 0.51-0.7366 1-0.7366 0.63 0 0.95 0.4245 0.95 1.2696v2.68h1.04v-2.803c0-0.6981-0.17-1.2272-0.53-1.5822-0.28-0.285-0.64-0.4277-1.08-0.4277-0.61 0-1.08 0.2584-1.41 0.7754h-0.02v-2.8399h-1.05zm-65.91 0.2891c-0.648 0-1.247 0.0467-1.804 0.1367v6.4296c0.427 0.052 0.937 0.078 1.533 0.078 1.202 0 2.13-0.273 2.783-0.822 0.705-0.595 1.059-1.481 1.059-2.658 0-1.0482-0.329-1.8532-0.981-2.4162-0.582-0.498-1.445-0.7481-2.59-0.7481zm63.3 0.6992l-1.03 0.3106v0.8633h-0.69v0.7851h0.69v2.3771c0 0.595 0.12 1.019 0.35 1.271 0.24 0.252 0.56 0.377 0.97 0.377 0.34 0 0.61-0.039 0.82-0.117l-0.03-0.795c-0.12 0.033-0.28 0.051-0.47 0.051-0.4 0-0.61-0.291-0.61-0.873v-2.2911h1.16v-0.7851h-1.16v-1.1739zm-63.212 0.127c0.777 0 1.368 0.2023 1.772 0.6093 0.404 0.408 0.605 0.9929 0.605 1.7558 0 0.854-0.22 1.505-0.656 1.951s-1.055 0.668-1.857 0.668c-0.343 0-0.578-0.007-0.707-0.027v-4.8907c0.233-0.046 0.513-0.0664 0.843-0.0664zm73.682 0.9414c-0.7 0-1.25 0.2518-1.65 0.7558-0.39 0.472-0.58 1.0649-0.58 1.7759 0 0.724 0.2 1.302 0.62 1.732s0.99 0.644 1.72 0.644c0.61 0 1.14-0.097 1.58-0.291l-0.16-0.728c-0.38 0.149-0.81 0.223-1.27 0.223-0.42 0-0.76-0.11-1.03-0.33-0.29-0.246-0.44-0.601-0.45-1.067h3.14c0.02-0.129 0.04-0.286 0.04-0.474 0-0.588-0.14-1.0849-0.42-1.4849-0.35-0.504-0.87-0.7558-1.54-0.7558zm-52.691 0.0058c-0.348 0-0.668 0.0897-0.952 0.2657-0.239 0.151-0.421 0.3393-0.543 0.5683h-0.029l-0.049-0.7363h-0.92c0.025 0.486 0.038 0.9356 0.038 1.3492v3.366h1.048v-2.795c0-0.309 0.098-0.58 0.291-0.8089 0.195-0.229 0.445-0.3437 0.756-0.3437 0.634 0 0.951 0.416 0.951 1.2476v2.702h1.047v-2.825c0-0.6916-0.181-1.2131-0.543-1.5621-0.291-0.285-0.655-0.4278-1.095-0.4278zm34.681 0c-0.34 0-0.66 0.0897-0.95 0.2657-0.24 0.151-0.417 0.3393-0.54 0.5683h-0.029l-0.049-0.7363h-0.92c0.025 0.486 0.037 0.9356 0.037 1.3492v3.366h1.049v-2.795c0-0.309 0.097-0.58 0.292-0.8089 0.19-0.229 0.44-0.3437 0.75-0.3437 0.64 0 0.96 0.416 0.96 1.2476v2.702h1.04v-2.825c0-0.6916-0.18-1.2131-0.54-1.5621-0.29-0.285-0.66-0.4278-1.1-0.4278zm-48.601 0.0039c-0.718 0-1.287 0.2323-1.711 0.6973s-0.635 1.0647-0.635 1.7947c0 0.698 0.203 1.278 0.613 1.737 0.411 0.46 0.963 0.687 1.655 0.687 0.718 0 1.292-0.238 1.726-0.717 0.414-0.466 0.621-1.06 0.621-1.785 0-0.704-0.199-1.2805-0.599-1.7265-0.421-0.459-0.978-0.6875-1.67-0.6875zm22.347 0c-0.717 0-1.287 0.2323-1.711 0.6973s-0.634 1.0647-0.634 1.7947c0 0.698 0.205 1.278 0.615 1.737 0.41 0.46 0.961 0.687 1.654 0.687 0.717 0 1.293-0.238 1.727-0.717 0.414-0.466 0.621-1.06 0.621-1.785 0-0.704-0.202-1.2805-0.602-1.7265-0.422-0.459-0.977-0.6875-1.67-0.6875zm5.426 0c-0.638 0-1.179 0.1353-1.617 0.4063l0.213 0.6895c0.354-0.232 0.763-0.3497 1.228-0.3497 0.653 0 0.981 0.3107 0.981 0.9319v0.088c-0.873-0.007-1.551 0.141-2.033 0.445-0.483 0.304-0.723 0.742-0.723 1.318 0 0.381 0.121 0.703 0.367 0.961 0.271 0.284 0.631 0.426 1.076 0.426 0.596 0 1.055-0.215 1.377-0.648h0.03l0.078 0.543h0.941c-0.045-0.278-0.068-0.654-0.068-1.125v-1.737c0-1.2997-0.618-1.949-1.85-1.949zm14.567 0c-0.719 0-1.289 0.2323-1.713 0.6973s-0.635 1.0647-0.635 1.7947c0 0.698 0.205 1.278 0.615 1.737 0.412 0.46 0.963 0.687 1.654 0.687 0.719 0 1.293-0.238 1.727-0.717 0.414-0.466 0.621-1.06 0.621-1.785 0-0.704-0.202-1.2805-0.602-1.7265-0.42-0.459-0.976-0.6875-1.667-0.6875zm-39.043 0.0958l1.386 4.7152h0.971l0.648-2.047c0.162-0.498 0.288-1.006 0.379-1.5237h0.02c0.098 0.5037 0.224 1.0127 0.379 1.5237l0.611 2.047h0.959l1.477-4.7133h-1.03l-0.572 2.2013c-0.142 0.55-0.249 1.068-0.32 1.553h-0.03c-0.097-0.498-0.222-1.016-0.376-1.553l-0.641-2.2013h-0.856l-0.668 2.2503c-0.182 0.607-0.31 1.108-0.388 1.502h-0.02c-0.085-0.478-0.191-0.982-0.32-1.512l-0.533-2.2422h-1.076zm63.234 0.621c0.37 0 0.65 0.1465 0.83 0.4375 0.15 0.2257 0.22 0.4937 0.21 0.8047h-2.18c0.03-0.317 0.13-0.5874 0.31-0.8144 0.21-0.285 0.49-0.4278 0.83-0.4278zm-66.568 0.0489c0.407 0 0.719 0.1865 0.939 0.5625 0.187 0.3108 0.281 0.6838 0.281 1.1188s-0.097 0.812-0.291 1.129c-0.226 0.383-0.539 0.574-0.939 0.574-0.408 0-0.724-0.188-0.951-0.564-0.187-0.311-0.282-0.684-0.282-1.119 0-0.448 0.094-0.828 0.282-1.1388 0.22-0.376 0.54-0.5625 0.961-0.5625zm22.347 0c0.406 0 0.721 0.1865 0.94 0.5625 0.187 0.3108 0.281 0.6838 0.281 1.1188s-0.096 0.812-0.291 1.129c-0.226 0.383-0.54 0.574-0.94 0.574-0.408 0-0.724-0.188-0.951-0.564-0.187-0.311-0.281-0.684-0.281-1.119 0-0.448 0.093-0.828 0.281-1.1388 0.219-0.376 0.539-0.5625 0.961-0.5625zm19.99 0c0.408 0 0.721 0.1865 0.942 0.5625 0.187 0.3108 0.281 0.6838 0.281 1.1188s-0.098 0.812-0.291 1.129c-0.226 0.383-0.541 0.574-0.941 0.574-0.408 0-0.724-0.188-0.951-0.564-0.187-0.311-0.282-0.684-0.282-1.119 0-0.448 0.094-0.828 0.282-1.1388 0.221-0.376 0.54-0.5625 0.96-0.5625zm-8.849 0.0488c0.271 0 0.506 0.0849 0.701 0.2559 0.193 0.171 0.32 0.3826 0.379 0.6346 0.019 0.084 0.029 0.194 0.029 0.33v0.787c0 0.336-0.099 0.625-0.301 0.864-0.209 0.259-0.484 0.386-0.828 0.386-0.383 0-0.689-0.155-0.916-0.465-0.215-0.291-0.322-0.668-0.322-1.134 0-0.485 0.113-0.883 0.336-1.1937 0.225-0.311 0.531-0.4648 0.922-0.4648zm-4.848 1.6485v0.726c0 0.072-0.006 0.133-0.017 0.184-0.045 0.227-0.167 0.413-0.364 0.559-0.196 0.145-0.41 0.218-0.64 0.218-0.205 0-0.377-0.06-0.512-0.183s-0.201-0.309-0.201-0.555c0-0.653 0.578-0.969 1.734-0.949zm-53.762 1.297c-1.696 0.126-3.267 1.185-4.144 1.185-1.022 0-2.566-1.157-4.229-1.123-2.14 0.033-4.142 1.274-5.24 3.198-2.266 3.923-0.575 9.688 1.596 12.859 1.086 1.553 2.355 3.286 4.016 3.225 1.625-0.067 2.232-1.036 4.193-1.036 1.943 0 2.513 1.035 4.207 0.997 1.744-0.028 2.843-1.56 3.891-3.127 1.255-1.78 1.759-3.533 1.779-3.623-0.041-0.014-3.387-1.292-3.42-5.155-0.029-3.223 2.638-4.79 2.76-4.863-1.511-2.203-3.853-2.503-4.676-2.527-0.246-0.026-0.49-0.028-0.733-0.01zm57.026 5.619c-1.358 0-2.444 0.348-3.258 1.047-0.817 0.698-1.225 1.595-1.225 2.689 0 1.674 1.165 2.948 3.495 3.817 0.856 0.317 1.469 0.658 1.836 1.027 0.369 0.369 0.552 0.825 0.552 1.365 0 0.606-0.223 1.091-0.67 1.453-0.449 0.362-1.074 0.545-1.877 0.545-1.119 0-2.146-0.283-3.082-0.849l-0.494 1.775c0.869 0.553 2.017 0.83 3.449 0.83 1.551 0 2.758-0.389 3.625-1.166 0.789-0.711 1.182-1.632 1.182-2.764 0-0.92-0.27-1.69-0.809-2.306-0.541-0.618-1.382-1.156-2.527-1.617-0.936-0.369-1.58-0.712-1.935-1.028-0.408-0.342-0.612-0.776-0.612-1.302 0-0.475 0.178-0.876 0.533-1.206 0.42-0.368 1.006-0.552 1.756-0.552 0.949 0 1.797 0.203 2.547 0.611l0.533-1.738c-0.803-0.421-1.808-0.631-3.019-0.631zm-37.813 0.193l-4.283 13.309h2.211l1.186-3.908h4.324l1.242 3.908h2.272l-4.305-13.309h-2.647zm46.045 1.323l-2.093 0.63v1.758h-1.401v1.6h1.401v4.838c0 1.211 0.237 2.072 0.71 2.586 0.475 0.513 1.133 0.769 1.975 0.769 0.685 0 1.238-0.077 1.658-0.234l-0.058-1.619c-0.25 0.066-0.567 0.097-0.948 0.097-0.83 0-1.244-0.59-1.244-1.775v-4.66h2.35v-1.602h-2.35v-2.388zm-44.818 0.455h0.039c0.329 1.316 0.553 2.152 0.672 2.507l1.125 3.475h-3.574l1.105-3.475c0.29-1.105 0.502-1.941 0.633-2.507zm70.25 1.72c-1.41 0-2.53 0.513-3.36 1.539-0.79 0.961-1.18 2.167-1.18 3.614 0 1.474 0.42 2.648 1.27 3.523s2.02 1.313 3.51 1.313c1.23 0 2.31-0.196 3.21-0.592l-0.33-1.481c-0.78 0.303-1.64 0.453-2.59 0.453-0.85 0-1.55-0.222-2.09-0.669-0.59-0.5-0.9-1.226-0.93-2.174h6.4c0.05-0.263 0.08-0.585 0.08-0.967 0-1.197-0.29-2.205-0.85-3.02-0.71-1.026-1.76-1.539-3.14-1.539zm-57.477 0.018c-1.448 0-2.527 0.573-3.238 1.719h-0.041l-0.117-1.522h-1.875c0.052 1.08 0.078 2.132 0.078 3.158v10.348h2.133v-5.055h0.039c0.553 0.908 1.46 1.362 2.724 1.362 1.171 0 2.154-0.421 2.944-1.264 0.882-0.947 1.322-2.237 1.322-3.869 0-1.461-0.379-2.639-1.137-3.535-0.756-0.895-1.7-1.342-2.832-1.342zm11.037 0c-1.449 0-2.528 0.573-3.238 1.719h-0.039l-0.119-1.522h-1.875c0.052 1.08 0.078 2.132 0.078 3.158v10.348h2.133v-5.055h0.041c0.552 0.908 1.459 1.362 2.723 1.362 1.171 0 2.152-0.421 2.941-1.264 0.883-0.947 1.324-2.237 1.324-3.869 0-1.461-0.38-2.639-1.135-3.535-0.758-0.895-1.703-1.342-2.834-1.342zm40.36 0c-0.56 0-1.07 0.171-1.54 0.514-0.49 0.381-0.84 0.888-1.07 1.519h-0.06l-0.08-1.836h-1.85c0.05 0.908 0.08 1.916 0.08 3.022l-0.02 6.574h2.13v-5.035c0-0.763 0.18-1.395 0.53-1.895 0.41-0.567 0.99-0.849 1.74-0.849 0.24 0 0.46 0.019 0.67 0.058v-2.033c-0.16-0.025-0.34-0.039-0.53-0.039zm-11.02 0.002c-1.463 0-2.623 0.474-3.484 1.422-0.863 0.947-1.293 2.163-1.293 3.65 0 1.421 0.418 2.601 1.254 3.535s1.955 1.401 3.363 1.401c1.46 0 2.63-0.486 3.52-1.461 0.84-0.947 1.26-2.158 1.26-3.633 0-1.435-0.41-2.607-1.23-3.514-0.85-0.935-1.98-1.4-3.39-1.4zm16.94 1.459c0.76 0 1.33 0.296 1.7 0.889 0.29 0.46 0.43 1.005 0.41 1.636h-4.44c0.07-0.644 0.28-1.197 0.63-1.658 0.44-0.58 1-0.867 1.7-0.867zm-17.02 0.099c0.83 0 1.47 0.383 1.92 1.149 0.38 0.633 0.57 1.39 0.57 2.275 0 0.884-0.2 1.652-0.59 2.297-0.46 0.778-1.1 1.168-1.92 1.168-0.83 0-1.472-0.382-1.933-1.148-0.383-0.632-0.57-1.391-0.57-2.276 0-0.912 0.187-1.682 0.57-2.316 0.447-0.765 1.103-1.149 1.953-1.149zm-40.988 0.137c0.776 0 1.394 0.315 1.855 0.947 0.422 0.606 0.633 1.377 0.633 2.311 0 1.014-0.224 1.83-0.672 2.449-0.447 0.618-1.072 0.928-1.875 0.928-0.684 0-1.24-0.24-1.668-0.721s-0.642-1.069-0.642-1.767v-1.602c0-0.17 0.033-0.384 0.099-0.648 0.131-0.566 0.41-1.023 0.838-1.373 0.427-0.347 0.906-0.524 1.432-0.524zm11.037 0c0.777 0 1.395 0.315 1.856 0.947 0.422 0.606 0.632 1.377 0.632 2.311 0 1.014-0.224 1.83-0.672 2.449-0.447 0.618-1.072 0.928-1.875 0.928-0.686 0-1.241-0.241-1.669-0.721-0.426-0.481-0.641-1.069-0.641-1.767v-1.602c0-0.17 0.035-0.384 0.1-0.648 0.131-0.566 0.409-1.023 0.837-1.373 0.428-0.347 0.905-0.524 1.432-0.524z"/></svg>
diff --git a/core/img/desktopapp.svg b/core/img/desktopapp.svg
index 98f3616537d..67145f85941 100644
--- a/core/img/desktopapp.svg
+++ b/core/img/desktopapp.svg
@@ -1,35 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" height="60" width="170" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" enable-background="new 0 0 792 612" viewBox="0 0 1346.4 475.2" xmlns:dc="http://purl.org/dc/elements/1.1/">
- <rect rx="50" ry="50" height="475.2" width="1346.4" y="-3.5527e-15" x="-2.8405e-15"/>
- <path d="m150.48 126.72c-11.88 0-23.76 11.88-23.76 23.76v166.32l-47.52 23.76v11.88s0 11.88 11.88 11.88h356.4c11.88 0 11.88-11.88 11.88-11.88v-11.88l-47.52-23.76v-166.32c0-11.88-11.88-23.76-23.76-23.76zm0 23.667h237.6v142.65h-237.6z" fill="#fff"/>
- <g id="text8" style="font-size:316.79998779px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff">
- <path d="m 537.87938,193.48313 q 0,22.33687 -12.74625,34.21687 -12.68438,11.88 -36.69188,11.88 l -25.61625,0 0,-90.46125 28.40063,0 q 22.15125,0 34.4025,11.69438 12.25125,11.69437 12.25125,32.67 z m -19.92375,0.495 q 0,-29.14313 -25.74,-29.14313 l -10.20938,0 0,58.905 8.22938,0 q 27.72,0 27.72,-29.76187 z" />
- <path d="m 583.79063,182.53125 q -6.00188,0 -9.405,3.83625 -3.40313,3.77438 -3.89813,10.76625 l 26.4825,0 q -0.12375,-6.99187 -3.65062,-10.76625 -3.52688,-3.83625 -9.52875,-3.83625 z m 2.66062,58.28625 q -16.70625,0 -26.11125,-9.21937 -9.405,-9.21938 -9.405,-26.11125 0,-17.38688 8.6625,-26.85375 8.72438,-9.52875 24.06938,-9.52875 14.66437,0 22.83187,8.35312 8.1675,8.35313 8.1675,23.07938 l 0,9.1575 -44.61187,0 q 0.30937,8.04375 4.76437,12.56062 4.455,4.51688 12.49875,4.51688 6.24938,0 11.81813,-1.29938 5.56875,-1.29937 11.6325,-4.14562 l 0,14.6025 q -4.95,2.475 -10.58063,3.65062 -5.63062,1.2375 -13.73625,1.2375 z" />
- <path d="m 678.3975,219.0375 q 0,10.6425 -7.425,16.21125 -7.36312,5.56875 -22.08937,5.56875 -7.54875,0 -12.87,-1.05187 -5.32125,-0.99 -9.96188,-2.97 l 0,-15.5925 q 5.25938,2.475 11.81813,4.14562 6.62062,1.67063 11.6325,1.67063 10.27125,0 10.27125,-5.94 0,-2.2275 -1.36125,-3.58875 -1.36125,-1.42313 -4.7025,-3.15563 -3.34125,-1.79437 -8.91,-4.14562 -7.98188,-3.34125 -11.75625,-6.1875 -3.7125,-2.84625 -5.445,-6.49688 -1.67063,-3.7125 -1.67063,-9.09562 0,-9.21938 7.11563,-14.23125 7.1775,-5.07375 20.295,-5.07375 12.49875,0 24.31687,5.445 l -5.6925,13.6125 q -5.1975,-2.2275 -9.71437,-3.65063 -4.51688,-1.42312 -9.21938,-1.42312 -8.35312,0 -8.35312,4.51687 0,2.53688 2.66062,4.39313 2.7225,1.85625 11.81813,5.50687 8.10562,3.27938 11.88,6.12563 3.77437,2.84625 5.56875,6.55875 1.79437,3.7125 1.79437,8.84812 z" />
- <path d="m 711.37688,201.96 8.22937,-10.51875 19.36688,-21.0375 21.285,0 -27.4725,30.00938 29.14312,39.16687 -21.78,0 -19.92375,-28.02937 -8.10562,6.49687 0,21.5325 -18.87188,0 0,-96.2775 18.87188,0 0,42.94125 -0.99,15.71625 0.2475,0 z" />
- <path d="m 801.09562,225.78188 q 4.95,0 11.88,-2.16563 l 0,14.04563 q -7.05375,3.15562 -17.325,3.15562 -11.32313,0 -16.52063,-5.6925 -5.13562,-5.75437 -5.13562,-17.20125 l 0,-33.35062 -9.03375,0 0,-7.98188 10.395,-6.31125 5.445,-14.6025 12.06562,0 0,14.72625 19.36688,0 0,14.16938 -19.36688,0 0,33.35062 q 0,4.02188 2.2275,5.94 2.28938,1.91813 6.00188,1.91813 z" />
- <path d="m 841.93312,204.86813 q 0,10.27125 3.34125,15.53062 3.40313,5.25938 11.01375,5.25938 7.54875,0 10.82813,-5.1975 3.34125,-5.25938 3.34125,-15.5925 0,-10.27125 -3.34125,-15.40688 -3.34125,-5.13562 -10.95188,-5.13562 -7.54875,0 -10.89,5.13562 -3.34125,5.07375 -3.34125,15.40688 z m 47.82938,0 q 0,16.89187 -8.91,26.42062 -8.91,9.52875 -24.81188,9.52875 -9.96187,0 -17.5725,-4.33125 -7.61062,-4.39312 -11.69437,-12.56062 -4.08375,-8.1675 -4.08375,-19.0575 0,-16.95375 8.84812,-26.35875 8.84813,-9.405 24.87375,-9.405 9.96188,0 17.5725,4.33125 7.61063,4.33125 11.69438,12.43687 4.08375,8.10563 4.08375,18.99563 z" />
- <path d="m 943.34627,240.8175 q -12.18938,0 -19.11938,-8.84812 l -0.99,0 q 0.99,8.6625 0.99,10.02375 l 0,28.02937 -18.87187,0 0,-99.61875 15.345,0 2.66062,8.97188 0.86625,0 q 6.62063,-10.27125 19.61438,-10.27125 12.25125,0 19.18125,9.46687 6.93,9.46688 6.93,26.29688 0,11.07562 -3.27938,19.24312 -3.2175,8.1675 -9.21937,12.43688 -6.00188,4.26937 -14.1075,4.26937 z m -5.56875,-56.61562 q -6.99188,0 -10.20938,4.33125 -3.2175,4.26937 -3.34125,14.16937 l 0,2.04188 q 0,11.1375 3.27938,15.96375 3.34125,4.82625 10.51875,4.82625 12.68437,0 12.68437,-20.91375 0,-10.20938 -3.15562,-15.28313 -3.09375,-5.13562 -9.77625,-5.13562 z" />
- <path d="m 1062.3938,239.58 -3.6507,-9.405 -0.495,0 q -4.7643,6.00188 -9.8381,8.35313 -5.0119,2.28937 -13.1175,2.28937 -9.9619,0 -15.7162,-5.6925 -5.6925,-5.6925 -5.6925,-16.21125 0,-11.01375 7.6725,-16.21125 7.7343,-5.25937 23.265,-5.81625 l 12.0037,-0.37125 0,-3.03187 q 0,-10.51875 -10.7662,-10.51875 -8.2913,0 -19.4907,5.01187 L 1020.3188,175.23 q 11.9418,-6.24937 26.4825,-6.24937 13.9218,0 21.3468,6.06375 7.425,6.06375 7.425,18.43875 l 0,46.09687 -13.1793,0 z m -5.5688,-32.05125 -7.3012,0.2475 q -8.2294,0.2475 -12.2513,2.97 -4.0219,2.7225 -4.0219,8.29125 0,7.98188 9.1575,7.98188 6.5588,0 10.4569,-3.77438 3.96,-3.77437 3.96,-10.02375 l 0,-5.6925 z" />
- <path d="m 1132.9312,240.8175 q -12.1893,0 -19.1193,-8.84812 l -0.99,0 q 0.99,8.6625 0.99,10.02375 l 0,28.02937 -18.8719,0 0,-99.61875 15.345,0 2.6606,8.97188 0.8663,0 q 6.6206,-10.27125 19.6143,-10.27125 12.2513,0 19.1813,9.46687 6.93,9.46688 6.93,26.29688 0,11.07562 -3.2794,19.24312 -3.2175,8.1675 -9.2194,12.43688 -6.0018,4.26937 -14.1075,4.26937 z m -5.5687,-56.61562 q -6.9919,0 -10.2094,4.33125 -3.2175,4.26937 -3.3412,14.16937 l 0,2.04188 q 0,11.1375 3.2793,15.96375 3.3413,4.82625 10.5188,4.82625 12.6844,0 12.6844,-20.91375 0,-10.20938 -3.1557,-15.28313 -3.0937,-5.13562 -9.7762,-5.13562 z" />
- <path d="m 1213.1213,240.8175 q -12.1894,0 -19.1194,-8.84812 l -0.99,0 q 0.99,8.6625 0.99,10.02375 l 0,28.02937 -18.8719,0 0,-99.61875 15.345,0 2.6607,8.97188 0.8662,0 q 6.6206,-10.27125 19.6144,-10.27125 12.2512,0 19.1812,9.46687 6.93,9.46688 6.93,26.29688 0,11.07562 -3.2793,19.24312 -3.2175,8.1675 -9.2194,12.43688 -6.0019,4.26937 -14.1075,4.26937 z m -5.5688,-56.61562 q -6.9918,0 -10.2093,4.33125 -3.2175,4.26937 -3.3413,14.16937 l 0,2.04188 q 0,11.1375 3.2794,15.96375 3.3412,4.82625 10.5187,4.82625 12.6844,0 12.6844,-20.91375 0,-10.20938 -3.1556,-15.28313 -3.0938,-5.13562 -9.7763,-5.13562 z" /></g>
- <g id="text12" style="fill:#ffffff">
- <path d="m 544.42648,342.54001 -5.84719,0 -10.26738,-34.07379 q -0.7309,-2.2623 -1.63582,-5.70797 -0.90492,-3.44566 -0.93973,-4.14176 -0.7657,4.59422 -2.43632,10.05856 l -9.95414,33.86496 -5.84719,0 -13.53902,-50.88445 6.26484,0 8.03988,31.42863 q 1.67063,6.61289 2.43633,11.97281 0.93973,-6.36926 2.78437,-12.46008 l 9.11883,-30.94136 6.26485,0 9.57128,31.2198 q 1.67063,5.39473 2.81918,12.18164 0.66129,-4.94226 2.50594,-12.04242 l 8.00508,-31.35902 6.26484,0 -13.60863,50.88445 z" />
- <path d="m 570.91285,342.54001 -5.77758,0 0,-38.14594 5.77758,0 0,38.14594 z M 564.648,294.05708 q 0,-1.98387 0.97453,-2.88879 0.97454,-0.93973 2.43633,-0.93973 1.39219,0 2.40153,0.93973 1.00933,0.93973 1.00933,2.88879 0,1.94906 -1.00933,2.92359 -1.00934,0.93973 -2.40153,0.93973 -1.46179,0 -2.43633,-0.93973 -0.97453,-0.97453 -0.97453,-2.92359 z" />
- <path d="m 609.33722,342.54001 0,-24.67652 q 0,-4.66383 -2.12309,-6.96094 -2.12308,-2.29711 -6.64769,-2.29711 -5.98641,0 -8.77078,3.23683 -2.78438,3.23684 -2.78438,10.68504 l 0,20.0127 -5.77758,0 0,-38.14594 4.69864,0 0.93972,5.2207 0.27844,0 q 1.77504,-2.81917 4.97707,-4.35058 3.20203,-1.56621 7.13496,-1.56621 6.89133,0 10.3718,3.34125 3.48047,3.30644 3.48047,10.61543 l 0,24.88535 -5.77758,0 z" />
- <path d="m 652.91269,337.42372 -0.31324,0 q -4.00254,5.81238 -11.97281,5.81238 -7.48301,0 -11.65957,-5.11629 -4.14176,-5.11629 -4.14176,-14.54836 0,-9.43207 4.17656,-14.65277 4.17656,-5.2207 11.62477,-5.2207 7.76144,0 11.9032,5.63836 l 0.45246,0 -0.24363,-2.74957 -0.13922,-2.67996 0,-15.52289 5.77758,0 0,54.15609 -4.69864,0 -0.7657,-5.11629 z m -11.55516,0.97453 q 5.9168,0 8.56196,-3.20203 2.67996,-3.23684 2.67996,-10.4066 l 0,-1.21817 q 0,-8.10949 -2.71477,-11.55515 -2.67996,-3.48047 -8.59675,-3.48047 -5.08149,0 -7.79625,3.96773 -2.67997,3.93293 -2.67997,11.1375 0,7.30899 2.67997,11.03309 2.67996,3.7241 7.86585,3.7241 z" />
- <path d="m 703.58832,323.43224 q 0,9.32765 -4.69863,14.58316 -4.69864,5.2207 -12.98215,5.2207 -5.11629,0 -9.08403,-2.40152 -3.96773,-2.40152 -6.12562,-6.89133 -2.15789,-4.4898 -2.15789,-10.51101 0,-9.32766 4.66383,-14.51356 4.66383,-5.2207 12.94734,-5.2207 8.00508,0 12.70371,5.32512 4.73344,5.32511 4.73344,14.40914 z m -29.06191,0 q 0,7.30898 2.92359,11.1375 2.92359,3.82851 8.59676,3.82851 5.67316,0 8.59675,-3.79371 2.9584,-3.82852 2.9584,-11.1723 0,-7.27418 -2.9584,-11.03309 -2.92359,-3.79371 -8.66636,-3.79371 -5.67317,0 -8.56196,3.7241 -2.88878,3.7241 -2.88878,11.1027 z" />
- <path d="m 744.83187,342.54001 -6.99575,-22.37942 q -0.66129,-2.05347 -2.47113,-9.32765 l -0.27844,0 q -1.39218,6.09082 -2.43633,9.39726 l -7.20457,22.30981 -6.6825,0 -10.4066,-38.14594 6.05602,0 q 3.6893,14.37434 5.60355,21.89215 1.94907,7.51781 2.2275,10.12816 l 0.27844,0 q 0.38285,-1.98386 1.21816,-5.11629 0.87012,-3.16722 1.49661,-5.01187 l 6.99574,-21.89215 6.26484,0 6.82172,21.89215 q 1.94906,5.98641 2.64516,10.05855 l 0.27843,0 q 0.13922,-1.25296 0.7309,-3.86332 0.62649,-2.61035 7.27418,-28.08738 l 5.98641,0 -10.54582,38.14594 -6.85652,0 z" />
- <path d="m 793.69766,332.13341 q 0,5.32511 -3.96774,8.2139 -3.96773,2.88879 -11.1375,2.88879 -7.58742,0 -11.83359,-2.40152 l 0,-5.35992 q 2.74957,1.39218 5.88199,2.19269 3.16723,0.80051 6.09082,0.80051 4.52461,0 6.96094,-1.42699 2.43633,-1.4618 2.43633,-4.4202 0,-2.2275 -1.94907,-3.79371 -1.91425,-1.60101 -7.51781,-3.7589 -5.32511,-1.98387 -7.58742,-3.44567 -2.2275,-1.4966 -3.34125,-3.37605 -1.07894,-1.87946 -1.07894,-4.48981 0,-4.66383 3.79371,-7.34379 3.79371,-2.71476 10.4066,-2.71476 6.16043,0 12.04242,2.50594 l -2.05348,4.69863 q -5.74277,-2.36672 -10.4066,-2.36672 -4.10695,0 -6.19523,1.28777 -2.08828,1.28778 -2.08828,3.55008 0,1.53141 0.7657,2.61035 0.80051,1.07895 2.54074,2.05348 1.74024,0.97453 6.6825,2.81918 6.78691,2.47113 9.15363,4.97707 2.40153,2.50594 2.40153,6.29965 z" />
- <path d="m 809.11612,334.25649 0.52207,0.80051 q -0.90492,3.48047 -2.61035,8.07469 -1.70543,4.62902 -3.55008,8.59676 l -4.35059,0 q 0.93973,-3.61969 2.05348,-8.94481 1.14856,-5.32512 1.60102,-8.52715 l 6.33445,0 z" />
- <path d="m 884.15502,317.02817 q 0,12.21645 -6.19524,19.21219 -6.16043,6.99574 -17.15871,6.99574 -11.24191,0 -17.36754,-6.85652 -6.09082,-6.89133 -6.09082,-19.42102 0,-12.42527 6.12563,-19.24699 6.12562,-6.85652 17.40234,-6.85652 10.96348,0 17.12391,6.96094 6.16043,6.96093 6.16043,19.21218 z m -40.54746,0 q 0,10.337 4.38539,15.69692 4.42019,5.32511 12.80812,5.32511 8.45754,0 12.77332,-5.32511 4.31578,-5.32512 4.31578,-15.69692 0,-10.26738 -4.31578,-15.55769 -4.28098,-5.32512 -12.70371,-5.32512 -8.45754,0 -12.87773,5.35992 -4.38539,5.32512 -4.38539,15.52289 z" />
- <path d="m 924.25001,329.00099 q 0,6.7173 -4.87265,10.47621 -4.87266,3.7589 -13.22578,3.7589 -9.04922,0 -13.92188,-2.33191 l 0,-5.70797 q 3.13242,1.32258 6.82172,2.08828 3.6893,0.7657 7.30898,0.7657 5.9168,0 8.91,-2.2275 2.99321,-2.2623 2.99321,-6.26484 0,-2.64516 -1.07895,-4.31578 -1.04414,-1.70543 -3.55008,-3.13242 -2.47113,-1.42699 -7.55261,-3.23684 -7.10016,-2.54074 -10.16297,-6.02121 -3.02801,-3.48047 -3.02801,-9.08402 0,-5.88199 4.4202,-9.36246 4.42019,-3.48047 11.69437,-3.48047 7.58742,0 13.95668,2.78437 l -1.84465,5.1511 q -6.29965,-2.64516 -12.25125,-2.64516 -4.69863,0 -7.34379,2.01867 -2.64515,2.01867 -2.64515,5.60356 0,2.64515 0.97453,4.35058 0.97453,1.67063 3.27164,3.09762 2.33191,1.39219 7.10016,3.09762 8.00507,2.85398 10.99828,6.12562 3.028,3.27164 3.028,8.49235 z" />
- <path d="m 987.03767,342.54001 -6.7173,0 -13.67824,-22.37942 -13.92188,22.37942 -6.26484,0 16.91508,-26.59078 -15.76653,-24.29367 6.54328,0 12.63411,20.15191 12.73851,-20.15191 6.29965,0 -15.76652,24.08484 16.98468,26.79961 z" />
- <path d="m 999.56738,334.25649 0.52212,0.80051 q -0.90497,3.48047 -2.6104,8.07469 -1.70543,4.62902 -3.55008,8.59676 l -4.35058,0 q 0.93972,-3.61969 2.05347,-8.94481 1.14856,-5.32512 1.60102,-8.52715 l 6.33445,0 z" />
- <path d="m 1030.4391,342.54001 0,-50.88445 5.9168,0 0,45.52453 22.449,0 0,5.35992 -28.3658,0 z" />
- <path d="m 1072.3788,342.54001 -5.7776,0 0,-38.14594 5.7776,0 0,38.14594 z m -6.2649,-48.48293 q 0,-1.98387 0.9746,-2.88879 0.9745,-0.93973 2.4363,-0.93973 1.3922,0 2.4015,0.93973 1.0094,0.93973 1.0094,2.88879 0,1.94906 -1.0094,2.92359 -1.0093,0.93973 -2.4015,0.93973 -1.4618,0 -2.4363,-0.93973 -0.9746,-0.97453 -0.9746,-2.92359 z" />
- <path d="m 1110.8032,342.54001 0,-24.67652 q 0,-4.66383 -2.1231,-6.96094 -2.1231,-2.29711 -6.6477,-2.29711 -5.9864,0 -8.7708,3.23683 -2.7844,3.23684 -2.7844,10.68504 l 0,20.0127 -5.7775,0 0,-38.14594 4.6986,0 0.9397,5.2207 0.2785,0 q 1.775,-2.81917 4.977,-4.35058 3.2021,-1.56621 7.135,-1.56621 6.8913,0 10.3718,3.34125 3.4805,3.30644 3.4805,10.61543 l 0,24.88535 -5.7776,0 z" />
- <path d="m 1133.8439,304.39407 0,24.74613 q 0,4.66383 2.123,6.96094 2.1231,2.29711 6.6477,2.29711 5.9864,0 8.736,-3.27164 2.7844,-3.27164 2.7844,-10.68504 l 0,-20.0475 5.7776,0 0,38.14594 -4.7683,0 -0.8353,-5.11629 -0.3132,0 q -1.7751,2.81918 -4.9423,4.31578 -3.1324,1.4966 -7.1698,1.4966 -6.9609,0 -10.4414,-3.30644 -3.4456,-3.30645 -3.4456,-10.58063 l 0,-24.95496 5.8472,0 z" />
- <path d="m 1181.3174,323.01458 -13.2606,-18.62051 6.5781,0 10.0586,14.61797 10.0237,-14.61797 6.5085,0 -13.2606,18.62051 13.9567,19.52543 -6.5433,0 -10.685,-15.45328 -10.7895,15.45328 -6.5433,0 13.9567,-19.52543 z" />
- </g>
-</svg>
+<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" height="60" viewBox="0 0 1346.4 475.2" width="170" version="1.1" y="0px" x="0px" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" enable-background="new 0 0 792 612"><rect rx="50" ry="50" height="475.2" width="1346.4" y="-3.5527e-15" x="-2.8405e-15"/><path d="m19 16c-1.5 0-3 1.5-3 3v21l-6 3v1.5s0 1.5 1.5 1.5h45c1.5 0 1.5-1.5 1.5-1.5v-1.5l-6-3v-21c0-1.5-1.5-3-3-3h-30zm68.531 2.094v12.156h2.383v-2.719l1.024-0.82 2.515 3.539h2.75l-3.68-4.945 3.469-3.789h-2.687l-2.446 2.656-1.039 1.328h-0.031l0.125-1.984v-5.422h-2.383zm-29.093 0.734v11.422h3.234c2.021 0 3.565-0.5 4.633-1.5 1.073-1 1.609-2.44 1.609-4.32 0-1.766-0.516-3.141-1.547-4.125-1.031-0.985-2.479-1.477-4.344-1.477h-3.585zm-39.438 0.16h30v18.012h-30v-18.012zm79.586 0.668l-0.688 1.844-1.312 0.797v1.008h1.141v4.211c0 0.963 0.216 1.687 0.648 2.172 0.437 0.479 1.133 0.718 2.085 0.718 0.87 0 1.59-0.133 2.19-0.398v-1.774c-0.58 0.183-1.08 0.274-1.5 0.274-0.31 0-0.57-0.081-0.76-0.242-0.19-0.162-0.28-0.412-0.28-0.75v-4.211h2.44v-1.789h-2.44v-1.86h-1.524zm-37.727 1.156h1.289c2.167 0 3.25 1.227 3.25 3.68 0 2.505-1.166 3.758-3.5 3.758h-1.039v-7.438zm71.311 0.524c-1.22 0-2.34 0.263-3.34 0.789l0.79 1.609c0.94-0.422 1.76-0.632 2.46-0.632 0.9 0 1.36 0.442 1.36 1.328v0.382l-1.52 0.047c-1.31 0.047-2.28 0.292-2.94 0.735-0.64 0.437-0.96 1.12-0.96 2.047 0 0.885 0.24 1.567 0.71 2.047 0.49 0.479 1.15 0.718 1.99 0.718 0.68 0 1.23-0.096 1.66-0.289 0.42-0.198 0.84-0.549 1.24-1.055h0.06l0.46 1.188h1.66v-5.82c0-1.042-0.31-1.818-0.93-2.328-0.63-0.511-1.53-0.766-2.7-0.766zm-58.475 0.016c-1.291 0-2.304 0.401-3.039 1.203-0.729 0.797-1.094 1.927-1.094 3.39 0 1.422 0.396 2.521 1.188 3.297s1.891 1.164 3.297 1.164c0.682 0 1.26-0.052 1.734-0.156 0.474-0.099 0.92-0.253 1.336-0.461v-1.844c-0.51 0.24-1 0.414-1.469 0.524-0.468 0.109-0.966 0.164-1.492 0.164-0.677 0-1.203-0.19-1.578-0.571-0.375-0.38-0.575-0.908-0.601-1.585h5.632v-1.157c0-1.239-0.343-2.211-1.031-2.914-0.687-0.703-1.648-1.054-2.883-1.054zm8.797 0c-1.104 0-1.958 0.213-2.562 0.64-0.599 0.422-0.899 1.021-0.899 1.797 0 0.453 0.071 0.836 0.211 1.149 0.146 0.307 0.375 0.58 0.688 0.82 0.317 0.239 0.812 0.5 1.484 0.781 0.469 0.198 0.844 0.372 1.125 0.523 0.281 0.146 0.479 0.279 0.594 0.399 0.114 0.115 0.172 0.266 0.172 0.453 0 0.5-0.433 0.75-1.297 0.75-0.422 0-0.912-0.07-1.469-0.211-0.552-0.141-1.049-0.315-1.492-0.523v1.968c0.391 0.167 0.81 0.292 1.258 0.375 0.448 0.089 0.989 0.133 1.625 0.133 1.239 0 2.169-0.234 2.789-0.703 0.625-0.469 0.937-1.151 0.937-2.047 0-0.432-0.075-0.804-0.226-1.117-0.151-0.312-0.386-0.588-0.703-0.828-0.318-0.24-0.818-0.497-1.5-0.773-0.766-0.308-1.263-0.54-1.493-0.696-0.224-0.156-0.336-0.341-0.336-0.554 0-0.381 0.352-0.571 1.055-0.571 0.396 0 0.784 0.06 1.164 0.18s0.789 0.273 1.227 0.461l0.718-1.719c-0.994-0.458-2.018-0.687-3.07-0.687zm25.638 0c-1.35 0-2.39 0.395-3.14 1.187-0.74 0.792-1.11 1.901-1.11 3.328 0 0.917 0.17 1.719 0.51 2.406 0.34 0.688 0.84 1.217 1.48 1.586 0.64 0.365 1.38 0.547 2.22 0.547 1.33 0 2.38-0.401 3.13-1.203s1.12-1.914 1.12-3.336c0-0.916-0.17-1.716-0.51-2.398-0.35-0.683-0.84-1.206-1.48-1.571-0.64-0.364-1.38-0.546-2.22-0.546zm11.04 0c-1.09 0-1.92 0.432-2.47 1.296h-0.11l-0.34-1.132h-1.94v12.578h2.39v-3.539c0-0.115-0.05-0.537-0.13-1.266h0.13c0.58 0.745 1.38 1.117 2.41 1.117 0.68 0 1.28-0.179 1.78-0.539 0.51-0.359 0.89-0.883 1.16-1.57 0.28-0.688 0.42-1.498 0.42-2.43 0-1.416-0.29-2.523-0.88-3.32-0.58-0.797-1.39-1.195-2.42-1.195zm23.94 0c-1.09 0-1.92 0.432-2.48 1.296h-0.11l-0.33-1.132h-1.94v12.578h2.38v-3.539c0-0.115-0.04-0.537-0.12-1.266h0.12c0.59 0.745 1.39 1.117 2.42 1.117 0.68 0 1.27-0.179 1.78-0.539 0.5-0.359 0.89-0.883 1.16-1.57 0.28-0.688 0.42-1.498 0.42-2.43 0-1.416-0.3-2.523-0.88-3.32s-1.39-1.195-2.42-1.195zm10.12 0c-1.09 0-1.91 0.432-2.47 1.296h-0.11l-0.34-1.132h-1.93v12.578h2.38v-3.539c0-0.115-0.04-0.537-0.13-1.266h0.13c0.58 0.745 1.39 1.117 2.41 1.117 0.68 0 1.28-0.179 1.78-0.539 0.51-0.359 0.9-0.883 1.17-1.57 0.27-0.688 0.41-1.498 0.41-2.43 0-1.416-0.29-2.523-0.87-3.32-0.59-0.797-1.39-1.195-2.43-1.195zm-79.519 1.695c0.505 0 0.906 0.161 1.203 0.484 0.297 0.318 0.451 0.771 0.461 1.36h-3.344c0.042-0.589 0.206-1.042 0.492-1.36 0.287-0.323 0.683-0.484 1.188-0.484zm44.699 0.211c0.56 0 0.97 0.216 1.23 0.648 0.27 0.427 0.4 1.071 0.4 1.93 0 1.76-0.53 2.641-1.6 2.641-0.61 0-1.05-0.204-1.33-0.61s-0.41-1.078-0.41-2.015v-0.258c0.01-0.834 0.15-1.43 0.42-1.789 0.27-0.365 0.7-0.547 1.29-0.547zm23.93 0c0.57 0 0.98 0.216 1.24 0.648 0.26 0.427 0.4 1.071 0.4 1.93 0 1.76-0.54 2.641-1.6 2.641-0.61 0-1.05-0.204-1.33-0.61s-0.42-1.078-0.42-2.015v-0.258c0.01-0.834 0.15-1.43 0.42-1.789 0.28-0.365 0.71-0.547 1.29-0.547zm10.13 0c0.56 0 0.97 0.216 1.23 0.648 0.27 0.427 0.4 1.071 0.4 1.93 0 1.76-0.53 2.641-1.6 2.641-0.6 0-1.05-0.204-1.33-0.61-0.27-0.406-0.41-1.078-0.41-2.015v-0.258c0.01-0.834 0.15-1.43 0.42-1.789 0.27-0.365 0.7-0.547 1.29-0.547zm-44.37 0.015c0.64 0 1.1 0.217 1.38 0.649 0.29 0.432 0.43 1.081 0.43 1.945 0 0.87-0.14 1.526-0.43 1.969-0.27 0.437-0.73 0.656-1.36 0.656-0.64 0-1.11-0.221-1.39-0.664s-0.43-1.096-0.43-1.961c0-0.87 0.15-1.518 0.43-1.945 0.28-0.432 0.74-0.649 1.37-0.649zm25.34 2.93v0.719c0 0.526-0.17 0.948-0.5 1.266-0.33 0.317-0.77 0.476-1.32 0.476-0.77 0-1.16-0.336-1.16-1.008 0-0.468 0.17-0.817 0.51-1.047 0.34-0.229 0.85-0.354 1.55-0.375l0.92-0.031zm-51.042 10.209v1.959l0.018 0.34 0.031 0.346h-0.056c-0.349-0.475-0.851-0.711-1.504-0.711-0.627 0-1.116 0.218-1.467 0.658-0.352 0.439-0.527 1.058-0.527 1.851 0 0.794 0.172 1.406 0.521 1.836 0.352 0.431 0.843 0.647 1.473 0.647 0.671 0 1.175-0.245 1.511-0.734h0.04l0.097 0.646h0.594v-6.838h-0.731zm-10.673 0.233c-0.123 0-0.227 0.04-0.309 0.119-0.082 0.076-0.123 0.198-0.123 0.365 0 0.164 0.041 0.287 0.123 0.369 0.082 0.079 0.186 0.117 0.309 0.117 0.117 0 0.217-0.038 0.302-0.117 0.085-0.082 0.127-0.205 0.127-0.369s-0.042-0.286-0.127-0.365-0.185-0.119-0.302-0.119zm63.315 0c-0.12 0-0.23 0.04-0.31 0.119-0.08 0.076-0.12 0.198-0.12 0.365 0 0.164 0.04 0.287 0.12 0.369 0.08 0.079 0.19 0.117 0.31 0.117s0.22-0.038 0.3-0.117c0.09-0.082 0.13-0.205 0.13-0.369s-0.04-0.286-0.13-0.365c-0.08-0.079-0.18-0.119-0.3-0.119zm-26.34 0.08c-0.95 0-1.69 0.288-2.2 0.865-0.52 0.574-0.78 1.384-0.78 2.43 0 1.054 0.26 1.873 0.77 2.453 0.52 0.577 1.25 0.865 2.2 0.865 0.92 0 1.64-0.294 2.16-0.883 0.53-0.589 0.78-1.397 0.78-2.426 0-1.031-0.25-1.84-0.77-2.425-0.52-0.586-1.24-0.879-2.16-0.879zm6.07 0.007c-0.61 0-1.1 0.147-1.47 0.44-0.38 0.293-0.56 0.686-0.56 1.182 0 0.471 0.13 0.855 0.38 1.148 0.26 0.293 0.69 0.546 1.28 0.76 0.43 0.152 0.75 0.288 0.96 0.408s0.36 0.253 0.45 0.396c0.09 0.141 0.13 0.323 0.13 0.545 0 0.337-0.12 0.601-0.38 0.791-0.25 0.188-0.62 0.282-1.12 0.282-0.31 0-0.61-0.034-0.92-0.098-0.31-0.065-0.6-0.152-0.87-0.264v0.721c0.41 0.196 1 0.295 1.76 0.295 0.71 0 1.26-0.158 1.67-0.475 0.41-0.316 0.62-0.757 0.62-1.322 0-0.439-0.13-0.797-0.38-1.072-0.26-0.276-0.72-0.533-1.39-0.774-0.4-0.143-0.7-0.275-0.9-0.392-0.19-0.12-0.33-0.25-0.41-0.391-0.08-0.143-0.13-0.326-0.13-0.549 0-0.301 0.12-0.537 0.34-0.707s0.53-0.256 0.93-0.256c0.5 0 1.01 0.112 1.54 0.334l0.24-0.65c-0.54-0.234-1.13-0.352-1.77-0.352zm-52.401 0.092l1.709 6.426h0.738l1.256-4.275c0.141-0.46 0.244-0.885 0.309-1.272 0.003 0.059 0.043 0.234 0.119 0.524s0.144 0.53 0.205 0.72l1.297 4.303h0.738l1.719-6.426h-0.791l-1.012 3.961c-0.155 0.598-0.26 1.104-0.316 1.52-0.097-0.572-0.215-1.083-0.356-1.537l-1.209-3.944h-0.791l-1.15 3.908c-0.155 0.513-0.272 1.037-0.352 1.573-0.064-0.451-0.168-0.955-0.308-1.512l-1.014-3.969h-0.791zm57.281 0l1.99 3.069-2.14 3.357h0.79l1.76-2.826 1.73 2.826h0.84l-2.14-3.385 1.99-3.041h-0.79l-1.61 2.545-1.6-2.545h-0.82zm10.46 0v6.426h3.58v-0.678h-2.84v-5.748h-0.74zm-21.41 0.569c0.7 0 1.24 0.223 1.6 0.671 0.36 0.446 0.54 1.101 0.54 1.965 0 0.873-0.18 1.533-0.54 1.981s-0.9 0.674-1.61 0.674-1.25-0.226-1.62-0.674c-0.37-0.451-0.55-1.111-0.55-1.981 0-0.858 0.18-1.512 0.55-1.961 0.37-0.451 0.91-0.675 1.63-0.675zm-32.784 0.953c-0.331 0-0.631 0.065-0.9 0.197-0.27 0.129-0.48 0.311-0.629 0.549h-0.035l-0.118-0.658h-0.593v4.816h0.728v-2.527c0-0.627 0.117-1.077 0.352-1.35 0.234-0.272 0.603-0.408 1.107-0.408 0.381 0 0.661 0.097 0.84 0.291 0.179 0.193 0.268 0.486 0.268 0.879v3.115h0.73v-3.143c0-0.615-0.146-1.061-0.439-1.339-0.293-0.282-0.731-0.422-1.311-0.422zm10.719 0c-0.697 0-1.242 0.218-1.635 0.658-0.393 0.436-0.588 1.049-0.588 1.834 0 0.507 0.09 0.948 0.272 1.326 0.181 0.378 0.439 0.669 0.773 0.871s0.716 0.303 1.147 0.303c0.697 0 1.245-0.221 1.64-0.66 0.396-0.443 0.592-1.055 0.592-1.84 0-0.765-0.199-1.372-0.598-1.82-0.395-0.449-0.929-0.672-1.603-0.672zm11.957 0c-0.557 0-0.993 0.113-1.313 0.342-0.319 0.225-0.48 0.535-0.48 0.927 0 0.22 0.046 0.408 0.137 0.567 0.093 0.158 0.234 0.301 0.421 0.427 0.191 0.123 0.511 0.267 0.959 0.434 0.472 0.182 0.788 0.34 0.95 0.475 0.164 0.131 0.246 0.293 0.246 0.48 0 0.249-0.104 0.434-0.309 0.557-0.205 0.12-0.498 0.181-0.879 0.181-0.246 0-0.503-0.034-0.769-0.101-0.264-0.068-0.511-0.16-0.743-0.278v0.678c0.358 0.202 0.856 0.303 1.495 0.303 0.603 0 1.072-0.122 1.406-0.365 0.337-0.244 0.497-0.589 0.497-1.037 0-0.32-0.1-0.584-0.3-0.795-0.199-0.211-0.583-0.421-1.154-0.629-0.416-0.156-0.697-0.274-0.844-0.356-0.146-0.082-0.255-0.169-0.322-0.26-0.065-0.09-0.096-0.201-0.096-0.33 0-0.19 0.088-0.338 0.264-0.447 0.176-0.108 0.435-0.162 0.781-0.162 0.393 0 0.831 0.1 1.315 0.299l0.256-0.594c-0.492-0.211-1-0.316-1.518-0.316zm40.638 0c-0.33 0-0.63 0.065-0.9 0.197-0.27 0.129-0.48 0.311-0.63 0.549h-0.03l-0.12-0.658h-0.59v4.816h0.73v-2.527c0-0.627 0.11-1.077 0.35-1.35 0.23-0.272 0.6-0.408 1.1-0.408 0.39 0 0.67 0.097 0.84 0.291 0.18 0.193 0.27 0.486 0.27 0.879v3.115h0.73v-3.143c0-0.615-0.14-1.061-0.44-1.339-0.29-0.282-0.73-0.422-1.31-0.422zm-67.875 0.088v4.816h0.729v-4.816h-0.729zm18.084 0l1.313 4.816h0.844l0.91-2.816c0.088-0.279 0.191-0.675 0.308-1.188h0.036c0.152 0.612 0.254 1.005 0.31 1.178l0.885 2.826h0.865l1.332-4.816h-0.756c-0.559 2.144-0.867 3.327-0.92 3.546-0.049 0.22-0.08 0.381-0.091 0.487h-0.036c-0.058-0.343-0.169-0.766-0.334-1.27l-0.861-2.763h-0.791l-0.883 2.763c-0.052 0.156-0.116 0.366-0.189 0.633-0.07 0.264-0.122 0.48-0.154 0.647h-0.036c-0.023-0.22-0.117-0.647-0.281-1.28-0.161-0.633-0.396-1.553-0.707-2.763h-0.764zm45.231 0v4.816h0.73v-4.816h-0.73zm7.75 0v3.15c0 0.612 0.15 1.058 0.44 1.336s0.73 0.418 1.32 0.418c0.34 0 0.64-0.064 0.9-0.19 0.27-0.126 0.48-0.307 0.63-0.544h0.04l0.1 0.646h0.6v-4.816h-0.73v2.531c0 0.624-0.11 1.074-0.35 1.349-0.23 0.276-0.6 0.413-1.1 0.413-0.38 0-0.66-0.096-0.84-0.289-0.18-0.194-0.27-0.487-0.27-0.879v-3.125h-0.74zm5.06 0l1.68 2.351-1.77 2.465h0.83l1.36-1.951 1.35 1.951h0.83l-1.76-2.465 1.67-2.351h-0.82l-1.27 1.845-1.27-1.845h-0.83zm-66.509 0.523c0.498 0 0.86 0.147 1.086 0.439 0.228 0.291 0.341 0.777 0.341 1.459v0.153c0 0.603-0.112 1.042-0.337 1.314-0.223 0.27-0.584 0.405-1.082 0.405-0.437 0-0.767-0.158-0.993-0.471-0.225-0.314-0.338-0.777-0.338-1.393 0-0.606 0.113-1.075 0.338-1.406 0.229-0.334 0.557-0.5 0.985-0.5zm5.642 0.008c0.484 0 0.848 0.159 1.094 0.478 0.249 0.317 0.373 0.783 0.373 1.395 0 0.618-0.124 1.088-0.373 1.41-0.246 0.319-0.608 0.479-1.086 0.479-0.477 0-0.838-0.161-1.084-0.483s-0.369-0.791-0.369-1.406c0-0.621 0.12-1.089 0.363-1.402 0.243-0.314 0.605-0.471 1.082-0.471zm14.747 3.238c-0.04 0.27-0.11 0.63-0.2 1.078-0.1 0.448-0.18 0.824-0.26 1.129h0.55c0.15-0.334 0.3-0.696 0.45-1.086 0.14-0.386 0.25-0.726 0.33-1.019l-0.07-0.102h-0.8zm24.05 0c-0.04 0.27-0.11 0.63-0.2 1.078-0.1 0.448-0.18 0.824-0.26 1.129h0.55c0.15-0.334 0.3-0.696 0.44-1.086 0.15-0.386 0.26-0.726 0.33-1.019l-0.06-0.102h-0.8z" transform="scale(7.92)" fill="#fff"/></svg>
diff --git a/core/img/googleplay.png b/core/img/googleplay.png
index 640c3c2ba08..170a9d0c12c 100644
--- a/core/img/googleplay.png
+++ b/core/img/googleplay.png
Binary files differ
diff --git a/core/js/l10n.js b/core/js/l10n.js
index fb93d7b789e..43cfc7e820f 100644
--- a/core/js/l10n.js
+++ b/core/js/l10n.js
@@ -66,13 +66,19 @@ OC.L10N = {
* @param {Function|String} [pluralForm] optional plural function or plural string
*/
register: function(appName, bundle, pluralForm) {
- this._bundles[appName] = bundle || {};
-
- if (_.isFunction(pluralForm)) {
- this._pluralFunctions[appName] = pluralForm;
+ var self = this;
+ if (_.isUndefined(this._bundles[appName])) {
+ this._bundles[appName] = bundle || {};
+
+ if (_.isFunction(pluralForm)) {
+ this._pluralFunctions[appName] = pluralForm;
+ } else {
+ // generate plural function based on form
+ this._pluralFunctions[appName] = this._generatePluralFunction(pluralForm);
+ }
} else {
- // generate plural function based on form
- this._pluralFunctions[appName] = this._generatePluralFunction(pluralForm);
+ // Theme overwriting the default language
+ _.extend(self._bundles[appName], bundle);
}
},
diff --git a/core/js/tests/specs/l10nSpec.js b/core/js/tests/specs/l10nSpec.js
index bafc7746d6c..2ceb2f4a916 100644
--- a/core/js/tests/specs/l10nSpec.js
+++ b/core/js/tests/specs/l10nSpec.js
@@ -52,6 +52,14 @@ describe('OC.L10N tests', function() {
t(TEST_APP, 'Hello {name}', {name: '<strong>Steve</strong>'}, null, {escape: false})
).toEqual('Hello <strong>Steve</strong>');
});
+ it('keeps old texts when registering existing bundle', function() {
+ OC.L10N.register(TEST_APP, {
+ 'sunny': 'sonnig',
+ 'new': 'neu'
+ });
+ expect(t(TEST_APP, 'sunny')).toEqual('sonnig');
+ expect(t(TEST_APP, 'new')).toEqual('neu');
+ });
});
describe('plurals', function() {
function checkPlurals() {
diff --git a/core/l10n/ar.js b/core/l10n/ar.js
index cd142e37898..798b4ba07cd 100644
--- a/core/l10n/ar.js
+++ b/core/l10n/ar.js
@@ -98,6 +98,8 @@ OC.L10N.register(
"delete" : "حذف",
"access control" : "ضبط الوصول",
"Share" : "شارك",
+ "Share with users or groups …" : "شارِك مع مستخدمين أو مجموعات",
+ "Share with users, groups or remote users …" : "شارِك مع مستخدمين أو مجموعات أو مستخدمين عن بُعد",
"Warning" : "تحذير",
"Delete" : "إلغاء",
"Rename" : "إعادة التسمية",
diff --git a/core/l10n/ar.json b/core/l10n/ar.json
index bf22663adb7..885babf2e64 100644
--- a/core/l10n/ar.json
+++ b/core/l10n/ar.json
@@ -96,6 +96,8 @@
"delete" : "حذف",
"access control" : "ضبط الوصول",
"Share" : "شارك",
+ "Share with users or groups …" : "شارِك مع مستخدمين أو مجموعات",
+ "Share with users, groups or remote users …" : "شارِك مع مستخدمين أو مجموعات أو مستخدمين عن بُعد",
"Warning" : "تحذير",
"Delete" : "إلغاء",
"Rename" : "إعادة التسمية",
diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js
index bac2f7222b6..ec991bf4187 100644
--- a/core/l10n/en_GB.js
+++ b/core/l10n/en_GB.js
@@ -185,6 +185,7 @@ OC.L10N.register(
"({scope})" : "({scope})",
"Delete" : "Delete",
"Rename" : "Rename",
+ "Collaborative tags" : "Collaborative tags",
"The object type is not specified." : "The object type is not specified.",
"Enter new" : "Enter new",
"Add" : "Add",
diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json
index 6139aea21d0..44c88fae998 100644
--- a/core/l10n/en_GB.json
+++ b/core/l10n/en_GB.json
@@ -183,6 +183,7 @@
"({scope})" : "({scope})",
"Delete" : "Delete",
"Rename" : "Rename",
+ "Collaborative tags" : "Collaborative tags",
"The object type is not specified." : "The object type is not specified.",
"Enter new" : "Enter new",
"Add" : "Add",
diff --git a/core/l10n/es.js b/core/l10n/es.js
index d37bc2f60e3..145879a957a 100644
--- a/core/l10n/es.js
+++ b/core/l10n/es.js
@@ -130,6 +130,7 @@ OC.L10N.register(
"Error occurred while checking server setup" : "Ha ocurrido un error al revisar la configuración del servidor",
"Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Su directorio de datos y sus archivos probablemente sean accesibles desde Internet. El archivo .htaccess no está funcionando. Le sugerimos encarecidamente que configure su servidor web de modo que el directorio de datos ya no sea accesible o que mueva el directorio de datos fuera de la raíz de documentos del servidor web.",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "La \"{header}\" cabecera HTTP no está configurado para ser igual a \"{expected}\". Esto puede suponer un riesgo para la seguridad o la privacidad, por lo que se recomienda ajustar esta opción.",
+ "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "La cabecera HTTP \"Strict-Transport-Security\" no está configurada en al menos \"{segundos}\" segundos. Para una mejor seguridad recomendamos que habilite HSTS como se describe en nuestros <a href=\"{docUrl}\">consejos de seguridad</a>.",
"You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Está ingresando a este sitio de internet vía HTTP. Le sugerimos enérgicamente que configure su servidor que utilice HTTPS como se describe en nuestros <a href=\"{docUrl}\">consejos de seguridad</a>.",
"Shared" : "Compartido",
"Shared with {recipients}" : "Compartido con {recipients}",
@@ -166,7 +167,11 @@ OC.L10N.register(
"access control" : "control de acceso",
"Could not unshare" : "No se puede quitar el comparto",
"Share details could not be loaded for this item." : "No se han podido cargar los detalles de compartición para este elemento.",
+ "No users or groups found for {search}" : "No se han encontrado usuarios ni grupos para {search}",
"An error occured. Please try again" : "Un error ocurrió. Por favor reinténtelo nuevamente.",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (at {server})" : "{sharee} (en {server})",
+ "{sharee} (remote)" : "{sharee} (remoto)",
"Share" : "Compartir",
"Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Comparta con personas en otros ownClouds utilizando la sintáxis username@example.com/owncloud",
"Share with users or groups …" : "Compartir con usuarios o grupos ...",
@@ -180,6 +185,7 @@ OC.L10N.register(
"({scope})" : "({scope})",
"Delete" : "Eliminar",
"Rename" : "Renombrar",
+ "Collaborative tags" : "Etiquetas colaborativas",
"The object type is not specified." : "El tipo de objeto no está especificado.",
"Enter new" : "Ingresar nueva",
"Add" : "Agregar",
diff --git a/core/l10n/es.json b/core/l10n/es.json
index 512a096391b..299d6303cec 100644
--- a/core/l10n/es.json
+++ b/core/l10n/es.json
@@ -128,6 +128,7 @@
"Error occurred while checking server setup" : "Ha ocurrido un error al revisar la configuración del servidor",
"Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "Su directorio de datos y sus archivos probablemente sean accesibles desde Internet. El archivo .htaccess no está funcionando. Le sugerimos encarecidamente que configure su servidor web de modo que el directorio de datos ya no sea accesible o que mueva el directorio de datos fuera de la raíz de documentos del servidor web.",
"The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "La \"{header}\" cabecera HTTP no está configurado para ser igual a \"{expected}\". Esto puede suponer un riesgo para la seguridad o la privacidad, por lo que se recomienda ajustar esta opción.",
+ "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "La cabecera HTTP \"Strict-Transport-Security\" no está configurada en al menos \"{segundos}\" segundos. Para una mejor seguridad recomendamos que habilite HSTS como se describe en nuestros <a href=\"{docUrl}\">consejos de seguridad</a>.",
"You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "Está ingresando a este sitio de internet vía HTTP. Le sugerimos enérgicamente que configure su servidor que utilice HTTPS como se describe en nuestros <a href=\"{docUrl}\">consejos de seguridad</a>.",
"Shared" : "Compartido",
"Shared with {recipients}" : "Compartido con {recipients}",
@@ -164,7 +165,11 @@
"access control" : "control de acceso",
"Could not unshare" : "No se puede quitar el comparto",
"Share details could not be loaded for this item." : "No se han podido cargar los detalles de compartición para este elemento.",
+ "No users or groups found for {search}" : "No se han encontrado usuarios ni grupos para {search}",
"An error occured. Please try again" : "Un error ocurrió. Por favor reinténtelo nuevamente.",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (at {server})" : "{sharee} (en {server})",
+ "{sharee} (remote)" : "{sharee} (remoto)",
"Share" : "Compartir",
"Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Comparta con personas en otros ownClouds utilizando la sintáxis username@example.com/owncloud",
"Share with users or groups …" : "Compartir con usuarios o grupos ...",
@@ -178,6 +183,7 @@
"({scope})" : "({scope})",
"Delete" : "Eliminar",
"Rename" : "Renombrar",
+ "Collaborative tags" : "Etiquetas colaborativas",
"The object type is not specified." : "El tipo de objeto no está especificado.",
"Enter new" : "Ingresar nueva",
"Add" : "Agregar",
diff --git a/core/l10n/nb_NO.js b/core/l10n/nb_NO.js
index f013409ecfe..ccae2ebea70 100644
--- a/core/l10n/nb_NO.js
+++ b/core/l10n/nb_NO.js
@@ -179,12 +179,13 @@ OC.L10N.register(
"Error removing share" : "Feil ved fjerning av deling",
"Warning" : "Advarsel",
"Error while sending notification" : "Feil ved sending av varsling",
- "Non-existing tag #{tag}" : "Ikke-eksisterende merkelap #{tag}",
+ "Non-existing tag #{tag}" : "Ikke-eksisterende merkelapp #{tag}",
"not assignable" : "kan ikke tilordnes",
"invisible" : "usynlig",
"({scope})" : "({scope})",
"Delete" : "Slett",
"Rename" : "Gi nytt navn",
+ "Collaborative tags" : "Felles merkelapper",
"The object type is not specified." : "Objekttypen er ikke spesifisert.",
"Enter new" : "Oppgi ny",
"Add" : "Legg til",
diff --git a/core/l10n/nb_NO.json b/core/l10n/nb_NO.json
index 929f89a4afe..f77e354a3de 100644
--- a/core/l10n/nb_NO.json
+++ b/core/l10n/nb_NO.json
@@ -177,12 +177,13 @@
"Error removing share" : "Feil ved fjerning av deling",
"Warning" : "Advarsel",
"Error while sending notification" : "Feil ved sending av varsling",
- "Non-existing tag #{tag}" : "Ikke-eksisterende merkelap #{tag}",
+ "Non-existing tag #{tag}" : "Ikke-eksisterende merkelapp #{tag}",
"not assignable" : "kan ikke tilordnes",
"invisible" : "usynlig",
"({scope})" : "({scope})",
"Delete" : "Slett",
"Rename" : "Gi nytt navn",
+ "Collaborative tags" : "Felles merkelapper",
"The object type is not specified." : "Objekttypen er ikke spesifisert.",
"Enter new" : "Oppgi ny",
"Add" : "Legg til",
diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index 3a8aaf429ee..fc00b309591 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -185,6 +185,7 @@ OC.L10N.register(
"({scope})" : "({scope})",
"Delete" : "Eliminar",
"Rename" : "Renomear",
+ "Collaborative tags" : "Etiquetas de colaboração",
"The object type is not specified." : "O tipo de objeto não foi especificado.",
"Enter new" : "Entrar uma nova",
"Add" : "Adicionar",
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index 968bb3f3fd4..659da4f76cf 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -183,6 +183,7 @@
"({scope})" : "({scope})",
"Delete" : "Eliminar",
"Rename" : "Renomear",
+ "Collaborative tags" : "Etiquetas de colaboração",
"The object type is not specified." : "O tipo de objeto não foi especificado.",
"Enter new" : "Entrar uma nova",
"Add" : "Adicionar",
diff --git a/issue_template.md b/issue_template.md
index e19583977ef..b240da51a7d 100644
--- a/issue_template.md
+++ b/issue_template.md
@@ -29,6 +29,8 @@ Tell us what happens instead
**Updated from an older ownCloud or fresh install:**
+**Where did you install ownCloud from:**
+
**Signing status (ownCloud 9.0 and above):**
```
diff --git a/lib/l10n/nb_NO.js b/lib/l10n/nb_NO.js
index 3bf5421f01a..5d4b36c2926 100644
--- a/lib/l10n/nb_NO.js
+++ b/lib/l10n/nb_NO.js
@@ -59,7 +59,7 @@ OC.L10N.register(
"Signature could not get checked. Please contact the app developer and check your admin screen." : "Signatur kunne ikke sjekkes. Kontakt app-utvikleren og sjekk admin-bildet.",
"App can't be installed because of not allowed code in the App" : "App kan ikke installeres på grunn av ulovlig kode i appen.",
"App can't be installed because it is not compatible with this version of ownCloud" : "App kan ikke installeres fordi den ikke er kompatibel med denne versjonen av ownCloud",
- "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "App kan ikke installeres fordi den inneholder tag <shipped>true</shipped> som ikke er tillatt for apper som ikke leveres med systemet",
+ "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "App kan ikke installeres fordi den er merket med <shipped>true</shipped> som ikke er tillatt for apper som ikke leveres med systemet",
"App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "App kan ikke installeres fordi versjonen i info.xml ikke er den samme som versjonen som rapporteres fra app-butikken",
"Application is not enabled" : "Applikasjon er ikke påslått",
"Authentication error" : "Autentikasjonsfeil",
diff --git a/lib/l10n/nb_NO.json b/lib/l10n/nb_NO.json
index 21bbc1bf411..bd586c14486 100644
--- a/lib/l10n/nb_NO.json
+++ b/lib/l10n/nb_NO.json
@@ -57,7 +57,7 @@
"Signature could not get checked. Please contact the app developer and check your admin screen." : "Signatur kunne ikke sjekkes. Kontakt app-utvikleren og sjekk admin-bildet.",
"App can't be installed because of not allowed code in the App" : "App kan ikke installeres på grunn av ulovlig kode i appen.",
"App can't be installed because it is not compatible with this version of ownCloud" : "App kan ikke installeres fordi den ikke er kompatibel med denne versjonen av ownCloud",
- "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "App kan ikke installeres fordi den inneholder tag <shipped>true</shipped> som ikke er tillatt for apper som ikke leveres med systemet",
+ "App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" : "App kan ikke installeres fordi den er merket med <shipped>true</shipped> som ikke er tillatt for apper som ikke leveres med systemet",
"App can't be installed because the version in info.xml is not the same as the version reported from the app store" : "App kan ikke installeres fordi versjonen i info.xml ikke er den samme som versjonen som rapporteres fra app-butikken",
"Application is not enabled" : "Applikasjon er ikke påslått",
"Authentication error" : "Autentikasjonsfeil",
diff --git a/lib/private/appframework/db/db.php b/lib/private/appframework/db/db.php
index 5fdc5d1066c..72d481885ca 100644
--- a/lib/private/appframework/db/db.php
+++ b/lib/private/appframework/db/db.php
@@ -25,6 +25,7 @@
namespace OC\AppFramework\Db;
+use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDb;
use OCP\IDBConnection;
@@ -240,7 +241,7 @@ class Db implements IDb {
* @param int $type Type of the parameter.
* @return string The quoted parameter.
*/
- public function quote($input, $type = \PDO::PARAM_STR) {
+ public function quote($input, $type = IQueryBuilder::PARAM_STR) {
return $this->connection->quote($input, $type);
}
diff --git a/lib/private/backgroundjob/joblist.php b/lib/private/backgroundjob/joblist.php
index 2920cb5214c..b8230fca4de 100644
--- a/lib/private/backgroundjob/joblist.php
+++ b/lib/private/backgroundjob/joblist.php
@@ -28,6 +28,7 @@ use OCP\AppFramework\QueryException;
use OCP\BackgroundJob\IJob;
use OCP\BackgroundJob\IJobList;
use OCP\AutoloadNotAllowedException;
+use OCP\DB\QueryBuilder\IQueryBuilder;
class JobList implements IJobList {
/** @var \OCP\IDBConnection */
@@ -69,7 +70,7 @@ class JobList implements IJobList {
->values([
'class' => $query->createNamedParameter($class),
'argument' => $query->createNamedParameter($argument),
- 'last_run' => $query->createNamedParameter(0, \PDO::PARAM_INT),
+ 'last_run' => $query->createNamedParameter(0, IQueryBuilder::PARAM_INT),
]);
$query->execute();
}
@@ -102,7 +103,7 @@ class JobList implements IJobList {
protected function removeById($id) {
$query = $this->connection->getQueryBuilder();
$query->delete('jobs')
- ->where($query->expr()->eq('id', $query->createNamedParameter($id, \PDO::PARAM_INT)));
+ ->where($query->expr()->eq('id', $query->createNamedParameter($id, IQueryBuilder::PARAM_INT)));
$query->execute();
}
@@ -171,7 +172,7 @@ class JobList implements IJobList {
$query = $this->connection->getQueryBuilder();
$query->select('*')
->from('jobs')
- ->where($query->expr()->gt('id', $query->createNamedParameter($lastId, \PDO::PARAM_INT)))
+ ->where($query->expr()->gt('id', $query->createNamedParameter($lastId, IQueryBuilder::PARAM_INT)))
->orderBy('id', 'ASC')
->setMaxResults(1);
$result = $query->execute();
@@ -216,7 +217,7 @@ class JobList implements IJobList {
$query = $this->connection->getQueryBuilder();
$query->select('*')
->from('jobs')
- ->where($query->expr()->eq('id', $query->createNamedParameter($id, \PDO::PARAM_INT)));
+ ->where($query->expr()->eq('id', $query->createNamedParameter($id, IQueryBuilder::PARAM_INT)));
$result = $query->execute();
$row = $result->fetch();
$result->closeCursor();
@@ -286,8 +287,8 @@ class JobList implements IJobList {
public function setLastRun($job) {
$query = $this->connection->getQueryBuilder();
$query->update('jobs')
- ->set('last_run', $query->createNamedParameter(time(), \PDO::PARAM_INT))
- ->where($query->expr()->eq('id', $query->createNamedParameter($job->getId(), \PDO::PARAM_INT)));
+ ->set('last_run', $query->createNamedParameter(time(), IQueryBuilder::PARAM_INT))
+ ->where($query->expr()->eq('id', $query->createNamedParameter($job->getId(), IQueryBuilder::PARAM_INT)));
$query->execute();
}
}
diff --git a/lib/private/comments/manager.php b/lib/private/comments/manager.php
index 36b2d9d08b8..8fc05884784 100644
--- a/lib/private/comments/manager.php
+++ b/lib/private/comments/manager.php
@@ -25,6 +25,7 @@ use OCP\Comments\CommentsEvent;
use OCP\Comments\IComment;
use OCP\Comments\ICommentsManager;
use OCP\Comments\NotFoundException;
+use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
use OCP\IConfig;
use OCP\ILogger;
@@ -233,7 +234,7 @@ class Manager implements ICommentsManager {
$resultStatement = $qb->select('*')
->from('comments')
->where($qb->expr()->eq('id', $qb->createParameter('id')))
- ->setParameter('id', $id, \PDO::PARAM_INT)
+ ->setParameter('id', $id, IQueryBuilder::PARAM_INT)
->execute();
$data = $resultStatement->fetch();
@@ -675,9 +676,9 @@ class Manager implements ICommentsManager {
->where($qb->expr()->eq('user_id', $qb->createParameter('user_id')))
->andWhere($qb->expr()->eq('object_type', $qb->createParameter('object_type')))
->andWhere($qb->expr()->eq('object_id', $qb->createParameter('object_id')))
- ->setParameter('user_id', $user->getUID(), \PDO::PARAM_STR)
- ->setParameter('object_type', $objectType, \PDO::PARAM_STR)
- ->setParameter('object_id', $objectId, \PDO::PARAM_STR)
+ ->setParameter('user_id', $user->getUID(), IQueryBuilder::PARAM_STR)
+ ->setParameter('object_type', $objectType, IQueryBuilder::PARAM_STR)
+ ->setParameter('object_id', $objectId, IQueryBuilder::PARAM_STR)
->execute();
if ($affectedRows > 0) {
@@ -707,9 +708,9 @@ class Manager implements ICommentsManager {
->where($qb->expr()->eq('user_id', $qb->createParameter('user_id')))
->andWhere($qb->expr()->eq('object_type', $qb->createParameter('object_type')))
->andWhere($qb->expr()->eq('object_id', $qb->createParameter('object_id')))
- ->setParameter('user_id', $user->getUID(), \PDO::PARAM_STR)
- ->setParameter('object_type', $objectType, \PDO::PARAM_STR)
- ->setParameter('object_id', $objectId, \PDO::PARAM_STR)
+ ->setParameter('user_id', $user->getUID(), IQueryBuilder::PARAM_STR)
+ ->setParameter('object_type', $objectType, IQueryBuilder::PARAM_STR)
+ ->setParameter('object_id', $objectId, IQueryBuilder::PARAM_STR)
->execute();
$data = $resultStatement->fetch();
diff --git a/lib/private/db/querybuilder/querybuilder.php b/lib/private/db/querybuilder/querybuilder.php
index de803116dc4..76959668476 100644
--- a/lib/private/db/querybuilder/querybuilder.php
+++ b/lib/private/db/querybuilder/querybuilder.php
@@ -168,7 +168,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @param string|integer $key The parameter position or name.
* @param mixed $value The parameter value.
- * @param string|null $type One of the PDO::PARAM_* constants.
+ * @param string|null $type One of the IQueryBuilder::PARAM_* constants.
*
* @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
*/
@@ -988,7 +988,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @return IParameter the placeholder name used.
*/
- public function createNamedParameter($value, $type = \PDO::PARAM_STR, $placeHolder = null) {
+ public function createNamedParameter($value, $type = IQueryBuilder::PARAM_STR, $placeHolder = null) {
return new Parameter($this->queryBuilder->createNamedParameter($value, $type, $placeHolder));
}
@@ -1005,8 +1005,8 @@ class QueryBuilder implements IQueryBuilder {
* $qb = $conn->getQueryBuilder();
* $qb->select('u.*')
* ->from('users', 'u')
- * ->where('u.username = ' . $qb->createPositionalParameter('Foo', PDO::PARAM_STR))
- * ->orWhere('u.username = ' . $qb->createPositionalParameter('Bar', PDO::PARAM_STR))
+ * ->where('u.username = ' . $qb->createPositionalParameter('Foo', IQueryBuilder::PARAM_STR))
+ * ->orWhere('u.username = ' . $qb->createPositionalParameter('Bar', IQueryBuilder::PARAM_STR))
* </code>
*
* @param mixed $value
@@ -1014,7 +1014,7 @@ class QueryBuilder implements IQueryBuilder {
*
* @return IParameter
*/
- public function createPositionalParameter($value, $type = \PDO::PARAM_STR) {
+ public function createPositionalParameter($value, $type = IQueryBuilder::PARAM_STR) {
return new Parameter($this->queryBuilder->createPositionalParameter($value, $type));
}
@@ -1027,7 +1027,7 @@ class QueryBuilder implements IQueryBuilder {
* $qb->select('u.*')
* ->from('users', 'u')
* ->where('u.username = ' . $qb->createParameter('name'))
- * ->setParameter('name', 'Bar', PDO::PARAM_STR))
+ * ->setParameter('name', 'Bar', IQueryBuilder::PARAM_STR))
* </code>
*
* @param string $name
diff --git a/lib/private/files/cache/homepropagator.php b/lib/private/files/cache/homepropagator.php
new file mode 100644
index 00000000000..8edca9c0c87
--- /dev/null
+++ b/lib/private/files/cache/homepropagator.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @author Robin Appelman <icewind@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Files\Cache;
+
+class HomePropagator extends Propagator {
+ private $ignoredBaseFolders;
+
+ /**
+ * @param \OC\Files\Storage\Storage $storage
+ */
+ public function __construct(\OC\Files\Storage\Storage $storage) {
+ parent::__construct($storage);
+ $this->ignoredBaseFolders = ['files_encryption'];
+ }
+
+
+ /**
+ * @param string $internalPath
+ * @param int $time
+ * @param int $sizeDifference number of bytes the file has grown
+ * @return array[] all propagated entries
+ */
+ public function propagateChange($internalPath, $time, $sizeDifference = 0) {
+ list($baseFolder) = explode('/', $internalPath, 2);
+ if (in_array($baseFolder, $this->ignoredBaseFolders)) {
+ return [];
+ } else {
+ return parent::propagateChange($internalPath, $time, $sizeDifference);
+ }
+ }
+}
diff --git a/lib/private/files/cache/scanner.php b/lib/private/files/cache/scanner.php
index 60daa323b4b..822b68f5e75 100644
--- a/lib/private/files/cache/scanner.php
+++ b/lib/private/files/cache/scanner.php
@@ -198,7 +198,11 @@ class Scanner extends BasicEmitter implements IScanner {
if (!empty($newData)) {
$data['fileid'] = $this->addToCache($file, $newData, $fileId);
}
- $data['oldSize'] = $cacheData['size'];
+ if (isset($cacheData['size'])) {
+ $data['oldSize'] = $cacheData['size'];
+ } else {
+ $data['oldSize'] = 0;
+ }
// post-emit only if it was a file. By that we avoid counting/treating folders as files
if ($data['mimetype'] !== 'httpd/unix-directory') {
diff --git a/lib/private/files/storage/home.php b/lib/private/files/storage/home.php
index 35a7e8360f3..9b98f2f7e12 100644
--- a/lib/private/files/storage/home.php
+++ b/lib/private/files/storage/home.php
@@ -24,6 +24,7 @@
*/
namespace OC\Files\Storage;
+use OC\Files\Cache\HomePropagator;
/**
* Specialized version of Local storage for home directory usage
@@ -77,6 +78,23 @@ class Home extends Local implements \OCP\Files\IHomeStorage {
}
/**
+ * get a propagator instance for the cache
+ *
+ * @param \OC\Files\Storage\Storage (optional) the storage to pass to the watcher
+ * @return \OC\Files\Cache\Propagator
+ */
+ public function getPropagator($storage = null) {
+ if (!$storage) {
+ $storage = $this;
+ }
+ if (!isset($this->propagator)) {
+ $this->propagator = new HomePropagator($storage);
+ }
+ return $this->propagator;
+ }
+
+
+ /**
* Returns the owner of this home storage
* @return \OC\User\User owner of this home storage
*/
diff --git a/lib/private/template/jsresourcelocator.php b/lib/private/template/jsresourcelocator.php
index 4df1ac8c7f0..6ea7b6291c0 100644
--- a/lib/private/template/jsresourcelocator.php
+++ b/lib/private/template/jsresourcelocator.php
@@ -31,8 +31,24 @@ class JSResourceLocator extends ResourceLocator {
public function doFind($script) {
$theme_dir = 'themes/'.$this->theme.'/';
if (strpos($script, '3rdparty') === 0
- && $this->appendIfExist($this->thirdpartyroot, $script.'.js')
- || $this->appendIfExist($this->serverroot, $theme_dir.'apps/'.$script.'.js')
+ && $this->appendIfExist($this->thirdpartyroot, $script.'.js')) {
+ return;
+ }
+
+ if (strpos($script, '/l10n/') !== false) {
+ // For language files we try to load them all, so themes can overwrite
+ // single l10n strings without having to translate all of them.
+ $found = 0;
+ $found += $this->appendIfExist($this->serverroot, 'core/'.$script.'.js');
+ $found += $this->appendIfExist($this->serverroot, $theme_dir.'core/'.$script.'.js');
+ $found += $this->appendIfExist($this->serverroot, $script.'.js');
+ $found += $this->appendIfExist($this->serverroot, $theme_dir.$script.'.js');
+ $found += $this->appendIfExist($this->serverroot, $theme_dir.'apps/'.$script.'.js');
+
+ if ($found) {
+ return;
+ }
+ } else if ($this->appendIfExist($this->serverroot, $theme_dir.'apps/'.$script.'.js')
|| $this->appendIfExist($this->serverroot, $theme_dir.$script.'.js')
|| $this->appendIfExist($this->serverroot, $script.'.js')
|| $this->appendIfExist($this->serverroot, $theme_dir.'core/'.$script.'.js')
@@ -40,6 +56,7 @@ class JSResourceLocator extends ResourceLocator {
) {
return;
}
+
$app = substr($script, 0, strpos($script, '/'));
$script = substr($script, strpos($script, '/')+1);
$app_path = \OC_App::getAppPath($app);
diff --git a/lib/public/appframework/db/mapper.php b/lib/public/appframework/db/mapper.php
index 065a9f01ea1..56808997323 100644
--- a/lib/public/appframework/db/mapper.php
+++ b/lib/public/appframework/db/mapper.php
@@ -202,7 +202,7 @@ abstract class Mapper {
/**
* Returns the correct PDO constant based on the value type
* @param $value
- * @return PDO constant
+ * @return int PDO constant
* @since 8.1.0
*/
private function getPDOType($value) {
diff --git a/lib/public/db/querybuilder/iquerybuilder.php b/lib/public/db/querybuilder/iquerybuilder.php
index 5a020f4f6a2..444910a9c5a 100644
--- a/lib/public/db/querybuilder/iquerybuilder.php
+++ b/lib/public/db/querybuilder/iquerybuilder.php
@@ -156,7 +156,7 @@ interface IQueryBuilder {
*
* @param string|integer $key The parameter position or name.
* @param mixed $value The parameter value.
- * @param string|null $type One of the PDO::PARAM_* constants.
+ * @param string|null $type One of the IQueryBuilder::PARAM_* constants.
*
* @return \OCP\DB\QueryBuilder\IQueryBuilder This QueryBuilder instance.
* @since 8.2.0
@@ -780,7 +780,7 @@ interface IQueryBuilder {
* @return IParameter
* @since 8.2.0
*/
- public function createNamedParameter($value, $type = \PDO::PARAM_STR, $placeHolder = null);
+ public function createNamedParameter($value, $type = self::PARAM_STR, $placeHolder = null);
/**
* Creates a new positional parameter and bind the given value to it.
@@ -795,8 +795,8 @@ interface IQueryBuilder {
* $qb = $conn->getQueryBuilder();
* $qb->select('u.*')
* ->from('users', 'u')
- * ->where('u.username = ' . $qb->createPositionalParameter('Foo', PDO::PARAM_STR))
- * ->orWhere('u.username = ' . $qb->createPositionalParameter('Bar', PDO::PARAM_STR))
+ * ->where('u.username = ' . $qb->createPositionalParameter('Foo', IQueryBuilder::PARAM_STR))
+ * ->orWhere('u.username = ' . $qb->createPositionalParameter('Bar', IQueryBuilder::PARAM_STR))
* </code>
*
* @param mixed $value
@@ -805,7 +805,7 @@ interface IQueryBuilder {
* @return IParameter
* @since 8.2.0
*/
- public function createPositionalParameter($value, $type = \PDO::PARAM_STR);
+ public function createPositionalParameter($value, $type = self::PARAM_STR);
/**
* Creates a new parameter
@@ -816,7 +816,7 @@ interface IQueryBuilder {
* $qb->select('u.*')
* ->from('users', 'u')
* ->where('u.username = ' . $qb->createParameter('name'))
- * ->setParameter('name', 'Bar', PDO::PARAM_STR))
+ * ->setParameter('name', 'Bar', IQueryBuilder::PARAM_STR))
* </code>
*
* @param string $name
diff --git a/lib/public/idbconnection.php b/lib/public/idbconnection.php
index c5767e65a82..ebfc95a3d38 100644
--- a/lib/public/idbconnection.php
+++ b/lib/public/idbconnection.php
@@ -32,6 +32,7 @@
// use OCP namespace for all classes that are considered public.
// This means that they should be used by apps instead of the internal ownCloud classes
namespace OCP;
+use OCP\DB\QueryBuilder\IQueryBuilder;
/**
* Interface IDBConnection
@@ -193,7 +194,7 @@ interface IDBConnection {
* @return string The quoted parameter.
* @since 8.0.0
*/
- public function quote($input, $type = \PDO::PARAM_STR);
+ public function quote($input, $type = IQueryBuilder::PARAM_STR);
/**
* Gets the DatabasePlatform instance that provides all the metadata about
diff --git a/settings/css/settings.css b/settings/css/settings.css
index 978f9e44e58..2e7b6d213a5 100644
--- a/settings/css/settings.css
+++ b/settings/css/settings.css
@@ -37,7 +37,9 @@ input#openid, input#webdav { width:20em; }
#displaynameform,
#lostpassword,
-#groups {
+#groups,
+#passwordform,
+#language {
display: inline-block;
margin-bottom: 0;
padding-bottom: 0;
diff --git a/settings/l10n/sv.js b/settings/l10n/sv.js
index ae02136a67a..9c0e716ddc4 100644
--- a/settings/l10n/sv.js
+++ b/settings/l10n/sv.js
@@ -47,6 +47,9 @@ OC.L10N.register(
"Are you really sure you want add \"{domain}\" as trusted domain?" : "Är du verkligen säker på att du vill lägga till \"{domain}\" som en trusted domian?",
"Add trusted domain" : "Lägg till betrodd domän",
"Sending..." : "Skickar ...",
+ "Official" : "Officiell",
+ "Approved" : "Godkänd",
+ "Experimental" : "Experimentiell",
"All" : "Alla",
"Update to %s" : "Uppdatera till %s",
"Please wait...." : "Var god vänta ...",
@@ -60,6 +63,7 @@ OC.L10N.register(
"Uninstalling ...." : "Avinstallerar ...",
"Error while uninstalling app" : "Ett fel inträffade när applikatonen avinstallerades",
"Uninstall" : "Avinstallera",
+ "App update" : "Uppdatering av app",
"Valid until {date}" : "Giltig t.o.m. {date}",
"Delete" : "Radera",
"An error occurred: {message}" : "Ett fel inträffade: {message}",
diff --git a/settings/l10n/sv.json b/settings/l10n/sv.json
index b94ee22a6f8..0de90bd292b 100644
--- a/settings/l10n/sv.json
+++ b/settings/l10n/sv.json
@@ -45,6 +45,9 @@
"Are you really sure you want add \"{domain}\" as trusted domain?" : "Är du verkligen säker på att du vill lägga till \"{domain}\" som en trusted domian?",
"Add trusted domain" : "Lägg till betrodd domän",
"Sending..." : "Skickar ...",
+ "Official" : "Officiell",
+ "Approved" : "Godkänd",
+ "Experimental" : "Experimentiell",
"All" : "Alla",
"Update to %s" : "Uppdatera till %s",
"Please wait...." : "Var god vänta ...",
@@ -58,6 +61,7 @@
"Uninstalling ...." : "Avinstallerar ...",
"Error while uninstalling app" : "Ett fel inträffade när applikatonen avinstallerades",
"Uninstall" : "Avinstallera",
+ "App update" : "Uppdatering av app",
"Valid until {date}" : "Giltig t.o.m. {date}",
"Delete" : "Radera",
"An error occurred: {message}" : "Ett fel inträffade: {message}",
diff --git a/settings/templates/personal.php b/settings/templates/personal.php
index 5fc3c60cf66..9693f1afe18 100644
--- a/settings/templates/personal.php
+++ b/settings/templates/personal.php
@@ -139,7 +139,7 @@ if($_['passwordChangeSupported']) {
}
?>
-<form class="section">
+<form id="language" class="section">
<h2>
<label for="languageinput"><?php p($l->t('Language'));?></label>
</h2>
diff --git a/tests/lib/appframework/db/mappertestutility.php b/tests/lib/appframework/db/mappertestutility.php
index 818e4a59b21..69f0ad4eb67 100644
--- a/tests/lib/appframework/db/mappertestutility.php
+++ b/tests/lib/appframework/db/mappertestutility.php
@@ -68,7 +68,7 @@ abstract class MapperTestUtility extends \Test\TestCase {
/**
* Returns the correct PDO constant based on the value type
* @param $value
- * @return PDO constant
+ * @return int PDO constant
*/
private function getPDOType($value) {
switch (gettype($value)) {
diff --git a/tests/lib/db/connection.php b/tests/lib/db/connection.php
index dd9b31f3ed7..b10b1a322a9 100644
--- a/tests/lib/db/connection.php
+++ b/tests/lib/db/connection.php
@@ -11,6 +11,7 @@ namespace Test\DB;
use Doctrine\DBAL\Platforms\SqlitePlatform;
use OC\DB\MDB2SchemaManager;
+use OCP\DB\QueryBuilder\IQueryBuilder;
/**
* Class Connection
@@ -94,7 +95,7 @@ class Connection extends \Test\TestCase {
$builder = $this->connection->getQueryBuilder();
$query = $builder->select('textfield')
->from('table')
- ->where($builder->expr()->eq('integerfield', $builder->createNamedParameter($integerField, \PDO::PARAM_INT)));
+ ->where($builder->expr()->eq('integerfield', $builder->createNamedParameter($integerField, IQueryBuilder::PARAM_INT)));
$result = $query->execute();
return $result->fetchColumn();
diff --git a/tests/lib/db/querybuilder/expressionbuildertest.php b/tests/lib/db/querybuilder/expressionbuildertest.php
index f38faab9169..4122f300c86 100644
--- a/tests/lib/db/querybuilder/expressionbuildertest.php
+++ b/tests/lib/db/querybuilder/expressionbuildertest.php
@@ -327,7 +327,7 @@ class ExpressionBuilderTest extends TestCase {
[1, null],
[1, 'string'],
[1, 'integer'],
- [1, \PDO::PARAM_INT],
+ [1, IQueryBuilder::PARAM_INT],
];
}
diff --git a/tests/lib/repair/cleantags.php b/tests/lib/repair/cleantags.php
index 9773a591777..fa11a7f736e 100644
--- a/tests/lib/repair/cleantags.php
+++ b/tests/lib/repair/cleantags.php
@@ -7,6 +7,7 @@
*/
namespace Test\Repair;
+use OCP\DB\QueryBuilder\IQueryBuilder;
/**
* Tests for the cleaning the tags tables
@@ -123,8 +124,8 @@ class CleanTags extends \Test\TestCase {
$qb = $this->connection->getQueryBuilder();
$qb->insert('vcategory_to_object')
->values([
- 'objid' => $qb->createNamedParameter($objectId, \PDO::PARAM_INT),
- 'categoryid' => $qb->createNamedParameter($category, \PDO::PARAM_INT),
+ 'objid' => $qb->createNamedParameter($objectId, IQueryBuilder::PARAM_INT),
+ 'categoryid' => $qb->createNamedParameter($category, IQueryBuilder::PARAM_INT),
'type' => $qb->createNamedParameter($type),
])
->execute();