diff options
223 files changed, 1454 insertions, 830 deletions
diff --git a/apps/comments/l10n/el.js b/apps/comments/l10n/el.js index 605b3914a8c..fa36f68d1a0 100644 --- a/apps/comments/l10n/el.js +++ b/apps/comments/l10n/el.js @@ -21,7 +21,14 @@ OC.L10N.register( "You commented" : "Σχολιάσατε", "%1$s commented" : "%1$s σχολίασε", "{author} commented" : "Ο {author} σχολίασε", + "You commented on %1$s" : "Σχολιάσατε στο %1$s", + "You commented on {file}" : "Σχολιάσατε στο {file}", "%1$s commented on %2$s" : "%1$s σχολίασε στο %2$s", - "<strong>Comments</strong> for files" : "<strong>Σχόλια</strong> για αρχεία" + "{author} commented on {file}" : "Ο {author} σχολίασε στο {file}", + "<strong>Comments</strong> for files" : "<strong>Σχόλια</strong> για αρχεία", + "A (now) deleted user mentioned you in a comment on “%s”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “%s”", + "A (now) deleted user mentioned you in a comment on “{file}”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “{file}”", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s σας ανέφερε σε σχόλιο στο “%2$s”", + "{user} mentioned you in a comment on “{file}”" : "Ο {user} σας ανέφερε σε σχόλιο στο “{file}”" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/comments/l10n/el.json b/apps/comments/l10n/el.json index 05243a2b692..9181bd9eb73 100644 --- a/apps/comments/l10n/el.json +++ b/apps/comments/l10n/el.json @@ -19,7 +19,14 @@ "You commented" : "Σχολιάσατε", "%1$s commented" : "%1$s σχολίασε", "{author} commented" : "Ο {author} σχολίασε", + "You commented on %1$s" : "Σχολιάσατε στο %1$s", + "You commented on {file}" : "Σχολιάσατε στο {file}", "%1$s commented on %2$s" : "%1$s σχολίασε στο %2$s", - "<strong>Comments</strong> for files" : "<strong>Σχόλια</strong> για αρχεία" + "{author} commented on {file}" : "Ο {author} σχολίασε στο {file}", + "<strong>Comments</strong> for files" : "<strong>Σχόλια</strong> για αρχεία", + "A (now) deleted user mentioned you in a comment on “%s”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “%s”", + "A (now) deleted user mentioned you in a comment on “{file}”" : "Ο (πρόσφατα) διεγραμμένος χρήστης σας ανέφερε σε σχόλιο στο “{file}”", + "%1$s mentioned you in a comment on “%2$s”" : "%1$s σας ανέφερε σε σχόλιο στο “%2$s”", + "{user} mentioned you in a comment on “{file}”" : "Ο {user} σας ανέφερε σε σχόλιο στο “{file}”" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/pt_BR.js b/apps/comments/l10n/pt_BR.js index cf9cb31f153..edc986c1b7b 100644 --- a/apps/comments/l10n/pt_BR.js +++ b/apps/comments/l10n/pt_BR.js @@ -27,7 +27,7 @@ OC.L10N.register( "{author} commented on {file}" : "{author} comentou em {file}", "<strong>Comments</strong> for files" : "<strong>Comentários</strong> para arquivos", "A (now) deleted user mentioned you in a comment on “%s”" : "Um usuário excluído agora mencionou você em um comentário sobre “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Um usuário excluído agora mencionou você em um comentário sobre “{file}”", + "A (now) deleted user mentioned you in a comment on “{file}”" : "Um usuário recém excluído mencionou você em um comentário sobre “{file}”", "%1$s mentioned you in a comment on “%2$s”" : "%1$s mencionou você em um comentário sobre “%2$s”", "{user} mentioned you in a comment on “{file}”" : "{user} mencionou você em um comentário sobre “{file}”" }, diff --git a/apps/comments/l10n/pt_BR.json b/apps/comments/l10n/pt_BR.json index eb907ecbe1f..5b4e994632f 100644 --- a/apps/comments/l10n/pt_BR.json +++ b/apps/comments/l10n/pt_BR.json @@ -25,7 +25,7 @@ "{author} commented on {file}" : "{author} comentou em {file}", "<strong>Comments</strong> for files" : "<strong>Comentários</strong> para arquivos", "A (now) deleted user mentioned you in a comment on “%s”" : "Um usuário excluído agora mencionou você em um comentário sobre “%s”", - "A (now) deleted user mentioned you in a comment on “{file}”" : "Um usuário excluído agora mencionou você em um comentário sobre “{file}”", + "A (now) deleted user mentioned you in a comment on “{file}”" : "Um usuário recém excluído mencionou você em um comentário sobre “{file}”", "%1$s mentioned you in a comment on “%2$s”" : "%1$s mencionou você em um comentário sobre “%2$s”", "{user} mentioned you in a comment on “{file}”" : "{user} mencionou você em um comentário sobre “{file}”" },"pluralForm" :"nplurals=2; plural=(n > 1);" diff --git a/apps/comments/lib/Activity/Listener.php b/apps/comments/lib/Activity/Listener.php index 2ac49144690..16852296cf1 100644 --- a/apps/comments/lib/Activity/Listener.php +++ b/apps/comments/lib/Activity/Listener.php @@ -31,6 +31,7 @@ use OCP\Files\Node; use OCP\IUser; use OCP\IUserSession; use OCP\Share; +use OCP\Share\IShareHelper; class Listener { /** @var IManager */ @@ -43,6 +44,8 @@ class Listener { protected $mountCollection; /** @var \OCP\Files\IRootFolder */ protected $rootFolder; + /** @var IShareHelper */ + protected $shareHelper; /** * Listener constructor. @@ -52,17 +55,20 @@ class Listener { * @param IAppManager $appManager * @param IMountProviderCollection $mountCollection * @param IRootFolder $rootFolder + * @param IShareHelper $shareHelper */ public function __construct(IManager $activityManager, IUserSession $session, IAppManager $appManager, IMountProviderCollection $mountCollection, - IRootFolder $rootFolder) { + IRootFolder $rootFolder, + IShareHelper $shareHelper) { $this->activityManager = $activityManager; $this->session = $session; $this->appManager = $appManager; $this->mountCollection = $mountCollection; $this->rootFolder = $rootFolder; + $this->shareHelper = $shareHelper; } /** @@ -91,12 +97,8 @@ class Listener { if (!empty($nodes)) { /** @var Node $node */ $node = array_shift($nodes); - $path = $node->getPath(); - if (strpos($path, '/' . $owner . '/files/') === 0) { - $path = substr($path, strlen('/' . $owner . '/files')); - } - // Get all users that have access to the mount point - $users = array_merge($users, Share::getUsersSharingFile($path, $owner, true, true)); + $al = $this->shareHelper->getPathsForAccessList($node); + $users = array_merge($users, $al['users']); } } diff --git a/apps/dav/lib/CalDAV/Calendar.php b/apps/dav/lib/CalDAV/Calendar.php index d1eff1aeaa3..a216e4e078b 100644 --- a/apps/dav/lib/CalDAV/Calendar.php +++ b/apps/dav/lib/CalDAV/Calendar.php @@ -30,6 +30,12 @@ use Sabre\DAV\Exception\Forbidden; use Sabre\DAV\Exception\NotFound; use Sabre\DAV\PropPatch; +/** + * Class Calendar + * + * @package OCA\DAV\CalDAV + * @property BackendInterface|CalDavBackend $caldavBackend + */ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { public function __construct(BackendInterface $caldavBackend, $calendarInfo, IL10N $l10n) { @@ -61,11 +67,13 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { * @param array $add * @param array $remove * @return void + * @throws Forbidden */ - function updateShares(array $add, array $remove) { - /** @var CalDavBackend $calDavBackend */ - $calDavBackend = $this->caldavBackend; - $calDavBackend->updateShares($this, $add, $remove); + public function updateShares(array $add, array $remove) { + if ($this->isShared()) { + throw new Forbidden(); + } + $this->caldavBackend->updateShares($this, $add, $remove); } /** @@ -80,10 +88,11 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { * * @return array */ - function getShares() { - /** @var CalDavBackend $calDavBackend */ - $calDavBackend = $this->caldavBackend; - return $calDavBackend->getShares($this->getResourceId()); + public function getShares() { + if ($this->isShared()) { + return []; + } + return $this->caldavBackend->getShares($this->getResourceId()); } /** @@ -100,7 +109,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { return $this->calendarInfo['principaluri']; } - function getACL() { + public function getACL() { $acl = [ [ 'privilege' => '{DAV:}read', @@ -136,27 +145,29 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { ]; } - /** @var CalDavBackend $calDavBackend */ - $calDavBackend = $this->caldavBackend; - return $calDavBackend->applyShareAcl($this->getResourceId(), $acl); + if ($this->isShared()) { + return $acl; + } + + return $this->caldavBackend->applyShareAcl($this->getResourceId(), $acl); } - function getChildACL() { + public function getChildACL() { return $this->getACL(); } - function getOwner() { + public function getOwner() { if (isset($this->calendarInfo['{http://owncloud.org/ns}owner-principal'])) { return $this->calendarInfo['{http://owncloud.org/ns}owner-principal']; } return parent::getOwner(); } - function delete() { + public function delete() { if (isset($this->calendarInfo['{http://owncloud.org/ns}owner-principal']) && $this->calendarInfo['{http://owncloud.org/ns}owner-principal'] !== $this->calendarInfo['principaluri']) { $principal = 'principal:' . parent::getOwner(); - $shares = $this->getShares(); + $shares = $this->caldavBackend->getShares($this->getResourceId()); $shares = array_filter($shares, function($share) use ($principal){ return $share['href'] === $principal; }); @@ -164,9 +175,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { throw new Forbidden(); } - /** @var CalDavBackend $calDavBackend */ - $calDavBackend = $this->caldavBackend; - $calDavBackend->updateShares($this, [], [ + $this->caldavBackend->updateShares($this, [], [ 'href' => $principal ]); return; @@ -174,7 +183,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { parent::delete(); } - function propPatch(PropPatch $propPatch) { + public function propPatch(PropPatch $propPatch) { // parent::propPatch will only update calendars table // if calendar is shared, changes have to be made to the properties table if (!$this->isShared()) { @@ -182,7 +191,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { } } - function getChild($name) { + public function getChild($name) { $obj = $this->caldavBackend->getCalendarObject($this->calendarInfo['id'], $name); @@ -190,7 +199,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { throw new NotFound('Calendar object not found'); } - if ($this->isShared() && $obj['classification'] === CalDavBackend::CLASSIFICATION_PRIVATE) { + if ($obj['classification'] === CalDavBackend::CLASSIFICATION_PRIVATE && $this->isShared()) { throw new NotFound('Calendar object not found'); } @@ -200,12 +209,12 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { } - function getChildren() { + public function getChildren() { $objs = $this->caldavBackend->getCalendarObjects($this->calendarInfo['id']); $children = []; foreach ($objs as $obj) { - if ($this->isShared() && $obj['classification'] === CalDavBackend::CLASSIFICATION_PRIVATE) { + if ($obj['classification'] === CalDavBackend::CLASSIFICATION_PRIVATE && $this->isShared()) { continue; } $obj['acl'] = $this->getChildACL(); @@ -215,12 +224,12 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { } - function getMultipleChildren(array $paths) { + public function getMultipleChildren(array $paths) { $objs = $this->caldavBackend->getMultipleCalendarObjects($this->calendarInfo['id'], $paths); $children = []; foreach ($objs as $obj) { - if ($this->isShared() && $obj['classification'] === CalDavBackend::CLASSIFICATION_PRIVATE) { + if ($obj['classification'] === CalDavBackend::CLASSIFICATION_PRIVATE && $this->isShared()) { continue; } $obj['acl'] = $this->getChildACL(); @@ -230,19 +239,19 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { } - function childExists($name) { + public function childExists($name) { $obj = $this->caldavBackend->getCalendarObject($this->calendarInfo['id'], $name); if (!$obj) { return false; } - if ($this->isShared() && $obj['classification'] === CalDavBackend::CLASSIFICATION_PRIVATE) { + if ($obj['classification'] === CalDavBackend::CLASSIFICATION_PRIVATE && $this->isShared()) { return false; } return true; } - function calendarQuery(array $filters) { + public function calendarQuery(array $filters) { $uris = $this->caldavBackend->calendarQuery($this->calendarInfo['id'], $filters); if ($this->isShared()) { @@ -258,7 +267,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { * @param boolean $value * @return string|null */ - function setPublishStatus($value) { + public function setPublishStatus($value) { $publicUri = $this->caldavBackend->setPublishStatus($value, $this); $this->calendarInfo['publicuri'] = $publicUri; return $publicUri; @@ -267,7 +276,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable { /** * @return mixed $value */ - function getPublishStatus() { + public function getPublishStatus() { return $this->caldavBackend->getPublishStatus($this); } diff --git a/apps/dav/lib/CardDAV/AddressBook.php b/apps/dav/lib/CardDAV/AddressBook.php index 1c13ac00aec..eb5bebaa2ee 100644 --- a/apps/dav/lib/CardDAV/AddressBook.php +++ b/apps/dav/lib/CardDAV/AddressBook.php @@ -29,6 +29,12 @@ use Sabre\DAV\Exception\Forbidden; use Sabre\DAV\Exception\NotFound; use Sabre\DAV\PropPatch; +/** + * Class AddressBook + * + * @package OCA\DAV\CardDAV + * @property BackendInterface|CardDavBackend $carddavBackend + */ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable { /** @@ -41,8 +47,8 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable { public function __construct(BackendInterface $carddavBackend, array $addressBookInfo, IL10N $l10n) { parent::__construct($carddavBackend, $addressBookInfo); - if ($this->getName() === CardDavBackend::PERSONAL_ADDRESSBOOK_URI && - $this->addressBookInfo['{DAV:}displayname'] === CardDavBackend::PERSONAL_ADDRESSBOOK_NAME) { + if ($this->addressBookInfo['{DAV:}displayname'] === CardDavBackend::PERSONAL_ADDRESSBOOK_NAME && + $this->getName() === CardDavBackend::PERSONAL_ADDRESSBOOK_URI) { $this->addressBookInfo['{DAV:}displayname'] = $l10n->t('Contacts'); } } @@ -64,11 +70,13 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable { * @param array $add * @param array $remove * @return void + * @throws Forbidden */ - function updateShares(array $add, array $remove) { - /** @var CardDavBackend $carddavBackend */ - $carddavBackend = $this->carddavBackend; - $carddavBackend->updateShares($this, $add, $remove); + public function updateShares(array $add, array $remove) { + if ($this->isShared()) { + throw new Forbidden(); + } + $this->carddavBackend->updateShares($this, $add, $remove); } /** @@ -83,13 +91,14 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable { * * @return array */ - function getShares() { - /** @var CardDavBackend $carddavBackend */ - $carddavBackend = $this->carddavBackend; - return $carddavBackend->getShares($this->getResourceId()); + public function getShares() { + if ($this->isShared()) { + return []; + } + return $this->carddavBackend->getShares($this->getResourceId()); } - function getACL() { + public function getACL() { $acl = [ [ 'privilege' => '{DAV:}read', @@ -123,16 +132,18 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable { ]; } - /** @var CardDavBackend $carddavBackend */ - $carddavBackend = $this->carddavBackend; - return $carddavBackend->applyShareAcl($this->getResourceId(), $acl); + if ($this->isShared()) { + return $acl; + } + + return $this->carddavBackend->applyShareAcl($this->getResourceId(), $acl); } - function getChildACL() { + public function getChildACL() { return $this->getACL(); } - function getChild($name) { + public function getChild($name) { $obj = $this->carddavBackend->getCard($this->addressBookInfo['id'], $name); if (!$obj) { @@ -150,17 +161,17 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable { return $this->addressBookInfo['id']; } - function getOwner() { + public function getOwner() { if (isset($this->addressBookInfo['{http://owncloud.org/ns}owner-principal'])) { return $this->addressBookInfo['{http://owncloud.org/ns}owner-principal']; } return parent::getOwner(); } - function delete() { + public function delete() { if (isset($this->addressBookInfo['{http://owncloud.org/ns}owner-principal'])) { $principal = 'principal:' . parent::getOwner(); - $shares = $this->getShares(); + $shares = $this->carddavBackend->getShares($this->getResourceId()); $shares = array_filter($shares, function($share) use ($principal){ return $share['href'] === $principal; }); @@ -168,9 +179,7 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable { throw new Forbidden(); } - /** @var CardDavBackend $cardDavBackend */ - $cardDavBackend = $this->carddavBackend; - $cardDavBackend->updateShares($this, [], [ + $this->carddavBackend->updateShares($this, [], [ 'href' => $principal ]); return; @@ -178,7 +187,7 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable { parent::delete(); } - function propPatch(PropPatch $propPatch) { + public function propPatch(PropPatch $propPatch) { if (isset($this->addressBookInfo['{http://owncloud.org/ns}owner-principal'])) { throw new Forbidden(); } @@ -186,10 +195,15 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable { } public function getContactsGroups() { - /** @var CardDavBackend $cardDavBackend */ - $cardDavBackend = $this->carddavBackend; + return $this->carddavBackend->collectCardProperties($this->getResourceId(), 'CATEGORIES'); + } + + private function isShared() { + if (!isset($this->addressBookInfo['{http://owncloud.org/ns}owner-principal'])) { + return false; + } - return $cardDavBackend->collectCardProperties($this->getResourceId(), 'CATEGORIES'); + return $this->addressBookInfo['{http://owncloud.org/ns}owner-principal'] !== $this->addressBookInfo['principaluri']; } private function canWrite() { diff --git a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php index 22ef232dac4..63ca03b0d3d 100644 --- a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php +++ b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php @@ -143,8 +143,6 @@ class CalDavBackendTest extends AbstractCalDavBackendTest { $this->assertAcl(self::UNIT_TEST_USER, '{DAV:}write', $acl); $this->assertAccess($userCanRead, self::UNIT_TEST_USER1, '{DAV:}read', $acl); $this->assertAccess($userCanWrite, self::UNIT_TEST_USER1, '{DAV:}write', $acl); - $this->assertAccess($groupCanRead, self::UNIT_TEST_GROUP, '{DAV:}read', $acl); - $this->assertAccess($groupCanWrite, self::UNIT_TEST_GROUP, '{DAV:}write', $acl); $this->assertEquals(self::UNIT_TEST_USER, $calendar->getOwner()); // test acls on the child @@ -178,8 +176,6 @@ EOD; $this->assertAcl(self::UNIT_TEST_USER, '{DAV:}write', $acl); $this->assertAccess($userCanRead, self::UNIT_TEST_USER1, '{DAV:}read', $acl); $this->assertAccess($userCanWrite, self::UNIT_TEST_USER1, '{DAV:}write', $acl); - $this->assertAccess($groupCanRead, self::UNIT_TEST_GROUP, '{DAV:}read', $acl); - $this->assertAccess($groupCanWrite, self::UNIT_TEST_GROUP, '{DAV:}write', $acl); // delete the address book $this->dispatcher->expects($this->at(0)) diff --git a/apps/dav/tests/unit/CalDAV/CalendarTest.php b/apps/dav/tests/unit/CalDAV/CalendarTest.php index b80d510356e..4ede886d31e 100644 --- a/apps/dav/tests/unit/CalDAV/CalendarTest.php +++ b/apps/dav/tests/unit/CalDAV/CalendarTest.php @@ -225,8 +225,8 @@ class CalendarTest extends TestCase { /** * @dataProvider providesConfidentialClassificationData - * @param $expectedChildren - * @param $isShared + * @param int $expectedChildren + * @param bool $isShared */ public function testPrivateClassification($expectedChildren, $isShared) { @@ -268,8 +268,8 @@ class CalendarTest extends TestCase { /** * @dataProvider providesConfidentialClassificationData - * @param $expectedChildren - * @param $isShared + * @param int $expectedChildren + * @param bool $isShared */ public function testConfidentialClassification($expectedChildren, $isShared) { $start = '20160609'; diff --git a/apps/dav/tests/unit/CalDAV/PublicCalendarTest.php b/apps/dav/tests/unit/CalDAV/PublicCalendarTest.php index 85a6a4c5614..6b2bf58d392 100644 --- a/apps/dav/tests/unit/CalDAV/PublicCalendarTest.php +++ b/apps/dav/tests/unit/CalDAV/PublicCalendarTest.php @@ -28,7 +28,12 @@ use Sabre\VObject\Reader; class PublicCalendarTest extends CalendarTest { - public function testPrivateClassification() { + /** + * @dataProvider providesConfidentialClassificationData + * @param int $expectedChildren + * @param bool $isShared + */ + public function testPrivateClassification($expectedChildren, $isShared) { $calObject0 = ['uri' => 'event-0', 'classification' => CalDavBackend::CLASSIFICATION_PUBLIC]; $calObject1 = ['uri' => 'event-1', 'classification' => CalDavBackend::CLASSIFICATION_CONFIDENTIAL]; @@ -63,7 +68,12 @@ class PublicCalendarTest extends CalendarTest { $this->assertFalse($c->childExists('event-2')); } - public function testConfidentialClassification() { + /** + * @dataProvider providesConfidentialClassificationData + * @param int $expectedChildren + * @param bool $isShared + */ + public function testConfidentialClassification($expectedChildren, $isShared) { $start = '20160609'; $end = '20160610'; @@ -150,4 +160,4 @@ EOD; $this->assertArrayNotHasKey('DESCRIPTION', $event->VEVENT); $this->assertArrayNotHasKey('ORGANIZER', $event->VEVENT); } -}
\ No newline at end of file +} diff --git a/apps/dav/tests/unit/CardDAV/AddressBookTest.php b/apps/dav/tests/unit/CardDAV/AddressBookTest.php index 22992d564f6..132fa4796db 100644 --- a/apps/dav/tests/unit/CardDAV/AddressBookTest.php +++ b/apps/dav/tests/unit/CardDAV/AddressBookTest.php @@ -40,6 +40,7 @@ class AddressBookTest extends TestCase { ]); $calendarInfo = [ '{http://owncloud.org/ns}owner-principal' => 'user1', + '{DAV:}displayname' => 'Test address book', 'principaluri' => 'user2', 'id' => 666, 'uri' => 'default', @@ -61,6 +62,7 @@ class AddressBookTest extends TestCase { ]); $calendarInfo = [ '{http://owncloud.org/ns}owner-principal' => 'user1', + '{DAV:}displayname' => 'Test address book', 'principaluri' => 'user2', 'id' => 666, 'uri' => 'default', @@ -78,6 +80,7 @@ class AddressBookTest extends TestCase { $backend = $this->getMockBuilder('OCA\DAV\CardDAV\CardDavBackend')->disableOriginalConstructor()->getMock(); $calendarInfo = [ '{http://owncloud.org/ns}owner-principal' => 'user1', + '{DAV:}displayname' => 'Test address book', 'principaluri' => 'user2', 'id' => 666, 'uri' => 'default', @@ -95,6 +98,7 @@ class AddressBookTest extends TestCase { $backend = $this->getMockBuilder('OCA\DAV\CardDAV\CardDavBackend')->disableOriginalConstructor()->getMock(); $backend->expects($this->any())->method('applyShareAcl')->willReturnArgument(1); $calendarInfo = [ + '{DAV:}displayname' => 'Test address book', 'principaluri' => 'user2', 'id' => 666, 'uri' => 'default' diff --git a/apps/dav/tests/unit/CardDAV/ContactsManagerTest.php b/apps/dav/tests/unit/CardDAV/ContactsManagerTest.php index 062ef72dbf0..a6f0384cc38 100644 --- a/apps/dav/tests/unit/CardDAV/ContactsManagerTest.php +++ b/apps/dav/tests/unit/CardDAV/ContactsManagerTest.php @@ -39,7 +39,7 @@ class ContactsManagerTest extends TestCase { /** @var CardDavBackend | \PHPUnit_Framework_MockObject_MockObject $backEnd */ $backEnd = $this->getMockBuilder('OCA\DAV\CardDAV\CardDavBackend')->disableOriginalConstructor()->getMock(); $backEnd->method('getAddressBooksForUser')->willReturn([ - ['uri' => 'default'], + ['{DAV:}displayname' => 'Test address book', 'uri' => 'default'], ]); $l = $this->createMock(IL10N::class); diff --git a/apps/encryption/l10n/pt_BR.js b/apps/encryption/l10n/pt_BR.js index 6f360224bc4..eccc6a2ada3 100644 --- a/apps/encryption/l10n/pt_BR.js +++ b/apps/encryption/l10n/pt_BR.js @@ -12,7 +12,7 @@ OC.L10N.register( "Please provide the old recovery password" : "Por favor, forneça a antiga senha de recuperação", "Please provide a new recovery password" : "Por favor, forneça a nova senha de recuperação", "Please repeat the new recovery password" : "Por favor, repita a nova senha de recuperação", - "Password successfully changed." : "Senha alterada com sucesso.", + "Password successfully changed." : "Senha alterada.", "Could not change the password. Maybe the old password was not correct." : "Não foi possível alterar a senha. Talvez a senha antiga não estivesse correta.", "Recovery Key disabled" : "Chave de recuperação desativada", "Recovery Key enabled" : "Chave de recuperação ativada", diff --git a/apps/encryption/l10n/pt_BR.json b/apps/encryption/l10n/pt_BR.json index 4c2d46e5d73..5e697001fc2 100644 --- a/apps/encryption/l10n/pt_BR.json +++ b/apps/encryption/l10n/pt_BR.json @@ -10,7 +10,7 @@ "Please provide the old recovery password" : "Por favor, forneça a antiga senha de recuperação", "Please provide a new recovery password" : "Por favor, forneça a nova senha de recuperação", "Please repeat the new recovery password" : "Por favor, repita a nova senha de recuperação", - "Password successfully changed." : "Senha alterada com sucesso.", + "Password successfully changed." : "Senha alterada.", "Could not change the password. Maybe the old password was not correct." : "Não foi possível alterar a senha. Talvez a senha antiga não estivesse correta.", "Recovery Key disabled" : "Chave de recuperação desativada", "Recovery Key enabled" : "Chave de recuperação ativada", diff --git a/apps/federatedfilesharing/l10n/pt_BR.js b/apps/federatedfilesharing/l10n/pt_BR.js index fb76cfcaa5a..807acf49f35 100644 --- a/apps/federatedfilesharing/l10n/pt_BR.js +++ b/apps/federatedfilesharing/l10n/pt_BR.js @@ -16,7 +16,7 @@ OC.L10N.register( "Server to server sharing is not enabled on this server" : "Servidor para compartilhamento de servidor não está ativo neste servidor", "Couldn't establish a federated share." : "Não foi possível estabelecer um compartilhamento federado.", "Couldn't establish a federated share, maybe the password was wrong." : "Não foi possível estabelecer um compartilhamento federado, talvez a senha esteja incorreta.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Solicitação de compartilhamento federado conclúida com sucesso. Você receberá um convite que pode ser visto nas suas notificações.", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Solicitação de compartilhamento federado concluída. Você receberá um convite que pode ser visto nas suas notificações.", "The mountpoint name contains invalid characters." : "O nome do ponto de montagem contém caracteres inválidos.", "Not allowed to create a federated share with the owner." : "Não é permitido criar um compartilhamento federado com o proprietário.", "Invalid or untrusted SSL certificate" : "Certificado SSL inválido ou não confiável", diff --git a/apps/federatedfilesharing/l10n/pt_BR.json b/apps/federatedfilesharing/l10n/pt_BR.json index 690d96c07fa..9444aa2b27d 100644 --- a/apps/federatedfilesharing/l10n/pt_BR.json +++ b/apps/federatedfilesharing/l10n/pt_BR.json @@ -14,7 +14,7 @@ "Server to server sharing is not enabled on this server" : "Servidor para compartilhamento de servidor não está ativo neste servidor", "Couldn't establish a federated share." : "Não foi possível estabelecer um compartilhamento federado.", "Couldn't establish a federated share, maybe the password was wrong." : "Não foi possível estabelecer um compartilhamento federado, talvez a senha esteja incorreta.", - "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Solicitação de compartilhamento federado conclúida com sucesso. Você receberá um convite que pode ser visto nas suas notificações.", + "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Solicitação de compartilhamento federado concluída. Você receberá um convite que pode ser visto nas suas notificações.", "The mountpoint name contains invalid characters." : "O nome do ponto de montagem contém caracteres inválidos.", "Not allowed to create a federated share with the owner." : "Não é permitido criar um compartilhamento federado com o proprietário.", "Invalid or untrusted SSL certificate" : "Certificado SSL inválido ou não confiável", diff --git a/apps/federatedfilesharing/l10n/ru.js b/apps/federatedfilesharing/l10n/ru.js index d71f1bc912c..216a904018b 100644 --- a/apps/federatedfilesharing/l10n/ru.js +++ b/apps/federatedfilesharing/l10n/ru.js @@ -1,7 +1,7 @@ OC.L10N.register( "federatedfilesharing", { - "Federated sharing" : "Общий доступ из объединённого общего хранилища", + "Federated sharing" : "Общий доступ из федеративного хранилища", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Вы хотите добавить удалённый общий каталог {name} из {owner}@{remote}?", "Remote share" : "Удалённый общий ресурс", "Remote share password" : "Пароль для удалённого общего ресурса", @@ -15,7 +15,7 @@ OC.L10N.register( "Invalid Federated Cloud ID" : "Неверный ID в объединении облачных хранилищ.", "Server to server sharing is not enabled on this server" : "На данном сервере выключено межсерверное предоставление общего доступа", "Couldn't establish a federated share." : "Не удаётся установить федеративный общий доступ.", - "Couldn't establish a federated share, maybe the password was wrong." : "Не удаётся установить федеративный общий доступ, может быть пароль был не верен.", + "Couldn't establish a federated share, maybe the password was wrong." : "Не удаётся установить федеративный общий доступ, возможно неверный пароль.", "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Запрос на федеративный общий ресурс прошёл успешно, вы получите приглашение. Проверьте ваши уведомления.", "The mountpoint name contains invalid characters." : "Имя точки монтирования содержит недопустимые символы.", "Not allowed to create a federated share with the owner." : "Не допускается создание федеративного общего ресурса с владельцем.", diff --git a/apps/federatedfilesharing/l10n/ru.json b/apps/federatedfilesharing/l10n/ru.json index 76208f7b048..c6b337ff03b 100644 --- a/apps/federatedfilesharing/l10n/ru.json +++ b/apps/federatedfilesharing/l10n/ru.json @@ -1,5 +1,5 @@ { "translations": { - "Federated sharing" : "Общий доступ из объединённого общего хранилища", + "Federated sharing" : "Общий доступ из федеративного хранилища", "Do you want to add the remote share {name} from {owner}@{remote}?" : "Вы хотите добавить удалённый общий каталог {name} из {owner}@{remote}?", "Remote share" : "Удалённый общий ресурс", "Remote share password" : "Пароль для удалённого общего ресурса", @@ -13,7 +13,7 @@ "Invalid Federated Cloud ID" : "Неверный ID в объединении облачных хранилищ.", "Server to server sharing is not enabled on this server" : "На данном сервере выключено межсерверное предоставление общего доступа", "Couldn't establish a federated share." : "Не удаётся установить федеративный общий доступ.", - "Couldn't establish a federated share, maybe the password was wrong." : "Не удаётся установить федеративный общий доступ, может быть пароль был не верен.", + "Couldn't establish a federated share, maybe the password was wrong." : "Не удаётся установить федеративный общий доступ, возможно неверный пароль.", "Federated Share request was successful, you will receive a invitation. Check your notifications." : "Запрос на федеративный общий ресурс прошёл успешно, вы получите приглашение. Проверьте ваши уведомления.", "The mountpoint name contains invalid characters." : "Имя точки монтирования содержит недопустимые символы.", "Not allowed to create a federated share with the owner." : "Не допускается создание федеративного общего ресурса с владельцем.", diff --git a/apps/federation/lib/BackgroundJob/GetSharedSecret.php b/apps/federation/lib/BackgroundJob/GetSharedSecret.php index 4a6e720ae2c..b1367be9524 100644 --- a/apps/federation/lib/BackgroundJob/GetSharedSecret.php +++ b/apps/federation/lib/BackgroundJob/GetSharedSecret.php @@ -179,7 +179,7 @@ class GetSharedSecret extends Job{ if ($status === Http::STATUS_FORBIDDEN) { $this->logger->info($target . ' refused to exchange a shared secret with you.', ['app' => 'federation']); } else { - $this->logger->logException($e, ['app' => 'federation']); + $this->logger->info($target . ' responded with a ' . $status . ' containing: ' . $e->getMessage(), ['app' => 'federation']); } } catch (\Exception $e) { $status = Http::STATUS_INTERNAL_SERVER_ERROR; diff --git a/apps/federation/lib/BackgroundJob/RequestSharedSecret.php b/apps/federation/lib/BackgroundJob/RequestSharedSecret.php index 60b22cd6283..9123e37300d 100644 --- a/apps/federation/lib/BackgroundJob/RequestSharedSecret.php +++ b/apps/federation/lib/BackgroundJob/RequestSharedSecret.php @@ -177,7 +177,7 @@ class RequestSharedSecret extends Job { if ($status === Http::STATUS_FORBIDDEN) { $this->logger->info($target . ' refused to ask for a shared secret.', ['app' => 'federation']); } else { - $this->logger->logException($e, ['app' => 'federation']); + $this->logger->info($target . ' responded with a ' . $status . ' containing: ' . $e->getMessage(), ['app' => 'federation']); } } catch (\Exception $e) { $status = Http::STATUS_INTERNAL_SERVER_ERROR; diff --git a/apps/files/css/files.scss b/apps/files/css/files.scss index 1a95ce1e34b..5e1f15c1cc1 100644 --- a/apps/files/css/files.scss +++ b/apps/files/css/files.scss @@ -436,45 +436,22 @@ table td.filename .uploadtext { opacity: .5; } -.ie8 input[type="checkbox"]{ - padding: 0; -} - /* File checkboxes */ -html:not(.ie8) #fileList tr td.filename>.selectCheckBox + label:before { +#fileList tr td.filename>.selectCheckBox + label:before { opacity: 0; position: absolute; bottom: 4px; right: 0; z-index: 10; } -html.ie8 #fileList tr td.filename>.selectCheckBox { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; - filter: alpha(opacity=0); - opacity: 0; - float: left; - top: 0; - margin: 32px 0 4px 32px; /* bigger clickable area doesn’t work in FF width:2.8em; height:2.4em;*/ -} /* Show checkbox when hovering, checked, or selected */ -html.ie8 #fileList tr:hover td.filename>.selectCheckBox, -html.ie8 #fileList tr:focus td.filename>.selectCheckBox, -html.ie8 #fileList tr td.filename>.selectCheckBox:checked, -html.ie8 #fileList tr.selected td.filename>.selectCheckBox, -html:not(.ie8) #fileList tr:hover td.filename>.selectCheckBox + label:before, -html:not(.ie8) #fileList tr:focus td.filename>.selectCheckBox + label:before, -html:not(.ie8) #fileList tr td.filename>.selectCheckBox:checked + label:before, -html:not(.ie8) #fileList tr.selected td.filename>.selectCheckBox + label:before { +#fileList tr:hover td.filename>.selectCheckBox + label:before, +#fileList tr:focus td.filename>.selectCheckBox + label:before, +#fileList tr td.filename>.selectCheckBox:checked + label:before, +#fileList tr.selected td.filename>.selectCheckBox + label:before { opacity: 1; } -html.ie8 #fileList tr:hover td.filename>.selectCheckBox, -html.ie8 #fileList tr:focus td.filename>.selectCheckBox, -html.ie8 #fileList tr td.filename>.selectCheckBox[checked=checked], -html.ie8 #fileList tr.selected td.filename>.selectCheckBox { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; - filter: alpha(opacity=100); -} /* Use label to have bigger clickable size for checkbox */ #fileList tr td.filename>.selectCheckBox + label, @@ -494,7 +471,6 @@ html.ie8 #fileList tr.selected td.filename>.selectCheckBox { .select-all + label { top: 0; } -.ie8 .select-all, .select-all + label:before { position: absolute; top: 18px; @@ -558,8 +534,6 @@ html.ie8 #fileList tr.selected td.filename>.selectCheckBox { display: inline !important; } -#fileList img.move2trash { display:inline; margin:-8px 0; padding:16px 8px 16px 8px !important; float:right; } - #fileList .action.action-share-notification span, #fileList a.name { cursor: default !important; } @@ -594,10 +568,6 @@ a.action > img { margin-bottom: -1px; } -html.ie8 .column-mtime .selectedActions { - top: -95px; -} - #fileList a.action { display: inline; padding: 17px 8px; @@ -605,7 +575,6 @@ html.ie8 .column-mtime .selectedActions { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); opacity: 0; - display:none; } #fileList a.action.action-share { padding: 17px 14px; @@ -618,84 +587,45 @@ html.ie8 .column-mtime .selectedActions { padding-right: 14px; } -.ie8 #fileList a.action img, -#fileList tr:hover a.action, -#fileList a.action.permanent, -#fileList tr:focus a.action, -#fileList tr:hover a.action.no-permission:hover, -#fileList tr:focus a.action.no-permission:focus, -/*#fileList .name:focus .action,*/ +#fileList a.action, +#fileList a.action.no-permission:hover, +#fileList a.action.no-permission:focus, /* also enforce the low opacity for disabled links that are hovered/focused */ -.ie8 #fileList a.action.disabled:hover img, -#fileList tr:hover a.action.disabled:hover, -#fileList tr:focus a.action.disabled:focus, -#fileList .name:focus a.action.disabled:focus, +#fileList a.action.disabled:hover, +#fileList a.action.disabled:focus, #fileList a.action.disabled img { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; filter: alpha(opacity=30); opacity: .3; } -.ie8 #fileList a.action:hover img, -#fileList tr a.action.disabled.action-download, -#fileList tr:hover a.action.disabled.action-download:hover, -#fileList tr:focus a.action.disabled.action-download:focus, -#fileList tr:hover a.action:hover, -#fileList tr:focus a.action:focus, -#fileList .name:focus a.action:focus { + +#fileList a.action.disabled.action-download, +#fileList a.action.disabled.action-download:hover, +#fileList a.action.disabled.action-download:focus, +#fileList a.action:hover, +#fileList a.action:focus, +#fileList .fileActionsMenu a.action, +/* show share action of shared items darker to distinguish from non-shared */ +#fileList a.action.action-share.shared-style { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; filter: alpha(opacity=70); opacity: .7; - display:inline; } -#fileList .fileActionsMenu a.action.permanent { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)" !important; - filter: alpha(opacity=70) !important; - opacity: .7 !important; -} -#fileList .fileActionsMenu a.action.permanent:hover, -#fileList .fileActionsMenu a.action.permanent:focus { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)" !important; - filter: alpha(opacity=100) !important; - opacity: 1 !important; +#fileList .fileActionsMenu a.action:hover, +#fileList .fileActionsMenu a.action:focus, +/* show share action of shared items darker to distinguish from non-shared */ +#fileList a.action.action-share.shared-style:hover, +#fileList a.action.action-share.shared-style:focus { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + filter: alpha(opacity=100); + opacity: 1; } #fileList tr a.action.disabled { background: none; } -/* show share action of shared items darker to distinguish from non-shared */ -#fileList a.action.action-share.permanent.shared-style, -/* show hovered permanent entries darker */ -#fileList tr a.action.permanent:hover, -#fileList tr a.action.permanent:focus { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)" !important; - filter: alpha(opacity=70) !important; - opacity: .7 !important; - display:inline; -} -/* always show actions on mobile, not only on hover */ -#fileList a.action.permanent { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)" !important; - filter: alpha(opacity=30) !important; - opacity: .3 !important; - display: inline !important; -} - -/* properly display actions in the popover menu */ -#fileList .popovermenu .action { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)" !important; - filter: alpha(opacity=50) !important; - opacity: .5 !important; -} -#fileList .popovermenu .action:hover, -#fileList .popovermenu .action:focus { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)" !important; - filter: alpha(opacity=100) !important; - opacity: 1 !important; -} - - #selectedActionsList a.download.disabled, #fileList tr a.action.action-download.disabled { color: #000000; @@ -741,14 +671,6 @@ table.dragshadow td.filename { table.dragshadow td.size { padding-right:8px; } -#upgrade { - width: 400px; - position: absolute; - top: 200px; - left: 50%; - text-align: center; - margin-left: -200px; -} .mask { z-index: 50; position: absolute; @@ -771,10 +693,6 @@ table.dragshadow td.size { opacity: 0; } -html.ie8 #controls .button.new { - padding-right: 0; -} - .newFileMenu { font-weight: 300; top: 100%; diff --git a/apps/files/js/favoritesfilelist.js b/apps/files/js/favoritesfilelist.js index 380689be10b..4c2cf3ce818 100644 --- a/apps/files/js/favoritesfilelist.js +++ b/apps/files/js/favoritesfilelist.js @@ -94,6 +94,12 @@ $(document).ready(function() { } return OCA.Files.FileList.prototype.reloadCallback.call(this, status, result); + }, + + _onUrlChanged: function (e) { + if (e && _.isString(e.dir)) { + this.changeDirectory(e.dir, false, true); + } } }); diff --git a/apps/files/l10n/pt_BR.js b/apps/files/l10n/pt_BR.js index e04d2b6bf8e..7a791d4f049 100644 --- a/apps/files/l10n/pt_BR.js +++ b/apps/files/l10n/pt_BR.js @@ -52,7 +52,7 @@ OC.L10N.register( "_%n folder_::_%n folders_" : ["%n pasta","%n pastas"], "_%n file_::_%n files_" : ["%n arquivo","%n arquivos"], "{dirs} and {files}" : "{dirs} e {files}", - "_including %n hidden_::_including %n hidden_" : ["incluindo %n escondido","incluindo %n escondidos"], + "_including %n hidden_::_including %n hidden_" : ["incluindo %n escondido","incluindo %n ocultos"], "You don’t have permission to upload or create files here" : "Você não tem permissão para enviar ou criar arquivos aqui", "_Uploading %n file_::_Uploading %n files_" : ["Enviando %n arquivo","Enviando %n arquivos"], "New" : "Novo", diff --git a/apps/files/l10n/pt_BR.json b/apps/files/l10n/pt_BR.json index b2ecc91139c..d63e6bd311b 100644 --- a/apps/files/l10n/pt_BR.json +++ b/apps/files/l10n/pt_BR.json @@ -50,7 +50,7 @@ "_%n folder_::_%n folders_" : ["%n pasta","%n pastas"], "_%n file_::_%n files_" : ["%n arquivo","%n arquivos"], "{dirs} and {files}" : "{dirs} e {files}", - "_including %n hidden_::_including %n hidden_" : ["incluindo %n escondido","incluindo %n escondidos"], + "_including %n hidden_::_including %n hidden_" : ["incluindo %n escondido","incluindo %n ocultos"], "You don’t have permission to upload or create files here" : "Você não tem permissão para enviar ou criar arquivos aqui", "_Uploading %n file_::_Uploading %n files_" : ["Enviando %n arquivo","Enviando %n arquivos"], "New" : "Novo", diff --git a/apps/files/templates/simplelist.php b/apps/files/templates/simplelist.php index ca26d9b5d5b..c787f9eb8df 100644 --- a/apps/files/templates/simplelist.php +++ b/apps/files/templates/simplelist.php @@ -2,7 +2,7 @@ <div id="emptycontent" class="hidden"> <div class="icon-starred"></div> - <h2><?php p($l->t('No favorites')); ?></h2> + <h2><?php p($l->t('No favorites yet')); ?></h2> <p><?php p($l->t('Files and folders you mark as favorite will show up here')); ?></p> </div> @@ -40,4 +40,3 @@ <tfoot> </tfoot> </table> - diff --git a/apps/files_external/l10n/de.js b/apps/files_external/l10n/de.js index 57cc7bc26f7..2b157e979f8 100644 --- a/apps/files_external/l10n/de.js +++ b/apps/files_external/l10n/de.js @@ -38,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "Anmeldeinformationen gespeichert", "Credentials saving failed" : "Speichern der Anmeldeinformationen fehlgeschlagen", "Credentials required" : "Anmeldeinformationen benötigt", + "Storage with ID \"%d\" not found" : "Der Speicher mit der ID „%d“ wurde nicht gefunden", "Invalid backend or authentication mechanism class" : "Ungültiger Backend- oder Authentifizierungsmechanismus", "Invalid mount point" : "Ungültiger mount point", "Objectstore forbidden" : "Objekt nicht erlaubt", @@ -48,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Unbefriedigende Authentifizierungsmechanismus Parameter", "Insufficient data: %s" : "Unzureichende Daten: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Speicher mit der ID \"%d\" kann nicht vom Benutzer bearbeitet werden", "Access key" : "Zugangsschlüssel", "Secret key" : "Geheimer Schlüssel", "Builtin" : "eingebaut", diff --git a/apps/files_external/l10n/de.json b/apps/files_external/l10n/de.json index c49233d6eeb..fb21d169690 100644 --- a/apps/files_external/l10n/de.json +++ b/apps/files_external/l10n/de.json @@ -36,6 +36,7 @@ "Credentials saved" : "Anmeldeinformationen gespeichert", "Credentials saving failed" : "Speichern der Anmeldeinformationen fehlgeschlagen", "Credentials required" : "Anmeldeinformationen benötigt", + "Storage with ID \"%d\" not found" : "Der Speicher mit der ID „%d“ wurde nicht gefunden", "Invalid backend or authentication mechanism class" : "Ungültiger Backend- oder Authentifizierungsmechanismus", "Invalid mount point" : "Ungültiger mount point", "Objectstore forbidden" : "Objekt nicht erlaubt", @@ -46,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "Unbefriedigende Authentifizierungsmechanismus Parameter", "Insufficient data: %s" : "Unzureichende Daten: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Speicher mit der ID \"%d\" kann nicht vom Benutzer bearbeitet werden", "Access key" : "Zugangsschlüssel", "Secret key" : "Geheimer Schlüssel", "Builtin" : "eingebaut", diff --git a/apps/files_external/l10n/de_DE.js b/apps/files_external/l10n/de_DE.js index 427a8211fc4..d60ea5c3750 100644 --- a/apps/files_external/l10n/de_DE.js +++ b/apps/files_external/l10n/de_DE.js @@ -38,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "Zugangsdaten gespeichert", "Credentials saving failed" : "Speichern der Zugangsdaten fehlgeschlagen", "Credentials required" : "Zugangsdaten benötigt", + "Storage with ID \"%d\" not found" : "Speicher mit ID \"1 %d\" nicht gefunden", "Invalid backend or authentication mechanism class" : "Ungültiges Backend oder falscher Authentifizierungsmodus", "Invalid mount point" : "Ungültiger mount point", "Objectstore forbidden" : "Objekt nicht erlaubt", @@ -48,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Unbefriedigende Autentifizierungs-Mechanismus Parameter", "Insufficient data: %s" : "Unzureichende Daten: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Speicher mit ID \"1 %d\" ist nicht durch den Benutzer editierbar", "Access key" : "Zugangsschlüssel", "Secret key" : "geheimer Schlüssel", "Builtin" : "Eingebaut", diff --git a/apps/files_external/l10n/de_DE.json b/apps/files_external/l10n/de_DE.json index bf2eddf5301..09e5558bba7 100644 --- a/apps/files_external/l10n/de_DE.json +++ b/apps/files_external/l10n/de_DE.json @@ -36,6 +36,7 @@ "Credentials saved" : "Zugangsdaten gespeichert", "Credentials saving failed" : "Speichern der Zugangsdaten fehlgeschlagen", "Credentials required" : "Zugangsdaten benötigt", + "Storage with ID \"%d\" not found" : "Speicher mit ID \"1 %d\" nicht gefunden", "Invalid backend or authentication mechanism class" : "Ungültiges Backend oder falscher Authentifizierungsmodus", "Invalid mount point" : "Ungültiger mount point", "Objectstore forbidden" : "Objekt nicht erlaubt", @@ -46,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "Unbefriedigende Autentifizierungs-Mechanismus Parameter", "Insufficient data: %s" : "Unzureichende Daten: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Speicher mit ID \"1 %d\" ist nicht durch den Benutzer editierbar", "Access key" : "Zugangsschlüssel", "Secret key" : "geheimer Schlüssel", "Builtin" : "Eingebaut", diff --git a/apps/files_external/l10n/fr.js b/apps/files_external/l10n/fr.js index 2df34719d0d..80c3ff58a04 100644 --- a/apps/files_external/l10n/fr.js +++ b/apps/files_external/l10n/fr.js @@ -38,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "Identifiants sauvegardés", "Credentials saving failed" : "La sauvegarde des identifiants a échoué", "Credentials required" : "Des informations d'identification sont requises", + "Storage with ID \"%d\" not found" : "Stockage avec l'ID \"%d\" non trouvé", "Invalid backend or authentication mechanism class" : "Service ou méthode d'authentification non valable", "Invalid mount point" : "Point de montage non valide", "Objectstore forbidden" : "\"Objectstore\" interdit", @@ -48,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Paramètres manquants pour la méthode d'authentification", "Insufficient data: %s" : "Données insuffisantes : %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Le support de stockage avec l'ID \"%d\" n'est pas modifiable par les utilisateurs", "Access key" : "Clé d'accès", "Secret key" : "Clé secrète", "Builtin" : "Intégré", diff --git a/apps/files_external/l10n/fr.json b/apps/files_external/l10n/fr.json index 9e1cebb61a3..7f19073c228 100644 --- a/apps/files_external/l10n/fr.json +++ b/apps/files_external/l10n/fr.json @@ -36,6 +36,7 @@ "Credentials saved" : "Identifiants sauvegardés", "Credentials saving failed" : "La sauvegarde des identifiants a échoué", "Credentials required" : "Des informations d'identification sont requises", + "Storage with ID \"%d\" not found" : "Stockage avec l'ID \"%d\" non trouvé", "Invalid backend or authentication mechanism class" : "Service ou méthode d'authentification non valable", "Invalid mount point" : "Point de montage non valide", "Objectstore forbidden" : "\"Objectstore\" interdit", @@ -46,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "Paramètres manquants pour la méthode d'authentification", "Insufficient data: %s" : "Données insuffisantes : %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Le support de stockage avec l'ID \"%d\" n'est pas modifiable par les utilisateurs", "Access key" : "Clé d'accès", "Secret key" : "Clé secrète", "Builtin" : "Intégré", diff --git a/apps/files_external/l10n/nb.js b/apps/files_external/l10n/nb.js index 107d761d5ee..72c33458ae7 100644 --- a/apps/files_external/l10n/nb.js +++ b/apps/files_external/l10n/nb.js @@ -38,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "Påloggingsdetaljer lagret", "Credentials saving failed" : "Lagring av påloggingsdetaljer mislyktes", "Credentials required" : "Påloggingsdetaljer kreves", + "Storage with ID \"%d\" not found" : "Lager med ID \"%d\" ikke funnet", "Invalid backend or authentication mechanism class" : "Ugyldig bakende eller type autentiseringsmekanisme", "Invalid mount point" : "Ugyldig oppkoblingspunkt", "Objectstore forbidden" : "Objektlager forbudt", @@ -48,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Noen parametre for autentiseringsmekanisme mangler", "Insufficient data: %s" : "Utilstrekkelige data: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Lager med ID \"%d\" kan ikke redigeres av bruker", "Access key" : "Tilgangsnøkkel", "Secret key" : "Hemmelig nøkkel", "Builtin" : "Innebygget", diff --git a/apps/files_external/l10n/nb.json b/apps/files_external/l10n/nb.json index e6a2e13a269..7d36ac32850 100644 --- a/apps/files_external/l10n/nb.json +++ b/apps/files_external/l10n/nb.json @@ -36,6 +36,7 @@ "Credentials saved" : "Påloggingsdetaljer lagret", "Credentials saving failed" : "Lagring av påloggingsdetaljer mislyktes", "Credentials required" : "Påloggingsdetaljer kreves", + "Storage with ID \"%d\" not found" : "Lager med ID \"%d\" ikke funnet", "Invalid backend or authentication mechanism class" : "Ugyldig bakende eller type autentiseringsmekanisme", "Invalid mount point" : "Ugyldig oppkoblingspunkt", "Objectstore forbidden" : "Objektlager forbudt", @@ -46,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "Noen parametre for autentiseringsmekanisme mangler", "Insufficient data: %s" : "Utilstrekkelige data: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Lager med ID \"%d\" kan ikke redigeres av bruker", "Access key" : "Tilgangsnøkkel", "Secret key" : "Hemmelig nøkkel", "Builtin" : "Innebygget", diff --git a/apps/files_external/l10n/pl.js b/apps/files_external/l10n/pl.js index 3bcf24d26c0..d35058891e3 100644 --- a/apps/files_external/l10n/pl.js +++ b/apps/files_external/l10n/pl.js @@ -38,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "Poświadczenia zapisane", "Credentials saving failed" : "Poświadczenia oszczędności nie powiodło się", "Credentials required" : "Wymagane poświadczenia", + "Storage with ID \"%d\" not found" : "Nie znaleziono magazynu o ID \"%d\"", "Invalid backend or authentication mechanism class" : "Nieprawidłowy mechanizm uwierzytelniania powrotu lub klasy", "Invalid mount point" : "Nieprawidłowy punkt montowania", "Objectstore forbidden" : "Zabroniony obiekt sklepu", @@ -48,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Niepoprawne parametry mechanizmu uwierzytelnienia", "Insufficient data: %s" : "Niewystarczające dane: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Magazyn o ID \"%d\" nie może być edytowany przez użytkownika", "Access key" : "Klucz dostępu", "Secret key" : "Sekretny klucz", "Builtin" : "Wbudowane", diff --git a/apps/files_external/l10n/pl.json b/apps/files_external/l10n/pl.json index dd78d06dcbb..3de59414e30 100644 --- a/apps/files_external/l10n/pl.json +++ b/apps/files_external/l10n/pl.json @@ -36,6 +36,7 @@ "Credentials saved" : "Poświadczenia zapisane", "Credentials saving failed" : "Poświadczenia oszczędności nie powiodło się", "Credentials required" : "Wymagane poświadczenia", + "Storage with ID \"%d\" not found" : "Nie znaleziono magazynu o ID \"%d\"", "Invalid backend or authentication mechanism class" : "Nieprawidłowy mechanizm uwierzytelniania powrotu lub klasy", "Invalid mount point" : "Nieprawidłowy punkt montowania", "Objectstore forbidden" : "Zabroniony obiekt sklepu", @@ -46,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "Niepoprawne parametry mechanizmu uwierzytelnienia", "Insufficient data: %s" : "Niewystarczające dane: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Magazyn o ID \"%d\" nie może być edytowany przez użytkownika", "Access key" : "Klucz dostępu", "Secret key" : "Sekretny klucz", "Builtin" : "Wbudowane", diff --git a/apps/files_external/l10n/pt_BR.js b/apps/files_external/l10n/pt_BR.js index 8c05a16c8e6..dc307664c29 100644 --- a/apps/files_external/l10n/pt_BR.js +++ b/apps/files_external/l10n/pt_BR.js @@ -38,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "Credenciais salvas", "Credentials saving failed" : "A gravação das credenciais falhou", "Credentials required" : "Credenciais são requeridas", + "Storage with ID \"%d\" not found" : "A armazenagem com a ID \"%d\" não foi encontrada", "Invalid backend or authentication mechanism class" : "Backend ou classe de mecanismo de autenticação inválido", "Invalid mount point" : "Ponto de montagem inválido", "Objectstore forbidden" : "Proibido armazenamento de objetos", @@ -48,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Parâmetros de mecanismos de autenticação não satisfeitos", "Insufficient data: %s" : "Dados insuficientes: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "A armazenagem com o ID \"%d\" não é editável pelo usuário", "Access key" : "Chave da acesso", "Secret key" : "Chave secreta", "Builtin" : "Construídas em", @@ -119,7 +121,7 @@ OC.L10N.register( "Authentication" : "Autenticação", "Configuration" : "Configuração", "Available for" : "Disponível por", - "Add storage" : "Adicionar Armazenamento", + "Add storage" : "Adicionar armazenamento", "Advanced settings" : "Configurações avançadas", "Delete" : "Excluir", "Allow users to mount external storage" : "Permitir que usuários montem armazenamento externo", diff --git a/apps/files_external/l10n/pt_BR.json b/apps/files_external/l10n/pt_BR.json index 988847915f3..8703e577756 100644 --- a/apps/files_external/l10n/pt_BR.json +++ b/apps/files_external/l10n/pt_BR.json @@ -36,6 +36,7 @@ "Credentials saved" : "Credenciais salvas", "Credentials saving failed" : "A gravação das credenciais falhou", "Credentials required" : "Credenciais são requeridas", + "Storage with ID \"%d\" not found" : "A armazenagem com a ID \"%d\" não foi encontrada", "Invalid backend or authentication mechanism class" : "Backend ou classe de mecanismo de autenticação inválido", "Invalid mount point" : "Ponto de montagem inválido", "Objectstore forbidden" : "Proibido armazenamento de objetos", @@ -46,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "Parâmetros de mecanismos de autenticação não satisfeitos", "Insufficient data: %s" : "Dados insuficientes: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "A armazenagem com o ID \"%d\" não é editável pelo usuário", "Access key" : "Chave da acesso", "Secret key" : "Chave secreta", "Builtin" : "Construídas em", @@ -117,7 +119,7 @@ "Authentication" : "Autenticação", "Configuration" : "Configuração", "Available for" : "Disponível por", - "Add storage" : "Adicionar Armazenamento", + "Add storage" : "Adicionar armazenamento", "Advanced settings" : "Configurações avançadas", "Delete" : "Excluir", "Allow users to mount external storage" : "Permitir que usuários montem armazenamento externo", diff --git a/apps/files_external/l10n/ru.js b/apps/files_external/l10n/ru.js index bd9798d0629..c6ad1041781 100644 --- a/apps/files_external/l10n/ru.js +++ b/apps/files_external/l10n/ru.js @@ -38,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "Учетные данные сохранены", "Credentials saving failed" : "Ошибка сохранения учетных данных", "Credentials required" : "Требуются учетные данные", + "Storage with ID \"%d\" not found" : "Хранилище с идентификатором «%d» не найдено", "Invalid backend or authentication mechanism class" : "Некорректный механизм авторизации или бэкенд", "Invalid mount point" : "Неправильная точка входа", "Objectstore forbidden" : "Хранение объектов запрещено", @@ -48,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Недопустимые настройки механизма авторизации", "Insufficient data: %s" : "Недостаточно данных: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Пользователь не может редактировать хранилище с идентификатором «%d»", "Access key" : "Ключ доступа", "Secret key" : "Секретный ключ", "Builtin" : "Встроенный", diff --git a/apps/files_external/l10n/ru.json b/apps/files_external/l10n/ru.json index f9a635fb53f..b14a55a4a18 100644 --- a/apps/files_external/l10n/ru.json +++ b/apps/files_external/l10n/ru.json @@ -36,6 +36,7 @@ "Credentials saved" : "Учетные данные сохранены", "Credentials saving failed" : "Ошибка сохранения учетных данных", "Credentials required" : "Требуются учетные данные", + "Storage with ID \"%d\" not found" : "Хранилище с идентификатором «%d» не найдено", "Invalid backend or authentication mechanism class" : "Некорректный механизм авторизации или бэкенд", "Invalid mount point" : "Неправильная точка входа", "Objectstore forbidden" : "Хранение объектов запрещено", @@ -46,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "Недопустимые настройки механизма авторизации", "Insufficient data: %s" : "Недостаточно данных: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "Пользователь не может редактировать хранилище с идентификатором «%d»", "Access key" : "Ключ доступа", "Secret key" : "Секретный ключ", "Builtin" : "Встроенный", diff --git a/apps/files_external/l10n/tr.js b/apps/files_external/l10n/tr.js index ec798ab414a..0c255199915 100644 --- a/apps/files_external/l10n/tr.js +++ b/apps/files_external/l10n/tr.js @@ -38,6 +38,7 @@ OC.L10N.register( "Credentials saved" : "Kimlik doğrulama bilgileri kaydedildi", "Credentials saving failed" : "Kimlik doğrulama bilgileri kaydedilemedi", "Credentials required" : "Kimlik doğrulama bilgileri gerekli", + "Storage with ID \"%d\" not found" : "\"%d\" kodlu depolama bulunamadı", "Invalid backend or authentication mechanism class" : "Arka yüz ya da kimlik doğrulama mekanizması sınıfı geçersiz", "Invalid mount point" : "Bağlama noktası geçersiz", "Objectstore forbidden" : "Nesne deposuna erişim kapalı", @@ -48,6 +49,7 @@ OC.L10N.register( "Unsatisfied authentication mechanism parameters" : "Kimlik doğrulama mekanizması parametreleri yetersiz", "Insufficient data: %s" : "Veriler yetersiz: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "\"%d\" kodlu depolama kullanıcı tarafından düzenlenebilir değil", "Access key" : "Erişim anahtarı", "Secret key" : "Gizli anahtar", "Builtin" : "Yerleşik", diff --git a/apps/files_external/l10n/tr.json b/apps/files_external/l10n/tr.json index cfb3bf12418..7d5b940897e 100644 --- a/apps/files_external/l10n/tr.json +++ b/apps/files_external/l10n/tr.json @@ -36,6 +36,7 @@ "Credentials saved" : "Kimlik doğrulama bilgileri kaydedildi", "Credentials saving failed" : "Kimlik doğrulama bilgileri kaydedilemedi", "Credentials required" : "Kimlik doğrulama bilgileri gerekli", + "Storage with ID \"%d\" not found" : "\"%d\" kodlu depolama bulunamadı", "Invalid backend or authentication mechanism class" : "Arka yüz ya da kimlik doğrulama mekanizması sınıfı geçersiz", "Invalid mount point" : "Bağlama noktası geçersiz", "Objectstore forbidden" : "Nesne deposuna erişim kapalı", @@ -46,6 +47,7 @@ "Unsatisfied authentication mechanism parameters" : "Kimlik doğrulama mekanizması parametreleri yetersiz", "Insufficient data: %s" : "Veriler yetersiz: %s", "%s" : "%s", + "Storage with ID \"%d\" is not user editable" : "\"%d\" kodlu depolama kullanıcı tarafından düzenlenebilir değil", "Access key" : "Erişim anahtarı", "Secret key" : "Gizli anahtar", "Builtin" : "Yerleşik", diff --git a/apps/files_external/lib/Command/Config.php b/apps/files_external/lib/Command/Config.php index 362f0a0f2b5..5df6f7ee650 100644 --- a/apps/files_external/lib/Command/Config.php +++ b/apps/files_external/lib/Command/Config.php @@ -91,9 +91,9 @@ class Config extends Base { } else { $value = $mount->getBackendOption($key); } - if (!is_string($value)) { // show bools and objects correctly - $value = json_encode($value); - } + if (!is_string($value) && json_decode(json_encode($value)) === $value) { // show bools and objects correctly + $value = json_encode($value); + } $output->writeln($value); } @@ -105,9 +105,9 @@ class Config extends Base { */ protected function setOption(StorageConfig $mount, $key, $value, OutputInterface $output) { $decoded = json_decode($value, true); - if (!is_null($decoded)) { - $value = $decoded; - } + if (!is_null($decoded) && json_encode($decoded) === $value) { + $value = $decoded; + } if ($key === 'mountpoint' || $key === 'mount_point') { $mount->setMountPoint($value); } else { diff --git a/apps/files_sharing/css/mobile.scss b/apps/files_sharing/css/mobile.scss index f24ada1898a..8e58aa439c6 100644 --- a/apps/files_sharing/css/mobile.scss +++ b/apps/files_sharing/css/mobile.scss @@ -34,13 +34,6 @@ table td.filename .nametext { margin-top: 32px; } -/* always show actions on mobile */ -#fileList a.action { - -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=20)" !important; - filter: alpha(opacity=20) !important; - opacity: .2 !important; - display: inline !important; -} /* some padding for better clickability */ #fileList a.action img { padding: 0 6px 0 12px; diff --git a/apps/files_sharing/css/sharetabview.scss b/apps/files_sharing/css/sharetabview.scss index 6fd2b9b3165..82f0ffa5822 100644 --- a/apps/files_sharing/css/sharetabview.scss +++ b/apps/files_sharing/css/sharetabview.scss @@ -40,6 +40,17 @@ padding: 18px 0 18px 36px; } +/* fix clickable area because in the share tab popover the label is inside the actual menu item*/ +#shareWithList .popovermenu .shareOption { + padding-right: 0 !important; +} +/* fix clickable area because in the share tab popover the label is inside the actual menu item*/ +.shareTabView .popovermenu label { + width: 100%; + display: inline-block; + padding: 0 10px 0 0 !important; +} + .shareTabView label { white-space: nowrap; } diff --git a/apps/files_sharing/js/files_drop.js b/apps/files_sharing/js/files_drop.js index 64051844d03..ddfcfcd3d8b 100644 --- a/apps/files_sharing/js/files_drop.js +++ b/apps/files_sharing/js/files_drop.js @@ -20,9 +20,11 @@ var Drop = { /** @type {Function} **/ _template: undefined, - - initialize: function () { - + + addFileToUpload: function(e, data) { + var errors = []; + var output = this.template(); + var filesClient = new OC.Files.Client({ host: OC.getHost(), port: OC.getPort(), @@ -32,7 +34,45 @@ root: OC.getRootPath() + '/public.php/webdav', useHTTPS: OC.getProtocol() === 'https' }); - + + var name = data.files[0].name; + try { + // FIXME: not so elegant... need to refactor that method to return a value + Files.isFileNameValid(name); + } + catch (errorMessage) { + OC.Notification.show(errorMessage, {type: 'error'}); + return false; + } + var base = OC.getProtocol() + '://' + OC.getHost(); + data.url = base + OC.getRootPath() + '/public.php/webdav/' + encodeURI(name); + + data.multipart = false; + + if (!data.headers) { + data.headers = {}; + } + + var userName = filesClient.getUserName(); + var password = filesClient.getPassword(); + if (userName) { + // copy username/password from DAV client + data.headers['Authorization'] = + 'Basic ' + btoa(userName + ':' + (password || '')); + } + + $('#drop-upload-done-indicator').addClass('hidden'); + $('#drop-upload-progress-indicator').removeClass('hidden'); + _.each(data['files'], function(file) { + $('#public-upload ul').append(output({isUploading: true, name: escapeHTML(file.name)})); + $('[data-toggle="tooltip"]').tooltip(); + data.submit(); + }); + + return true; + }, + + initialize: function () { $(document).bind('drop dragover', function (e) { // Prevent the default browser drop action: e.preventDefault(); @@ -43,35 +83,9 @@ dropZone: $('#public-upload'), sequentialUploads: true, add: function(e, data) { - var errors = []; - - var name = data.files[0].name; - - var base = OC.getProtocol() + '://' + OC.getHost(); - data.url = base + OC.getRootPath() + '/public.php/webdav/' + encodeURI(name); - - data.multipart = false; - - if (!data.headers) { - data.headers = {}; - } - - var userName = filesClient.getUserName(); - var password = filesClient.getPassword(); - if (userName) { - // copy username/password from DAV client - data.headers['Authorization'] = - 'Basic ' + btoa(userName + ':' + (password || '')); - } - - $('#drop-upload-done-indicator').addClass('hidden'); - $('#drop-upload-progress-indicator').removeClass('hidden'); - _.each(data['files'], function(file) { - $('#public-upload ul').append(output({isUploading: true, name: escapeHTML(file.name)})); - $('[data-toggle="tooltip"]').tooltip(); - data.submit(); - }); - + Drop.addFileToUpload(e, data); + //we return true to keep trying to upload next file even + //if addFileToUpload did not like the privious one return true; }, done: function(e, data) { @@ -116,15 +130,13 @@ } }; + OCA.FilesSharingDrop = Drop; + $(document).ready(function() { if($('#upload-only-interface').val() === "1") { $('.avatardiv').avatar($('#sharingUserId').val(), 128, true); } - OCA.Files_Sharing_Drop = Drop; - OCA.Files_Sharing_Drop.initialize(); + OCA.FilesSharingDrop.initialize(); }); - - })(jQuery); - diff --git a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php index 6dfa8ec6c77..f5df9b62b19 100644 --- a/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php +++ b/apps/files_sharing/tests/Controller/ShareAPIControllerTest.php @@ -39,6 +39,7 @@ use OCP\Lock\LockedException; use OCP\Share\IManager; use OCP\Share; use Test\TestCase; +use OCP\Share\IShare; /** * Class ShareAPIControllerTest @@ -549,18 +550,18 @@ class ShareAPIControllerTest extends TestCase { ])); $this->assertTrue($this->invokePrivate($this->ocs, 'canAccessShare', [$share])); - $share = $this->getMockBuilder('OCP\Share\IShare')->getMock(); + $share = $this->createMock(IShare::class); $share->method('getShareType')->willReturn(\OCP\Share::SHARE_TYPE_GROUP); $share->method('getSharedWith')->willReturn('group2'); $this->assertFalse($this->invokePrivate($this->ocs, 'canAccessShare', [$share])); // null group - $share = $this->getMock('OCP\Share\IShare'); + $share = $this->createMock(IShare::class); $share->method('getShareType')->willReturn(\OCP\Share::SHARE_TYPE_GROUP); $share->method('getSharedWith')->willReturn('groupnull'); $this->assertFalse($this->invokePrivate($this->ocs, 'canAccessShare', [$share])); - $share = $this->getMockBuilder('OCP\Share\IShare')->getMock(); + $share = $this->createMock(IShare::class); $share->method('getShareType')->willReturn(\OCP\Share::SHARE_TYPE_LINK); $this->assertFalse($this->invokePrivate($this->ocs, 'canAccessShare', [$share])); } diff --git a/apps/files_sharing/tests/js/fileDropSpec.js b/apps/files_sharing/tests/js/fileDropSpec.js new file mode 100644 index 00000000000..22bb95878b4 --- /dev/null +++ b/apps/files_sharing/tests/js/fileDropSpec.js @@ -0,0 +1,98 @@ +/** + * + * @copyright Copyright (c) 2017, Artur Neumann (info@individual-it.net) + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * 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 + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +describe("files Drop tests", function() { + //some testing data + var sharingToken = "fVCiSMhScgWfiuv"; + var testFiles = [ + { name: 'test.txt', expectedValidationResult: true }, + { name: 'testनेपाल.txt', expectedValidationResult: true }, + { name: 'test.part', expectedValidationResult: false }, + { name: 'test.filepart', expectedValidationResult: false }, + { name: '.', expectedValidationResult: false }, + { name: '..', expectedValidationResult: false }, + ]; + + //this pre/post positions should not change the result of the file name validation + var prePostPositions = [""," "," "," "]; + + //use the testFiles and the pre/post positions to generate more testing data + var replicatedTestFiles = []; + prePostPositions.map(function (prePostPosition) { + testFiles.map(function (testFile) { + replicatedTestFiles.push( + { + name: testFile.name + prePostPosition, + expectedValidationResult: testFile.expectedValidationResult + } + ); + replicatedTestFiles.push( + { + name: prePostPosition + testFile.name, + expectedValidationResult: testFile.expectedValidationResult + } + ); + replicatedTestFiles.push( + { + name: prePostPosition + testFile.name + prePostPosition, + expectedValidationResult: testFile.expectedValidationResult + } + ); + }); + }); + + beforeEach (function () { + //fake input for the sharing token + $('#testArea').append( + '<input name="sharingToken" value="" id="sharingToken" type="hidden">' + ); + }); + + + replicatedTestFiles.map(function (testFile) { + it("validates the filenames correctly", function() { + data = { + 'submit': function() {}, + 'files': [testFile] + } + expect(OCA.FilesSharingDrop.addFileToUpload('',data)). + toBe( + testFile.expectedValidationResult, + 'wrongly validated file named "'+testFile.name+'"' + ); + }); + + if (testFile.expectedValidationResult === true) { + it("should set correct PUT URL, Auth header and submit", function () { + data = { + 'submit': sinon.stub(), + 'files': [testFile] + } + $('#sharingToken').val(sharingToken); + + OCA.FilesSharingDrop.addFileToUpload('',data); + expect(data.submit.calledOnce).toEqual(true); + expect(data.url).toContain("/public.php/webdav/" + encodeURI(testFile.name)); + expect(data.headers['Authorization']).toEqual('Basic ' + btoa(sharingToken+":")); + }); + } + }); +}); diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php index d2aeac540d2..b1a1cf1c6b7 100644 --- a/apps/provisioning_api/lib/Controller/UsersController.php +++ b/apps/provisioning_api/lib/Controller/UsersController.php @@ -790,7 +790,7 @@ class UsersController extends OCSController { $targetUser = $this->userManager->get($userId); if($targetUser === null) { - throw new OCSException('', \OCP\API::RESPOND_UNAUTHORISED); + throw new OCSException('', \OCP\API::RESPOND_NOT_FOUND); } // Check if admin / subadmin diff --git a/apps/provisioning_api/tests/Controller/UsersControllerTest.php b/apps/provisioning_api/tests/Controller/UsersControllerTest.php index 1d1cd97b6d2..2eb3853d333 100644 --- a/apps/provisioning_api/tests/Controller/UsersControllerTest.php +++ b/apps/provisioning_api/tests/Controller/UsersControllerTest.php @@ -2707,7 +2707,7 @@ class UsersControllerTest extends TestCase { /** * @expectedException \OCP\AppFramework\OCS\OCSException - * @expectedExceptionCode 997 + * @expectedExceptionCode 998 */ public function testResendWelcomeMessageWithNotExistingTargetUser() { $this->userManager diff --git a/apps/sharebymail/css/settings-admin.css b/apps/sharebymail/css/settings-admin.css new file mode 100644 index 00000000000..c7bfb122f3e --- /dev/null +++ b/apps/sharebymail/css/settings-admin.css @@ -0,0 +1,3 @@ +#ncShareByMailSettings p { + padding-top: 10px; +} diff --git a/apps/sharebymail/js/settings-admin.js b/apps/sharebymail/js/settings-admin.js index 7b431233032..35a0e9855ac 100644 --- a/apps/sharebymail/js/settings-admin.js +++ b/apps/sharebymail/js/settings-admin.js @@ -24,7 +24,15 @@ $(function() { if ($(this).is(':checked')) { status = 'yes'; } - OC.AppConfig.setValue('sharebymail', 'sendpasswordmail', status); + OCP.AppConfig.setValue('sharebymail', 'sendpasswordmail', status); + }); + + $('#enforcePasswordProtection').on('change', function() { + var status = 'no'; + if ($(this).is(':checked')) { + status = 'yes'; + } + OCP.AppConfig.setValue('sharebymail', 'enforcePasswordProtection', status); }); }); diff --git a/apps/sharebymail/lib/Activity.php b/apps/sharebymail/lib/Activity.php index 1c2f37dc382..acc3e59f923 100644 --- a/apps/sharebymail/lib/Activity.php +++ b/apps/sharebymail/lib/Activity.php @@ -58,6 +58,8 @@ class Activity implements IProvider { const SUBJECT_SHARED_EMAIL_SELF = 'shared_with_email_self'; const SUBJECT_SHARED_EMAIL_BY = 'shared_with_email_by'; + const SUBJECT_SHARED_EMAIL_PASSWORD_SEND = 'shared_with_email_password_send'; + const SUBJECT_SHARED_EMAIL_PASSWORD_SEND_SELF = 'shared_with_email_password_send_self'; /** * @param IFactory $languageFactory @@ -119,15 +121,26 @@ class Activity implements IProvider { ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); } else if ($event->getSubject() === self::SUBJECT_SHARED_EMAIL_BY) { $event->setParsedSubject($this->l->t('Shared with %1$s by %2$s', [ - $parsedParameters['email']['name'], - $parsedParameters['actor']['name'], - ])) + $parsedParameters['email']['name'], + $parsedParameters['actor']['name'], + ])) ->setRichSubject($this->l->t('Shared with {email} by {actor}'), [ 'email' => $parsedParameters['email'], 'actor' => $parsedParameters['actor'], ]) ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); - + } else if ($event->getSubject() === self::SUBJECT_SHARED_EMAIL_PASSWORD_SEND) { + $event->setParsedSubject($this->l->t('Password for mail share send to %1$s', [ + $parsedParameters['email']['name'] + ])) + ->setRichSubject($this->l->t('Password for mail share send to {email}'), [ + 'email' => $parsedParameters['email'] + ]) + ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); + } else if ($event->getSubject() === self::SUBJECT_SHARED_EMAIL_PASSWORD_SEND_SELF) { + $event->setParsedSubject($this->l->t('Password for mail share send to you')) + ->setRichSubject($this->l->t('Password for mail share send to you')) + ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); } else { throw new \InvalidArgumentException(); } @@ -153,12 +166,26 @@ class Activity implements IProvider { ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); } else if ($event->getSubject() === self::SUBJECT_SHARED_EMAIL_BY) { $event->setParsedSubject($this->l->t('%3$s shared %1$s with %2$s by mail', [ - $parsedParameters['file']['path'], - $parsedParameters['email']['name'], - $parsedParameters['actor']['name'], - ])) + $parsedParameters['file']['path'], + $parsedParameters['email']['name'], + $parsedParameters['actor']['name'], + ])) ->setRichSubject($this->l->t('{actor} shared {file} with {email} by mail'), $parsedParameters) ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); + } else if ($event->getSubject() === self::SUBJECT_SHARED_EMAIL_PASSWORD_SEND) { + $event->setParsedSubject($this->l->t('Password to access %1$s was send to %2s', [ + $parsedParameters['file']['path'], + $parsedParameters['email']['name'] + ])) + ->setRichSubject($this->l->t('Password to access {file} was send to {email}'), $parsedParameters) + ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); + } else if ($event->getSubject() === self::SUBJECT_SHARED_EMAIL_PASSWORD_SEND_SELF) { + $event->setParsedSubject( + $this->l->t('Password to access %1$s was send to you', + [$parsedParameters['file']['path']])) + ->setRichSubject($this->l->t('Password to access {file} was send to you'), $parsedParameters) + ->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/share.svg'))); + } else { throw new \InvalidArgumentException(); } @@ -182,6 +209,15 @@ class Activity implements IProvider { 'email' => $this->generateEmailParameter($parameters[1]), 'actor' => $this->generateUserParameter($parameters[2]), ]; + case self::SUBJECT_SHARED_EMAIL_PASSWORD_SEND: + return [ + 'file' => $this->generateFileParameter((int) $event->getObjectId(), $parameters[0]), + 'email' => $this->generateEmailParameter($parameters[1]), + ]; + case self::SUBJECT_SHARED_EMAIL_PASSWORD_SEND_SELF: + return [ + 'file' => $this->generateFileParameter((int) $event->getObjectId(), $parameters[0]), + ]; } throw new \InvalidArgumentException(); } diff --git a/apps/sharebymail/lib/AppInfo/Application.php b/apps/sharebymail/lib/AppInfo/Application.php index 98febf9dad7..12419a8c3d9 100644 --- a/apps/sharebymail/lib/AppInfo/Application.php +++ b/apps/sharebymail/lib/AppInfo/Application.php @@ -32,7 +32,8 @@ class Application extends App { public function __construct(array $urlParams = array()) { parent::__construct('sharebymail', $urlParams); - $settings = new Settings(); + $settingsManager = \OC::$server->query(Settings\SettingsManager::class); + $settings = new Settings($settingsManager); /** register capabilities */ $container = $this->getContainer(); @@ -40,6 +41,7 @@ class Application extends App { /** register hooks */ Util::connectHook('\OCP\Config', 'js', $settings, 'announceShareProvider'); + Util::connectHook('\OCP\Config', 'js', $settings, 'announceShareByMailSettings'); } } diff --git a/apps/sharebymail/lib/Settings.php b/apps/sharebymail/lib/Settings.php index 4ab1622425b..e032bc43ff1 100644 --- a/apps/sharebymail/lib/Settings.php +++ b/apps/sharebymail/lib/Settings.php @@ -23,8 +23,17 @@ namespace OCA\ShareByMail; +use OCA\ShareByMail\Settings\SettingsManager; + class Settings { + /** @var SettingsManager */ + private $settingsManager; + + public function __construct(SettingsManager $settingsManager) { + $this->settingsManager = $settingsManager; + } + /** * announce that the share-by-mail share provider is enabled * @@ -35,4 +44,10 @@ class Settings { $array['shareByMailEnabled'] = true; $settings['array']['oc_appconfig'] = json_encode($array); } + + public function announceShareByMailSettings(array $settings) { + $array = json_decode($settings['array']['oc_appconfig'], true); + $array['shareByMail']['enforcePasswordProtection'] = $this->settingsManager->enforcePasswordProtection(); + $settings['array']['oc_appconfig'] = json_encode($array); + } } diff --git a/apps/sharebymail/lib/Settings/Admin.php b/apps/sharebymail/lib/Settings/Admin.php index b6e7e5d3b4a..93a8d3aafa4 100644 --- a/apps/sharebymail/lib/Settings/Admin.php +++ b/apps/sharebymail/lib/Settings/Admin.php @@ -40,7 +40,8 @@ class Admin implements ISettings { public function getForm() { $parameters = [ - 'sendPasswordMail' => $this->settingsManager->sendPasswordByMail() + 'sendPasswordMail' => $this->settingsManager->sendPasswordByMail(), + 'enforcePasswordProtection' => $this->settingsManager->enforcePasswordProtection() ]; return new TemplateResponse('sharebymail', 'settings-admin', $parameters, ''); diff --git a/apps/sharebymail/lib/Settings/SettingsManager.php b/apps/sharebymail/lib/Settings/SettingsManager.php index 205b253f337..2b35e5833a7 100644 --- a/apps/sharebymail/lib/Settings/SettingsManager.php +++ b/apps/sharebymail/lib/Settings/SettingsManager.php @@ -30,7 +30,9 @@ class SettingsManager { /** @var IConfig */ private $config; - private $defaultSetting = 'yes'; + private $sendPasswordByMailDefault = 'yes'; + + private $enforcePasswordProtectionDefault = 'no'; public function __construct(IConfig $config) { $this->config = $config; @@ -42,8 +44,18 @@ class SettingsManager { * @return bool */ public function sendPasswordByMail() { - $sendPasswordByMail = $this->config->getAppValue('sharebymail', 'sendpasswordmail', $this->defaultSetting); + $sendPasswordByMail = $this->config->getAppValue('sharebymail', 'sendpasswordmail', $this->sendPasswordByMailDefault); return $sendPasswordByMail === 'yes'; } + /** + * do we require a share by mail to be password protected + * + * @return bool + */ + public function enforcePasswordProtection() { + $enforcePassword = $this->config->getAppValue('sharebymail', 'enforcePasswordProtection', $this->enforcePasswordProtectionDefault); + return $enforcePassword === 'yes'; + } + } diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php index 761a2600d7c..7e0f7c5071e 100644 --- a/apps/sharebymail/lib/ShareByMailProvider.php +++ b/apps/sharebymail/lib/ShareByMailProvider.php @@ -21,6 +21,7 @@ namespace OCA\ShareByMail; +use OC\CapabilitiesManager; use OC\HintException; use OC\Share20\Exception\InvalidShare; use OCA\ShareByMail\Settings\SettingsManager; @@ -37,12 +38,12 @@ use OCP\IURLGenerator; use OCP\IUser; use OCP\IUserManager; use OCP\Mail\IMailer; +use OCP\Security\IHasher; use OCP\Security\ISecureRandom; use OC\Share20\Share; use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\IShare; use OCP\Share\IShareProvider; -use OCP\Template; /** * Class ShareByMail @@ -84,6 +85,12 @@ class ShareByMailProvider implements IShareProvider { /** @var Defaults */ private $defaults; + /** @var IHasher */ + private $hasher; + + /** @var CapabilitiesManager */ + private $capabilitiesManager; + /** * Return the identifier of this provider. * @@ -107,6 +114,8 @@ class ShareByMailProvider implements IShareProvider { * @param IManager $activityManager * @param SettingsManager $settingsManager * @param Defaults $defaults + * @param IHasher $hasher + * @param CapabilitiesManager $capabilitiesManager */ public function __construct( IDBConnection $connection, @@ -119,7 +128,9 @@ class ShareByMailProvider implements IShareProvider { IURLGenerator $urlGenerator, IManager $activityManager, SettingsManager $settingsManager, - Defaults $defaults + Defaults $defaults, + IHasher $hasher, + CapabilitiesManager $capabilitiesManager ) { $this->dbConnection = $connection; $this->secureRandom = $secureRandom; @@ -132,6 +143,8 @@ class ShareByMailProvider implements IShareProvider { $this->activityManager = $activityManager; $this->settingsManager = $settingsManager; $this->defaults = $defaults; + $this->hasher = $hasher; + $this->capabilitiesManager = $capabilitiesManager; } /** @@ -156,19 +169,80 @@ class ShareByMailProvider implements IShareProvider { throw new \Exception($message_t); } + // if the admin enforces a password for all mail shares we create a + // random password and send it to the recipient + $password = ''; + $passwordEnforced = $this->settingsManager->enforcePasswordProtection(); + if ($passwordEnforced) { + $password = $this->autoGeneratePassword($share); + } + $shareId = $this->createMailShare($share); - $this->createActivity($share); + $send = $this->sendPassword($share, $password); + if ($passwordEnforced && $send === false) { + $this->sendPasswordToOwner($share, $password); + } + + $this->createShareActivity($share); $data = $this->getRawShare($shareId); + return $this->createShareObject($data); } /** + * auto generate password in case of password enforcement on mail shares + * + * @param IShare $share + * @return string + * @throws \Exception + */ + protected function autoGeneratePassword($share) { + $initiatorUser = $this->userManager->get($share->getSharedBy()); + $initiatorEMailAddress = ($initiatorUser instanceof IUser) ? $initiatorUser->getEMailAddress() : null; + $allowPasswordByMail = $this->settingsManager->sendPasswordByMail(); + + if ($initiatorEMailAddress === null && !$allowPasswordByMail) { + throw new \Exception( + $this->l->t("We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again.") + ); + } + + $passwordPolicy = $this->getPasswordPolicy(); + $passwordCharset = ISecureRandom::CHAR_LOWER . ISecureRandom::CHAR_UPPER . ISecureRandom::CHAR_DIGITS; + $passwordLength = 8; + if (!empty($passwordPolicy)) { + $passwordLength = (int)$passwordPolicy['minLength'] > 0 ? (int)$passwordPolicy['minLength'] : $passwordLength; + $passwordCharset .= $passwordPolicy['enforceSpecialCharacters'] ? ISecureRandom::CHAR_SYMBOLS : ''; + } + + $password = $this->secureRandom->generate($passwordLength, $passwordCharset); + + $share->setPassword($this->hasher->hash($password)); + + return $password; + } + + /** + * get password policy + * + * @return array + */ + protected function getPasswordPolicy() { + $capabilities = $this->capabilitiesManager->getCapabilities(); + if (isset($capabilities['password_policy'])) { + return $capabilities['password_policy']; + } + + return []; + } + + /** * create activity if a file/folder was shared by mail * * @param IShare $share */ - protected function createActivity(IShare $share) { + protected function createShareActivity(IShare $share) { $userFolder = $this->rootFolder->getUserFolder($share->getSharedBy()); @@ -197,6 +271,37 @@ class ShareByMailProvider implements IShareProvider { } /** + * create activity if a file/folder was shared by mail + * + * @param IShare $share + * @param string $sharedWith + * @param bool $sendToSelf + */ + protected function createPasswordSendActivity(IShare $share, $sharedWith, $sendToSelf) { + + $userFolder = $this->rootFolder->getUserFolder($share->getSharedBy()); + + if ($sendToSelf) { + $this->publishActivity( + Activity::SUBJECT_SHARED_EMAIL_PASSWORD_SEND_SELF, + [$userFolder->getRelativePath($share->getNode()->getPath())], + $share->getSharedBy(), + $share->getNode()->getId(), + $userFolder->getRelativePath($share->getNode()->getPath()) + ); + } else { + $this->publishActivity( + Activity::SUBJECT_SHARED_EMAIL_PASSWORD_SEND, + [$userFolder->getRelativePath($share->getNode()->getPath()), $sharedWith], + $share->getSharedBy(), + $share->getNode()->getId(), + $userFolder->getRelativePath($share->getNode()->getPath()) + ); + } + } + + + /** * publish activity if a file/folder was shared by mail * * @param $subject @@ -230,7 +335,8 @@ class ShareByMailProvider implements IShareProvider { $share->getSharedBy(), $share->getShareOwner(), $share->getPermissions(), - $share->getToken() + $share->getToken(), + $share->getPassword() ); try { @@ -287,18 +393,15 @@ class ShareByMailProvider implements IShareProvider { $emailTemplate->addHeader(); $emailTemplate->addHeading($this->l->t('%s shared »%s« with you', [$ownerDisplayName, $filename]), false); - if ($owner === $initiator) { $text = $this->l->t('%s shared »%s« with you.', [$ownerDisplayName, $filename]); } else { $text= $this->l->t('%s shared »%s« with you on behalf of %s.', [$ownerDisplayName, $filename, $initiator]); } - $emailTemplate->addBodyText( $text . ' ' . $this->l->t('Click the button below to open it.'), $text ); - $emailTemplate->addBodyButton( $this->l->t('Open »%s«', [$filename]), $link @@ -329,59 +432,116 @@ class ShareByMailProvider implements IShareProvider { $message->setSubject($subject); $message->setPlainBody($emailTemplate->renderText()); - $message->setHtmlBody($emailTemplate->renderHTML()); + $message->setHtmlBody($emailTemplate->renderHtml()); $this->mailer->send($message); } /** * send password to recipient of a mail share * - * @param string $filename - * @param string $initiator - * @param string $shareWith + * @param IShare $share + * @param string $password + * @return bool */ - protected function sendPassword($filename, $initiator, $shareWith, $password) { + protected function sendPassword(IShare $share, $password) { - if ($this->settingsManager->sendPasswordByMail() === false) { - return; + $filename = $share->getNode()->getName(); + $initiator = $share->getSharedBy(); + $shareWith = $share->getSharedWith(); + + if ($password === '' || $this->settingsManager->sendPasswordByMail() === false) { + return false; } $initiatorUser = $this->userManager->get($initiator); $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator; + $initiatorEmailAddress = ($initiatorUser instanceof IUser) ? $initiatorUser->getEMailAddress() : null; + $subject = (string)$this->l->t('Password to access »%s« shared to you by %s', [$filename, $initiatorDisplayName]); + $plainBodyPart = $this->l->t("%s shared »%s« with you.\nYou should have already received a separate mail with a link to access it.\n", [$initiatorDisplayName, $filename]); + $htmlBodyPart = $this->l->t('%s shared »%s« with you. You should have already received a separate mail with a link to access it.', [$initiatorDisplayName, $filename]); $message = $this->mailer->createMessage(); $emailTemplate = $this->mailer->createEMailTemplate(); - $emailTemplate->addHeader(); - $emailTemplate->addHeading($this->l->t('Password to access »%s«', [$filename])); - - $emailTemplate->addBodyText($this->l->t( - '%s shared »%s« with you. You should have already received a separate mail with a link to access it.', - [$initiatorDisplayName, $filename] - )); + $emailTemplate->addHeading($this->l->t('Password to access »%s«', [$filename]), false); + $emailTemplate->addBodyText($htmlBodyPart, $plainBodyPart); $emailTemplate->addBodyText($this->l->t('It is protected with the following password: %s', [$password])); - $emailTemplate->addFooter(); + if ($initiatorEmailAddress !== null) { + $message->setFrom([$initiatorEmailAddress => $initiatorDisplayName]); + } $message->setTo([$shareWith]); $message->setSubject($subject); $message->setBody($emailTemplate->renderText(), 'text/plain'); - $message->setHtmlBody($emailTemplate->renderHTML()); + $message->setHtmlBody($emailTemplate->renderHtml()); $this->mailer->send($message); + $this->createPasswordSendActivity($share, $shareWith, false); + + return true; } + /** + * send auto generated password to the owner. This happens if the admin enforces + * a password for mail shares and forbid to send the password by mail to the recipient + * + * @param IShare $share + * @param string $password + * @return bool + * @throws \Exception + */ + protected function sendPasswordToOwner(IShare $share, $password) { + + $filename = $share->getNode()->getName(); + $initiator = $this->userManager->get($share->getSharedBy()); + $initiatorEMailAddress = ($initiator instanceof IUser) ? $initiator->getEMailAddress() : null; + $initiatorDisplayName = ($initiator instanceof IUser) ? $initiator->getDisplayName() : $share->getSharedBy(); + $shareWith = $share->getSharedWith(); + + if ($initiatorEMailAddress === null) { + throw new \Exception( + $this->l->t("We can't send you the auto-generated password. Please set a valid email address in your personal settings and try again.") + ); + } + + $subject = (string)$this->l->t('Password to access »%s« shared with %s', [$filename, $shareWith]); + $bodyPart = $this->l->t("You just shared »%s« with %s. The share was already send to the recipient. Due to the security policies defined by the administrator of %s each share needs to be protected by password and it is not allowed to send the password directly to the recipient. Therefore you need to forward the password manually to the recipient.", [$filename, $shareWith, $this->defaults->getName()]); + + $message = $this->mailer->createMessage(); + $emailTemplate = $this->mailer->createEMailTemplate(); + + $emailTemplate->addHeader(); + $emailTemplate->addHeading($this->l->t('Password to access »%s«', [$filename]), false); + $emailTemplate->addBodyText($bodyPart); + $emailTemplate->addBodyText($this->l->t('This is the password: %s', [$password])); + $emailTemplate->addBodyText($this->l->t('You can choose a different password at any time in the share dialog.')); + $emailTemplate->addFooter(); + + if ($initiatorEMailAddress) { + $message->setFrom([$initiatorEMailAddress => $initiatorDisplayName]); + } + $message->setTo([$initiatorEMailAddress => $initiatorDisplayName]); + $message->setSubject($subject); + $message->setBody($emailTemplate->renderText(), 'text/plain'); + $message->setHtmlBody($emailTemplate->renderHtml()); + $this->mailer->send($message); + + $this->createPasswordSendActivity($share, $shareWith, true); + + return true; + } /** * generate share token * * @return string */ - protected function generateToken() { + protected function generateToken($size = 15) { $token = $this->secureRandom->generate( - 15, ISecureRandom::CHAR_LOWER . ISecureRandom::CHAR_UPPER . ISecureRandom::CHAR_DIGITS); + $size, ISecureRandom::CHAR_LOWER . ISecureRandom::CHAR_UPPER . ISecureRandom::CHAR_DIGITS); return $token; } @@ -422,7 +582,7 @@ class ShareByMailProvider implements IShareProvider { * @param string $token * @return int */ - protected function addShareToDB($itemSource, $itemType, $shareWith, $sharedBy, $uidOwner, $permissions, $token) { + protected function addShareToDB($itemSource, $itemType, $shareWith, $sharedBy, $uidOwner, $permissions, $token, $password) { $qb = $this->dbConnection->getQueryBuilder(); $qb->insert('share') ->setValue('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_EMAIL)) @@ -434,6 +594,7 @@ class ShareByMailProvider implements IShareProvider { ->setValue('uid_initiator', $qb->createNamedParameter($sharedBy)) ->setValue('permissions', $qb->createNamedParameter($permissions)) ->setValue('token', $qb->createNamedParameter($token)) + ->setValue('password', $qb->createNamedParameter($password)) ->setValue('stime', $qb->createNamedParameter(time())); /* @@ -463,7 +624,7 @@ class ShareByMailProvider implements IShareProvider { $validPassword = $plainTextPassword !== null && $plainTextPassword !== ''; if($validPassword && $originalShare->getPassword() !== $share->getPassword()) { - $this->sendPassword($share->getNode()->getName(), $share->getSharedBy(), $share->getSharedWith(), $plainTextPassword); + $this->sendPassword($share, $plainTextPassword); } /* * We allow updating the permissions and password of mail shares diff --git a/apps/sharebymail/templates/settings-admin.php b/apps/sharebymail/templates/settings-admin.php index c4e41086063..3af98741e52 100644 --- a/apps/sharebymail/templates/settings-admin.php +++ b/apps/sharebymail/templates/settings-admin.php @@ -4,6 +4,7 @@ use OCA\Federation\TrustedServers; /** @var \OCP\IL10N $l */ script('sharebymail', 'settings-admin'); +style('sharebymail', 'settings-admin'); ?> <div id="ncShareByMailSettings" class="section"> <h2><?php p($l->t('Share by mail')); ?></h2> @@ -11,7 +12,9 @@ script('sharebymail', 'settings-admin'); <p> <input id="sendPasswordMail" type="checkbox" class="checkbox" <?php if($_['sendPasswordMail']) p('checked'); ?> /> - <label for="sendPasswordMail"><?php p($l->t('Send password by mail')); ?></label> + <label for="sendPasswordMail"><?php p($l->t('Send password by mail')); ?></label><br/> + <input id="enforcePasswordProtection" type="checkbox" class="checkbox" <?php if($_['enforcePasswordProtection']) p('checked'); ?> /> + <label for="enforcePasswordProtection"><?php p($l->t('Enforce password protection')); ?></label> </p> </div> diff --git a/apps/sharebymail/tests/SettingsTest.php b/apps/sharebymail/tests/SettingsTest.php index f415421b0cf..8b2fc200d57 100644 --- a/apps/sharebymail/tests/SettingsTest.php +++ b/apps/sharebymail/tests/SettingsTest.php @@ -24,6 +24,7 @@ namespace OCA\ShareByMail\Tests; use OCA\ShareByMail\Settings; +use OCA\ShareByMail\Settings\SettingsManager; use Test\TestCase; class SettingsTest extends TestCase { @@ -31,10 +32,15 @@ class SettingsTest extends TestCase { /** @var Settings */ private $instance; + /** @var SettingsManager | \PHPUnit_Framework_MockObject_MockObject */ + private $settingsManager; + public function setUp() { parent::setUp(); - $this->instance = new Settings(); + $this->settingsManager = $this->getMockBuilder(SettingsManager::class) + ->disableOriginalConstructor()->getMock(); + $this->instance = new Settings($this->settingsManager); } public function testAnnounceShareProvider() { @@ -61,4 +67,30 @@ class SettingsTest extends TestCase { $this->assertSame($after, $before); } + + public function testAnnounceShareByMailSettings() { + $this->settingsManager->expects($this->once())->method('enforcePasswordProtection')->willReturn(true); + $before = [ + 'oc_appconfig' => + json_encode([ + 'key1' => 'value1', + 'key2' => 'value2' + ]), + 'oc_foo' => 'oc_bar' + ]; + + $after = [ + 'oc_appconfig' => + json_encode([ + 'key1' => 'value1', + 'key2' => 'value2', + 'shareByMail' => ['enforcePasswordProtection' => true] + ]), + 'oc_foo' => 'oc_bar' + ]; + + $this->instance->announceShareByMailSettings(['array' => &$before]); + $this->assertSame($after, $before); + } + } diff --git a/apps/sharebymail/tests/ShareByMailProviderTest.php b/apps/sharebymail/tests/ShareByMailProviderTest.php index 8761f49f0f4..269f8e8f414 100644 --- a/apps/sharebymail/tests/ShareByMailProviderTest.php +++ b/apps/sharebymail/tests/ShareByMailProviderTest.php @@ -23,10 +23,12 @@ namespace OCA\ShareByMail\Tests; +use OC\CapabilitiesManager; use OC\Mail\Message; use OCA\ShareByMail\Settings\SettingsManager; use OCA\ShareByMail\ShareByMailProvider; use OCP\Defaults; +use OCP\Files\File; use OCP\Files\IRootFolder; use OCP\IDBConnection; use OCP\IL10N; @@ -36,6 +38,7 @@ use OCP\IUser; use OCP\IUserManager; use OCP\Mail\IEMailTemplate; use OCP\Mail\IMailer; +use OCP\Security\IHasher; use OCP\Security\ISecureRandom; use OCP\Share\IManager; use OCP\Share\IShare; @@ -88,6 +91,12 @@ class ShareByMailProviderTest extends TestCase { /** @var Defaults|\PHPUnit_Framework_MockObject_MockObject */ private $defaults; + /** @var IHasher | \PHPUnit_Framework_MockObject_MockObject */ + private $hasher; + + /** @var CapabilitiesManager | \PHPUnit_Framework_MockObject_MockObject */ + private $capabilitiesManager; + public function setUp() { parent::setUp(); @@ -109,6 +118,8 @@ class ShareByMailProviderTest extends TestCase { $this->activityManager = $this->getMockBuilder('OCP\Activity\IManager')->getMock(); $this->settingsManager = $this->getMockBuilder(SettingsManager::class)->disableOriginalConstructor()->getMock(); $this->defaults = $this->createMock(Defaults::class); + $this->hasher = $this->getMockBuilder(IHasher::class)->getMock(); + $this->capabilitiesManager = $this->getMockBuilder(CapabilitiesManager::class)->disableOriginalConstructor()->getMock(); $this->userManager->expects($this->any())->method('userExists')->willReturn(true); } @@ -134,7 +145,9 @@ class ShareByMailProviderTest extends TestCase { $this->urlGenerator, $this->activityManager, $this->settingsManager, - $this->defaults + $this->defaults, + $this->hasher, + $this->capabilitiesManager ] ); @@ -154,7 +167,9 @@ class ShareByMailProviderTest extends TestCase { $this->urlGenerator, $this->activityManager, $this->settingsManager, - $this->defaults + $this->defaults, + $this->hasher, + $this->capabilitiesManager ); } @@ -167,15 +182,22 @@ class ShareByMailProviderTest extends TestCase { public function testCreate() { $share = $this->getMockBuilder('\OCP\Share\IShare')->getMock(); - $share->expects($this->once())->method('getSharedWith')->willReturn('user1'); + $share->expects($this->any())->method('getSharedWith')->willReturn('user1'); + + $node = $this->getMockBuilder(File::class)->getMock(); + $node->expects($this->any())->method('getName')->willReturn('filename'); - $instance = $this->getInstance(['getSharedWith', 'createMailShare', 'getRawShare', 'createShareObject', 'createActivity']); + $instance = $this->getInstance(['getSharedWith', 'createMailShare', 'getRawShare', 'createShareObject', 'createShareActivity', 'sendPassword']); $instance->expects($this->once())->method('getSharedWith')->willReturn([]); $instance->expects($this->once())->method('createMailShare')->with($share)->willReturn(42); - $instance->expects($this->once())->method('createActivity')->with($share); + $instance->expects($this->once())->method('createShareActivity')->with($share); $instance->expects($this->once())->method('getRawShare')->with(42)->willReturn('rawShare'); $instance->expects($this->once())->method('createShareObject')->with('rawShare')->willReturn('shareObject'); + $instance->expects($this->any())->method('sendPassword')->willReturn(true); + $share->expects($this->any())->method('getNode')->willReturn($node); + $this->settingsManager->expects($this->any())->method('enforcePasswordProtection')->willReturn(false); + $this->settingsManager->expects($this->any())->method('sendPasswordByMail')->willReturn(true); $this->assertSame('shareObject', $instance->create($share) @@ -273,6 +295,7 @@ class ShareByMailProviderTest extends TestCase { $uidOwner = 'user2'; $permissions = 1; $token = 'token'; + $password = 'password'; $instance = $this->getInstance(); @@ -286,7 +309,8 @@ class ShareByMailProviderTest extends TestCase { $sharedBy, $uidOwner, $permissions, - $token + $token, + $password ] ); @@ -305,6 +329,7 @@ class ShareByMailProviderTest extends TestCase { $this->assertSame($uidOwner, $result[0]['uid_owner']); $this->assertSame($permissions, (int)$result[0]['permissions']); $this->assertSame($token, $result[0]['token']); + $this->assertSame($password, $result[0]['password']); } @@ -636,7 +661,7 @@ class ShareByMailProviderTest extends TestCase { $userManager = \OC::$server->getUserManager(); $rootFolder = \OC::$server->getRootFolder(); - $provider = $this->getInstance(['sendMailNotification', 'createActivity']); + $provider = $this->getInstance(['sendMailNotification', 'createShareActivity']); $u1 = $userManager->createUser('testFed', md5(time())); $u2 = $userManager->createUser('testFed2', md5(time())); @@ -678,7 +703,7 @@ class ShareByMailProviderTest extends TestCase { $userManager = \OC::$server->getUserManager(); $rootFolder = \OC::$server->getRootFolder(); - $provider = $this->getInstance(['sendMailNotification', 'createActivity']); + $provider = $this->getInstance(['sendMailNotification', 'createShareActivity']); $u1 = $userManager->createUser('testFed', md5(time())); $u2 = $userManager->createUser('testFed2', md5(time())); @@ -824,7 +849,7 @@ class ShareByMailProviderTest extends TestCase { ->with('Text Render'); $template ->expects($this->once()) - ->method('renderHTML') + ->method('renderHtml') ->willReturn('HTML Render'); $message ->expects($this->once()) @@ -939,7 +964,7 @@ class ShareByMailProviderTest extends TestCase { ->with('Text Render'); $template ->expects($this->once()) - ->method('renderHTML') + ->method('renderHtml') ->willReturn('HTML Render'); $message ->expects($this->once()) diff --git a/apps/systemtags/l10n/pt_BR.js b/apps/systemtags/l10n/pt_BR.js index c3f3949e11a..6b0e0b107af 100644 --- a/apps/systemtags/l10n/pt_BR.js +++ b/apps/systemtags/l10n/pt_BR.js @@ -46,7 +46,7 @@ OC.L10N.register( "Delete" : "Excluir", "Public" : "Público", "Restricted" : "Restrito", - "Invisible" : "Invisível", + "Invisible" : "Oculto", "Reset" : "Redefinir", "No files in here" : "Nenhum arquivo aqui", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", diff --git a/apps/systemtags/l10n/pt_BR.json b/apps/systemtags/l10n/pt_BR.json index 7495d307d19..24241ff436d 100644 --- a/apps/systemtags/l10n/pt_BR.json +++ b/apps/systemtags/l10n/pt_BR.json @@ -44,7 +44,7 @@ "Delete" : "Excluir", "Public" : "Público", "Restricted" : "Restrito", - "Invisible" : "Invisível", + "Invisible" : "Oculto", "Reset" : "Redefinir", "No files in here" : "Nenhum arquivo aqui", "No entries found in this folder" : "Nenhuma entrada foi encontrada nesta pasta", diff --git a/apps/systemtags/lib/Activity/Listener.php b/apps/systemtags/lib/Activity/Listener.php index 152608f7cce..0fb5d4c12be 100644 --- a/apps/systemtags/lib/Activity/Listener.php +++ b/apps/systemtags/lib/Activity/Listener.php @@ -34,6 +34,7 @@ use OCP\IGroupManager; use OCP\IUser; use OCP\IUserSession; use OCP\Share; +use OCP\Share\IShareHelper; use OCP\SystemTag\ISystemTag; use OCP\SystemTag\ISystemTagManager; use OCP\SystemTag\ManagerEvent; @@ -57,6 +58,8 @@ class Listener { protected $mountCollection; /** @var \OCP\Files\IRootFolder */ protected $rootFolder; + /** @var IShareHelper */ + protected $shareHelper; /** * Listener constructor. @@ -69,6 +72,7 @@ class Listener { * @param IAppManager $appManager * @param IMountProviderCollection $mountCollection * @param IRootFolder $rootFolder + * @param IShareHelper $shareHelper */ public function __construct(IGroupManager $groupManager, IManager $activityManager, @@ -77,7 +81,8 @@ class Listener { ISystemTagManager $tagManager, IAppManager $appManager, IMountProviderCollection $mountCollection, - IRootFolder $rootFolder) { + IRootFolder $rootFolder, + IShareHelper $shareHelper) { $this->groupManager = $groupManager; $this->activityManager = $activityManager; $this->session = $session; @@ -86,6 +91,7 @@ class Listener { $this->appManager = $appManager; $this->mountCollection = $mountCollection; $this->rootFolder = $rootFolder; + $this->shareHelper = $shareHelper; } /** @@ -177,12 +183,8 @@ class Listener { if (!empty($nodes)) { /** @var Node $node */ $node = array_shift($nodes); - $path = $node->getPath(); - if (strpos($path, '/' . $owner . '/files/') === 0) { - $path = substr($path, strlen('/' . $owner . '/files')); - } - // Get all users that have access to the mount point - $users = array_merge($users, Share::getUsersSharingFile($path, $owner, true, true)); + $al = $this->shareHelper->getPathsForAccessList($node); + $users = array_merge($users, $al['users']); } } diff --git a/apps/theming/lib/Controller/IconController.php b/apps/theming/lib/Controller/IconController.php index ddd1240fab8..7c4e209d0df 100644 --- a/apps/theming/lib/Controller/IconController.php +++ b/apps/theming/lib/Controller/IconController.php @@ -24,19 +24,19 @@ namespace OCA\Theming\Controller; use OCA\Theming\IconBuilder; use OCA\Theming\ImageManager; +use OCA\Theming\ThemingDefaults; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\NotFoundResponse; use OCP\AppFramework\Http\FileDisplayResponse; use OCP\AppFramework\Utility\ITimeFactory; -use OCP\Defaults; use OCP\Files\NotFoundException; use OCP\IRequest; use OCA\Theming\Util; use OCP\IConfig; class IconController extends Controller { - /** @var Defaults */ + /** @var ThemingDefaults */ private $themingDefaults; /** @var Util */ private $util; @@ -54,7 +54,7 @@ class IconController extends Controller { * * @param string $appName * @param IRequest $request - * @param Defaults $themingDefaults + * @param ThemingDefaults $themingDefaults * @param Util $util * @param ITimeFactory $timeFactory * @param IConfig $config @@ -64,7 +64,7 @@ class IconController extends Controller { public function __construct( $appName, IRequest $request, - Defaults $themingDefaults, + ThemingDefaults $themingDefaults, Util $util, ITimeFactory $timeFactory, IConfig $config, diff --git a/apps/theming/tests/Controller/IconControllerTest.php b/apps/theming/tests/Controller/IconControllerTest.php index ce053ff0eab..add11df3e6d 100644 --- a/apps/theming/tests/Controller/IconControllerTest.php +++ b/apps/theming/tests/Controller/IconControllerTest.php @@ -24,11 +24,11 @@ namespace OCA\Theming\Tests\Controller; use OC\Files\SimpleFS\SimpleFile; +use OCA\Theming\IconBuilder; use OCA\Theming\ImageManager; +use OCA\Theming\ThemingDefaults; use OCP\AppFramework\Http; use OCP\AppFramework\Http\NotFoundResponse; -use OCP\Defaults; -use OCP\Files\IRootFolder; use OCP\Files\NotFoundException; use OCP\IConfig; use OCP\IRequest; @@ -41,7 +41,7 @@ use OCP\AppFramework\Http\FileDisplayResponse; class IconControllerTest extends TestCase { /** @var IRequest|\PHPUnit_Framework_MockObject_MockObject */ private $request; - /** @var Defaults|\PHPUnit_Framework_MockObject_MockObject */ + /** @var ThemingDefaults|\PHPUnit_Framework_MockObject_MockObject */ private $themingDefaults; /** @var Util */ private $util; @@ -51,14 +51,14 @@ class IconControllerTest extends TestCase { private $iconController; /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ private $config; - /** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */ + /** @var IconBuilder|\PHPUnit_Framework_MockObject_MockObject */ private $iconBuilder; /** @var ImageManager */ private $imageManager; public function setUp() { $this->request = $this->getMockBuilder('OCP\IRequest')->getMock(); - $this->themingDefaults = $this->getMockBuilder('OCP\Defaults') + $this->themingDefaults = $this->getMockBuilder('OCA\Theming\ThemingDefaults') ->disableOriginalConstructor()->getMock(); $this->util = $this->getMockBuilder('\OCA\Theming\Util')->disableOriginalConstructor() ->setMethods(['getAppImage', 'getAppIcon', 'elementColor'])->getMock(); @@ -109,7 +109,7 @@ class IconControllerTest extends TestCase { $expires->add(new \DateInterval('PT24H')); $expected->addHeader('Expires', $expires->format(\DateTime::RFC2822)); $expected->addHeader('Pragma', 'cache'); - @$this->assertEquals($expected, $this->iconController->getThemedIcon('core', 'filetypes/folder.svg')); + $this->assertEquals($expected, $this->iconController->getThemedIcon('core', 'filetypes/folder.svg')); } public function testGetFaviconDefault() { diff --git a/apps/twofactor_backupcodes/l10n/es.js b/apps/twofactor_backupcodes/l10n/es.js index add6139bc99..89cc71f9d27 100644 --- a/apps/twofactor_backupcodes/l10n/es.js +++ b/apps/twofactor_backupcodes/l10n/es.js @@ -16,6 +16,6 @@ OC.L10N.register( "You created two-factor backup codes for your account" : "Has creado códigos de respaldo de dos pasos para tu cuenta", "Backup code" : "Código de respaldo", "Use backup code" : "Usar código de respaldo", - "Second-factor backup codes" : "Codigo de copia de seguridad de segundo-factor" + "Second-factor backup codes" : "Códigos de respaldo de dos-factores" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/twofactor_backupcodes/l10n/es.json b/apps/twofactor_backupcodes/l10n/es.json index 33b6a696ae0..d280e017345 100644 --- a/apps/twofactor_backupcodes/l10n/es.json +++ b/apps/twofactor_backupcodes/l10n/es.json @@ -14,6 +14,6 @@ "You created two-factor backup codes for your account" : "Has creado códigos de respaldo de dos pasos para tu cuenta", "Backup code" : "Código de respaldo", "Use backup code" : "Usar código de respaldo", - "Second-factor backup codes" : "Codigo de copia de seguridad de segundo-factor" + "Second-factor backup codes" : "Códigos de respaldo de dos-factores" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/updatenotification/l10n/de.js b/apps/updatenotification/l10n/de.js index fae6f182362..62fb269d262 100644 --- a/apps/updatenotification/l10n/de.js +++ b/apps/updatenotification/l10n/de.js @@ -6,6 +6,7 @@ OC.L10N.register( "{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.", "Channel updated" : "Kanal aktualisiert", "The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.", + "Please check the Nextcloud and server log files for errors." : "Bitte prüfe das Nextcloud- und Server-Log nach Fehlern.", "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", "Update for %1$s to version %2$s is available." : "Ein Update von %1$s auf Version %2$s ist verfügbar.", "Update for {app} to version %s is available." : "Ein Update für {app} auf Version %s ist verfügbar.", diff --git a/apps/updatenotification/l10n/de.json b/apps/updatenotification/l10n/de.json index 1d768bd20e0..f9a9e5ea681 100644 --- a/apps/updatenotification/l10n/de.json +++ b/apps/updatenotification/l10n/de.json @@ -4,6 +4,7 @@ "{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.", "Channel updated" : "Kanal aktualisiert", "The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.", + "Please check the Nextcloud and server log files for errors." : "Bitte prüfe das Nextcloud- und Server-Log nach Fehlern.", "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", "Update for %1$s to version %2$s is available." : "Ein Update von %1$s auf Version %2$s ist verfügbar.", "Update for {app} to version %s is available." : "Ein Update für {app} auf Version %s ist verfügbar.", diff --git a/apps/updatenotification/l10n/de_DE.js b/apps/updatenotification/l10n/de_DE.js index e26060332e7..088cef00980 100644 --- a/apps/updatenotification/l10n/de_DE.js +++ b/apps/updatenotification/l10n/de_DE.js @@ -6,6 +6,7 @@ OC.L10N.register( "{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.", "Channel updated" : "Kanal aktualisiert", "The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.", + "Please check the Nextcloud and server log files for errors." : "Bitte überprüfe die Server und Nextcloud Protokolle auf Fehler.", "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", "Update for %1$s to version %2$s is available." : "Ein Update von %1$s auf Version %2$s ist verfügbar.", "Update for {app} to version %s is available." : "Ein Update für {app} auf Version %s ist verfügbar.", diff --git a/apps/updatenotification/l10n/de_DE.json b/apps/updatenotification/l10n/de_DE.json index 238c1db9ab4..b53b37692cb 100644 --- a/apps/updatenotification/l10n/de_DE.json +++ b/apps/updatenotification/l10n/de_DE.json @@ -4,6 +4,7 @@ "{version} is available. Get more information on how to update." : "{version} ist verfügbar. Weitere Informationen zur Aktualisierung.", "Channel updated" : "Kanal aktualisiert", "The update server could not be reached since %d days to check for new updates." : "Der Aktualisierungsserver konnte seit %d Tagen nicht erreicht werden um auf verfügbare Aktualisierungen zu prüfen.", + "Please check the Nextcloud and server log files for errors." : "Bitte überprüfe die Server und Nextcloud Protokolle auf Fehler.", "Update to %1$s is available." : "Aktualisierung auf %1$s ist verfügbar.", "Update for %1$s to version %2$s is available." : "Ein Update von %1$s auf Version %2$s ist verfügbar.", "Update for {app} to version %s is available." : "Ein Update für {app} auf Version %s ist verfügbar.", diff --git a/apps/updatenotification/l10n/es.js b/apps/updatenotification/l10n/es.js index dbc2ef5fd74..e23c829b5ae 100644 --- a/apps/updatenotification/l10n/es.js +++ b/apps/updatenotification/l10n/es.js @@ -6,6 +6,7 @@ OC.L10N.register( "{version} is available. Get more information on how to update." : "{version} está disponible. Obtenga más información sobre cómo actualizar.", "Channel updated" : "Canal actualizado", "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no se ha podido alcanzar desde hace %d días para comprobar nuevas actualizaciones.", + "Please check the Nextcloud and server log files for errors." : "Por favor revise los archivos de registros para Nextcloud y el servidor en búsca de errores.", "Update to %1$s is available." : "Actualización a %1$s esta disponible.", "Update for %1$s to version %2$s is available." : "La actualización de %1$s a la versión %2$s está disponible.", "Update for {app} to version %s is available." : "Actualización de {app} a la versión %s disponible.", diff --git a/apps/updatenotification/l10n/es.json b/apps/updatenotification/l10n/es.json index 24396ffc343..81dc8adb319 100644 --- a/apps/updatenotification/l10n/es.json +++ b/apps/updatenotification/l10n/es.json @@ -4,6 +4,7 @@ "{version} is available. Get more information on how to update." : "{version} está disponible. Obtenga más información sobre cómo actualizar.", "Channel updated" : "Canal actualizado", "The update server could not be reached since %d days to check for new updates." : "El servidor de actualización no se ha podido alcanzar desde hace %d días para comprobar nuevas actualizaciones.", + "Please check the Nextcloud and server log files for errors." : "Por favor revise los archivos de registros para Nextcloud y el servidor en búsca de errores.", "Update to %1$s is available." : "Actualización a %1$s esta disponible.", "Update for %1$s to version %2$s is available." : "La actualización de %1$s a la versión %2$s está disponible.", "Update for {app} to version %s is available." : "Actualización de {app} a la versión %s disponible.", diff --git a/apps/updatenotification/l10n/fr.js b/apps/updatenotification/l10n/fr.js index dab4eebecab..5e5fbe79a8d 100644 --- a/apps/updatenotification/l10n/fr.js +++ b/apps/updatenotification/l10n/fr.js @@ -6,6 +6,7 @@ OC.L10N.register( "{version} is available. Get more information on how to update." : "La version {version} est disponible. Cliquez ici pour plus d'informations sur comment mettre à jour.", "Channel updated" : "Canal de mise à jour modifié", "The update server could not be reached since %d days to check for new updates." : "Le serveur de mise à jour n'a pas pu être atteint depuis %d jours pour vérifier les nouvelles mises à jour.", + "Please check the Nextcloud and server log files for errors." : "Veuillez vérifier les fichiers de log de Nextcloud et du serveur pour les erreurs.", "Update to %1$s is available." : "Une mise à jour vers %1$s est disponible", "Update for %1$s to version %2$s is available." : "Une mise à jour de %1$s vers la version %2$s est disponible.", "Update for {app} to version %s is available." : "Une mise à jour de {app} vers la version %s est disponible.", diff --git a/apps/updatenotification/l10n/fr.json b/apps/updatenotification/l10n/fr.json index f98fa2ee3dc..e6a81da9bc5 100644 --- a/apps/updatenotification/l10n/fr.json +++ b/apps/updatenotification/l10n/fr.json @@ -4,6 +4,7 @@ "{version} is available. Get more information on how to update." : "La version {version} est disponible. Cliquez ici pour plus d'informations sur comment mettre à jour.", "Channel updated" : "Canal de mise à jour modifié", "The update server could not be reached since %d days to check for new updates." : "Le serveur de mise à jour n'a pas pu être atteint depuis %d jours pour vérifier les nouvelles mises à jour.", + "Please check the Nextcloud and server log files for errors." : "Veuillez vérifier les fichiers de log de Nextcloud et du serveur pour les erreurs.", "Update to %1$s is available." : "Une mise à jour vers %1$s est disponible", "Update for %1$s to version %2$s is available." : "Une mise à jour de %1$s vers la version %2$s est disponible.", "Update for {app} to version %s is available." : "Une mise à jour de {app} vers la version %s est disponible.", diff --git a/apps/updatenotification/l10n/nb.js b/apps/updatenotification/l10n/nb.js index 00784fdb48d..8ec22fad947 100644 --- a/apps/updatenotification/l10n/nb.js +++ b/apps/updatenotification/l10n/nb.js @@ -5,6 +5,7 @@ OC.L10N.register( "Could not start updater, please try the manual update" : "Kunne ikke starte oppdateringen, prøv å oppdatere manuelt", "{version} is available. Get more information on how to update." : "{version} er tilgjengelig. Få mer informasjon om å oppdatere.", "Channel updated" : "Kanal oppdatert", + "Please check the Nextcloud and server log files for errors." : "Se i Nextcloud- og tjener-loggen etter feil.", "Update to %1$s is available." : "Oppdatering til %1$s er tilgjengelig.", "Update for %1$s to version %2$s is available." : "Oppdatering for %1$s til versjon %2$s er tilgjengelig.", "Update for {app} to version %s is available." : "Oppdatering for {app} til versjon %s er tilgjengelig.", diff --git a/apps/updatenotification/l10n/nb.json b/apps/updatenotification/l10n/nb.json index d1ff82c692f..8f700c9c3b1 100644 --- a/apps/updatenotification/l10n/nb.json +++ b/apps/updatenotification/l10n/nb.json @@ -3,6 +3,7 @@ "Could not start updater, please try the manual update" : "Kunne ikke starte oppdateringen, prøv å oppdatere manuelt", "{version} is available. Get more information on how to update." : "{version} er tilgjengelig. Få mer informasjon om å oppdatere.", "Channel updated" : "Kanal oppdatert", + "Please check the Nextcloud and server log files for errors." : "Se i Nextcloud- og tjener-loggen etter feil.", "Update to %1$s is available." : "Oppdatering til %1$s er tilgjengelig.", "Update for %1$s to version %2$s is available." : "Oppdatering for %1$s til versjon %2$s er tilgjengelig.", "Update for {app} to version %s is available." : "Oppdatering for {app} til versjon %s er tilgjengelig.", diff --git a/apps/updatenotification/l10n/pt_BR.js b/apps/updatenotification/l10n/pt_BR.js index ad760384ddf..06b32bca82f 100644 --- a/apps/updatenotification/l10n/pt_BR.js +++ b/apps/updatenotification/l10n/pt_BR.js @@ -6,6 +6,7 @@ OC.L10N.register( "{version} is available. Get more information on how to update." : "{version} está disponível. Obtenha mais informações sobre como atualizar.", "Channel updated" : "Canal atualizado", "The update server could not be reached since %d days to check for new updates." : "O servidor de atualização não foi encontrado já há %d dias para verificar por novas atualizações.", + "Please check the Nextcloud and server log files for errors." : "Verifique se há erros nos arquivos de log do servidor e do Nextcloud ", "Update to %1$s is available." : "Atualização para %1$s está disponível.", "Update for %1$s to version %2$s is available." : "Atualização de %1$s para versão %2$s está disponível.", "Update for {app} to version %s is available." : "Atualização para {app} para a versão %s está disponível.", diff --git a/apps/updatenotification/l10n/pt_BR.json b/apps/updatenotification/l10n/pt_BR.json index 4d31371adf6..3d37f10404e 100644 --- a/apps/updatenotification/l10n/pt_BR.json +++ b/apps/updatenotification/l10n/pt_BR.json @@ -4,6 +4,7 @@ "{version} is available. Get more information on how to update." : "{version} está disponível. Obtenha mais informações sobre como atualizar.", "Channel updated" : "Canal atualizado", "The update server could not be reached since %d days to check for new updates." : "O servidor de atualização não foi encontrado já há %d dias para verificar por novas atualizações.", + "Please check the Nextcloud and server log files for errors." : "Verifique se há erros nos arquivos de log do servidor e do Nextcloud ", "Update to %1$s is available." : "Atualização para %1$s está disponível.", "Update for %1$s to version %2$s is available." : "Atualização de %1$s para versão %2$s está disponível.", "Update for {app} to version %s is available." : "Atualização para {app} para a versão %s está disponível.", diff --git a/apps/updatenotification/l10n/ru.js b/apps/updatenotification/l10n/ru.js index 42392902626..e0e25b4b1fa 100644 --- a/apps/updatenotification/l10n/ru.js +++ b/apps/updatenotification/l10n/ru.js @@ -6,6 +6,7 @@ OC.L10N.register( "{version} is available. Get more information on how to update." : "Доступна версия {version}. Получить дополнительную информацию о порядке обновления.", "Channel updated" : "Канал обновлен.", "The update server could not be reached since %d days to check for new updates." : "Сервер обновлений недоступен для проверки наличия обновлений дней: %d.", + "Please check the Nextcloud and server log files for errors." : "Проверьте наличие ошибок в файлах журналов Nextcloud и сервера.", "Update to %1$s is available." : "Доступно обновлений: %1$s", "Update for %1$s to version %2$s is available." : "Доступно обновление для %1$s до версии %2$s.", "Update for {app} to version %s is available." : "Доступно обновление для {app} до версии %s", diff --git a/apps/updatenotification/l10n/ru.json b/apps/updatenotification/l10n/ru.json index bc9baa58cbb..a5544220b50 100644 --- a/apps/updatenotification/l10n/ru.json +++ b/apps/updatenotification/l10n/ru.json @@ -4,6 +4,7 @@ "{version} is available. Get more information on how to update." : "Доступна версия {version}. Получить дополнительную информацию о порядке обновления.", "Channel updated" : "Канал обновлен.", "The update server could not be reached since %d days to check for new updates." : "Сервер обновлений недоступен для проверки наличия обновлений дней: %d.", + "Please check the Nextcloud and server log files for errors." : "Проверьте наличие ошибок в файлах журналов Nextcloud и сервера.", "Update to %1$s is available." : "Доступно обновлений: %1$s", "Update for %1$s to version %2$s is available." : "Доступно обновление для %1$s до версии %2$s.", "Update for {app} to version %s is available." : "Доступно обновление для {app} до версии %s", diff --git a/apps/updatenotification/l10n/tr.js b/apps/updatenotification/l10n/tr.js index cabffcc1275..13623c514aa 100644 --- a/apps/updatenotification/l10n/tr.js +++ b/apps/updatenotification/l10n/tr.js @@ -6,6 +6,7 @@ OC.L10N.register( "{version} is available. Get more information on how to update." : "{version} sürümü yayınlanmış. Güncelleme hakkında ayrıntılı bilgi alın.", "Channel updated" : "Kanal güncellendi", "The update server could not be reached since %d days to check for new updates." : "%d gündür güncellemeleri denetlemek için güncelleme sunucusuna bağlanılamadı.", + "Please check the Nextcloud and server log files for errors." : "Lütfen sorunu bulmak için Nextcloud ve sunucu günlük dosyalarına bakın.", "Update to %1$s is available." : "%1$s güncellemesi yayınlanmış.", "Update for %1$s to version %2$s is available." : "%1$s sürümünden %2$s sürümüne güncelleme yayınlanmış.", "Update for {app} to version %s is available." : "{app} uygulaması için %s sürümü güncellemesi yayınlanmış.", diff --git a/apps/updatenotification/l10n/tr.json b/apps/updatenotification/l10n/tr.json index 0b9598fc556..6834ff34cb9 100644 --- a/apps/updatenotification/l10n/tr.json +++ b/apps/updatenotification/l10n/tr.json @@ -4,6 +4,7 @@ "{version} is available. Get more information on how to update." : "{version} sürümü yayınlanmış. Güncelleme hakkında ayrıntılı bilgi alın.", "Channel updated" : "Kanal güncellendi", "The update server could not be reached since %d days to check for new updates." : "%d gündür güncellemeleri denetlemek için güncelleme sunucusuna bağlanılamadı.", + "Please check the Nextcloud and server log files for errors." : "Lütfen sorunu bulmak için Nextcloud ve sunucu günlük dosyalarına bakın.", "Update to %1$s is available." : "%1$s güncellemesi yayınlanmış.", "Update for %1$s to version %2$s is available." : "%1$s sürümünden %2$s sürümüne güncelleme yayınlanmış.", "Update for {app} to version %s is available." : "{app} uygulaması için %s sürümü güncellemesi yayınlanmış.", diff --git a/apps/user_ldap/l10n/de.js b/apps/user_ldap/l10n/de.js index 0c825e34df6..5c900a76025 100644 --- a/apps/user_ldap/l10n/de.js +++ b/apps/user_ldap/l10n/de.js @@ -44,6 +44,7 @@ OC.L10N.register( "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Einstellungen und die Logdatei.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte Host, Port und Anmeldeinformationen überprüfen.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der %uid - Platzhalter fehlt. Dieser wird mit dem Anmeldenamen beim Abfragen von LDAP / AD ersetzt.", "Please provide a login name to test against" : "Bitte gib einen Benutzernamen an, um gegen diesen zu testen", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP / AD-Server memberOf nicht unterstützt.", "Password change rejected. Hint: " : "Passwortändertung verweigert. Hinweis:", @@ -64,8 +65,10 @@ OC.L10N.register( "Edit LDAP Query" : "LDAP-Abfrage bearbeiten", "LDAP Filter:" : "LDAP-Filter:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Der Filter bestimmt, welche LDAP-Gruppen Zugriff auf die %s-Instanz haben sollen.", + "Verify settings and count the groups" : "Einstellungen überprüfen und die Gruppen zählen", "When logging in, %s will find the user based on the following attributes:" : "Beim Anmelden wird %s den Nutzer basierend auf folgenden Attributen finden:", "LDAP / AD Username:" : "LDAP-/AD-Benutzername:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Erlaubt das Anmelden gegen den LDAP / AD Nutzernamen, welcher entweder eine UID oder sAMAccount-Name ist und automatisch erkannt wird.", "LDAP / AD Email Address:" : "LDAP-/AD-E-Mail-Adresse:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Erlaubt das Anmelden gegen ein E-Mail Attribut. Mail und mailPrimaryAddress sind erlaubt.", "Other Attributes:" : "Andere Attribute:", @@ -74,9 +77,11 @@ OC.L10N.register( "Verify settings" : "Einstellungen überprüfen", "1. Server" : "1. Server", "%s. Server:" : "%s. Server:", + "Add a new configuration" : "Neue Konfiguration hinzufügen", "Copy current configuration into new directory binding" : "Aktuelle Konfiguration in eine neues Verzeichnis-Bind kopieren", "Delete the current configuration" : "Aktuelle Konfiguration löschen", "Host" : "Host", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Du kannst das Protokoll auslassen, es sei denn, du benötigst SSL. In diesem Fall beginne mit ldaps://", "Port" : "Port", "Detect Port" : "Port ermitteln", "User DN" : "Benutzer-DN", diff --git a/apps/user_ldap/l10n/de.json b/apps/user_ldap/l10n/de.json index 56fa342e821..400f2f416ed 100644 --- a/apps/user_ldap/l10n/de.json +++ b/apps/user_ldap/l10n/de.json @@ -42,6 +42,7 @@ "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte prüfe die Einstellungen und die Logdatei.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte Host, Port und Anmeldeinformationen überprüfen.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der %uid - Platzhalter fehlt. Dieser wird mit dem Anmeldenamen beim Abfragen von LDAP / AD ersetzt.", "Please provide a login name to test against" : "Bitte gib einen Benutzernamen an, um gegen diesen zu testen", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP / AD-Server memberOf nicht unterstützt.", "Password change rejected. Hint: " : "Passwortändertung verweigert. Hinweis:", @@ -62,8 +63,10 @@ "Edit LDAP Query" : "LDAP-Abfrage bearbeiten", "LDAP Filter:" : "LDAP-Filter:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Der Filter bestimmt, welche LDAP-Gruppen Zugriff auf die %s-Instanz haben sollen.", + "Verify settings and count the groups" : "Einstellungen überprüfen und die Gruppen zählen", "When logging in, %s will find the user based on the following attributes:" : "Beim Anmelden wird %s den Nutzer basierend auf folgenden Attributen finden:", "LDAP / AD Username:" : "LDAP-/AD-Benutzername:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Erlaubt das Anmelden gegen den LDAP / AD Nutzernamen, welcher entweder eine UID oder sAMAccount-Name ist und automatisch erkannt wird.", "LDAP / AD Email Address:" : "LDAP-/AD-E-Mail-Adresse:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Erlaubt das Anmelden gegen ein E-Mail Attribut. Mail und mailPrimaryAddress sind erlaubt.", "Other Attributes:" : "Andere Attribute:", @@ -72,9 +75,11 @@ "Verify settings" : "Einstellungen überprüfen", "1. Server" : "1. Server", "%s. Server:" : "%s. Server:", + "Add a new configuration" : "Neue Konfiguration hinzufügen", "Copy current configuration into new directory binding" : "Aktuelle Konfiguration in eine neues Verzeichnis-Bind kopieren", "Delete the current configuration" : "Aktuelle Konfiguration löschen", "Host" : "Host", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Du kannst das Protokoll auslassen, es sei denn, du benötigst SSL. In diesem Fall beginne mit ldaps://", "Port" : "Port", "Detect Port" : "Port ermitteln", "User DN" : "Benutzer-DN", diff --git a/apps/user_ldap/l10n/de_DE.js b/apps/user_ldap/l10n/de_DE.js index 1d2be037a1a..b5398d54b27 100644 --- a/apps/user_ldap/l10n/de_DE.js +++ b/apps/user_ldap/l10n/de_DE.js @@ -44,6 +44,7 @@ OC.L10N.register( "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte überprüfe die Einstellungen und die Logdatei.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte überprüfen Sie Host, Port und Anmeldeinformationen.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der \"1 %u id\" Platzhalter fehlt. Er wird durch den Anmeldenamen ersetzt, wenn LDAP / AD abgefragt wird.", "Please provide a login name to test against" : "Bitte geben Sie einen Benutzernamen an, um gegen diesen zu testen", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP / AD-Server memberOf nicht unterstützt.", "Password change rejected. Hint: " : "Passwortändertung verweigert. Hinweis:", @@ -64,8 +65,10 @@ OC.L10N.register( "Edit LDAP Query" : "LDAP-Abfrage bearbeiten", "LDAP Filter:" : "LDAP-Filter:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Der Filter bestimmt, welche LDAP-Gruppen Zugriff auf die %s-Instanz haben sollen.", + "Verify settings and count the groups" : "Überprüfe die Einstellungen und zähle die Gruppen", "When logging in, %s will find the user based on the following attributes:" : "Beim Anmelden wird %s den Nutzer basierend auf folgenden Attributen finden:", "LDAP / AD Username:" : "LDAP-/AD-Benutzername:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Erlaubt die Anmeldung gegen den LDAP / AD Benutzernamen, der entweder uid oder sAAMAccountName ist, und wird erkannt.", "LDAP / AD Email Address:" : "LDAP-/AD-E-Mail-Adresse:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Erlaubt das Anmelden gegen ein E-Mail Attribut. Mail und mailPrimaryAddress sind erlaubt.", "Other Attributes:" : "Andere Attribute:", @@ -74,9 +77,11 @@ OC.L10N.register( "Verify settings" : "Einstellungen überprüfen", "1. Server" : "1. Server", "%s. Server:" : "%s. Server:", + "Add a new configuration" : "Füge eine neue Konfiguration hinzu.", "Copy current configuration into new directory binding" : "Aktuelle Konfiguration in eine neues Verzeichnis-Bind kopieren ", "Delete the current configuration" : "Aktuelle Konfiguration löschen", "Host" : "Host", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Du kannst das Protokoll auslassen, wenn du nicht SSL benötigst. Dann starte mit ldaps://", "Port" : "Port", "Detect Port" : "Port ermitteln", "User DN" : "Benutzer-DN", diff --git a/apps/user_ldap/l10n/de_DE.json b/apps/user_ldap/l10n/de_DE.json index 3ad34c02cf2..f6c594ce357 100644 --- a/apps/user_ldap/l10n/de_DE.json +++ b/apps/user_ldap/l10n/de_DE.json @@ -42,6 +42,7 @@ "An unspecified error occurred. Please check the settings and the log." : "Ein nicht näher spezifizierter Fehler ist aufgetreten. Bitte überprüfe die Einstellungen und die Logdatei.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Der Suchfilter ist ungültig, möglicherweise bestehen Eingabefehler wie z.B. eine ungerade Anzahl von geöffneten und geschlossenen Klammern. Bitte überarbeiten.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Es ist ein Verbindungsfehler zum LDAP/AD aufgetreten, bitte überprüfen Sie Host, Port und Anmeldeinformationen.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Der \"1 %u id\" Platzhalter fehlt. Er wird durch den Anmeldenamen ersetzt, wenn LDAP / AD abgefragt wird.", "Please provide a login name to test against" : "Bitte geben Sie einen Benutzernamen an, um gegen diesen zu testen", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Das Gruppenfeld wurde deaktiviert, da der LDAP / AD-Server memberOf nicht unterstützt.", "Password change rejected. Hint: " : "Passwortändertung verweigert. Hinweis:", @@ -62,8 +63,10 @@ "Edit LDAP Query" : "LDAP-Abfrage bearbeiten", "LDAP Filter:" : "LDAP-Filter:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Der Filter bestimmt, welche LDAP-Gruppen Zugriff auf die %s-Instanz haben sollen.", + "Verify settings and count the groups" : "Überprüfe die Einstellungen und zähle die Gruppen", "When logging in, %s will find the user based on the following attributes:" : "Beim Anmelden wird %s den Nutzer basierend auf folgenden Attributen finden:", "LDAP / AD Username:" : "LDAP-/AD-Benutzername:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Erlaubt die Anmeldung gegen den LDAP / AD Benutzernamen, der entweder uid oder sAAMAccountName ist, und wird erkannt.", "LDAP / AD Email Address:" : "LDAP-/AD-E-Mail-Adresse:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Erlaubt das Anmelden gegen ein E-Mail Attribut. Mail und mailPrimaryAddress sind erlaubt.", "Other Attributes:" : "Andere Attribute:", @@ -72,9 +75,11 @@ "Verify settings" : "Einstellungen überprüfen", "1. Server" : "1. Server", "%s. Server:" : "%s. Server:", + "Add a new configuration" : "Füge eine neue Konfiguration hinzu.", "Copy current configuration into new directory binding" : "Aktuelle Konfiguration in eine neues Verzeichnis-Bind kopieren ", "Delete the current configuration" : "Aktuelle Konfiguration löschen", "Host" : "Host", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Du kannst das Protokoll auslassen, wenn du nicht SSL benötigst. Dann starte mit ldaps://", "Port" : "Port", "Detect Port" : "Port ermitteln", "User DN" : "Benutzer-DN", diff --git a/apps/user_ldap/l10n/es.js b/apps/user_ldap/l10n/es.js index b19ae8920f9..44bb447ae97 100644 --- a/apps/user_ldap/l10n/es.js +++ b/apps/user_ldap/l10n/es.js @@ -64,6 +64,7 @@ OC.L10N.register( "Edit LDAP Query" : "Editar consulta LDAP", "LDAP Filter:" : "Filtro LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "El filtro especifica que grupos LDAP tendrán acceso a %s.", + "Verify settings and count the groups" : "Verifique los ajustes y cuente los grupos", "When logging in, %s will find the user based on the following attributes:" : "Cuando se inicia sesión, %s encontrará al usuario basado en los siguientes atributos:", "LDAP / AD Username:" : "Nombre de usuario LDAP /AD:", "LDAP / AD Email Address:" : "LDAP / AD dirección de correo electrónico:", @@ -74,6 +75,7 @@ OC.L10N.register( "Verify settings" : "Verificar configuración", "1. Server" : "1. Servidor", "%s. Server:" : "%s. Servidor:", + "Add a new configuration" : "Agregar una nueva configuración", "Copy current configuration into new directory binding" : "Copiar la actual configuración en un nuevo directorio de enlace", "Delete the current configuration" : "Elimina la actual configuración", "Host" : "Servidor", diff --git a/apps/user_ldap/l10n/es.json b/apps/user_ldap/l10n/es.json index f280cbba9ac..ed7bdc158ad 100644 --- a/apps/user_ldap/l10n/es.json +++ b/apps/user_ldap/l10n/es.json @@ -62,6 +62,7 @@ "Edit LDAP Query" : "Editar consulta LDAP", "LDAP Filter:" : "Filtro LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "El filtro especifica que grupos LDAP tendrán acceso a %s.", + "Verify settings and count the groups" : "Verifique los ajustes y cuente los grupos", "When logging in, %s will find the user based on the following attributes:" : "Cuando se inicia sesión, %s encontrará al usuario basado en los siguientes atributos:", "LDAP / AD Username:" : "Nombre de usuario LDAP /AD:", "LDAP / AD Email Address:" : "LDAP / AD dirección de correo electrónico:", @@ -72,6 +73,7 @@ "Verify settings" : "Verificar configuración", "1. Server" : "1. Servidor", "%s. Server:" : "%s. Servidor:", + "Add a new configuration" : "Agregar una nueva configuración", "Copy current configuration into new directory binding" : "Copiar la actual configuración en un nuevo directorio de enlace", "Delete the current configuration" : "Elimina la actual configuración", "Host" : "Servidor", diff --git a/apps/user_ldap/l10n/es_MX.js b/apps/user_ldap/l10n/es_MX.js index 449cde01d2b..1767af523a4 100644 --- a/apps/user_ldap/l10n/es_MX.js +++ b/apps/user_ldap/l10n/es_MX.js @@ -68,6 +68,7 @@ OC.L10N.register( "Verify settings and count the groups" : "Verificar los ajustes y contar los grupos", "When logging in, %s will find the user based on the following attributes:" : "Al iniciar sesion, %s encontrará al usuario con base en los siguientes atributos:", "LDAP / AD Username:" : "Nombre de usuario LDAP / AD", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Permite iniciar sesión contra el nombre de usuario LDAP / AD, que es el uid o el sAMAccountName y será detectado. ", "LDAP / AD Email Address:" : "Dirección de correo electrónico LDAP / AD", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Permite iniciar sesión contra el atributo correo electrónico. Mail y mailPrimaryAddress serán permitidos.", "Other Attributes:" : "Otros atributos:", @@ -80,6 +81,7 @@ OC.L10N.register( "Copy current configuration into new directory binding" : "Copiar la configuración actual a un nuevo directorio de vinculación", "Delete the current configuration" : "Borrar la configuración actual", "Host" : "Servidor", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Puede omitir el protocolo, a menos que requiera SSL. Si es el caso, empiece con ldaps://", "Port" : "Puerto", "Detect Port" : "Detectar Puerto", "User DN" : "DN del usuario", diff --git a/apps/user_ldap/l10n/es_MX.json b/apps/user_ldap/l10n/es_MX.json index 037ab7c103e..870706a73ca 100644 --- a/apps/user_ldap/l10n/es_MX.json +++ b/apps/user_ldap/l10n/es_MX.json @@ -66,6 +66,7 @@ "Verify settings and count the groups" : "Verificar los ajustes y contar los grupos", "When logging in, %s will find the user based on the following attributes:" : "Al iniciar sesion, %s encontrará al usuario con base en los siguientes atributos:", "LDAP / AD Username:" : "Nombre de usuario LDAP / AD", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Permite iniciar sesión contra el nombre de usuario LDAP / AD, que es el uid o el sAMAccountName y será detectado. ", "LDAP / AD Email Address:" : "Dirección de correo electrónico LDAP / AD", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Permite iniciar sesión contra el atributo correo electrónico. Mail y mailPrimaryAddress serán permitidos.", "Other Attributes:" : "Otros atributos:", @@ -78,6 +79,7 @@ "Copy current configuration into new directory binding" : "Copiar la configuración actual a un nuevo directorio de vinculación", "Delete the current configuration" : "Borrar la configuración actual", "Host" : "Servidor", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Puede omitir el protocolo, a menos que requiera SSL. Si es el caso, empiece con ldaps://", "Port" : "Puerto", "Detect Port" : "Detectar Puerto", "User DN" : "DN del usuario", diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js index 938a1e072c5..03c9a609712 100644 --- a/apps/user_ldap/l10n/fr.js +++ b/apps/user_ldap/l10n/fr.js @@ -44,6 +44,7 @@ OC.L10N.register( "An unspecified error occurred. Please check the settings and the log." : "Une erreur inconnue s'est produite. Veuillez vérifier les paramètres et le log.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Le filtre de recherche n'est pas valide, probablement à cause de problèmes de syntaxe tels que des parenthèses manquantes. Veuillez le corriger.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Une erreur s'est produite lors de la connexion au LDAP / AD. Veuillez vérifier l'hôte, le port et les informations d'identification.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "La chaîne \"%uid\" est manquante. Cette chaîne est remplacée par l'identifiant de connexion lors des requêtes LDAP / AD.", "Please provide a login name to test against" : "Veuillez indiquer un identifiant de connexion avec lequel tester.", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Les groupes sont désactivés car le serveur LDAP / AD ne prend pas en charge memberOf.", "Password change rejected. Hint: " : "La modification du mot de passe a été rejetée. Indice :", @@ -64,8 +65,10 @@ OC.L10N.register( "Edit LDAP Query" : "Modifier la requête LDAP", "LDAP Filter:" : "Filtre LDAP :", "The filter specifies which LDAP groups shall have access to the %s instance." : "Le filtre spécifie quels groupes LDAP ont accès à l'instance %s.", + "Verify settings and count the groups" : "Vérifier les paramètres et compter les groupes", "When logging in, %s will find the user based on the following attributes:" : "Au login, %s cherchera l'utilisateur sur base de ces attributs :", "LDAP / AD Username:" : "Nom d'utilisateur LDAP / AD :", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Autorise le login avec le nom d'utilisateur LDAP / AD, ce qui est soit uid ou sAMAccountName et il sera détecté.", "LDAP / AD Email Address:" : "Adresse mail LDAP / AD :", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Autoriser le login avec une adresse mail. Mail et mailPrimaryAddress sont autorisés.", "Other Attributes:" : "Autres attributs :", @@ -74,9 +77,11 @@ OC.L10N.register( "Verify settings" : "Tester les paramètres", "1. Server" : "1. Serveur", "%s. Server:" : "%s. Serveur :", + "Add a new configuration" : "Ajouter une nouvelle configuration", "Copy current configuration into new directory binding" : "Copier la configuration actuelle vers une nouvelle", "Delete the current configuration" : "Supprimer la configuration actuelle", "Host" : "Hôte", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Vous pouvez omettre le protocole, sauf si vous avez besoin de SSL. Dans ce cas, préfixez avec ldaps://", "Port" : "Port", "Detect Port" : "Détecter le port", "User DN" : "DN Utilisateur", diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json index 4c260a29eb9..05276581399 100644 --- a/apps/user_ldap/l10n/fr.json +++ b/apps/user_ldap/l10n/fr.json @@ -42,6 +42,7 @@ "An unspecified error occurred. Please check the settings and the log." : "Une erreur inconnue s'est produite. Veuillez vérifier les paramètres et le log.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Le filtre de recherche n'est pas valide, probablement à cause de problèmes de syntaxe tels que des parenthèses manquantes. Veuillez le corriger.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Une erreur s'est produite lors de la connexion au LDAP / AD. Veuillez vérifier l'hôte, le port et les informations d'identification.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "La chaîne \"%uid\" est manquante. Cette chaîne est remplacée par l'identifiant de connexion lors des requêtes LDAP / AD.", "Please provide a login name to test against" : "Veuillez indiquer un identifiant de connexion avec lequel tester.", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Les groupes sont désactivés car le serveur LDAP / AD ne prend pas en charge memberOf.", "Password change rejected. Hint: " : "La modification du mot de passe a été rejetée. Indice :", @@ -62,8 +63,10 @@ "Edit LDAP Query" : "Modifier la requête LDAP", "LDAP Filter:" : "Filtre LDAP :", "The filter specifies which LDAP groups shall have access to the %s instance." : "Le filtre spécifie quels groupes LDAP ont accès à l'instance %s.", + "Verify settings and count the groups" : "Vérifier les paramètres et compter les groupes", "When logging in, %s will find the user based on the following attributes:" : "Au login, %s cherchera l'utilisateur sur base de ces attributs :", "LDAP / AD Username:" : "Nom d'utilisateur LDAP / AD :", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Autorise le login avec le nom d'utilisateur LDAP / AD, ce qui est soit uid ou sAMAccountName et il sera détecté.", "LDAP / AD Email Address:" : "Adresse mail LDAP / AD :", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Autoriser le login avec une adresse mail. Mail et mailPrimaryAddress sont autorisés.", "Other Attributes:" : "Autres attributs :", @@ -72,9 +75,11 @@ "Verify settings" : "Tester les paramètres", "1. Server" : "1. Serveur", "%s. Server:" : "%s. Serveur :", + "Add a new configuration" : "Ajouter une nouvelle configuration", "Copy current configuration into new directory binding" : "Copier la configuration actuelle vers une nouvelle", "Delete the current configuration" : "Supprimer la configuration actuelle", "Host" : "Hôte", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Vous pouvez omettre le protocole, sauf si vous avez besoin de SSL. Dans ce cas, préfixez avec ldaps://", "Port" : "Port", "Detect Port" : "Détecter le port", "User DN" : "DN Utilisateur", diff --git a/apps/user_ldap/l10n/nb.js b/apps/user_ldap/l10n/nb.js index 5c4b15583f3..302b7f3d690 100644 --- a/apps/user_ldap/l10n/nb.js +++ b/apps/user_ldap/l10n/nb.js @@ -43,6 +43,7 @@ OC.L10N.register( "An unspecified error occurred. Please check the settings and the log." : "En uspesifisert feil oppstod. Sjekk innstillingene og loggen.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søkefilteret er ugyldig, antakelig pga. syntaksproblemer som ulikt antall start- og sluttparenteser. Sjekk det.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Det oppstod en feil ved tilkobling til LDAP / AD. Sjekk vertsnavn, portnummer og påloggingsdetaljer.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Plassholder \"%uid\" mangler. Den erstattes av påloggingsnavnet ved spørring mot LDAP / AD.", "Please provide a login name to test against" : "Oppgi et påloggingsnavn å teste mot", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Gruppeboksen ble deaktivert fordi LDAP- / AD-tjeneren ikke støtter memberOf.", "Password change rejected. Hint: " : "Passordendring avslått. Hint:", @@ -63,6 +64,7 @@ OC.L10N.register( "Edit LDAP Query" : "Rediger LDAP-spørring", "LDAP Filter:" : "LDAP-filter:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Filteret spesifiserer hvilke LDAP-grupper som skal ha tilgang til %s-instansen.", + "Verify settings and count the groups" : "Bekreft innstillingene og tell gruppene", "When logging in, %s will find the user based on the following attributes:" : "Ved pålogging vil %s finne brukeren basert på følgende attributter:", "LDAP / AD Username:" : "LDAP / AD brukernavn:", "LDAP / AD Email Address:" : "LDAP / AD e-postadresse:", @@ -73,6 +75,7 @@ OC.L10N.register( "Verify settings" : "Sjekk innstillinger", "1. Server" : "1. Tjener", "%s. Server:" : "%s. tjener:", + "Add a new configuration" : "Legger til nytt oppsett", "Copy current configuration into new directory binding" : "Kopier gjeldende konfigurasjon til ny katalogbinding", "Delete the current configuration" : "Slett gjeldende konfigurasjon", "Host" : "Tjener", @@ -132,9 +135,11 @@ OC.L10N.register( "Group-Member association" : "gruppe-medlemstilknytning", "Dynamic Group Member URL" : "URL for dynamisk gruppemedlem", "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "LDAP-attributten som, på gruppe-objekter, inneholder en LDAP søke-URL som bestemmer hvilke objekter som hører til gruppen. (En tom innstilling deaktiverer funksjonaliteten for dynamisk gruppemedlemskap.)", + "Nested Groups" : "Underlagte grupper", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Grupper som inneholder grupper er tillatt når denne er slått på. (Virker bare hvis gruppenes member-attributt inneholder DN-er.)", "Paging chunksize" : "Sidestørrelse", "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Sidestørrelsen brukes for sidevise (paged) LDAP-søk som kan returnere store resultater, som f.eks. gjennomløping av brukere eller grupper. (Sett til 0 for å skru av sidevis LDAP-spørring i disse situasjonene.)", + "(New password is sent as plain text to LDAP)" : "(Nytt passord blir sendt i klartekst til LDAP)", "Special Attributes" : "Spesielle attributter", "Quota Field" : "Felt med lagringskvote", "Quota Default" : "Standard lagringskvote", diff --git a/apps/user_ldap/l10n/nb.json b/apps/user_ldap/l10n/nb.json index 16ddc1024ac..0ab5032333b 100644 --- a/apps/user_ldap/l10n/nb.json +++ b/apps/user_ldap/l10n/nb.json @@ -41,6 +41,7 @@ "An unspecified error occurred. Please check the settings and the log." : "En uspesifisert feil oppstod. Sjekk innstillingene og loggen.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Søkefilteret er ugyldig, antakelig pga. syntaksproblemer som ulikt antall start- og sluttparenteser. Sjekk det.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Det oppstod en feil ved tilkobling til LDAP / AD. Sjekk vertsnavn, portnummer og påloggingsdetaljer.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Plassholder \"%uid\" mangler. Den erstattes av påloggingsnavnet ved spørring mot LDAP / AD.", "Please provide a login name to test against" : "Oppgi et påloggingsnavn å teste mot", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Gruppeboksen ble deaktivert fordi LDAP- / AD-tjeneren ikke støtter memberOf.", "Password change rejected. Hint: " : "Passordendring avslått. Hint:", @@ -61,6 +62,7 @@ "Edit LDAP Query" : "Rediger LDAP-spørring", "LDAP Filter:" : "LDAP-filter:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Filteret spesifiserer hvilke LDAP-grupper som skal ha tilgang til %s-instansen.", + "Verify settings and count the groups" : "Bekreft innstillingene og tell gruppene", "When logging in, %s will find the user based on the following attributes:" : "Ved pålogging vil %s finne brukeren basert på følgende attributter:", "LDAP / AD Username:" : "LDAP / AD brukernavn:", "LDAP / AD Email Address:" : "LDAP / AD e-postadresse:", @@ -71,6 +73,7 @@ "Verify settings" : "Sjekk innstillinger", "1. Server" : "1. Tjener", "%s. Server:" : "%s. tjener:", + "Add a new configuration" : "Legger til nytt oppsett", "Copy current configuration into new directory binding" : "Kopier gjeldende konfigurasjon til ny katalogbinding", "Delete the current configuration" : "Slett gjeldende konfigurasjon", "Host" : "Tjener", @@ -130,9 +133,11 @@ "Group-Member association" : "gruppe-medlemstilknytning", "Dynamic Group Member URL" : "URL for dynamisk gruppemedlem", "The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)" : "LDAP-attributten som, på gruppe-objekter, inneholder en LDAP søke-URL som bestemmer hvilke objekter som hører til gruppen. (En tom innstilling deaktiverer funksjonaliteten for dynamisk gruppemedlemskap.)", + "Nested Groups" : "Underlagte grupper", "When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)" : "Grupper som inneholder grupper er tillatt når denne er slått på. (Virker bare hvis gruppenes member-attributt inneholder DN-er.)", "Paging chunksize" : "Sidestørrelse", "Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Sidestørrelsen brukes for sidevise (paged) LDAP-søk som kan returnere store resultater, som f.eks. gjennomløping av brukere eller grupper. (Sett til 0 for å skru av sidevis LDAP-spørring i disse situasjonene.)", + "(New password is sent as plain text to LDAP)" : "(Nytt passord blir sendt i klartekst til LDAP)", "Special Attributes" : "Spesielle attributter", "Quota Field" : "Felt med lagringskvote", "Quota Default" : "Standard lagringskvote", diff --git a/apps/user_ldap/l10n/pt_BR.js b/apps/user_ldap/l10n/pt_BR.js index 07fd26f8964..19e38261e75 100644 --- a/apps/user_ldap/l10n/pt_BR.js +++ b/apps/user_ldap/l10n/pt_BR.js @@ -30,7 +30,7 @@ OC.L10N.register( "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Um erro ocorreu. Por favor verifique a Base DN e também as configurações de conexão e credenciais.", "Do you really want to delete the current Server Configuration?" : "Você realmente quer excluir as configurações atuais do servidor?", "Confirm Deletion" : "Confirmar Exclusão", - "Mappings cleared successfully!" : "Limpeza do mapeamento feita com sucesso!", + "Mappings cleared successfully!" : "Limpeza do mapeamento realizada!", "Error while clearing the mappings." : "Erro enquanto limpava os mapeamentos.", "Anonymous bind is not allowed. Please provide a User DN and Password." : "Vínculo anônimo não é permitido. Por favor, forneça um DN do usuário e senha.", "LDAP Operations error. Anonymous bind might not be allowed." : "Erro nas Operações LDAP. Vínculo anônimo pode não ser permitido.", @@ -44,6 +44,7 @@ OC.L10N.register( "An unspecified error occurred. Please check the settings and the log." : "Ocorreu um erro não especificado. Por favor, verifique as configurações e os logs.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de pesquisa é inválido, provavelmente devido a questões de sintaxe, como número ímpar de colchetes abertos e fechados. Por favor, revise.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Um erro de conexão para LDAP / AD ocorreu, por favor, verifique host, porta e as credenciais.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "O marcador de posição \"%uid\" está faltando. Ele será substituído pelo nome de login quando consutando via LDAP / AD.", "Please provide a login name to test against" : "Por favor, forneça um nome de login para testar", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "A caixa do grupo foi desativada pois o servidor LDAP / AD não suporta memberOf.", "Password change rejected. Hint: " : "Troca de senha rejeitada. Dica:", @@ -64,9 +65,11 @@ OC.L10N.register( "Edit LDAP Query" : "Editar consulta LDAP", "LDAP Filter:" : "Filtro LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "O filtro especifica quais grupos LDAP devem ter acesso à instância do %s.", + "Verify settings and count the groups" : "Verificar configurações e contar grupos", "When logging in, %s will find the user based on the following attributes:" : "Ao entrar, %s vai encontrar o usuário com base nos seguintes atributos:", "LDAP / AD Username:" : "Nome do usuário LDAP / AD:", - "LDAP / AD Email Address:" : "Endereço de e-mail LDAP / AD:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Permite login com nome de usuário LDAP / AD, o qual é ou uid ou sAMAccountName e será detectado.", + "LDAP / AD Email Address:" : "Endereço de email LDAP / AD:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Permite o login com um atributo de e-mail. Email e mailPrimaryAddress serão permitidos.", "Other Attributes:" : "Outros Atributos:", "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Define o filtro a ser aplicado, quando o login for feito. %% UID substitui o nome do usuário na ação de login. Exemplo: \"uid=%% UID\"", @@ -74,9 +77,11 @@ OC.L10N.register( "Verify settings" : "Verificar configurações", "1. Server" : "1. Servidor", "%s. Server:" : "%s. Servidor:", + "Add a new configuration" : "Adiconar uma nova configuração", "Copy current configuration into new directory binding" : "Copie a configuração atual em um novo diretório vinculado", "Delete the current configuration" : "Excluir a configuração atual", "Host" : "Host", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Você pode omitir o protocolo a menos que o SSL seja requerido. Se sim, inicie com ldaps://", "Port" : "Porta", "Detect Port" : "Detectar Porta", "User DN" : "DN do usuário", diff --git a/apps/user_ldap/l10n/pt_BR.json b/apps/user_ldap/l10n/pt_BR.json index df26537d14f..c131ae55e2f 100644 --- a/apps/user_ldap/l10n/pt_BR.json +++ b/apps/user_ldap/l10n/pt_BR.json @@ -28,7 +28,7 @@ "An error occurred. Please check the Base DN, as well as connection settings and credentials." : "Um erro ocorreu. Por favor verifique a Base DN e também as configurações de conexão e credenciais.", "Do you really want to delete the current Server Configuration?" : "Você realmente quer excluir as configurações atuais do servidor?", "Confirm Deletion" : "Confirmar Exclusão", - "Mappings cleared successfully!" : "Limpeza do mapeamento feita com sucesso!", + "Mappings cleared successfully!" : "Limpeza do mapeamento realizada!", "Error while clearing the mappings." : "Erro enquanto limpava os mapeamentos.", "Anonymous bind is not allowed. Please provide a User DN and Password." : "Vínculo anônimo não é permitido. Por favor, forneça um DN do usuário e senha.", "LDAP Operations error. Anonymous bind might not be allowed." : "Erro nas Operações LDAP. Vínculo anônimo pode não ser permitido.", @@ -42,6 +42,7 @@ "An unspecified error occurred. Please check the settings and the log." : "Ocorreu um erro não especificado. Por favor, verifique as configurações e os logs.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "O filtro de pesquisa é inválido, provavelmente devido a questões de sintaxe, como número ímpar de colchetes abertos e fechados. Por favor, revise.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Um erro de conexão para LDAP / AD ocorreu, por favor, verifique host, porta e as credenciais.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "O marcador de posição \"%uid\" está faltando. Ele será substituído pelo nome de login quando consutando via LDAP / AD.", "Please provide a login name to test against" : "Por favor, forneça um nome de login para testar", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "A caixa do grupo foi desativada pois o servidor LDAP / AD não suporta memberOf.", "Password change rejected. Hint: " : "Troca de senha rejeitada. Dica:", @@ -62,9 +63,11 @@ "Edit LDAP Query" : "Editar consulta LDAP", "LDAP Filter:" : "Filtro LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "O filtro especifica quais grupos LDAP devem ter acesso à instância do %s.", + "Verify settings and count the groups" : "Verificar configurações e contar grupos", "When logging in, %s will find the user based on the following attributes:" : "Ao entrar, %s vai encontrar o usuário com base nos seguintes atributos:", "LDAP / AD Username:" : "Nome do usuário LDAP / AD:", - "LDAP / AD Email Address:" : "Endereço de e-mail LDAP / AD:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Permite login com nome de usuário LDAP / AD, o qual é ou uid ou sAMAccountName e será detectado.", + "LDAP / AD Email Address:" : "Endereço de email LDAP / AD:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Permite o login com um atributo de e-mail. Email e mailPrimaryAddress serão permitidos.", "Other Attributes:" : "Outros Atributos:", "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action. Example: \"uid=%%uid\"" : "Define o filtro a ser aplicado, quando o login for feito. %% UID substitui o nome do usuário na ação de login. Exemplo: \"uid=%% UID\"", @@ -72,9 +75,11 @@ "Verify settings" : "Verificar configurações", "1. Server" : "1. Servidor", "%s. Server:" : "%s. Servidor:", + "Add a new configuration" : "Adiconar uma nova configuração", "Copy current configuration into new directory binding" : "Copie a configuração atual em um novo diretório vinculado", "Delete the current configuration" : "Excluir a configuração atual", "Host" : "Host", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Você pode omitir o protocolo a menos que o SSL seja requerido. Se sim, inicie com ldaps://", "Port" : "Porta", "Detect Port" : "Detectar Porta", "User DN" : "DN do usuário", diff --git a/apps/user_ldap/l10n/ru.js b/apps/user_ldap/l10n/ru.js index 7f6c4a33cb9..d8b0a723750 100644 --- a/apps/user_ldap/l10n/ru.js +++ b/apps/user_ldap/l10n/ru.js @@ -44,6 +44,7 @@ OC.L10N.register( "An unspecified error occurred. Please check the settings and the log." : "Произошла неуказанная ошибка. Пожалуйста проверьте настройки и журнал.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Некорректный фильтр поиска, возможно из-за синтаксических проблем, таких как несоответствие открывающих и закрывающих скобок. Пожалуйста проверьте.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Произошла ошибка подключения к LDAP / AD, пожалуйста проверьте настройки подключения и учетные данные.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Отсутствует заполнитель «%uid». Он будет заменен на логин при запросе к LDAP / AD.", "Please provide a login name to test against" : "Пожалуйста укажите логин для проверки", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Настройка групп была отключена, так как сервер LDAP / AD не поддерживает memberOf.", "Password change rejected. Hint: " : "Смена пароля отклонена. Подсказка:", @@ -64,8 +65,10 @@ OC.L10N.register( "Edit LDAP Query" : "Изменить запрос LDAP", "LDAP Filter:" : "Фильтр LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Этот фильтр определяет какие LDAP группы должны иметь доступ к экземпляру %s.", + "Verify settings and count the groups" : "Проверить настройки и пересчитать группы", "When logging in, %s will find the user based on the following attributes:" : "При входе, %s будет искать пользователя по следующим атрибутам:", "LDAP / AD Username:" : "Имя пользователя LDAP/AD:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Позволяет вход в LDAP / AD с помощью имени пользователя, которое может определяться как uid, так и sAMAccountName.", "LDAP / AD Email Address:" : "Адрес email LDAP / AD:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Позволяет вход с помощью адреса email. Будут разрешены Mail и mailPrimaryAddress.", "Other Attributes:" : "Другие атрибуты:", @@ -74,9 +77,11 @@ OC.L10N.register( "Verify settings" : "Проверить настройки", "1. Server" : "Сервер 1.", "%s. Server:" : "Сервер %s:", + "Add a new configuration" : "Добавить новую конфигурацию", "Copy current configuration into new directory binding" : "Копировать текущую конфигурацию в новую связь с каталогом", "Delete the current configuration" : "Удалить текущую конфигурацию", "Host" : "Сервер", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Можно пренебречь протоколом, только если не требуется использование SSL. В этом случае укажите ldaps://", "Port" : "Порт", "Detect Port" : "Определить порт", "User DN" : "DN пользователя", diff --git a/apps/user_ldap/l10n/ru.json b/apps/user_ldap/l10n/ru.json index 99ec6e9618d..00603469ec8 100644 --- a/apps/user_ldap/l10n/ru.json +++ b/apps/user_ldap/l10n/ru.json @@ -42,6 +42,7 @@ "An unspecified error occurred. Please check the settings and the log." : "Произошла неуказанная ошибка. Пожалуйста проверьте настройки и журнал.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Некорректный фильтр поиска, возможно из-за синтаксических проблем, таких как несоответствие открывающих и закрывающих скобок. Пожалуйста проверьте.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "Произошла ошибка подключения к LDAP / AD, пожалуйста проверьте настройки подключения и учетные данные.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "Отсутствует заполнитель «%uid». Он будет заменен на логин при запросе к LDAP / AD.", "Please provide a login name to test against" : "Пожалуйста укажите логин для проверки", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "Настройка групп была отключена, так как сервер LDAP / AD не поддерживает memberOf.", "Password change rejected. Hint: " : "Смена пароля отклонена. Подсказка:", @@ -62,8 +63,10 @@ "Edit LDAP Query" : "Изменить запрос LDAP", "LDAP Filter:" : "Фильтр LDAP:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Этот фильтр определяет какие LDAP группы должны иметь доступ к экземпляру %s.", + "Verify settings and count the groups" : "Проверить настройки и пересчитать группы", "When logging in, %s will find the user based on the following attributes:" : "При входе, %s будет искать пользователя по следующим атрибутам:", "LDAP / AD Username:" : "Имя пользователя LDAP/AD:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "Позволяет вход в LDAP / AD с помощью имени пользователя, которое может определяться как uid, так и sAMAccountName.", "LDAP / AD Email Address:" : "Адрес email LDAP / AD:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "Позволяет вход с помощью адреса email. Будут разрешены Mail и mailPrimaryAddress.", "Other Attributes:" : "Другие атрибуты:", @@ -72,9 +75,11 @@ "Verify settings" : "Проверить настройки", "1. Server" : "Сервер 1.", "%s. Server:" : "Сервер %s:", + "Add a new configuration" : "Добавить новую конфигурацию", "Copy current configuration into new directory binding" : "Копировать текущую конфигурацию в новую связь с каталогом", "Delete the current configuration" : "Удалить текущую конфигурацию", "Host" : "Сервер", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Можно пренебречь протоколом, только если не требуется использование SSL. В этом случае укажите ldaps://", "Port" : "Порт", "Detect Port" : "Определить порт", "User DN" : "DN пользователя", diff --git a/apps/user_ldap/l10n/tr.js b/apps/user_ldap/l10n/tr.js index 59990ab47e6..542754b8227 100644 --- a/apps/user_ldap/l10n/tr.js +++ b/apps/user_ldap/l10n/tr.js @@ -44,6 +44,7 @@ OC.L10N.register( "An unspecified error occurred. Please check the settings and the log." : "Bilinmeyen bir sorun çıktı. Lütfen ayarları ve günlüğü denetleyin.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Arama süzgeci, açılmış ve kapatılmış parantez sayılarının eşit olmaması gibi bir söz dizimi sorunu nedeniyle geçersiz. Lütfen gözden geçirin.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP / AD için bir bağlantı sorunu çıktı. Lütfen istemci, kapı numarası ve kimlik doğrulama bilgilerini denetleyin.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "LDAP / AD sorgularında kullanıcı adı ile değiştirilecek \"%uid\" yer belirleyicisi eksik. ", "Please provide a login name to test against" : "Lütfen deneme için kullanılacak bir kullanıcı adı yazın", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "LDAP / AD sunucusu memberOf parametresini desteklemediğinden grup kutusu devre dışı.", "Password change rejected. Hint: " : "Parola değişimi reddedildi. İpucu:", @@ -64,8 +65,10 @@ OC.L10N.register( "Edit LDAP Query" : "LDAP Sorgusunu Düzenle", "LDAP Filter:" : "LDAP Süzgeci:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Süzgeçte %s kopyasına erişebilecek LDAP grupları belirtilir.", + "Verify settings and count the groups" : "Ayarları doğrula ve grupları say", "When logging in, %s will find the user based on the following attributes:" : "Oturum açılırken, %s, aşağıdaki özniteliklere bağlı kullanıcıyı bulur:", "LDAP / AD Username:" : "LDAP / AD Kullanıcı Adı:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "LDAP / AD kullanıcı adı ile oturum açılmasını sağlar. Kullanıcı adı uid ya da samaccountname olabilir ve algılanır.", "LDAP / AD Email Address:" : "LDAP / AD E-posta Adresi:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "E-posta adresi ile oturum açılmasını sağlar. Mail ve mailPrimaryAddress kullanılabilir.", "Other Attributes:" : "Diğer Öznitelikler:", @@ -74,9 +77,11 @@ OC.L10N.register( "Verify settings" : "Ayarları doğrula", "1. Server" : "1. Sunucu", "%s. Server:" : "%s. Sunucu:", + "Add a new configuration" : "Yeni bir yapılandırma ekle", "Copy current configuration into new directory binding" : "Geçerli yapılandırmayı yeni dizin bağlamasına kopyala", "Delete the current configuration" : "Geçerli yapılandırmayı sil", "Host" : "Sunucu", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "SSL gerekmiyorsa iletişim kuralı belirtilmeyebilir. Gerekiyorsa ldaps:// ile başlayın", "Port" : "Kapı Numarası", "Detect Port" : "Kapı Numarasını Algıla", "User DN" : "Kullanıcı DN", diff --git a/apps/user_ldap/l10n/tr.json b/apps/user_ldap/l10n/tr.json index 7ff76f9f7df..b7980323552 100644 --- a/apps/user_ldap/l10n/tr.json +++ b/apps/user_ldap/l10n/tr.json @@ -42,6 +42,7 @@ "An unspecified error occurred. Please check the settings and the log." : "Bilinmeyen bir sorun çıktı. Lütfen ayarları ve günlüğü denetleyin.", "The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise." : "Arama süzgeci, açılmış ve kapatılmış parantez sayılarının eşit olmaması gibi bir söz dizimi sorunu nedeniyle geçersiz. Lütfen gözden geçirin.", "A connection error to LDAP / AD occurred, please check host, port and credentials." : "LDAP / AD için bir bağlantı sorunu çıktı. Lütfen istemci, kapı numarası ve kimlik doğrulama bilgilerini denetleyin.", + "The \"%uid\" placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "LDAP / AD sorgularında kullanıcı adı ile değiştirilecek \"%uid\" yer belirleyicisi eksik. ", "Please provide a login name to test against" : "Lütfen deneme için kullanılacak bir kullanıcı adı yazın", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "LDAP / AD sunucusu memberOf parametresini desteklemediğinden grup kutusu devre dışı.", "Password change rejected. Hint: " : "Parola değişimi reddedildi. İpucu:", @@ -62,8 +63,10 @@ "Edit LDAP Query" : "LDAP Sorgusunu Düzenle", "LDAP Filter:" : "LDAP Süzgeci:", "The filter specifies which LDAP groups shall have access to the %s instance." : "Süzgeçte %s kopyasına erişebilecek LDAP grupları belirtilir.", + "Verify settings and count the groups" : "Ayarları doğrula ve grupları say", "When logging in, %s will find the user based on the following attributes:" : "Oturum açılırken, %s, aşağıdaki özniteliklere bağlı kullanıcıyı bulur:", "LDAP / AD Username:" : "LDAP / AD Kullanıcı Adı:", + "Allows login against the LDAP / AD username, which is either uid or sAMAccountName and will be detected." : "LDAP / AD kullanıcı adı ile oturum açılmasını sağlar. Kullanıcı adı uid ya da samaccountname olabilir ve algılanır.", "LDAP / AD Email Address:" : "LDAP / AD E-posta Adresi:", "Allows login against an email attribute. Mail and mailPrimaryAddress will be allowed." : "E-posta adresi ile oturum açılmasını sağlar. Mail ve mailPrimaryAddress kullanılabilir.", "Other Attributes:" : "Diğer Öznitelikler:", @@ -72,9 +75,11 @@ "Verify settings" : "Ayarları doğrula", "1. Server" : "1. Sunucu", "%s. Server:" : "%s. Sunucu:", + "Add a new configuration" : "Yeni bir yapılandırma ekle", "Copy current configuration into new directory binding" : "Geçerli yapılandırmayı yeni dizin bağlamasına kopyala", "Delete the current configuration" : "Geçerli yapılandırmayı sil", "Host" : "Sunucu", + "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "SSL gerekmiyorsa iletişim kuralı belirtilmeyebilir. Gerekiyorsa ldaps:// ile başlayın", "Port" : "Kapı Numarası", "Detect Port" : "Kapı Numarasını Algıla", "User DN" : "Kullanıcı DN", diff --git a/apps/workflowengine/l10n/de.js b/apps/workflowengine/l10n/de.js index 87b81a330e3..bd0c130b3d6 100644 --- a/apps/workflowengine/l10n/de.js +++ b/apps/workflowengine/l10n/de.js @@ -1,7 +1,9 @@ OC.L10N.register( "workflowengine", { + "Saved" : "Gespeichert", "Saving failed:" : "Speichern fehlgeschlagen:", + "File MIME type" : "Datei Medientyp", "is" : "ist", "is not" : "ist nicht", "matches" : "entspricht", diff --git a/apps/workflowengine/l10n/de.json b/apps/workflowengine/l10n/de.json index eb2ea0310d1..c3bc4f34adc 100644 --- a/apps/workflowengine/l10n/de.json +++ b/apps/workflowengine/l10n/de.json @@ -1,5 +1,7 @@ { "translations": { + "Saved" : "Gespeichert", "Saving failed:" : "Speichern fehlgeschlagen:", + "File MIME type" : "Datei Medientyp", "is" : "ist", "is not" : "ist nicht", "matches" : "entspricht", diff --git a/apps/workflowengine/l10n/de_DE.js b/apps/workflowengine/l10n/de_DE.js index 9537eb0d155..d7e748859c7 100644 --- a/apps/workflowengine/l10n/de_DE.js +++ b/apps/workflowengine/l10n/de_DE.js @@ -1,7 +1,9 @@ OC.L10N.register( "workflowengine", { + "Saved" : "Gespeichert", "Saving failed:" : "Speichern fehlgeschlagen:", + "File MIME type" : "Datei MIME Typ", "is" : "ist", "is not" : "ist nicht", "matches" : "passt zu", diff --git a/apps/workflowengine/l10n/de_DE.json b/apps/workflowengine/l10n/de_DE.json index 4d71120395e..7e2dc7a28a7 100644 --- a/apps/workflowengine/l10n/de_DE.json +++ b/apps/workflowengine/l10n/de_DE.json @@ -1,5 +1,7 @@ { "translations": { + "Saved" : "Gespeichert", "Saving failed:" : "Speichern fehlgeschlagen:", + "File MIME type" : "Datei MIME Typ", "is" : "ist", "is not" : "ist nicht", "matches" : "passt zu", diff --git a/apps/workflowengine/l10n/es.js b/apps/workflowengine/l10n/es.js index 2cc9ac9b30a..8fa1d6dbd10 100644 --- a/apps/workflowengine/l10n/es.js +++ b/apps/workflowengine/l10n/es.js @@ -1,7 +1,9 @@ OC.L10N.register( "workflowengine", { + "Saved" : "Guardado", "Saving failed:" : "Guardado fallido:", + "File MIME type" : "Tipo de archivo MIME", "is" : "es/esta", "is not" : "no es/esta", "matches" : "coincidencias", diff --git a/apps/workflowengine/l10n/es.json b/apps/workflowengine/l10n/es.json index 1bb32e64a2f..d782e00360b 100644 --- a/apps/workflowengine/l10n/es.json +++ b/apps/workflowengine/l10n/es.json @@ -1,5 +1,7 @@ { "translations": { + "Saved" : "Guardado", "Saving failed:" : "Guardado fallido:", + "File MIME type" : "Tipo de archivo MIME", "is" : "es/esta", "is not" : "no es/esta", "matches" : "coincidencias", diff --git a/apps/workflowengine/l10n/fr.js b/apps/workflowengine/l10n/fr.js index a841ac70d78..afe164def4f 100644 --- a/apps/workflowengine/l10n/fr.js +++ b/apps/workflowengine/l10n/fr.js @@ -1,7 +1,9 @@ OC.L10N.register( "workflowengine", { + "Saved" : "Sauvegardé", "Saving failed:" : "L'enregistrement a échoué:", + "File MIME type" : "Type MIME du fichier", "is" : "est", "is not" : "n'est pas", "matches" : "correspond", diff --git a/apps/workflowengine/l10n/fr.json b/apps/workflowengine/l10n/fr.json index 340cd189952..7cee1e0107a 100644 --- a/apps/workflowengine/l10n/fr.json +++ b/apps/workflowengine/l10n/fr.json @@ -1,5 +1,7 @@ { "translations": { + "Saved" : "Sauvegardé", "Saving failed:" : "L'enregistrement a échoué:", + "File MIME type" : "Type MIME du fichier", "is" : "est", "is not" : "n'est pas", "matches" : "correspond", diff --git a/apps/workflowengine/l10n/nb.js b/apps/workflowengine/l10n/nb.js index 66de5b20f3b..b207c8826f7 100644 --- a/apps/workflowengine/l10n/nb.js +++ b/apps/workflowengine/l10n/nb.js @@ -1,7 +1,9 @@ OC.L10N.register( "workflowengine", { + "Saved" : "Lagret", "Saving failed:" : "Lagring mislyktes:", + "File MIME type" : "Filens MIME-type", "is" : "er", "is not" : "er ikke", "matches" : "passer", diff --git a/apps/workflowengine/l10n/nb.json b/apps/workflowengine/l10n/nb.json index 0f8b2d1b638..04f7bc182c8 100644 --- a/apps/workflowengine/l10n/nb.json +++ b/apps/workflowengine/l10n/nb.json @@ -1,5 +1,7 @@ { "translations": { + "Saved" : "Lagret", "Saving failed:" : "Lagring mislyktes:", + "File MIME type" : "Filens MIME-type", "is" : "er", "is not" : "er ikke", "matches" : "passer", diff --git a/apps/workflowengine/l10n/pt_BR.js b/apps/workflowengine/l10n/pt_BR.js index 0de16c02bfe..fe6daf49378 100644 --- a/apps/workflowengine/l10n/pt_BR.js +++ b/apps/workflowengine/l10n/pt_BR.js @@ -1,7 +1,9 @@ OC.L10N.register( "workflowengine", { + "Saved" : "Salvo", "Saving failed:" : "A gravação falhou:", + "File MIME type" : "Tipo de arquivo MIME", "is" : "é", "is not" : "não é", "matches" : "coincide", diff --git a/apps/workflowengine/l10n/pt_BR.json b/apps/workflowengine/l10n/pt_BR.json index e9d5a90ae0f..d94235bff97 100644 --- a/apps/workflowengine/l10n/pt_BR.json +++ b/apps/workflowengine/l10n/pt_BR.json @@ -1,5 +1,7 @@ { "translations": { + "Saved" : "Salvo", "Saving failed:" : "A gravação falhou:", + "File MIME type" : "Tipo de arquivo MIME", "is" : "é", "is not" : "não é", "matches" : "coincide", diff --git a/apps/workflowengine/l10n/ru.js b/apps/workflowengine/l10n/ru.js index 3278f106111..25d07fa4a7b 100644 --- a/apps/workflowengine/l10n/ru.js +++ b/apps/workflowengine/l10n/ru.js @@ -1,7 +1,9 @@ OC.L10N.register( "workflowengine", { + "Saved" : "Сохранено", "Saving failed:" : "Ошибка при сохранении:", + "File MIME type" : "MIME-тип файла", "is" : "равняется", "is not" : "не равняется", "matches" : "соответствует", diff --git a/apps/workflowengine/l10n/ru.json b/apps/workflowengine/l10n/ru.json index 407bb3f59b1..9c77d5d21c4 100644 --- a/apps/workflowengine/l10n/ru.json +++ b/apps/workflowengine/l10n/ru.json @@ -1,5 +1,7 @@ { "translations": { + "Saved" : "Сохранено", "Saving failed:" : "Ошибка при сохранении:", + "File MIME type" : "MIME-тип файла", "is" : "равняется", "is not" : "не равняется", "matches" : "соответствует", diff --git a/apps/workflowengine/l10n/tr.js b/apps/workflowengine/l10n/tr.js index a8579e75078..64e4a272951 100644 --- a/apps/workflowengine/l10n/tr.js +++ b/apps/workflowengine/l10n/tr.js @@ -1,7 +1,9 @@ OC.L10N.register( "workflowengine", { + "Saved" : "Kaydedildi", "Saving failed:" : "Kaydedilemedi:", + "File MIME type" : "Dosya MIME türü", "is" : "şu olan", "is not" : "şu olmayan", "matches" : "şuna uyan", diff --git a/apps/workflowengine/l10n/tr.json b/apps/workflowengine/l10n/tr.json index 357685c36f7..f6921e7b625 100644 --- a/apps/workflowengine/l10n/tr.json +++ b/apps/workflowengine/l10n/tr.json @@ -1,5 +1,7 @@ { "translations": { + "Saved" : "Kaydedildi", "Saving failed:" : "Kaydedilemedi:", + "File MIME type" : "Dosya MIME türü", "is" : "şu olan", "is not" : "şu olmayan", "matches" : "şuna uyan", diff --git a/autotest.sh b/autotest.sh index 735c6998e05..584b5dc0bd8 100755 --- a/autotest.sh +++ b/autotest.sh @@ -358,7 +358,7 @@ function execute_tests { fi if [ -d "$2" ]; then - for f in $(find "$2" -name '*.php'); do + for f in $(find "$2" -name '*Test.php'); do echo "${PHPUNIT[@]}" --configuration phpunit-autotest.xml $GROUP $COVER --log-junit "autotest-results-$DB.xml" "$2" / "$f" "$3" "${PHPUNIT[@]}" --configuration phpunit-autotest.xml $GROUP $COVER --log-junit "autotest-results-$DB.xml" "$f" "$3" RESULT=$? diff --git a/core/Controller/LostController.php b/core/Controller/LostController.php index 7a2590094b5..8d26f2c1942 100644 --- a/core/Controller/LostController.php +++ b/core/Controller/LostController.php @@ -311,7 +311,7 @@ class LostController extends Controller { $message->setTo([$email => $user->getUID()]); $message->setSubject($this->l10n->t('%s password reset', [$this->defaults->getName()])); $message->setPlainBody($emailTemplate->renderText()); - $message->setHtmlBody($emailTemplate->renderHTML()); + $message->setHtmlBody($emailTemplate->renderHtml()); $message->setFrom([$this->from => $this->defaults->getName()]); $this->mailer->send($message); } catch (\Exception $e) { diff --git a/core/css/apps.scss b/core/css/apps.scss index 399d630538c..f885c1f2792 100644 --- a/core/css/apps.scss +++ b/core/css/apps.scss @@ -477,7 +477,7 @@ kbd { border-radius: 0; text-align: left; padding-left: 42px; - font-weight: 300; + font-weight: 400; &:hover, &:focus { background-color: $color-main-background; @@ -694,13 +694,13 @@ kbd { } .menuitem { width: 100%; - -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=50)' !important; - filter: alpha(opacity = 50) !important; - opacity: .5 !important; + -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=50)'; + filter: alpha(opacity = 50); + opacity: .5; &:hover, &:focus, &.active { - -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=100)' !important; - filter: alpha(opacity = 100) !important; - opacity: 1 !important; + -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=100)'; + filter: alpha(opacity = 100); + opacity: 1; } } [class^='icon-'], diff --git a/core/css/share.scss b/core/css/share.scss index de545955aa9..552e20c80cc 100644 --- a/core/css/share.scss +++ b/core/css/share.scss @@ -106,7 +106,6 @@ .shareOption { white-space: nowrap; display: inline-block; - opacity: 1 !important; } .unshare img, .showCruds img { diff --git a/core/css/styles.scss b/core/css/styles.scss index 0fd4b90876c..a6970336c12 100644 --- a/core/css/styles.scss +++ b/core/css/styles.scss @@ -1057,12 +1057,6 @@ span.ui-icon { margin: 3px 7px 30px 0; } -.move2trash { - /* decrease spinner size */ - width: 16px; - height: 16px; -} - /* ---- TOOLTIPS ---- */ .extra-data { @@ -1107,64 +1101,6 @@ span.ui-icon { } } -/* ---- APP SETTINGS - LEGACY, DO NOT USE THE POPUP! ---- */ - -.popup { - background-color: $color-main-background; - border-radius: 3px; - box-shadow: 0 0 10px $color-box-shadow; - color: nc-lighten($color-main-text, 20%); - padding: 10px; - position: fixed !important; - z-index: 100; - &.topright { - top: 7em; - right: 1em; - } - &.bottomleft { - bottom: 1em; - left: 33em; - } - .close { - position: absolute; - top: 0.2em; - right: 0.2em; - height: 20px; - width: 20px; - background: url('../img/actions/close.svg?v=1') no-repeat center; - } - h2 { - font-size: 20px; - } -} - -.arrow { - border-bottom: 10px solid white; - border-left: 10px solid transparent; - border-right: 10px solid transparent; - display: block; - height: 0; - position: absolute; - width: 0; - z-index: 201; - &.left { - left: -13px; - bottom: 1.2em; - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); - } - &.up { - top: -8px; - right: 6px; - } - &.down { - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); - } -} - /* ---- BREADCRUMB ---- */ div.crumb { diff --git a/core/js/shareconfigmodel.js b/core/js/shareconfigmodel.js index 1ead631db4d..16ab904ad43 100644 --- a/core/js/shareconfigmodel.js +++ b/core/js/shareconfigmodel.js @@ -29,6 +29,7 @@ isMailShareAllowed: oc_appconfig.shareByMailEnabled !== undefined, defaultExpireDate: oc_appconfig.core.defaultExpireDate, isResharingAllowed: oc_appconfig.core.resharingAllowed, + isPasswordForMailSharesRequired: (oc_appconfig.shareByMail === undefined) ? false : oc_appconfig.shareByMail.enforcePasswordProtection, allowGroupSharing: oc_appconfig.core.allowGroupSharing }, diff --git a/core/js/sharedialoglinkshareview.js b/core/js/sharedialoglinkshareview.js index 75e56a23f58..6017714b305 100644 --- a/core/js/sharedialoglinkshareview.js +++ b/core/js/sharedialoglinkshareview.js @@ -85,7 +85,7 @@ '</li>' + '{{#each social}}' + '<li>' + - '<a href="#" class="shareOption menuitem pop-up" data-url="{{url}}">' + + '<a href="#" class="shareOption menuitem pop-up" data-url="{{url}}" data-window="{{newWindow}}">' + '<span class="icon {{iconClass}}"' + '></span><span>{{label}}' + '</span>' + @@ -424,7 +424,8 @@ url: url, label: t('core', 'Share to {name}', {name: model.get('name')}), name: model.get('name'), - iconClass: model.get('iconClass') + iconClass: model.get('iconClass'), + newWindow: model.get('newWindow') }); }); @@ -515,14 +516,19 @@ event.stopPropagation(); var url = $(event.currentTarget).data('url'); + var newWindow = $(event.currentTarget).data('window'); $(event.currentTarget).tooltip('hide'); if (url) { - var width = 600; - var height = 400; - var left = (screen.width/2)-(width/2); - var top = (screen.height/2)-(height/2); + if (newWindow === true) { + var width = 600; + var height = 400; + var left = (screen.width / 2) - (width / 2); + var top = (screen.height / 2) - (height / 2); - window.open(url, 'name', 'width=' + width + ', height=' + height + ', top=' + top + ', left=' + left); + window.open(url, 'name', 'width=' + width + ', height=' + height + ', top=' + top + ', left=' + left); + } else { + window.location.href = url; + } } } diff --git a/core/js/sharedialogshareelistview.js b/core/js/sharedialogshareelistview.js index 6903dd57c33..3a481e53dde 100644 --- a/core/js/sharedialogshareelistview.js +++ b/core/js/sharedialogshareelistview.js @@ -100,7 +100,7 @@ '{{/if}}' + '<li>' + '<span class="shareOption menuitem">' + - '<input id="password-{{cid}}-{{shareId}}" type="checkbox" name="password" class="password checkbox" {{#if isPasswordSet}}checked="checked"{{/if}}" />' + + '<input id="password-{{cid}}-{{shareId}}" type="checkbox" name="password" class="password checkbox" {{#if isPasswordSet}}checked="checked"{{/if}}{{#if isPasswordSet}}{{#if isPasswordForMailSharesRequired}}disabled=""{{/if}}{{/if}}" />' + '<label for="password-{{cid}}-{{shareId}}">{{passwordLabel}}</label>' + '<div class="passwordContainer-{{cid}}-{{shareId}} {{#unless isPasswordSet}}hidden{{/unless}}">' + ' <label for="passwordField-{{cid}}-{{shareId}}" class="hidden-visually" value="{{password}}">{{passwordLabel}}</label>' + @@ -268,6 +268,7 @@ crudsLabel: t('core', 'Access control'), triangleSImage: OC.imagePath('core', 'actions/triangle-s'), isResharingAllowed: this.configModel.get('isResharingAllowed'), + isPasswordForMailSharesRequired: this.configModel.get('isPasswordForMailSharesRequired'), sharePermissionPossible: this.model.sharePermissionPossible(), editPermissionPossible: this.model.editPermissionPossible(), createPermissionPossible: this.model.createPermissionPossible(), diff --git a/core/js/sharesocialmanager.js b/core/js/sharesocialmanager.js index c1db48dda62..c0e10a47481 100644 --- a/core/js/sharesocialmanager.js +++ b/core/js/sharesocialmanager.js @@ -36,7 +36,9 @@ /** Name to show in the tooltip */ name: null, /** Icon class to display */ - iconClass: null + iconClass: null, + /** Open in new windows */ + newWindow: true } }); diff --git a/core/l10n/de.js b/core/l10n/de.js index 562624174a2..192d927ac04 100644 --- a/core/l10n/de.js +++ b/core/l10n/de.js @@ -72,6 +72,7 @@ OC.L10N.register( "No files in here" : "Keine Dateien vorhanden", "Choose" : "Auswählen", "Error loading file picker template: {error}" : "Fehler beim Laden der Dateiauswahlvorlage: {error}", + "OK" : "OK", "Error loading message template: {error}" : "Fehler beim Laden der Nachrichtenvorlage: {error}", "read-only" : "Schreibgeschützt", "_{count} file conflict_::_{count} file conflicts_" : ["{count} Dateikonflikt","{count} Dateikonflikte"], @@ -102,6 +103,7 @@ OC.L10N.register( "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "PHP Opcache ist nicht korrekt eingerichtet. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Für bessere Leistung empfehlen wir ↗</a> folgende Einstellungen in der <code>php.ini</code>:", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "Die PHP-Funktion \"set_time_limit\" ist nicht verfügbar. Dies kann in angehaltenen Scripten oder einer abgebrochenen Installation resultieren. Wir empfehlen dringend, diese Funtkion zu aktivieren.", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Dein Datenverzeichnis und deine Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, deinen Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass du es aus dem Dokument-Root-Verzeichnis des Webservers bewegst.", "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." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.", "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}\" rel=\"noreferrer\">security tips</a>." : "Der \"Strict-Transport-Security\" HTTP-Header ist nicht auf mindestens \"{seconds}\" Sekunden eingestellt. Um die Sicherheit zu erhöhen, empfehlen wir das Aktivieren von HSTS, wie es in den <a href=\"{docUrl}\" rel=\"noreferrer\">Sicherheitshinweisen</a> erläutert ist.", "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>." : "Du greifst auf diese Site über HTTP zu. Wir raten dringend dazu, deinen Server so zu konfigurieren, dass er stattdessen nur HTTPS akzeptiert, wie es in unseren <a href=\"{docUrl}\">Sicherheitshinweisen</a> beschrieben ist.", @@ -116,6 +118,7 @@ OC.L10N.register( "Expiration" : "Ablaufdatum", "Expiration date" : "Ablaufdatum", "Choose a password for the public link" : "Wähle ein Passwort für den öffentlichen Link", + "Choose a password for the public link or press \"Enter ↵\"" : "Wähle ein Passwort für die öffentliche Freigabe oder presse \"Return ↵'", "Copied!" : "Kopiert!", "Copy" : "Kopieren", "Not supported!" : "Nicht unterstützt!", diff --git a/core/l10n/de.json b/core/l10n/de.json index 7530154004a..dacfcdeb740 100644 --- a/core/l10n/de.json +++ b/core/l10n/de.json @@ -70,6 +70,7 @@ "No files in here" : "Keine Dateien vorhanden", "Choose" : "Auswählen", "Error loading file picker template: {error}" : "Fehler beim Laden der Dateiauswahlvorlage: {error}", + "OK" : "OK", "Error loading message template: {error}" : "Fehler beim Laden der Nachrichtenvorlage: {error}", "read-only" : "Schreibgeschützt", "_{count} file conflict_::_{count} file conflicts_" : ["{count} Dateikonflikt","{count} Dateikonflikte"], @@ -100,6 +101,7 @@ "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "PHP Opcache ist nicht korrekt eingerichtet. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Für bessere Leistung empfehlen wir ↗</a> folgende Einstellungen in der <code>php.ini</code>:", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "Die PHP-Funktion \"set_time_limit\" ist nicht verfügbar. Dies kann in angehaltenen Scripten oder einer abgebrochenen Installation resultieren. Wir empfehlen dringend, diese Funtkion zu aktivieren.", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Dein Datenverzeichnis und deine Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, deinen Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass du es aus dem Dokument-Root-Verzeichnis des Webservers bewegst.", "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." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.", "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}\" rel=\"noreferrer\">security tips</a>." : "Der \"Strict-Transport-Security\" HTTP-Header ist nicht auf mindestens \"{seconds}\" Sekunden eingestellt. Um die Sicherheit zu erhöhen, empfehlen wir das Aktivieren von HSTS, wie es in den <a href=\"{docUrl}\" rel=\"noreferrer\">Sicherheitshinweisen</a> erläutert ist.", "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>." : "Du greifst auf diese Site über HTTP zu. Wir raten dringend dazu, deinen Server so zu konfigurieren, dass er stattdessen nur HTTPS akzeptiert, wie es in unseren <a href=\"{docUrl}\">Sicherheitshinweisen</a> beschrieben ist.", @@ -114,6 +116,7 @@ "Expiration" : "Ablaufdatum", "Expiration date" : "Ablaufdatum", "Choose a password for the public link" : "Wähle ein Passwort für den öffentlichen Link", + "Choose a password for the public link or press \"Enter ↵\"" : "Wähle ein Passwort für die öffentliche Freigabe oder presse \"Return ↵'", "Copied!" : "Kopiert!", "Copy" : "Kopieren", "Not supported!" : "Nicht unterstützt!", diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js index 8cdae2252bb..7dbe02c1818 100644 --- a/core/l10n/de_DE.js +++ b/core/l10n/de_DE.js @@ -72,6 +72,7 @@ OC.L10N.register( "No files in here" : "Keine Dateien vorhanden", "Choose" : "Auswählen", "Error loading file picker template: {error}" : "Fehler beim Laden der Dateiauswahlvorlage: {error}", + "OK" : "OK", "Error loading message template: {error}" : "Fehler beim Laden der Nachrichtenvorlage: {error}", "read-only" : "Schreibgeschützt", "_{count} file conflict_::_{count} file conflicts_" : ["{count} Dateikonflikt","{count} Dateikonflikte"], @@ -102,6 +103,7 @@ OC.L10N.register( "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "PHP Opcache ist nicht korrekt eingerichtet. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Für bessere Leistung empfehlen wir ↗</a> folgende Einstellungen in der <code>php.ini</code>:", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "Die PHP-Funktion \"set_time_limit\" ist nicht verfügbar. Dies kann in angehaltenen Scripten oder einer abgebrochenen Installation resultieren. Wir empfehlen dringend, diese Funtkion zu aktivieren.", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Ihren Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Sie es aus dem Document-Root-Verzeichnis des Webservers herausverschieben.", "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." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.", "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}\" rel=\"noreferrer\">security tips</a>." : "Der „Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens „{seconds}“ Sekunden eingestellt. Für mehr Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in unseren <a href=\"{docUrl}\" rel=\"noreferrer\">Sicherheitshinweisen</a> erläutert ist.", "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>." : "Sie greifen auf diese Site über HTTP zu. Wir raten dringend dazu, Ihren Server so zu konfigurieren, dass er stattdessen nur HTTPS akzeptiert, wie es in unseren <a href=\"{docUrl}\">Sicherheitshinweisen</a> beschrieben ist.", @@ -116,6 +118,7 @@ OC.L10N.register( "Expiration" : "Ablauf", "Expiration date" : "Ablaufdatum", "Choose a password for the public link" : "Wählen Sie ein Passwort für den öffentlichen Link", + "Choose a password for the public link or press \"Enter ↵\"" : "Wählen Sie ein Passwort für die öffentliche Freigabe oder drücken Sie die Eingabetaste", "Copied!" : "Kopiert!", "Copy" : "Kopieren", "Not supported!" : "Nicht unterstützt!", diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json index dd5d2b97c1d..072bd72f63a 100644 --- a/core/l10n/de_DE.json +++ b/core/l10n/de_DE.json @@ -70,6 +70,7 @@ "No files in here" : "Keine Dateien vorhanden", "Choose" : "Auswählen", "Error loading file picker template: {error}" : "Fehler beim Laden der Dateiauswahlvorlage: {error}", + "OK" : "OK", "Error loading message template: {error}" : "Fehler beim Laden der Nachrichtenvorlage: {error}", "read-only" : "Schreibgeschützt", "_{count} file conflict_::_{count} file conflicts_" : ["{count} Dateikonflikt","{count} Dateikonflikte"], @@ -100,6 +101,7 @@ "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "PHP Opcache ist nicht korrekt eingerichtet. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Für bessere Leistung empfehlen wir ↗</a> folgende Einstellungen in der <code>php.ini</code>:", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "Die PHP-Funktion \"set_time_limit\" ist nicht verfügbar. Dies kann in angehaltenen Scripten oder einer abgebrochenen Installation resultieren. Wir empfehlen dringend, diese Funtkion zu aktivieren.", "Error occurred while checking server setup" : "Fehler beim Überprüfen der Servereinrichtung", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar. Die .htaccess-Datei funktioniert nicht. Es wird dringend empfohlen, Ihren Webserver dahingehend zu konfigurieren, dass das Datenverzeichnis nicht mehr vom Internet aus erreichbar ist oder dass Sie es aus dem Document-Root-Verzeichnis des Webservers herausverschieben.", "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." : "Der „{header}“-HTTP-Header ist nicht so konfiguriert, dass er „{expected}“ entspricht. Dies ist ein potentielles Sicherheitsrisiko und es wird empfohlen, diese Einstellung zu ändern.", "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}\" rel=\"noreferrer\">security tips</a>." : "Der „Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens „{seconds}“ Sekunden eingestellt. Für mehr Sicherheit wird das Aktivieren von HSTS empfohlen, wie es in unseren <a href=\"{docUrl}\" rel=\"noreferrer\">Sicherheitshinweisen</a> erläutert ist.", "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>." : "Sie greifen auf diese Site über HTTP zu. Wir raten dringend dazu, Ihren Server so zu konfigurieren, dass er stattdessen nur HTTPS akzeptiert, wie es in unseren <a href=\"{docUrl}\">Sicherheitshinweisen</a> beschrieben ist.", @@ -114,6 +116,7 @@ "Expiration" : "Ablauf", "Expiration date" : "Ablaufdatum", "Choose a password for the public link" : "Wählen Sie ein Passwort für den öffentlichen Link", + "Choose a password for the public link or press \"Enter ↵\"" : "Wählen Sie ein Passwort für die öffentliche Freigabe oder drücken Sie die Eingabetaste", "Copied!" : "Kopiert!", "Copy" : "Kopieren", "Not supported!" : "Nicht unterstützt!", diff --git a/core/l10n/el.js b/core/l10n/el.js index afb094a64c9..5e0f32ae1a2 100644 --- a/core/l10n/el.js +++ b/core/l10n/el.js @@ -72,6 +72,7 @@ OC.L10N.register( "No files in here" : "Δεν υπάρχουν αρχεία", "Choose" : "Επιλέξτε", "Error loading file picker template: {error}" : "Σφάλμα κατά την φόρτωση του προτύπου του επιλογέα αρχείων: {error}", + "OK" : "Εντάξει", "Error loading message template: {error}" : "Σφάλμα φόρτωσης προτύπου μηνυμάτων: {error}", "read-only" : "μόνο για ανάγνωση", "_{count} file conflict_::_{count} file conflicts_" : ["{count} αρχείο διαφέρει","{count} αρχεία είναι σε διένεξη"], @@ -102,6 +103,7 @@ OC.L10N.register( "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "Η PHP Opcache δεν είναι ρυθμισμένη σωστά. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\"Για καλύτερη απόδοση σας συνιστούμε ↗</a> να χρησιμοποιήσετε τις ακόλουθες ρυθμίσεις στο αρχείο <code>php.ini</code>:", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "Μη διαθέσιμη η λειτουργία της PHP \"set_time_limit\". Αυτό μπορεί να διακόψει την εκτέλεση των διαφόρων scripts με αποτέλεσμα να διακοπεί η εγκατάστασή σας. Σας συνιστούμε να ενεργοποιήσετε αυτή τη λειτουργία.", "Error occurred while checking server setup" : "Παρουσιάστηκε σφάλμα κατά τον έλεγχο των ρυθμίσεων του διακομιστή σας", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανόν προσβάσιμα από το διαδίκτυο. Το αρχείο .htaccess δεν λειτουργεί. Σας προτείνουμε να ρυθμίσετε το διακομιστή σας με τέτοιο τρόπο ώστε ο κατάλογος δεδομένων να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο δεδομένων εκτός του ριζικού καταλόγου εγγράφων του διακομιστή.", "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." : "H \"{header}\" κεφαλίδα HTTP δεν έχει ρυθμιστεί ώστε να ισούται με \"{expected}\". Αυτό αποτελεί ενδεχόμενο κίνδυνο ασφάλειας ή ιδιωτικότητας και συστήνουμε τη προσαρμογή αυτής της ρύθμισης.", "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}\" rel=\"noreferrer\">security tips</a>." : "Η \"Strict-Transport-Security\" κεφαλίδα HTTP δεν έχει ρυθμιστεί για τουλάχιστον \"{seconds}\" δευτερόλεπτα. Για αυξημένη ασφάλεια συστήνουμε την ενεργοποίηση του HSTS όπως περιγράφεται στις <a href=\"{docUrl}\" rel=\"noreferrer\">συμβουλές ασφαλείας</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>." : "Έχετε πρόσβαση σε αυτό τον ιστότοπο μέσω HTTP. Προτείνουμε ανεπιφύλακτα να ρυθμίσετε το διακομιστή σας ώστε να απαιτεί τη χρήση HTTPS όπως περιγράφεται στις <a href=\"{docUrl}\">συμβουλές ασφαλείας</a>.", @@ -116,6 +118,7 @@ OC.L10N.register( "Expiration" : "Λήξη", "Expiration date" : "Ημερομηνία λήξης", "Choose a password for the public link" : "Επιλέξτε συνθηματικό για τον δημόσιο σύνδεσμο", + "Choose a password for the public link or press \"Enter ↵\"" : "Επιλέξτε συνθηματικό για τον δημόσιο σύνδεσμο ή πατήστε \"Enter ↵\"", "Copied!" : "Αντιγράφτηκε!", "Copy" : "Αντιγραφή", "Not supported!" : "Δεν υποστηρίζεται!", diff --git a/core/l10n/el.json b/core/l10n/el.json index 73991800644..4943cd8e37e 100644 --- a/core/l10n/el.json +++ b/core/l10n/el.json @@ -70,6 +70,7 @@ "No files in here" : "Δεν υπάρχουν αρχεία", "Choose" : "Επιλέξτε", "Error loading file picker template: {error}" : "Σφάλμα κατά την φόρτωση του προτύπου του επιλογέα αρχείων: {error}", + "OK" : "Εντάξει", "Error loading message template: {error}" : "Σφάλμα φόρτωσης προτύπου μηνυμάτων: {error}", "read-only" : "μόνο για ανάγνωση", "_{count} file conflict_::_{count} file conflicts_" : ["{count} αρχείο διαφέρει","{count} αρχεία είναι σε διένεξη"], @@ -100,6 +101,7 @@ "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "Η PHP Opcache δεν είναι ρυθμισμένη σωστά. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\"Για καλύτερη απόδοση σας συνιστούμε ↗</a> να χρησιμοποιήσετε τις ακόλουθες ρυθμίσεις στο αρχείο <code>php.ini</code>:", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "Μη διαθέσιμη η λειτουργία της PHP \"set_time_limit\". Αυτό μπορεί να διακόψει την εκτέλεση των διαφόρων scripts με αποτέλεσμα να διακοπεί η εγκατάστασή σας. Σας συνιστούμε να ενεργοποιήσετε αυτή τη λειτουργία.", "Error occurred while checking server setup" : "Παρουσιάστηκε σφάλμα κατά τον έλεγχο των ρυθμίσεων του διακομιστή σας", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανόν προσβάσιμα από το διαδίκτυο. Το αρχείο .htaccess δεν λειτουργεί. Σας προτείνουμε να ρυθμίσετε το διακομιστή σας με τέτοιο τρόπο ώστε ο κατάλογος δεδομένων να μην είναι πλέον προσβάσιμος ή να μετακινήσετε τον κατάλογο δεδομένων εκτός του ριζικού καταλόγου εγγράφων του διακομιστή.", "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." : "H \"{header}\" κεφαλίδα HTTP δεν έχει ρυθμιστεί ώστε να ισούται με \"{expected}\". Αυτό αποτελεί ενδεχόμενο κίνδυνο ασφάλειας ή ιδιωτικότητας και συστήνουμε τη προσαρμογή αυτής της ρύθμισης.", "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}\" rel=\"noreferrer\">security tips</a>." : "Η \"Strict-Transport-Security\" κεφαλίδα HTTP δεν έχει ρυθμιστεί για τουλάχιστον \"{seconds}\" δευτερόλεπτα. Για αυξημένη ασφάλεια συστήνουμε την ενεργοποίηση του HSTS όπως περιγράφεται στις <a href=\"{docUrl}\" rel=\"noreferrer\">συμβουλές ασφαλείας</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>." : "Έχετε πρόσβαση σε αυτό τον ιστότοπο μέσω HTTP. Προτείνουμε ανεπιφύλακτα να ρυθμίσετε το διακομιστή σας ώστε να απαιτεί τη χρήση HTTPS όπως περιγράφεται στις <a href=\"{docUrl}\">συμβουλές ασφαλείας</a>.", @@ -114,6 +116,7 @@ "Expiration" : "Λήξη", "Expiration date" : "Ημερομηνία λήξης", "Choose a password for the public link" : "Επιλέξτε συνθηματικό για τον δημόσιο σύνδεσμο", + "Choose a password for the public link or press \"Enter ↵\"" : "Επιλέξτε συνθηματικό για τον δημόσιο σύνδεσμο ή πατήστε \"Enter ↵\"", "Copied!" : "Αντιγράφτηκε!", "Copy" : "Αντιγραφή", "Not supported!" : "Δεν υποστηρίζεται!", diff --git a/core/l10n/es.js b/core/l10n/es.js index 10d142af34a..06ccc654e4a 100644 --- a/core/l10n/es.js +++ b/core/l10n/es.js @@ -72,6 +72,7 @@ OC.L10N.register( "No files in here" : "Aquí no hay archivos", "Choose" : "Seleccionar", "Error loading file picker template: {error}" : "Error al cargar plantilla del seleccionador de archivos: {error}", + "OK" : "OK", "Error loading message template: {error}" : "Error al cargar plantilla del mensaje: {error}", "read-only" : "solo lectura", "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflicto de archivo","{count} conflictos de archivo"], @@ -116,6 +117,7 @@ OC.L10N.register( "Expiration" : "Expira en:", "Expiration date" : "Fecha de caducidad", "Choose a password for the public link" : "Elija una contraseña para el enlace publico", + "Choose a password for the public link or press \"Enter ↵\"" : "Elija una contraseña para el enlace público o presione \"Enter ↵\"", "Copied!" : "¡Copiado!", "Copy" : "Copiar", "Not supported!" : "¡No se puede!", diff --git a/core/l10n/es.json b/core/l10n/es.json index 2f34b24a341..dcf4bf1d83a 100644 --- a/core/l10n/es.json +++ b/core/l10n/es.json @@ -70,6 +70,7 @@ "No files in here" : "Aquí no hay archivos", "Choose" : "Seleccionar", "Error loading file picker template: {error}" : "Error al cargar plantilla del seleccionador de archivos: {error}", + "OK" : "OK", "Error loading message template: {error}" : "Error al cargar plantilla del mensaje: {error}", "read-only" : "solo lectura", "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflicto de archivo","{count} conflictos de archivo"], @@ -114,6 +115,7 @@ "Expiration" : "Expira en:", "Expiration date" : "Fecha de caducidad", "Choose a password for the public link" : "Elija una contraseña para el enlace publico", + "Choose a password for the public link or press \"Enter ↵\"" : "Elija una contraseña para el enlace público o presione \"Enter ↵\"", "Copied!" : "¡Copiado!", "Copy" : "Copiar", "Not supported!" : "¡No se puede!", diff --git a/core/l10n/es_MX.js b/core/l10n/es_MX.js index c9d78ba74a8..2911011cb56 100644 --- a/core/l10n/es_MX.js +++ b/core/l10n/es_MX.js @@ -103,6 +103,7 @@ OC.L10N.register( "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "PHP Opcache no se encuentra correctamente configurado. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Para un mejor desempelo le recomendamos↗</a> usar los siguientes ajustes en el archivo <code>php.ini</code>:", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "La fución PHP \"set_time_limit\" no está disponible. Esto podría generar scripts que se interrumpan a media ejecución, rompiendo la instalación. Le recomendamos ámpliamente habilitar esta función.", "Error occurred while checking server setup" : "Se presentó un error al verificar la configuración del servidor", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Posiblemente sus archivos y directorio de datos sean accesibles desde Internet. El archivo .htaccess no está funcionando. Le recomendamos ámpliamente que configure su servidor web de tal modo que el directorio de datos 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." : "El encabezado HTTP \"{header}\" no está configurado como \"{expected}\". Esta es un riesgo potencial de seguridad o privacidad y le recomendamos cambiar este ajuste.", "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}\" rel=\"noreferrer\">security tips</a>." : "El encabezado HTTP \"Strict-Transport-Security\" no está configurado a al menos \"{seconds}\" segundos. Para mejorar la seguridad, le recomendamos habilitar HSTS como se describe en nuestros <a href=\"{docUrl}\" rel=\"noreferrer\">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>." : "Usted está accediendo este sitio via HTTP. Le recomendamos ámpliamente que configure su servidor para que en su lugar, el uso de HTTPS sea requerido como está descrito en nuestros <a href=\"{docUrl}\">consejos de seguridad</a>.", diff --git a/core/l10n/es_MX.json b/core/l10n/es_MX.json index 3911d9ba2bd..b2cd085b60f 100644 --- a/core/l10n/es_MX.json +++ b/core/l10n/es_MX.json @@ -101,6 +101,7 @@ "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "PHP Opcache no se encuentra correctamente configurado. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Para un mejor desempelo le recomendamos↗</a> usar los siguientes ajustes en el archivo <code>php.ini</code>:", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "La fución PHP \"set_time_limit\" no está disponible. Esto podría generar scripts que se interrumpan a media ejecución, rompiendo la instalación. Le recomendamos ámpliamente habilitar esta función.", "Error occurred while checking server setup" : "Se presentó un error al verificar la configuración del servidor", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Posiblemente sus archivos y directorio de datos sean accesibles desde Internet. El archivo .htaccess no está funcionando. Le recomendamos ámpliamente que configure su servidor web de tal modo que el directorio de datos 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." : "El encabezado HTTP \"{header}\" no está configurado como \"{expected}\". Esta es un riesgo potencial de seguridad o privacidad y le recomendamos cambiar este ajuste.", "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}\" rel=\"noreferrer\">security tips</a>." : "El encabezado HTTP \"Strict-Transport-Security\" no está configurado a al menos \"{seconds}\" segundos. Para mejorar la seguridad, le recomendamos habilitar HSTS como se describe en nuestros <a href=\"{docUrl}\" rel=\"noreferrer\">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>." : "Usted está accediendo este sitio via HTTP. Le recomendamos ámpliamente que configure su servidor para que en su lugar, el uso de HTTPS sea requerido como está descrito en nuestros <a href=\"{docUrl}\">consejos de seguridad</a>.", diff --git a/core/l10n/fr.js b/core/l10n/fr.js index 8aa8048530e..180f1026ba3 100644 --- a/core/l10n/fr.js +++ b/core/l10n/fr.js @@ -72,6 +72,7 @@ OC.L10N.register( "No files in here" : "Aucun fichier", "Choose" : "Choisir", "Error loading file picker template: {error}" : "Erreur lors du chargement du modèle du sélecteur de fichiers : {error}", + "OK" : "OK", "Error loading message template: {error}" : "Erreur de chargement du modèle de message : {error}", "read-only" : "Lecture seule", "_{count} file conflict_::_{count} file conflicts_" : ["{count} fichier en conflit","{count} fichiers en conflit"], @@ -102,6 +103,7 @@ OC.L10N.register( "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "Le PHP Opcache n'est pas correctement configuré. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Pour de meilleure performance nous recommandons ↗</a> d'utiliser les paramètres suivant dans le <code>php.ini</code> :", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "La fonction PHP \"set_time_limit\" n'est pas disponible. Cela pourrait entraîner l'arrêt des scripts à mi-exécution interrompant votre installation. Nous vous recommandons vivement d'activer cette fonction.", "Error occurred while checking server setup" : "Une erreur s'est produite lors de la vérification de la configuration du serveur", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Votre dossier de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce dossier de données ne soit plus accessible, ou de le déplacer hors de la racine du serveur 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." : "L'en-tête HTTP \"{header}\" n'est pas configurée pour être égale à \"{expected}\" créant potentiellement un risque relié à la sécurité et à la vie privée. Il est recommandé d'ajuster ce paramètre.", "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}\" rel=\"noreferrer\">security tips</a>." : "L'en-tête HTTP \"Strict-Transport-Security\" n'est pas configurée à au moins \"{seconds}\" secondes. Pour renforcer la sécurité nous recommandons d'activer HSTS comme décrit dans nos <a href=\"{docUrl}\" rel=\"noreferrer\">conseils de sécurisation</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>." : "Vous accédez à ce site via HTTP. Nous vous recommandons fortement de configurer votre serveur pour forcer l'utilisation de HTTPS, comme expliqué dans nos <a href=\"{docUrl}\">conseils de sécurisation</a>.", @@ -116,6 +118,7 @@ OC.L10N.register( "Expiration" : "Expiration", "Expiration date" : "Date d'expiration", "Choose a password for the public link" : "Choisissez un mot de passe pour le lien public", + "Choose a password for the public link or press \"Enter ↵\"" : "Choisissez un mot de passe pour le lien public ou appuyez sur \"Entrée ↵\"", "Copied!" : "Copié !", "Copy" : "Copier", "Not supported!" : "Non supporté!", diff --git a/core/l10n/fr.json b/core/l10n/fr.json index 94079ea0639..1ec9ada494a 100644 --- a/core/l10n/fr.json +++ b/core/l10n/fr.json @@ -70,6 +70,7 @@ "No files in here" : "Aucun fichier", "Choose" : "Choisir", "Error loading file picker template: {error}" : "Erreur lors du chargement du modèle du sélecteur de fichiers : {error}", + "OK" : "OK", "Error loading message template: {error}" : "Erreur de chargement du modèle de message : {error}", "read-only" : "Lecture seule", "_{count} file conflict_::_{count} file conflicts_" : ["{count} fichier en conflit","{count} fichiers en conflit"], @@ -100,6 +101,7 @@ "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "Le PHP Opcache n'est pas correctement configuré. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Pour de meilleure performance nous recommandons ↗</a> d'utiliser les paramètres suivant dans le <code>php.ini</code> :", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "La fonction PHP \"set_time_limit\" n'est pas disponible. Cela pourrait entraîner l'arrêt des scripts à mi-exécution interrompant votre installation. Nous vous recommandons vivement d'activer cette fonction.", "Error occurred while checking server setup" : "Une erreur s'est produite lors de la vérification de la configuration du serveur", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Votre dossier de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce dossier de données ne soit plus accessible, ou de le déplacer hors de la racine du serveur 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." : "L'en-tête HTTP \"{header}\" n'est pas configurée pour être égale à \"{expected}\" créant potentiellement un risque relié à la sécurité et à la vie privée. Il est recommandé d'ajuster ce paramètre.", "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}\" rel=\"noreferrer\">security tips</a>." : "L'en-tête HTTP \"Strict-Transport-Security\" n'est pas configurée à au moins \"{seconds}\" secondes. Pour renforcer la sécurité nous recommandons d'activer HSTS comme décrit dans nos <a href=\"{docUrl}\" rel=\"noreferrer\">conseils de sécurisation</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>." : "Vous accédez à ce site via HTTP. Nous vous recommandons fortement de configurer votre serveur pour forcer l'utilisation de HTTPS, comme expliqué dans nos <a href=\"{docUrl}\">conseils de sécurisation</a>.", @@ -114,6 +116,7 @@ "Expiration" : "Expiration", "Expiration date" : "Date d'expiration", "Choose a password for the public link" : "Choisissez un mot de passe pour le lien public", + "Choose a password for the public link or press \"Enter ↵\"" : "Choisissez un mot de passe pour le lien public ou appuyez sur \"Entrée ↵\"", "Copied!" : "Copié !", "Copy" : "Copier", "Not supported!" : "Non supporté!", diff --git a/core/l10n/nb.js b/core/l10n/nb.js index 90c120a2547..5bdf59a3a60 100644 --- a/core/l10n/nb.js +++ b/core/l10n/nb.js @@ -70,6 +70,7 @@ OC.L10N.register( "No files in here" : "Ingen filer her", "Choose" : "Velg", "Error loading file picker template: {error}" : "Feil ved lasting av filvelger-mal: {error}", + "OK" : "OK", "Error loading message template: {error}" : "Feil ved lasting av meldingsmal: {error}", "read-only" : "skrivebeskyttet", "_{count} file conflict_::_{count} file conflicts_" : ["{count} filkonflikt","{count} filkonflikter"], @@ -96,6 +97,7 @@ OC.L10N.register( "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Du bruker PHP versjonen {version}. Vi anbefaler deg å oppgradere PHP versjonen for å utnytte <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\"> ytelse og sikkerhetsoppdateringer som tilbys av PHP Group</a>, så fort din distribusjon støtter det.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Noen filer besto ikke gyldighetssjekken. Ytterligere informasjon om hvordan dette problemet kan løses finnes i vår <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentasjon</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste over ugyldige filer…</a> / <a href=\"{rescanEndpoint}\">Skann på ny…</a>)", "Error occurred while checking server setup" : "Feil oppstod ved sjekking av tjener-oppsett", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Datamappen og filene dine er sannsynligvis tilgjengelige fra Internett. .htaccess-filen fungerer ikke. Det anbefales sterkt at du setter opp vev-tjeneren slik at datamappen ikke kan aksesseres eller at du flytter datamappen ut av vev-tjenerens dokumentrot.", "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." : "HTTP-header \"{header}\" er ikke satt opp lik \"{expected}\". Dette kan være en sikkerhetsrisiko og vi anbefaler at denne innstillingen endres.", "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>." : "Du aksesserer denne nettsiden via HTTP. Vi anbefaler på det sterkeste at du konfigurerer tjeneren til å kreve HTTPS i stedet, som beskrevet i <a href=\"{docUrl}\">sikkerhetstips</a>.", "Shared" : "Delt", @@ -109,6 +111,7 @@ OC.L10N.register( "Expiration" : "Utløpsdato", "Expiration date" : "Utløpsdato", "Choose a password for the public link" : "Velg et passord for den offentlige lenken", + "Choose a password for the public link or press \"Enter ↵\"" : "Velg et passord for den offentlige lenken eller trykk \"Enter ↵\"", "Copied!" : "Kopiert!", "Copy" : "Kopier", "Not supported!" : "Ikke støttet!", diff --git a/core/l10n/nb.json b/core/l10n/nb.json index 7006370f192..0fe9a5e75d5 100644 --- a/core/l10n/nb.json +++ b/core/l10n/nb.json @@ -68,6 +68,7 @@ "No files in here" : "Ingen filer her", "Choose" : "Velg", "Error loading file picker template: {error}" : "Feil ved lasting av filvelger-mal: {error}", + "OK" : "OK", "Error loading message template: {error}" : "Feil ved lasting av meldingsmal: {error}", "read-only" : "skrivebeskyttet", "_{count} file conflict_::_{count} file conflicts_" : ["{count} filkonflikt","{count} filkonflikter"], @@ -94,6 +95,7 @@ "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Du bruker PHP versjonen {version}. Vi anbefaler deg å oppgradere PHP versjonen for å utnytte <a target=\"_blank\" rel=\"noreferrer\" href=\"{phpLink}\"> ytelse og sikkerhetsoppdateringer som tilbys av PHP Group</a>, så fort din distribusjon støtter det.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Noen filer besto ikke gyldighetssjekken. Ytterligere informasjon om hvordan dette problemet kan løses finnes i vår <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">dokumentasjon</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste over ugyldige filer…</a> / <a href=\"{rescanEndpoint}\">Skann på ny…</a>)", "Error occurred while checking server setup" : "Feil oppstod ved sjekking av tjener-oppsett", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Datamappen og filene dine er sannsynligvis tilgjengelige fra Internett. .htaccess-filen fungerer ikke. Det anbefales sterkt at du setter opp vev-tjeneren slik at datamappen ikke kan aksesseres eller at du flytter datamappen ut av vev-tjenerens dokumentrot.", "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." : "HTTP-header \"{header}\" er ikke satt opp lik \"{expected}\". Dette kan være en sikkerhetsrisiko og vi anbefaler at denne innstillingen endres.", "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>." : "Du aksesserer denne nettsiden via HTTP. Vi anbefaler på det sterkeste at du konfigurerer tjeneren til å kreve HTTPS i stedet, som beskrevet i <a href=\"{docUrl}\">sikkerhetstips</a>.", "Shared" : "Delt", @@ -107,6 +109,7 @@ "Expiration" : "Utløpsdato", "Expiration date" : "Utløpsdato", "Choose a password for the public link" : "Velg et passord for den offentlige lenken", + "Choose a password for the public link or press \"Enter ↵\"" : "Velg et passord for den offentlige lenken eller trykk \"Enter ↵\"", "Copied!" : "Kopiert!", "Copy" : "Kopier", "Not supported!" : "Ikke støttet!", diff --git a/core/l10n/pl.js b/core/l10n/pl.js index 995b1031a10..514f697a292 100644 --- a/core/l10n/pl.js +++ b/core/l10n/pl.js @@ -72,6 +72,7 @@ OC.L10N.register( "No files in here" : "Nie ma tu żadnych plików", "Choose" : "Wybierz", "Error loading file picker template: {error}" : "Błąd podczas ładowania pliku wybranego szablonu: {error}", + "OK" : "OK", "Error loading message template: {error}" : "Błąd podczas ładowania szablonu wiadomości: {error}", "read-only" : "tylko odczyt", "_{count} file conflict_::_{count} file conflicts_" : ["{count} konfliktów plików","{count} konfliktów plików","{count} konfliktów plików","{count} konfliktów plików"], @@ -116,6 +117,7 @@ OC.L10N.register( "Expiration" : "Wygaśnięcie", "Expiration date" : "Data wygaśnięcia", "Choose a password for the public link" : "Wybierz hasło dla linku publicznego", + "Choose a password for the public link or press \"Enter ↵\"" : "Wybierz hasło dla publicznego linka lub wciśnij \"Enter ↵\"", "Copied!" : "Skopiowano!", "Copy" : "Skopiuj", "Not supported!" : "Brak wsparcia!", diff --git a/core/l10n/pl.json b/core/l10n/pl.json index becec1a4154..2a36e8bee29 100644 --- a/core/l10n/pl.json +++ b/core/l10n/pl.json @@ -70,6 +70,7 @@ "No files in here" : "Nie ma tu żadnych plików", "Choose" : "Wybierz", "Error loading file picker template: {error}" : "Błąd podczas ładowania pliku wybranego szablonu: {error}", + "OK" : "OK", "Error loading message template: {error}" : "Błąd podczas ładowania szablonu wiadomości: {error}", "read-only" : "tylko odczyt", "_{count} file conflict_::_{count} file conflicts_" : ["{count} konfliktów plików","{count} konfliktów plików","{count} konfliktów plików","{count} konfliktów plików"], @@ -114,6 +115,7 @@ "Expiration" : "Wygaśnięcie", "Expiration date" : "Data wygaśnięcia", "Choose a password for the public link" : "Wybierz hasło dla linku publicznego", + "Choose a password for the public link or press \"Enter ↵\"" : "Wybierz hasło dla publicznego linka lub wciśnij \"Enter ↵\"", "Copied!" : "Skopiowano!", "Copy" : "Skopiuj", "Not supported!" : "Brak wsparcia!", diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js index 651164b4609..56dda5847e3 100644 --- a/core/l10n/pt_BR.js +++ b/core/l10n/pt_BR.js @@ -9,7 +9,7 @@ OC.L10N.register( "No image or file provided" : "Nenhuma imagem ou arquivo fornecido", "Unknown filetype" : "Tipo de arquivo desconhecido", "Invalid image" : "Imagem inválida", - "An error occurred. Please contact your admin." : "Ocorreu um erro. Entre em contato com seu administrador.", + "An error occurred. Please contact your admin." : "Ocorreu um erro. Contacte o administrador.", "No temporary profile picture available, try again" : "Nenhuma imagem temporária disponível no perfil, tente novamente", "No crop data provided" : "Nenhum dado recortado fornecido", "No valid crop data provided" : "Nenhum dado recortado válido", @@ -62,16 +62,17 @@ OC.L10N.register( "Confirm" : "Confirmar", "Failed to authenticate, try again" : "Falha na autenticação, tente novamente", "seconds ago" : "segundos atrás", - "Logging in …" : "Entrando ...", + "Logging in …" : "Entrando...", "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "O link para redefinir sua senha foi enviado para seu email. Se você não recebê-lo dentro de um período razoável de tempo, verifique suas pastas de spam/lixo.<br> Se ele não estiver lá, pergunte ao administrador local.", "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Seus arquivos são criptografados. Não existe nenhuma maneira de ter seus dados de volta depois que sua senha seja redefinida.<br /> Se você não tem certeza do que fazer, por favor contate seu administrador antes de continuar.<br />Você realmente deseja continuar?", "I know what I'm doing" : "Eu sei o que estou fazendo", - "Password can not be changed. Please contact your administrator." : "A senha não pode ser alterada. Por favor, contate o administrador.", + "Password can not be changed. Please contact your administrator." : "A senha não pôde ser alterada. Por favor, contate o administrador.", "No" : "Não", "Yes" : "Sim", "No files in here" : "Nenhum arquivos aqui", "Choose" : "Escolher", "Error loading file picker template: {error}" : "Erro carregando o seletor de modelo de arquivos: {error}", + "OK" : "OK", "Error loading message template: {error}" : "Erro carregando o modelo de mensagem: {error}", "read-only" : "somente leitura", "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflito de arquivo","{count} arquivo conflita"], @@ -102,6 +103,7 @@ OC.L10N.register( "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "O Opcache do PHP não está configurado corretamente. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Para um melhor desempenho recomendamos ↗</a> usar as seguintes configurações no <code>php.ini</code>:", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "A função PHP \"set_time_limit\" não está disponível. Isso pode resultar em scripts pendurados durante a execução e prejudicando sua instalação. Sugerimos fortemente habilitar esta função.", "Error occurred while checking server setup" : "Erro ao verificar a configuração do servidor", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Seu diretório de dados e arquivos provavelmente estão acessíveis via internet. O arquivo .htaccess não está funcionando. É altamente recomendado que você configure seu servidor web de maneira que o diretório de dados não seja mais acessível ou mova-o para fora do diretório raiz do 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." : "O cabeçalho HTTP \"{header}\" não está configurado igual ao \"{expected}\". Este é um risco potencial para a segurança e recomendamos ajustar essa configuração.", "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}\" rel=\"noreferrer\">security tips</a>." : "O cabeçalho HTTP \"Strict-Transport-Security\" não está configurado para pelo menos \"{segundos}\" segundos. Para maior segurança recomendamos a ativação HSTS como descrito em nossas <a href=\"{docUrl}\" rel=\"noreferrer\">dicas de segurança</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>." : "Você está acessando este site via HTTP. Sugerimos fortemente que você configure o servidor para exigir o uso de HTTPS como descrito em nossas <a href=\"{docUrl}\">dicas de segurança</a>.", @@ -116,6 +118,7 @@ OC.L10N.register( "Expiration" : "Expiração", "Expiration date" : "Data de expiração", "Choose a password for the public link" : "Escolha uma senha para o link público", + "Choose a password for the public link or press \"Enter ↵\"" : "Escolha uma senha para o link público ou pressione \"Enter ↵\"", "Copied!" : "Copiado!", "Copy" : "Copiar", "Not supported!" : "Não suportado!", @@ -168,10 +171,10 @@ OC.L10N.register( "Share with users, groups or remote users..." : "Compartilhe com usuários, grupos ou usuários remotos...", "Share with users, groups, remote users or by mail..." : "Compartilhe com usuários, grupos, usuários remotos ou por email...", "Share with users..." : "Compartilhe com usuários...", - "Error removing share" : "Erro na remoção do compartilhamento", + "Error removing share" : "Erro na exclusão do compartilhamento", "Non-existing tag #{tag}" : "Etiqueta inexistente #{tag}", "restricted" : "restrito", - "invisible" : "invisível", + "invisible" : "oculto", "({scope})" : "({scope})", "Delete" : "Excluir", "Rename" : "Renomear", @@ -246,7 +249,7 @@ OC.L10N.register( "For larger installations we recommend to choose a different database backend." : "Para instalações maiores é recomendável escolher um backend de banco de dados diferente.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "O uso de SQLite é desencorajado especialmente quando se utiliza o cliente de desktop para sincronização de arquivos.", "Finish setup" : "Concluir configuração", - "Finishing …" : "Finalizando ...", + "Finishing …" : "Finalizando...", "Need help?" : "Precisa de ajuda?", "See the documentation" : "Veja a documentação", "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Esta aplicação requer JavaScript para sua correta operação. Por favor {linkstart}habilite o JavaScript{linkend} e recarregue a página.", @@ -304,7 +307,7 @@ OC.L10N.register( "can edit" : "pode editar", "can create" : "Pode criar", "can change" : "Pode alterar", - "can delete" : "Pode excluir", + "can delete" : "pode excluir", "access control" : "controle de acesso", "The update was successful. Redirecting you to Nextcloud now." : "A atualização terminou com sucesso. Redirecionando para Nextcloud agora.", "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Olá,\n\napenas para avisar que %s compartilhou %s com você.\nVeja isto: %s\n\n", diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json index 040d9f8d64a..dd922935f00 100644 --- a/core/l10n/pt_BR.json +++ b/core/l10n/pt_BR.json @@ -7,7 +7,7 @@ "No image or file provided" : "Nenhuma imagem ou arquivo fornecido", "Unknown filetype" : "Tipo de arquivo desconhecido", "Invalid image" : "Imagem inválida", - "An error occurred. Please contact your admin." : "Ocorreu um erro. Entre em contato com seu administrador.", + "An error occurred. Please contact your admin." : "Ocorreu um erro. Contacte o administrador.", "No temporary profile picture available, try again" : "Nenhuma imagem temporária disponível no perfil, tente novamente", "No crop data provided" : "Nenhum dado recortado fornecido", "No valid crop data provided" : "Nenhum dado recortado válido", @@ -60,16 +60,17 @@ "Confirm" : "Confirmar", "Failed to authenticate, try again" : "Falha na autenticação, tente novamente", "seconds ago" : "segundos atrás", - "Logging in …" : "Entrando ...", + "Logging in …" : "Entrando...", "The link to reset your password has been sent to your email. If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator." : "O link para redefinir sua senha foi enviado para seu email. Se você não recebê-lo dentro de um período razoável de tempo, verifique suas pastas de spam/lixo.<br> Se ele não estiver lá, pergunte ao administrador local.", "Your files are encrypted. There will be no way to get your data back after your password is reset.<br />If you are not sure what to do, please contact your administrator before you continue. <br />Do you really want to continue?" : "Seus arquivos são criptografados. Não existe nenhuma maneira de ter seus dados de volta depois que sua senha seja redefinida.<br /> Se você não tem certeza do que fazer, por favor contate seu administrador antes de continuar.<br />Você realmente deseja continuar?", "I know what I'm doing" : "Eu sei o que estou fazendo", - "Password can not be changed. Please contact your administrator." : "A senha não pode ser alterada. Por favor, contate o administrador.", + "Password can not be changed. Please contact your administrator." : "A senha não pôde ser alterada. Por favor, contate o administrador.", "No" : "Não", "Yes" : "Sim", "No files in here" : "Nenhum arquivos aqui", "Choose" : "Escolher", "Error loading file picker template: {error}" : "Erro carregando o seletor de modelo de arquivos: {error}", + "OK" : "OK", "Error loading message template: {error}" : "Erro carregando o modelo de mensagem: {error}", "read-only" : "somente leitura", "_{count} file conflict_::_{count} file conflicts_" : ["{count} conflito de arquivo","{count} arquivo conflita"], @@ -100,6 +101,7 @@ "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "O Opcache do PHP não está configurado corretamente. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Para um melhor desempenho recomendamos ↗</a> usar as seguintes configurações no <code>php.ini</code>:", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "A função PHP \"set_time_limit\" não está disponível. Isso pode resultar em scripts pendurados durante a execução e prejudicando sua instalação. Sugerimos fortemente habilitar esta função.", "Error occurred while checking server setup" : "Erro ao verificar a configuração do servidor", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Seu diretório de dados e arquivos provavelmente estão acessíveis via internet. O arquivo .htaccess não está funcionando. É altamente recomendado que você configure seu servidor web de maneira que o diretório de dados não seja mais acessível ou mova-o para fora do diretório raiz do 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." : "O cabeçalho HTTP \"{header}\" não está configurado igual ao \"{expected}\". Este é um risco potencial para a segurança e recomendamos ajustar essa configuração.", "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}\" rel=\"noreferrer\">security tips</a>." : "O cabeçalho HTTP \"Strict-Transport-Security\" não está configurado para pelo menos \"{segundos}\" segundos. Para maior segurança recomendamos a ativação HSTS como descrito em nossas <a href=\"{docUrl}\" rel=\"noreferrer\">dicas de segurança</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>." : "Você está acessando este site via HTTP. Sugerimos fortemente que você configure o servidor para exigir o uso de HTTPS como descrito em nossas <a href=\"{docUrl}\">dicas de segurança</a>.", @@ -114,6 +116,7 @@ "Expiration" : "Expiração", "Expiration date" : "Data de expiração", "Choose a password for the public link" : "Escolha uma senha para o link público", + "Choose a password for the public link or press \"Enter ↵\"" : "Escolha uma senha para o link público ou pressione \"Enter ↵\"", "Copied!" : "Copiado!", "Copy" : "Copiar", "Not supported!" : "Não suportado!", @@ -166,10 +169,10 @@ "Share with users, groups or remote users..." : "Compartilhe com usuários, grupos ou usuários remotos...", "Share with users, groups, remote users or by mail..." : "Compartilhe com usuários, grupos, usuários remotos ou por email...", "Share with users..." : "Compartilhe com usuários...", - "Error removing share" : "Erro na remoção do compartilhamento", + "Error removing share" : "Erro na exclusão do compartilhamento", "Non-existing tag #{tag}" : "Etiqueta inexistente #{tag}", "restricted" : "restrito", - "invisible" : "invisível", + "invisible" : "oculto", "({scope})" : "({scope})", "Delete" : "Excluir", "Rename" : "Renomear", @@ -244,7 +247,7 @@ "For larger installations we recommend to choose a different database backend." : "Para instalações maiores é recomendável escolher um backend de banco de dados diferente.", "Especially when using the desktop client for file syncing the use of SQLite is discouraged." : "O uso de SQLite é desencorajado especialmente quando se utiliza o cliente de desktop para sincronização de arquivos.", "Finish setup" : "Concluir configuração", - "Finishing …" : "Finalizando ...", + "Finishing …" : "Finalizando...", "Need help?" : "Precisa de ajuda?", "See the documentation" : "Veja a documentação", "This application requires JavaScript for correct operation. Please {linkstart}enable JavaScript{linkend} and reload the page." : "Esta aplicação requer JavaScript para sua correta operação. Por favor {linkstart}habilite o JavaScript{linkend} e recarregue a página.", @@ -302,7 +305,7 @@ "can edit" : "pode editar", "can create" : "Pode criar", "can change" : "Pode alterar", - "can delete" : "Pode excluir", + "can delete" : "pode excluir", "access control" : "controle de acesso", "The update was successful. Redirecting you to Nextcloud now." : "A atualização terminou com sucesso. Redirecionando para Nextcloud agora.", "Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\n" : "Olá,\n\napenas para avisar que %s compartilhou %s com você.\nVeja isto: %s\n\n", diff --git a/core/l10n/ru.js b/core/l10n/ru.js index 44073d9cb1b..60b78dc9acf 100644 --- a/core/l10n/ru.js +++ b/core/l10n/ru.js @@ -72,6 +72,7 @@ OC.L10N.register( "No files in here" : "Здесь нет файлов", "Choose" : "Выбрать", "Error loading file picker template: {error}" : "Ошибка при загрузке шаблона выбора файлов: {error}", + "OK" : "ОК", "Error loading message template: {error}" : "Ошибка загрузки шаблона сообщений: {error}", "read-only" : "только для чтения", "_{count} file conflict_::_{count} file conflicts_" : ["{count} конфликт в файлах","{count} конфликта в файлах","{count} конфликтов в файлах","{count} конфликтов файлов"], @@ -102,6 +103,7 @@ OC.L10N.register( "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "PHP Opcache не настроен правильно. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Для обеспечения лучшей производительности рекомендуется ↗</a> использовать следующие настройки в <code>php.ini</code>:", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "Функция PHP «set_time_limit» недоступна. В случае остановки скритов во время работы, это может привести к повреждению установки. Настойчиво рекомендуется включить эту функция. ", "Error occurred while checking server setup" : "Произошла ошибка при проверке настроек сервера", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Ваш каталог данных и ваши файлы возможно доступны из Интернета. Файл .htaccess не работает. Настоятельно рекомендуется настроить веб сервер таким образом, чтобы каталог данных не был больше доступен или переместить каталог данных за пределы корня веб-сервера.Save", "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." : "Заголовок HTTP \"{header}\" не настроен на значение \"{expected}\". Это потенциальная проблема безопасности и мы рекомендуем изменить эти настройки.", "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}\" rel=\"noreferrer\">security tips</a>." : "Заголовок HTTP \"Strict-Transport-Security\" должен быть настроен как минимум на \"{seconds}\" секунд. Для улучшения безопасности рекомендуется включить HSTS согласно нашим <a href=\"{docUrl}\">подсказкам по безопасности</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>." : "Вы зашли на этот сайт через HTTP. Мы настоятельно рекомендуем настроить ваш сервер на использование HTTPS согласно нашим <a href=\"{docUrl}\">подсказкам по безопасности</a>.", @@ -116,6 +118,7 @@ OC.L10N.register( "Expiration" : "Срок действия", "Expiration date" : "Дата окончания", "Choose a password for the public link" : "Укажите пароль для общедоступной ссылки", + "Choose a password for the public link or press \"Enter ↵\"" : "Укажите пароль для общедоступной ссылки или нажмите «Ввод ↵»", "Copied!" : "Скопировано!", "Copy" : "Копировать", "Not supported!" : "Не поддерживается!", diff --git a/core/l10n/ru.json b/core/l10n/ru.json index b338fbdb2ad..5a4412aeb94 100644 --- a/core/l10n/ru.json +++ b/core/l10n/ru.json @@ -70,6 +70,7 @@ "No files in here" : "Здесь нет файлов", "Choose" : "Выбрать", "Error loading file picker template: {error}" : "Ошибка при загрузке шаблона выбора файлов: {error}", + "OK" : "ОК", "Error loading message template: {error}" : "Ошибка загрузки шаблона сообщений: {error}", "read-only" : "только для чтения", "_{count} file conflict_::_{count} file conflicts_" : ["{count} конфликт в файлах","{count} конфликта в файлах","{count} конфликтов в файлах","{count} конфликтов файлов"], @@ -100,6 +101,7 @@ "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "PHP Opcache не настроен правильно. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">Для обеспечения лучшей производительности рекомендуется ↗</a> использовать следующие настройки в <code>php.ini</code>:", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "Функция PHP «set_time_limit» недоступна. В случае остановки скритов во время работы, это может привести к повреждению установки. Настойчиво рекомендуется включить эту функция. ", "Error occurred while checking server setup" : "Произошла ошибка при проверке настроек сервера", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Ваш каталог данных и ваши файлы возможно доступны из Интернета. Файл .htaccess не работает. Настоятельно рекомендуется настроить веб сервер таким образом, чтобы каталог данных не был больше доступен или переместить каталог данных за пределы корня веб-сервера.Save", "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." : "Заголовок HTTP \"{header}\" не настроен на значение \"{expected}\". Это потенциальная проблема безопасности и мы рекомендуем изменить эти настройки.", "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}\" rel=\"noreferrer\">security tips</a>." : "Заголовок HTTP \"Strict-Transport-Security\" должен быть настроен как минимум на \"{seconds}\" секунд. Для улучшения безопасности рекомендуется включить HSTS согласно нашим <a href=\"{docUrl}\">подсказкам по безопасности</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>." : "Вы зашли на этот сайт через HTTP. Мы настоятельно рекомендуем настроить ваш сервер на использование HTTPS согласно нашим <a href=\"{docUrl}\">подсказкам по безопасности</a>.", @@ -114,6 +116,7 @@ "Expiration" : "Срок действия", "Expiration date" : "Дата окончания", "Choose a password for the public link" : "Укажите пароль для общедоступной ссылки", + "Choose a password for the public link or press \"Enter ↵\"" : "Укажите пароль для общедоступной ссылки или нажмите «Ввод ↵»", "Copied!" : "Скопировано!", "Copy" : "Копировать", "Not supported!" : "Не поддерживается!", diff --git a/core/l10n/tr.js b/core/l10n/tr.js index 0e04f4ec1d1..f33d3a3c0e7 100644 --- a/core/l10n/tr.js +++ b/core/l10n/tr.js @@ -72,6 +72,7 @@ OC.L10N.register( "No files in here" : "Burada herhangi bir dosya yok", "Choose" : "Seçin", "Error loading file picker template: {error}" : "Dosya seçme kalıbı yüklenirken sorun çıktı: {error}", + "OK" : "Tamam", "Error loading message template: {error}" : "İleti kalıbı yüklenirken sorun çıktı: {error}", "read-only" : "salt okunur", "_{count} file conflict_::_{count} file conflicts_" : ["{count} dosya çakışması","{count} dosya çakışması"], @@ -102,6 +103,7 @@ OC.L10N.register( "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "PHP Opcache doğru şekilde ayarlanmamış. Daha iyi sonuç almak için <code>php.ini</code> dosyasında <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">şu ayarların kullanılması önerilir ↗</a>:", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "\"set_time_limit\" PHP işlevi kullanılamıyor. Bu durum betiklerin yürütme sırasında durmasına, ve kurulumunuzun çalışmamasına neden olabilir. Bu işlevi etkinleştirmeniz önemle önerilir.", "Error occurred while checking server setup" : "Sunucu ayarları denetlenirken bir sorun çıktı", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Veri klasörünüz ve dosyalarınız İnternet üzerinden erişime açık olabilir. .htaccess dosyası çalışmıyor. Web sunucunuzu yapılandırarak veri klasörüne erişimi engellemeniz ya da veri klasörünü web sunucu kök klasörü dışına taşımanız önemle önerilir.", "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." : "\"{header}\" HTTP üst bilgisi \"{expected}\" ile eşleşmek üzere yapılandırılmamış. Bu durum muhtemel bir güvenlik ya da gizlilik riski oluşturduğundan bu ayarı düzeltmeniz önerilir.", "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}\" rel=\"noreferrer\">security tips</a>." : "\"Strict-Transport-Security\" HTTP üst bilgisi en azından\"{seconds}\" saniyedir yapılandırılmamış. Gelişmiş güvenlik sağlamak için <a href=\"{docUrl}\" rel=\"noreferrer\">güvenlik ipuçlarında</a> anlatıldığı şekilde HSTS özelliğinin etkinleştirilmesi önerilir.", "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>." : "Bu siteye HTTP üzerinde erişiyorsunuz. Sunucunuzu <a href=\"{docUrl}\">güvenlik ipuçlarında</a> anlatıldığı şekilde HTTPS kullanımını zorlayacak şekilde yapılandırmanız önemle önerilir.", @@ -116,6 +118,7 @@ OC.L10N.register( "Expiration" : "Son kullanma", "Expiration date" : "Son kullanma tarihi", "Choose a password for the public link" : "Herkese açık bağlantı için bir parola seçin", + "Choose a password for the public link or press \"Enter ↵\"" : "Herkese açık bağlantı için bir parola belirtin ya da \"Enter ↵\" tuşuna basın", "Copied!" : "Kopyalandı!", "Copy" : "Kopyala", "Not supported!" : "Desteklenmiyor!", diff --git a/core/l10n/tr.json b/core/l10n/tr.json index ca427486ffe..0505b94deff 100644 --- a/core/l10n/tr.json +++ b/core/l10n/tr.json @@ -70,6 +70,7 @@ "No files in here" : "Burada herhangi bir dosya yok", "Choose" : "Seçin", "Error loading file picker template: {error}" : "Dosya seçme kalıbı yüklenirken sorun çıktı: {error}", + "OK" : "Tamam", "Error loading message template: {error}" : "İleti kalıbı yüklenirken sorun çıktı: {error}", "read-only" : "salt okunur", "_{count} file conflict_::_{count} file conflicts_" : ["{count} dosya çakışması","{count} dosya çakışması"], @@ -100,6 +101,7 @@ "The PHP Opcache is not properly configured. <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">For better performance we recommend ↗</a> to use following settings in the <code>php.ini</code>:" : "PHP Opcache doğru şekilde ayarlanmamış. Daha iyi sonuç almak için <code>php.ini</code> dosyasında <a target=\"_blank\" rel=\"noreferrer\" href=\"{docLink}\">şu ayarların kullanılması önerilir ↗</a>:", "The PHP function \"set_time_limit\" is not available. This could result in scripts being halted mid-execution, breaking your installation. We strongly recommend enabling this function." : "\"set_time_limit\" PHP işlevi kullanılamıyor. Bu durum betiklerin yürütme sırasında durmasına, ve kurulumunuzun çalışmamasına neden olabilir. Bu işlevi etkinleştirmeniz önemle önerilir.", "Error occurred while checking server setup" : "Sunucu ayarları denetlenirken bir sorun çıktı", + "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. It is strongly recommended 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." : "Veri klasörünüz ve dosyalarınız İnternet üzerinden erişime açık olabilir. .htaccess dosyası çalışmıyor. Web sunucunuzu yapılandırarak veri klasörüne erişimi engellemeniz ya da veri klasörünü web sunucu kök klasörü dışına taşımanız önemle önerilir.", "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." : "\"{header}\" HTTP üst bilgisi \"{expected}\" ile eşleşmek üzere yapılandırılmamış. Bu durum muhtemel bir güvenlik ya da gizlilik riski oluşturduğundan bu ayarı düzeltmeniz önerilir.", "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}\" rel=\"noreferrer\">security tips</a>." : "\"Strict-Transport-Security\" HTTP üst bilgisi en azından\"{seconds}\" saniyedir yapılandırılmamış. Gelişmiş güvenlik sağlamak için <a href=\"{docUrl}\" rel=\"noreferrer\">güvenlik ipuçlarında</a> anlatıldığı şekilde HSTS özelliğinin etkinleştirilmesi önerilir.", "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>." : "Bu siteye HTTP üzerinde erişiyorsunuz. Sunucunuzu <a href=\"{docUrl}\">güvenlik ipuçlarında</a> anlatıldığı şekilde HTTPS kullanımını zorlayacak şekilde yapılandırmanız önemle önerilir.", @@ -114,6 +116,7 @@ "Expiration" : "Son kullanma", "Expiration date" : "Son kullanma tarihi", "Choose a password for the public link" : "Herkese açık bağlantı için bir parola seçin", + "Choose a password for the public link or press \"Enter ↵\"" : "Herkese açık bağlantı için bir parola belirtin ya da \"Enter ↵\" tuşuna basın", "Copied!" : "Kopyalandı!", "Copy" : "Kopyala", "Not supported!" : "Desteklenmiyor!", diff --git a/core/vendor/DOMPurify/.bower.json b/core/vendor/DOMPurify/.bower.json index 19e8a7eab9a..36bd657c3d7 100644 --- a/core/vendor/DOMPurify/.bower.json +++ b/core/vendor/DOMPurify/.bower.json @@ -1,6 +1,6 @@ { "name": "DOMPurify", - "version": "0.8.5", + "version": "0.8.6", "homepage": "https://github.com/cure53/DOMPurify", "author": "Cure53 <info@cure53.de>", "description": "A DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG", @@ -29,11 +29,11 @@ "test", "website" ], - "_release": "0.8.5", + "_release": "0.8.6", "_resolution": { "type": "version", - "tag": "0.8.5", - "commit": "4222069a807a819dc6cb0a6cc0a1b99ef1ca4c56" + "tag": "0.8.6", + "commit": "b317725c72a3af14ee3aa3d6d61e5286bb917572" }, "_source": "https://github.com/cure53/DOMPurify.git", "_target": "^0.8.4", diff --git a/core/vendor/DOMPurify/dist/purify.min.js b/core/vendor/DOMPurify/dist/purify.min.js index f2c67244e00..8a4fe2b63cd 100644 --- a/core/vendor/DOMPurify/dist/purify.min.js +++ b/core/vendor/DOMPurify/dist/purify.min.js @@ -1,2 +1,2 @@ -(function(e){"use strict";var t=typeof window==="undefined"?null:window;if(typeof define==="function"&&define.amd){define(function(){return e(t)})}else if(typeof module!=="undefined"){module.exports=e(t)}else{t.DOMPurify=e(t)}})(function e(t){"use strict";var r=function(t){return e(t)};r.version="0.8.5";r.removed=[];if(!t||!t.document||t.document.nodeType!==9){r.isSupported=false;return r}var n=t.document;var a=n;var i=t.DocumentFragment;var o=t.HTMLTemplateElement;var l=t.Node;var s=t.NodeFilter;var f=t.NamedNodeMap||t.MozNamedAttrMap;var c=t.Text;var u=t.Comment;var d=t.DOMParser;if(typeof o==="function"){var m=n.createElement("template");if(m.content&&m.content.ownerDocument){n=m.content.ownerDocument}}var p=n.implementation;var v=n.createNodeIterator;var h=n.getElementsByTagName;var g=n.createDocumentFragment;var y=a.importNode;var b={};r.isSupported=typeof p.createHTMLDocument!=="undefined"&&n.documentMode!==9;var T=function(e,t){var r=t.length;while(r--){if(typeof t[r]==="string"){t[r]=t[r].toLowerCase()}e[t[r]]=true}return e};var A=function(e){var t={};var r;for(r in e){if(e.hasOwnProperty(r)){t[r]=e[r]}}return t};var x=null;var k=T({},["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr","svg","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","switch","symbol","text","textpath","title","tref","tspan","view","vkern","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmuliscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mpspace","msqrt","mystyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","#text"]);var w=null;var E=T({},["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","coords","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","rows","rowspan","spellcheck","scope","selected","shape","size","span","srclang","start","src","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns","accent-height","accumulate","additivive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mode","min","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","surfacescale","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","u1","u2","unicode","values","viewbox","visibility","vert-adv-y","vert-origin-x","vert-origin-y","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","y","y1","y2","z","zoomandpan","accent","accentunder","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","display","displaystyle","fence","frame","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]);var S=null;var N=null;var D=true;var M=false;var O=false;var L=false;var _=/\{\{[\s\S]*|[\s\S]*\}\}/gm;var C=/<%[\s\S]*|[\s\S]*%>/gm;var R=false;var z=false;var F=false;var H=false;var j=true;var B=true;var I=T({},["audio","head","math","script","style","svg","video"]);var W=T({},["audio","video","img","source"]);var G=T({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]);var q=null;var P=n.createElement("form");var U=function(e){if(typeof e!=="object"){e={}}x="ALLOWED_TAGS"in e?T({},e.ALLOWED_TAGS):k;w="ALLOWED_ATTR"in e?T({},e.ALLOWED_ATTR):E;S="FORBID_TAGS"in e?T({},e.FORBID_TAGS):{};N="FORBID_ATTR"in e?T({},e.FORBID_ATTR):{};D=e.ALLOW_DATA_ATTR!==false;M=e.ALLOW_UNKNOWN_PROTOCOLS||false;O=e.SAFE_FOR_JQUERY||false;L=e.SAFE_FOR_TEMPLATES||false;R=e.WHOLE_DOCUMENT||false;z=e.RETURN_DOM||false;F=e.RETURN_DOM_FRAGMENT||false;H=e.RETURN_DOM_IMPORT||false;j=e.SANITIZE_DOM!==false;B=e.KEEP_CONTENT!==false;if(L){D=false}if(F){z=true}if(e.ADD_TAGS){if(x===k){x=A(x)}T(x,e.ADD_TAGS)}if(e.ADD_ATTR){if(w===E){w=A(w)}T(w,e.ADD_ATTR)}if(e.ADD_URI_SAFE_ATTR){T(G,e.ADD_URI_SAFE_ATTR)}if(B){x["#text"]=true}if(Object&&"freeze"in Object){Object.freeze(e)}q=e};var V=function(e){r.removed.push({element:e});try{e.parentNode.removeChild(e)}catch(t){e.outerHTML=""}};var K=function(e,t){r.removed.push({attribute:t.getAttributeNode(e),from:t});t.removeAttribute(e)};var Y=function(e){var t,r;try{t=(new d).parseFromString(e,"text/html")}catch(n){}if(!t||!t.documentElement){t=p.createHTMLDocument("");r=t.body;r.parentNode.removeChild(r.parentNode.firstElementChild);r.outerHTML=e}if(typeof t.getElementsByTagName==="function"){return t.getElementsByTagName(R?"html":"body")[0]}return h.call(t,R?"html":"body")[0]};var J=function(e){return v.call(e.ownerDocument||e,e,s.SHOW_ELEMENT|s.SHOW_COMMENT|s.SHOW_TEXT,function(){return s.FILTER_ACCEPT},false)};var Q=function(e){if(e instanceof c||e instanceof u){return false}if(typeof e.nodeName!=="string"||typeof e.textContent!=="string"||typeof e.removeChild!=="function"||!(e.attributes instanceof f)||typeof e.removeAttribute!=="function"||typeof e.setAttribute!=="function"){return true}return false};var X=function(e){return typeof l==="object"?e instanceof l:e&&typeof e==="object"&&typeof e.nodeType==="number"&&typeof e.nodeName==="string"};var Z=function(e){var t,n;ie("beforeSanitizeElements",e,null);if(Q(e)){V(e);return true}t=e.nodeName.toLowerCase();ie("uponSanitizeElement",e,{tagName:t,allowedTags:x});if(!x[t]||S[t]){if(B&&!I[t]&&typeof e.insertAdjacentHTML==="function"){try{e.insertAdjacentHTML("AfterEnd",e.innerHTML)}catch(a){}}V(e);return true}if(O&&!e.firstElementChild&&(!e.content||!e.content.firstElementChild)&&/</g.test(e.textContent)){r.removed.push({element:e.cloneNode()});e.innerHTML=e.textContent.replace(/</g,"<")}if(L&&e.nodeType===3){n=e.textContent;n=n.replace(_," ");n=n.replace(C," ");if(e.textContent!==n){r.removed.push({element:e.cloneNode()});e.textContent=n}}ie("afterSanitizeElements",e,null);return false};var $=/^data-[\-\w.\u00B7-\uFFFF]/;var ee=/^(?:(?:(?:f|ht)tps?|mailto|tel):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i;var te=/^(?:\w+script|data):/i;var re=/[\x00-\x20\xA0\u1680\u180E\u2000-\u2029\u205f\u3000]/g;var ne=function(e){var a,i,o,l,s,f,c,u;ie("beforeSanitizeAttributes",e,null);f=e.attributes;if(!f){return}c={attrName:"",attrValue:"",keepAttr:true,allowedAttributes:w};u=f.length;while(u--){a=f[u];i=a.name;o=a.value.trim();l=i.toLowerCase();c.attrName=l;c.attrValue=o;c.keepAttr=true;ie("uponSanitizeAttribute",e,c);o=c.attrValue;if(l==="name"&&e.nodeName==="IMG"&&f.id){s=f.id;f=Array.prototype.slice.apply(f);K("id",e);K(i,e);if(f.indexOf(s)>u){e.setAttribute("id",s.value)}}else{if(i==="id"){e.setAttribute(i,"")}K(i,e)}if(!c.keepAttr){continue}if(j&&(l==="id"||l==="name")&&(o in t||o in n||o in P)){continue}if(L){o=o.replace(_," ");o=o.replace(C," ")}if(D&&$.test(l)){}else if(!w[l]||N[l]){continue}else if(G[l]){}else if(ee.test(o.replace(re,""))){}else if(l==="src"&&o.indexOf("data:")===0&&W[e.nodeName.toLowerCase()]){}else if(M&&!te.test(o.replace(re,""))){}else if(!o){}else{continue}try{e.setAttribute(i,o);r.removed.pop()}catch(d){}}ie("afterSanitizeAttributes",e,null)};var ae=function(e){var t;var r=J(e);ie("beforeSanitizeShadowDOM",e,null);while(t=r.nextNode()){ie("uponSanitizeShadowNode",t,null);if(Z(t)){continue}if(t.content instanceof i){ae(t.content)}ne(t)}ie("afterSanitizeShadowDOM",e,null)};var ie=function(e,t,n){if(!b[e]){return}b[e].forEach(function(e){e.call(r,t,n,q)})};r.sanitize=function(e,n){var o,s,f,c,u,d;if(!e){e="<!-->"}if(typeof e!=="string"&&!X(e)){if(typeof e.toString!=="function"){throw new TypeError("toString is not a function")}else{e=e.toString()}}if(!r.isSupported){if(typeof t.toStaticHTML==="object"||typeof t.toStaticHTML==="function"){if(typeof e==="string"){return t.toStaticHTML(e)}else if(X(e)){return t.toStaticHTML(e.outerHTML)}}return e}U(n);r.removed=[];if(e instanceof l){o=Y("<!-->");s=o.ownerDocument.importNode(e,true);if(s.nodeType===1&&s.nodeName==="BODY"){o=s}else{o.appendChild(s)}}else{if(!z&&!R&&e.indexOf("<")===-1){return e}o=Y(e);if(!o){return z?null:""}}u=J(o);while(f=u.nextNode()){if(f.nodeType===3&&f===c){continue}if(Z(f)){continue}if(f.content instanceof i){ae(f.content)}ne(f);c=f}if(z){if(F){d=g.call(o.ownerDocument);while(o.firstChild){d.appendChild(o.firstChild)}}else{d=o}if(H){d=y.call(a,d,true)}return d}return R?o.outerHTML:o.innerHTML};r.addHook=function(e,t){if(typeof t!=="function"){return}b[e]=b[e]||[];b[e].push(t)};r.removeHook=function(e){if(b[e]){b[e].pop()}};r.removeHooks=function(e){if(b[e]){b[e]=[]}};r.removeAllHooks=function(){b={}};return r}); +(function(e){"use strict";var t=typeof window==="undefined"?null:window;if(typeof define==="function"&&define.amd){define(function(){return e(t)})}else if(typeof module!=="undefined"){module.exports=e(t)}else{t.DOMPurify=e(t)}})(function e(t){"use strict";var r=function(t){return e(t)};r.version="0.8.6";r.removed=[];if(!t||!t.document||t.document.nodeType!==9){r.isSupported=false;return r}var n=t.document;var a=n;var i=t.DocumentFragment;var o=t.HTMLTemplateElement;var l=t.Node;var s=t.NodeFilter;var f=t.NamedNodeMap||t.MozNamedAttrMap;var c=t.Text;var u=t.Comment;if(typeof o==="function"){var d=n.createElement("template");if(d.content&&d.content.ownerDocument){n=d.content.ownerDocument}}var m=n.implementation;var p=n.createNodeIterator;var v=n.getElementsByTagName;var h=n.createDocumentFragment;var g=a.importNode;var y={};r.isSupported=typeof m.createHTMLDocument!=="undefined"&&n.documentMode!==9;var T=function(e,t){var r=t.length;while(r--){if(typeof t[r]==="string"){t[r]=t[r].toLowerCase()}e[t[r]]=true}return e};var b=function(e){var t={};var r;for(r in e){if(e.hasOwnProperty(r)){t[r]=e[r]}}return t};var A=null;var x=T({},["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr","svg","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","switch","symbol","text","textpath","title","tref","tspan","view","vkern","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmuliscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mpspace","msqrt","mystyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","#text"]);var k=null;var w=T({},["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","coords","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","span","srclang","start","src","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns","accent-height","accumulate","additivive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mode","min","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","surfacescale","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","u1","u2","unicode","values","viewbox","visibility","vert-adv-y","vert-origin-x","vert-origin-y","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","y","y1","y2","z","zoomandpan","accent","accentunder","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","display","displaystyle","fence","frame","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]);var E=null;var N=null;var O=true;var S=true;var D=false;var L=false;var M=false;var _=/\{\{[\s\S]*|[\s\S]*\}\}/gm;var C=/<%[\s\S]*|[\s\S]*%>/gm;var R=false;var z=false;var F=false;var H=false;var I=false;var B=true;var j=true;var W=T({},["audio","head","math","script","style","svg","video"]);var G=T({},["audio","video","img","source","image"]);var U=T({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]);var q=null;var P=n.createElement("form");var V=function(e){if(typeof e!=="object"){e={}}A="ALLOWED_TAGS"in e?T({},e.ALLOWED_TAGS):x;k="ALLOWED_ATTR"in e?T({},e.ALLOWED_ATTR):w;E="FORBID_TAGS"in e?T({},e.FORBID_TAGS):{};N="FORBID_ATTR"in e?T({},e.FORBID_ATTR):{};O=e.ALLOW_ARIA_ATTR!==false;S=e.ALLOW_DATA_ATTR!==false;D=e.ALLOW_UNKNOWN_PROTOCOLS||false;L=e.SAFE_FOR_JQUERY||false;M=e.SAFE_FOR_TEMPLATES||false;R=e.WHOLE_DOCUMENT||false;F=e.RETURN_DOM||false;H=e.RETURN_DOM_FRAGMENT||false;I=e.RETURN_DOM_IMPORT||false;z=e.FORCE_BODY||false;B=e.SANITIZE_DOM!==false;j=e.KEEP_CONTENT!==false;if(M){S=false}if(H){F=true}if(e.ADD_TAGS){if(A===x){A=b(A)}T(A,e.ADD_TAGS)}if(e.ADD_ATTR){if(k===w){k=b(k)}T(k,e.ADD_ATTR)}if(e.ADD_URI_SAFE_ATTR){T(U,e.ADD_URI_SAFE_ATTR)}if(j){A["#text"]=true}if(Object&&"freeze"in Object){Object.freeze(e)}q=e};var Y=function(e){r.removed.push({element:e});try{e.parentNode.removeChild(e)}catch(t){e.outerHTML=""}};var K=function(e,t){r.removed.push({attribute:t.getAttributeNode(e),from:t});t.removeAttribute(e)};var $=function(e){var t,r;if(z){e="<remove></remove>"+e}if(!t||!t.documentElement){t=m.createHTMLDocument("");r=t.body;r.parentNode.removeChild(r.parentNode.firstElementChild);r.outerHTML=e}if(typeof t.getElementsByTagName==="function"){return t.getElementsByTagName(R?"html":"body")[0]}return v.call(t,R?"html":"body")[0]};var J=function(e){return p.call(e.ownerDocument||e,e,s.SHOW_ELEMENT|s.SHOW_COMMENT|s.SHOW_TEXT,function(){return s.FILTER_ACCEPT},false)};var Q=function(e){if(e instanceof c||e instanceof u){return false}if(typeof e.nodeName!=="string"||typeof e.textContent!=="string"||typeof e.removeChild!=="function"||!(e.attributes instanceof f)||typeof e.removeAttribute!=="function"||typeof e.setAttribute!=="function"){return true}return false};var X=function(e){return typeof l==="object"?e instanceof l:e&&typeof e==="object"&&typeof e.nodeType==="number"&&typeof e.nodeName==="string"};var Z=function(e){var t,n;le("beforeSanitizeElements",e,null);if(Q(e)){Y(e);return true}t=e.nodeName.toLowerCase();le("uponSanitizeElement",e,{tagName:t,allowedTags:A});if(!A[t]||E[t]){if(j&&!W[t]&&typeof e.insertAdjacentHTML==="function"){try{e.insertAdjacentHTML("AfterEnd",e.innerHTML)}catch(a){}}Y(e);return true}if(L&&!e.firstElementChild&&(!e.content||!e.content.firstElementChild)&&/</g.test(e.textContent)){r.removed.push({element:e.cloneNode()});e.innerHTML=e.textContent.replace(/</g,"<")}if(M&&e.nodeType===3){n=e.textContent;n=n.replace(_," ");n=n.replace(C," ");if(e.textContent!==n){r.removed.push({element:e.cloneNode()});e.textContent=n}}le("afterSanitizeElements",e,null);return false};var ee=/^data-[\-\w.\u00B7-\uFFFF]/;var te=/^aria-[\-\w]+$/;var re=/^(?:(?:(?:f|ht)tps?|mailto|tel):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i;var ne=/^(?:\w+script|data):/i;var ae=/[\x00-\x20\xA0\u1680\u180E\u2000-\u2029\u205f\u3000]/g;var ie=function(e){var a,i,o,l,s,f,c,u;le("beforeSanitizeAttributes",e,null);f=e.attributes;if(!f){return}c={attrName:"",attrValue:"",keepAttr:true,allowedAttributes:k};u=f.length;while(u--){a=f[u];i=a.name;o=a.value.trim();l=i.toLowerCase();c.attrName=l;c.attrValue=o;c.keepAttr=true;le("uponSanitizeAttribute",e,c);o=c.attrValue;if(l==="name"&&e.nodeName==="IMG"&&f.id){s=f.id;f=Array.prototype.slice.apply(f);K("id",e);K(i,e);if(f.indexOf(s)>u){e.setAttribute("id",s.value)}}else if(e.nodeName==="INPUT"&&l==="type"&&o==="file"&&(k[l]||!N[l])){continue}else{if(i==="id"){e.setAttribute(i,"")}K(i,e)}if(!c.keepAttr){continue}if(B&&(l==="id"||l==="name")&&(o in t||o in n||o in P)){continue}if(M){o=o.replace(_," ");o=o.replace(C," ")}if(S&&ee.test(l)){}else if(O&&te.test(l)){}else if(!k[l]||N[l]){continue}else if(U[l]){}else if(re.test(o.replace(ae,""))){}else if((l==="src"||l==="xlink:href")&&o.indexOf("data:")===0&&G[e.nodeName.toLowerCase()]){}else if(D&&!ne.test(o.replace(ae,""))){}else if(!o){}else{continue}try{e.setAttribute(i,o);r.removed.pop()}catch(d){}}le("afterSanitizeAttributes",e,null)};var oe=function(e){var t;var r=J(e);le("beforeSanitizeShadowDOM",e,null);while(t=r.nextNode()){le("uponSanitizeShadowNode",t,null);if(Z(t)){continue}if(t.content instanceof i){oe(t.content)}ie(t)}le("afterSanitizeShadowDOM",e,null)};var le=function(e,t,n){if(!y[e]){return}y[e].forEach(function(e){e.call(r,t,n,q)})};r.sanitize=function(e,n){var o,s,f,c,u,d;if(!e){e="<!-->"}if(typeof e!=="string"&&!X(e)){if(typeof e.toString!=="function"){throw new TypeError("toString is not a function")}else{e=e.toString()}}if(!r.isSupported){if(typeof t.toStaticHTML==="object"||typeof t.toStaticHTML==="function"){if(typeof e==="string"){return t.toStaticHTML(e)}else if(X(e)){return t.toStaticHTML(e.outerHTML)}}return e}V(n);r.removed=[];if(e instanceof l){o=$("<!-->");s=o.ownerDocument.importNode(e,true);if(s.nodeType===1&&s.nodeName==="BODY"){o=s}else{o.appendChild(s)}}else{if(!F&&!R&&e.indexOf("<")===-1){return e}o=$(e);if(!o){return F?null:""}}if(z){Y(o.firstChild)}u=J(o);while(f=u.nextNode()){if(f.nodeType===3&&f===c){continue}if(Z(f)){continue}if(f.content instanceof i){oe(f.content)}ie(f);c=f}if(F){if(H){d=h.call(o.ownerDocument);while(o.firstChild){d.appendChild(o.firstChild)}}else{d=o}if(I){d=g.call(a,d,true)}return d}return R?o.outerHTML:o.innerHTML};r.addHook=function(e,t){if(typeof t!=="function"){return}y[e]=y[e]||[];y[e].push(t)};r.removeHook=function(e){if(y[e]){y[e].pop()}};r.removeHooks=function(e){if(y[e]){y[e]=[]}};r.removeAllHooks=function(){y={}};return r}); //# sourceMappingURL=./dist/purify.min.js.map
\ No newline at end of file diff --git a/core/vendor/core.js b/core/vendor/core.js index 60789de6799..e47084e2c52 100644 --- a/core/vendor/core.js +++ b/core/vendor/core.js @@ -1,8 +1,8 @@ -/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c; -}catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=N.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function W(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&T.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var X=/^(?:checkbox|radio)$/i,Y=/<([\w:-]+)/,Z=/^$|\/(?:java|ecma)script/i,$={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||d,e=c.documentElement,f=c.body,a.pageX=b.clientX+(e&&e.scrollLeft||f&&f.scrollLeft||0)-(e&&e.clientLeft||f&&f.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||f&&f.scrollTop||0)-(e&&e.clientTop||f&&f.clientTop||0)),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ea.test(f)?this.mouseHooks:da.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=d),3===a.target.nodeType&&(a.target=a.target.parentNode),h.filter?h.filter(a,g):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==ia()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===ia()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ga:ha):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:ha,isPropagationStopped:ha,isImmediatePropagationStopped:ha,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ga,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ga,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ga,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),n.fn.extend({on:function(a,b,c,d){return ja(this,a,b,c,d)},one:function(a,b,c,d){return ja(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=ha),this.each(function(){n.event.remove(this,a,c,b)})}});var ka=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,la=/<script|<style|<link/i,ma=/checked\s*(?:[^=]|=\s*.checked.)/i,na=/^true\/(.*)/,oa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=wa[0].contentDocument,b.write(),b.close(),c=ya(a,b),wa.detach()),xa[a]=c),c}var Aa=/^margin/,Ba=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ca=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Ea=d.documentElement;!function(){var b,c,e,f,g=d.createElement("div"),h=d.createElement("div");if(h.style){h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,g.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",g.appendChild(h);function i(){h.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",h.innerHTML="",Ea.appendChild(g);var d=a.getComputedStyle(h);b="1%"!==d.top,f="2px"===d.marginLeft,c="4px"===d.width,h.style.marginRight="50%",e="4px"===d.marginRight,Ea.removeChild(g)}n.extend(l,{pixelPosition:function(){return i(),b},boxSizingReliable:function(){return null==c&&i(),c},pixelMarginRight:function(){return null==c&&i(),e},reliableMarginLeft:function(){return null==c&&i(),f},reliableMarginRight:function(){var b,c=h.appendChild(d.createElement("div"));return c.style.cssText=h.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",h.style.width="1px",Ea.appendChild(g),b=!parseFloat(a.getComputedStyle(c).marginRight),Ea.removeChild(g),h.removeChild(c),b}})}}();function Fa(a,b,c){var d,e,f,g,h=a.style;return c=c||Ca(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Ba.test(g)&&Aa.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0!==g?g+"":g}function Ga(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Ha=/^(none|table(?!-c[ea]).+)/,Ia={position:"absolute",visibility:"hidden",display:"block"},Ja={letterSpacing:"0",fontWeight:"400"},Ka=["Webkit","O","Moz","ms"],La=d.createElement("div").style;function Ma(a){if(a in La)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ka.length;while(c--)if(a=Ka[c]+b,a in La)return a}function Na(a,b,c){var d=T.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Oa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Pa(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ca(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Fa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ba.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Oa(a,b,c||(g?"border":"content"),d,f)+"px"}function Qa(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=N.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=N.access(d,"olddisplay",za(d.nodeName)))):(e=V(d),"none"===c&&e||N.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Fa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=T.exec(c))&&e[1]&&(c=W(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Fa(a,b,d)),"normal"===e&&b in Ja&&(e=Ja[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Ha.test(n.css(a,"display"))&&0===a.offsetWidth?Da(a,Ia,function(){return Pa(a,b,d)}):Pa(a,b,d):void 0},set:function(a,c,d){var e,f=d&&Ca(a),g=d&&Oa(a,b,d,"border-box"===n.css(a,"boxSizing",!1,f),f);return g&&(e=T.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=n.css(a,b)),Na(a,c,g)}}}),n.cssHooks.marginLeft=Ga(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Fa(a,"marginLeft"))||a.getBoundingClientRect().left-Da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px":void 0}),n.cssHooks.marginRight=Ga(l.reliableMarginRight,function(a,b){return b?Da(a,{display:"inline-block"},Fa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Aa.test(a)||(n.cssHooks[a+b].set=Na)}),n.fn.extend({css:function(a,b){return K(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ca(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Qa(this,!0)},hide:function(){return Qa(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function Ra(a,b,c,d,e){return new Ra.prototype.init(a,b,c,d,e)}n.Tween=Ra,Ra.prototype={constructor:Ra,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ra.propHooks[this.prop];return a&&a.get?a.get(this):Ra.propHooks._default.get(this)},run:function(a){var b,c=Ra.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ra.propHooks._default.set(this),this}},Ra.prototype.init.prototype=Ra.prototype,Ra.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},Ra.propHooks.scrollTop=Ra.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=Ra.prototype.init,n.fx.step={};var Sa,Ta,Ua=/^(?:toggle|show|hide)$/,Va=/queueHooks$/;function Wa(){return a.setTimeout(function(){Sa=void 0}),Sa=n.now()}function Xa(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=U[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ya(a,b,c){for(var d,e=(_a.tweeners[b]||[]).concat(_a.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Za(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&V(a),q=N.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?N.get(a,"olddisplay")||za(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Ua.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?za(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=N.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;N.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ya(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function $a(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function _a(a,b,c){var d,e,f=0,g=_a.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Sa||Wa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:Sa||Wa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for($a(k,j.opts.specialEasing);g>f;f++)if(d=_a.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,Ya,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(_a,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return W(c.elem,a,T.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],_a.tweeners[c]=_a.tweeners[c]||[],_a.tweeners[c].unshift(b)},prefilters:[Za],prefilter:function(a,b){b?_a.prefilters.unshift(a):_a.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=_a(this,n.extend({},a),f);(e||N.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=N.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Va.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=N.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Xa(b,!0),a,d,e)}}),n.each({slideDown:Xa("show"),slideUp:Xa("hide"),slideToggle:Xa("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Sa=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Sa=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ta||(Ta=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(Ta),Ta=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",l.checkOn=""!==a.value,l.optSelected=c.selected,b.disabled=!0,l.optDisabled=!c.disabled,a=d.createElement("input"),a.value="t",a.type="radio",l.radioValue="t"===a.value}();var ab,bb=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return K(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ab:void 0)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)}}),ab={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=bb[b]||n.find.attr;bb[b]=function(a,b,d){var e,f;return d||(f=bb[b],bb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,bb[b]=f),e}});var cb=/^(?:input|select|textarea|button)$/i,db=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return K(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]), -void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):cb.test(a.nodeName)||db.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var eb=/[\t\r\n\f]/g;function fb(a){return a.getAttribute&&a.getAttribute("class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,fb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,fb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,fb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=fb(this),b&&N.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":N.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+fb(c)+" ").replace(eb," ").indexOf(b)>-1)return!0;return!1}});var gb=/\r/g,hb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(gb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(hb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(n.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var ib=/^(?:focusinfocus|focusoutblur)$/;n.extend(n.event,{trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!ib.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),l=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},f||!o.trigger||o.trigger.apply(e,c)!==!1)){if(!f&&!o.noBubble&&!n.isWindow(e)){for(j=o.delegateType||q,ib.test(j+q)||(h=h.parentNode);h;h=h.parentNode)p.push(h),i=h;i===(e.ownerDocument||d)&&p.push(i.defaultView||i.parentWindow||a)}g=0;while((h=p[g++])&&!b.isPropagationStopped())b.type=g>1?j:o.bindType||q,m=(N.get(h,"events")||{})[b.type]&&N.get(h,"handle"),m&&m.apply(h,c),m=l&&h[l],m&&m.apply&&L(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=q,f||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!L(e)||l&&n.isFunction(e[q])&&!n.isWindow(e)&&(i=e[l],i&&(e[l]=null),n.event.triggered=q,e[q](),n.event.triggered=void 0,i&&(e[l]=i)),b.result}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b)}}),n.fn.extend({trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),l.focusin="onfocusin"in a,l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=N.access(d,b);e||d.addEventListener(a,c,!0),N.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=N.access(d,b)-1;e?N.access(d,b,e):(d.removeEventListener(a,c,!0),N.remove(d,b))}}});var jb=a.location,kb=n.now(),lb=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var mb=/#.*$/,nb=/([?&])_=[^&]*/,ob=/^(.*?):[ \t]*([^\r\n]*)$/gm,pb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,qb=/^(?:GET|HEAD)$/,rb=/^\/\//,sb={},tb={},ub="*/".concat("*"),vb=d.createElement("a");vb.href=jb.href;function wb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function xb(a,b,c,d){var e={},f=a===tb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function yb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function zb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Ab(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:jb.href,type:"GET",isLocal:pb.test(jb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ub,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?yb(yb(a,n.ajaxSettings),b):yb(n.ajaxSettings,a)},ajaxPrefilter:wb(sb),ajaxTransport:wb(tb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m=n.ajaxSetup({},c),o=m.context||m,p=m.context&&(o.nodeType||o.jquery)?n(o):n.event,q=n.Deferred(),r=n.Callbacks("once memory"),s=m.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,getResponseHeader:function(a){var b;if(2===v){if(!h){h={};while(b=ob.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===v?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return v||(a=u[c]=u[c]||a,t[a]=b),this},overrideMimeType:function(a){return v||(m.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>v)for(b in a)s[b]=[s[b],a[b]];else x.always(a[x.status]);return this},abort:function(a){var b=a||w;return e&&e.abort(b),z(0,b),this}};if(q.promise(x).complete=r.add,x.success=x.done,x.error=x.fail,m.url=((b||m.url||jb.href)+"").replace(mb,"").replace(rb,jb.protocol+"//"),m.type=c.method||c.type||m.method||m.type,m.dataTypes=n.trim(m.dataType||"*").toLowerCase().match(G)||[""],null==m.crossDomain){j=d.createElement("a");try{j.href=m.url,j.href=j.href,m.crossDomain=vb.protocol+"//"+vb.host!=j.protocol+"//"+j.host}catch(y){m.crossDomain=!0}}if(m.data&&m.processData&&"string"!=typeof m.data&&(m.data=n.param(m.data,m.traditional)),xb(sb,m,c,x),2===v)return x;k=n.event&&m.global,k&&0===n.active++&&n.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!qb.test(m.type),f=m.url,m.hasContent||(m.data&&(f=m.url+=(lb.test(f)?"&":"?")+m.data,delete m.data),m.cache===!1&&(m.url=nb.test(f)?f.replace(nb,"$1_="+kb++):f+(lb.test(f)?"&":"?")+"_="+kb++)),m.ifModified&&(n.lastModified[f]&&x.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&x.setRequestHeader("If-None-Match",n.etag[f])),(m.data&&m.hasContent&&m.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",m.contentType),x.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+ub+"; q=0.01":""):m.accepts["*"]);for(l in m.headers)x.setRequestHeader(l,m.headers[l]);if(m.beforeSend&&(m.beforeSend.call(o,x,m)===!1||2===v))return x.abort();w="abort";for(l in{success:1,error:1,complete:1})x[l](m[l]);if(e=xb(tb,m,c,x)){if(x.readyState=1,k&&p.trigger("ajaxSend",[x,m]),2===v)return x;m.async&&m.timeout>0&&(i=a.setTimeout(function(){x.abort("timeout")},m.timeout));try{v=1,e.send(t,z)}catch(y){if(!(2>v))throw y;z(-1,y)}}else z(-1,"No Transport");function z(b,c,d,h){var j,l,t,u,w,y=c;2!==v&&(v=2,i&&a.clearTimeout(i),e=void 0,g=h||"",x.readyState=b>0?4:0,j=b>=200&&300>b||304===b,d&&(u=zb(m,x,d)),u=Ab(m,u,x,j),j?(m.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(n.lastModified[f]=w),w=x.getResponseHeader("etag"),w&&(n.etag[f]=w)),204===b||"HEAD"===m.type?y="nocontent":304===b?y="notmodified":(y=u.state,l=u.data,t=u.error,j=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),x.status=b,x.statusText=(c||y)+"",j?q.resolveWith(o,[l,y,x]):q.rejectWith(o,[x,y,t]),x.statusCode(s),s=void 0,k&&p.trigger(j?"ajaxSuccess":"ajaxError",[x,m,j?l:t]),r.fireWith(o,[x,y]),k&&(p.trigger("ajaxComplete",[x,m]),--n.active||n.event.trigger("ajaxStop")))}return x},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return!n.expr.filters.visible(a)},n.expr.filters.visible=function(a){return a.offsetWidth>0||a.offsetHeight>0||a.getClientRects().length>0};var Bb=/%20/g,Cb=/\[\]$/,Db=/\r?\n/g,Eb=/^(?:submit|button|image|reset|file)$/i,Fb=/^(?:input|select|textarea|keygen)/i;function Gb(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Cb.test(a)?d(a,e):Gb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Gb(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Gb(c,a[c],b,e);return d.join("&").replace(Bb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Fb.test(this.nodeName)&&!Eb.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Db,"\r\n")}}):{name:b.name,value:c.replace(Db,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Hb={0:200,1223:204},Ib=n.ajaxSettings.xhr();l.cors=!!Ib&&"withCredentials"in Ib,l.ajax=Ib=!!Ib,n.ajaxTransport(function(b){var c,d;return l.cors||Ib&&!b.crossDomain?{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Hb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=n("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Jb=[],Kb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Jb.pop()||n.expando+"_"+kb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Kb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Kb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Kb,"$1"+e):b.jsonp!==!1&&(b.url+=(lb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Jb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ca([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var Lb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Lb)return Lb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function Mb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(e=d.getBoundingClientRect(),c=Mb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ea})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;n.fn[a]=function(d){return K(this,function(a,d,e){var f=Mb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ga(l.pixelPosition,function(a,c){return c?(c=Fa(a,b),Ba.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return K(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},size:function(){return this.length}}),n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Nb=a.jQuery,Ob=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Ob),b&&a.jQuery===n&&(a.jQuery=Nb),n},b||(a.jQuery=a.$=n),n}); - +/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ +return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)), +void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n}); +//# sourceMappingURL=jquery.min.map /*! jQuery Migrate v1.4.0 | (c) jQuery Foundation and other contributors | jquery.org/license */ "undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(a,b,c){function d(c){var d=b.console;f[c]||(f[c]=!0,a.migrateWarnings.push(c),d&&d.warn&&!a.migrateMute&&(d.warn("JQMIGRATE: "+c),a.migrateTrace&&d.trace&&d.trace()))}function e(b,c,e,f){if(Object.defineProperty)try{return void Object.defineProperty(b,c,{configurable:!0,enumerable:!0,get:function(){return d(f),e},set:function(a){d(f),e=a}})}catch(g){}a._definePropertyBroken=!0,b[c]=e}a.migrateVersion="1.4.0";var f={};a.migrateWarnings=[],b.console&&b.console.log&&b.console.log("JQMIGRATE: Migrate is installed"+(a.migrateMute?"":" with logging active")+", version "+a.migrateVersion),a.migrateTrace===c&&(a.migrateTrace=!0),a.migrateReset=function(){f={},a.migrateWarnings.length=0},"BackCompat"===document.compatMode&&d("jQuery is not compatible with Quirks Mode");var g=a("<input/>",{size:1}).attr("size")&&a.attrFn,h=a.attr,i=a.attrHooks.value&&a.attrHooks.value.get||function(){return null},j=a.attrHooks.value&&a.attrHooks.value.set||function(){return c},k=/^(?:input|button)$/i,l=/^[238]$/,m=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,n=/^(?:checked|selected)$/i;e(a,"attrFn",g||{},"jQuery.attrFn is deprecated"),a.attr=function(b,e,f,i){var j=e.toLowerCase(),o=b&&b.nodeType;return i&&(h.length<4&&d("jQuery.fn.attr( props, pass ) is deprecated"),b&&!l.test(o)&&(g?e in g:a.isFunction(a.fn[e])))?a(b)[e](f):("type"===e&&f!==c&&k.test(b.nodeName)&&b.parentNode&&d("Can't change the 'type' of an input or button in IE 6/7/8"),!a.attrHooks[j]&&m.test(j)&&(a.attrHooks[j]={get:function(b,d){var e,f=a.prop(b,d);return f===!0||"boolean"!=typeof f&&(e=b.getAttributeNode(d))&&e.nodeValue!==!1?d.toLowerCase():c},set:function(b,c,d){var e;return c===!1?a.removeAttr(b,d):(e=a.propFix[d]||d,e in b&&(b[e]=!0),b.setAttribute(d,d.toLowerCase())),d}},n.test(j)&&d("jQuery.fn.attr('"+j+"') might use property instead of attribute")),h.call(a,b,e,f))},a.attrHooks.value={get:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?i.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value') no longer gets properties"),b in a?a.value:null)},set:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?j.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value', val) no longer sets properties"),void(a.value=b))}};var o,p,q=a.fn.init,r=a.parseJSON,s=/^\s*</,t=/\[\s*\w+\s*[~|^$*]?=\s*(?![\s'"])[^#\]]*#/,u=/^([^<]*)(<[\w\W]+>)([^>]*)$/;a.fn.init=function(b,e,f){var g,h;return b&&"string"==typeof b&&!a.isPlainObject(e)&&(g=u.exec(a.trim(b)))&&g[0]&&(s.test(b)||d("$(html) HTML strings must start with '<' character"),g[3]&&d("$(html) HTML text after last tag is ignored"),"#"===g[0].charAt(0)&&(d("HTML string cannot start with a '#' character"),a.error("JQMIGRATE: Invalid selector string (XSS)")),e&&e.context&&(e=e.context),a.parseHTML)?q.call(this,a.parseHTML(g[2],e&&e.ownerDocument||e||document,!0),e,f):("#"===b?(d("jQuery( '#' ) is not a valid selector"),b=[]):t.test(b)&&d("Attribute selectors with '#' must be quoted: '"+b+"'"),h=q.apply(this,arguments),b&&b.selector!==c?(h.selector=b.selector,h.context=b.context):(h.selector="string"==typeof b?b:"",b&&(h.context=b.nodeType?b:e||document)),h)},a.fn.init.prototype=a.fn,a.parseJSON=function(a){return a?r.apply(this,arguments):(d("jQuery.parseJSON requires a valid JSON string"),null)},a.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a.browser||(o=a.uaMatch(navigator.userAgent),p={},o.browser&&(p[o.browser]=!0,p.version=o.version),p.chrome?p.webkit=!0:p.webkit&&(p.safari=!0),a.browser=p),e(a,"browser",a.browser,"jQuery.browser is deprecated"),a.boxModel=a.support.boxModel="CSS1Compat"===document.compatMode,e(a,"boxModel",a.boxModel,"jQuery.boxModel is deprecated"),e(a.support,"boxModel",a.support.boxModel,"jQuery.support.boxModel is deprecated"),a.sub=function(){function b(a,c){return new b.fn.init(a,c)}a.extend(!0,b,this),b.superclass=this,b.fn=b.prototype=this(),b.fn.constructor=b,b.sub=this.sub,b.fn.init=function(d,e){var f=a.fn.init.call(this,d,e,c);return f instanceof b?f:b(f)},b.fn.init.prototype=b.fn;var c=b(document);return d("jQuery.sub() is deprecated"),b},a.fn.size=function(){return d("jQuery.fn.size() is deprecated; use the .length property"),this.length};var v=!1;a.swap&&a.each(["height","width","reliableMarginRight"],function(b,c){var d=a.cssHooks[c]&&a.cssHooks[c].get;d&&(a.cssHooks[c].get=function(){var a;return v=!0,a=d.apply(this,arguments),v=!1,a})}),a.swap=function(a,b,c,e){var f,g,h={};v||d("jQuery.swap() is undocumented and deprecated");for(g in b)h[g]=a.style[g],a.style[g]=b[g];f=c.apply(a,e||[]);for(g in b)a.style[g]=h[g];return f},a.ajaxSetup({converters:{"text json":a.parseJSON}});var w=a.fn.data;a.fn.data=function(b){var e,f,g=this[0];return!g||"events"!==b||1!==arguments.length||(e=a.data(g,b),f=a._data(g,b),e!==c&&e!==f||f===c)?w.apply(this,arguments):(d("Use of jQuery.fn.data('events') is deprecated"),f)};var x=/\/(java|ecma)script/i;a.clean||(a.clean=function(b,c,e,f){c=c||document,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,d("jQuery.clean() is deprecated");var g,h,i,j,k=[];if(a.merge(k,a.buildFragment(b,c).childNodes),e)for(i=function(a){return!a.type||x.test(a.type)?f?f.push(a.parentNode?a.parentNode.removeChild(a):a):e.appendChild(a):void 0},g=0;null!=(h=k[g]);g++)a.nodeName(h,"script")&&i(h)||(e.appendChild(h),"undefined"!=typeof h.getElementsByTagName&&(j=a.grep(a.merge([],h.getElementsByTagName("script")),i),k.splice.apply(k,[g+1,0].concat(j)),g+=j.length));return k});var y=a.event.add,z=a.event.remove,A=a.event.trigger,B=a.fn.toggle,C=a.fn.live,D=a.fn.die,E=a.fn.load,F="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",G=new RegExp("\\b(?:"+F+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,I=function(b){return"string"!=typeof b||a.event.special.hover?b:(H.test(b)&&d("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),b&&b.replace(H,"mouseenter$1 mouseleave$1"))};a.event.props&&"attrChange"!==a.event.props[0]&&a.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),a.event.dispatch&&e(a.event,"handle",a.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),a.event.add=function(a,b,c,e,f){a!==document&&G.test(b)&&d("AJAX events should be attached to document: "+b),y.call(this,a,I(b||""),c,e,f)},a.event.remove=function(a,b,c,d,e){z.call(this,a,I(b)||"",c,d,e)},a.each(["load","unload","error"],function(b,c){a.fn[c]=function(){var a=Array.prototype.slice.call(arguments,0);return"load"===c&&"string"==typeof a[0]?E.apply(this,a):(d("jQuery.fn."+c+"() is deprecated"),a.splice(0,0,c),arguments.length?this.bind.apply(this,a):(this.triggerHandler.apply(this,a),this))}}),a.fn.toggle=function(b,c){if(!a.isFunction(b)||!a.isFunction(c))return B.apply(this,arguments);d("jQuery.fn.toggle(handler, handler...) is deprecated");var e=arguments,f=b.guid||a.guid++,g=0,h=function(c){var d=(a._data(this,"lastToggle"+b.guid)||0)%g;return a._data(this,"lastToggle"+b.guid,d+1),c.preventDefault(),e[d].apply(this,arguments)||!1};for(h.guid=f;g<e.length;)e[g++].guid=f;return this.click(h)},a.fn.live=function(b,c,e){return d("jQuery.fn.live() is deprecated"),C?C.apply(this,arguments):(a(this.context).on(b,this.selector,c,e),this)},a.fn.die=function(b,c){return d("jQuery.fn.die() is deprecated"),D?D.apply(this,arguments):(a(this.context).off(b,this.selector||"**",c),this)},a.event.trigger=function(a,b,c,e){return c||G.test(a)||d("Global events are undocumented and deprecated"),A.call(this,a,b,c||document,e)},a.each(F.split("|"),function(b,c){a.event.special[c]={setup:function(){var b=this;return b!==document&&(a.event.add(document,c+"."+a.guid,function(){a.event.trigger(c,Array.prototype.slice.call(arguments,1),b,!0)}),a._data(this,c,a.guid++)),!1},teardown:function(){return this!==document&&a.event.remove(document,c+"."+a._data(this,c)),!1}}}),a.event.special.ready={setup:function(){this===document&&d("'ready' event is deprecated")}};var J=a.fn.andSelf||a.fn.addBack,K=a.fn.find;if(a.fn.andSelf=function(){return d("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),J.apply(this,arguments)},a.fn.find=function(a){var b=K.apply(this,arguments);return b.context=this.context,b.selector=this.selector?this.selector+" "+a:a,b},a.Callbacks){var L=a.Deferred,M=[["resolve","done",a.Callbacks("once memory"),a.Callbacks("once memory"),"resolved"],["reject","fail",a.Callbacks("once memory"),a.Callbacks("once memory"),"rejected"],["notify","progress",a.Callbacks("memory"),a.Callbacks("memory")]];a.Deferred=function(b){var c=L(),e=c.promise();return c.pipe=e.pipe=function(){var b=arguments;return d("deferred.pipe() is deprecated"),a.Deferred(function(d){a.each(M,function(f,g){var h=a.isFunction(b[f])&&b[f];c[g[1]](function(){var b=h&&h.apply(this,arguments);b&&a.isFunction(b.promise)?b.promise().done(d.resolve).fail(d.reject).progress(d.notify):d[g[0]+"With"](this===e?d.promise():this,h?[b]:arguments)})}),b=null}).promise()},c.isResolved=function(){return d("deferred.isResolved is deprecated"),"resolved"===c.state()},c.isRejected=function(){return d("deferred.isRejected is deprecated"),"rejected"===c.state()},b&&b.call(c,c),c}}}(jQuery,window); /*! jQuery UI - v1.10.0 - 2013-01-18 @@ -5948,7 +5948,7 @@ dav.Client.prototype = { http://www.jacklmoore.com/autosize */ !function(e,t){if("function"==typeof define&&define.amd)define(["exports","module"],t);else if("undefined"!=typeof exports&&"undefined"!=typeof module)t(exports,module);else{var n={exports:{}};t(n.exports,n),e.autosize=n.exports}}(this,function(e,t){"use strict";function n(e){function t(){var t=window.getComputedStyle(e,null);"vertical"===t.resize?e.style.resize="none":"both"===t.resize&&(e.style.resize="horizontal"),s="content-box"===t.boxSizing?-(parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)):parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),isNaN(s)&&(s=0),l()}function n(t){var n=e.style.width;e.style.width="0px",e.offsetWidth,e.style.width=n,e.style.overflowY=t}function o(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}function r(){var t=e.style.height,n=o(e),r=document.documentElement&&document.documentElement.scrollTop;e.style.height="auto";var i=e.scrollHeight+s;return 0===e.scrollHeight?void(e.style.height=t):(e.style.height=i+"px",u=e.clientWidth,n.forEach(function(e){e.node.scrollTop=e.scrollTop}),void(r&&(document.documentElement.scrollTop=r)))}function l(){r();var t=Math.round(parseFloat(e.style.height)),o=window.getComputedStyle(e,null),i=Math.round(parseFloat(o.height));if(i!==t?"visible"!==o.overflowY&&(n("visible"),r(),i=Math.round(parseFloat(window.getComputedStyle(e,null).height))):"hidden"!==o.overflowY&&(n("hidden"),r(),i=Math.round(parseFloat(window.getComputedStyle(e,null).height))),a!==i){a=i;var l=d("autosize:resized");try{e.dispatchEvent(l)}catch(e){}}}if(e&&e.nodeName&&"TEXTAREA"===e.nodeName&&!i.has(e)){var s=null,u=e.clientWidth,a=null,p=function(){e.clientWidth!==u&&l()},c=function(t){window.removeEventListener("resize",p,!1),e.removeEventListener("input",l,!1),e.removeEventListener("keyup",l,!1),e.removeEventListener("autosize:destroy",c,!1),e.removeEventListener("autosize:update",l,!1),Object.keys(t).forEach(function(n){e.style[n]=t[n]}),i.delete(e)}.bind(e,{height:e.style.height,resize:e.style.resize,overflowY:e.style.overflowY,overflowX:e.style.overflowX,wordWrap:e.style.wordWrap});e.addEventListener("autosize:destroy",c,!1),"onpropertychange"in e&&"oninput"in e&&e.addEventListener("keyup",l,!1),window.addEventListener("resize",p,!1),e.addEventListener("input",l,!1),e.addEventListener("autosize:update",l,!1),e.style.overflowX="hidden",e.style.wordWrap="break-word",i.set(e,{destroy:c,update:l}),t()}}function o(e){var t=i.get(e);t&&t.destroy()}function r(e){var t=i.get(e);t&&t.update()}var i="function"==typeof Map?new Map:function(){var e=[],t=[];return{has:function(t){return e.indexOf(t)>-1},get:function(n){return t[e.indexOf(n)]},set:function(n,o){e.indexOf(n)===-1&&(e.push(n),t.push(o))},delete:function(n){var o=e.indexOf(n);o>-1&&(e.splice(o,1),t.splice(o,1))}}}(),d=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){d=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}var l=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?(l=function(e){return e},l.destroy=function(e){return e},l.update=function(e){return e}):(l=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return n(e,t)}),e},l.destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e},l.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],r),e}),t.exports=l}); -(function(e){"use strict";var t=typeof window==="undefined"?null:window;if(typeof define==="function"&&define.amd){define(function(){return e(t)})}else if(typeof module!=="undefined"){module.exports=e(t)}else{t.DOMPurify=e(t)}})(function e(t){"use strict";var r=function(t){return e(t)};r.version="0.8.5";r.removed=[];if(!t||!t.document||t.document.nodeType!==9){r.isSupported=false;return r}var n=t.document;var a=n;var i=t.DocumentFragment;var o=t.HTMLTemplateElement;var l=t.Node;var s=t.NodeFilter;var f=t.NamedNodeMap||t.MozNamedAttrMap;var c=t.Text;var u=t.Comment;var d=t.DOMParser;if(typeof o==="function"){var m=n.createElement("template");if(m.content&&m.content.ownerDocument){n=m.content.ownerDocument}}var p=n.implementation;var v=n.createNodeIterator;var h=n.getElementsByTagName;var g=n.createDocumentFragment;var y=a.importNode;var b={};r.isSupported=typeof p.createHTMLDocument!=="undefined"&&n.documentMode!==9;var T=function(e,t){var r=t.length;while(r--){if(typeof t[r]==="string"){t[r]=t[r].toLowerCase()}e[t[r]]=true}return e};var A=function(e){var t={};var r;for(r in e){if(e.hasOwnProperty(r)){t[r]=e[r]}}return t};var x=null;var k=T({},["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr","svg","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","switch","symbol","text","textpath","title","tref","tspan","view","vkern","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmuliscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mpspace","msqrt","mystyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","#text"]);var w=null;var E=T({},["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","coords","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","rows","rowspan","spellcheck","scope","selected","shape","size","span","srclang","start","src","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns","accent-height","accumulate","additivive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mode","min","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","surfacescale","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","u1","u2","unicode","values","viewbox","visibility","vert-adv-y","vert-origin-x","vert-origin-y","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","y","y1","y2","z","zoomandpan","accent","accentunder","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","display","displaystyle","fence","frame","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]);var S=null;var N=null;var D=true;var M=false;var O=false;var L=false;var _=/\{\{[\s\S]*|[\s\S]*\}\}/gm;var C=/<%[\s\S]*|[\s\S]*%>/gm;var R=false;var z=false;var F=false;var H=false;var j=true;var B=true;var I=T({},["audio","head","math","script","style","svg","video"]);var W=T({},["audio","video","img","source"]);var G=T({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]);var q=null;var P=n.createElement("form");var U=function(e){if(typeof e!=="object"){e={}}x="ALLOWED_TAGS"in e?T({},e.ALLOWED_TAGS):k;w="ALLOWED_ATTR"in e?T({},e.ALLOWED_ATTR):E;S="FORBID_TAGS"in e?T({},e.FORBID_TAGS):{};N="FORBID_ATTR"in e?T({},e.FORBID_ATTR):{};D=e.ALLOW_DATA_ATTR!==false;M=e.ALLOW_UNKNOWN_PROTOCOLS||false;O=e.SAFE_FOR_JQUERY||false;L=e.SAFE_FOR_TEMPLATES||false;R=e.WHOLE_DOCUMENT||false;z=e.RETURN_DOM||false;F=e.RETURN_DOM_FRAGMENT||false;H=e.RETURN_DOM_IMPORT||false;j=e.SANITIZE_DOM!==false;B=e.KEEP_CONTENT!==false;if(L){D=false}if(F){z=true}if(e.ADD_TAGS){if(x===k){x=A(x)}T(x,e.ADD_TAGS)}if(e.ADD_ATTR){if(w===E){w=A(w)}T(w,e.ADD_ATTR)}if(e.ADD_URI_SAFE_ATTR){T(G,e.ADD_URI_SAFE_ATTR)}if(B){x["#text"]=true}if(Object&&"freeze"in Object){Object.freeze(e)}q=e};var V=function(e){r.removed.push({element:e});try{e.parentNode.removeChild(e)}catch(t){e.outerHTML=""}};var K=function(e,t){r.removed.push({attribute:t.getAttributeNode(e),from:t});t.removeAttribute(e)};var Y=function(e){var t,r;try{t=(new d).parseFromString(e,"text/html")}catch(n){}if(!t||!t.documentElement){t=p.createHTMLDocument("");r=t.body;r.parentNode.removeChild(r.parentNode.firstElementChild);r.outerHTML=e}if(typeof t.getElementsByTagName==="function"){return t.getElementsByTagName(R?"html":"body")[0]}return h.call(t,R?"html":"body")[0]};var J=function(e){return v.call(e.ownerDocument||e,e,s.SHOW_ELEMENT|s.SHOW_COMMENT|s.SHOW_TEXT,function(){return s.FILTER_ACCEPT},false)};var Q=function(e){if(e instanceof c||e instanceof u){return false}if(typeof e.nodeName!=="string"||typeof e.textContent!=="string"||typeof e.removeChild!=="function"||!(e.attributes instanceof f)||typeof e.removeAttribute!=="function"||typeof e.setAttribute!=="function"){return true}return false};var X=function(e){return typeof l==="object"?e instanceof l:e&&typeof e==="object"&&typeof e.nodeType==="number"&&typeof e.nodeName==="string"};var Z=function(e){var t,n;ie("beforeSanitizeElements",e,null);if(Q(e)){V(e);return true}t=e.nodeName.toLowerCase();ie("uponSanitizeElement",e,{tagName:t,allowedTags:x});if(!x[t]||S[t]){if(B&&!I[t]&&typeof e.insertAdjacentHTML==="function"){try{e.insertAdjacentHTML("AfterEnd",e.innerHTML)}catch(a){}}V(e);return true}if(O&&!e.firstElementChild&&(!e.content||!e.content.firstElementChild)&&/</g.test(e.textContent)){r.removed.push({element:e.cloneNode()});e.innerHTML=e.textContent.replace(/</g,"<")}if(L&&e.nodeType===3){n=e.textContent;n=n.replace(_," ");n=n.replace(C," ");if(e.textContent!==n){r.removed.push({element:e.cloneNode()});e.textContent=n}}ie("afterSanitizeElements",e,null);return false};var $=/^data-[\-\w.\u00B7-\uFFFF]/;var ee=/^(?:(?:(?:f|ht)tps?|mailto|tel):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i;var te=/^(?:\w+script|data):/i;var re=/[\x00-\x20\xA0\u1680\u180E\u2000-\u2029\u205f\u3000]/g;var ne=function(e){var a,i,o,l,s,f,c,u;ie("beforeSanitizeAttributes",e,null);f=e.attributes;if(!f){return}c={attrName:"",attrValue:"",keepAttr:true,allowedAttributes:w};u=f.length;while(u--){a=f[u];i=a.name;o=a.value.trim();l=i.toLowerCase();c.attrName=l;c.attrValue=o;c.keepAttr=true;ie("uponSanitizeAttribute",e,c);o=c.attrValue;if(l==="name"&&e.nodeName==="IMG"&&f.id){s=f.id;f=Array.prototype.slice.apply(f);K("id",e);K(i,e);if(f.indexOf(s)>u){e.setAttribute("id",s.value)}}else{if(i==="id"){e.setAttribute(i,"")}K(i,e)}if(!c.keepAttr){continue}if(j&&(l==="id"||l==="name")&&(o in t||o in n||o in P)){continue}if(L){o=o.replace(_," ");o=o.replace(C," ")}if(D&&$.test(l)){}else if(!w[l]||N[l]){continue}else if(G[l]){}else if(ee.test(o.replace(re,""))){}else if(l==="src"&&o.indexOf("data:")===0&&W[e.nodeName.toLowerCase()]){}else if(M&&!te.test(o.replace(re,""))){}else if(!o){}else{continue}try{e.setAttribute(i,o);r.removed.pop()}catch(d){}}ie("afterSanitizeAttributes",e,null)};var ae=function(e){var t;var r=J(e);ie("beforeSanitizeShadowDOM",e,null);while(t=r.nextNode()){ie("uponSanitizeShadowNode",t,null);if(Z(t)){continue}if(t.content instanceof i){ae(t.content)}ne(t)}ie("afterSanitizeShadowDOM",e,null)};var ie=function(e,t,n){if(!b[e]){return}b[e].forEach(function(e){e.call(r,t,n,q)})};r.sanitize=function(e,n){var o,s,f,c,u,d;if(!e){e="<!-->"}if(typeof e!=="string"&&!X(e)){if(typeof e.toString!=="function"){throw new TypeError("toString is not a function")}else{e=e.toString()}}if(!r.isSupported){if(typeof t.toStaticHTML==="object"||typeof t.toStaticHTML==="function"){if(typeof e==="string"){return t.toStaticHTML(e)}else if(X(e)){return t.toStaticHTML(e.outerHTML)}}return e}U(n);r.removed=[];if(e instanceof l){o=Y("<!-->");s=o.ownerDocument.importNode(e,true);if(s.nodeType===1&&s.nodeName==="BODY"){o=s}else{o.appendChild(s)}}else{if(!z&&!R&&e.indexOf("<")===-1){return e}o=Y(e);if(!o){return z?null:""}}u=J(o);while(f=u.nextNode()){if(f.nodeType===3&&f===c){continue}if(Z(f)){continue}if(f.content instanceof i){ae(f.content)}ne(f);c=f}if(z){if(F){d=g.call(o.ownerDocument);while(o.firstChild){d.appendChild(o.firstChild)}}else{d=o}if(H){d=y.call(a,d,true)}return d}return R?o.outerHTML:o.innerHTML};r.addHook=function(e,t){if(typeof t!=="function"){return}b[e]=b[e]||[];b[e].push(t)};r.removeHook=function(e){if(b[e]){b[e].pop()}};r.removeHooks=function(e){if(b[e]){b[e]=[]}};r.removeAllHooks=function(){b={}};return r}); +(function(e){"use strict";var t=typeof window==="undefined"?null:window;if(typeof define==="function"&&define.amd){define(function(){return e(t)})}else if(typeof module!=="undefined"){module.exports=e(t)}else{t.DOMPurify=e(t)}})(function e(t){"use strict";var r=function(t){return e(t)};r.version="0.8.6";r.removed=[];if(!t||!t.document||t.document.nodeType!==9){r.isSupported=false;return r}var n=t.document;var a=n;var i=t.DocumentFragment;var o=t.HTMLTemplateElement;var l=t.Node;var s=t.NodeFilter;var f=t.NamedNodeMap||t.MozNamedAttrMap;var c=t.Text;var u=t.Comment;if(typeof o==="function"){var d=n.createElement("template");if(d.content&&d.content.ownerDocument){n=d.content.ownerDocument}}var m=n.implementation;var p=n.createNodeIterator;var v=n.getElementsByTagName;var h=n.createDocumentFragment;var g=a.importNode;var y={};r.isSupported=typeof m.createHTMLDocument!=="undefined"&&n.documentMode!==9;var T=function(e,t){var r=t.length;while(r--){if(typeof t[r]==="string"){t[r]=t[r].toLowerCase()}e[t[r]]=true}return e};var b=function(e){var t={};var r;for(r in e){if(e.hasOwnProperty(r)){t[r]=e[r]}}return t};var A=null;var x=T({},["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr","svg","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","switch","symbol","text","textpath","title","tref","tspan","view","vkern","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmuliscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mpspace","msqrt","mystyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","#text"]);var k=null;var w=T({},["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","coords","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","span","srclang","start","src","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns","accent-height","accumulate","additivive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mode","min","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","surfacescale","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","u1","u2","unicode","values","viewbox","visibility","vert-adv-y","vert-origin-x","vert-origin-y","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","y","y1","y2","z","zoomandpan","accent","accentunder","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","display","displaystyle","fence","frame","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]);var E=null;var N=null;var O=true;var S=true;var D=false;var L=false;var M=false;var _=/\{\{[\s\S]*|[\s\S]*\}\}/gm;var C=/<%[\s\S]*|[\s\S]*%>/gm;var R=false;var z=false;var F=false;var H=false;var I=false;var B=true;var j=true;var W=T({},["audio","head","math","script","style","svg","video"]);var G=T({},["audio","video","img","source","image"]);var U=T({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]);var q=null;var P=n.createElement("form");var V=function(e){if(typeof e!=="object"){e={}}A="ALLOWED_TAGS"in e?T({},e.ALLOWED_TAGS):x;k="ALLOWED_ATTR"in e?T({},e.ALLOWED_ATTR):w;E="FORBID_TAGS"in e?T({},e.FORBID_TAGS):{};N="FORBID_ATTR"in e?T({},e.FORBID_ATTR):{};O=e.ALLOW_ARIA_ATTR!==false;S=e.ALLOW_DATA_ATTR!==false;D=e.ALLOW_UNKNOWN_PROTOCOLS||false;L=e.SAFE_FOR_JQUERY||false;M=e.SAFE_FOR_TEMPLATES||false;R=e.WHOLE_DOCUMENT||false;F=e.RETURN_DOM||false;H=e.RETURN_DOM_FRAGMENT||false;I=e.RETURN_DOM_IMPORT||false;z=e.FORCE_BODY||false;B=e.SANITIZE_DOM!==false;j=e.KEEP_CONTENT!==false;if(M){S=false}if(H){F=true}if(e.ADD_TAGS){if(A===x){A=b(A)}T(A,e.ADD_TAGS)}if(e.ADD_ATTR){if(k===w){k=b(k)}T(k,e.ADD_ATTR)}if(e.ADD_URI_SAFE_ATTR){T(U,e.ADD_URI_SAFE_ATTR)}if(j){A["#text"]=true}if(Object&&"freeze"in Object){Object.freeze(e)}q=e};var Y=function(e){r.removed.push({element:e});try{e.parentNode.removeChild(e)}catch(t){e.outerHTML=""}};var K=function(e,t){r.removed.push({attribute:t.getAttributeNode(e),from:t});t.removeAttribute(e)};var $=function(e){var t,r;if(z){e="<remove></remove>"+e}if(!t||!t.documentElement){t=m.createHTMLDocument("");r=t.body;r.parentNode.removeChild(r.parentNode.firstElementChild);r.outerHTML=e}if(typeof t.getElementsByTagName==="function"){return t.getElementsByTagName(R?"html":"body")[0]}return v.call(t,R?"html":"body")[0]};var J=function(e){return p.call(e.ownerDocument||e,e,s.SHOW_ELEMENT|s.SHOW_COMMENT|s.SHOW_TEXT,function(){return s.FILTER_ACCEPT},false)};var Q=function(e){if(e instanceof c||e instanceof u){return false}if(typeof e.nodeName!=="string"||typeof e.textContent!=="string"||typeof e.removeChild!=="function"||!(e.attributes instanceof f)||typeof e.removeAttribute!=="function"||typeof e.setAttribute!=="function"){return true}return false};var X=function(e){return typeof l==="object"?e instanceof l:e&&typeof e==="object"&&typeof e.nodeType==="number"&&typeof e.nodeName==="string"};var Z=function(e){var t,n;le("beforeSanitizeElements",e,null);if(Q(e)){Y(e);return true}t=e.nodeName.toLowerCase();le("uponSanitizeElement",e,{tagName:t,allowedTags:A});if(!A[t]||E[t]){if(j&&!W[t]&&typeof e.insertAdjacentHTML==="function"){try{e.insertAdjacentHTML("AfterEnd",e.innerHTML)}catch(a){}}Y(e);return true}if(L&&!e.firstElementChild&&(!e.content||!e.content.firstElementChild)&&/</g.test(e.textContent)){r.removed.push({element:e.cloneNode()});e.innerHTML=e.textContent.replace(/</g,"<")}if(M&&e.nodeType===3){n=e.textContent;n=n.replace(_," ");n=n.replace(C," ");if(e.textContent!==n){r.removed.push({element:e.cloneNode()});e.textContent=n}}le("afterSanitizeElements",e,null);return false};var ee=/^data-[\-\w.\u00B7-\uFFFF]/;var te=/^aria-[\-\w]+$/;var re=/^(?:(?:(?:f|ht)tps?|mailto|tel):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i;var ne=/^(?:\w+script|data):/i;var ae=/[\x00-\x20\xA0\u1680\u180E\u2000-\u2029\u205f\u3000]/g;var ie=function(e){var a,i,o,l,s,f,c,u;le("beforeSanitizeAttributes",e,null);f=e.attributes;if(!f){return}c={attrName:"",attrValue:"",keepAttr:true,allowedAttributes:k};u=f.length;while(u--){a=f[u];i=a.name;o=a.value.trim();l=i.toLowerCase();c.attrName=l;c.attrValue=o;c.keepAttr=true;le("uponSanitizeAttribute",e,c);o=c.attrValue;if(l==="name"&&e.nodeName==="IMG"&&f.id){s=f.id;f=Array.prototype.slice.apply(f);K("id",e);K(i,e);if(f.indexOf(s)>u){e.setAttribute("id",s.value)}}else if(e.nodeName==="INPUT"&&l==="type"&&o==="file"&&(k[l]||!N[l])){continue}else{if(i==="id"){e.setAttribute(i,"")}K(i,e)}if(!c.keepAttr){continue}if(B&&(l==="id"||l==="name")&&(o in t||o in n||o in P)){continue}if(M){o=o.replace(_," ");o=o.replace(C," ")}if(S&&ee.test(l)){}else if(O&&te.test(l)){}else if(!k[l]||N[l]){continue}else if(U[l]){}else if(re.test(o.replace(ae,""))){}else if((l==="src"||l==="xlink:href")&&o.indexOf("data:")===0&&G[e.nodeName.toLowerCase()]){}else if(D&&!ne.test(o.replace(ae,""))){}else if(!o){}else{continue}try{e.setAttribute(i,o);r.removed.pop()}catch(d){}}le("afterSanitizeAttributes",e,null)};var oe=function(e){var t;var r=J(e);le("beforeSanitizeShadowDOM",e,null);while(t=r.nextNode()){le("uponSanitizeShadowNode",t,null);if(Z(t)){continue}if(t.content instanceof i){oe(t.content)}ie(t)}le("afterSanitizeShadowDOM",e,null)};var le=function(e,t,n){if(!y[e]){return}y[e].forEach(function(e){e.call(r,t,n,q)})};r.sanitize=function(e,n){var o,s,f,c,u,d;if(!e){e="<!-->"}if(typeof e!=="string"&&!X(e)){if(typeof e.toString!=="function"){throw new TypeError("toString is not a function")}else{e=e.toString()}}if(!r.isSupported){if(typeof t.toStaticHTML==="object"||typeof t.toStaticHTML==="function"){if(typeof e==="string"){return t.toStaticHTML(e)}else if(X(e)){return t.toStaticHTML(e.outerHTML)}}return e}V(n);r.removed=[];if(e instanceof l){o=$("<!-->");s=o.ownerDocument.importNode(e,true);if(s.nodeType===1&&s.nodeName==="BODY"){o=s}else{o.appendChild(s)}}else{if(!F&&!R&&e.indexOf("<")===-1){return e}o=$(e);if(!o){return F?null:""}}if(z){Y(o.firstChild)}u=J(o);while(f=u.nextNode()){if(f.nodeType===3&&f===c){continue}if(Z(f)){continue}if(f.content instanceof i){oe(f.content)}ie(f);c=f}if(F){if(H){d=h.call(o.ownerDocument);while(o.firstChild){d.appendChild(o.firstChild)}}else{d=o}if(I){d=g.call(a,d,true)}return d}return R?o.outerHTML:o.innerHTML};r.addHook=function(e,t){if(typeof t!=="function"){return}y[e]=y[e]||[];y[e].push(t)};r.removeHook=function(e){if(y[e]){y[e].pop()}};r.removeHooks=function(e){if(y[e]){y[e]=[]}};r.removeAllHooks=function(){y={}};return r}); //# sourceMappingURL=./dist/purify.min.js.map /*! Snap.js v2.0.0-rc1 */ (function(win, doc) { diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index 823a876e04b..0d5f067779d 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -808,7 +808,6 @@ return array( 'OC\\Share20\\ShareHelper' => $baseDir . '/lib/private/Share20/ShareHelper.php', 'OC\\Share\\Constants' => $baseDir . '/lib/private/Share/Constants.php', 'OC\\Share\\Helper' => $baseDir . '/lib/private/Share/Helper.php', - 'OC\\Share\\MailNotifications' => $baseDir . '/lib/private/Share/MailNotifications.php', 'OC\\Share\\SearchResultSorter' => $baseDir . '/lib/private/Share/SearchResultSorter.php', 'OC\\Share\\Share' => $baseDir . '/lib/private/Share/Share.php', 'OC\\Streamer' => $baseDir . '/lib/private/Streamer.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index 979679c4198..82c31c24a21 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -838,7 +838,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\Share20\\ShareHelper' => __DIR__ . '/../../..' . '/lib/private/Share20/ShareHelper.php', 'OC\\Share\\Constants' => __DIR__ . '/../../..' . '/lib/private/Share/Constants.php', 'OC\\Share\\Helper' => __DIR__ . '/../../..' . '/lib/private/Share/Helper.php', - 'OC\\Share\\MailNotifications' => __DIR__ . '/../../..' . '/lib/private/Share/MailNotifications.php', 'OC\\Share\\SearchResultSorter' => __DIR__ . '/../../..' . '/lib/private/Share/SearchResultSorter.php', 'OC\\Share\\Share' => __DIR__ . '/../../..' . '/lib/private/Share/Share.php', 'OC\\Streamer' => __DIR__ . '/../../..' . '/lib/private/Streamer.php', diff --git a/lib/l10n/de.js b/lib/l10n/de.js index cae14af7cfc..a4c9547373a 100644 --- a/lib/l10n/de.js +++ b/lib/l10n/de.js @@ -36,11 +36,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["Vor %n Stunde","Vor %n Stunden"], "_%n minute ago_::_%n minutes ago_" : ["Vor %n Minute","Vor %n Minuten"], "seconds ago" : "Gerade eben", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Das Modul mit der ID: %s existiert nicht. Bitte die App in den App-Einstellungen aktivieren oder den Administrator kontaktieren.", "File name is a reserved word" : "Der Dateiname ist ein reserviertes Wort", "File name contains at least one invalid character" : "Der Dateiname enthält mindestens ein ungültiges Zeichen", "File name is too long" : "Dateiname ist zu lang", "Dot files are not allowed" : "Dateinamen mit einem Punkt am Anfang sind nicht erlaubt", "Empty filename is not allowed" : "Ein leerer Dateiname ist nicht erlaubt", + "This is an automatically sent email, please do not reply." : "Dies ist eine automatisch versandte E-Mail, bitte nicht antworten.", "Help" : "Hilfe", "Apps" : "Apps", "Personal" : "Persönlich", @@ -63,6 +65,7 @@ OC.L10N.register( "Oracle username and/or password not valid" : "Oracle-Benutzername und/oder -Passwort ungültig", "DB Error: \"%s\"" : "DB-Fehler: „%s“", "Offending command was: \"%s\"" : "Fehlerhafter Befehl war: „%s“", + "You need to enter details of an existing account." : "Du mußt Daten eines existierenden Kontos angeben.", "Offending command was: \"%s\", name: %s, password: %s" : "Fehlerhafter Befehl war: „%s“, Name: %s, Passwort: %s", "PostgreSQL username and/or password not valid" : "PostgreSQL-Benutzername und/oder -Passwort ungültig", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X wird nicht unterstützt und %s wird auf dieser Plattform nicht richtig funktionieren. Die Benutzung erfolgt auf eigene Gefahr!", @@ -155,6 +158,7 @@ OC.L10N.register( "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Folgende Zeichen sind im Benutzernamen erlaubt: „a-z“, „A-Z“, „0-9“ und „_.@-'“", "A valid username must be provided" : "Es muss ein gültiger Benutzername angegeben werden", "Username contains whitespace at the beginning or at the end" : "Der Benutzername enthält Leerzeichen am Anfang oder am Ende", + "Username must not consist of dots only" : "Benutzername darf nicht nur aus Punkten bestehen", "A valid password must be provided" : "Es muss ein gültiges Passwort angegeben werden", "The username is already being used" : "Dieser Benutzername existiert bereits", "User disabled" : "Nutzer deaktiviert", @@ -198,6 +202,7 @@ OC.L10N.register( "Your data directory is readable by other users" : "Dein Datenverzeichnis kann von anderen Benutzern gelesen werden", "Your data directory must be an absolute path" : "Dein Datenverzeichnis muss einen eindeutigen Pfad haben", "Check the value of \"datadirectory\" in your configuration" : "Überprüfe bitte die Angabe unter „datadirectory“ in Deiner Konfiguration", + "Your data directory is invalid" : "Dein Datenverzeichnis ist ungültig", "Please check that the data directory contains a file \".ocdata\" in its root." : "Bitte stelle sicher, dass das Datenverzeichnis auf seiner ersten Ebene eine Datei namens „.ocdata“ enthält.", "Could not obtain lock type %d on \"%s\"." : "Sperrtyp %d auf „%s“ konnte nicht ermittelt werden.", "Storage unauthorized. %s" : "Speichern nicht erlaubt. %s", diff --git a/lib/l10n/de.json b/lib/l10n/de.json index 39ee5435aaa..7b2051ab3bf 100644 --- a/lib/l10n/de.json +++ b/lib/l10n/de.json @@ -34,11 +34,13 @@ "_%n hour ago_::_%n hours ago_" : ["Vor %n Stunde","Vor %n Stunden"], "_%n minute ago_::_%n minutes ago_" : ["Vor %n Minute","Vor %n Minuten"], "seconds ago" : "Gerade eben", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Das Modul mit der ID: %s existiert nicht. Bitte die App in den App-Einstellungen aktivieren oder den Administrator kontaktieren.", "File name is a reserved word" : "Der Dateiname ist ein reserviertes Wort", "File name contains at least one invalid character" : "Der Dateiname enthält mindestens ein ungültiges Zeichen", "File name is too long" : "Dateiname ist zu lang", "Dot files are not allowed" : "Dateinamen mit einem Punkt am Anfang sind nicht erlaubt", "Empty filename is not allowed" : "Ein leerer Dateiname ist nicht erlaubt", + "This is an automatically sent email, please do not reply." : "Dies ist eine automatisch versandte E-Mail, bitte nicht antworten.", "Help" : "Hilfe", "Apps" : "Apps", "Personal" : "Persönlich", @@ -61,6 +63,7 @@ "Oracle username and/or password not valid" : "Oracle-Benutzername und/oder -Passwort ungültig", "DB Error: \"%s\"" : "DB-Fehler: „%s“", "Offending command was: \"%s\"" : "Fehlerhafter Befehl war: „%s“", + "You need to enter details of an existing account." : "Du mußt Daten eines existierenden Kontos angeben.", "Offending command was: \"%s\", name: %s, password: %s" : "Fehlerhafter Befehl war: „%s“, Name: %s, Passwort: %s", "PostgreSQL username and/or password not valid" : "PostgreSQL-Benutzername und/oder -Passwort ungültig", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X wird nicht unterstützt und %s wird auf dieser Plattform nicht richtig funktionieren. Die Benutzung erfolgt auf eigene Gefahr!", @@ -153,6 +156,7 @@ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Folgende Zeichen sind im Benutzernamen erlaubt: „a-z“, „A-Z“, „0-9“ und „_.@-'“", "A valid username must be provided" : "Es muss ein gültiger Benutzername angegeben werden", "Username contains whitespace at the beginning or at the end" : "Der Benutzername enthält Leerzeichen am Anfang oder am Ende", + "Username must not consist of dots only" : "Benutzername darf nicht nur aus Punkten bestehen", "A valid password must be provided" : "Es muss ein gültiges Passwort angegeben werden", "The username is already being used" : "Dieser Benutzername existiert bereits", "User disabled" : "Nutzer deaktiviert", @@ -196,6 +200,7 @@ "Your data directory is readable by other users" : "Dein Datenverzeichnis kann von anderen Benutzern gelesen werden", "Your data directory must be an absolute path" : "Dein Datenverzeichnis muss einen eindeutigen Pfad haben", "Check the value of \"datadirectory\" in your configuration" : "Überprüfe bitte die Angabe unter „datadirectory“ in Deiner Konfiguration", + "Your data directory is invalid" : "Dein Datenverzeichnis ist ungültig", "Please check that the data directory contains a file \".ocdata\" in its root." : "Bitte stelle sicher, dass das Datenverzeichnis auf seiner ersten Ebene eine Datei namens „.ocdata“ enthält.", "Could not obtain lock type %d on \"%s\"." : "Sperrtyp %d auf „%s“ konnte nicht ermittelt werden.", "Storage unauthorized. %s" : "Speichern nicht erlaubt. %s", diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js index b4ba5739bed..c8c8bcf1086 100644 --- a/lib/l10n/de_DE.js +++ b/lib/l10n/de_DE.js @@ -36,11 +36,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["Vor %n Stunde","Vor %n Stunden"], "_%n minute ago_::_%n minutes ago_" : ["Vor %n Minute","Vor %n Minuten"], "seconds ago" : "Gerade eben", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul mit ID: 1 %s existiert nicht. Bitte aktiviere es in deinen Einstellungen oder kontaktiere deinen Administrator.", "File name is a reserved word" : "Der Dateiname ist ein reserviertes Wort", "File name contains at least one invalid character" : "Der Dateiname enthält mindestens ein ungültiges Zeichen", "File name is too long" : "Dateiname ist zu lang", "Dot files are not allowed" : "Dateinamen mit einem Punkt am Anfang sind nicht erlaubt", "Empty filename is not allowed" : "Ein leerer Dateiname ist nicht erlaubt", + "This is an automatically sent email, please do not reply." : "Dies ist eine automatisch versendete EMail, bitte nicht antworten.", "Help" : "Hilfe", "Apps" : "Apps", "Personal" : "Persönlich", @@ -63,6 +65,7 @@ OC.L10N.register( "Oracle username and/or password not valid" : "Oracle-Benutzername und/oder -Passwort ungültig", "DB Error: \"%s\"" : "DB-Fehler: „%s“", "Offending command was: \"%s\"" : "Fehlerhafter Befehl war: „%s“", + "You need to enter details of an existing account." : "Du musst Details von einem existierenden Benutzer einfügen.", "Offending command was: \"%s\", name: %s, password: %s" : "Fehlerhafter Befehl war: „%s“, Name: %s, Passwort: %s", "PostgreSQL username and/or password not valid" : "PostgreSQL-Benutzername und/oder -Passwort ungültig", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X wird nicht unterstützt und %s wird auf dieser Plattform nicht richtig funktionieren. Die Benutzung erfolgt auf eigene Gefahr!", @@ -155,6 +158,7 @@ OC.L10N.register( "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Nur die folgenden Zeichen sind im Benutzernamen erlaubt: „a-z“, „A-Z“, „0-9“, and „_.@-'“", "A valid username must be provided" : "Es muss ein gültiger Benutzername angegeben werden", "Username contains whitespace at the beginning or at the end" : "Benutzername enthält Leerzeichen am Anfang oder Ende", + "Username must not consist of dots only" : "Benutzername darf nicht nur aus Punkten bestehen", "A valid password must be provided" : "Es muss ein gültiges Passwort eingegeben werden", "The username is already being used" : "Der Benutzername existiert bereits", "User disabled" : "Nutzer deaktiviert", @@ -198,6 +202,7 @@ OC.L10N.register( "Your data directory is readable by other users" : "Dein Datenverzeichnis kann von anderen Benutzern gelesen werden", "Your data directory must be an absolute path" : "Dein Datenverzeichnis muss einen eindeutigen Pfad haben", "Check the value of \"datadirectory\" in your configuration" : "Überprüfen Sie bitte die Angabe unter „datadirectory“ in Ihrer Konfiguration", + "Your data directory is invalid" : "Dein Datenverzeichnis ist ungültig.", "Please check that the data directory contains a file \".ocdata\" in its root." : "Bitte stellen Sie sicher, dass das Datenverzeichnis auf seiner ersten Ebene eine Datei namens „.ocdata“ enthält.", "Could not obtain lock type %d on \"%s\"." : "Sperrtyp %d auf „%s“ konnte nicht ermittelt werden.", "Storage unauthorized. %s" : "Speicher ungültig. %s", diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json index 7040662f0be..1e3a96b7808 100644 --- a/lib/l10n/de_DE.json +++ b/lib/l10n/de_DE.json @@ -34,11 +34,13 @@ "_%n hour ago_::_%n hours ago_" : ["Vor %n Stunde","Vor %n Stunden"], "_%n minute ago_::_%n minutes ago_" : ["Vor %n Minute","Vor %n Minuten"], "seconds ago" : "Gerade eben", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul mit ID: 1 %s existiert nicht. Bitte aktiviere es in deinen Einstellungen oder kontaktiere deinen Administrator.", "File name is a reserved word" : "Der Dateiname ist ein reserviertes Wort", "File name contains at least one invalid character" : "Der Dateiname enthält mindestens ein ungültiges Zeichen", "File name is too long" : "Dateiname ist zu lang", "Dot files are not allowed" : "Dateinamen mit einem Punkt am Anfang sind nicht erlaubt", "Empty filename is not allowed" : "Ein leerer Dateiname ist nicht erlaubt", + "This is an automatically sent email, please do not reply." : "Dies ist eine automatisch versendete EMail, bitte nicht antworten.", "Help" : "Hilfe", "Apps" : "Apps", "Personal" : "Persönlich", @@ -61,6 +63,7 @@ "Oracle username and/or password not valid" : "Oracle-Benutzername und/oder -Passwort ungültig", "DB Error: \"%s\"" : "DB-Fehler: „%s“", "Offending command was: \"%s\"" : "Fehlerhafter Befehl war: „%s“", + "You need to enter details of an existing account." : "Du musst Details von einem existierenden Benutzer einfügen.", "Offending command was: \"%s\", name: %s, password: %s" : "Fehlerhafter Befehl war: „%s“, Name: %s, Passwort: %s", "PostgreSQL username and/or password not valid" : "PostgreSQL-Benutzername und/oder -Passwort ungültig", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X wird nicht unterstützt und %s wird auf dieser Plattform nicht richtig funktionieren. Die Benutzung erfolgt auf eigene Gefahr!", @@ -153,6 +156,7 @@ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Nur die folgenden Zeichen sind im Benutzernamen erlaubt: „a-z“, „A-Z“, „0-9“, and „_.@-'“", "A valid username must be provided" : "Es muss ein gültiger Benutzername angegeben werden", "Username contains whitespace at the beginning or at the end" : "Benutzername enthält Leerzeichen am Anfang oder Ende", + "Username must not consist of dots only" : "Benutzername darf nicht nur aus Punkten bestehen", "A valid password must be provided" : "Es muss ein gültiges Passwort eingegeben werden", "The username is already being used" : "Der Benutzername existiert bereits", "User disabled" : "Nutzer deaktiviert", @@ -196,6 +200,7 @@ "Your data directory is readable by other users" : "Dein Datenverzeichnis kann von anderen Benutzern gelesen werden", "Your data directory must be an absolute path" : "Dein Datenverzeichnis muss einen eindeutigen Pfad haben", "Check the value of \"datadirectory\" in your configuration" : "Überprüfen Sie bitte die Angabe unter „datadirectory“ in Ihrer Konfiguration", + "Your data directory is invalid" : "Dein Datenverzeichnis ist ungültig.", "Please check that the data directory contains a file \".ocdata\" in its root." : "Bitte stellen Sie sicher, dass das Datenverzeichnis auf seiner ersten Ebene eine Datei namens „.ocdata“ enthält.", "Could not obtain lock type %d on \"%s\"." : "Sperrtyp %d auf „%s“ konnte nicht ermittelt werden.", "Storage unauthorized. %s" : "Speicher ungültig. %s", diff --git a/lib/l10n/es.js b/lib/l10n/es.js index e6bcf0827ad..52132180ca8 100644 --- a/lib/l10n/es.js +++ b/lib/l10n/es.js @@ -41,6 +41,7 @@ OC.L10N.register( "File name is too long" : "El nombre del archivo es demasiado largo", "Dot files are not allowed" : "Los archivos Dot no están permitidos", "Empty filename is not allowed" : "No se puede dejar el nombre en blanco.", + "This is an automatically sent email, please do not reply." : "Este es un correo enviado automáticamente, por favor no responda.", "Help" : "Ayuda", "Apps" : "Aplicaciones", "Personal" : "Personal", @@ -63,6 +64,7 @@ OC.L10N.register( "Oracle username and/or password not valid" : "Usuario y/o contraseña de Oracle no válidos", "DB Error: \"%s\"" : "Error BD: \"%s\"", "Offending command was: \"%s\"" : "Comando infractor: \"%s\"", + "You need to enter details of an existing account." : "Necesita ingresar detalles de una cuenta existente.", "Offending command was: \"%s\", name: %s, password: %s" : "Comando infractor: \"%s\", nombre: %s, contraseña: %s", "PostgreSQL username and/or password not valid" : "Usuario y/o contraseña de PostgreSQL no válidos", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X no está soportado y %s no funcionará bien en esta plataforma. ¡Úsela bajo su propio riesgo! ", @@ -198,6 +200,7 @@ OC.L10N.register( "Your data directory is readable by other users" : "Su directorio data es leible por otros usuarios", "Your data directory must be an absolute path" : "Su directorio data debe ser una ruta absoluta", "Check the value of \"datadirectory\" in your configuration" : "Compruebe el valor de \"datadirectory\" en su configuración.", + "Your data directory is invalid" : "Su directorio de datos es inválido", "Please check that the data directory contains a file \".ocdata\" in its root." : "Verifique que el directorio de datos contiene un archivo \".ocdata\" en su directorio raíz.", "Could not obtain lock type %d on \"%s\"." : "No se pudo realizar el bloqueo %d en \"%s\".", "Storage unauthorized. %s" : "Almacenamiento no autorizado. %s", diff --git a/lib/l10n/es.json b/lib/l10n/es.json index 312a6674847..61827ee6aa6 100644 --- a/lib/l10n/es.json +++ b/lib/l10n/es.json @@ -39,6 +39,7 @@ "File name is too long" : "El nombre del archivo es demasiado largo", "Dot files are not allowed" : "Los archivos Dot no están permitidos", "Empty filename is not allowed" : "No se puede dejar el nombre en blanco.", + "This is an automatically sent email, please do not reply." : "Este es un correo enviado automáticamente, por favor no responda.", "Help" : "Ayuda", "Apps" : "Aplicaciones", "Personal" : "Personal", @@ -61,6 +62,7 @@ "Oracle username and/or password not valid" : "Usuario y/o contraseña de Oracle no válidos", "DB Error: \"%s\"" : "Error BD: \"%s\"", "Offending command was: \"%s\"" : "Comando infractor: \"%s\"", + "You need to enter details of an existing account." : "Necesita ingresar detalles de una cuenta existente.", "Offending command was: \"%s\", name: %s, password: %s" : "Comando infractor: \"%s\", nombre: %s, contraseña: %s", "PostgreSQL username and/or password not valid" : "Usuario y/o contraseña de PostgreSQL no válidos", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X no está soportado y %s no funcionará bien en esta plataforma. ¡Úsela bajo su propio riesgo! ", @@ -196,6 +198,7 @@ "Your data directory is readable by other users" : "Su directorio data es leible por otros usuarios", "Your data directory must be an absolute path" : "Su directorio data debe ser una ruta absoluta", "Check the value of \"datadirectory\" in your configuration" : "Compruebe el valor de \"datadirectory\" en su configuración.", + "Your data directory is invalid" : "Su directorio de datos es inválido", "Please check that the data directory contains a file \".ocdata\" in its root." : "Verifique que el directorio de datos contiene un archivo \".ocdata\" en su directorio raíz.", "Could not obtain lock type %d on \"%s\"." : "No se pudo realizar el bloqueo %d en \"%s\".", "Storage unauthorized. %s" : "Almacenamiento no autorizado. %s", diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js index 440b213f33b..86a8fb3f84a 100644 --- a/lib/l10n/fr.js +++ b/lib/l10n/fr.js @@ -36,11 +36,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["Il y a %n heure","Il y a %n heures"], "_%n minute ago_::_%n minutes ago_" : ["il y a %n minute","il y a %n minutes"], "seconds ago" : "il y a quelques secondes", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Le module avec l'ID: %s n'existe pas. Merci de l'activer dans les paramètres d'applications ou de contacter votre administrateur.", "File name is a reserved word" : "Ce nom de fichier est un mot réservé", "File name contains at least one invalid character" : "Le nom de fichier contient un (des) caractère(s) non valide(s)", "File name is too long" : "Nom de fichier trop long", "Dot files are not allowed" : "Le nom de fichier ne peut pas commencer par un point", "Empty filename is not allowed" : "Le nom de fichier ne peut pas être vide", + "This is an automatically sent email, please do not reply." : "Ceci est un e-mail envoyé automatiquement, veuillez ne pas y répondre.", "Help" : "Aide", "Apps" : "Applications", "Personal" : "Personnel", @@ -63,6 +65,7 @@ OC.L10N.register( "Oracle username and/or password not valid" : "Nom d'utilisateur et/ou mot de passe de la base Oracle non valide(s)", "DB Error: \"%s\"" : "Erreur de la base de données : \"%s\"", "Offending command was: \"%s\"" : "La requête en cause est : \"%s\"", + "You need to enter details of an existing account." : "Vous devez indiquer les détails d'un compte existant.", "Offending command was: \"%s\", name: %s, password: %s" : "La requête en cause est : \"%s\", nom : %s, mot de passe : %s", "PostgreSQL username and/or password not valid" : "Nom d'utilisateur et/ou mot de passe de la base PostgreSQL non valide(s)", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X n'est pas pris en charge et %s ne fonctionnera pas correctement sur cette plate-forme. Son utilisation est à vos risques et périls !", @@ -155,6 +158,7 @@ OC.L10N.register( "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Seuls les caractères suivants sont autorisés dans un nom d'utilisateur : \"a-z\", \"A-Z\", \"0-9\", \"_@-\" et \".\" (le point)", "A valid username must be provided" : "Un nom d'utilisateur valide doit être saisi", "Username contains whitespace at the beginning or at the end" : "Le nom d'utilisateur contient des espaces au début ou à la fin", + "Username must not consist of dots only" : "Le nom d'utilisateur ne doit pas être composé uniquement de points", "A valid password must be provided" : "Un mot de passe valide doit être saisi", "The username is already being used" : "Ce nom d'utilisateur est déjà utilisé", "User disabled" : "Utilisateur désactivé", @@ -198,6 +202,7 @@ OC.L10N.register( "Your data directory is readable by other users" : "Votre répertoire est lisible par les autres utilisateurs", "Your data directory must be an absolute path" : "Le chemin de votre répertoire doit être un lien absolu", "Check the value of \"datadirectory\" in your configuration" : "Verifiez la valeur de \"datadirectory\" dans votre configuration", + "Your data directory is invalid" : "Votre répertoire n'est pas valide", "Please check that the data directory contains a file \".ocdata\" in its root." : "Veuillez vérifier que le répertoire de données contient un fichier \".ocdata\" à sa racine.", "Could not obtain lock type %d on \"%s\"." : "Impossible d'obtenir le verrouillage de type %d sur \"%s\".", "Storage unauthorized. %s" : "Espace de stockage non autorisé. %s", diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json index 8ae0e212c92..8a3037cfd24 100644 --- a/lib/l10n/fr.json +++ b/lib/l10n/fr.json @@ -34,11 +34,13 @@ "_%n hour ago_::_%n hours ago_" : ["Il y a %n heure","Il y a %n heures"], "_%n minute ago_::_%n minutes ago_" : ["il y a %n minute","il y a %n minutes"], "seconds ago" : "il y a quelques secondes", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Le module avec l'ID: %s n'existe pas. Merci de l'activer dans les paramètres d'applications ou de contacter votre administrateur.", "File name is a reserved word" : "Ce nom de fichier est un mot réservé", "File name contains at least one invalid character" : "Le nom de fichier contient un (des) caractère(s) non valide(s)", "File name is too long" : "Nom de fichier trop long", "Dot files are not allowed" : "Le nom de fichier ne peut pas commencer par un point", "Empty filename is not allowed" : "Le nom de fichier ne peut pas être vide", + "This is an automatically sent email, please do not reply." : "Ceci est un e-mail envoyé automatiquement, veuillez ne pas y répondre.", "Help" : "Aide", "Apps" : "Applications", "Personal" : "Personnel", @@ -61,6 +63,7 @@ "Oracle username and/or password not valid" : "Nom d'utilisateur et/ou mot de passe de la base Oracle non valide(s)", "DB Error: \"%s\"" : "Erreur de la base de données : \"%s\"", "Offending command was: \"%s\"" : "La requête en cause est : \"%s\"", + "You need to enter details of an existing account." : "Vous devez indiquer les détails d'un compte existant.", "Offending command was: \"%s\", name: %s, password: %s" : "La requête en cause est : \"%s\", nom : %s, mot de passe : %s", "PostgreSQL username and/or password not valid" : "Nom d'utilisateur et/ou mot de passe de la base PostgreSQL non valide(s)", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X n'est pas pris en charge et %s ne fonctionnera pas correctement sur cette plate-forme. Son utilisation est à vos risques et périls !", @@ -153,6 +156,7 @@ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Seuls les caractères suivants sont autorisés dans un nom d'utilisateur : \"a-z\", \"A-Z\", \"0-9\", \"_@-\" et \".\" (le point)", "A valid username must be provided" : "Un nom d'utilisateur valide doit être saisi", "Username contains whitespace at the beginning or at the end" : "Le nom d'utilisateur contient des espaces au début ou à la fin", + "Username must not consist of dots only" : "Le nom d'utilisateur ne doit pas être composé uniquement de points", "A valid password must be provided" : "Un mot de passe valide doit être saisi", "The username is already being used" : "Ce nom d'utilisateur est déjà utilisé", "User disabled" : "Utilisateur désactivé", @@ -196,6 +200,7 @@ "Your data directory is readable by other users" : "Votre répertoire est lisible par les autres utilisateurs", "Your data directory must be an absolute path" : "Le chemin de votre répertoire doit être un lien absolu", "Check the value of \"datadirectory\" in your configuration" : "Verifiez la valeur de \"datadirectory\" dans votre configuration", + "Your data directory is invalid" : "Votre répertoire n'est pas valide", "Please check that the data directory contains a file \".ocdata\" in its root." : "Veuillez vérifier que le répertoire de données contient un fichier \".ocdata\" à sa racine.", "Could not obtain lock type %d on \"%s\"." : "Impossible d'obtenir le verrouillage de type %d sur \"%s\".", "Storage unauthorized. %s" : "Espace de stockage non autorisé. %s", diff --git a/lib/l10n/nb.js b/lib/l10n/nb.js index 2de0a7f5c5e..3e824b6376e 100644 --- a/lib/l10n/nb.js +++ b/lib/l10n/nb.js @@ -36,11 +36,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["for %n time siden","for %n timer siden"], "_%n minute ago_::_%n minutes ago_" : ["for %n minutt siden","for %n minutter siden"], "seconds ago" : "for få sekunder siden", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul med ID: %s finnes ikke. Skru den på i programinnstillingene eller kontakt en administrator.", "File name is a reserved word" : "Filnavnet er et reservert ord", "File name contains at least one invalid character" : "Filnavnet inneholder minst ett ulovlig tegn", "File name is too long" : "Filnavnet er for langt", "Dot files are not allowed" : "Punktum-filer er ikke tillatt", "Empty filename is not allowed" : "Tomt filnavn er ikke tillatt", + "This is an automatically sent email, please do not reply." : "Dette er en automatisk sendt e-post, ikke svar.", "Help" : "Hjelp", "Apps" : "Programmer", "Personal" : "Personlig", @@ -63,6 +65,7 @@ OC.L10N.register( "Oracle username and/or password not valid" : "Oracle-brukernavn og/eller passord er ikke gyldig", "DB Error: \"%s\"" : "Databasefeil: \"%s\"", "Offending command was: \"%s\"" : "Kommandoen som feilet: \"%s\"", + "You need to enter details of an existing account." : "Du må legge in detaljene til en eksisterende konto.", "Offending command was: \"%s\", name: %s, password: %s" : "Kommando som feilet: \"%s\", navn: %s, passord: %s", "PostgreSQL username and/or password not valid" : "PostgreSQL-brukernavn og/eller passord er ikke gyldig", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X støttes ikke og %s vil ikke fungere korrekt på denne plattformen. Bruk på egen risiko!", @@ -195,7 +198,10 @@ OC.L10N.register( "PostgreSQL >= 9 required" : "PostgreSQL >= 9 kreves", "Please upgrade your database version" : "Oppgrader databaseversjonen din", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Endre tillatelsene til 0770 slik at mappen ikke kan listes av andre brukere.", + "Your data directory is readable by other users" : "Din datamappe kan leses av andre brukere", + "Your data directory must be an absolute path" : "Din datamappe må være en absolutt sti", "Check the value of \"datadirectory\" in your configuration" : "Sjekk verdien for \"datadirectory\" i oppsettet ditt", + "Your data directory is invalid" : "Din datamappe er ugyldig", "Please check that the data directory contains a file \".ocdata\" in its root." : "Sjekk at det ligger en fil \".ocdata\" i roten av data-mappen.", "Could not obtain lock type %d on \"%s\"." : "Klarte ikke å låse med type %d på \"%s\".", "Storage unauthorized. %s" : "Lager uautorisert: %s", diff --git a/lib/l10n/nb.json b/lib/l10n/nb.json index 9602e1ebe0c..246bea1e256 100644 --- a/lib/l10n/nb.json +++ b/lib/l10n/nb.json @@ -34,11 +34,13 @@ "_%n hour ago_::_%n hours ago_" : ["for %n time siden","for %n timer siden"], "_%n minute ago_::_%n minutes ago_" : ["for %n minutt siden","for %n minutter siden"], "seconds ago" : "for få sekunder siden", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Modul med ID: %s finnes ikke. Skru den på i programinnstillingene eller kontakt en administrator.", "File name is a reserved word" : "Filnavnet er et reservert ord", "File name contains at least one invalid character" : "Filnavnet inneholder minst ett ulovlig tegn", "File name is too long" : "Filnavnet er for langt", "Dot files are not allowed" : "Punktum-filer er ikke tillatt", "Empty filename is not allowed" : "Tomt filnavn er ikke tillatt", + "This is an automatically sent email, please do not reply." : "Dette er en automatisk sendt e-post, ikke svar.", "Help" : "Hjelp", "Apps" : "Programmer", "Personal" : "Personlig", @@ -61,6 +63,7 @@ "Oracle username and/or password not valid" : "Oracle-brukernavn og/eller passord er ikke gyldig", "DB Error: \"%s\"" : "Databasefeil: \"%s\"", "Offending command was: \"%s\"" : "Kommandoen som feilet: \"%s\"", + "You need to enter details of an existing account." : "Du må legge in detaljene til en eksisterende konto.", "Offending command was: \"%s\", name: %s, password: %s" : "Kommando som feilet: \"%s\", navn: %s, passord: %s", "PostgreSQL username and/or password not valid" : "PostgreSQL-brukernavn og/eller passord er ikke gyldig", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X støttes ikke og %s vil ikke fungere korrekt på denne plattformen. Bruk på egen risiko!", @@ -193,7 +196,10 @@ "PostgreSQL >= 9 required" : "PostgreSQL >= 9 kreves", "Please upgrade your database version" : "Oppgrader databaseversjonen din", "Please change the permissions to 0770 so that the directory cannot be listed by other users." : "Endre tillatelsene til 0770 slik at mappen ikke kan listes av andre brukere.", + "Your data directory is readable by other users" : "Din datamappe kan leses av andre brukere", + "Your data directory must be an absolute path" : "Din datamappe må være en absolutt sti", "Check the value of \"datadirectory\" in your configuration" : "Sjekk verdien for \"datadirectory\" i oppsettet ditt", + "Your data directory is invalid" : "Din datamappe er ugyldig", "Please check that the data directory contains a file \".ocdata\" in its root." : "Sjekk at det ligger en fil \".ocdata\" i roten av data-mappen.", "Could not obtain lock type %d on \"%s\"." : "Klarte ikke å låse med type %d på \"%s\".", "Storage unauthorized. %s" : "Lager uautorisert: %s", diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js index ade962bca47..d690d655d60 100644 --- a/lib/l10n/pl.js +++ b/lib/l10n/pl.js @@ -36,11 +36,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n godzinę temu","%n godzin temu","%n godzin temu","%n godzin temu"], "_%n minute ago_::_%n minutes ago_" : ["%n minute temu","%n minut temu","%n minut temu","%n minut temu"], "seconds ago" : "sekund temu", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduł o ID: %s nie istnieje. Proszę włącz go w ustawieniach aplikacji lub skontaktuj się z administratorem.", "File name is a reserved word" : "Nazwa pliku jest zarezerwowana", "File name contains at least one invalid character" : "Nazwa pliku zawiera co najmniej jeden nieprawidłowy znak", "File name is too long" : "Nazwa pliku zbyt długa", "Dot files are not allowed" : "Pliki z kropką są nie dozwolone", "Empty filename is not allowed" : "Pusta nazwa nie jest dozwolona.", + "This is an automatically sent email, please do not reply." : "To jest automatycznie wysłany e-mail, proszę nie odpowiadać na niego.", "Help" : "Pomoc", "Apps" : "Aplikacje", "Personal" : "Osobiste", @@ -63,6 +65,7 @@ OC.L10N.register( "Oracle username and/or password not valid" : "Oracle: Nazwa użytkownika i/lub hasło jest niepoprawne", "DB Error: \"%s\"" : "Błąd DB: \"%s\"", "Offending command was: \"%s\"" : "Niepoprawna komenda: \"%s\"", + "You need to enter details of an existing account." : "Musisz wprowadzić szczegóły istniejącego konta.", "Offending command was: \"%s\", name: %s, password: %s" : "Niepoprawne polecania: \"%s\", nazwa: %s, hasło: %s", "PostgreSQL username and/or password not valid" : "PostgreSQL: Nazwa użytkownika i/lub hasło jest niepoprawne", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nie jest wspierany i %s nie będzie działać poprawnie na tej platformie. Używasz na własne ryzyko!", @@ -155,6 +158,7 @@ OC.L10N.register( "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "W nazwie użytkownika dozwolone są tylko następujące znaki : \"a-z\", \"A-Z\", \"0-9\" i \"_.@-'\"", "A valid username must be provided" : "Należy podać prawidłową nazwę użytkownika", "Username contains whitespace at the beginning or at the end" : "Nazwa użytkownika zawiera spację na początku albo na końcu", + "Username must not consist of dots only" : "Nazwa użytkownika nie może się składać tylko z kropek", "A valid password must be provided" : "Należy podać prawidłowe hasło", "The username is already being used" : "Ta nazwa użytkownika jest już używana", "User disabled" : "Użytkownik zablokowany", @@ -198,6 +202,7 @@ OC.L10N.register( "Your data directory is readable by other users" : "Twój katalog z danymi mogą czytać inni użytkownicy", "Your data directory must be an absolute path" : "Twój katalog z danymi musi być ścieżką absolutną", "Check the value of \"datadirectory\" in your configuration" : "Sprawdź wartość \"datadirectory\" w swojej konfiguracji", + "Your data directory is invalid" : "Twój katalog z danymi jest nieprawidłowy", "Please check that the data directory contains a file \".ocdata\" in its root." : "Sprawdź, czy katalog danych zawiera plik \".ocdata\".", "Could not obtain lock type %d on \"%s\"." : "Nie można uzyskać blokady typu %d na \"%s\".", "Storage unauthorized. %s" : "Magazyn nieautoryzowany. %s", diff --git a/lib/l10n/pl.json b/lib/l10n/pl.json index 8dc4fa0bf76..a46ec2da2cf 100644 --- a/lib/l10n/pl.json +++ b/lib/l10n/pl.json @@ -34,11 +34,13 @@ "_%n hour ago_::_%n hours ago_" : ["%n godzinę temu","%n godzin temu","%n godzin temu","%n godzin temu"], "_%n minute ago_::_%n minutes ago_" : ["%n minute temu","%n minut temu","%n minut temu","%n minut temu"], "seconds ago" : "sekund temu", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Moduł o ID: %s nie istnieje. Proszę włącz go w ustawieniach aplikacji lub skontaktuj się z administratorem.", "File name is a reserved word" : "Nazwa pliku jest zarezerwowana", "File name contains at least one invalid character" : "Nazwa pliku zawiera co najmniej jeden nieprawidłowy znak", "File name is too long" : "Nazwa pliku zbyt długa", "Dot files are not allowed" : "Pliki z kropką są nie dozwolone", "Empty filename is not allowed" : "Pusta nazwa nie jest dozwolona.", + "This is an automatically sent email, please do not reply." : "To jest automatycznie wysłany e-mail, proszę nie odpowiadać na niego.", "Help" : "Pomoc", "Apps" : "Aplikacje", "Personal" : "Osobiste", @@ -61,6 +63,7 @@ "Oracle username and/or password not valid" : "Oracle: Nazwa użytkownika i/lub hasło jest niepoprawne", "DB Error: \"%s\"" : "Błąd DB: \"%s\"", "Offending command was: \"%s\"" : "Niepoprawna komenda: \"%s\"", + "You need to enter details of an existing account." : "Musisz wprowadzić szczegóły istniejącego konta.", "Offending command was: \"%s\", name: %s, password: %s" : "Niepoprawne polecania: \"%s\", nazwa: %s, hasło: %s", "PostgreSQL username and/or password not valid" : "PostgreSQL: Nazwa użytkownika i/lub hasło jest niepoprawne", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X nie jest wspierany i %s nie będzie działać poprawnie na tej platformie. Używasz na własne ryzyko!", @@ -153,6 +156,7 @@ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "W nazwie użytkownika dozwolone są tylko następujące znaki : \"a-z\", \"A-Z\", \"0-9\" i \"_.@-'\"", "A valid username must be provided" : "Należy podać prawidłową nazwę użytkownika", "Username contains whitespace at the beginning or at the end" : "Nazwa użytkownika zawiera spację na początku albo na końcu", + "Username must not consist of dots only" : "Nazwa użytkownika nie może się składać tylko z kropek", "A valid password must be provided" : "Należy podać prawidłowe hasło", "The username is already being used" : "Ta nazwa użytkownika jest już używana", "User disabled" : "Użytkownik zablokowany", @@ -196,6 +200,7 @@ "Your data directory is readable by other users" : "Twój katalog z danymi mogą czytać inni użytkownicy", "Your data directory must be an absolute path" : "Twój katalog z danymi musi być ścieżką absolutną", "Check the value of \"datadirectory\" in your configuration" : "Sprawdź wartość \"datadirectory\" w swojej konfiguracji", + "Your data directory is invalid" : "Twój katalog z danymi jest nieprawidłowy", "Please check that the data directory contains a file \".ocdata\" in its root." : "Sprawdź, czy katalog danych zawiera plik \".ocdata\".", "Could not obtain lock type %d on \"%s\"." : "Nie można uzyskać blokady typu %d na \"%s\".", "Storage unauthorized. %s" : "Magazyn nieautoryzowany. %s", diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js index 1b3079579f3..4b58876ddbc 100644 --- a/lib/l10n/pt_BR.js +++ b/lib/l10n/pt_BR.js @@ -36,11 +36,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["há %n hora atrás","há %n horas atrás"], "_%n minute ago_::_%n minutes ago_" : ["há %n minuto atrás","há %n minutos atrás"], "seconds ago" : "segundos atrás", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "O módulo com a ID: %s não existe. Por favor, habilite-o nas configurações de seu aplicativo ou contacte o administrador.", "File name is a reserved word" : "O nome do arquivo é uma palavra reservada", "File name contains at least one invalid character" : "O nome do arquivo contém pelo menos um caracter inválido", "File name is too long" : "O nome do arquivo é muito longo", "Dot files are not allowed" : "Arquivos Dot não são permitidos", "Empty filename is not allowed" : "Nome vazio para arquivo não é permitido.", + "This is an automatically sent email, please do not reply." : "Este é um email enviado automaticamente. Por favor, não responda.", "Help" : "Ajuda", "Apps" : "Aplicativos", "Personal" : "Pessoal", @@ -63,6 +65,7 @@ OC.L10N.register( "Oracle username and/or password not valid" : "Nome de usuário e/ou senha Oracle inválidos", "DB Error: \"%s\"" : "Erro no BD: \"%s\"", "Offending command was: \"%s\"" : "Comando ofensivo era: \"%s\"", + "You need to enter details of an existing account." : "Você necessita entrar detalhes de uma conta existente.", "Offending command was: \"%s\", name: %s, password: %s" : "Comando ofensivo era: \"%s\", nome: %s, senha: %s", "PostgreSQL username and/or password not valid" : "Nome de usuário e/ou senha PostgreSQL inválidos", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X não é suportado e %s não funcionará corretamente nesta plataforma. Use-o por sua conta e risco!", @@ -155,8 +158,9 @@ OC.L10N.register( "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Somente os seguintes caracteres são permitidos em um nome de usuário: \"a-z\", \"A-Z\", \"0-9\", e \"_.@-'\"", "A valid username must be provided" : "Um nome de usuário válido deve ser fornecido", "Username contains whitespace at the beginning or at the end" : "O nome de usuário contém espaço em branco no início ou no fim", + "Username must not consist of dots only" : "Nome do usuário não pode consistir de pontos somente", "A valid password must be provided" : "Uma senha válida deve ser fornecida", - "The username is already being used" : "Este nome de usuário já está em usado", + "The username is already being used" : "Este nome de usuário já está em uso", "User disabled" : "Usuário desativado", "Login canceled by app" : "Login cancelado pelo aplicativo", "App \"%s\" cannot be installed because appinfo file cannot be read." : "O aplicativo \"%s\" não pode ser instalado pois o arquivo appinfo não pode ser lido.", @@ -198,6 +202,7 @@ OC.L10N.register( "Your data directory is readable by other users" : "O diretório de dados está legível para outros usuários", "Your data directory must be an absolute path" : "O diretório de dados deve ser um caminho absoluto", "Check the value of \"datadirectory\" in your configuration" : "Verifique o valor do \"datadirectory\" na sua configuração", + "Your data directory is invalid" : "Seu diretório de dados é inválido", "Please check that the data directory contains a file \".ocdata\" in its root." : "Por favor, verifique se o diretório de dados contém um arquivo \".ocdata\" em sua raiz.", "Could not obtain lock type %d on \"%s\"." : "Não foi possível obter tipo de bloqueio %d em \"%s\".", "Storage unauthorized. %s" : "Armazenamento não autorizado. %s", diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json index a034d64a415..580af8db048 100644 --- a/lib/l10n/pt_BR.json +++ b/lib/l10n/pt_BR.json @@ -34,11 +34,13 @@ "_%n hour ago_::_%n hours ago_" : ["há %n hora atrás","há %n horas atrás"], "_%n minute ago_::_%n minutes ago_" : ["há %n minuto atrás","há %n minutos atrás"], "seconds ago" : "segundos atrás", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "O módulo com a ID: %s não existe. Por favor, habilite-o nas configurações de seu aplicativo ou contacte o administrador.", "File name is a reserved word" : "O nome do arquivo é uma palavra reservada", "File name contains at least one invalid character" : "O nome do arquivo contém pelo menos um caracter inválido", "File name is too long" : "O nome do arquivo é muito longo", "Dot files are not allowed" : "Arquivos Dot não são permitidos", "Empty filename is not allowed" : "Nome vazio para arquivo não é permitido.", + "This is an automatically sent email, please do not reply." : "Este é um email enviado automaticamente. Por favor, não responda.", "Help" : "Ajuda", "Apps" : "Aplicativos", "Personal" : "Pessoal", @@ -61,6 +63,7 @@ "Oracle username and/or password not valid" : "Nome de usuário e/ou senha Oracle inválidos", "DB Error: \"%s\"" : "Erro no BD: \"%s\"", "Offending command was: \"%s\"" : "Comando ofensivo era: \"%s\"", + "You need to enter details of an existing account." : "Você necessita entrar detalhes de uma conta existente.", "Offending command was: \"%s\", name: %s, password: %s" : "Comando ofensivo era: \"%s\", nome: %s, senha: %s", "PostgreSQL username and/or password not valid" : "Nome de usuário e/ou senha PostgreSQL inválidos", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X não é suportado e %s não funcionará corretamente nesta plataforma. Use-o por sua conta e risco!", @@ -153,8 +156,9 @@ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Somente os seguintes caracteres são permitidos em um nome de usuário: \"a-z\", \"A-Z\", \"0-9\", e \"_.@-'\"", "A valid username must be provided" : "Um nome de usuário válido deve ser fornecido", "Username contains whitespace at the beginning or at the end" : "O nome de usuário contém espaço em branco no início ou no fim", + "Username must not consist of dots only" : "Nome do usuário não pode consistir de pontos somente", "A valid password must be provided" : "Uma senha válida deve ser fornecida", - "The username is already being used" : "Este nome de usuário já está em usado", + "The username is already being used" : "Este nome de usuário já está em uso", "User disabled" : "Usuário desativado", "Login canceled by app" : "Login cancelado pelo aplicativo", "App \"%s\" cannot be installed because appinfo file cannot be read." : "O aplicativo \"%s\" não pode ser instalado pois o arquivo appinfo não pode ser lido.", @@ -196,6 +200,7 @@ "Your data directory is readable by other users" : "O diretório de dados está legível para outros usuários", "Your data directory must be an absolute path" : "O diretório de dados deve ser um caminho absoluto", "Check the value of \"datadirectory\" in your configuration" : "Verifique o valor do \"datadirectory\" na sua configuração", + "Your data directory is invalid" : "Seu diretório de dados é inválido", "Please check that the data directory contains a file \".ocdata\" in its root." : "Por favor, verifique se o diretório de dados contém um arquivo \".ocdata\" em sua raiz.", "Could not obtain lock type %d on \"%s\"." : "Não foi possível obter tipo de bloqueio %d em \"%s\".", "Storage unauthorized. %s" : "Armazenamento não autorizado. %s", diff --git a/lib/l10n/ru.js b/lib/l10n/ru.js index bd4d53a5752..27864e2ec10 100644 --- a/lib/l10n/ru.js +++ b/lib/l10n/ru.js @@ -36,11 +36,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n час назад","%n часа назад","%n часов назад","%n часов назад"], "_%n minute ago_::_%n minutes ago_" : ["%n минута назад","%n минуты назад","%n минут назад","%n минут назад"], "seconds ago" : "менее минуты", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Модуль с ID «%s» не существует. Включите его в настройках приложений или обратитесь к администратору.", "File name is a reserved word" : "Имя файла является зарезервированным словом", "File name contains at least one invalid character" : "Имя файла содержит по крайней мере один некорректный символ", "File name is too long" : "Имя файла слишком длинное.", "Dot files are not allowed" : "Файлы начинающиеся с точки не допускаются", "Empty filename is not allowed" : "Пустое имя файла не допускается", + "This is an automatically sent email, please do not reply." : "Это соощение отправлено автоматически, пожалуйста, не отвечайте на него.", "Help" : "Помощь", "Apps" : "Приложения", "Personal" : "Личное", @@ -63,6 +65,7 @@ OC.L10N.register( "Oracle username and/or password not valid" : "Неверное имя пользователя и/или пароль Oracle", "DB Error: \"%s\"" : "Ошибка БД: \"%s\"", "Offending command was: \"%s\"" : "Вызываемая команда была: \"%s\"", + "You need to enter details of an existing account." : "Необходимо уточнить данные существующего акаунта.", "Offending command was: \"%s\", name: %s, password: %s" : "Вызываемая команда была: \"%s\", имя: %s, пароль: %s", "PostgreSQL username and/or password not valid" : "Неверное имя пользователя и/или пароль PostgreSQL", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не поддерживается и %s может работать некорректно на данной платформе. Используйте на свой страх и риск!", @@ -155,6 +158,7 @@ OC.L10N.register( "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "В составе имени пользователя допускаются следующие символы: \"a-z\", \"A-Z\", \"0-9\" и \"_.@-'\"", "A valid username must be provided" : "Укажите допустимое имя пользователя", "Username contains whitespace at the beginning or at the end" : "Имя пользователя содержит пробел в начале или в конце", + "Username must not consist of dots only" : "Имя пользователя должно состоять не только из точек", "A valid password must be provided" : "Укажите допустимый пароль", "The username is already being used" : "Имя пользователя уже используется", "User disabled" : "Пользователь отключен", @@ -198,6 +202,7 @@ OC.L10N.register( "Your data directory is readable by other users" : "Каталог данных доступен для чтения другим пользователям", "Your data directory must be an absolute path" : "Каталог данных должен быть указан в виде абсолютного пути", "Check the value of \"datadirectory\" in your configuration" : "Проверьте значение \"datadirectory\" в настройках.", + "Your data directory is invalid" : "Каталог данных не верен", "Please check that the data directory contains a file \".ocdata\" in its root." : "Убедитесь, что файл \".ocdata\" присутствует в корне каталога данных.", "Could not obtain lock type %d on \"%s\"." : "Не удалось получить блокировку типа %d для \"%s\"", "Storage unauthorized. %s" : "Хранилище неавторизовано. %s", diff --git a/lib/l10n/ru.json b/lib/l10n/ru.json index 099790d8a40..cdd827031ee 100644 --- a/lib/l10n/ru.json +++ b/lib/l10n/ru.json @@ -34,11 +34,13 @@ "_%n hour ago_::_%n hours ago_" : ["%n час назад","%n часа назад","%n часов назад","%n часов назад"], "_%n minute ago_::_%n minutes ago_" : ["%n минута назад","%n минуты назад","%n минут назад","%n минут назад"], "seconds ago" : "менее минуты", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "Модуль с ID «%s» не существует. Включите его в настройках приложений или обратитесь к администратору.", "File name is a reserved word" : "Имя файла является зарезервированным словом", "File name contains at least one invalid character" : "Имя файла содержит по крайней мере один некорректный символ", "File name is too long" : "Имя файла слишком длинное.", "Dot files are not allowed" : "Файлы начинающиеся с точки не допускаются", "Empty filename is not allowed" : "Пустое имя файла не допускается", + "This is an automatically sent email, please do not reply." : "Это соощение отправлено автоматически, пожалуйста, не отвечайте на него.", "Help" : "Помощь", "Apps" : "Приложения", "Personal" : "Личное", @@ -61,6 +63,7 @@ "Oracle username and/or password not valid" : "Неверное имя пользователя и/или пароль Oracle", "DB Error: \"%s\"" : "Ошибка БД: \"%s\"", "Offending command was: \"%s\"" : "Вызываемая команда была: \"%s\"", + "You need to enter details of an existing account." : "Необходимо уточнить данные существующего акаунта.", "Offending command was: \"%s\", name: %s, password: %s" : "Вызываемая команда была: \"%s\", имя: %s, пароль: %s", "PostgreSQL username and/or password not valid" : "Неверное имя пользователя и/или пароль PostgreSQL", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не поддерживается и %s может работать некорректно на данной платформе. Используйте на свой страх и риск!", @@ -153,6 +156,7 @@ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "В составе имени пользователя допускаются следующие символы: \"a-z\", \"A-Z\", \"0-9\" и \"_.@-'\"", "A valid username must be provided" : "Укажите допустимое имя пользователя", "Username contains whitespace at the beginning or at the end" : "Имя пользователя содержит пробел в начале или в конце", + "Username must not consist of dots only" : "Имя пользователя должно состоять не только из точек", "A valid password must be provided" : "Укажите допустимый пароль", "The username is already being used" : "Имя пользователя уже используется", "User disabled" : "Пользователь отключен", @@ -196,6 +200,7 @@ "Your data directory is readable by other users" : "Каталог данных доступен для чтения другим пользователям", "Your data directory must be an absolute path" : "Каталог данных должен быть указан в виде абсолютного пути", "Check the value of \"datadirectory\" in your configuration" : "Проверьте значение \"datadirectory\" в настройках.", + "Your data directory is invalid" : "Каталог данных не верен", "Please check that the data directory contains a file \".ocdata\" in its root." : "Убедитесь, что файл \".ocdata\" присутствует в корне каталога данных.", "Could not obtain lock type %d on \"%s\"." : "Не удалось получить блокировку типа %d для \"%s\"", "Storage unauthorized. %s" : "Хранилище неавторизовано. %s", diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js index b8b83b2feea..676e62f3cab 100644 --- a/lib/l10n/tr.js +++ b/lib/l10n/tr.js @@ -36,11 +36,13 @@ OC.L10N.register( "_%n hour ago_::_%n hours ago_" : ["%n saat önce","%n saat önce"], "_%n minute ago_::_%n minutes ago_" : ["%n dakika önce","%n dakika önce"], "seconds ago" : "saniye önce", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "%s kodlu modül bulunamadı. Lütfen uygulamalarınız içinden modülü etkinleştirin ya da sistem yöneticinizle görüşün.", "File name is a reserved word" : "Bu dosya adı sistem kullanıma ayrılmıştır", "File name contains at least one invalid character" : "Dosya adında en az bir geçersiz karakter var", "File name is too long" : "Dosya adı çok uzun", "Dot files are not allowed" : "Nokta dosyalarına izin verilmiyor", "Empty filename is not allowed" : "Boş dosya adına izin verilmiyor", + "This is an automatically sent email, please do not reply." : "Bu ileti otomatik olarak gönderildiğinden lütfen yanıtlamayın.", "Help" : "Yardım", "Apps" : "Uygulamalar", "Personal" : "Kişisel", @@ -63,6 +65,7 @@ OC.L10N.register( "Oracle username and/or password not valid" : "Oracle kullanıcı adı ya da parolası geçersiz", "DB Error: \"%s\"" : "Veritabanı Hatası: \"%s\"", "Offending command was: \"%s\"" : "Saldırgan komut: \"%s\"", + "You need to enter details of an existing account." : "Varolan bir hesabın bilgilerini yazmalısınız.", "Offending command was: \"%s\", name: %s, password: %s" : "Saldırgan komut: \"%s\", kullanıcı adı: %s, parola: %s", "PostgreSQL username and/or password not valid" : "PostgreSQL kullanıcı adı ya da parolası geçersiz", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X desteklenmiyor ve %s bu platformda düzgün çalışmayacak. Kullanmaktan doğacak riskler size aittir!", @@ -155,6 +158,7 @@ OC.L10N.register( "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Kullanıcı adında yalnız şu karakterler kullanılabilir: \"a-z\", \"A-Z\", \"0-9\", ve \"_.@-'\"", "A valid username must be provided" : "Geçerli bir kullanıcı adı yazmalısınız", "Username contains whitespace at the beginning or at the end" : "Kullanıcı adının başı ya da sonunda boşluk var", + "Username must not consist of dots only" : "Kullanıcı adı yalnız noktalardan oluşamaz", "A valid password must be provided" : "Geçerli bir parola yazmalısınız", "The username is already being used" : "Bu kullanıcı adı zaten var", "User disabled" : "Kullanıcı devre dışı", @@ -198,6 +202,7 @@ OC.L10N.register( "Your data directory is readable by other users" : "Veri klasörünüz diğer kullanıcılar tarafından okunabilir", "Your data directory must be an absolute path" : "Veri klasörünüz mutlak bir yol olmalıdır", "Check the value of \"datadirectory\" in your configuration" : "Yapılandırmanızdaki \"datadirectory\" seçeneğini denetleyin", + "Your data directory is invalid" : "Veri klasörünüz geçersiz", "Please check that the data directory contains a file \".ocdata\" in its root." : "Lütfen veri klasörünün kökünde \".ocdata\" dosyasının bulunduğunu denetleyin.", "Could not obtain lock type %d on \"%s\"." : "\"%s\" için %d kilit türü alınamadı.", "Storage unauthorized. %s" : "Depolamaya erişim izni yok. %s", diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json index 0cf02899523..02b2d17cc50 100644 --- a/lib/l10n/tr.json +++ b/lib/l10n/tr.json @@ -34,11 +34,13 @@ "_%n hour ago_::_%n hours ago_" : ["%n saat önce","%n saat önce"], "_%n minute ago_::_%n minutes ago_" : ["%n dakika önce","%n dakika önce"], "seconds ago" : "saniye önce", + "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "%s kodlu modül bulunamadı. Lütfen uygulamalarınız içinden modülü etkinleştirin ya da sistem yöneticinizle görüşün.", "File name is a reserved word" : "Bu dosya adı sistem kullanıma ayrılmıştır", "File name contains at least one invalid character" : "Dosya adında en az bir geçersiz karakter var", "File name is too long" : "Dosya adı çok uzun", "Dot files are not allowed" : "Nokta dosyalarına izin verilmiyor", "Empty filename is not allowed" : "Boş dosya adına izin verilmiyor", + "This is an automatically sent email, please do not reply." : "Bu ileti otomatik olarak gönderildiğinden lütfen yanıtlamayın.", "Help" : "Yardım", "Apps" : "Uygulamalar", "Personal" : "Kişisel", @@ -61,6 +63,7 @@ "Oracle username and/or password not valid" : "Oracle kullanıcı adı ya da parolası geçersiz", "DB Error: \"%s\"" : "Veritabanı Hatası: \"%s\"", "Offending command was: \"%s\"" : "Saldırgan komut: \"%s\"", + "You need to enter details of an existing account." : "Varolan bir hesabın bilgilerini yazmalısınız.", "Offending command was: \"%s\", name: %s, password: %s" : "Saldırgan komut: \"%s\", kullanıcı adı: %s, parola: %s", "PostgreSQL username and/or password not valid" : "PostgreSQL kullanıcı adı ya da parolası geçersiz", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X desteklenmiyor ve %s bu platformda düzgün çalışmayacak. Kullanmaktan doğacak riskler size aittir!", @@ -153,6 +156,7 @@ "Only the following characters are allowed in a username: \"a-z\", \"A-Z\", \"0-9\", and \"_.@-'\"" : "Kullanıcı adında yalnız şu karakterler kullanılabilir: \"a-z\", \"A-Z\", \"0-9\", ve \"_.@-'\"", "A valid username must be provided" : "Geçerli bir kullanıcı adı yazmalısınız", "Username contains whitespace at the beginning or at the end" : "Kullanıcı adının başı ya da sonunda boşluk var", + "Username must not consist of dots only" : "Kullanıcı adı yalnız noktalardan oluşamaz", "A valid password must be provided" : "Geçerli bir parola yazmalısınız", "The username is already being used" : "Bu kullanıcı adı zaten var", "User disabled" : "Kullanıcı devre dışı", @@ -196,6 +200,7 @@ "Your data directory is readable by other users" : "Veri klasörünüz diğer kullanıcılar tarafından okunabilir", "Your data directory must be an absolute path" : "Veri klasörünüz mutlak bir yol olmalıdır", "Check the value of \"datadirectory\" in your configuration" : "Yapılandırmanızdaki \"datadirectory\" seçeneğini denetleyin", + "Your data directory is invalid" : "Veri klasörünüz geçersiz", "Please check that the data directory contains a file \".ocdata\" in its root." : "Lütfen veri klasörünün kökünde \".ocdata\" dosyasının bulunduğunu denetleyin.", "Could not obtain lock type %d on \"%s\"." : "\"%s\" için %d kilit türü alınamadı.", "Storage unauthorized. %s" : "Depolamaya erişim izni yok. %s", diff --git a/lib/private/AppFramework/Routing/RouteConfig.php b/lib/private/AppFramework/Routing/RouteConfig.php index e2675a3c847..70208725f46 100644 --- a/lib/private/AppFramework/Routing/RouteConfig.php +++ b/lib/private/AppFramework/Routing/RouteConfig.php @@ -231,15 +231,9 @@ class RouteConfig { $routeName = $this->appName . '.' . strtolower($resource) . '.' . strtolower($method); - $route = $this->router->create($routeName, $url)->method($verb)->action( + $this->router->create($routeName, $url)->method($verb)->action( new RouteActionHandler($this->container, $controllerName, $actionName) ); - - if (!$collectionAction) { - $route->requirements([ - 'id' => '[^?]*' - ]); - } } } } diff --git a/lib/private/Files/Config/UserMountCache.php b/lib/private/Files/Config/UserMountCache.php index 423eb5c423d..5cbdfaa9d82 100644 --- a/lib/private/Files/Config/UserMountCache.php +++ b/lib/private/Files/Config/UserMountCache.php @@ -220,15 +220,20 @@ class UserMountCache implements IUserMountCache { /** * @param int $numericStorageId + * @param string|null $user limit the results to a single user * @return CachedMountInfo[] */ - public function getMountsForStorageId($numericStorageId) { + public function getMountsForStorageId($numericStorageId, $user = null) { $builder = $this->connection->getQueryBuilder(); $query = $builder->select('storage_id', 'root_id', 'user_id', 'mount_point', 'mount_id', 'f.path') ->from('mounts', 'm') ->innerJoin('m', 'filecache', 'f' , $builder->expr()->eq('m.root_id', 'f.fileid')) ->where($builder->expr()->eq('storage_id', $builder->createPositionalParameter($numericStorageId, IQueryBuilder::PARAM_INT))); + if ($user) { + $query->andWhere($builder->expr()->eq('user_id', $builder->createPositionalParameter($user))); + } + $rows = $query->execute()->fetchAll(); return array_filter(array_map([$this, 'dbRowToMountInfo'], $rows)); @@ -278,16 +283,17 @@ class UserMountCache implements IUserMountCache { /** * @param int $fileId + * @param string|null $user optionally restrict the results to a single user * @return ICachedMountInfo[] * @since 9.0.0 */ - public function getMountsForFileId($fileId) { + public function getMountsForFileId($fileId, $user = null) { try { list($storageId, $internalPath) = $this->getCacheInfoFromFileId($fileId); } catch (NotFoundException $e) { return []; } - $mountsForStorage = $this->getMountsForStorageId($storageId); + $mountsForStorage = $this->getMountsForStorageId($storageId, $user); // filter mounts that are from the same storage but a different directory return array_filter($mountsForStorage, function (ICachedMountInfo $mount) use ($internalPath, $fileId) { diff --git a/lib/private/Files/Node/Folder.php b/lib/private/Files/Node/Folder.php index 9809c6b7d11..fcadbe27393 100644 --- a/lib/private/Files/Node/Folder.php +++ b/lib/private/Files/Node/Folder.php @@ -280,7 +280,12 @@ class Folder extends Node implements \OCP\Files\Folder { */ public function getById($id) { $mountCache = $this->root->getUserMountCache(); - $mountsContainingFile = $mountCache->getMountsForFileId((int)$id); + if (strpos($this->getPath(), '/', 1) > 0) { + list(, $user) = explode('/', $this->getPath()); + } else { + $user = null; + } + $mountsContainingFile = $mountCache->getMountsForFileId((int)$id, $user); $mounts = $this->root->getMountsIn($this->path); $mounts[] = $this->root->getMount($this->path); /** @var IMountPoint[] $folderMounts */ diff --git a/lib/private/Mail/EMailTemplate.php b/lib/private/Mail/EMailTemplate.php index 7384069f430..4e00eb153a3 100644 --- a/lib/private/Mail/EMailTemplate.php +++ b/lib/private/Mail/EMailTemplate.php @@ -34,7 +34,7 @@ use OCP\Mail\IEMailTemplate; * Class EMailTemplate * * addBodyText and addBodyButtonGroup automatically opens the body - * addFooter, renderHTML, renderText automatically closes the body and the HTML if opened + * addFooter, renderHtml, renderText automatically closes the body and the HTML if opened * * @package OC\Mail */ @@ -484,7 +484,7 @@ EOF; * * @return string */ - public function renderHTML() { + public function renderHtml() { if (!$this->footerAdded) { $this->footerAdded = true; if ($this->bodyOpened) { diff --git a/lib/private/Share/MailNotifications.php b/lib/private/Share/MailNotifications.php deleted file mode 100644 index e10389e77b9..00000000000 --- a/lib/private/Share/MailNotifications.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php -/** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Björn Schießle <bjoern@schiessle.org> - * @author Joas Schilling <coding@schilljs.com> - * @author Lukas Reschke <lukas@statuscode.ch> - * @author Morris Jobke <hey@morrisjobke.de> - * @author Robin McCorkell <robin@mccorkell.me.uk> - * @author Roeland Jago Douma <roeland@famdouma.nl> - * @author scolebrook <scolebrook@mac.com> - * @author Thomas Müller <thomas.mueller@tmit.eu> - * @author Vincent Petry <pvince81@owncloud.com> - * - * @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\Share; - -use OCP\IL10N; -use OCP\IURLGenerator; -use OCP\IUser; -use OCP\Mail\IMailer; -use OCP\ILogger; -use OCP\Defaults; -use OCP\Util; - -/** - * Class MailNotifications - * - * @package OC\Share - */ -class MailNotifications { - - /** @var IUser sender userId */ - private $user; - /** @var string sender email address */ - private $replyTo; - /** @var string */ - private $senderDisplayName; - /** @var IL10N */ - private $l; - /** @var IMailer */ - private $mailer; - /** @var Defaults */ - private $defaults; - /** @var ILogger */ - private $logger; - /** @var IURLGenerator */ - private $urlGenerator; - - /** - * @param IUser $user - * @param IL10N $l10n - * @param IMailer $mailer - * @param ILogger $logger - * @param Defaults $defaults - * @param IURLGenerator $urlGenerator - */ - public function __construct(IUser $user, - IL10N $l10n, - IMailer $mailer, - ILogger $logger, - Defaults $defaults, - IURLGenerator $urlGenerator) { - $this->l = $l10n; - $this->user = $user; - $this->mailer = $mailer; - $this->logger = $logger; - $this->defaults = $defaults; - $this->urlGenerator = $urlGenerator; - - $this->replyTo = $this->user->getEMailAddress(); - $this->senderDisplayName = $this->user->getDisplayName(); - } -} diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index 6e59629153e..3afd38c579f 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -1233,7 +1233,7 @@ class Manager implements IManager { //Get node for the owner $userFolder = $this->rootFolder->getUserFolder($owner); - if (!$userFolder->isSubNode($path)) { + if ($path->getId() !== $userFolder->getId() && !$userFolder->isSubNode($path)) { $path = $userFolder->getById($path->getId())[0]; } @@ -1245,7 +1245,12 @@ class Manager implements IManager { if ($currentAccess) { $ownerPath = $path->getPath(); - list(, , , $ownerPath) = explode('/', $ownerPath, 4); + $ownerPath = explode('/', $ownerPath, 4); + if (count($ownerPath) < 4) { + $ownerPath = ''; + } else { + $ownerPath = $ownerPath[3]; + } $al['users'][$owner] = [ 'node_id' => $path->getId(), 'node_path' => '/' . $ownerPath, diff --git a/lib/private/Share20/ProviderFactory.php b/lib/private/Share20/ProviderFactory.php index beb3a0965d6..c79f58f6ba6 100644 --- a/lib/private/Share20/ProviderFactory.php +++ b/lib/private/Share20/ProviderFactory.php @@ -23,6 +23,7 @@ */ namespace OC\Share20; +use OC\CapabilitiesManager; use OCA\FederatedFileSharing\AddressHandler; use OCA\FederatedFileSharing\DiscoveryManager; use OCA\FederatedFileSharing\FederatedShareProvider; @@ -160,7 +161,9 @@ class ProviderFactory implements IProviderFactory { $this->serverContainer->getURLGenerator(), $this->serverContainer->getActivityManager(), $settingsManager, - $this->serverContainer->query(Defaults::class) + $this->serverContainer->query(Defaults::class), + $this->serverContainer->getHasher(), + $this->serverContainer->query(CapabilitiesManager::class) ); } diff --git a/lib/public/Defaults.php b/lib/public/Defaults.php index 591da18c7ee..dbde78bce68 100644 --- a/lib/public/Defaults.php +++ b/lib/public/Defaults.php @@ -51,7 +51,7 @@ class Defaults { * actual defaults * @since 6.0.0 */ - function __construct(\OC_Defaults $defaults = null) { + public function __construct(\OC_Defaults $defaults = null) { if ($defaults === null) { $defaults = \OC::$server->getThemingDefaults(); } diff --git a/lib/public/Files/Config/IUserMountCache.php b/lib/public/Files/Config/IUserMountCache.php index c141d019c2f..cf30d8fb431 100644 --- a/lib/public/Files/Config/IUserMountCache.php +++ b/lib/public/Files/Config/IUserMountCache.php @@ -53,10 +53,11 @@ interface IUserMountCache { * Get all cached mounts by storage * * @param int $numericStorageId + * @param string|null $user limit the results to a single user @since 12.0.0 * @return ICachedMountInfo[] * @since 9.0.0 */ - public function getMountsForStorageId($numericStorageId); + public function getMountsForStorageId($numericStorageId, $user = null); /** * Get all cached mounts by root @@ -71,10 +72,11 @@ interface IUserMountCache { * Get all cached mounts that contain a file * * @param int $fileId + * @param string|null $user optionally restrict the results to a single user @since 12.0.0 * @return ICachedMountInfo[] * @since 9.0.0 */ - public function getMountsForFileId($fileId); + public function getMountsForFileId($fileId, $user = null); /** * Remove all cached mounts for a user diff --git a/lib/public/Mail/IEMailTemplate.php b/lib/public/Mail/IEMailTemplate.php index ab7713e8e2c..05e2fe92beb 100644 --- a/lib/public/Mail/IEMailTemplate.php +++ b/lib/public/Mail/IEMailTemplate.php @@ -45,7 +45,7 @@ namespace OCP\Mail; * * $emailTemplate->addFooter('Optional footer text'); * - * $htmlContent = $emailTemplate->renderHTML(); + * $htmlContent = $emailTemplate->renderHtml(); * $plainContent = $emailTemplate->renderText(); * * @since 12.0.0 @@ -122,7 +122,7 @@ interface IEMailTemplate { * * @since 12.0.0 */ - public function renderHTML(); + public function renderHtml(); /** * Returns the rendered plain text email as string diff --git a/settings/Controller/AdminSettingsController.php b/settings/Controller/AdminSettingsController.php index 4bc986e708e..6c915be6f94 100644 --- a/settings/Controller/AdminSettingsController.php +++ b/settings/Controller/AdminSettingsController.php @@ -135,6 +135,10 @@ class AdminSettingsController extends Controller { /** @var \OC\Settings\Section[] $prioritizedSections */ foreach($sections as $prioritizedSections) { foreach ($prioritizedSections as $section) { + if (empty($this->settingsManager->getAdminSettings($section->getID()))) { + continue; + } + $icon = ''; if ($section instanceof IIconSection) { $icon = $section->getIcon(); diff --git a/settings/Controller/CheckSetupController.php b/settings/Controller/CheckSetupController.php index 5e2aa365f67..58de0f4e6d1 100644 --- a/settings/Controller/CheckSetupController.php +++ b/settings/Controller/CheckSetupController.php @@ -373,7 +373,7 @@ Raw output * Checks whether a PHP opcache is properly set up * @return bool */ - private function isOpcacheProperlySetup() { + protected function isOpcacheProperlySetup() { $iniWrapper = new IniGetWrapper(); $isOpcacheProperlySetUp = true; diff --git a/settings/Controller/MailSettingsController.php b/settings/Controller/MailSettingsController.php index ed742059665..df13b46b13c 100644 --- a/settings/Controller/MailSettingsController.php +++ b/settings/Controller/MailSettingsController.php @@ -156,7 +156,7 @@ class MailSettingsController extends Controller { $message = $this->mailer->createMessage(); $message->setTo([$email => $displayName]); $message->setSubject($this->l10n->t('Email setting test')); - $message->setHtmlBody($template->renderHTML()); + $message->setHtmlBody($template->renderHtml()); $message->setPlainBody($template->renderText()); $errors = $this->mailer->send($message); if (!empty($errors)) { diff --git a/settings/Hooks.php b/settings/Hooks.php index 721aeb23886..2d8b17ebfd9 100644 --- a/settings/Hooks.php +++ b/settings/Hooks.php @@ -104,7 +104,7 @@ class Hooks { $message->setTo([$user->getEMailAddress() => $user->getDisplayName()]); $message->setSubject($this->l->t('Password for %1$s changed on %2$s', [$user->getDisplayName(), $instanceUrl])); $message->setBody($template->renderText(), 'text/plain'); - $message->setHtmlBody($template->renderHTML()); + $message->setHtmlBody($template->renderHtml()); $this->mailer->send($message); } @@ -157,7 +157,7 @@ class Hooks { $message->setTo([$oldMailAddress => $user->getDisplayName()]); $message->setSubject($this->l->t('Email address for %1$s changed on %2$s', [$user->getDisplayName(), $instanceUrl])); $message->setBody($template->renderText(), 'text/plain'); - $message->setHtmlBody($template->renderHTML()); + $message->setHtmlBody($template->renderHtml()); $this->mailer->send($message); } diff --git a/settings/Mailer/NewUserMailHelper.php b/settings/Mailer/NewUserMailHelper.php index 75ec62e5ad5..911952794fd 100644 --- a/settings/Mailer/NewUserMailHelper.php +++ b/settings/Mailer/NewUserMailHelper.php @@ -158,7 +158,7 @@ class NewUserMailHelper { $message = $this->mailer->createMessage(); $message->setTo([$user->getEMailAddress() => $user->getDisplayName()]); $message->setSubject($this->l10n->t('Your %s account was created', [$this->themingDefaults->getName()])); - $message->setHtmlBody($emailTemplate->renderHTML()); + $message->setHtmlBody($emailTemplate->renderHtml()); $message->setPlainBody($emailTemplate->renderText()); $message->setFrom([$this->fromAddress => $this->themingDefaults->getName()]); $this->mailer->send($message); diff --git a/settings/l10n/de.js b/settings/l10n/de.js index 6f761b7eacd..374eacc614d 100644 --- a/settings/l10n/de.js +++ b/settings/l10n/de.js @@ -4,6 +4,9 @@ OC.L10N.register( "{actor} changed your password" : "{actor} hat Dein Passwort geändert", "You changed your password" : "Du hast Dein Passwort geändert", "Your password was reset by an administrator" : "Dein Passwort wurde vom Administrator zurückgesetzt", + "{actor} changed your email address" : "{actor} hat Deine E-Mail-Adresse geändert", + "You changed your email address" : "Du hst erfolgreich deine E-Mail-Adresse geändert", + "Your email address was changed by an administrator" : "Deine E-Mail-Adresse wurde von einen Administrator geändert", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Dein <strong>Passwort</strong> oder Deine <strong>E.Mail-Adresse</strong> wurde geändert", "Enabled" : "Aktiviert", "Not enabled" : "Nicht aktiviert", @@ -14,6 +17,7 @@ OC.L10N.register( "Authentication error" : "Authentifizierungsfehler", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Bitte gib ein Wiederherstellungspasswort für das Administratorkonto an, da sonst alle Benutzerdaten verlorengehen.", "Wrong admin recovery password. Please check the password and try again." : "Falsches Wiederherstellungspasswort für das Admin-Konto. Bitte überprüfe das Passwort und versuche es erneut.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber der Benutzerschlüssel wurde erfolgreich aktualisiert.", "installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing", "Federated Cloud Sharing" : "Federated-Cloud-Sharing", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL verwendet eine veraltete %s Version (%s). Bitte aktualisiere dein Betriebssystem, da ansonsten Funktionen, wie z.B. %s, nicht zuverlässig funktionieren werden.", @@ -22,6 +26,10 @@ OC.L10N.register( "Group already exists." : "Gruppe existiert bereits.", "Unable to add group." : "Gruppe konnte nicht angelegt werden.", "Unable to delete group." : "Gruppe konnte nicht gelöscht werden.", + "Invalid SMTP password." : "Falsches SMTP-Passwort", + "Well done, %s!" : "Gut gemacht, %s!", + "If you received this email, the email configuration seems to be correct." : "Wenn du diese E-Mail empfangen hast, sind die E-Mail-Einstellungen richtig", + "Email setting test" : "E-Mail-Einstellungen testen", "Mail could not be sent. Check your mail server log" : "E-Mail konnte nicht versendet werden. Bitte die Logs des Mail-Servers prüfen.", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfe Deine Einstellungen. (Fehler: %s)", "You need to set your user email before being able to send test emails." : "Zunächst muss die Benutzer-E-Mail-Adresse angegeben werden, bevor Test-E-Mails verschickt werden können.", @@ -68,6 +76,7 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist", "Migration started …" : "Migration begonnen…", "Not saved" : "Nicht gespeichert", + "Sending…" : "Senden…", "Email sent" : "E-Mail wurde verschickt", "Official" : "Offiziell", "All" : "Alle", @@ -90,6 +99,7 @@ OC.L10N.register( "Updating...." : "Aktualisiere…", "Error while updating app" : "Fehler beim Aktualisieren der App", "Updated" : "Aktualisiert", + "Uninstalling …" : "Deinstalliere…", "Error while uninstalling app" : "Fehler beim Deinstallieren der App", "Uninstall" : "Deinstallieren", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Du wirst in 5 Sekunden zu Aktualisierungsseite weitergeleitet", @@ -209,6 +219,7 @@ OC.L10N.register( "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Deine Datenbank läuft nicht mit der \"READ COMMITED\" Transaktionsisolationsstufe. Dies kann Probleme hervorrufen, wenn mehrere Aktionen parallel ausgeführt werden.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s ist in einer älteren Version als %2$s installiert. Aus Stabilitäts- und Performancegründen empfehlen wir eine Aktualisierung auf eine neuere %1$s-Version", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Das PHP-Modul 'fileinfo' fehlt. Wir empfehlen dieses Modul zu aktivieren um die besten Resultate bei der Erkennung der Dateitypen zu erreichen.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transaktionales Sperren ist deaktiviert, was zu Problemen mit Laufzeitbedingungen führen kann. 'filelocking.enabled' in der config.php aktivieren, um diese Probleme zu vermeiden. Weitere Informationen findest du in unserer <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Dokumentation ↗</a>.", "System locale can not be set to a one which supports UTF-8." : "Es kann kein Systemgebietsschema gesetzt werden, das UTF-8 unterstützt.", "This means that there might be problems with certain characters in file names." : "Dies bedeutet, dass es zu Problemen mit bestimmten Zeichen in Dateinamen kommen kann.", diff --git a/settings/l10n/de.json b/settings/l10n/de.json index 70e25c359d0..249b2bd795d 100644 --- a/settings/l10n/de.json +++ b/settings/l10n/de.json @@ -2,6 +2,9 @@ "{actor} changed your password" : "{actor} hat Dein Passwort geändert", "You changed your password" : "Du hast Dein Passwort geändert", "Your password was reset by an administrator" : "Dein Passwort wurde vom Administrator zurückgesetzt", + "{actor} changed your email address" : "{actor} hat Deine E-Mail-Adresse geändert", + "You changed your email address" : "Du hst erfolgreich deine E-Mail-Adresse geändert", + "Your email address was changed by an administrator" : "Deine E-Mail-Adresse wurde von einen Administrator geändert", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Dein <strong>Passwort</strong> oder Deine <strong>E.Mail-Adresse</strong> wurde geändert", "Enabled" : "Aktiviert", "Not enabled" : "Nicht aktiviert", @@ -12,6 +15,7 @@ "Authentication error" : "Authentifizierungsfehler", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Bitte gib ein Wiederherstellungspasswort für das Administratorkonto an, da sonst alle Benutzerdaten verlorengehen.", "Wrong admin recovery password. Please check the password and try again." : "Falsches Wiederherstellungspasswort für das Admin-Konto. Bitte überprüfe das Passwort und versuche es erneut.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber der Benutzerschlüssel wurde erfolgreich aktualisiert.", "installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing", "Federated Cloud Sharing" : "Federated-Cloud-Sharing", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL verwendet eine veraltete %s Version (%s). Bitte aktualisiere dein Betriebssystem, da ansonsten Funktionen, wie z.B. %s, nicht zuverlässig funktionieren werden.", @@ -20,6 +24,10 @@ "Group already exists." : "Gruppe existiert bereits.", "Unable to add group." : "Gruppe konnte nicht angelegt werden.", "Unable to delete group." : "Gruppe konnte nicht gelöscht werden.", + "Invalid SMTP password." : "Falsches SMTP-Passwort", + "Well done, %s!" : "Gut gemacht, %s!", + "If you received this email, the email configuration seems to be correct." : "Wenn du diese E-Mail empfangen hast, sind die E-Mail-Einstellungen richtig", + "Email setting test" : "E-Mail-Einstellungen testen", "Mail could not be sent. Check your mail server log" : "E-Mail konnte nicht versendet werden. Bitte die Logs des Mail-Servers prüfen.", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfe Deine Einstellungen. (Fehler: %s)", "You need to set your user email before being able to send test emails." : "Zunächst muss die Benutzer-E-Mail-Adresse angegeben werden, bevor Test-E-Mails verschickt werden können.", @@ -66,6 +74,7 @@ "Migration in progress. Please wait until the migration is finished" : "Migration läuft. Bitte warte, bis die Migration abgeschlossen ist", "Migration started …" : "Migration begonnen…", "Not saved" : "Nicht gespeichert", + "Sending…" : "Senden…", "Email sent" : "E-Mail wurde verschickt", "Official" : "Offiziell", "All" : "Alle", @@ -88,6 +97,7 @@ "Updating...." : "Aktualisiere…", "Error while updating app" : "Fehler beim Aktualisieren der App", "Updated" : "Aktualisiert", + "Uninstalling …" : "Deinstalliere…", "Error while uninstalling app" : "Fehler beim Deinstallieren der App", "Uninstall" : "Deinstallieren", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Die App wurde aktiviert, muss aber aktualisiert werden. Du wirst in 5 Sekunden zu Aktualisierungsseite weitergeleitet", @@ -207,6 +217,7 @@ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Deine Datenbank läuft nicht mit der \"READ COMMITED\" Transaktionsisolationsstufe. Dies kann Probleme hervorrufen, wenn mehrere Aktionen parallel ausgeführt werden.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s ist in einer älteren Version als %2$s installiert. Aus Stabilitäts- und Performancegründen empfehlen wir eine Aktualisierung auf eine neuere %1$s-Version", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Das PHP-Modul 'fileinfo' fehlt. Wir empfehlen dieses Modul zu aktivieren um die besten Resultate bei der Erkennung der Dateitypen zu erreichen.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transaktionales Sperren ist deaktiviert, was zu Problemen mit Laufzeitbedingungen führen kann. 'filelocking.enabled' in der config.php aktivieren, um diese Probleme zu vermeiden. Weitere Informationen findest du in unserer <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Dokumentation ↗</a>.", "System locale can not be set to a one which supports UTF-8." : "Es kann kein Systemgebietsschema gesetzt werden, das UTF-8 unterstützt.", "This means that there might be problems with certain characters in file names." : "Dies bedeutet, dass es zu Problemen mit bestimmten Zeichen in Dateinamen kommen kann.", diff --git a/settings/l10n/de_DE.js b/settings/l10n/de_DE.js index 88ab8eb4871..5f25ae9d460 100644 --- a/settings/l10n/de_DE.js +++ b/settings/l10n/de_DE.js @@ -4,6 +4,9 @@ OC.L10N.register( "{actor} changed your password" : "{actor} hat Ihr Passwort geändert", "You changed your password" : "Sie haben Ihr Passwort geändert", "Your password was reset by an administrator" : "Ihr Passwort wurde vom Administrator zurückgesetzt", + "{actor} changed your email address" : "{Aktör} EMail Adresse geändert", + "You changed your email address" : "Du hast deine EMail Adresse geändert", + "Your email address was changed by an administrator" : "Deine EMail Adresse wurde durch den Administrator geändert", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ihr <strong>Passwort</strong> oder Ihre <strong>E.Mail-Adresse</strong> wurde geändert", "Enabled" : "Aktiviert", "Not enabled" : "Nicht aktiviert", @@ -14,6 +17,7 @@ OC.L10N.register( "Authentication error" : "Authentifizierungsfehler", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Bitte geben Sie ein Wiederherstellungspasswort für das Administratorkonto an, da sonst alle Benutzerdaten verlorengehen.", "Wrong admin recovery password. Please check the password and try again." : "Falsches Wiederherstellungspasswort für das Admin-Konto. Bitte überprüfen Sie das Passwort und versuchen Sie es erneut.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert.", "installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing", "Federated Cloud Sharing" : "Federated-Cloud-Sharing", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL verwendet eine veraltete %s Version (%s). Bitte aktualisieren Sie ihr Betriebssystem, da ansonsten Funktionen, wie z.B. %s, nicht zuverlässig funktionieren werden.", @@ -22,6 +26,10 @@ OC.L10N.register( "Group already exists." : "Gruppe existiert bereits.", "Unable to add group." : "Gruppe konnte nicht angelegt werden.", "Unable to delete group." : "Gruppe konnte nicht gelöscht werden.", + "Invalid SMTP password." : "Ungültiges SMTP Passwort.", + "Well done, %s!" : "Gut gemacht, 1 %s!", + "If you received this email, the email configuration seems to be correct." : "Wenn du diese EMail empfangen hast, scheint die EMail Konfiguration korrekt zu sein.", + "Email setting test" : "EMail Einstellung Test", "Mail could not be sent. Check your mail server log" : "E-Mail konnte nicht versendet werden. Bitte die Logs des Mail-Servers prüfen.", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfen Sie Ihre Einstellungen. (Fehler: %s)", "You need to set your user email before being able to send test emails." : "Sie müssen Ihre Benutzer-E-Mail-Adresse einstellen, bevor Sie Test-E-Mails versenden können.", @@ -68,6 +76,7 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migration in Arbeit. Bitte warten Sie, bis die Migration beendet ist", "Migration started …" : "Migration begonnen…", "Not saved" : "Nicht gespeichert", + "Sending…" : "Senden...", "Email sent" : "E-Mail gesendet", "Official" : "Offiziell", "All" : "Alle", @@ -90,6 +99,7 @@ OC.L10N.register( "Updating...." : "Aktualisiere…", "Error while updating app" : "Es ist ein Fehler während der Aktualisierung aufgetreten", "Updated" : "Aktualisiert", + "Uninstalling …" : "Deinstallieren...", "Error while uninstalling app" : "Fehler beim Deinstallieren der App", "Uninstall" : "Deinstallieren", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Die App wurde aktiviert, aber sie benötigt ein Update. Sie werden zur Update Seite in 5 Sekunden weitergeleitet.", @@ -209,6 +219,7 @@ OC.L10N.register( "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Ihre Datenbank läuft nicht mit der \"READ COMMITED\" Transaktionsisolationsstufe. Dies kann Probleme hervorrufen, wenn mehrere Aktionen parallel ausgeführt werden.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s ist in einer älteren Version als %2$s installiert. Aus Stabilitäts- und Performancegründen empfehlen wir eine Aktualisierung auf eine neuere %1$s-Version", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Das PHP Modul 'fileinfo' fehlt. Wir empfehlen dringend, das Modul zu aktivieren, um beste Ergebnisse mit MIME Typ Erkennung zu erhalten.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transaktionales Sperren ist deaktiviert, was zu Problemen mit Laufzeitbedingungen führen kann. Aktivieren Sie 'filelocking.enabled' in der config.php diese Probleme zu vermeiden. Weitere Informationen findest Sie in unserer <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Dokumentation ↗</a>.", "System locale can not be set to a one which supports UTF-8." : "Es kann kein Systemgebietsschema gesetzt werden, das UTF-8 unterstützt.", "This means that there might be problems with certain characters in file names." : "Dies bedeutet, dass es zu Problemen mit bestimmten Zeichen in Dateinamen kommen kann.", diff --git a/settings/l10n/de_DE.json b/settings/l10n/de_DE.json index 10dde6b5ea1..d6f6326fb1a 100644 --- a/settings/l10n/de_DE.json +++ b/settings/l10n/de_DE.json @@ -2,6 +2,9 @@ "{actor} changed your password" : "{actor} hat Ihr Passwort geändert", "You changed your password" : "Sie haben Ihr Passwort geändert", "Your password was reset by an administrator" : "Ihr Passwort wurde vom Administrator zurückgesetzt", + "{actor} changed your email address" : "{Aktör} EMail Adresse geändert", + "You changed your email address" : "Du hast deine EMail Adresse geändert", + "Your email address was changed by an administrator" : "Deine EMail Adresse wurde durch den Administrator geändert", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ihr <strong>Passwort</strong> oder Ihre <strong>E.Mail-Adresse</strong> wurde geändert", "Enabled" : "Aktiviert", "Not enabled" : "Nicht aktiviert", @@ -12,6 +15,7 @@ "Authentication error" : "Authentifizierungsfehler", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Bitte geben Sie ein Wiederherstellungspasswort für das Administratorkonto an, da sonst alle Benutzerdaten verlorengehen.", "Wrong admin recovery password. Please check the password and try again." : "Falsches Wiederherstellungspasswort für das Admin-Konto. Bitte überprüfen Sie das Passwort und versuchen Sie es erneut.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Das Backend unterstützt die Passwortänderung nicht, aber das Verschlüsselungspasswort des Benutzers wurde aktualisiert.", "installing and updating apps via the app store or Federated Cloud Sharing" : "Das Installieren und Aktualisieren von Apps durch den App-Store oder durch Federated Cloud Sharing", "Federated Cloud Sharing" : "Federated-Cloud-Sharing", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL verwendet eine veraltete %s Version (%s). Bitte aktualisieren Sie ihr Betriebssystem, da ansonsten Funktionen, wie z.B. %s, nicht zuverlässig funktionieren werden.", @@ -20,6 +24,10 @@ "Group already exists." : "Gruppe existiert bereits.", "Unable to add group." : "Gruppe konnte nicht angelegt werden.", "Unable to delete group." : "Gruppe konnte nicht gelöscht werden.", + "Invalid SMTP password." : "Ungültiges SMTP Passwort.", + "Well done, %s!" : "Gut gemacht, 1 %s!", + "If you received this email, the email configuration seems to be correct." : "Wenn du diese EMail empfangen hast, scheint die EMail Konfiguration korrekt zu sein.", + "Email setting test" : "EMail Einstellung Test", "Mail could not be sent. Check your mail server log" : "E-Mail konnte nicht versendet werden. Bitte die Logs des Mail-Servers prüfen.", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Beim Senden der E-Mail ist ein Problem aufgetreten. Bitte überprüfen Sie Ihre Einstellungen. (Fehler: %s)", "You need to set your user email before being able to send test emails." : "Sie müssen Ihre Benutzer-E-Mail-Adresse einstellen, bevor Sie Test-E-Mails versenden können.", @@ -66,6 +74,7 @@ "Migration in progress. Please wait until the migration is finished" : "Migration in Arbeit. Bitte warten Sie, bis die Migration beendet ist", "Migration started …" : "Migration begonnen…", "Not saved" : "Nicht gespeichert", + "Sending…" : "Senden...", "Email sent" : "E-Mail gesendet", "Official" : "Offiziell", "All" : "Alle", @@ -88,6 +97,7 @@ "Updating...." : "Aktualisiere…", "Error while updating app" : "Es ist ein Fehler während der Aktualisierung aufgetreten", "Updated" : "Aktualisiert", + "Uninstalling …" : "Deinstallieren...", "Error while uninstalling app" : "Fehler beim Deinstallieren der App", "Uninstall" : "Deinstallieren", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Die App wurde aktiviert, aber sie benötigt ein Update. Sie werden zur Update Seite in 5 Sekunden weitergeleitet.", @@ -207,6 +217,7 @@ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dies wird wahrscheinlich durch Zwischenspeicher/Beschleuniger wie etwa Zend OPcache oder eAccelerator verursacht.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Ihre Datenbank läuft nicht mit der \"READ COMMITED\" Transaktionsisolationsstufe. Dies kann Probleme hervorrufen, wenn mehrere Aktionen parallel ausgeführt werden.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s ist in einer älteren Version als %2$s installiert. Aus Stabilitäts- und Performancegründen empfehlen wir eine Aktualisierung auf eine neuere %1$s-Version", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Das PHP Modul 'fileinfo' fehlt. Wir empfehlen dringend, das Modul zu aktivieren, um beste Ergebnisse mit MIME Typ Erkennung zu erhalten.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transaktionales Sperren ist deaktiviert, was zu Problemen mit Laufzeitbedingungen führen kann. Aktivieren Sie 'filelocking.enabled' in der config.php diese Probleme zu vermeiden. Weitere Informationen findest Sie in unserer <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">Dokumentation ↗</a>.", "System locale can not be set to a one which supports UTF-8." : "Es kann kein Systemgebietsschema gesetzt werden, das UTF-8 unterstützt.", "This means that there might be problems with certain characters in file names." : "Dies bedeutet, dass es zu Problemen mit bestimmten Zeichen in Dateinamen kommen kann.", diff --git a/settings/l10n/es.js b/settings/l10n/es.js index 4db6df5ec61..e7aefa3f8d7 100644 --- a/settings/l10n/es.js +++ b/settings/l10n/es.js @@ -4,6 +4,9 @@ OC.L10N.register( "{actor} changed your password" : "{actor} cambió su contraseña", "You changed your password" : "Usted ha cambiado su contraseña", "Your password was reset by an administrator" : "Su contraseña ha sido restaurada por un administrador", + "{actor} changed your email address" : "{actor} cambió su dirección de correo electrónico", + "You changed your email address" : "Ha cambiado su cuenta de correo", + "Your email address was changed by an administrator" : "Su cuenta de correo ha sido cambiada por un administrador", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Su <strong>contraseña</strong> o <strong>dirección de correo electrónico</strong> fue modificado", "Enabled" : "Habilitado", "Not enabled" : "No habilitado", @@ -22,6 +25,10 @@ OC.L10N.register( "Group already exists." : "El grupo ya existe.", "Unable to add group." : "No se pudo agregar el grupo.", "Unable to delete group." : "No se pudo eliminar el grupo.", + "Invalid SMTP password." : "Contraseña SMTP inválida", + "Well done, %s!" : "Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si recibe este correo, la configuración de correo parece ser correcta.", + "Email setting test" : "Prueba de configuración de correo", "Mail could not be sent. Check your mail server log" : "El correo no pudo ser enviado. Revise el registro de su servidor de correo", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocurrió un problema al enviar el mensaje de correo electrónico. Revise su configuración. (Error: %s)", "You need to set your user email before being able to send test emails." : "Tiene que configurar su dirección de correo electrónico antes de poder enviar mensajes de prueba.", @@ -68,6 +75,7 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migración en curso. Por favor, espere hasta que la migración esté finalizada.", "Migration started …" : "Migración iniciada...", "Not saved" : "No guardado", + "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Official" : "Oficial", "All" : "Todos", @@ -90,6 +98,7 @@ OC.L10N.register( "Updating...." : "Actualizando...", "Error while updating app" : "Error mientras se actualizaba la aplicación", "Updated" : "Actualizado", + "Uninstalling …" : "Desinstalando ...", "Error while uninstalling app" : "Error al desinstalar la aplicación", "Uninstall" : "Desinstalar", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido activada pero necesita ser actualizada. Seras redirigido a la pagina de actualizariones en 5 segundos.", diff --git a/settings/l10n/es.json b/settings/l10n/es.json index d4675177e27..39aba973842 100644 --- a/settings/l10n/es.json +++ b/settings/l10n/es.json @@ -2,6 +2,9 @@ "{actor} changed your password" : "{actor} cambió su contraseña", "You changed your password" : "Usted ha cambiado su contraseña", "Your password was reset by an administrator" : "Su contraseña ha sido restaurada por un administrador", + "{actor} changed your email address" : "{actor} cambió su dirección de correo electrónico", + "You changed your email address" : "Ha cambiado su cuenta de correo", + "Your email address was changed by an administrator" : "Su cuenta de correo ha sido cambiada por un administrador", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Su <strong>contraseña</strong> o <strong>dirección de correo electrónico</strong> fue modificado", "Enabled" : "Habilitado", "Not enabled" : "No habilitado", @@ -20,6 +23,10 @@ "Group already exists." : "El grupo ya existe.", "Unable to add group." : "No se pudo agregar el grupo.", "Unable to delete group." : "No se pudo eliminar el grupo.", + "Invalid SMTP password." : "Contraseña SMTP inválida", + "Well done, %s!" : "Bien hecho, %s!", + "If you received this email, the email configuration seems to be correct." : "Si recibe este correo, la configuración de correo parece ser correcta.", + "Email setting test" : "Prueba de configuración de correo", "Mail could not be sent. Check your mail server log" : "El correo no pudo ser enviado. Revise el registro de su servidor de correo", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocurrió un problema al enviar el mensaje de correo electrónico. Revise su configuración. (Error: %s)", "You need to set your user email before being able to send test emails." : "Tiene que configurar su dirección de correo electrónico antes de poder enviar mensajes de prueba.", @@ -66,6 +73,7 @@ "Migration in progress. Please wait until the migration is finished" : "Migración en curso. Por favor, espere hasta que la migración esté finalizada.", "Migration started …" : "Migración iniciada...", "Not saved" : "No guardado", + "Sending…" : "Enviando...", "Email sent" : "Correo electrónico enviado", "Official" : "Oficial", "All" : "Todos", @@ -88,6 +96,7 @@ "Updating...." : "Actualizando...", "Error while updating app" : "Error mientras se actualizaba la aplicación", "Updated" : "Actualizado", + "Uninstalling …" : "Desinstalando ...", "Error while uninstalling app" : "Error al desinstalar la aplicación", "Uninstall" : "Desinstalar", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "La aplicación ha sido activada pero necesita ser actualizada. Seras redirigido a la pagina de actualizariones en 5 segundos.", diff --git a/settings/l10n/es_MX.js b/settings/l10n/es_MX.js index 8b4edf432d4..ce181f27870 100644 --- a/settings/l10n/es_MX.js +++ b/settings/l10n/es_MX.js @@ -219,6 +219,7 @@ OC.L10N.register( "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Esto es posiblemente causado por un caché/acelerador tal como Zend OPcache o eAccelerator. ", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Su base de datos no puede correr con el nivel de aislamiento de transacción de \"READ COMMITTED\". Puede causar problemas cuando mútiples acciones sean ejecutadas en paralelo.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s con versión inferior a %2$s está instalado, por razones de estabilidad y desempeño le recomendamos actualizar a una versión de %1$s mas reciente. ", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "El modulo PHP 'fileinfo' no ha sido encontrado. Le recomendamos ámpliamente que habilite este módulo para obtener los mejores resultados en la detección de tipos MIME.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "El bloqueo de archivos transaccional se encuentra deshabilitado, esto puede generar temas bajo ciertas condiciones. Abilite 'filelocking.enabled' en el archivo config.php para evitar problemas. Favor de consultar la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentatcón ↗</a> para mayor información.", "System locale can not be set to a one which supports UTF-8." : "No es posible establecer la regionalización del sistema a una que soporte UTF-8.", "This means that there might be problems with certain characters in file names." : "Esto significa que puede haber problemas con ciertos caracteres en los nombres de los archivos.", diff --git a/settings/l10n/es_MX.json b/settings/l10n/es_MX.json index a79c6d4c3dd..a792d2ea771 100644 --- a/settings/l10n/es_MX.json +++ b/settings/l10n/es_MX.json @@ -217,6 +217,7 @@ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Esto es posiblemente causado por un caché/acelerador tal como Zend OPcache o eAccelerator. ", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Su base de datos no puede correr con el nivel de aislamiento de transacción de \"READ COMMITTED\". Puede causar problemas cuando mútiples acciones sean ejecutadas en paralelo.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s con versión inferior a %2$s está instalado, por razones de estabilidad y desempeño le recomendamos actualizar a una versión de %1$s mas reciente. ", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "El modulo PHP 'fileinfo' no ha sido encontrado. Le recomendamos ámpliamente que habilite este módulo para obtener los mejores resultados en la detección de tipos MIME.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "El bloqueo de archivos transaccional se encuentra deshabilitado, esto puede generar temas bajo ciertas condiciones. Abilite 'filelocking.enabled' en el archivo config.php para evitar problemas. Favor de consultar la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentatcón ↗</a> para mayor información.", "System locale can not be set to a one which supports UTF-8." : "No es posible establecer la regionalización del sistema a una que soporte UTF-8.", "This means that there might be problems with certain characters in file names." : "Esto significa que puede haber problemas con ciertos caracteres en los nombres de los archivos.", diff --git a/settings/l10n/fr.js b/settings/l10n/fr.js index d76b0aee73d..a82c30d2209 100644 --- a/settings/l10n/fr.js +++ b/settings/l10n/fr.js @@ -4,6 +4,9 @@ OC.L10N.register( "{actor} changed your password" : "{actor} a modifié votre mot de passe", "You changed your password" : "Vous avez modifié votre mot de passe", "Your password was reset by an administrator" : "Votre mot de passe a été réinitialisé par un administrateur", + "{actor} changed your email address" : "{actor} a modifié votre adresse e-mail", + "You changed your email address" : "Vous avez modifié votre adresse e-mail", + "Your email address was changed by an administrator" : "Votre adresse e-mail a été modifiée par un administrateur", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Votre <strong>mot de passe</strong> ou <strong>adresse e-mail</strong> a été modifié", "Enabled" : "Activées", "Not enabled" : "Désactivées", @@ -14,6 +17,7 @@ OC.L10N.register( "Authentication error" : "Erreur d'authentification", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Veuillez fournir un mot de passe administrateur de récupération de données, sinon toutes les données de l'utilisateur seront perdues", "Wrong admin recovery password. Please check the password and try again." : "Mot de passe administrateur de récupération de données non valable. Veuillez vérifier le mot de passe et essayer à nouveau.", + "Backend doesn't support password change, but the user's encryption key was updated." : "L'infrastructure d'arrière-plan ne supporte pas la modification de mot de passe, mais la clef de chiffrement de l'utilisateur a été mise à jour.", "installing and updating apps via the app store or Federated Cloud Sharing" : "le partage Federated Cloud ou l'installation et la mise à jour d'applications par l'app store", "Federated Cloud Sharing" : "Federated Cloud Sharing", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL utilise %s %s, qui est une version obsolète. Veuillez mettre à jour votre système d'exploitation, ou des fonctionnalités telles que %s ne fonctionneront pas correctement.", @@ -22,6 +26,10 @@ OC.L10N.register( "Group already exists." : "Ce groupe existe déjà.", "Unable to add group." : "Impossible d'ajouter le groupe.", "Unable to delete group." : "Impossible de supprimer le groupe.", + "Invalid SMTP password." : "Mot de passe SMTP incorrect.", + "Well done, %s!" : "Bien joué, %s !", + "If you received this email, the email configuration seems to be correct." : "Si vous avez reçu cet e-mail, la configuration de l'adresse e-mail semble être correcte.", + "Email setting test" : "Test des paramètres e-mail", "Mail could not be sent. Check your mail server log" : "L'email n'a pu être envoyé. Vérifiez le journal du serveur de messagerie", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Une erreur est survenue lors de l'envoi de l'e-mail. Veuillez vérifier vos paramètres. (Erreur: %s)", "You need to set your user email before being able to send test emails." : "Vous devez définir une adresse e-mail dans vos paramètres personnels avant de pouvoir envoyer des e-mails de test.", @@ -68,6 +76,7 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migration en cours. Veuillez attendre que celle-ci se termine", "Migration started …" : "Migration démarrée...", "Not saved" : "Non sauvegardé", + "Sending…" : "Envoi en cours...", "Email sent" : "E-mail envoyé", "Official" : "Officielle", "All" : "Tous", @@ -90,6 +99,7 @@ OC.L10N.register( "Updating...." : "Mise à jour...", "Error while updating app" : "Erreur lors de la mise à jour de l'application", "Updated" : "Mise à jour terminée", + "Uninstalling …" : "Désinstallation...", "Error while uninstalling app" : "Erreur lors de la désinstallation de l'application", "Uninstall" : "Désinstaller", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'application a été activée mais doit être mise à jour. Vous allez être redirigé vers la page des mises à jour dans 5 secondes.", @@ -209,6 +219,7 @@ OC.L10N.register( "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "La raison est probablement l'utilisation d'un cache / accélérateur tel que Zend OPcache ou eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Votre base de données ne fonctionne pas avec le niveau d'isolation de transaction \"READ COMMITED\". Ceci peut causer des problèmes quand plusieurs actions sont exécutées en parallèle.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "Une version de %1$s plus ancienne que %2$s est installée. Pour améliorer la stabilité et les performances, nous recommandons de mettre %1$s à jour.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Le module PHP 'fileinfo' est manquant. Il est vivement recommandé de l'activer afin d'obtenir de meilleurs résultats de détection du type MIME.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Le verrouillage transactionnel de fichiers est désactivé. Cela peut causer des conflits en cas d'accès concurrent. Configurez 'filelocking.enabled' dans config.php pour éviter ces problèmes. Consultez la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> pour plus d'informations.", "System locale can not be set to a one which supports UTF-8." : "Les paramètres régionaux n'ont pu être configurés avec prise en charge d'UTF-8.", "This means that there might be problems with certain characters in file names." : "Cela signifie qu'il pourrait y avoir des problèmes avec certains caractères dans les noms de fichier.", diff --git a/settings/l10n/fr.json b/settings/l10n/fr.json index a65c73dfc77..a0feba51dd1 100644 --- a/settings/l10n/fr.json +++ b/settings/l10n/fr.json @@ -2,6 +2,9 @@ "{actor} changed your password" : "{actor} a modifié votre mot de passe", "You changed your password" : "Vous avez modifié votre mot de passe", "Your password was reset by an administrator" : "Votre mot de passe a été réinitialisé par un administrateur", + "{actor} changed your email address" : "{actor} a modifié votre adresse e-mail", + "You changed your email address" : "Vous avez modifié votre adresse e-mail", + "Your email address was changed by an administrator" : "Votre adresse e-mail a été modifiée par un administrateur", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Votre <strong>mot de passe</strong> ou <strong>adresse e-mail</strong> a été modifié", "Enabled" : "Activées", "Not enabled" : "Désactivées", @@ -12,6 +15,7 @@ "Authentication error" : "Erreur d'authentification", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Veuillez fournir un mot de passe administrateur de récupération de données, sinon toutes les données de l'utilisateur seront perdues", "Wrong admin recovery password. Please check the password and try again." : "Mot de passe administrateur de récupération de données non valable. Veuillez vérifier le mot de passe et essayer à nouveau.", + "Backend doesn't support password change, but the user's encryption key was updated." : "L'infrastructure d'arrière-plan ne supporte pas la modification de mot de passe, mais la clef de chiffrement de l'utilisateur a été mise à jour.", "installing and updating apps via the app store or Federated Cloud Sharing" : "le partage Federated Cloud ou l'installation et la mise à jour d'applications par l'app store", "Federated Cloud Sharing" : "Federated Cloud Sharing", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL utilise %s %s, qui est une version obsolète. Veuillez mettre à jour votre système d'exploitation, ou des fonctionnalités telles que %s ne fonctionneront pas correctement.", @@ -20,6 +24,10 @@ "Group already exists." : "Ce groupe existe déjà.", "Unable to add group." : "Impossible d'ajouter le groupe.", "Unable to delete group." : "Impossible de supprimer le groupe.", + "Invalid SMTP password." : "Mot de passe SMTP incorrect.", + "Well done, %s!" : "Bien joué, %s !", + "If you received this email, the email configuration seems to be correct." : "Si vous avez reçu cet e-mail, la configuration de l'adresse e-mail semble être correcte.", + "Email setting test" : "Test des paramètres e-mail", "Mail could not be sent. Check your mail server log" : "L'email n'a pu être envoyé. Vérifiez le journal du serveur de messagerie", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Une erreur est survenue lors de l'envoi de l'e-mail. Veuillez vérifier vos paramètres. (Erreur: %s)", "You need to set your user email before being able to send test emails." : "Vous devez définir une adresse e-mail dans vos paramètres personnels avant de pouvoir envoyer des e-mails de test.", @@ -66,6 +74,7 @@ "Migration in progress. Please wait until the migration is finished" : "Migration en cours. Veuillez attendre que celle-ci se termine", "Migration started …" : "Migration démarrée...", "Not saved" : "Non sauvegardé", + "Sending…" : "Envoi en cours...", "Email sent" : "E-mail envoyé", "Official" : "Officielle", "All" : "Tous", @@ -88,6 +97,7 @@ "Updating...." : "Mise à jour...", "Error while updating app" : "Erreur lors de la mise à jour de l'application", "Updated" : "Mise à jour terminée", + "Uninstalling …" : "Désinstallation...", "Error while uninstalling app" : "Erreur lors de la désinstallation de l'application", "Uninstall" : "Désinstaller", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "L'application a été activée mais doit être mise à jour. Vous allez être redirigé vers la page des mises à jour dans 5 secondes.", @@ -207,6 +217,7 @@ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "La raison est probablement l'utilisation d'un cache / accélérateur tel que Zend OPcache ou eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Votre base de données ne fonctionne pas avec le niveau d'isolation de transaction \"READ COMMITED\". Ceci peut causer des problèmes quand plusieurs actions sont exécutées en parallèle.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "Une version de %1$s plus ancienne que %2$s est installée. Pour améliorer la stabilité et les performances, nous recommandons de mettre %1$s à jour.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Le module PHP 'fileinfo' est manquant. Il est vivement recommandé de l'activer afin d'obtenir de meilleurs résultats de détection du type MIME.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Le verrouillage transactionnel de fichiers est désactivé. Cela peut causer des conflits en cas d'accès concurrent. Configurez 'filelocking.enabled' dans config.php pour éviter ces problèmes. Consultez la <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> pour plus d'informations.", "System locale can not be set to a one which supports UTF-8." : "Les paramètres régionaux n'ont pu être configurés avec prise en charge d'UTF-8.", "This means that there might be problems with certain characters in file names." : "Cela signifie qu'il pourrait y avoir des problèmes avec certains caractères dans les noms de fichier.", diff --git a/settings/l10n/nb.js b/settings/l10n/nb.js index 12bc36441a0..642f6228887 100644 --- a/settings/l10n/nb.js +++ b/settings/l10n/nb.js @@ -4,6 +4,9 @@ OC.L10N.register( "{actor} changed your password" : "{actor} endret ditt passord", "You changed your password" : "Du endret ditt passord", "Your password was reset by an administrator" : "Ditt passord ble tilbakestilt av en administrator", + "{actor} changed your email address" : "{actor} endret din e-postadresse", + "You changed your email address" : "Du endret din e-postadresse", + "Your email address was changed by an administrator" : "Din e-postadresse ble endret av en administrator", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ditt <strong>passord</strong> eller din <strong>e-postadresse</strong> ble endret", "Enabled" : "Aktiv", "Not enabled" : "Ikke aktivert", @@ -14,6 +17,7 @@ OC.L10N.register( "Authentication error" : "Autentiseringsfeil", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Angi et administrativt gjenopprettingspassord; ellers vil alle brukerdata gå tapt.", "Wrong admin recovery password. Please check the password and try again." : "Feil administrativt gjenopprettingspassord. Sjekk passordet og prøv igjen.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Tjeneren støtter ikke endring av passord, men brukerens krypteringsnøkkel ble oppdatert.", "installing and updating apps via the app store or Federated Cloud Sharing" : "installering og oppdatering av apper via app-butikken eller ved deling i sammenknyttet sky", "Federated Cloud Sharing" : "Sammenknyttet sky-deling", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL bruker en utdatert %s-versjon (%s). Oppdater operativsystemet ditt; ellers vil ikke funksjoner som %s virke korrekt.", @@ -22,6 +26,8 @@ OC.L10N.register( "Group already exists." : "Gruppe finnes allerede.", "Unable to add group." : "Kunne ikke legge til gruppe.", "Unable to delete group." : "Kan ikke slette gruppe.", + "Invalid SMTP password." : "Ugyldig SMTP-passord.", + "Well done, %s!" : "Bra gjort, %s!", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Et problem oppstod med sending av e-post. Sjekk innstillingene. (Feil: %s)", "You need to set your user email before being able to send test emails." : "Du må sette e-postadressen for brukeren din før du kan teste sending av e-post.", "Invalid request" : "Ugyldig forespørsel", @@ -67,6 +73,7 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Migrering utføres. Vent til den er ferdig.", "Migration started …" : "Migrering startet…", "Not saved" : "Ikke lagret", + "Sending…" : "Sender…", "Email sent" : "E-post sendt", "Official" : "Offisiell", "All" : "Alle", @@ -89,6 +96,7 @@ OC.L10N.register( "Updating...." : "Oppdaterer…", "Error while updating app" : "Feil ved oppdatering av app", "Updated" : "Oppdatert", + "Uninstalling …" : "Avinstallerer…", "Error while uninstalling app" : "Feil ved avinstallering av app", "Uninstall" : "Avinstaller", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Programmet er aktivert men må oppdateres. Du vil bli omdirigert til oppdateringssiden om 5 sekunder.", diff --git a/settings/l10n/nb.json b/settings/l10n/nb.json index 2d56de041e9..70ba564e205 100644 --- a/settings/l10n/nb.json +++ b/settings/l10n/nb.json @@ -2,6 +2,9 @@ "{actor} changed your password" : "{actor} endret ditt passord", "You changed your password" : "Du endret ditt passord", "Your password was reset by an administrator" : "Ditt passord ble tilbakestilt av en administrator", + "{actor} changed your email address" : "{actor} endret din e-postadresse", + "You changed your email address" : "Du endret din e-postadresse", + "Your email address was changed by an administrator" : "Din e-postadresse ble endret av en administrator", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ditt <strong>passord</strong> eller din <strong>e-postadresse</strong> ble endret", "Enabled" : "Aktiv", "Not enabled" : "Ikke aktivert", @@ -12,6 +15,7 @@ "Authentication error" : "Autentiseringsfeil", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Angi et administrativt gjenopprettingspassord; ellers vil alle brukerdata gå tapt.", "Wrong admin recovery password. Please check the password and try again." : "Feil administrativt gjenopprettingspassord. Sjekk passordet og prøv igjen.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Tjeneren støtter ikke endring av passord, men brukerens krypteringsnøkkel ble oppdatert.", "installing and updating apps via the app store or Federated Cloud Sharing" : "installering og oppdatering av apper via app-butikken eller ved deling i sammenknyttet sky", "Federated Cloud Sharing" : "Sammenknyttet sky-deling", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL bruker en utdatert %s-versjon (%s). Oppdater operativsystemet ditt; ellers vil ikke funksjoner som %s virke korrekt.", @@ -20,6 +24,8 @@ "Group already exists." : "Gruppe finnes allerede.", "Unable to add group." : "Kunne ikke legge til gruppe.", "Unable to delete group." : "Kan ikke slette gruppe.", + "Invalid SMTP password." : "Ugyldig SMTP-passord.", + "Well done, %s!" : "Bra gjort, %s!", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Et problem oppstod med sending av e-post. Sjekk innstillingene. (Feil: %s)", "You need to set your user email before being able to send test emails." : "Du må sette e-postadressen for brukeren din før du kan teste sending av e-post.", "Invalid request" : "Ugyldig forespørsel", @@ -65,6 +71,7 @@ "Migration in progress. Please wait until the migration is finished" : "Migrering utføres. Vent til den er ferdig.", "Migration started …" : "Migrering startet…", "Not saved" : "Ikke lagret", + "Sending…" : "Sender…", "Email sent" : "E-post sendt", "Official" : "Offisiell", "All" : "Alle", @@ -87,6 +94,7 @@ "Updating...." : "Oppdaterer…", "Error while updating app" : "Feil ved oppdatering av app", "Updated" : "Oppdatert", + "Uninstalling …" : "Avinstallerer…", "Error while uninstalling app" : "Feil ved avinstallering av app", "Uninstall" : "Avinstaller", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Programmet er aktivert men må oppdateres. Du vil bli omdirigert til oppdateringssiden om 5 sekunder.", diff --git a/settings/l10n/pl.js b/settings/l10n/pl.js index cfd95acbab2..37d4e699ad7 100644 --- a/settings/l10n/pl.js +++ b/settings/l10n/pl.js @@ -4,6 +4,9 @@ OC.L10N.register( "{actor} changed your password" : "{actor} zmienił twoje hasło", "You changed your password" : "Zmieniłeś/-aś swoje hasło", "Your password was reset by an administrator" : "Twoj hasło zostało zresetowane przez administratora", + "{actor} changed your email address" : "{actor} zmienił twój adres e-mail", + "You changed your email address" : "Zmieniłeś/-aś swój adres e-mail", + "Your email address was changed by an administrator" : "Twój adres e-mail został zmieniony przez administratora", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Twoje <strong>hasło</strong> lub <strong>e-mail</strong> zostal zmieniony", "Enabled" : "Włączone", "Not enabled" : "Nie włączone", @@ -14,6 +17,7 @@ OC.L10N.register( "Authentication error" : "Błąd uwierzytelniania", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Proszę podać hasło odzyskiwania administratora; w innym przypadku wszystkie dane zostaną utracone.", "Wrong admin recovery password. Please check the password and try again." : "Błędne hasło odzyskiwania. Sprawdź hasło i spróbuj ponownie.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Backend nie wspiera zmiany hasła, ale klucz szyfrujący użytkownika został zaktualizowany.", "installing and updating apps via the app store or Federated Cloud Sharing" : "instalacji i aktualizacji aplikacji za pośrednictwem sklepu z aplikacjami lub udziałem Stowarzyszonej Chmury", "Federated Cloud Sharing" : "Dzielenie się ze Stowarzyszoną Chmurą", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL używa starej %s wersji (%s). Proszę zaktualizować swój system operacyjny albo funkcje takie jak %s nie będą działały niezawodnie.", @@ -22,6 +26,10 @@ OC.L10N.register( "Group already exists." : "Grupa już istnieje.", "Unable to add group." : "Nie można dodać grupy.", "Unable to delete group." : "Nie można usunąć grupy.", + "Invalid SMTP password." : "Błędne hasło SMTP.", + "Well done, %s!" : "Dobra robota, %s!", + "If you received this email, the email configuration seems to be correct." : "Jeśli otrzymałeś/-aś tego e-maila to wydaje się, że konfiguracja e-maili jest prawidłowa.", + "Email setting test" : "Testuj ustawienia e-maili", "Mail could not be sent. Check your mail server log" : "E-mail nie mógł zostać wysłany. Sprawdź logi swojego serwera poczty", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Wystąpił błąd podczas wysyłania wiadomości e-mail. Proszę zmienić swoje ustawienia. (Error: %s)", "You need to set your user email before being able to send test emails." : "Musisz najpierw ustawić użytkownika e-mail, aby móc wysyłać wiadomości testowe.", @@ -68,6 +76,7 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Trwa migracja. Proszę poczekać, aż migracja dobiegnie końca.", "Migration started …" : "Migracja rozpoczęta...", "Not saved" : "Nie zapisany", + "Sending…" : "Wysyłam...", "Email sent" : "E-mail wysłany", "Official" : "Oficjalny", "All" : "Wszystkie", @@ -90,6 +99,7 @@ OC.L10N.register( "Updating...." : "Aktualizacja w toku...", "Error while updating app" : "Błąd podczas aktualizacji aplikacji", "Updated" : "Zaktualizowano", + "Uninstalling …" : "Odinstalowuję...", "Error while uninstalling app" : "Błąd przy odinstalowywaniu aplikacji", "Uninstall" : "Odinstaluj", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacja została włączona i musi być aktualizowana. Zostaniesz przekierowany na stronę aktualizacji za 5 sekund.", @@ -209,6 +219,7 @@ OC.L10N.register( "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dzieje się tak prawdopodobnie przez cache lub akcelerator taki jak Zend OPcache lub eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Twoja baza danych nie działa z poziomem izolacji transakcji \"READ COMMITTED\". Może to powodować problemy kiedy wiele akcji będzie wykonywanych równolegle.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s jest zainstalowany poniżej wersji %2$s. Zalecamy podniesienie %1$s do wersji nowszej ze względu na stabilność i wydajność.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Brakuje modułu PHP 'fileinfo'. Silnie zalecamy włączenie tego modułu, aby osiągać lepsze wyniki w wykrywaniu typów plików MIME.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transakcyjne blokowanie plików jest wyłączone. Może to powodować problemy w działaniu. Włącz 'filelocking.enabled' w config.php, aby rozwiązać te problemy. Sprawdź <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentację ↗</a>, aby uzyskać więcej informacji.", "System locale can not be set to a one which supports UTF-8." : "Ustawienia regionalne systemu nie można ustawić na jeden, który obsługuje UTF-8.", "This means that there might be problems with certain characters in file names." : "Oznacza to, że mogą być problemy z niektórymi znakami w nazwach plików.", diff --git a/settings/l10n/pl.json b/settings/l10n/pl.json index 563be5d8c7a..ed43bbaed61 100644 --- a/settings/l10n/pl.json +++ b/settings/l10n/pl.json @@ -2,6 +2,9 @@ "{actor} changed your password" : "{actor} zmienił twoje hasło", "You changed your password" : "Zmieniłeś/-aś swoje hasło", "Your password was reset by an administrator" : "Twoj hasło zostało zresetowane przez administratora", + "{actor} changed your email address" : "{actor} zmienił twój adres e-mail", + "You changed your email address" : "Zmieniłeś/-aś swój adres e-mail", + "Your email address was changed by an administrator" : "Twój adres e-mail został zmieniony przez administratora", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Twoje <strong>hasło</strong> lub <strong>e-mail</strong> zostal zmieniony", "Enabled" : "Włączone", "Not enabled" : "Nie włączone", @@ -12,6 +15,7 @@ "Authentication error" : "Błąd uwierzytelniania", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Proszę podać hasło odzyskiwania administratora; w innym przypadku wszystkie dane zostaną utracone.", "Wrong admin recovery password. Please check the password and try again." : "Błędne hasło odzyskiwania. Sprawdź hasło i spróbuj ponownie.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Backend nie wspiera zmiany hasła, ale klucz szyfrujący użytkownika został zaktualizowany.", "installing and updating apps via the app store or Federated Cloud Sharing" : "instalacji i aktualizacji aplikacji za pośrednictwem sklepu z aplikacjami lub udziałem Stowarzyszonej Chmury", "Federated Cloud Sharing" : "Dzielenie się ze Stowarzyszoną Chmurą", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL używa starej %s wersji (%s). Proszę zaktualizować swój system operacyjny albo funkcje takie jak %s nie będą działały niezawodnie.", @@ -20,6 +24,10 @@ "Group already exists." : "Grupa już istnieje.", "Unable to add group." : "Nie można dodać grupy.", "Unable to delete group." : "Nie można usunąć grupy.", + "Invalid SMTP password." : "Błędne hasło SMTP.", + "Well done, %s!" : "Dobra robota, %s!", + "If you received this email, the email configuration seems to be correct." : "Jeśli otrzymałeś/-aś tego e-maila to wydaje się, że konfiguracja e-maili jest prawidłowa.", + "Email setting test" : "Testuj ustawienia e-maili", "Mail could not be sent. Check your mail server log" : "E-mail nie mógł zostać wysłany. Sprawdź logi swojego serwera poczty", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Wystąpił błąd podczas wysyłania wiadomości e-mail. Proszę zmienić swoje ustawienia. (Error: %s)", "You need to set your user email before being able to send test emails." : "Musisz najpierw ustawić użytkownika e-mail, aby móc wysyłać wiadomości testowe.", @@ -66,6 +74,7 @@ "Migration in progress. Please wait until the migration is finished" : "Trwa migracja. Proszę poczekać, aż migracja dobiegnie końca.", "Migration started …" : "Migracja rozpoczęta...", "Not saved" : "Nie zapisany", + "Sending…" : "Wysyłam...", "Email sent" : "E-mail wysłany", "Official" : "Oficjalny", "All" : "Wszystkie", @@ -88,6 +97,7 @@ "Updating...." : "Aktualizacja w toku...", "Error while updating app" : "Błąd podczas aktualizacji aplikacji", "Updated" : "Zaktualizowano", + "Uninstalling …" : "Odinstalowuję...", "Error while uninstalling app" : "Błąd przy odinstalowywaniu aplikacji", "Uninstall" : "Odinstaluj", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikacja została włączona i musi być aktualizowana. Zostaniesz przekierowany na stronę aktualizacji za 5 sekund.", @@ -207,6 +217,7 @@ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Dzieje się tak prawdopodobnie przez cache lub akcelerator taki jak Zend OPcache lub eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Twoja baza danych nie działa z poziomem izolacji transakcji \"READ COMMITTED\". Może to powodować problemy kiedy wiele akcji będzie wykonywanych równolegle.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s jest zainstalowany poniżej wersji %2$s. Zalecamy podniesienie %1$s do wersji nowszej ze względu na stabilność i wydajność.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "Brakuje modułu PHP 'fileinfo'. Silnie zalecamy włączenie tego modułu, aby osiągać lepsze wyniki w wykrywaniu typów plików MIME.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Transakcyjne blokowanie plików jest wyłączone. Może to powodować problemy w działaniu. Włącz 'filelocking.enabled' w config.php, aby rozwiązać te problemy. Sprawdź <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">dokumentację ↗</a>, aby uzyskać więcej informacji.", "System locale can not be set to a one which supports UTF-8." : "Ustawienia regionalne systemu nie można ustawić na jeden, który obsługuje UTF-8.", "This means that there might be problems with certain characters in file names." : "Oznacza to, że mogą być problemy z niektórymi znakami w nazwach plików.", diff --git a/settings/l10n/pt_BR.js b/settings/l10n/pt_BR.js index 45f33c1aaee..2d104a65516 100644 --- a/settings/l10n/pt_BR.js +++ b/settings/l10n/pt_BR.js @@ -4,6 +4,9 @@ OC.L10N.register( "{actor} changed your password" : "{actor} alterou sua senha", "You changed your password" : "Você alterou sua senha", "Your password was reset by an administrator" : "Sua senha foi redefinida pelo administrador", + "{actor} changed your email address" : "{actor} alterou seu email", + "You changed your email address" : "Você alterou seu email", + "Your email address was changed by an administrator" : "Seu email foi alterado pelo administrador", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Sua <strong>senha</strong> ou <strong>email</strong> foram alterados", "Enabled" : "Habilitado", "Not enabled" : "Desabilitado", @@ -14,6 +17,7 @@ OC.L10N.register( "Authentication error" : "Erro de autenticação", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor, forneça uma senha de recuperação do administrador, caso contrário todos os dados serão perdidos.", "Wrong admin recovery password. Please check the password and try again." : "Senha de recuperação do administrador incorreta. Por favor, verifique a senha e tente novamente.", + "Backend doesn't support password change, but the user's encryption key was updated." : "O backend não suporte alteração de senha mas a chave de criptografia do usuário foi alterada.", "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e atualizando aplicativos via loja de aplicativos ou Nuvem Compartilhada Federada", "Federated Cloud Sharing" : "Compartilhamento de Nuvem Federada", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL está usando uma versão %s desatualizada (%s). Por favor, atualize seu sistema operacional ou recursos como %s não funcionarão de forma confiável.", @@ -22,6 +26,10 @@ OC.L10N.register( "Group already exists." : "O grupo já existe.", "Unable to add group." : "Não é possível adicionar o grupo.", "Unable to delete group." : "Não é possível excluir o grupo.", + "Invalid SMTP password." : "Senha SMTP incorreta.", + "Well done, %s!" : "Bom trabalho, %s!", + "If you received this email, the email configuration seems to be correct." : "Se você recebeu este email, é sinal que a configuração do email está correta.", + "Email setting test" : "Teste da configuração de email", "Mail could not be sent. Check your mail server log" : "Email não pode ser enviado. Verifique o log do seu servidor de email", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu um problema ao enviar o email. Por favor, revise suas configurações. (Erro: %s)", "You need to set your user email before being able to send test emails." : "Você precisa configurar seu email de usuário antes de ser capaz de enviar emails de teste.", @@ -66,8 +74,9 @@ OC.L10N.register( "Are you really sure you want add {domain} as trusted domain?" : "Tem certeza que deseja adicionar {domain} como um domínio confiável?", "Add trusted domain" : "Adicionar domínio confiável", "Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até esteja finalizada", - "Migration started …" : "Migração iniciada ...", + "Migration started …" : "Migração iniciada...", "Not saved" : "Não salvo", + "Sending…" : "Enviando...", "Email sent" : "Email enviado", "Official" : "Oficial", "All" : "Todos", @@ -90,6 +99,7 @@ OC.L10N.register( "Updating...." : "Atualizando...", "Error while updating app" : "Erro ao atualizar aplicativo", "Updated" : "Atualizado", + "Uninstalling …" : "Desinstalando...", "Error while uninstalling app" : "Erro enquanto desinstalava aplicativo", "Uninstall" : "Desinstalar", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "O aplicativo foi habilitado mas precisa ser atualizado. Você será redirecionado para a página de atualização em 5 segundos.", @@ -209,6 +219,7 @@ OC.L10N.register( "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isso provavelmente é causado por um cache/acelerador, como Zend OPcache ou eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Seu banco de dados não está em execução com o nível de isolamento de transação \"READ COMITTED\". Isso poderá causar problemas quando várias ações são executadas em paralelo.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s abaixo da versão %2$s está instalado. Por razões de estabilidade e desempenho recomendamos a atualização para a nova versão %1$s.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "O módulo PHP 'fileinfo' está faltando. Recomendamos fortemente habilitá-lo para obter um melhor resultado com a detecção de tipo MIME.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "O bloqueio de arquivo transacional está desativado. Isso pode levar a problemas com as condições de corrida. Ative 'filelocking.enabled' em config.php para evitar estes problemas. Veja a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentação ↗</a> para mais informações.", "System locale can not be set to a one which supports UTF-8." : "Localização do sistema não pôde ser definido para um que suporta UTF-8.", "This means that there might be problems with certain characters in file names." : "Isso significa que pode haver problemas com certos caracteres em nomes de arquivo.", @@ -264,8 +275,8 @@ OC.L10N.register( "Admin documentation" : "Documentação do administrador", "Visit website" : "Visitar website", "Report a bug" : "Reportar um erro", - "Show description …" : "Mostrar descrição ...", - "Hide description …" : "Ocultar descrição ...", + "Show description …" : "Mostrar descrição...", + "Hide description …" : "Ocultar descrição...", "This app has an update available." : "Este aplicativo tem uma atualização disponível.", "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Este aplicativo não possui uma versão mínima atribuída para uso no Nextcloud. Isto poderá se converter em um erro no futuro.", "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Este aplicativo não possui uma versão máxima atribuida para uso no Nextcloud. Isto poderá se converter em um erro no futuro.", @@ -370,7 +381,7 @@ OC.L10N.register( "Unable to add user to group %s" : "Não foi possível adicionar o usuário ao grupo %s", "Unable to remove user from group %s" : "Não foi possível excluir o usuário do grupo %s", "Sending..." : "Enviando...", - "Uninstalling ...." : "Desinstalando ...", + "Uninstalling ...." : "Desinstalando...", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "O módulo PHP 'fileinfo' está faltando. Recomendamos que ative este módulo para obter melhores resultados com a detecção de mime-type.", "Hey there,<br><br>just letting you know that you now have a %s account.<br><br>Your username: <strong>%s</strong><br>Access it: <strong><a href=\"%s\">%s</a></strong><br><br>" : "Olá,<br><br>só para lhe informar que agora você tem uma %s conta.<br><br>Nome de usuário: <strong>%s</strong><br>Acesse: <strong><a href=\"%s\">%s</a></strong><br><br>", "Cheers!" : "Saúde!", diff --git a/settings/l10n/pt_BR.json b/settings/l10n/pt_BR.json index f2d045dfdbc..bdef13bdd12 100644 --- a/settings/l10n/pt_BR.json +++ b/settings/l10n/pt_BR.json @@ -2,6 +2,9 @@ "{actor} changed your password" : "{actor} alterou sua senha", "You changed your password" : "Você alterou sua senha", "Your password was reset by an administrator" : "Sua senha foi redefinida pelo administrador", + "{actor} changed your email address" : "{actor} alterou seu email", + "You changed your email address" : "Você alterou seu email", + "Your email address was changed by an administrator" : "Seu email foi alterado pelo administrador", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Sua <strong>senha</strong> ou <strong>email</strong> foram alterados", "Enabled" : "Habilitado", "Not enabled" : "Desabilitado", @@ -12,6 +15,7 @@ "Authentication error" : "Erro de autenticação", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Por favor, forneça uma senha de recuperação do administrador, caso contrário todos os dados serão perdidos.", "Wrong admin recovery password. Please check the password and try again." : "Senha de recuperação do administrador incorreta. Por favor, verifique a senha e tente novamente.", + "Backend doesn't support password change, but the user's encryption key was updated." : "O backend não suporte alteração de senha mas a chave de criptografia do usuário foi alterada.", "installing and updating apps via the app store or Federated Cloud Sharing" : "instalando e atualizando aplicativos via loja de aplicativos ou Nuvem Compartilhada Federada", "Federated Cloud Sharing" : "Compartilhamento de Nuvem Federada", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL está usando uma versão %s desatualizada (%s). Por favor, atualize seu sistema operacional ou recursos como %s não funcionarão de forma confiável.", @@ -20,6 +24,10 @@ "Group already exists." : "O grupo já existe.", "Unable to add group." : "Não é possível adicionar o grupo.", "Unable to delete group." : "Não é possível excluir o grupo.", + "Invalid SMTP password." : "Senha SMTP incorreta.", + "Well done, %s!" : "Bom trabalho, %s!", + "If you received this email, the email configuration seems to be correct." : "Se você recebeu este email, é sinal que a configuração do email está correta.", + "Email setting test" : "Teste da configuração de email", "Mail could not be sent. Check your mail server log" : "Email não pode ser enviado. Verifique o log do seu servidor de email", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Ocorreu um problema ao enviar o email. Por favor, revise suas configurações. (Erro: %s)", "You need to set your user email before being able to send test emails." : "Você precisa configurar seu email de usuário antes de ser capaz de enviar emails de teste.", @@ -64,8 +72,9 @@ "Are you really sure you want add {domain} as trusted domain?" : "Tem certeza que deseja adicionar {domain} como um domínio confiável?", "Add trusted domain" : "Adicionar domínio confiável", "Migration in progress. Please wait until the migration is finished" : "Migração em progresso. Por favor, aguarde até esteja finalizada", - "Migration started …" : "Migração iniciada ...", + "Migration started …" : "Migração iniciada...", "Not saved" : "Não salvo", + "Sending…" : "Enviando...", "Email sent" : "Email enviado", "Official" : "Oficial", "All" : "Todos", @@ -88,6 +97,7 @@ "Updating...." : "Atualizando...", "Error while updating app" : "Erro ao atualizar aplicativo", "Updated" : "Atualizado", + "Uninstalling …" : "Desinstalando...", "Error while uninstalling app" : "Erro enquanto desinstalava aplicativo", "Uninstall" : "Desinstalar", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "O aplicativo foi habilitado mas precisa ser atualizado. Você será redirecionado para a página de atualização em 5 segundos.", @@ -207,6 +217,7 @@ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isso provavelmente é causado por um cache/acelerador, como Zend OPcache ou eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Seu banco de dados não está em execução com o nível de isolamento de transação \"READ COMITTED\". Isso poderá causar problemas quando várias ações são executadas em paralelo.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s abaixo da versão %2$s está instalado. Por razões de estabilidade e desempenho recomendamos a atualização para a nova versão %1$s.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "O módulo PHP 'fileinfo' está faltando. Recomendamos fortemente habilitá-lo para obter um melhor resultado com a detecção de tipo MIME.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "O bloqueio de arquivo transacional está desativado. Isso pode levar a problemas com as condições de corrida. Ative 'filelocking.enabled' em config.php para evitar estes problemas. Veja a <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentação ↗</a> para mais informações.", "System locale can not be set to a one which supports UTF-8." : "Localização do sistema não pôde ser definido para um que suporta UTF-8.", "This means that there might be problems with certain characters in file names." : "Isso significa que pode haver problemas com certos caracteres em nomes de arquivo.", @@ -262,8 +273,8 @@ "Admin documentation" : "Documentação do administrador", "Visit website" : "Visitar website", "Report a bug" : "Reportar um erro", - "Show description …" : "Mostrar descrição ...", - "Hide description …" : "Ocultar descrição ...", + "Show description …" : "Mostrar descrição...", + "Hide description …" : "Ocultar descrição...", "This app has an update available." : "Este aplicativo tem uma atualização disponível.", "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Este aplicativo não possui uma versão mínima atribuída para uso no Nextcloud. Isto poderá se converter em um erro no futuro.", "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Este aplicativo não possui uma versão máxima atribuida para uso no Nextcloud. Isto poderá se converter em um erro no futuro.", @@ -368,7 +379,7 @@ "Unable to add user to group %s" : "Não foi possível adicionar o usuário ao grupo %s", "Unable to remove user from group %s" : "Não foi possível excluir o usuário do grupo %s", "Sending..." : "Enviando...", - "Uninstalling ...." : "Desinstalando ...", + "Uninstalling ...." : "Desinstalando...", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "O módulo PHP 'fileinfo' está faltando. Recomendamos que ative este módulo para obter melhores resultados com a detecção de mime-type.", "Hey there,<br><br>just letting you know that you now have a %s account.<br><br>Your username: <strong>%s</strong><br>Access it: <strong><a href=\"%s\">%s</a></strong><br><br>" : "Olá,<br><br>só para lhe informar que agora você tem uma %s conta.<br><br>Nome de usuário: <strong>%s</strong><br>Acesse: <strong><a href=\"%s\">%s</a></strong><br><br>", "Cheers!" : "Saúde!", diff --git a/settings/l10n/ru.js b/settings/l10n/ru.js index e51cdce5356..bdb832f517b 100644 --- a/settings/l10n/ru.js +++ b/settings/l10n/ru.js @@ -4,6 +4,9 @@ OC.L10N.register( "{actor} changed your password" : "{actor} сменил ваш пароль", "You changed your password" : "Вы сменили пароль", "Your password was reset by an administrator" : "Ваш пароль был сброшен администратором", + "{actor} changed your email address" : "{actor} сменил ваш адрес email", + "You changed your email address" : "Вы изменили свой адрес email", + "Your email address was changed by an administrator" : "Ваш адрес email был изменён администратором", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Вашr <strong>пароль</strong> или <strong>email</strong> были изменены", "Enabled" : "Включено", "Not enabled" : "Не включено", @@ -14,6 +17,7 @@ OC.L10N.register( "Authentication error" : "Ошибка аутентификации", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Введите пароль восстановления администратора, в противном случае все пользовательские данные будут утеряны.", "Wrong admin recovery password. Please check the password and try again." : "Неправильный пароль восстановления администратора. Проверьте пароль и попробуйте еще раз.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Используемый механизм не поддерживает смену паролей, но пользовательский ключ шифрования был обновлён.", "installing and updating apps via the app store or Federated Cloud Sharing" : "установка и обновление приложений через магазин приложений или федерацию облачных хранилищ", "Federated Cloud Sharing" : "Федерация облачных хранилищ", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL использует устаревшую версию %s (%s). Пожалуйста, обновите Вашу операционную систему, иначе такие возможности, как %s, не будут работать надежно.", @@ -22,6 +26,10 @@ OC.L10N.register( "Group already exists." : "Группа уже существует.", "Unable to add group." : "Невозможно добавить группу.", "Unable to delete group." : "Невозможно удалить группу.", + "Invalid SMTP password." : "Неверный пароль SMTP.", + "Well done, %s!" : "Отлично, %s!", + "If you received this email, the email configuration seems to be correct." : "Если вы получили это сообщение, значит электронная почта настроена правильно.", + "Email setting test" : "Проверка настроек электронной почты", "Mail could not be sent. Check your mail server log" : "Не удалось отправить почту. Проверьте журнал почтового сервера.", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Во время отправки письма произошла ошибка. Пожалуйста проверьте настройки. (Ошибка: %s)", "You need to set your user email before being able to send test emails." : "Вы должны настроить ваш собственный адрес электронной почты прежде чем отправлять тестовые сообщения.", @@ -68,6 +76,7 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Миграция в процессе. Пожалуйста, подождите завершения миграции", "Migration started …" : "Начата миграция ...", "Not saved" : "Не сохранено", + "Sending…" : "Отправка…", "Email sent" : "Письмо отправлено", "Official" : "Официальное", "All" : "Все", @@ -90,6 +99,7 @@ OC.L10N.register( "Updating...." : "Обновление...", "Error while updating app" : "Ошибка при обновлении приложения", "Updated" : "Обновлено", + "Uninstalling …" : "Удаление…", "Error while uninstalling app" : "Ошибка при удалении приложения", "Uninstall" : "Удалить", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Приложение было включено и нуждается в обновлении. Вас перенаправит на страницу обновления через 5 секунд.", @@ -209,6 +219,7 @@ OC.L10N.register( "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Возможно это вызвано кешем/ускорителем вроде Zend OPcache или eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Ваша база данных не работает в режиме изоляции транзакций \"READ COMMITED\". Это может вызвать проблемы, если несколько действий выполняется одновременно.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s ниже установленной версии %2$s, по причинам стабильности и производительности мы рекомендуем обновиться до новой версии %1$s.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP-модуль «fileinfo» отсутствует. Мы настоятельно рекомендуем включить этот модуль для улучшения определения типов (mime-type) файлов.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Блокировка передаваемых файлов отключена, это может привести к состоянию гонки. Включите параметр 'filelocking.enabled' в файла config.php для решения проблемы. Обратитесь к <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документации ↗</a> для получения дополнительной информации.", "System locale can not be set to a one which supports UTF-8." : "Невозможно установить системную локаль, поддерживающую UTF-8", "This means that there might be problems with certain characters in file names." : "Это значит, что могут быть проблемы с некоторыми символами в именах файлов.", diff --git a/settings/l10n/ru.json b/settings/l10n/ru.json index a84a4dec36d..19cb75c7651 100644 --- a/settings/l10n/ru.json +++ b/settings/l10n/ru.json @@ -2,6 +2,9 @@ "{actor} changed your password" : "{actor} сменил ваш пароль", "You changed your password" : "Вы сменили пароль", "Your password was reset by an administrator" : "Ваш пароль был сброшен администратором", + "{actor} changed your email address" : "{actor} сменил ваш адрес email", + "You changed your email address" : "Вы изменили свой адрес email", + "Your email address was changed by an administrator" : "Ваш адрес email был изменён администратором", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Вашr <strong>пароль</strong> или <strong>email</strong> были изменены", "Enabled" : "Включено", "Not enabled" : "Не включено", @@ -12,6 +15,7 @@ "Authentication error" : "Ошибка аутентификации", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Введите пароль восстановления администратора, в противном случае все пользовательские данные будут утеряны.", "Wrong admin recovery password. Please check the password and try again." : "Неправильный пароль восстановления администратора. Проверьте пароль и попробуйте еще раз.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Используемый механизм не поддерживает смену паролей, но пользовательский ключ шифрования был обновлён.", "installing and updating apps via the app store or Federated Cloud Sharing" : "установка и обновление приложений через магазин приложений или федерацию облачных хранилищ", "Federated Cloud Sharing" : "Федерация облачных хранилищ", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL использует устаревшую версию %s (%s). Пожалуйста, обновите Вашу операционную систему, иначе такие возможности, как %s, не будут работать надежно.", @@ -20,6 +24,10 @@ "Group already exists." : "Группа уже существует.", "Unable to add group." : "Невозможно добавить группу.", "Unable to delete group." : "Невозможно удалить группу.", + "Invalid SMTP password." : "Неверный пароль SMTP.", + "Well done, %s!" : "Отлично, %s!", + "If you received this email, the email configuration seems to be correct." : "Если вы получили это сообщение, значит электронная почта настроена правильно.", + "Email setting test" : "Проверка настроек электронной почты", "Mail could not be sent. Check your mail server log" : "Не удалось отправить почту. Проверьте журнал почтового сервера.", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Во время отправки письма произошла ошибка. Пожалуйста проверьте настройки. (Ошибка: %s)", "You need to set your user email before being able to send test emails." : "Вы должны настроить ваш собственный адрес электронной почты прежде чем отправлять тестовые сообщения.", @@ -66,6 +74,7 @@ "Migration in progress. Please wait until the migration is finished" : "Миграция в процессе. Пожалуйста, подождите завершения миграции", "Migration started …" : "Начата миграция ...", "Not saved" : "Не сохранено", + "Sending…" : "Отправка…", "Email sent" : "Письмо отправлено", "Official" : "Официальное", "All" : "Все", @@ -88,6 +97,7 @@ "Updating...." : "Обновление...", "Error while updating app" : "Ошибка при обновлении приложения", "Updated" : "Обновлено", + "Uninstalling …" : "Удаление…", "Error while uninstalling app" : "Ошибка при удалении приложения", "Uninstall" : "Удалить", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Приложение было включено и нуждается в обновлении. Вас перенаправит на страницу обновления через 5 секунд.", @@ -207,6 +217,7 @@ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Возможно это вызвано кешем/ускорителем вроде Zend OPcache или eAccelerator.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Ваша база данных не работает в режиме изоляции транзакций \"READ COMMITED\". Это может вызвать проблемы, если несколько действий выполняется одновременно.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s ниже установленной версии %2$s, по причинам стабильности и производительности мы рекомендуем обновиться до новой версии %1$s.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP-модуль «fileinfo» отсутствует. Мы настоятельно рекомендуем включить этот модуль для улучшения определения типов (mime-type) файлов.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "Блокировка передаваемых файлов отключена, это может привести к состоянию гонки. Включите параметр 'filelocking.enabled' в файла config.php для решения проблемы. Обратитесь к <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">документации ↗</a> для получения дополнительной информации.", "System locale can not be set to a one which supports UTF-8." : "Невозможно установить системную локаль, поддерживающую UTF-8", "This means that there might be problems with certain characters in file names." : "Это значит, что могут быть проблемы с некоторыми символами в именах файлов.", diff --git a/settings/l10n/tr.js b/settings/l10n/tr.js index 91cfac7430d..0a0dcc1390e 100644 --- a/settings/l10n/tr.js +++ b/settings/l10n/tr.js @@ -4,6 +4,9 @@ OC.L10N.register( "{actor} changed your password" : "{actor} parolanızı değiştirdi", "You changed your password" : "Parolanızı değiştirdiniz", "Your password was reset by an administrator" : "Parolanız bir yönetici tarafından sıfırlandı", + "{actor} changed your email address" : "{actor} e-posta adresinizi değiştirdi", + "You changed your email address" : "E-posta adresinizi değiştirdiniz", + "Your email address was changed by an administrator" : "E-posta adresiniz bir yönetici tarafından değiştirildi", "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Parolanız</strong> ya da <strong>e-posta adresiniz</strong> değiştirildi", "Enabled" : "Etkin", "Not enabled" : "Etkin değil", @@ -14,6 +17,7 @@ OC.L10N.register( "Authentication error" : "Kimlik doğrulama hatası", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Lütfen bir yönetici kurtarma parolası yazın, yoksa tüm kullanıcı verileri kaybolur", "Wrong admin recovery password. Please check the password and try again." : "Yönetici kurtarma parolası hatalı. Lütfen parolayı denetleyip yeniden deneyin.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Yönetim bölümünden parola değişikliği yapılamaz, ancak kullanıcının şifreleme anahtarı güncellendi.", "installing and updating apps via the app store or Federated Cloud Sharing" : "Uygulama mağazası ve Birleşmiş Bulut Paylaşımından uygulama kurma ve güncelleme", "Federated Cloud Sharing" : "Birleşmiş Bulut Paylaşımı", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL eski bir %s sürümü kullanıyor (%s). Lütfen işletim sisteminizi güncelleyin, yoksa %s gibi özellikler düzgün çalışmaz.", @@ -22,6 +26,10 @@ OC.L10N.register( "Group already exists." : "Grup zaten var.", "Unable to add group." : "Grup eklenemedi.", "Unable to delete group." : "Grup silinemedi.", + "Invalid SMTP password." : "SMTP parolası geçersiz.", + "Well done, %s!" : "Tamamdır %s!", + "If you received this email, the email configuration seems to be correct." : "Bu e-postayı aldıysanız e-posta ayarları doğru olarak yapılmıştır.", + "Email setting test" : "E-posta ayarları sınaması", "Mail could not be sent. Check your mail server log" : "Posta gönderilemedi. Posta sunucunuzun günlüklerine bakın", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "E-posta gönderilirken bir sorun çıktı. Lütfen ayarlarınızı gözden geçirin. (Hata: %s)", "You need to set your user email before being able to send test emails." : "Sınama e-postaları göndermeden önce kullanıcı e-postasını ayarlamalısınız.", @@ -68,6 +76,7 @@ OC.L10N.register( "Migration in progress. Please wait until the migration is finished" : "Aktarılıyor. Lütfen işlem tamamlanana kadar bekleyin", "Migration started …" : "Aktarım başladı ...", "Not saved" : "Kaydedilmedi", + "Sending…" : "Gönderiliyor...", "Email sent" : "E-posta gönderildi", "Official" : "Resmi", "All" : "Tümü", @@ -90,6 +99,7 @@ OC.L10N.register( "Updating...." : "Güncelleniyor....", "Error while updating app" : "Uygulama güncellenirken sorun çıktı", "Updated" : "Güncellendi", + "Uninstalling …" : "Kaldırılıyor...", "Error while uninstalling app" : "Uygulama kaldırılırken sorun çıktı", "Uninstall" : "Kaldır", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Uygulama etkinleştirilmiş fakat güncellenmesi gerekiyor. 5 saniye içinde güncelleme sayfasına yönlendirileceksiniz.", @@ -209,6 +219,7 @@ OC.L10N.register( "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu sorun genellikle Zend OPcache ya da eAccelerator gibi bir ön bellek/hızlandırıcı nedeniyle ortaya çıkar.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Veritabanınız \"READ COMMITTED\" işlem yalıtma düzeyinde çalışmıyor. Bu durum aynı anda birden çok işlem yapıldığında sorun çıkmasına yol açabilir.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s, %2$s sürümünden daha düşük bir sürüm kurulu. Kararlılık ve başarım için daha yeni bir %1$s sürümüne güncellemeniz önerilir.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP 'fileinfo' modülü bulunamadı. MIME türü algılamasında en iyi sonuçları elde etmek için bu modülü etkinleştirmeniz önerilir.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "İşlemsel dosya kilidi devre dışı. Bu durum yarış koşullarında (race condition) sorun çıkarabilir. Bu sorunlardan kaçınmak için config.php dosyasındaki 'filelocking.enabled' seçeneğini etkinleştirin. Ayrıntılı bilgi almak için <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">belgelere ↗</a> bakın.", "System locale can not be set to a one which supports UTF-8." : "Sistem dili UTF-8 destekleyenlerden biri olarak ayarlanamadı.", "This means that there might be problems with certain characters in file names." : "Bu durum dosya adlarında belirli karakterler kullanıldığında sorun çıkmasına yol açabilir.", diff --git a/settings/l10n/tr.json b/settings/l10n/tr.json index 30827903514..5bbb3080e25 100644 --- a/settings/l10n/tr.json +++ b/settings/l10n/tr.json @@ -2,6 +2,9 @@ "{actor} changed your password" : "{actor} parolanızı değiştirdi", "You changed your password" : "Parolanızı değiştirdiniz", "Your password was reset by an administrator" : "Parolanız bir yönetici tarafından sıfırlandı", + "{actor} changed your email address" : "{actor} e-posta adresinizi değiştirdi", + "You changed your email address" : "E-posta adresinizi değiştirdiniz", + "Your email address was changed by an administrator" : "E-posta adresiniz bir yönetici tarafından değiştirildi", "Your <strong>password</strong> or <strong>email</strong> was modified" : "<strong>Parolanız</strong> ya da <strong>e-posta adresiniz</strong> değiştirildi", "Enabled" : "Etkin", "Not enabled" : "Etkin değil", @@ -12,6 +15,7 @@ "Authentication error" : "Kimlik doğrulama hatası", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Lütfen bir yönetici kurtarma parolası yazın, yoksa tüm kullanıcı verileri kaybolur", "Wrong admin recovery password. Please check the password and try again." : "Yönetici kurtarma parolası hatalı. Lütfen parolayı denetleyip yeniden deneyin.", + "Backend doesn't support password change, but the user's encryption key was updated." : "Yönetim bölümünden parola değişikliği yapılamaz, ancak kullanıcının şifreleme anahtarı güncellendi.", "installing and updating apps via the app store or Federated Cloud Sharing" : "Uygulama mağazası ve Birleşmiş Bulut Paylaşımından uygulama kurma ve güncelleme", "Federated Cloud Sharing" : "Birleşmiş Bulut Paylaşımı", "cURL is using an outdated %s version (%s). Please update your operating system or features such as %s will not work reliably." : "cURL eski bir %s sürümü kullanıyor (%s). Lütfen işletim sisteminizi güncelleyin, yoksa %s gibi özellikler düzgün çalışmaz.", @@ -20,6 +24,10 @@ "Group already exists." : "Grup zaten var.", "Unable to add group." : "Grup eklenemedi.", "Unable to delete group." : "Grup silinemedi.", + "Invalid SMTP password." : "SMTP parolası geçersiz.", + "Well done, %s!" : "Tamamdır %s!", + "If you received this email, the email configuration seems to be correct." : "Bu e-postayı aldıysanız e-posta ayarları doğru olarak yapılmıştır.", + "Email setting test" : "E-posta ayarları sınaması", "Mail could not be sent. Check your mail server log" : "Posta gönderilemedi. Posta sunucunuzun günlüklerine bakın", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "E-posta gönderilirken bir sorun çıktı. Lütfen ayarlarınızı gözden geçirin. (Hata: %s)", "You need to set your user email before being able to send test emails." : "Sınama e-postaları göndermeden önce kullanıcı e-postasını ayarlamalısınız.", @@ -66,6 +74,7 @@ "Migration in progress. Please wait until the migration is finished" : "Aktarılıyor. Lütfen işlem tamamlanana kadar bekleyin", "Migration started …" : "Aktarım başladı ...", "Not saved" : "Kaydedilmedi", + "Sending…" : "Gönderiliyor...", "Email sent" : "E-posta gönderildi", "Official" : "Resmi", "All" : "Tümü", @@ -88,6 +97,7 @@ "Updating...." : "Güncelleniyor....", "Error while updating app" : "Uygulama güncellenirken sorun çıktı", "Updated" : "Güncellendi", + "Uninstalling …" : "Kaldırılıyor...", "Error while uninstalling app" : "Uygulama kaldırılırken sorun çıktı", "Uninstall" : "Kaldır", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Uygulama etkinleştirilmiş fakat güncellenmesi gerekiyor. 5 saniye içinde güncelleme sayfasına yönlendirileceksiniz.", @@ -207,6 +217,7 @@ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Bu sorun genellikle Zend OPcache ya da eAccelerator gibi bir ön bellek/hızlandırıcı nedeniyle ortaya çıkar.", "Your database does not run with \"READ COMMITTED\" transaction isolation level. This can cause problems when multiple actions are executed in parallel." : "Veritabanınız \"READ COMMITTED\" işlem yalıtma düzeyinde çalışmıyor. Bu durum aynı anda birden çok işlem yapıldığında sorun çıkmasına yol açabilir.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s, %2$s sürümünden daha düşük bir sürüm kurulu. Kararlılık ve başarım için daha yeni bir %1$s sürümüne güncellemeniz önerilir.", + "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with MIME type detection." : "PHP 'fileinfo' modülü bulunamadı. MIME türü algılamasında en iyi sonuçları elde etmek için bu modülü etkinleştirmeniz önerilir.", "Transactional file locking is disabled, this might lead to issues with race conditions. Enable 'filelocking.enabled' in config.php to avoid these problems. See the <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">documentation ↗</a> for more information." : "İşlemsel dosya kilidi devre dışı. Bu durum yarış koşullarında (race condition) sorun çıkarabilir. Bu sorunlardan kaçınmak için config.php dosyasındaki 'filelocking.enabled' seçeneğini etkinleştirin. Ayrıntılı bilgi almak için <a target=\"_blank\" rel=\"noreferrer\" href=\"%s\">belgelere ↗</a> bakın.", "System locale can not be set to a one which supports UTF-8." : "Sistem dili UTF-8 destekleyenlerden biri olarak ayarlanamadı.", "This means that there might be problems with certain characters in file names." : "Bu durum dosya adlarında belirli karakterler kullanıldığında sorun çıkmasına yol açabilir.", diff --git a/settings/routes.php b/settings/routes.php index 3f034d363e2..b76bb213d0c 100644 --- a/settings/routes.php +++ b/settings/routes.php @@ -37,7 +37,6 @@ namespace OC\Settings; $application = new Application(); $application->registerRoutes($this, [ 'resources' => [ - 'groups' => ['url' => '/settings/users/groups'], 'users' => ['url' => '/settings/users/users'], 'AuthSettings' => ['url' => '/settings/personal/authtokens'], ], @@ -69,6 +68,11 @@ $application->registerRoutes($this, [ ['name' => 'ChangePassword#changePersonalPassword', 'url' => '/settings/personal/changepassword', 'verb' => 'POST'], ['name' => 'ChangePassword#changeUserPassword', 'url' => '/settings/users/changepassword', 'verb' => 'POST'], ['name' => 'Personal#setLanguage', 'url' => '/settings/ajax/setlanguage.php', 'verb' => 'POST'], + ['name' => 'Groups#index', 'url' => '/settings/users/groups', 'verb' => 'GET'], + ['name' => 'Groups#show', 'url' => '/settings/users/groups/{id}', 'requirements' => ['id' => '[^?]*'], 'verb' => 'GET'], + ['name' => 'Groups#create', 'url' => '/settings/users/groups', 'verb' => 'POST'], + ['name' => 'Groups#update', 'url' => '/settings/users/groups/{id}', 'requirements' => ['id' => '[^?]*'], 'verb' => 'PUT'], + ['name' => 'Groups#destroy', 'url' => '/settings/users/groups/{id}', 'requirements' => ['id' => '[^?]*'], 'verb' => 'DELETE'], ] ]); diff --git a/tests/Core/Controller/LostControllerTest.php b/tests/Core/Controller/LostControllerTest.php index ab3f022c971..d7d9094c485 100644 --- a/tests/Core/Controller/LostControllerTest.php +++ b/tests/Core/Controller/LostControllerTest.php @@ -329,7 +329,7 @@ class LostControllerTest extends \Test\TestCase { ->with(['lostpassword-noreply@localhost' => null]); $emailTemplate = $this->createMock(IEMailTemplate::class); $emailTemplate->expects($this->any()) - ->method('renderHTML') + ->method('renderHtml') ->willReturn('HTML body'); $emailTemplate->expects($this->any()) ->method('renderText') @@ -416,7 +416,7 @@ class LostControllerTest extends \Test\TestCase { ->with(['lostpassword-noreply@localhost' => null]); $emailTemplate = $this->createMock(IEMailTemplate::class); $emailTemplate->expects($this->any()) - ->method('renderHTML') + ->method('renderHtml') ->willReturn('HTML body'); $emailTemplate->expects($this->any()) ->method('renderText') @@ -497,7 +497,7 @@ class LostControllerTest extends \Test\TestCase { ->with(['lostpassword-noreply@localhost' => null]); $emailTemplate = $this->createMock(IEMailTemplate::class); $emailTemplate->expects($this->any()) - ->method('renderHTML') + ->method('renderHtml') ->willReturn('HTML body'); $emailTemplate->expects($this->any()) ->method('renderText') diff --git a/tests/Settings/Controller/CheckSetupControllerTest.php b/tests/Settings/Controller/CheckSetupControllerTest.php index d9ba7d43672..49931994f02 100644 --- a/tests/Settings/Controller/CheckSetupControllerTest.php +++ b/tests/Settings/Controller/CheckSetupControllerTest.php @@ -68,8 +68,6 @@ class CheckSetupControllerTest extends TestCase { ->disableOriginalConstructor()->getMock(); $this->config = $this->getMockBuilder('\OCP\IConfig') ->disableOriginalConstructor()->getMock(); - $this->config = $this->getMockBuilder('\OCP\IConfig') - ->disableOriginalConstructor()->getMock(); $this->clientService = $this->getMockBuilder('\OCP\Http\Client\IClientService') ->disableOriginalConstructor()->getMock(); $this->util = $this->getMockBuilder('\OC_Util') @@ -98,7 +96,7 @@ class CheckSetupControllerTest extends TestCase { $this->checker, $this->logger ]) - ->setMethods(['getCurlVersion', 'isPhpOutdated'])->getMock(); + ->setMethods(['getCurlVersion', 'isPhpOutdated', 'isOpcacheProperlySetup'])->getMock(); } public function testIsInternetConnectionWorkingDisabledViaConfig() { @@ -307,6 +305,10 @@ class CheckSetupControllerTest extends TestCase { ->expects($this->once()) ->method('isPhpOutdated') ->willReturn(true); + $this->checkSetupController + ->expects($this->once()) + ->method('isOpcacheProperlySetup') + ->willReturn(false); $this->urlGenerator->expects($this->at(2)) ->method('linkToDocs') ->with('admin-reverse-proxy') diff --git a/tests/Settings/Controller/UsersControllerTest.php b/tests/Settings/Controller/UsersControllerTest.php index 79e6dd61813..d659d812b0d 100644 --- a/tests/Settings/Controller/UsersControllerTest.php +++ b/tests/Settings/Controller/UsersControllerTest.php @@ -12,7 +12,6 @@ namespace Tests\Settings\Controller; use OC\Accounts\AccountManager; use OC\Group\Manager; -use OC\Mail\IEMailTemplate; use OC\Settings\Controller\UsersController; use OC\Settings\Mailer\NewUserMailHelper; use OCP\App\IAppManager; @@ -31,9 +30,12 @@ use OCP\IURLGenerator; use OCP\IUser; use OCP\IUserManager; use OCP\IUserSession; +use OCP\Mail\IEMailTemplate; use OCP\Mail\IMailer; use OCP\Security\ICrypto; use OCP\Security\ISecureRandom; +use OC\User\User; +use Test\Util\User\Dummy; /** * @group DB @@ -164,8 +166,7 @@ class UsersControllerTest extends \Test\TestCase { public function testIndexAdmin() { $controller = $this->getController(true); - $foo = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $foo = $this->createMock(User::class); $foo ->expects($this->exactly(2)) ->method('getUID') @@ -192,8 +193,7 @@ class UsersControllerTest extends \Test\TestCase { ->expects($this->once()) ->method('getBackendClassName') ->will($this->returnValue('OC_User_Database')); - $admin = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $admin = $this->createMock(User::class); $admin ->expects($this->exactly(2)) ->method('getUID') @@ -221,9 +221,8 @@ class UsersControllerTest extends \Test\TestCase { $admin ->expects($this->once()) ->method('getBackendClassName') - ->will($this->returnValue('\Test\Util\User\Dummy')); - $bar = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + ->willReturn(Dummy::class); + $bar = $this->createMock(User::class); $bar ->expects($this->exactly(2)) ->method('getUID') @@ -249,7 +248,7 @@ class UsersControllerTest extends \Test\TestCase { $bar ->expects($this->once()) ->method('getBackendClassName') - ->will($this->returnValue('\Test\Util\User\Dummy')); + ->willReturn(Dummy::class); $this->groupManager ->expects($this->once()) @@ -322,7 +321,7 @@ class UsersControllerTest extends \Test\TestCase { 'quota' => 404, 'storageLocation' => '/home/admin', 'lastLogin' => 12000, - 'backend' => '\Test\Util\User\Dummy', + 'backend' => Dummy::class, 'email' => 'admin@bar.com', 'isRestoreDisabled' => false, 'isAvatarAvailable' => false, @@ -335,7 +334,7 @@ class UsersControllerTest extends \Test\TestCase { 'quota' => 2323, 'storageLocation' => '/home/bar', 'lastLogin' => 3999000, - 'backend' => '\Test\Util\User\Dummy', + 'backend' => Dummy::class, 'email' => 'bar@dummy.com', 'isRestoreDisabled' => false, 'isAvatarAvailable' => true, @@ -349,15 +348,13 @@ class UsersControllerTest extends \Test\TestCase { public function testIndexSubAdmin() { $controller = $this->getController(false); - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $this->userSession ->expects($this->once()) ->method('getUser') ->will($this->returnValue($user)); - $foo = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $foo = $this->createMock(User::class); $foo ->expects($this->exactly(2)) ->method('getUID') @@ -384,8 +381,7 @@ class UsersControllerTest extends \Test\TestCase { ->expects($this->once()) ->method('getBackendClassName') ->will($this->returnValue('OC_User_Database')); - $admin = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $admin = $this->createMock(User::class); $admin ->expects($this->exactly(2)) ->method('getUID') @@ -413,9 +409,8 @@ class UsersControllerTest extends \Test\TestCase { $admin ->expects($this->once()) ->method('getBackendClassName') - ->will($this->returnValue('\Test\Util\User\Dummy')); - $bar = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + ->willReturn(Dummy::class); + $bar = $this->createMock(User::class); $bar ->expects($this->exactly(2)) ->method('getUID') @@ -441,7 +436,7 @@ class UsersControllerTest extends \Test\TestCase { $bar ->expects($this->once()) ->method('getBackendClassName') - ->will($this->returnValue('\Test\Util\User\Dummy')); + ->willReturn(Dummy::class); $this->groupManager ->expects($this->at(2)) @@ -515,7 +510,7 @@ class UsersControllerTest extends \Test\TestCase { 'quota' => 2323, 'storageLocation' => '/home/bar', 'lastLogin' => 3999000, - 'backend' => '\Test\Util\User\Dummy', + 'backend' => Dummy::class, 'email' => 'bar@dummy.com', 'isRestoreDisabled' => false, 'isAvatarAvailable' => true, @@ -541,7 +536,7 @@ class UsersControllerTest extends \Test\TestCase { 'quota' => 404, 'storageLocation' => '/home/admin', 'lastLogin' => 12000, - 'backend' => '\Test\Util\User\Dummy', + 'backend' => Dummy::class, 'email' => 'admin@bar.com', 'isRestoreDisabled' => false, 'isAvatarAvailable' => false, @@ -560,8 +555,7 @@ class UsersControllerTest extends \Test\TestCase { public function testIndexWithSearch() { $controller = $this->getController(true); - $foo = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $foo = $this->createMock(User::class); $foo ->expects($this->exactly(2)) ->method('getUID') @@ -588,8 +582,7 @@ class UsersControllerTest extends \Test\TestCase { ->expects($this->once()) ->method('getBackendClassName') ->will($this->returnValue('OC_User_Database')); - $admin = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $admin = $this->createMock(User::class); $admin ->expects($this->exactly(2)) ->method('getUID') @@ -617,9 +610,8 @@ class UsersControllerTest extends \Test\TestCase { $admin ->expects($this->once()) ->method('getBackendClassName') - ->will($this->returnValue('\Test\Util\User\Dummy')); - $bar = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + ->willReturn(Dummy::class); + $bar = $this->createMock(User::class); $bar ->expects($this->exactly(2)) ->method('getUID') @@ -645,7 +637,7 @@ class UsersControllerTest extends \Test\TestCase { $bar ->expects($this->once()) ->method('getBackendClassName') - ->will($this->returnValue('\Test\Util\User\Dummy')); + ->willReturn(Dummy::class); $this->userManager ->expects($this->once()) @@ -691,7 +683,7 @@ class UsersControllerTest extends \Test\TestCase { 'quota' => 404, 'storageLocation' => '/home/admin', 'lastLogin' => 12000, - 'backend' => '\Test\Util\User\Dummy', + 'backend' => Dummy::class, 'email' => 'admin@bar.com', 'isRestoreDisabled' => false, 'isAvatarAvailable' => false, @@ -704,7 +696,7 @@ class UsersControllerTest extends \Test\TestCase { 'quota' => 2323, 'storageLocation' => '/home/bar', 'lastLogin' => 3999000, - 'backend' => '\Test\Util\User\Dummy', + 'backend' => Dummy::class, 'email' => 'bar@dummy.com', 'isRestoreDisabled' => false, 'isAvatarAvailable' => true, @@ -718,8 +710,7 @@ class UsersControllerTest extends \Test\TestCase { public function testIndexWithBackend() { $controller = $this->getController(true); - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $user ->expects($this->exactly(2)) ->method('getUID') @@ -749,7 +740,7 @@ class UsersControllerTest extends \Test\TestCase { $this->userManager ->expects($this->once()) ->method('getBackends') - ->will($this->returnValue([new \Test\Util\User\Dummy(), new \OC\User\Database()])); + ->will($this->returnValue([new Dummy(), new \OC\User\Database()])); $this->userManager ->expects($this->once()) ->method('clearBackends'); @@ -787,7 +778,7 @@ class UsersControllerTest extends \Test\TestCase { ) ) ); - $response = $controller->index(0, 10, '','', '\Test\Util\User\Dummy'); + $response = $controller->index(0, 10, '','', Dummy::class); $this->assertEquals($expectedResponse, $response); } @@ -797,7 +788,7 @@ class UsersControllerTest extends \Test\TestCase { $this->userManager ->expects($this->once()) ->method('getBackends') - ->will($this->returnValue([new \Test\Util\User\Dummy(), new \OC\User\Database()])); + ->will($this->returnValue([new Dummy(), new \OC\User\Database()])); $this->userManager ->expects($this->once()) ->method('search') @@ -805,15 +796,14 @@ class UsersControllerTest extends \Test\TestCase { ->will($this->returnValue([])); $expectedResponse = new DataResponse([]); - $response = $controller->index(0, 10, '','', '\Test\Util\User\Dummy'); + $response = $controller->index(0, 10, '','', Dummy::class); $this->assertEquals($expectedResponse, $response); } public function testCreateSuccessfulWithoutGroupAdmin() { $controller = $this->getController(true); - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $user ->method('getHome') ->will($this->returnValue('/home/user')); @@ -866,8 +856,7 @@ class UsersControllerTest extends \Test\TestCase { public function testCreateSuccessfulWithGroupAdmin() { $controller = $this->getController(true); - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $user ->method('getHome') ->will($this->returnValue('/home/user')); @@ -1120,8 +1109,7 @@ class UsersControllerTest extends \Test\TestCase { public function testDestroySelfAdmin() { $controller = $this->getController(true); - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $user ->expects($this->once()) ->method('getUID') @@ -1146,8 +1134,7 @@ class UsersControllerTest extends \Test\TestCase { public function testDestroySelfSubadmin() { $controller = $this->getController(false); - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $user ->expects($this->once()) ->method('getUID') @@ -1172,14 +1159,12 @@ class UsersControllerTest extends \Test\TestCase { public function testDestroyAdmin() { $controller = $this->getController(true); - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $user ->expects($this->once()) ->method('getUID') ->will($this->returnValue('Admin')); - $toDeleteUser = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $toDeleteUser = $this->createMock(User::class); $toDeleteUser ->expects($this->once()) ->method('delete') @@ -1207,8 +1192,7 @@ class UsersControllerTest extends \Test\TestCase { public function testDestroySubAdmin() { $controller = $this->getController(false); - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $user ->expects($this->once()) ->method('getUID') @@ -1217,10 +1201,8 @@ class UsersControllerTest extends \Test\TestCase { ->method('getUser') ->will($this->returnValue($user)); - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); - $toDeleteUser = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); + $toDeleteUser = $this->createMock(User::class); $toDeleteUser ->expects($this->once()) ->method('delete') @@ -1261,14 +1243,12 @@ class UsersControllerTest extends \Test\TestCase { public function testDestroyUnsuccessfulAdmin() { $controller = $this->getController(true); - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $user ->expects($this->once()) ->method('getUID') ->will($this->returnValue('Admin')); - $toDeleteUser = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $toDeleteUser = $this->createMock(User::class); $toDeleteUser ->expects($this->once()) ->method('delete') @@ -1296,8 +1276,7 @@ class UsersControllerTest extends \Test\TestCase { public function testDestroyUnsuccessfulSubAdmin() { $controller = $this->getController(false); - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $user ->expects($this->once()) ->method('getUID') @@ -1306,8 +1285,7 @@ class UsersControllerTest extends \Test\TestCase { ->method('getUser') ->will($this->returnValue($user)); - $toDeleteUser = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $toDeleteUser = $this->createMock(User::class); $toDeleteUser ->expects($this->once()) ->method('delete') @@ -1348,8 +1326,7 @@ class UsersControllerTest extends \Test\TestCase { public function testDestroyNotAccessibleToSubAdmin() { $controller = $this->getController(false); - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $user ->expects($this->once()) ->method('getUID') @@ -1358,8 +1335,7 @@ class UsersControllerTest extends \Test\TestCase { ->method('getUser') ->will($this->returnValue($user)); - $toDeleteUser = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $toDeleteUser = $this->createMock(User::class); $this->userSession ->method('getUser') ->will($this->returnValue($user)); @@ -1419,8 +1395,7 @@ class UsersControllerTest extends \Test\TestCase { ->with('validMail@Adre.ss') ->will($this->returnValue(true)); - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $user ->method('getHome') ->will($this->returnValue('/home/user')); @@ -1471,8 +1446,7 @@ class UsersControllerTest extends \Test\TestCase { private function mockUser($userId = 'foo', $displayName = 'M. Foo', $lastLogin = 500, $home = '/home/foo', $backend = 'OC_User_Database') { - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $user ->expects($this->any()) ->method('getUID') @@ -1707,8 +1681,7 @@ class UsersControllerTest extends \Test\TestCase { public function testStatsSubAdmin() { $controller = $this->getController(false); - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $this->userSession ->expects($this->once()) @@ -2002,7 +1975,7 @@ class UsersControllerTest extends \Test\TestCase { $user->method('canChangeDisplayName')->willReturn(true); if ($data[AccountManager::PROPERTY_EMAIL]['value'] === $oldEmailAddress || - $oldEmailAddress === null && $data[AccountManager::PROPERTY_EMAIL]['value'] === '') { + ($oldEmailAddress === null && $data[AccountManager::PROPERTY_EMAIL]['value'] === '')) { $user->expects($this->never())->method('setEMailAddress'); } else { $user->expects($this->once())->method('setEMailAddress') @@ -2011,7 +1984,7 @@ class UsersControllerTest extends \Test\TestCase { } if ($data[AccountManager::PROPERTY_DISPLAYNAME]['value'] === $oldDisplayName || - $oldDisplayName === null && $data[AccountManager::PROPERTY_DISPLAYNAME]['value'] === '') { + ($oldDisplayName === null && $data[AccountManager::PROPERTY_DISPLAYNAME]['value'] === '')) { $user->expects($this->never())->method('setDisplayName'); } else { $user->expects($this->once())->method('setDisplayName') @@ -2170,8 +2143,7 @@ class UsersControllerTest extends \Test\TestCase { * */ public function testSetEMailAddress($mailAddress, $isValid, $expectsUpdate, $canChangeDisplayName, $responseCode) { - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $user ->expects($this->any()) ->method('getUID') @@ -2223,8 +2195,7 @@ class UsersControllerTest extends \Test\TestCase { public function testCreateSuccessfulWithoutPasswordAndWithEmail() { - $user = $this->getMockBuilder('\OC\User\User') - ->disableOriginalConstructor()->getMock(); + $user = $this->createMock(User::class); $user ->method('getHome') ->willReturn('/home/user'); diff --git a/tests/Settings/Mailer/NewUserMailHelperTest.php b/tests/Settings/Mailer/NewUserMailHelperTest.php index 7cf6c635360..fee47625cfd 100644 --- a/tests/Settings/Mailer/NewUserMailHelperTest.php +++ b/tests/Settings/Mailer/NewUserMailHelperTest.php @@ -354,7 +354,7 @@ This is an automatically sent email, please do not reply. EOF; $result = $this->newUserMailHelper->generateTemplate($user, true); - $this->assertEquals($expectedHtmlBody, $result->renderHTML()); + $this->assertEquals($expectedHtmlBody, $result->renderHtml()); $this->assertEquals($expectedTextBody, $result->renderText()); $this->assertSame('OC\Mail\EMailTemplate', get_class($result)); } @@ -587,7 +587,7 @@ This is an automatically sent email, please do not reply. EOF; $result = $this->newUserMailHelper->generateTemplate($user, false); - $this->assertEquals($expectedHtmlBody, $result->renderHTML()); + $this->assertEquals($expectedHtmlBody, $result->renderHtml()); $this->assertEquals($expectedTextBody, $result->renderText()); $this->assertSame('OC\Mail\EMailTemplate', get_class($result)); } @@ -621,7 +621,7 @@ EOF; $message ->expects($this->at(2)) ->method('setHtmlBody') - ->with($emailTemplate->renderHTML()); + ->with($emailTemplate->renderHtml()); $message ->expects($this->at(3)) ->method('setPlainBody') diff --git a/tests/karma.config.js b/tests/karma.config.js index 91052f62cd2..014a8709615 100644 --- a/tests/karma.config.js +++ b/tests/karma.config.js @@ -56,7 +56,8 @@ module.exports = function(config) { 'apps/files_sharing/js/share.js', 'apps/files_sharing/js/sharebreadcrumbview.js', 'apps/files_sharing/js/public.js', - 'apps/files_sharing/js/sharetabview.js' + 'apps/files_sharing/js/sharetabview.js', + 'apps/files_sharing/js/files_drop.js' ], testFiles: ['apps/files_sharing/tests/js/*.js'] }, diff --git a/tests/lib/AllConfigTest.php b/tests/lib/AllConfigTest.php index 3d0a9cb0827..f3d43ff4396 100644 --- a/tests/lib/AllConfigTest.php +++ b/tests/lib/AllConfigTest.php @@ -15,6 +15,8 @@ namespace Test; * * @package Test */ +use OCP\IDBConnection; + class AllConfigTest extends \Test\TestCase { /** @var \OCP\IDBConnection */ @@ -189,7 +191,7 @@ class AllConfigTest extends \Test\TestCase { ->method('fetchColumn') ->will($this->returnValue('valueSetUnchanged')); - $connectionMock = $this->getMock('\OCP\IDBConnection'); + $connectionMock = $this->createMock(IDBConnection::class); $connectionMock->expects($this->once()) ->method('executeQuery') ->with($this->equalTo('SELECT `configvalue` FROM `*PREFIX*preferences` '. diff --git a/tests/lib/Authentication/Token/DefaultTokenProviderTest.php b/tests/lib/Authentication/Token/DefaultTokenProviderTest.php index bbfcd93913b..2c8c2d7e196 100644 --- a/tests/lib/Authentication/Token/DefaultTokenProviderTest.php +++ b/tests/lib/Authentication/Token/DefaultTokenProviderTest.php @@ -274,7 +274,7 @@ class DefaultTokenProviderTest extends TestCase { public function testRenewSessionTokenWithoutPassword() { $token = $this->getMockBuilder(DefaultToken::class) ->disableOriginalConstructor() - ->setMethods(['getUID', 'getLoginName', 'getPassword', 'getName']) + ->setMethods(['getUID', 'getLoginName', 'getPassword', 'getName', 'getRemember']) ->getMock(); $token ->expects($this->at(0)) @@ -293,7 +293,7 @@ class DefaultTokenProviderTest extends TestCase { ->method('getName') ->willReturn('MyTokenName'); $token - ->expects($this->at(3)) + ->expects($this->at(4)) ->method('getRemember') ->willReturn(IToken::DO_NOT_REMEMBER); $this->config @@ -325,7 +325,7 @@ class DefaultTokenProviderTest extends TestCase { public function testRenewSessionTokenWithPassword() { $token = $this->getMockBuilder(DefaultToken::class) ->disableOriginalConstructor() - ->setMethods(['getUID', 'getLoginName', 'getPassword', 'getName']) + ->setMethods(['getUID', 'getLoginName', 'getPassword', 'getName', 'getRemember']) ->getMock(); $token ->expects($this->at(0)) @@ -348,7 +348,7 @@ class DefaultTokenProviderTest extends TestCase { ->method('getName') ->willReturn('MyTokenName'); $token - ->expects($this->at(3)) + ->expects($this->at(5)) ->method('getRemember') ->willReturn(IToken::REMEMBER); $this->crypto diff --git a/tests/lib/Encryption/ManagerTest.php b/tests/lib/Encryption/ManagerTest.php index ac26d4cb528..65234074955 100644 --- a/tests/lib/Encryption/ManagerTest.php +++ b/tests/lib/Encryption/ManagerTest.php @@ -17,22 +17,22 @@ class ManagerTest extends TestCase { /** @var Manager */ private $manager; - /** @var \PHPUnit_Framework_MockObject_MockObject */ + /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ private $config; - /** @var \PHPUnit_Framework_MockObject_MockObject */ + /** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */ private $logger; - /** @var \PHPUnit_Framework_MockObject_MockObject */ + /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ private $l10n; - /** @var \PHPUnit_Framework_MockObject_MockObject */ + /** @var View|\PHPUnit_Framework_MockObject_MockObject */ private $view; - /** @var \PHPUnit_Framework_MockObject_MockObject */ + /** @var Util|\PHPUnit_Framework_MockObject_MockObject */ private $util; - /** @var \PHPUnit_Framework_MockObject_MockObject | \OC\Memcache\ArrayCache */ + /** @var ArrayCache|\PHPUnit_Framework_MockObject_MockObject */ private $arrayCache; public function setUp() { @@ -188,9 +188,9 @@ class ManagerTest extends TestCase { // * @expectedExceptionMessage Id "0" already used by encryption module "TestDummyModule0" // */ // public function testModuleRegistration() { -// $config = $this->getMock('\OCP\IConfig'); +// $config = $this->createMock(IConfig::class); // $config->expects($this->any())->method('getSystemValue')->willReturn(true); -// $em = $this->getMock('\OCP\Encryption\IEncryptionModule'); +// $em = $this->createMock(IEncryptionModule::class); // $em->expects($this->any())->method('getId')->willReturn(0); // $em->expects($this->any())->method('getDisplayName')->willReturn('TestDummyModule0'); // $m = new Manager($config); @@ -200,9 +200,9 @@ class ManagerTest extends TestCase { // } // // public function testModuleUnRegistration() { -// $config = $this->getMock('\OCP\IConfig'); +// $config = $this->createMock(IConfig::class); // $config->expects($this->any())->method('getSystemValue')->willReturn(true); -// $em = $this->getMock('\OCP\Encryption\IEncryptionModule'); +// $em = $this->createMock(IEncryptionModule::class); // $em->expects($this->any())->method('getId')->willReturn(0); // $em->expects($this->any())->method('getDisplayName')->willReturn('TestDummyModule0'); // $m = new Manager($config); @@ -217,9 +217,9 @@ class ManagerTest extends TestCase { // * @expectedExceptionMessage Module with ID: unknown does not exist. // */ // public function testGetEncryptionModuleUnknown() { -// $config = $this->getMock('\OCP\IConfig'); +// $config = $this->createMock(IConfig::class); // $config->expects($this->any())->method('getSystemValue')->willReturn(true); -// $em = $this->getMock('\OCP\Encryption\IEncryptionModule'); +// $em = $this->createMock(IEncryptionModule::class); // $em->expects($this->any())->method('getId')->willReturn(0); // $em->expects($this->any())->method('getDisplayName')->willReturn('TestDummyModule0'); // $m = new Manager($config); @@ -229,9 +229,9 @@ class ManagerTest extends TestCase { // } // // public function testGetEncryptionModule() { -// $config = $this->getMock('\OCP\IConfig'); +// $config = $this->createMock(IConfig::class); // $config->expects($this->any())->method('getSystemValue')->willReturn(true); -// $em = $this->getMock('\OCP\Encryption\IEncryptionModule'); +// $em = $this->createMock(IEncryptionModule::class); // $em->expects($this->any())->method('getId')->willReturn(0); // $em->expects($this->any())->method('getDisplayName')->willReturn('TestDummyModule0'); // $m = new Manager($config); diff --git a/tests/lib/Files/Storage/Wrapper/EncryptionTest.php b/tests/lib/Files/Storage/Wrapper/EncryptionTest.php index eb665af8dda..d310f110b94 100644 --- a/tests/lib/Files/Storage/Wrapper/EncryptionTest.php +++ b/tests/lib/Files/Storage/Wrapper/EncryptionTest.php @@ -943,7 +943,7 @@ class EncryptionTest extends Storage { * @dataProvider dataTestShouldEncrypt * * @param bool $encryptMountPoint - * @param \PHPUnit_Framework_MockObject_MockObject | IEncryptionModule $encryptionModule + * @param mixed $encryptionModule * @param bool $encryptionModuleShouldEncrypt * @param bool $expected */ @@ -985,8 +985,15 @@ class EncryptionTest extends Storage { ->setMethods(['getFullPath', 'getEncryptionModule']) ->getMock(); + if ($encryptionModule === true) { + /** @var IEncryptionModule|\PHPUnit_Framework_MockObject_MockObject $encryptionModule */ + $encryptionModule = $this->createMock(IEncryptionModule::class); + } + $wrapper->method('getFullPath')->with($path)->willReturn($fullPath); - $wrapper->method('getEncryptionModule')->with($fullPath) + $wrapper->expects($encryptMountPoint ? $this->once() : $this->never()) + ->method('getEncryptionModule') + ->with($fullPath) ->willReturnCallback( function() use ($encryptionModule) { if ($encryptionModule === false) { @@ -999,12 +1006,15 @@ class EncryptionTest extends Storage { ->willReturn($encryptMountPoint); if ($encryptionModule !== null && $encryptionModule !== false) { - $encryptionModule->method('shouldEncrypt')->with($fullPath) + $encryptionModule + ->method('shouldEncrypt') + ->with($fullPath) ->willReturn($encryptionModuleShouldEncrypt); } if ($encryptionModule === null) { - $encryptionManager->expects($this->once())->method('getEncryptionModule') + $encryptionManager->expects($this->once()) + ->method('getEncryptionModule') ->willReturn($defaultEncryptionModule); } $defaultEncryptionModule->method('shouldEncrypt')->willReturn(true); @@ -1015,12 +1025,11 @@ class EncryptionTest extends Storage { } public function dataTestShouldEncrypt() { - $encryptionModule = $this->createMock(IEncryptionModule::class); return [ [false, false, false, false], [true, false, false, false], - [true, $encryptionModule, false, false], - [true, $encryptionModule, true, true], + [true, true, false, false], + [true, true, true, true], [true, null, false, true], ]; } diff --git a/tests/lib/Log/FileTest.php b/tests/lib/Log/FileTest.php index 4bd5b6f21ab..f71d536d61e 100644 --- a/tests/lib/Log/FileTest.php +++ b/tests/lib/Log/FileTest.php @@ -49,7 +49,7 @@ class FileTest extends TestCase if (isset($this->restore_logdateformat)) { $config->getSystemValue("logdateformat", $this->restore_logdateformat); } else { - $config->deleteSystemValue("restore_logdateformat"); + $config->deleteSystemValue("logdateformat"); } File::init(); parent::tearDown(); diff --git a/tests/lib/Mail/EMailTemplateTest.php b/tests/lib/Mail/EMailTemplateTest.php index 450c007149c..08af56453ab 100644 --- a/tests/lib/Mail/EMailTemplateTest.php +++ b/tests/lib/Mail/EMailTemplateTest.php @@ -85,7 +85,7 @@ class EMailTemplateTest extends TestCase { ); $expectedHTML = file_get_contents(\OC::$SERVERROOT . '/tests/data/emails/new-account-email.html'); - $this->assertSame($expectedHTML, $this->emailTemplate->renderHTML()); + $this->assertSame($expectedHTML, $this->emailTemplate->renderHtml()); $expectedTXT = file_get_contents(\OC::$SERVERROOT . '/tests/data/emails/new-account-email.txt'); $this->assertSame($expectedTXT, $this->emailTemplate->renderText()); } @@ -124,7 +124,7 @@ class EMailTemplateTest extends TestCase { $this->emailTemplate->addFooter(); $expectedHTML = file_get_contents(\OC::$SERVERROOT . '/tests/data/emails/new-account-email-custom.html'); - $this->assertSame($expectedHTML, $this->emailTemplate->renderHTML()); + $this->assertSame($expectedHTML, $this->emailTemplate->renderHtml()); $expectedTXT = file_get_contents(\OC::$SERVERROOT . '/tests/data/emails/new-account-email-custom.txt'); $this->assertSame($expectedTXT, $this->emailTemplate->renderText()); } @@ -163,7 +163,7 @@ class EMailTemplateTest extends TestCase { $this->emailTemplate->addFooter(); $expectedHTML = file_get_contents(\OC::$SERVERROOT . '/tests/data/emails/new-account-email-single-button.html'); - $this->assertSame($expectedHTML, $this->emailTemplate->renderHTML()); + $this->assertSame($expectedHTML, $this->emailTemplate->renderHtml()); $expectedTXT = file_get_contents(\OC::$SERVERROOT . '/tests/data/emails/new-account-email-single-button.txt'); $this->assertSame($expectedTXT, $this->emailTemplate->renderText()); } @@ -205,7 +205,7 @@ class EMailTemplateTest extends TestCase { $this->emailTemplate->addFooter(); $expectedHTML = file_get_contents(\OC::$SERVERROOT . '/tests/data/emails/new-account-email-custom.html'); - $this->assertSame($expectedHTML, $this->emailTemplate->renderHTML()); + $this->assertSame($expectedHTML, $this->emailTemplate->renderHtml()); $expectedTXT = file_get_contents(\OC::$SERVERROOT . '/tests/data/emails/new-account-email-custom-text-alternative.txt'); $this->assertSame($expectedTXT, $this->emailTemplate->renderText()); } diff --git a/tests/lib/Memcache/RedisTest.php b/tests/lib/Memcache/RedisTest.php index 094954d4a1a..e707f30fb5b 100644 --- a/tests/lib/Memcache/RedisTest.php +++ b/tests/lib/Memcache/RedisTest.php @@ -17,15 +17,22 @@ class RedisTest extends Cache { self::markTestSkipped('The redis extension is not available.'); } + $errorOccurred = false; set_error_handler( function($errno, $errstr) { - restore_error_handler(); - self::markTestSkipped($errstr); + throw new \RuntimeException($errstr, 123456789); }, E_WARNING ); - $instance = new \OC\Memcache\Redis(self::getUniqueID()); + try { + $instance = new \OC\Memcache\Redis(self::getUniqueID()); + } catch (\RuntimeException $e) { + $errorOccurred = $e->getCode() === 123456789 ? $e->getMessage() : false; + } restore_error_handler(); + if ($errorOccurred !== false) { + self::markTestSkipped($errorOccurred); + } if ($instance->set(self::getUniqueID(), self::getUniqueID()) === false) { self::markTestSkipped('redis server seems to be down.'); diff --git a/tests/lib/RepairStepTest.php b/tests/lib/RepairStepTest.php index 3f7a0ce064b..1ec28de8768 100644 --- a/tests/lib/RepairStepTest.php +++ b/tests/lib/RepairStepTest.php @@ -87,7 +87,7 @@ class RepairTest extends TestCase { } public function testRunRepairStepsWithException() { - $mock = $this->getMock('\Test\TestRepairStep'); + $mock = $this->createMock(TestRepairStep::class); $mock->expects($this->any()) ->method('run') ->will($this->throwException(new \Exception())); diff --git a/tests/lib/Share/MailNotificationsTest.php b/tests/lib/Share/MailNotificationsTest.php deleted file mode 100644 index 2759ee04946..00000000000 --- a/tests/lib/Share/MailNotificationsTest.php +++ /dev/null @@ -1,125 +0,0 @@ -<?php -/** - * @author Lukas Reschke <lukas@owncloud.com> - * - * @copyright Copyright (c) 2015, 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 Test\Share; - -use OC\Share\MailNotifications; -use OCP\IL10N; -use OCP\IUser; -use OCP\Mail\IMailer; -use OCP\ILogger; -use OCP\Defaults; -use OCP\IURLGenerator; - -/** - * Class MailNotificationsTest - */ -class MailNotificationsTest extends \Test\TestCase { - /** @var IL10N */ - private $l10n; - /** @var IMailer | \PHPUnit_Framework_MockObject_MockObject */ - private $mailer; - /** @var ILogger */ - private $logger; - /** @var Defaults | \PHPUnit_Framework_MockObject_MockObject */ - private $defaults; - /** @var IUser | \PHPUnit_Framework_MockObject_MockObject */ - private $user; - /** @var IURLGenerator | \PHPUnit_Framework_MockObject_MockObject */ - private $urlGenerator; - - - public function setUp() { - parent::setUp(); - - $this->l10n = $this->getMockBuilder('\OCP\IL10N') - ->disableOriginalConstructor()->getMock(); - $this->mailer = $this->getMockBuilder('\OCP\Mail\IMailer') - ->disableOriginalConstructor()->getMock(); - $this->logger = $this->getMockBuilder('\OCP\ILogger') - ->disableOriginalConstructor()->getMock(); - $this->defaults = $this->getMockBuilder('\OCP\Defaults') - ->disableOriginalConstructor()->getMock(); - $this->user = $this->getMockBuilder('\OCP\IUser') - ->disableOriginalConstructor()->getMock(); - $this->urlGenerator = $this->createMock(IURLGenerator::class); - - $this->l10n->expects($this->any()) - ->method('t') - ->will($this->returnCallback(function($text, $parameters = array()) { - return vsprintf($text, $parameters); - })); - - $this->defaults - ->expects($this->once()) - ->method('getName') - ->will($this->returnValue('UnitTestCloud')); - - $this->user - ->expects($this->once()) - ->method('getEMailAddress') - ->willReturn('sharer@owncloud.com'); - $this->user - ->expects($this->once()) - ->method('getDisplayName') - ->willReturn('TestUser'); - - } - - /** - * @param string $subject - */ - protected function setupMailerMock($subject, $to, $exceptionOnSend = true) { - $message = $this->getMockBuilder('\OC\Mail\Message') - ->disableOriginalConstructor()->getMock(); - - $message - ->expects($this->once()) - ->method('setSubject') - ->with($subject); - $message - ->expects($this->once()) - ->method('setTo') - ->with($to); - $message - ->expects($this->once()) - ->method('setHtmlBody'); - $message - ->expects($this->once()) - ->method('setPlainBody'); - $message - ->expects($this->once()) - ->method('setFrom') - ->with([\OCP\Util::getDefaultEmailAddress('sharing-noreply') => 'TestUser via UnitTestCloud']); - - $this->mailer - ->expects($this->once()) - ->method('createMessage') - ->will($this->returnValue($message)); - if ($exceptionOnSend) { - $this->mailer - ->expects($this->once()) - ->method('send') - ->with($message) - ->will($this->throwException(new \Exception('Some Exception Message'))); - } - } -} diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index 42308a9d6a6..7de73421d3e 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -2767,8 +2767,7 @@ class ManagerTest extends \Test\TestCase { $node->expects($this->once()) ->method('getOwner') ->willReturn($owner); - $node->expects($this->once()) - ->method('getId') + $node->method('getId') ->willReturn(42); $userFolder = $this->createMock(Folder::class); diff --git a/tests/lib/User/UserTest.php b/tests/lib/User/UserTest.php index edb8ac4224e..5fc07b692f7 100644 --- a/tests/lib/User/UserTest.php +++ b/tests/lib/User/UserTest.php @@ -204,12 +204,12 @@ class UserTest extends TestCase { /** * @var Backend | \PHPUnit_Framework_MockObject_MockObject $backend */ - $backend = $this->createMock(Dummy::class); + $backend = $this->createMock(\Test\Util\User\Dummy::class); $backend->expects($this->at(0)) ->method('implementsActions') ->will($this->returnCallback(function ($actions) { - if ($actions === Backend::GET_HOME) { + if ($actions === \OC\User\Backend::GET_HOME) { return true; } else { return false; |