summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/comments/js/commentstabview.js8
-rw-r--r--apps/comments/l10n/et_EE.js4
-rw-r--r--apps/comments/l10n/et_EE.json4
-rw-r--r--apps/comments/tests/js/commentstabviewSpec.js96
-rw-r--r--apps/dav/l10n/et_EE.js62
-rw-r--r--apps/dav/l10n/et_EE.json60
-rw-r--r--apps/dav/lib/Connector/Sabre/File.php67
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/FileTest.php138
-rw-r--r--apps/federatedfilesharing/l10n/et_EE.js49
-rw-r--r--apps/federatedfilesharing/l10n/et_EE.json49
-rw-r--r--apps/federatedfilesharing/l10n/nl.js2
-rw-r--r--apps/federatedfilesharing/l10n/nl.json2
-rw-r--r--apps/federation/l10n/et_EE.js13
-rw-r--r--apps/federation/l10n/et_EE.json13
-rw-r--r--apps/files/l10n/et_EE.js4
-rw-r--r--apps/files/l10n/et_EE.json4
-rw-r--r--apps/files/l10n/ja.js4
-rw-r--r--apps/files/l10n/ja.json4
-rw-r--r--apps/files/l10n/zh_TW.js4
-rw-r--r--apps/files/l10n/zh_TW.json4
-rw-r--r--apps/files_sharing/l10n/et_EE.js104
-rw-r--r--apps/files_sharing/l10n/et_EE.json104
-rw-r--r--apps/files_sharing/tests/js/shareSpec.js2
-rw-r--r--apps/systemtags/l10n/et_EE.js8
-rw-r--r--apps/systemtags/l10n/et_EE.json8
-rw-r--r--apps/systemtags/l10n/zh_TW.js40
-rw-r--r--apps/systemtags/l10n/zh_TW.json40
-rw-r--r--apps/theming/js/settings-admin.js6
-rw-r--r--apps/theming/templates/settings-admin.php2
-rw-r--r--apps/user_ldap/js/wizard/wizardTabLoginFilter.js17
-rw-r--r--apps/workflowengine/l10n/et_EE.js68
-rw-r--r--apps/workflowengine/l10n/et_EE.json66
32 files changed, 957 insertions, 99 deletions
diff --git a/apps/comments/js/commentstabview.js b/apps/comments/js/commentstabview.js
index 0c43e156985..9b75cb4671e 100644
--- a/apps/comments/js/commentstabview.js
+++ b/apps/comments/js/commentstabview.js
@@ -530,9 +530,13 @@
$field.toggleClass('error', limitExceeded);
$submitButton.prop('disabled', limitExceeded);
- //submits form on ctrl+Enter or cmd+Enter
- if (ev.keyCode === 13 && (ev.ctrlKey || ev.metaKey)) {
+ // Submits form with Enter, but Shift+Enter is a new line. If the
+ // autocomplete popover is being shown Enter does not submit the
+ // form either; it will be handled by At.js which will add the
+ // currently selected item to the message.
+ if (ev.keyCode === 13 && !ev.shiftKey && !$field.atwho('isSelecting')) {
$submitButton.click();
+ ev.preventDefault();
}
},
diff --git a/apps/comments/l10n/et_EE.js b/apps/comments/l10n/et_EE.js
index 65c259eedaa..478f4ae1245 100644
--- a/apps/comments/l10n/et_EE.js
+++ b/apps/comments/l10n/et_EE.js
@@ -25,7 +25,9 @@ OC.L10N.register(
"You commented on {file}" : "Sa kommenteerisid faili {file}",
"%1$s commented on %2$s" : "%1$s kommenteeris %2$s",
"{author} commented on {file}" : "{author} kommenteeris faili {file}",
- "<strong>Comments</strong> for files" : "<strong>kommentaari</strong> ffailidele",
+ "<strong>Comments</strong> for files" : "<strong>Kommentaarid</strong> failidele",
+ "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sind mainiti \"%s\", kommentaaris kasutataja poolt, mis on praeguseks kustutatud",
+ "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sind mainiti \"{file}\", kommentaaris kasutataja poolt, mis on praeguseks kustutatud",
"%1$s mentioned you in a comment on “%2$s”" : "%1$s mainis sind \"%2$s\" kommentaaris",
"{user} mentioned you in a comment on “{file}”" : "{user} mainis sind faili “{file}” kommentaaris",
"A (now) deleted user mentioned you in a comment on “%s”" : "Kustutatud kasutaja mainis sind \"%s\" kommentaaris",
diff --git a/apps/comments/l10n/et_EE.json b/apps/comments/l10n/et_EE.json
index f178cfa7e08..226d844f0d3 100644
--- a/apps/comments/l10n/et_EE.json
+++ b/apps/comments/l10n/et_EE.json
@@ -23,7 +23,9 @@
"You commented on {file}" : "Sa kommenteerisid faili {file}",
"%1$s commented on %2$s" : "%1$s kommenteeris %2$s",
"{author} commented on {file}" : "{author} kommenteeris faili {file}",
- "<strong>Comments</strong> for files" : "<strong>kommentaari</strong> ffailidele",
+ "<strong>Comments</strong> for files" : "<strong>Kommentaarid</strong> failidele",
+ "You were mentioned on “%s”, in a comment by a user that has since been deleted" : "Sind mainiti \"%s\", kommentaaris kasutataja poolt, mis on praeguseks kustutatud",
+ "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Sind mainiti \"{file}\", kommentaaris kasutataja poolt, mis on praeguseks kustutatud",
"%1$s mentioned you in a comment on “%2$s”" : "%1$s mainis sind \"%2$s\" kommentaaris",
"{user} mentioned you in a comment on “{file}”" : "{user} mainis sind faili “{file}” kommentaaris",
"A (now) deleted user mentioned you in a comment on “%s”" : "Kustutatud kasutaja mainis sind \"%s\" kommentaaris",
diff --git a/apps/comments/tests/js/commentstabviewSpec.js b/apps/comments/tests/js/commentstabviewSpec.js
index 8b99ad081cd..813b2a72eae 100644
--- a/apps/comments/tests/js/commentstabviewSpec.js
+++ b/apps/comments/tests/js/commentstabviewSpec.js
@@ -219,6 +219,7 @@ describe('OCA.Comments.CommentsTabView tests', function() {
describe('posting comments', function() {
var createStub;
var currentUserStub;
+ var $newCommentForm;
beforeEach(function() {
view.collection.set(testComments);
@@ -229,6 +230,8 @@ describe('OCA.Comments.CommentsTabView tests', function() {
displayName: 'Test User'
});
+ $newCommentForm = view.$el.find('.newCommentForm');
+
// Required for the absolute selector used to find the new comment
// after a successful creation in _onSubmitSuccess.
$('#testArea').append(view.$el);
@@ -239,8 +242,23 @@ describe('OCA.Comments.CommentsTabView tests', function() {
});
it('creates a new comment when clicking post button', function() {
- view.$el.find('.message').text('New message');
- view.$el.find('form').submit();
+ $newCommentForm.find('.message').text('New message');
+ $newCommentForm.submit();
+
+ expect(createStub.calledOnce).toEqual(true);
+ expect(createStub.lastCall.args[0]).toEqual({
+ actorId: 'testuser',
+ actorDisplayName: 'Test User',
+ actorType: 'users',
+ verb: 'comment',
+ message: 'New message',
+ creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString()
+ });
+ });
+ it('creates a new comment when typing enter', function() {
+ $newCommentForm.find('.message').text('New message');
+ var keydownEvent = new $.Event('keydown', {keyCode: 13});
+ $newCommentForm.find('.message').trigger(keydownEvent);
expect(createStub.calledOnce).toEqual(true);
expect(createStub.lastCall.args[0]).toEqual({
@@ -251,10 +269,68 @@ describe('OCA.Comments.CommentsTabView tests', function() {
message: 'New message',
creationDateTime: new Date(Date.UTC(2016, 1, 3, 10, 5, 9)).toUTCString()
});
+ expect(keydownEvent.isDefaultPrevented()).toEqual(true);
+ });
+ it('creates a new mention when typing enter in the autocomplete popover', function() {
+ var autoCompleteStub = sinon.stub(view, '_onAutoComplete');
+ autoCompleteStub.callsArgWith(1, [{"id":"userId", "label":"User Name", "source":"users"}]);
+
+ // Force the autocomplete to be initialized
+ view._initAutoComplete($newCommentForm.find('.message'));
+
+ // PhantomJS does not seem to handle typing in a contenteditable, so
+ // some tricks are needed to show the autocomplete popover.
+ //
+ // Instead of sending key events to type "@u" the characters are
+ // programatically set in the input field.
+ $newCommentForm.find('.message').text('Mention to @u');
+
+ // When focusing on the input field the caret is not guaranteed to
+ // be at the end; instead of calling "focus()" on the input field
+ // the caret is explicitly set at the end of the input field, that
+ // is, after "@u".
+ var range = document.createRange();
+ range.selectNodeContents($newCommentForm.find('.message')[0]);
+ range.collapse(false);
+ var selection = window.getSelection();
+ selection.removeAllRanges();
+ selection.addRange(range);
+
+ // As PhantomJS does not handle typing in a contenteditable the key
+ // typed here is in practice ignored by At.js, but despite that it
+ // will cause the popover to be shown.
+ $newCommentForm.find('.message').trigger(new $.Event('keydown', {keyCode: 's'}));
+ $newCommentForm.find('.message').trigger(new $.Event('keyup', {keyCode: 's'}));
+
+ expect(autoCompleteStub.calledOnce).toEqual(true);
+
+ var keydownEvent = new $.Event('keydown', {keyCode: 13});
+ $newCommentForm.find('.message').trigger(keydownEvent);
+
+ expect(createStub.calledOnce).toEqual(false);
+ expect($newCommentForm.find('.message').html()).toContain('Mention to <span');
+ expect($newCommentForm.find('.message').html()).toContain('<div class="avatar"');
+ expect($newCommentForm.find('.message').html()).toContain('<strong>User Name</strong>');
+ expect($newCommentForm.find('.message').text()).not.toContain('@');
+ // In this case the default behaviour is prevented by the
+ // "onKeydown" event handler of At.js.
+ expect(keydownEvent.isDefaultPrevented()).toEqual(true);
+ });
+ it('creates a new line when typing shift+enter', function() {
+ $newCommentForm.find('.message').text('New message');
+ var keydownEvent = new $.Event('keydown', {keyCode: 13, shiftKey: true});
+ $newCommentForm.find('.message').trigger(keydownEvent);
+
+ expect(createStub.calledOnce).toEqual(false);
+ // PhantomJS does not seem to handle typing in a contenteditable, so
+ // instead of looking for a new line the best that can be done is
+ // checking that the default behaviour would have been executed.
+ expect($newCommentForm.find('.message').text()).toContain('New message');
+ expect(keydownEvent.isDefaultPrevented()).toEqual(false);
});
it('creates a new comment with mentions when clicking post button', function() {
- view.$el.find('.message').text('New message @anotheruser');
- view.$el.find('form').submit();
+ $newCommentForm.find('.message').text('New message @anotheruser');
+ $newCommentForm.submit();
var createStubExpectedData = {
actorId: 'testuser',
@@ -297,8 +373,8 @@ describe('OCA.Comments.CommentsTabView tests', function() {
expect($message.find('.avatar[data-user=anotheruser] ~ .contactsmenu-popover').length).toEqual(1);
});
it('does not create a comment if the field is empty', function() {
- view.$el.find('.message').val(' ');
- view.$el.find('form').submit();
+ $newCommentForm.find('.message').val(' ');
+ $newCommentForm.submit();
expect(createStub.notCalled).toEqual(true);
});
@@ -307,8 +383,8 @@ describe('OCA.Comments.CommentsTabView tests', function() {
for (var i = 0; i < view._commentMaxLength * 2; i++) {
bigMessage += 'a';
}
- view.$el.find('.message').val(bigMessage);
- view.$el.find('form').submit();
+ $newCommentForm.find('.message').val(bigMessage);
+ $newCommentForm.submit();
expect(createStub.notCalled).toEqual(true);
});
@@ -319,8 +395,8 @@ describe('OCA.Comments.CommentsTabView tests', function() {
beforeEach(function() {
tooltipStub = sinon.stub($.fn, 'tooltip');
- $message = view.$el.find('.message');
- $submitButton = view.$el.find('.submit');
+ $message = $newCommentForm.find('.message');
+ $submitButton = $newCommentForm.find('.submit');
});
afterEach(function() {
tooltipStub.restore();
diff --git a/apps/dav/l10n/et_EE.js b/apps/dav/l10n/et_EE.js
new file mode 100644
index 00000000000..e640488514f
--- /dev/null
+++ b/apps/dav/l10n/et_EE.js
@@ -0,0 +1,62 @@
+OC.L10N.register(
+ "dav",
+ {
+ "Calendar" : "Kalender",
+ "Todos" : "Ülesanded",
+ "Personal" : "Isiklik",
+ "{actor} created calendar {calendar}" : "{actor} lõi kalendri {calendar}",
+ "You created calendar {calendar}" : "Sa lõid kalendri {calendar}",
+ "{actor} deleted calendar {calendar}" : "{actor} kustutas kalendri {calendar}",
+ "You deleted calendar {calendar}" : "Sa kustutasid kalendri {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} uuendas kalendrit {calendar}",
+ "You updated calendar {calendar}" : "Sa uuendasid kalendrit {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} jagas kalendrit {calendar} sinuga",
+ "You shared calendar {calendar} with {user}" : "Sa jagasid kalendrit {calendar} kasutajaga {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} jagas kalendrit {calendar} kasutajaga {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} lõpetas sinuga kalendri {calendar} jagamise",
+ "You unshared calendar {calendar} from {user}" : "Sa lõpetasid kalendri {calendar} jagamise kasutajaga {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} lõpetas kalendri {calendar} jagamise kasutajaga {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} lõpetas iseendaga kalendri {calendar} jagamise",
+ "You shared calendar {calendar} with group {group}" : "Sa jagasid kalendrit {calendar} grupiga {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} jagas kalendrit {calendar} grupiga {group}",
+ "You unshared calendar {calendar} from group {group}" : "Sa lõpetasid kalendri {calendar} jagamise grupiga {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} lõpetas kalendri {calendar} jagamise grupiga {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} lõi sündmuse {event} kalendrisse {calendar}",
+ "You created event {event} in calendar {calendar}" : "Sa lõid sündmuse {event} kalendrisse {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} kustutas sündmuse {event} kalendrist {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Sa kustutasid sündmuse {event} kalendrist {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} uuendas sündmust {event} kalendris {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Sa uuendasid sündmust {event} kalendris {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} lõi ülesande {todo} nimekirjas {calendar}",
+ "You created todo {todo} in list {calendar}" : "Sa lõid ülesande {todo} nimekirjas {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} kustutas ülesande {todo} nimekirjast {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "Sa kustutasid ülesande {todo} nimekirjast {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} uuendas ülesande {todo} nimekirjas {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Sa uuendasid ülesande {todo} nimekirjas {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} lõpetas ülesande {todo} nimekirjas {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Sa lõpetasid ülesande {todo} nimekirjas {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} taasavas ülesande {todo} nimekirjas {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Sa taasavasid ülesande {todo} nimekirjas {calendar}",
+ "A <strong>calendar</strong> was modified" : " <strong>Kalendrit</strong> muudeti",
+ "A calendar <strong>event</strong> was modified" : "Kalendri <strong>sündmust </strong> muudeti",
+ "A calendar <strong>todo</strong> was modified" : "Kalendri <strong>ülesannet</strong> muudeti",
+ "Contact birthdays" : "Kontaktide sünnipäevad",
+ "Invitation canceled" : "Kutse on tühistatud",
+ "Hello %s," : "Tere %s,",
+ "The meeting »%s« with %s was canceled." : "Koosolek »%s« osaleja(te)ga %s tühistati.",
+ "Invitation updated" : "Kutse uuendatud",
+ "The meeting »%s« with %s was updated." : "Koosolek »%s« osaleja(te)ga %s uuendati.",
+ "%s invited you to »%s«" : "%s kutsus sind »%s«",
+ "When:" : "Millal:",
+ "Where:" : "Kus:",
+ "Description:" : "Kirjeldus:",
+ "Link:" : "Link:",
+ "Contacts" : "Kontaktid",
+ "Technical details" : "Tehnilised detailid",
+ "Remote Address: %s" : "Kaugaadress: %s",
+ "Request ID: %s" : "Päringu ID: %s",
+ "CalDAV server" : "CalDAV server",
+ "Send invitations to attendees" : "Saada osalejatele kutsed",
+ "Please make sure to properly set up the email settings above." : "Veendu, et e-posti seaded oleksid eespool õigesti seadistatud."
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/et_EE.json b/apps/dav/l10n/et_EE.json
new file mode 100644
index 00000000000..e1c1f11e038
--- /dev/null
+++ b/apps/dav/l10n/et_EE.json
@@ -0,0 +1,60 @@
+{ "translations": {
+ "Calendar" : "Kalender",
+ "Todos" : "Ülesanded",
+ "Personal" : "Isiklik",
+ "{actor} created calendar {calendar}" : "{actor} lõi kalendri {calendar}",
+ "You created calendar {calendar}" : "Sa lõid kalendri {calendar}",
+ "{actor} deleted calendar {calendar}" : "{actor} kustutas kalendri {calendar}",
+ "You deleted calendar {calendar}" : "Sa kustutasid kalendri {calendar}",
+ "{actor} updated calendar {calendar}" : "{actor} uuendas kalendrit {calendar}",
+ "You updated calendar {calendar}" : "Sa uuendasid kalendrit {calendar}",
+ "{actor} shared calendar {calendar} with you" : "{actor} jagas kalendrit {calendar} sinuga",
+ "You shared calendar {calendar} with {user}" : "Sa jagasid kalendrit {calendar} kasutajaga {user}",
+ "{actor} shared calendar {calendar} with {user}" : "{actor} jagas kalendrit {calendar} kasutajaga {user}",
+ "{actor} unshared calendar {calendar} from you" : "{actor} lõpetas sinuga kalendri {calendar} jagamise",
+ "You unshared calendar {calendar} from {user}" : "Sa lõpetasid kalendri {calendar} jagamise kasutajaga {user}",
+ "{actor} unshared calendar {calendar} from {user}" : "{actor} lõpetas kalendri {calendar} jagamise kasutajaga {user}",
+ "{actor} unshared calendar {calendar} from themselves" : "{actor} lõpetas iseendaga kalendri {calendar} jagamise",
+ "You shared calendar {calendar} with group {group}" : "Sa jagasid kalendrit {calendar} grupiga {group}",
+ "{actor} shared calendar {calendar} with group {group}" : "{actor} jagas kalendrit {calendar} grupiga {group}",
+ "You unshared calendar {calendar} from group {group}" : "Sa lõpetasid kalendri {calendar} jagamise grupiga {group}",
+ "{actor} unshared calendar {calendar} from group {group}" : "{actor} lõpetas kalendri {calendar} jagamise grupiga {group}",
+ "{actor} created event {event} in calendar {calendar}" : "{actor} lõi sündmuse {event} kalendrisse {calendar}",
+ "You created event {event} in calendar {calendar}" : "Sa lõid sündmuse {event} kalendrisse {calendar}",
+ "{actor} deleted event {event} from calendar {calendar}" : "{actor} kustutas sündmuse {event} kalendrist {calendar}",
+ "You deleted event {event} from calendar {calendar}" : "Sa kustutasid sündmuse {event} kalendrist {calendar}",
+ "{actor} updated event {event} in calendar {calendar}" : "{actor} uuendas sündmust {event} kalendris {calendar}",
+ "You updated event {event} in calendar {calendar}" : "Sa uuendasid sündmust {event} kalendris {calendar}",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} lõi ülesande {todo} nimekirjas {calendar}",
+ "You created todo {todo} in list {calendar}" : "Sa lõid ülesande {todo} nimekirjas {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} kustutas ülesande {todo} nimekirjast {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "Sa kustutasid ülesande {todo} nimekirjast {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} uuendas ülesande {todo} nimekirjas {calendar}",
+ "You updated todo {todo} in list {calendar}" : "Sa uuendasid ülesande {todo} nimekirjas {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} lõpetas ülesande {todo} nimekirjas {calendar}",
+ "You solved todo {todo} in list {calendar}" : "Sa lõpetasid ülesande {todo} nimekirjas {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} taasavas ülesande {todo} nimekirjas {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "Sa taasavasid ülesande {todo} nimekirjas {calendar}",
+ "A <strong>calendar</strong> was modified" : " <strong>Kalendrit</strong> muudeti",
+ "A calendar <strong>event</strong> was modified" : "Kalendri <strong>sündmust </strong> muudeti",
+ "A calendar <strong>todo</strong> was modified" : "Kalendri <strong>ülesannet</strong> muudeti",
+ "Contact birthdays" : "Kontaktide sünnipäevad",
+ "Invitation canceled" : "Kutse on tühistatud",
+ "Hello %s," : "Tere %s,",
+ "The meeting »%s« with %s was canceled." : "Koosolek »%s« osaleja(te)ga %s tühistati.",
+ "Invitation updated" : "Kutse uuendatud",
+ "The meeting »%s« with %s was updated." : "Koosolek »%s« osaleja(te)ga %s uuendati.",
+ "%s invited you to »%s«" : "%s kutsus sind »%s«",
+ "When:" : "Millal:",
+ "Where:" : "Kus:",
+ "Description:" : "Kirjeldus:",
+ "Link:" : "Link:",
+ "Contacts" : "Kontaktid",
+ "Technical details" : "Tehnilised detailid",
+ "Remote Address: %s" : "Kaugaadress: %s",
+ "Request ID: %s" : "Päringu ID: %s",
+ "CalDAV server" : "CalDAV server",
+ "Send invitations to attendees" : "Saada osalejatele kutsed",
+ "Please make sure to properly set up the email settings above." : "Veendu, et e-posti seaded oleksid eespool õigesti seadistatud."
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php
index f172bde5f1f..32cc8b7adeb 100644
--- a/apps/dav/lib/Connector/Sabre/File.php
+++ b/apps/dav/lib/Connector/Sabre/File.php
@@ -36,13 +36,16 @@
namespace OCA\DAV\Connector\Sabre;
+use OC\AppFramework\Http\Request;
use OC\Files\Filesystem;
+use OC\Files\View;
use OCA\DAV\Connector\Sabre\Exception\EntityTooLarge;
use OCA\DAV\Connector\Sabre\Exception\FileLocked;
use OCA\DAV\Connector\Sabre\Exception\Forbidden as DAVForbiddenException;
use OCA\DAV\Connector\Sabre\Exception\UnsupportedMediaType;
use OCP\Encryption\Exceptions\GenericEncryptionException;
use OCP\Files\EntityTooLargeException;
+use OCP\Files\FileInfo;
use OCP\Files\ForbiddenException;
use OCP\Files\InvalidContentException;
use OCP\Files\InvalidPathException;
@@ -51,6 +54,7 @@ use OCP\Files\NotPermittedException;
use OCP\Files\StorageNotAvailableException;
use OCP\Lock\ILockingProvider;
use OCP\Lock\LockedException;
+use OCP\Share\IManager;
use Sabre\DAV\Exception;
use Sabre\DAV\Exception\BadRequest;
use Sabre\DAV\Exception\Forbidden;
@@ -61,6 +65,26 @@ use Sabre\DAV\Exception\NotFound;
class File extends Node implements IFile {
+ protected $request;
+
+ /**
+ * Sets up the node, expects a full path name
+ *
+ * @param \OC\Files\View $view
+ * @param \OCP\Files\FileInfo $info
+ * @param \OCP\Share\IManager $shareManager
+ * @param \OC\AppFramework\Http\Request $request
+ */
+ public function __construct(View $view, FileInfo $info, IManager $shareManager = null, Request $request = null) {
+ parent::__construct($view, $info, $shareManager);
+
+ if (isset($request)) {
+ $this->request = $request;
+ } else {
+ $this->request = \OC::$server->getRequest();
+ }
+ }
+
/**
* Updates the data
*
@@ -208,15 +232,10 @@ class File extends Node implements IFile {
}
// allow sync clients to send the mtime along in a header
- $request = \OC::$server->getRequest();
- if (isset($request->server['HTTP_X_OC_MTIME'])) {
- $mtimeStr = $request->server['HTTP_X_OC_MTIME'];
- if (!is_numeric($mtimeStr)) {
- throw new \InvalidArgumentException('X-OC-Mtime header must be an integer (unix timestamp).');
- }
- $mtime = intval($mtimeStr);
+ if (isset($this->request->server['HTTP_X_OC_MTIME'])) {
+ $mtime = $this->sanitizeMtime($this->request->server['HTTP_X_OC_MTIME']);
if ($this->fileView->touch($this->path, $mtime)) {
- header('X-OC-MTime: accepted');
+ $this->header('X-OC-MTime: accepted');
}
}
@@ -226,8 +245,8 @@ class File extends Node implements IFile {
$this->refreshInfo();
- if (isset($request->server['HTTP_OC_CHECKSUM'])) {
- $checksum = trim($request->server['HTTP_OC_CHECKSUM']);
+ if (isset($this->request->server['HTTP_OC_CHECKSUM'])) {
+ $checksum = trim($this->request->server['HTTP_OC_CHECKSUM']);
$this->fileView->putFileInfo($this->path, ['checksum' => $checksum]);
$this->refreshInfo();
} else if ($this->getChecksum() !== null && $this->getChecksum() !== '') {
@@ -470,10 +489,10 @@ class File extends Node implements IFile {
}
// allow sync clients to send the mtime along in a header
- $request = \OC::$server->getRequest();
- if (isset($request->server['HTTP_X_OC_MTIME'])) {
- if ($targetStorage->touch($targetInternalPath, $request->server['HTTP_X_OC_MTIME'])) {
- header('X-OC-MTime: accepted');
+ if (isset($this->request->server['HTTP_X_OC_MTIME'])) {
+ $mtime = $this->sanitizeMtime($this->request->server['HTTP_X_OC_MTIME']);
+ if ($targetStorage->touch($targetInternalPath, $mtime)) {
+ $this->header('X-OC-MTime: accepted');
}
}
@@ -487,8 +506,8 @@ class File extends Node implements IFile {
// FIXME: should call refreshInfo but can't because $this->path is not the of the final file
$info = $this->fileView->getFileInfo($targetPath);
- if (isset($request->server['HTTP_OC_CHECKSUM'])) {
- $checksum = trim($request->server['HTTP_OC_CHECKSUM']);
+ if (isset($this->request->server['HTTP_OC_CHECKSUM'])) {
+ $checksum = trim($this->request->server['HTTP_OC_CHECKSUM']);
$this->fileView->putFileInfo($targetPath, ['checksum' => $checksum]);
} else if ($info->getChecksum() !== null && $info->getChecksum() !== '') {
$this->fileView->putFileInfo($this->path, ['checksum' => '']);
@@ -570,6 +589,18 @@ class File extends Node implements IFile {
throw new \Sabre\DAV\Exception($e->getMessage(), 0, $e);
}
+ private function sanitizeMtime($mtimeFromRequest) {
+ // In PHP 5.X "is_numeric" returns true for strings in hexadecimal
+ // notation. This is no longer the case in PHP 7.X, so this check
+ // ensures that strings with hexadecimal notations fail too in PHP 5.X.
+ $isHexadecimal = is_string($mtimeFromRequest) && preg_match('/^\s*0[xX]/', $mtimeFromRequest);
+ if ($isHexadecimal || !is_numeric($mtimeFromRequest)) {
+ throw new \InvalidArgumentException('X-OC-MTime header must be an integer (unix timestamp).');
+ }
+
+ return intval($mtimeFromRequest);
+ }
+
/**
* Get the checksum for this file
*
@@ -578,4 +609,8 @@ class File extends Node implements IFile {
public function getChecksum() {
return $this->info->getChecksum();
}
+
+ protected function header($string) {
+ \header($string);
+ }
}
diff --git a/apps/dav/tests/unit/Connector/Sabre/FileTest.php b/apps/dav/tests/unit/Connector/Sabre/FileTest.php
index 4d106842cf0..1db9b7948e3 100644
--- a/apps/dav/tests/unit/Connector/Sabre/FileTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/FileTest.php
@@ -31,6 +31,7 @@ use OC\Files\Storage\Local;
use OC\Files\View;
use OCP\Files\ForbiddenException;
use OCP\Files\Storage;
+use OCP\IConfig;
use Test\HookHelper;
use OC\Files\Filesystem;
use OCP\Lock\ILockingProvider;
@@ -49,6 +50,9 @@ class FileTest extends \Test\TestCase {
*/
private $user;
+ /** @var IConfig | \PHPUnit_Framework_MockObject_MockObject */
+ protected $config;
+
public function setUp() {
parent::setUp();
unset($_SERVER['HTTP_OC_CHUNKED']);
@@ -62,6 +66,8 @@ class FileTest extends \Test\TestCase {
$userManager->createUser($this->user, 'pass');
$this->loginAsUser($this->user);
+
+ $this->config = $this->getMockBuilder('\OCP\IConfig')->getMock();
}
public function tearDown() {
@@ -284,10 +290,11 @@ class FileTest extends \Test\TestCase {
*
* @param string $path path to put the file into
* @param string $viewRoot root to use for the view
+ * @param null|\OC\AppFramework\Http\Request $request the HTTP request
*
* @return null|string of the PUT operaiton which is usually the etag
*/
- private function doPut($path, $viewRoot = null) {
+ private function doPut($path, $viewRoot = null, \OC\AppFramework\Http\Request $request = null) {
$view = \OC\Files\Filesystem::getView();
if (!is_null($viewRoot)) {
$view = new \OC\Files\View($viewRoot);
@@ -303,7 +310,11 @@ class FileTest extends \Test\TestCase {
null
);
- $file = new \OCA\DAV\Connector\Sabre\File($view, $info);
+ /** @var \OCA\DAV\Connector\Sabre\File | \PHPUnit_Framework_MockObject_MockObject $file */
+ $file = $this->getMockBuilder(\OCA\DAV\Connector\Sabre\File::class)
+ ->setConstructorArgs([$view, $info, null, $request])
+ ->setMethods(['header'])
+ ->getMock();
// beforeMethod locks
$view->lockFile($path, ILockingProvider::LOCK_SHARED);
@@ -323,6 +334,110 @@ class FileTest extends \Test\TestCase {
$this->assertNotEmpty($this->doPut('/foo.txt'));
}
+ public function legalMtimeProvider() {
+ return [
+ "string" => [
+ 'HTTP_X_OC_MTIME' => "string",
+ 'expected result' => null
+ ],
+ "castable string (int)" => [
+ 'HTTP_X_OC_MTIME' => "34",
+ 'expected result' => 34
+ ],
+ "castable string (float)" => [
+ 'HTTP_X_OC_MTIME' => "34.56",
+ 'expected result' => 34
+ ],
+ "float" => [
+ 'HTTP_X_OC_MTIME' => 34.56,
+ 'expected result' => 34
+ ],
+ "zero" => [
+ 'HTTP_X_OC_MTIME' => 0,
+ 'expected result' => 0
+ ],
+ "zero string" => [
+ 'HTTP_X_OC_MTIME' => "0",
+ 'expected result' => 0
+ ],
+ "negative zero string" => [
+ 'HTTP_X_OC_MTIME' => "-0",
+ 'expected result' => 0
+ ],
+ "string starting with number following by char" => [
+ 'HTTP_X_OC_MTIME' => "2345asdf",
+ 'expected result' => null
+ ],
+ "string castable hex int" => [
+ 'HTTP_X_OC_MTIME' => "0x45adf",
+ 'expected result' => null
+ ],
+ "string that looks like invalid hex int" => [
+ 'HTTP_X_OC_MTIME' => "0x123g",
+ 'expected result' => null
+ ],
+ "negative int" => [
+ 'HTTP_X_OC_MTIME' => -34,
+ 'expected result' => -34
+ ],
+ "negative float" => [
+ 'HTTP_X_OC_MTIME' => -34.43,
+ 'expected result' => -34
+ ],
+ ];
+ }
+
+ /**
+ * Test putting a file with string Mtime
+ * @dataProvider legalMtimeProvider
+ */
+ public function testPutSingleFileLegalMtime($requestMtime, $resultMtime) {
+ $request = new \OC\AppFramework\Http\Request([
+ 'server' => [
+ 'HTTP_X_OC_MTIME' => $requestMtime,
+ ]
+ ], null, $this->config, null);
+ $file = 'foo.txt';
+
+ if ($resultMtime === null) {
+ $this->expectException(\InvalidArgumentException::class);
+ $this->expectExceptionMessage("X-OC-MTime header must be an integer (unix timestamp).");
+ }
+
+ $this->doPut($file, null, $request);
+
+ if ($resultMtime !== null) {
+ $this->assertEquals($resultMtime, $this->getFileInfos($file)['mtime']);
+ }
+ }
+
+ /**
+ * Test putting a file with string Mtime using chunking
+ * @dataProvider legalMtimeProvider
+ */
+ public function testChunkedPutLegalMtime($requestMtime, $resultMtime) {
+ $request = new \OC\AppFramework\Http\Request([
+ 'server' => [
+ 'HTTP_X_OC_MTIME' => $requestMtime,
+ ]
+ ], null, $this->config, null);
+
+ $_SERVER['HTTP_OC_CHUNKED'] = true;
+ $file = 'foo.txt';
+
+ if ($resultMtime === null) {
+ $this->expectException(\Sabre\DAV\Exception::class);
+ $this->expectExceptionMessage("X-OC-MTime header must be an integer (unix timestamp).");
+ }
+
+ $this->doPut($file.'-chunking-12345-2-0', null, $request);
+ $this->doPut($file.'-chunking-12345-2-1', null, $request);
+
+ if ($resultMtime !== null) {
+ $this->assertEquals($resultMtime, $this->getFileInfos($file)['mtime']);
+ }
+ }
+
/**
* Test putting a file using chunking
*/
@@ -968,6 +1083,25 @@ class FileTest extends \Test\TestCase {
}
/**
+ * returns an array of file information filesize, mtime, filetype, mimetype
+ *
+ * @param string $path
+ * @param View $userView
+ * @return array
+ */
+ private function getFileInfos($path = '', View $userView = null) {
+ if ($userView === null) {
+ $userView = Filesystem::getView();
+ }
+ return [
+ "filesize" => $userView->filesize($path),
+ "mtime" => $userView->filemtime($path),
+ "filetype" => $userView->filetype($path),
+ "mimetype" => $userView->getMimeType($path)
+ ];
+ }
+
+ /**
* @expectedException \Sabre\DAV\Exception\ServiceUnavailable
*/
public function testGetFopenFails() {
diff --git a/apps/federatedfilesharing/l10n/et_EE.js b/apps/federatedfilesharing/l10n/et_EE.js
index 8e61e9ddf6e..f9206e53711 100644
--- a/apps/federatedfilesharing/l10n/et_EE.js
+++ b/apps/federatedfilesharing/l10n/et_EE.js
@@ -1,15 +1,58 @@
OC.L10N.register(
"federatedfilesharing",
{
+ "Federated sharing" : "Liit-jagamine",
+ "Do you want to add the remote share {name} from {owner}@{remote}?" : "Soovid lisada kaugjagamise {name} asukohast {owner}@{remote}?",
+ "Remote share" : "Kaugjagamine",
+ "Remote share password" : "Kaugjagamise parool",
+ "Cancel" : "Tühista",
+ "Add remote share" : "Lisa kaugjagamine",
+ "Copy" : "Kopeeri",
+ "Copied!" : "Kopeeritud!",
+ "Not supported!" : "Pole toetatud!",
+ "Press ⌘-C to copy." : "Kopeerimiseks vajuta ⌘ + C.",
+ "Press Ctrl-C to copy." : "Kopeerimiseks vajuta Ctrl + C.",
+ "Invalid Federated Cloud ID" : "Vigane liitpilve ID",
+ "Server to server sharing is not enabled on this server" : "Serveritevaheline jagamine ei ole selle pilves aktiiveeritud",
+ "Couldn't establish a federated share." : "Liitjagamist ei õnnestunud luua",
+ "Couldn't establish a federated share, maybe the password was wrong." : "Liitjagamist ei õnnestunud luua, ehk oli parool vale.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Liitjagamise päring edastatud, sulle saadetakse kutse. Kontrolli oma teateid.",
+ "The mountpoint name contains invalid characters." : "Ühenduspunkti nimes on vigaseid märke.",
+ "Not allowed to create a federated share with the owner." : "Liitjagamise loomine omanikuga ei ole lubatud.",
+ "Invalid or untrusted SSL certificate" : "Vigane või tundmatu SSL sertifikaat",
+ "Could not authenticate to remote share, password might be wrong" : "Ei õnnestunud kagujagamist autentida, ehk on parool vale",
+ "Storage not valid" : "Andmehoidla pole korrektne",
+ "Federated share added" : "Liitjagamine lisatud",
+ "Couldn't add remote share" : "Ei suutnud lisada kaugjagamist",
"Sharing %s failed, because this item is already shared with %s" : "%s jagamine ebaõnnestus, kuna see üksus on juba jagatud %s",
+ "Not allowed to create a federated share with the same user" : "Liitjagamise loomine sama kasutajaga ei ole lubatud.",
+ "File is already shared with %s" : "Fail on juba jagatud kasutajaga %s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "%s jagamine ebaõnnestus, ei suutnud %s leida, ehk ei ole server kättesaadav või kasutab ise allkirjastatud sertifikaati.",
+ "Could not find share" : "Jagamist ei leitud",
+ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Sa said kaugjagatud faili \"%3$s\" kasutajalt %1$s (%2$s nimel)",
+ "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Sa said kaugjagatud faili {share} kasjutajalt {user} ({behalf} nimel)",
+ "You received \"%3$s\" as a remote share from %1$s" : "Sa said kaugjagatud faili \"%3$s\" kasutajalt %1$s",
+ "You received {share} as a remote share from {user}" : "Sa said kaugjagatud faili {file} kasutajalt {user}",
"Accept" : "Nõustu",
- "Decline" : "Lükka tagasi",
+ "Decline" : "Keeldu",
+ "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Jaga minuga läbi minu #Nextcloudi liitpilve ID, vaata %s",
+ "Share with me through my #Nextcloud Federated Cloud ID" : "Jaga minuga läbi minu #Nextcloudi liitpilve ID",
+ "Sharing" : "Jagamine",
+ "Federated Cloud Sharing" : "Jagamine liitpilves",
"Open documentation" : "Ava dokumentatsioon",
+ "Adjust how people can share between servers." : "Seadista kuidas inimesed saavad serverite vahel jagada.",
"Allow users on this server to send shares to other servers" : "Luba selle serveri kasutajatel saata faile teistesse serveritesse",
"Allow users on this server to receive shares from other servers" : "Luba selle serveri kasutajatel võtta vastu jagamisi teistest serveritest",
- "Share it:" : "Jaga seda:",
+ "Search global and public address book for users" : "Otsi kasutajaid globaalsest ja avalikust aadressiraamatust",
+ "Allow users to publish their data to a global and public address book" : "Luba kasutajatel avaldada oma andmeid globaalses ja avalikus aadressiraamatus",
+ "Federated Cloud" : "Liitpilv",
+ "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Sa võid jagada kõigiga kes kasutab Nextcloudi, ownCloudi või Pydio't. Lihtsalt siseta jagamise dialoogi nende liitpilve ID. See näeb välja nagu person@cloud.example.com",
+ "Your Federated Cloud ID:" : "Sinu liitpilve ID:",
+ "Share it so your friends can share files with you:" : "Jaga seda, et su sõbrad saaksid sinuga faile jagada:",
"Add to your website" : "Lisa oma veebisaidile",
"Share with me via Nextcloud" : "Jaga minuga läbi Nextclouddiga",
- "HTML Code:" : "HTML kood:"
+ "HTML Code:" : "HTML kood:",
+ "Search global and public address book for users and let local users publish their data" : "Otsi kasutajaid globaalsest ja avalikust aadressiraamatust ja luba kohalikel kasutajatel avaldada oma andmeid",
+ "Share it:" : "Jaga seda:"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federatedfilesharing/l10n/et_EE.json b/apps/federatedfilesharing/l10n/et_EE.json
index 239b69b974c..e669fc92d66 100644
--- a/apps/federatedfilesharing/l10n/et_EE.json
+++ b/apps/federatedfilesharing/l10n/et_EE.json
@@ -1,13 +1,56 @@
{ "translations": {
+ "Federated sharing" : "Liit-jagamine",
+ "Do you want to add the remote share {name} from {owner}@{remote}?" : "Soovid lisada kaugjagamise {name} asukohast {owner}@{remote}?",
+ "Remote share" : "Kaugjagamine",
+ "Remote share password" : "Kaugjagamise parool",
+ "Cancel" : "Tühista",
+ "Add remote share" : "Lisa kaugjagamine",
+ "Copy" : "Kopeeri",
+ "Copied!" : "Kopeeritud!",
+ "Not supported!" : "Pole toetatud!",
+ "Press ⌘-C to copy." : "Kopeerimiseks vajuta ⌘ + C.",
+ "Press Ctrl-C to copy." : "Kopeerimiseks vajuta Ctrl + C.",
+ "Invalid Federated Cloud ID" : "Vigane liitpilve ID",
+ "Server to server sharing is not enabled on this server" : "Serveritevaheline jagamine ei ole selle pilves aktiiveeritud",
+ "Couldn't establish a federated share." : "Liitjagamist ei õnnestunud luua",
+ "Couldn't establish a federated share, maybe the password was wrong." : "Liitjagamist ei õnnestunud luua, ehk oli parool vale.",
+ "Federated Share request sent, you will receive an invitation. Check your notifications." : "Liitjagamise päring edastatud, sulle saadetakse kutse. Kontrolli oma teateid.",
+ "The mountpoint name contains invalid characters." : "Ühenduspunkti nimes on vigaseid märke.",
+ "Not allowed to create a federated share with the owner." : "Liitjagamise loomine omanikuga ei ole lubatud.",
+ "Invalid or untrusted SSL certificate" : "Vigane või tundmatu SSL sertifikaat",
+ "Could not authenticate to remote share, password might be wrong" : "Ei õnnestunud kagujagamist autentida, ehk on parool vale",
+ "Storage not valid" : "Andmehoidla pole korrektne",
+ "Federated share added" : "Liitjagamine lisatud",
+ "Couldn't add remote share" : "Ei suutnud lisada kaugjagamist",
"Sharing %s failed, because this item is already shared with %s" : "%s jagamine ebaõnnestus, kuna see üksus on juba jagatud %s",
+ "Not allowed to create a federated share with the same user" : "Liitjagamise loomine sama kasutajaga ei ole lubatud.",
+ "File is already shared with %s" : "Fail on juba jagatud kasutajaga %s",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "%s jagamine ebaõnnestus, ei suutnud %s leida, ehk ei ole server kättesaadav või kasutab ise allkirjastatud sertifikaati.",
+ "Could not find share" : "Jagamist ei leitud",
+ "You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Sa said kaugjagatud faili \"%3$s\" kasutajalt %1$s (%2$s nimel)",
+ "You received {share} as a remote share from {user} (on behalf of {behalf})" : "Sa said kaugjagatud faili {share} kasjutajalt {user} ({behalf} nimel)",
+ "You received \"%3$s\" as a remote share from %1$s" : "Sa said kaugjagatud faili \"%3$s\" kasutajalt %1$s",
+ "You received {share} as a remote share from {user}" : "Sa said kaugjagatud faili {file} kasutajalt {user}",
"Accept" : "Nõustu",
- "Decline" : "Lükka tagasi",
+ "Decline" : "Keeldu",
+ "Share with me through my #Nextcloud Federated Cloud ID, see %s" : "Jaga minuga läbi minu #Nextcloudi liitpilve ID, vaata %s",
+ "Share with me through my #Nextcloud Federated Cloud ID" : "Jaga minuga läbi minu #Nextcloudi liitpilve ID",
+ "Sharing" : "Jagamine",
+ "Federated Cloud Sharing" : "Jagamine liitpilves",
"Open documentation" : "Ava dokumentatsioon",
+ "Adjust how people can share between servers." : "Seadista kuidas inimesed saavad serverite vahel jagada.",
"Allow users on this server to send shares to other servers" : "Luba selle serveri kasutajatel saata faile teistesse serveritesse",
"Allow users on this server to receive shares from other servers" : "Luba selle serveri kasutajatel võtta vastu jagamisi teistest serveritest",
- "Share it:" : "Jaga seda:",
+ "Search global and public address book for users" : "Otsi kasutajaid globaalsest ja avalikust aadressiraamatust",
+ "Allow users to publish their data to a global and public address book" : "Luba kasutajatel avaldada oma andmeid globaalses ja avalikus aadressiraamatus",
+ "Federated Cloud" : "Liitpilv",
+ "You can share with anyone who uses Nextcloud, ownCloud or Pydio! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Sa võid jagada kõigiga kes kasutab Nextcloudi, ownCloudi või Pydio't. Lihtsalt siseta jagamise dialoogi nende liitpilve ID. See näeb välja nagu person@cloud.example.com",
+ "Your Federated Cloud ID:" : "Sinu liitpilve ID:",
+ "Share it so your friends can share files with you:" : "Jaga seda, et su sõbrad saaksid sinuga faile jagada:",
"Add to your website" : "Lisa oma veebisaidile",
"Share with me via Nextcloud" : "Jaga minuga läbi Nextclouddiga",
- "HTML Code:" : "HTML kood:"
+ "HTML Code:" : "HTML kood:",
+ "Search global and public address book for users and let local users publish their data" : "Otsi kasutajaid globaalsest ja avalikust aadressiraamatust ja luba kohalikel kasutajatel avaldada oma andmeid",
+ "Share it:" : "Jaga seda:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/federatedfilesharing/l10n/nl.js b/apps/federatedfilesharing/l10n/nl.js
index 11b5525e399..e764d8d6739 100644
--- a/apps/federatedfilesharing/l10n/nl.js
+++ b/apps/federatedfilesharing/l10n/nl.js
@@ -27,7 +27,7 @@ OC.L10N.register(
"Sharing %s failed, because this item is already shared with %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met %s",
"Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken",
"File is already shared with %s" : "Bestand is al gedeeld met %s",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Delen van %s mislukt, kon %s niet vinden, misschien is de server niet bereikbaar of u gebruikt een zelf getekend certificaat.",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Delen van %s mislukt, kon %s niet vinden, misschien is de server niet bereikbaar of je gebruikt een zelf getekend certificaat.",
"Could not find share" : "Kon share niet vinden",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Je ontving \"%3$s\" als een extern deel verzoek van %1$s (namens %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Je ontving {share} als een extern deel verzoek van {user} (namens {behalf})",
diff --git a/apps/federatedfilesharing/l10n/nl.json b/apps/federatedfilesharing/l10n/nl.json
index 8caaab558c8..5e3ea12bdf5 100644
--- a/apps/federatedfilesharing/l10n/nl.json
+++ b/apps/federatedfilesharing/l10n/nl.json
@@ -25,7 +25,7 @@
"Sharing %s failed, because this item is already shared with %s" : "Delen van %s is mislukt, omdat het object al wordt gedeeld met %s",
"Not allowed to create a federated share with the same user" : "Het is niet toegestaan om een gefedereerde share met dezelfde gebruikersserver te maken",
"File is already shared with %s" : "Bestand is al gedeeld met %s",
- "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Delen van %s mislukt, kon %s niet vinden, misschien is de server niet bereikbaar of u gebruikt een zelf getekend certificaat.",
+ "Sharing %s failed, could not find %s, maybe the server is currently unreachable or uses a self-signed certificate." : "Delen van %s mislukt, kon %s niet vinden, misschien is de server niet bereikbaar of je gebruikt een zelf getekend certificaat.",
"Could not find share" : "Kon share niet vinden",
"You received \"%3$s\" as a remote share from %1$s (on behalf of %2$s)" : "Je ontving \"%3$s\" als een extern deel verzoek van %1$s (namens %2$s)",
"You received {share} as a remote share from {user} (on behalf of {behalf})" : "Je ontving {share} als een extern deel verzoek van {user} (namens {behalf})",
diff --git a/apps/federation/l10n/et_EE.js b/apps/federation/l10n/et_EE.js
index bdad264db7d..e0d93d85bb4 100644
--- a/apps/federation/l10n/et_EE.js
+++ b/apps/federation/l10n/et_EE.js
@@ -1,7 +1,16 @@
OC.L10N.register(
"federation",
{
- "No ownCloud server found" : "ownCloudi serverit ei leitud",
- "Could not add server" : "Serveri lisamine ebaõnnestus"
+ "Added to the list of trusted servers" : "Usaldatud serverite nimekirja lisatud",
+ "Server is already in the list of trusted servers." : "Server on juba usaldatud serverite nimekirjas.",
+ "No server to federate with found" : "Serverit millega liituda ei leitud",
+ "Could not add server" : "Serveri lisamine ebaõnnestus",
+ "Trusted servers" : "Usaldatud serverid",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Liitumine lubab sul ühenduse luua teiste usaldusväärsete serveritega, et kasutajaid jagada. Näiteks saab seda rakendada liitunud serverite väliste kasutajanimede automaatseks täitmiseks.",
+ "Add server automatically once a federated share was created successfully" : "Lisa server automaatselt niipea kui liitjagamine õnnestus",
+ "+ Add trusted server" : "+ Lisa usaldatud server",
+ "Trusted server" : "Usaldatud server",
+ "Add" : "Lisa",
+ "Federation" : "Liit"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/federation/l10n/et_EE.json b/apps/federation/l10n/et_EE.json
index 9a5a8881c9b..7e5912b1133 100644
--- a/apps/federation/l10n/et_EE.json
+++ b/apps/federation/l10n/et_EE.json
@@ -1,5 +1,14 @@
{ "translations": {
- "No ownCloud server found" : "ownCloudi serverit ei leitud",
- "Could not add server" : "Serveri lisamine ebaõnnestus"
+ "Added to the list of trusted servers" : "Usaldatud serverite nimekirja lisatud",
+ "Server is already in the list of trusted servers." : "Server on juba usaldatud serverite nimekirjas.",
+ "No server to federate with found" : "Serverit millega liituda ei leitud",
+ "Could not add server" : "Serveri lisamine ebaõnnestus",
+ "Trusted servers" : "Usaldatud serverid",
+ "Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Liitumine lubab sul ühenduse luua teiste usaldusväärsete serveritega, et kasutajaid jagada. Näiteks saab seda rakendada liitunud serverite väliste kasutajanimede automaatseks täitmiseks.",
+ "Add server automatically once a federated share was created successfully" : "Lisa server automaatselt niipea kui liitjagamine õnnestus",
+ "+ Add trusted server" : "+ Lisa usaldatud server",
+ "Trusted server" : "Usaldatud server",
+ "Add" : "Lisa",
+ "Federation" : "Liit"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files/l10n/et_EE.js b/apps/files/l10n/et_EE.js
index 8bb56696fc1..e8b8e55848e 100644
--- a/apps/files/l10n/et_EE.js
+++ b/apps/files/l10n/et_EE.js
@@ -20,6 +20,7 @@ OC.L10N.register(
"…" : "...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{loadedSize} ({bitrate})",
"Target folder does not exist any more" : "Sihtkataloogi pole enam olemas",
+ "Error when assembling chunks, status code {status}" : "Tükkide kokkupanemise viga, staatus kood {status}",
"Actions" : "Tegevused",
"Download" : "Lae alla",
"Rename" : "Nimeta ümber",
@@ -40,6 +41,8 @@ OC.L10N.register(
"Could not move \"{file}\"" : "\"{file}\" liigutamine ebaõnnestus",
"Could not copy \"{file}\", target exists" : "\"{file}\" kopeerimine ebaõnnestus, sihtfail on juba olemas",
"Could not copy \"{file}\"" : "\"{file}\" kopeerimine ebaõnnestus",
+ "Copied {origin} inside {destination}" : "Kopeeris {origin} {destination} sisse",
+ "Copied {origin} and {nbfiles} other files inside {destination}" : "Kopeeris {origin} ja {nbfiles} teist faili {destination} sisse",
"{newName} already exists" : "{newName} on juba olemas",
"Could not rename \"{fileName}\", it does not exist any more" : "\"{fileName}\" ümbernimetamine ebaõnnestus, seda pole enam olemas",
"The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Nimi \"{targetName}\" on juba \"{dir}\" kaustas kasutusel. Palun valige teine nimi.",
@@ -76,6 +79,7 @@ OC.L10N.register(
"Favorite" : "Lemmik",
"New folder" : "Uus kaust",
"Upload file" : "Lae fail üles",
+ "Not favorited" : "Lemmikuks lisamata",
"Remove from favorites" : "Eemalda lemmikutest",
"Add to favorites" : "Lisa lemmikutesse",
"An error occurred while trying to update the tags" : "Siltide uuendamisel tekkis tõrge",
diff --git a/apps/files/l10n/et_EE.json b/apps/files/l10n/et_EE.json
index 0b45f837a0e..7d8d47e3b95 100644
--- a/apps/files/l10n/et_EE.json
+++ b/apps/files/l10n/et_EE.json
@@ -18,6 +18,7 @@
"…" : "...",
"{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize}/{loadedSize} ({bitrate})",
"Target folder does not exist any more" : "Sihtkataloogi pole enam olemas",
+ "Error when assembling chunks, status code {status}" : "Tükkide kokkupanemise viga, staatus kood {status}",
"Actions" : "Tegevused",
"Download" : "Lae alla",
"Rename" : "Nimeta ümber",
@@ -38,6 +39,8 @@
"Could not move \"{file}\"" : "\"{file}\" liigutamine ebaõnnestus",
"Could not copy \"{file}\", target exists" : "\"{file}\" kopeerimine ebaõnnestus, sihtfail on juba olemas",
"Could not copy \"{file}\"" : "\"{file}\" kopeerimine ebaõnnestus",
+ "Copied {origin} inside {destination}" : "Kopeeris {origin} {destination} sisse",
+ "Copied {origin} and {nbfiles} other files inside {destination}" : "Kopeeris {origin} ja {nbfiles} teist faili {destination} sisse",
"{newName} already exists" : "{newName} on juba olemas",
"Could not rename \"{fileName}\", it does not exist any more" : "\"{fileName}\" ümbernimetamine ebaõnnestus, seda pole enam olemas",
"The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "Nimi \"{targetName}\" on juba \"{dir}\" kaustas kasutusel. Palun valige teine nimi.",
@@ -74,6 +77,7 @@
"Favorite" : "Lemmik",
"New folder" : "Uus kaust",
"Upload file" : "Lae fail üles",
+ "Not favorited" : "Lemmikuks lisamata",
"Remove from favorites" : "Eemalda lemmikutest",
"Add to favorites" : "Lisa lemmikutesse",
"An error occurred while trying to update the tags" : "Siltide uuendamisel tekkis tõrge",
diff --git a/apps/files/l10n/ja.js b/apps/files/l10n/ja.js
index c92138cbcfe..77a97ed35d1 100644
--- a/apps/files/l10n/ja.js
+++ b/apps/files/l10n/ja.js
@@ -113,8 +113,8 @@ OC.L10N.register(
"Save" : "保存",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "PHP-FPM の場合は値を変更後、反映されるのに5分程度かかります。",
"Missing permissions to edit from here." : "ここから編集するための権限がありません。",
- "%s of %s used" : "%s のうち%s が使われています",
- "%s used" : "%s 使われています",
+ "%s of %s used" : "%s / %s 使用中",
+ "%s used" : "%s 使用中",
"Settings" : "設定",
"Show hidden files" : "隠しファイルを表示",
"WebDAV" : "WebDAV",
diff --git a/apps/files/l10n/ja.json b/apps/files/l10n/ja.json
index b4dafd2565d..32fd39ecbe4 100644
--- a/apps/files/l10n/ja.json
+++ b/apps/files/l10n/ja.json
@@ -111,8 +111,8 @@
"Save" : "保存",
"With PHP-FPM it might take 5 minutes for changes to be applied." : "PHP-FPM の場合は値を変更後、反映されるのに5分程度かかります。",
"Missing permissions to edit from here." : "ここから編集するための権限がありません。",
- "%s of %s used" : "%s のうち%s が使われています",
- "%s used" : "%s 使われています",
+ "%s of %s used" : "%s / %s 使用中",
+ "%s used" : "%s 使用中",
"Settings" : "設定",
"Show hidden files" : "隠しファイルを表示",
"WebDAV" : "WebDAV",
diff --git a/apps/files/l10n/zh_TW.js b/apps/files/l10n/zh_TW.js
index 625d9176d65..a0e9e1642dc 100644
--- a/apps/files/l10n/zh_TW.js
+++ b/apps/files/l10n/zh_TW.js
@@ -19,6 +19,8 @@ OC.L10N.register(
"Uploading …" : "上傳中...",
"…" : "...",
"{loadedSize} of {totalSize} ({bitrate})" : "{totalSize} 中的 {loadedSize} ({bitrate})",
+ "Target folder does not exist any more" : "目標資料夾已經不存在了",
+ "Error when assembling chunks, status code {status}" : "重組檔案片段時出錯,狀態代碼 {status}",
"Actions" : "動作",
"Download" : "下載",
"Rename" : "重新命名",
@@ -39,6 +41,8 @@ OC.L10N.register(
"Could not move \"{file}\"" : "無法移動 \"{file}\"",
"Could not copy \"{file}\", target exists" : "無法複製\"{file}\",目標已存在",
"Could not copy \"{file}\"" : "無法複製\"{file}\"",
+ "Copied {origin} inside {destination}" : "已複製 {origin} 至 {destination}",
+ "Copied {origin} and {nbfiles} other files inside {destination}" : "已複製 {origin} 和其他 {nbfiles} 個檔案至 {destination}",
"{newName} already exists" : "{newName} 已經存在",
"Could not rename \"{fileName}\", it does not exist any more" : "無法命名檔案 \"{fileName}\",因為此檔案已經不存在",
"The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "此名稱 \"{targetName}\" 在這資料夾 \"{dir}\" 已經被使用。請重新選擇不同的名稱",
diff --git a/apps/files/l10n/zh_TW.json b/apps/files/l10n/zh_TW.json
index 871f33e1276..41db3db0d49 100644
--- a/apps/files/l10n/zh_TW.json
+++ b/apps/files/l10n/zh_TW.json
@@ -17,6 +17,8 @@
"Uploading …" : "上傳中...",
"…" : "...",
"{loadedSize} of {totalSize} ({bitrate})" : "{totalSize} 中的 {loadedSize} ({bitrate})",
+ "Target folder does not exist any more" : "目標資料夾已經不存在了",
+ "Error when assembling chunks, status code {status}" : "重組檔案片段時出錯,狀態代碼 {status}",
"Actions" : "動作",
"Download" : "下載",
"Rename" : "重新命名",
@@ -37,6 +39,8 @@
"Could not move \"{file}\"" : "無法移動 \"{file}\"",
"Could not copy \"{file}\", target exists" : "無法複製\"{file}\",目標已存在",
"Could not copy \"{file}\"" : "無法複製\"{file}\"",
+ "Copied {origin} inside {destination}" : "已複製 {origin} 至 {destination}",
+ "Copied {origin} and {nbfiles} other files inside {destination}" : "已複製 {origin} 和其他 {nbfiles} 個檔案至 {destination}",
"{newName} already exists" : "{newName} 已經存在",
"Could not rename \"{fileName}\", it does not exist any more" : "無法命名檔案 \"{fileName}\",因為此檔案已經不存在",
"The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "此名稱 \"{targetName}\" 在這資料夾 \"{dir}\" 已經被使用。請重新選擇不同的名稱",
diff --git a/apps/files_sharing/l10n/et_EE.js b/apps/files_sharing/l10n/et_EE.js
index 05d9517f0c2..404f481c561 100644
--- a/apps/files_sharing/l10n/et_EE.js
+++ b/apps/files_sharing/l10n/et_EE.js
@@ -1,11 +1,6 @@
OC.L10N.register(
"files_sharing",
{
- "Server to server sharing is not enabled on this server" : "Serverist serverisse jagamine pole antud serveris lubatud",
- "The mountpoint name contains invalid characters." : "Ühenduspunkti nimes on vigaseid märke.",
- "Invalid or untrusted SSL certificate" : "Vigane või tundmatu SSL sertifikaat",
- "Storage not valid" : "Andmehoidla pole korrektne",
- "Couldn't add remote share" : "Ei suutnud lisada kaugjagamist",
"Shared with you" : "Sinuga jagatud",
"Shared with others" : "Teistega jagatud",
"Shared by link" : "Jagatud lingiga",
@@ -15,43 +10,106 @@ OC.L10N.register(
"Files and folders you share will show up here" : "Siin kuvatakse faile ja kaustasid, mida sa oled teistega jaganud",
"No shared links" : "Jagatud linke pole",
"Files and folders you share by link will show up here" : "Siin kuvatakse faile ja kaustasid, mida sa jagad lingiga",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Soovid lisata kaugjagamise {name} asukohast {owner}@{remote}?",
- "Remote share" : "Kaugjagamine",
- "Remote share password" : "Kaugjagamise parool",
- "Cancel" : "Loobu",
- "Add remote share" : "Lisa kaugjagamine",
"You can upload into this folder" : "Sa saad sellesse kausta faile üles laadida",
- "No ownCloud installation (7 or higher) found at {remote}" : "Saidilt {remote} ei leitud ownCloudi (7 või uuem) ",
- "Invalid ownCloud url" : "Vigane ownCloud url",
+ "No compatible server found at {remote}" : "Aadressil {remote} ei leitud ühilduvat serverit",
+ "Invalid server URL" : "Vigane serveri URL",
+ "Failed to add the public link to your Nextcloud" : "Avaliku lingi lisamine sinu Nextcloudi ebaõnnestus",
+ "Share" : "Jaga",
+ "No expiration date set" : "Aegumise kuupäeva pole määratud",
"Shared by" : "Jagas",
"Sharing" : "Jagamine",
- "A file or folder has been <strong>shared</strong>" : "Fail või kataloog on <strong>jagatud</strong>",
- "You shared %1$s with %2$s" : "Jagasid %1$s %2$s kasutajaga",
- "You shared %1$s with group %2$s" : "Jagasid %1$s %2$s grupiga",
- "You shared %1$s via link" : "Jagasid %1$s lingiga",
- "%2$s shared %1$s with you" : "%2$s jagas sinuga %1$s",
+ "File shares" : "Jagatud failid",
"Downloaded via public link" : "Alla laetud avalikult lingilt",
- "Shared with %2$s" : "Jagatud kasutajaga %2$s",
- "Shared with group %2$s" : "Jagatud grupiga %2$s",
- "Shared via public link" : "Jagatud avaliku lingiga",
+ "Downloaded by {email}" : "Alla laetud {email} poolt",
+ "{file} downloaded via public link" : "{file} laeti alla avaliku lingi kaudu",
+ "{email} downloaded {file}" : "{email} laadis {file} alla",
+ "Shared with group {group}" : "Jagatud grupiga {group}",
+ "Removed share for group {group}" : "Eemaldas jagamise grupiga {group}",
+ "{actor} shared with group {group}" : "{actor} jagas grupiga {group}",
+ "{actor} removed share for group {group}" : "{actor} eemaldas jagamise grupiga {group}",
+ "You shared {file} with group {group}" : "Sa jagasid faili {file} grupiga {group}",
+ "You removed group {group} from {file}" : "Sa eemaldasid grupi {group} faili {file} jagamisest",
+ "{actor} shared {file} with group {group}" : "{actor} jagas faili {file} grupiga {group}",
+ "{actor} removed group {group} from {file}" : "{actor} eemaldas grupi {group} faili {file} jagamisest",
+ "Shared as public link" : "Jaga avaliku lingina",
"Removed public link" : "Avalik link on eemaldatud",
"Public link expired" : "Avalik link aegus",
- "Shares" : "Jagamised",
+ "{actor} shared as public link" : "{actor} jagas avaliku lingina",
+ "{actor} removed public link" : "{actor} eemaldas avaliku lingi",
+ "Public link of {actor} expired" : "{actor} avalik link aegus",
+ "You shared {file} as public link" : "Sa jagasid {file} avaliku lingina",
+ "You removed public link for {file}" : "Sa eemaldasid {file} avaliku lingi",
+ "Public link expired for {file}" : "{file} avalik link aegus",
+ "{actor} shared {file} as public link" : "{actor} jagas {file} avaliku lingina",
+ "{actor} removed public link for {file}" : "{actor} eemaldas {file} avaliku lingi",
+ "Public link of {actor} for {file} expired" : " {actor} faili {file} avalik link aegus",
+ "{user} accepted the remote share" : "{user} aksepteeris kaugjagamise",
+ "{user} declined the remote share" : "{user} keeldus kaugjagamisest",
+ "You received a new remote share {file} from {user}" : "Sa said uue kaugjagatud faili {file} kasutajalt {user}",
+ "{user} accepted the remote share of {file}" : "{user} aksepteeris faili {file} kaugjagamise",
+ "{user} declined the remote share of {file}" : "{user} keeldus faili {file} kaugjagamisest",
+ "{user} unshared {file} from you" : "{user} lõpetas sinuga faili {file} jagamise",
+ "Shared with {user}" : "Jagatud kasutajale {user}",
+ "Removed share for {user}" : "Eemaldas jagamise kasutajaga {user}",
+ "{actor} shared with {user}" : "{actor} jagas kasutajaga {user}",
+ "{actor} removed share for {user}" : "{actor} eemaldas jagamise kasutajaga {user}",
+ "Shared by {actor}" : "Jagatud kasutajalt {actor}",
+ "{actor} removed share" : "{actor} eemaldas jagamise",
+ "You shared {file} with {user}" : "Sa jagasid {file} kasutajaga {user}",
+ "You removed {user} from {file}" : "Sa eemaldasid faili {file} jagamise kasutajaga {user} ",
+ "{actor} shared {file} with {user}" : "{actor} jagas {file} kasutajaga {user}",
+ "{actor} removed {user} from {file}" : "{actor} eemaldas {user} jagamise faililt {file}",
+ "{actor} shared {file} with you" : "{actor} jagas singuga {file}",
+ "{actor} removed you from {file}" : "{actor} eemaldas sind {file} jagamisest",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Fail või kaust mis on jagatud e-posti või avaliku lingiga <strong>laeti alla</strong>",
+ "A file or folder was shared from <strong>another server</strong>" : "Fail või kaust jagati <strong>teisest serverist</strong>",
+ "A file or folder has been <strong>shared</strong>" : "Fail või kataloog on <strong>jagatud</strong>",
+ "Wrong share ID, share doesn't exist" : "Vale jagamise ID, sellist jagamist ei eksisteeri",
+ "could not delete share" : "ei saanud jagamist eemaldada",
+ "Could not delete share" : "Ei saanud jagamist eemaldada",
+ "Please specify a file or folder path" : "Palun määra faili või kausta rada",
+ "Wrong path, file/folder doesn't exist" : "Vale rada, faili/kausta ei leitud",
+ "Could not create share" : "Ei saanud jagamist luua",
+ "invalid permissions" : "valed õigused",
+ "Please specify a valid user" : "Palun määra kehtiv kasutaja",
+ "Group sharing is disabled by the administrator" : "Grupiga jagamine on administraatori poolt keelatud",
+ "Please specify a valid group" : "Palun määra kehtiv grupp",
+ "Public link sharing is disabled by the administrator" : "Avaliku lingiga jagamine on administraatori poolt keelatud",
+ "Public upload disabled by the administrator" : "Avalik üleslaadimine on administraatori poolt keelatud",
+ "Public upload is only possible for publicly shared folders" : "Avalik üleslaadminie on võimalik ainult avalikult jagatud kaustades",
+ "Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD",
+ "Sharing %s failed because the back end does not allow shares from type %s" : "%s jagamine ebaõnnestus sest server ei luba %s tüüpi jagamisi",
+ "You cannot share to a Circle if the app is not enabled" : "Sa ei saa jagada Ringi kui see rakendus pole lubatud",
+ "Please specify a valid circle" : "Palun määra kehtiv ring",
+ "Unknown share type" : "Tundmatu jagamise tüüp",
+ "Not a directory" : "Ei ole kaust",
+ "Could not lock path" : "Ei saanud rada lukustada",
+ "Wrong or no update parameter given" : "Antud vale või aegunud parameeter",
+ "Can't change permissions for public share links" : "Avalikult jagatud linkide õigusi muuta ei saa",
+ "Cannot increase permissions" : "Ei saa õigusi suurendada",
+ "Share API is disabled" : "Jagamise API on keelatud",
"This share is password-protected" : "See jagamine on parooliga kaitstud",
"The password is wrong. Try again." : "Parool on vale. Proovi uuesti.",
"Password" : "Parool",
"No entries found in this folder" : "Selles kaustas ei leitud kirjeid",
"Name" : "Nimi",
"Share time" : "Jagamise aeg",
+ "Expiration date" : "Aegumise kuupäev",
"Sorry, this link doesn’t seem to work anymore." : "Vabandust, see link ei tundu enam toimivat.",
"Reasons might be:" : "Põhjused võivad olla:",
"the item was removed" : "üksus on eemaldatud",
"the link expired" : "link on aegunud",
"sharing is disabled" : "jagamine on peatatud",
"For more info, please ask the person who sent this link." : "Täpsema info saamiseks palun pöördu lingi saatnud isiku poole.",
- "Add to your ownCloud" : "Lisa oma ownCloudi",
+ "shared by %s" : "jagas %s",
"Download" : "Lae alla",
+ "Direct link" : "Otsene link",
+ "Add to your Nextcloud" : "Lisa oma Nextcloudi",
"Download %s" : "Laadi alla %s",
- "Direct link" : "Otsene link"
+ "Upload files to %s" : "Laadi failid %s",
+ "Select or drop files" : "Vali või lohista failid",
+ "Uploading files…" : "Failide üleslaadimine...",
+ "Uploaded files:" : "Üleslaetud failid:",
+ "%s is publicly shared" : "%s on avalikult jagatud"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/files_sharing/l10n/et_EE.json b/apps/files_sharing/l10n/et_EE.json
index b782953c83e..89086670a74 100644
--- a/apps/files_sharing/l10n/et_EE.json
+++ b/apps/files_sharing/l10n/et_EE.json
@@ -1,9 +1,4 @@
{ "translations": {
- "Server to server sharing is not enabled on this server" : "Serverist serverisse jagamine pole antud serveris lubatud",
- "The mountpoint name contains invalid characters." : "Ühenduspunkti nimes on vigaseid märke.",
- "Invalid or untrusted SSL certificate" : "Vigane või tundmatu SSL sertifikaat",
- "Storage not valid" : "Andmehoidla pole korrektne",
- "Couldn't add remote share" : "Ei suutnud lisada kaugjagamist",
"Shared with you" : "Sinuga jagatud",
"Shared with others" : "Teistega jagatud",
"Shared by link" : "Jagatud lingiga",
@@ -13,43 +8,106 @@
"Files and folders you share will show up here" : "Siin kuvatakse faile ja kaustasid, mida sa oled teistega jaganud",
"No shared links" : "Jagatud linke pole",
"Files and folders you share by link will show up here" : "Siin kuvatakse faile ja kaustasid, mida sa jagad lingiga",
- "Do you want to add the remote share {name} from {owner}@{remote}?" : "Soovid lisata kaugjagamise {name} asukohast {owner}@{remote}?",
- "Remote share" : "Kaugjagamine",
- "Remote share password" : "Kaugjagamise parool",
- "Cancel" : "Loobu",
- "Add remote share" : "Lisa kaugjagamine",
"You can upload into this folder" : "Sa saad sellesse kausta faile üles laadida",
- "No ownCloud installation (7 or higher) found at {remote}" : "Saidilt {remote} ei leitud ownCloudi (7 või uuem) ",
- "Invalid ownCloud url" : "Vigane ownCloud url",
+ "No compatible server found at {remote}" : "Aadressil {remote} ei leitud ühilduvat serverit",
+ "Invalid server URL" : "Vigane serveri URL",
+ "Failed to add the public link to your Nextcloud" : "Avaliku lingi lisamine sinu Nextcloudi ebaõnnestus",
+ "Share" : "Jaga",
+ "No expiration date set" : "Aegumise kuupäeva pole määratud",
"Shared by" : "Jagas",
"Sharing" : "Jagamine",
- "A file or folder has been <strong>shared</strong>" : "Fail või kataloog on <strong>jagatud</strong>",
- "You shared %1$s with %2$s" : "Jagasid %1$s %2$s kasutajaga",
- "You shared %1$s with group %2$s" : "Jagasid %1$s %2$s grupiga",
- "You shared %1$s via link" : "Jagasid %1$s lingiga",
- "%2$s shared %1$s with you" : "%2$s jagas sinuga %1$s",
+ "File shares" : "Jagatud failid",
"Downloaded via public link" : "Alla laetud avalikult lingilt",
- "Shared with %2$s" : "Jagatud kasutajaga %2$s",
- "Shared with group %2$s" : "Jagatud grupiga %2$s",
- "Shared via public link" : "Jagatud avaliku lingiga",
+ "Downloaded by {email}" : "Alla laetud {email} poolt",
+ "{file} downloaded via public link" : "{file} laeti alla avaliku lingi kaudu",
+ "{email} downloaded {file}" : "{email} laadis {file} alla",
+ "Shared with group {group}" : "Jagatud grupiga {group}",
+ "Removed share for group {group}" : "Eemaldas jagamise grupiga {group}",
+ "{actor} shared with group {group}" : "{actor} jagas grupiga {group}",
+ "{actor} removed share for group {group}" : "{actor} eemaldas jagamise grupiga {group}",
+ "You shared {file} with group {group}" : "Sa jagasid faili {file} grupiga {group}",
+ "You removed group {group} from {file}" : "Sa eemaldasid grupi {group} faili {file} jagamisest",
+ "{actor} shared {file} with group {group}" : "{actor} jagas faili {file} grupiga {group}",
+ "{actor} removed group {group} from {file}" : "{actor} eemaldas grupi {group} faili {file} jagamisest",
+ "Shared as public link" : "Jaga avaliku lingina",
"Removed public link" : "Avalik link on eemaldatud",
"Public link expired" : "Avalik link aegus",
- "Shares" : "Jagamised",
+ "{actor} shared as public link" : "{actor} jagas avaliku lingina",
+ "{actor} removed public link" : "{actor} eemaldas avaliku lingi",
+ "Public link of {actor} expired" : "{actor} avalik link aegus",
+ "You shared {file} as public link" : "Sa jagasid {file} avaliku lingina",
+ "You removed public link for {file}" : "Sa eemaldasid {file} avaliku lingi",
+ "Public link expired for {file}" : "{file} avalik link aegus",
+ "{actor} shared {file} as public link" : "{actor} jagas {file} avaliku lingina",
+ "{actor} removed public link for {file}" : "{actor} eemaldas {file} avaliku lingi",
+ "Public link of {actor} for {file} expired" : " {actor} faili {file} avalik link aegus",
+ "{user} accepted the remote share" : "{user} aksepteeris kaugjagamise",
+ "{user} declined the remote share" : "{user} keeldus kaugjagamisest",
+ "You received a new remote share {file} from {user}" : "Sa said uue kaugjagatud faili {file} kasutajalt {user}",
+ "{user} accepted the remote share of {file}" : "{user} aksepteeris faili {file} kaugjagamise",
+ "{user} declined the remote share of {file}" : "{user} keeldus faili {file} kaugjagamisest",
+ "{user} unshared {file} from you" : "{user} lõpetas sinuga faili {file} jagamise",
+ "Shared with {user}" : "Jagatud kasutajale {user}",
+ "Removed share for {user}" : "Eemaldas jagamise kasutajaga {user}",
+ "{actor} shared with {user}" : "{actor} jagas kasutajaga {user}",
+ "{actor} removed share for {user}" : "{actor} eemaldas jagamise kasutajaga {user}",
+ "Shared by {actor}" : "Jagatud kasutajalt {actor}",
+ "{actor} removed share" : "{actor} eemaldas jagamise",
+ "You shared {file} with {user}" : "Sa jagasid {file} kasutajaga {user}",
+ "You removed {user} from {file}" : "Sa eemaldasid faili {file} jagamise kasutajaga {user} ",
+ "{actor} shared {file} with {user}" : "{actor} jagas {file} kasutajaga {user}",
+ "{actor} removed {user} from {file}" : "{actor} eemaldas {user} jagamise faililt {file}",
+ "{actor} shared {file} with you" : "{actor} jagas singuga {file}",
+ "{actor} removed you from {file}" : "{actor} eemaldas sind {file} jagamisest",
+ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Fail või kaust mis on jagatud e-posti või avaliku lingiga <strong>laeti alla</strong>",
+ "A file or folder was shared from <strong>another server</strong>" : "Fail või kaust jagati <strong>teisest serverist</strong>",
+ "A file or folder has been <strong>shared</strong>" : "Fail või kataloog on <strong>jagatud</strong>",
+ "Wrong share ID, share doesn't exist" : "Vale jagamise ID, sellist jagamist ei eksisteeri",
+ "could not delete share" : "ei saanud jagamist eemaldada",
+ "Could not delete share" : "Ei saanud jagamist eemaldada",
+ "Please specify a file or folder path" : "Palun määra faili või kausta rada",
+ "Wrong path, file/folder doesn't exist" : "Vale rada, faili/kausta ei leitud",
+ "Could not create share" : "Ei saanud jagamist luua",
+ "invalid permissions" : "valed õigused",
+ "Please specify a valid user" : "Palun määra kehtiv kasutaja",
+ "Group sharing is disabled by the administrator" : "Grupiga jagamine on administraatori poolt keelatud",
+ "Please specify a valid group" : "Palun määra kehtiv grupp",
+ "Public link sharing is disabled by the administrator" : "Avaliku lingiga jagamine on administraatori poolt keelatud",
+ "Public upload disabled by the administrator" : "Avalik üleslaadimine on administraatori poolt keelatud",
+ "Public upload is only possible for publicly shared folders" : "Avalik üleslaadminie on võimalik ainult avalikult jagatud kaustades",
+ "Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD",
+ "Sharing %s failed because the back end does not allow shares from type %s" : "%s jagamine ebaõnnestus sest server ei luba %s tüüpi jagamisi",
+ "You cannot share to a Circle if the app is not enabled" : "Sa ei saa jagada Ringi kui see rakendus pole lubatud",
+ "Please specify a valid circle" : "Palun määra kehtiv ring",
+ "Unknown share type" : "Tundmatu jagamise tüüp",
+ "Not a directory" : "Ei ole kaust",
+ "Could not lock path" : "Ei saanud rada lukustada",
+ "Wrong or no update parameter given" : "Antud vale või aegunud parameeter",
+ "Can't change permissions for public share links" : "Avalikult jagatud linkide õigusi muuta ei saa",
+ "Cannot increase permissions" : "Ei saa õigusi suurendada",
+ "Share API is disabled" : "Jagamise API on keelatud",
"This share is password-protected" : "See jagamine on parooliga kaitstud",
"The password is wrong. Try again." : "Parool on vale. Proovi uuesti.",
"Password" : "Parool",
"No entries found in this folder" : "Selles kaustas ei leitud kirjeid",
"Name" : "Nimi",
"Share time" : "Jagamise aeg",
+ "Expiration date" : "Aegumise kuupäev",
"Sorry, this link doesn’t seem to work anymore." : "Vabandust, see link ei tundu enam toimivat.",
"Reasons might be:" : "Põhjused võivad olla:",
"the item was removed" : "üksus on eemaldatud",
"the link expired" : "link on aegunud",
"sharing is disabled" : "jagamine on peatatud",
"For more info, please ask the person who sent this link." : "Täpsema info saamiseks palun pöördu lingi saatnud isiku poole.",
- "Add to your ownCloud" : "Lisa oma ownCloudi",
+ "shared by %s" : "jagas %s",
"Download" : "Lae alla",
+ "Direct link" : "Otsene link",
+ "Add to your Nextcloud" : "Lisa oma Nextcloudi",
"Download %s" : "Laadi alla %s",
- "Direct link" : "Otsene link"
+ "Upload files to %s" : "Laadi failid %s",
+ "Select or drop files" : "Vali või lohista failid",
+ "Uploading files…" : "Failide üleslaadimine...",
+ "Uploaded files:" : "Üleslaetud failid:",
+ "%s is publicly shared" : "%s on avalikult jagatud"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/files_sharing/tests/js/shareSpec.js b/apps/files_sharing/tests/js/shareSpec.js
index 893525f7566..91060f6a735 100644
--- a/apps/files_sharing/tests/js/shareSpec.js
+++ b/apps/files_sharing/tests/js/shareSpec.js
@@ -498,7 +498,7 @@ describe('OCA.Sharing.Util tests', function() {
var changeHandler = sinon.stub();
fileInfoModel.on('change', changeHandler);
- shareTabSpy.getCall(0).thisValue.trigger('sharesChanged', shareModel);
+ shareTabSpy.getCall(0).returnValue.trigger('sharesChanged', shareModel);
expect(changeHandler.calledOnce).toEqual(true);
expect(changeHandler.getCall(0).args[0].changed).toEqual({
diff --git a/apps/systemtags/l10n/et_EE.js b/apps/systemtags/l10n/et_EE.js
index a7af5717495..d2af006af9d 100644
--- a/apps/systemtags/l10n/et_EE.js
+++ b/apps/systemtags/l10n/et_EE.js
@@ -26,9 +26,17 @@ OC.L10N.register(
"You deleted system tag {systemtag}" : "Sa kustutasid süsteemi sildi {systemtag}",
"%1$s deleted system tag %2$s" : "%1$s kustutas süsteemi sildi %2$s",
"{actor} deleted system tag {systemtag}" : "{actor} kustutas süsteemi sildi {systemtag}",
+ "You updated system tag %2$s to %1$s" : "Sa uuendasid süsteemi sildi %2$s => %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Sa uuendasid süsteemi sildi {oldsystemtag} => {newsystemtag}",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s uuendas süsteemi sildi %3$s => %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} uuendas süsteemi sildi {oldsystemtag} => {newsystemtag}",
+ "You added system tag %2$s to %1$s" : "Sa lisasid süsteemi sildi %2$s => %1$s",
"You added system tag {systemtag} to {file}" : "Sa lisasid süsteemi sildi {systemtag} failile {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s lisas süsteemi sildi %3$s => %2$s",
"{actor} added system tag {systemtag} to {file}" : "{actor} lisas süsteemi sildi {systemtag} failile {file}",
+ "You removed system tag %2$s from %1$s" : "Sa eemaldasid süsteemi sildi %2$s - %1$s",
"You removed system tag {systemtag} from {file}" : "Sa eemaldasid süsteemi sildi {systemtag} {file} faililt",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s eemaldas süsteemi sildi %3$s - %2$s",
"{actor} removed system tag {systemtag} from {file}" : "{actor} eemaldas süsteemi sildi {systemtag} {file} faililt",
"%s (restricted)" : "%s (piiratud)",
"%s (invisible)" : "%s (nähtamatu)",
diff --git a/apps/systemtags/l10n/et_EE.json b/apps/systemtags/l10n/et_EE.json
index 6afc7567dfc..fe327cfbddc 100644
--- a/apps/systemtags/l10n/et_EE.json
+++ b/apps/systemtags/l10n/et_EE.json
@@ -24,9 +24,17 @@
"You deleted system tag {systemtag}" : "Sa kustutasid süsteemi sildi {systemtag}",
"%1$s deleted system tag %2$s" : "%1$s kustutas süsteemi sildi %2$s",
"{actor} deleted system tag {systemtag}" : "{actor} kustutas süsteemi sildi {systemtag}",
+ "You updated system tag %2$s to %1$s" : "Sa uuendasid süsteemi sildi %2$s => %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "Sa uuendasid süsteemi sildi {oldsystemtag} => {newsystemtag}",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s uuendas süsteemi sildi %3$s => %2$s",
+ "{actor} updated system tag {oldsystemtag} to {newsystemtag}" : "{actor} uuendas süsteemi sildi {oldsystemtag} => {newsystemtag}",
+ "You added system tag %2$s to %1$s" : "Sa lisasid süsteemi sildi %2$s => %1$s",
"You added system tag {systemtag} to {file}" : "Sa lisasid süsteemi sildi {systemtag} failile {file}",
+ "%1$s added system tag %3$s to %2$s" : "%1$s lisas süsteemi sildi %3$s => %2$s",
"{actor} added system tag {systemtag} to {file}" : "{actor} lisas süsteemi sildi {systemtag} failile {file}",
+ "You removed system tag %2$s from %1$s" : "Sa eemaldasid süsteemi sildi %2$s - %1$s",
"You removed system tag {systemtag} from {file}" : "Sa eemaldasid süsteemi sildi {systemtag} {file} faililt",
+ "%1$s removed system tag %3$s from %2$s" : "%1$s eemaldas süsteemi sildi %3$s - %2$s",
"{actor} removed system tag {systemtag} from {file}" : "{actor} eemaldas süsteemi sildi {systemtag} {file} faililt",
"%s (restricted)" : "%s (piiratud)",
"%s (invisible)" : "%s (nähtamatu)",
diff --git a/apps/systemtags/l10n/zh_TW.js b/apps/systemtags/l10n/zh_TW.js
index bfcf22f94ba..5638d565c05 100644
--- a/apps/systemtags/l10n/zh_TW.js
+++ b/apps/systemtags/l10n/zh_TW.js
@@ -2,9 +2,47 @@ OC.L10N.register(
"systemtags",
{
"Tags" : "標籤",
+ "Update" : "套用",
+ "Create" : "新增",
+ "Select tag…" : "選擇標籤",
+ "Tagged files" : "已標籤檔案",
+ "Select tags to filter by" : "依照選擇的標籤篩選",
+ "No tags found" : "找不到標籤",
+ "Please select tags to filter by" : "請選擇標籤以篩選",
+ "No files found for the selected tags" : "沒有與選擇的標籤相符的檔案",
+ "Added system tag %1$s" : "已加入系統標籤 %1$s",
+ "Added system tag {systemtag}" : "已加入系統標籤 {systemtag}",
+ "%1$s added system tag %2$s" : "%1$s已加入系統標籤 %2$s",
+ "{actor} added system tag {systemtag}" : "{actor} 已加入系統標籤 {systemtag}",
+ "Removed system tag %1$s" : "已移除系統標籤 %1$s",
+ "Removed system tag {systemtag}" : "已移除系統標籤 {systemtag}",
+ "%1$s removed system tag %2$s" : "%1$s 已移除系統標籤 %2$s",
+ "{actor} removed system tag {systemtag}" : "{actor} 已移除系統標籤 {systemtag}",
+ "You created system tag %1$s" : "您新增了系統標籤 %1$s",
+ "You created system tag {systemtag}" : "您新增了系統標籤 {systemtag}",
+ "%1$s created system tag %2$s" : "%1$s 新增了系統標籤 %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} 新增了系統標籤 {systemtag}",
+ "You deleted system tag %1$s" : "您刪除了系統標籤 %1$s",
+ "You deleted system tag {systemtag}" : "您刪除了系統標籤 {systemtag}",
+ "%1$s deleted system tag %2$s" : "%1$s刪除了系統標籤 %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} 刪除了系統標籤 {systemtag}",
+ "You updated system tag %2$s to %1$s" : "您更新了系統標籤 %2$s 為 %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "您更新了系統標籤 {oldsystemtag} 為 {newsystemtag}",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s 更新了系統標籤 %3$s 為 %2$s",
+ "%s (restricted)" : "%s (受限)",
+ "%s (invisible)" : "%s (隱藏)",
+ "<strong>System tags</strong> for a file have been modified" : "一個檔案的<strong>系統標籤</strong>已經被修改",
+ "Collaborative tags" : "協作標籤",
+ "Create and edit collaborative tags. These tags affect all users." : "新增和編輯協作標籤,這些標籤將影響所有使用者",
+ "Select tag …" : "選擇標籤…",
+ "Name" : "名稱",
+ "Delete" : "移除",
+ "Public" : "公開",
+ "Restricted" : "受限",
+ "Invisible" : "隱藏",
+ "Reset" : "重設",
"No files in here" : "沒有任何檔案",
"No entries found in this folder" : "在此資料夾中沒有任何項目",
- "Name" : "名稱",
"Size" : "大小",
"Modified" : "修改時間"
},
diff --git a/apps/systemtags/l10n/zh_TW.json b/apps/systemtags/l10n/zh_TW.json
index abd8415c4cf..20858a6f2fb 100644
--- a/apps/systemtags/l10n/zh_TW.json
+++ b/apps/systemtags/l10n/zh_TW.json
@@ -1,8 +1,46 @@
{ "translations": {
"Tags" : "標籤",
+ "Update" : "套用",
+ "Create" : "新增",
+ "Select tag…" : "選擇標籤",
+ "Tagged files" : "已標籤檔案",
+ "Select tags to filter by" : "依照選擇的標籤篩選",
+ "No tags found" : "找不到標籤",
+ "Please select tags to filter by" : "請選擇標籤以篩選",
+ "No files found for the selected tags" : "沒有與選擇的標籤相符的檔案",
+ "Added system tag %1$s" : "已加入系統標籤 %1$s",
+ "Added system tag {systemtag}" : "已加入系統標籤 {systemtag}",
+ "%1$s added system tag %2$s" : "%1$s已加入系統標籤 %2$s",
+ "{actor} added system tag {systemtag}" : "{actor} 已加入系統標籤 {systemtag}",
+ "Removed system tag %1$s" : "已移除系統標籤 %1$s",
+ "Removed system tag {systemtag}" : "已移除系統標籤 {systemtag}",
+ "%1$s removed system tag %2$s" : "%1$s 已移除系統標籤 %2$s",
+ "{actor} removed system tag {systemtag}" : "{actor} 已移除系統標籤 {systemtag}",
+ "You created system tag %1$s" : "您新增了系統標籤 %1$s",
+ "You created system tag {systemtag}" : "您新增了系統標籤 {systemtag}",
+ "%1$s created system tag %2$s" : "%1$s 新增了系統標籤 %2$s",
+ "{actor} created system tag {systemtag}" : "{actor} 新增了系統標籤 {systemtag}",
+ "You deleted system tag %1$s" : "您刪除了系統標籤 %1$s",
+ "You deleted system tag {systemtag}" : "您刪除了系統標籤 {systemtag}",
+ "%1$s deleted system tag %2$s" : "%1$s刪除了系統標籤 %2$s",
+ "{actor} deleted system tag {systemtag}" : "{actor} 刪除了系統標籤 {systemtag}",
+ "You updated system tag %2$s to %1$s" : "您更新了系統標籤 %2$s 為 %1$s",
+ "You updated system tag {oldsystemtag} to {newsystemtag}" : "您更新了系統標籤 {oldsystemtag} 為 {newsystemtag}",
+ "%1$s updated system tag %3$s to %2$s" : "%1$s 更新了系統標籤 %3$s 為 %2$s",
+ "%s (restricted)" : "%s (受限)",
+ "%s (invisible)" : "%s (隱藏)",
+ "<strong>System tags</strong> for a file have been modified" : "一個檔案的<strong>系統標籤</strong>已經被修改",
+ "Collaborative tags" : "協作標籤",
+ "Create and edit collaborative tags. These tags affect all users." : "新增和編輯協作標籤,這些標籤將影響所有使用者",
+ "Select tag …" : "選擇標籤…",
+ "Name" : "名稱",
+ "Delete" : "移除",
+ "Public" : "公開",
+ "Restricted" : "受限",
+ "Invisible" : "隱藏",
+ "Reset" : "重設",
"No files in here" : "沒有任何檔案",
"No entries found in this folder" : "在此資料夾中沒有任何項目",
- "Name" : "名稱",
"Size" : "大小",
"Modified" : "修改時間"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/apps/theming/js/settings-admin.js b/apps/theming/js/settings-admin.js
index 44a799a19b4..7df1bbf1125 100644
--- a/apps/theming/js/settings-admin.js
+++ b/apps/theming/js/settings-admin.js
@@ -206,7 +206,11 @@ $(document).ready(function () {
});
$('#theming-color').change(function (e) {
- setThemingValue('color', '#' + $(this).val());
+ var color = $(this).val();
+ if (color.indexOf('#') !== 0) {
+ color = '#' + color;
+ }
+ setThemingValue('color', color);
});
$('.theme-undo').click(function (e) {
diff --git a/apps/theming/templates/settings-admin.php b/apps/theming/templates/settings-admin.php
index c7451e595d7..1b8ed87bb0d 100644
--- a/apps/theming/templates/settings-admin.php
+++ b/apps/theming/templates/settings-admin.php
@@ -62,7 +62,7 @@ style('theming', 'settings-admin');
<div>
<label>
<span><?php p($l->t('Color')) ?></span>
- <input id="theming-color" type="text" class="jscolor" maxlength="6" value="<?php p($_['color']) ?>" />
+ <input id="theming-color" type="text" class="jscolor" data-jscolor="{hash:true}" maxlength="7" value="<?php p($_['color']) ?>" />
<div data-setting="color" data-toggle="tooltip" data-original-title="<?php p($l->t('Reset to default')); ?>" class="theme-undo icon icon-history"></div>
</label>
</div>
diff --git a/apps/user_ldap/js/wizard/wizardTabLoginFilter.js b/apps/user_ldap/js/wizard/wizardTabLoginFilter.js
index 7cc35aae0aa..0eef632d85d 100644
--- a/apps/user_ldap/js/wizard/wizardTabLoginFilter.js
+++ b/apps/user_ldap/js/wizard/wizardTabLoginFilter.js
@@ -85,6 +85,7 @@ OCA = OCA || {};
setModel: function(configModel) {
this._super(configModel);
this.configModel.on('configLoaded', this.onConfigSwitch, this);
+ this.configModel.on('configUpdated', this.onConfigUpdated, this);
this.configModel.on('receivedLdapFeature', this.onFeatureReceived, this);
},
@@ -205,6 +206,22 @@ OCA = OCA || {};
},
/**
+ * @param {WizardTabLoginFilter} view
+ * @param {Object} configuration
+ */
+ onConfigUpdated: function(view, configuration) {
+ // When the user list filter is updated in assisted mode, also
+ // update the login filter automatically.
+ if(
+ !_.isUndefined(configuration.ldap_userlist_filter)
+ && view.parsedFilterMode === view.configModel.FILTER_MODE_ASSISTED
+ && _.toArray(configuration).length === 1
+ ) {
+ view.configModel.requestWizard('ldap_login_filter');
+ }
+ },
+
+ /**
* if UserObjectClasses are found, the corresponding element will be
* updated
*
diff --git a/apps/workflowengine/l10n/et_EE.js b/apps/workflowengine/l10n/et_EE.js
new file mode 100644
index 00000000000..a35458ac2e1
--- /dev/null
+++ b/apps/workflowengine/l10n/et_EE.js
@@ -0,0 +1,68 @@
+OC.L10N.register(
+ "workflowengine",
+ {
+ "Saved" : "Salvestatud",
+ "Saving failed:" : "Salvestamine ebaõnnestus:",
+ "File MIME type" : "Faili MIME tüüp",
+ "is" : "on",
+ "is not" : "ei ole",
+ "matches" : "kattub",
+ "does not match" : "ei kattu",
+ "Example: {placeholder}" : "Näide: {placeholder}",
+ "File size (upload)" : "Faili suurus (üleslaadimine)",
+ "less" : "väiksem",
+ "less or equals" : "väiksem või võrdne",
+ "greater or equals" : "suurem või võrdne",
+ "greater" : "suurem",
+ "File system tag" : "Faili süsteemi silt",
+ "is tagged with" : "on sildiga",
+ "is not tagged with" : "ei ole sildiga",
+ "Select tag…" : "Vali silt...",
+ "Request remote address" : "Päringu kaugaadress",
+ "matches IPv4" : "kattub IPv4 aadressiga",
+ "does not match IPv4" : "Ei kattu IPv4 aadressiga",
+ "matches IPv6" : "kattub IPv6 aadressiga",
+ "does not match IPv6" : "Ei kattu IPv6 aadressiga",
+ "Request time" : "Päringu aeg",
+ "between" : "vahemikus",
+ "not between" : "ei ole vahemikus",
+ "Start" : "Algus",
+ "End" : "Lõpp",
+ "Select timezone…" : "Vali ajavöönd",
+ "Request URL" : "Päringu URL",
+ "Predefined URLs" : "Eelmääratletud URL-id",
+ "Files WebDAV" : "WebDAV failid",
+ "Request user agent" : "Päringu \"user agent\"",
+ "Sync clients" : "Kliendiprogrammid",
+ "Android client" : "Android klient",
+ "iOS client" : "iOS klient",
+ "Desktop client" : "Töölaua klient",
+ "User group membership" : "Kasutajagrupi liige",
+ "is member of" : "on liige",
+ "is not member of" : "ei ole liige",
+ "The given regular expression is invalid" : "Antud regulaaravaldis on vigane",
+ "The given file size is invalid" : "Antud faili suurus on vigane",
+ "The given tag id is invalid" : "Antud sildi ID on vigane",
+ "The given IP range is invalid" : "Antud IP vahemik on vigane",
+ "The given IP range is not valid for IPv4" : "Antud IP vahemik ei kehti IPv4 kohta",
+ "The given IP range is not valid for IPv6" : "Antud IP vahemik ei kehti IPv6 kohta",
+ "The given time span is invalid" : "Antud ajavahemik on vigane",
+ "The given start time is invalid" : "Antud algusaeg on vigane",
+ "The given end time is invalid" : "Antud lõppaeg on vigane",
+ "The given group does not exist" : "Antud gruppi ei leitud",
+ "Operation #%s does not exist" : "Tegevus # %s ei leitud",
+ "Operation %s does not exist" : "Tegevust %s ei leitud",
+ "Operation %s is invalid" : "Tegevus %s on vigane",
+ "Workflow" : "Töövoog",
+ "Open documentation" : "Ava dokumentatsioon",
+ "Add rule group" : "Lisa reegligrupp",
+ "Short rule description" : "Reegli lühikirjeldus",
+ "Add rule" : "Lisa reegel",
+ "Reset" : "Lähtesta",
+ "Save" : "Salvesta",
+ "Saving…" : "Salvestamine...",
+ "Loading…" : "Laadimine...",
+ "Successfully saved" : "Edukalt salvestatud",
+ "File mime type" : "Faili MIME tüüp"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/apps/workflowengine/l10n/et_EE.json b/apps/workflowengine/l10n/et_EE.json
new file mode 100644
index 00000000000..65067361a14
--- /dev/null
+++ b/apps/workflowengine/l10n/et_EE.json
@@ -0,0 +1,66 @@
+{ "translations": {
+ "Saved" : "Salvestatud",
+ "Saving failed:" : "Salvestamine ebaõnnestus:",
+ "File MIME type" : "Faili MIME tüüp",
+ "is" : "on",
+ "is not" : "ei ole",
+ "matches" : "kattub",
+ "does not match" : "ei kattu",
+ "Example: {placeholder}" : "Näide: {placeholder}",
+ "File size (upload)" : "Faili suurus (üleslaadimine)",
+ "less" : "väiksem",
+ "less or equals" : "väiksem või võrdne",
+ "greater or equals" : "suurem või võrdne",
+ "greater" : "suurem",
+ "File system tag" : "Faili süsteemi silt",
+ "is tagged with" : "on sildiga",
+ "is not tagged with" : "ei ole sildiga",
+ "Select tag…" : "Vali silt...",
+ "Request remote address" : "Päringu kaugaadress",
+ "matches IPv4" : "kattub IPv4 aadressiga",
+ "does not match IPv4" : "Ei kattu IPv4 aadressiga",
+ "matches IPv6" : "kattub IPv6 aadressiga",
+ "does not match IPv6" : "Ei kattu IPv6 aadressiga",
+ "Request time" : "Päringu aeg",
+ "between" : "vahemikus",
+ "not between" : "ei ole vahemikus",
+ "Start" : "Algus",
+ "End" : "Lõpp",
+ "Select timezone…" : "Vali ajavöönd",
+ "Request URL" : "Päringu URL",
+ "Predefined URLs" : "Eelmääratletud URL-id",
+ "Files WebDAV" : "WebDAV failid",
+ "Request user agent" : "Päringu \"user agent\"",
+ "Sync clients" : "Kliendiprogrammid",
+ "Android client" : "Android klient",
+ "iOS client" : "iOS klient",
+ "Desktop client" : "Töölaua klient",
+ "User group membership" : "Kasutajagrupi liige",
+ "is member of" : "on liige",
+ "is not member of" : "ei ole liige",
+ "The given regular expression is invalid" : "Antud regulaaravaldis on vigane",
+ "The given file size is invalid" : "Antud faili suurus on vigane",
+ "The given tag id is invalid" : "Antud sildi ID on vigane",
+ "The given IP range is invalid" : "Antud IP vahemik on vigane",
+ "The given IP range is not valid for IPv4" : "Antud IP vahemik ei kehti IPv4 kohta",
+ "The given IP range is not valid for IPv6" : "Antud IP vahemik ei kehti IPv6 kohta",
+ "The given time span is invalid" : "Antud ajavahemik on vigane",
+ "The given start time is invalid" : "Antud algusaeg on vigane",
+ "The given end time is invalid" : "Antud lõppaeg on vigane",
+ "The given group does not exist" : "Antud gruppi ei leitud",
+ "Operation #%s does not exist" : "Tegevus # %s ei leitud",
+ "Operation %s does not exist" : "Tegevust %s ei leitud",
+ "Operation %s is invalid" : "Tegevus %s on vigane",
+ "Workflow" : "Töövoog",
+ "Open documentation" : "Ava dokumentatsioon",
+ "Add rule group" : "Lisa reegligrupp",
+ "Short rule description" : "Reegli lühikirjeldus",
+ "Add rule" : "Lisa reegel",
+ "Reset" : "Lähtesta",
+ "Save" : "Salvesta",
+ "Saving…" : "Salvestamine...",
+ "Loading…" : "Laadimine...",
+ "Successfully saved" : "Edukalt salvestatud",
+ "File mime type" : "Faili MIME tüüp"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file