\n"
- + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.social : depth0),{"name":"each","hash":{},"fn":container.program(16, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.social : depth0),{"name":"each","hash":{},"fn":container.program(17, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ " \n\n";
},"useData":true});
templates['sharedialoglinkshareview_popover_menu_pending'] = template({"1":function(container,depth0,helpers,partials,data) {
diff --git a/core/js/tests/specs/sharedialoglinkshareview.js b/core/js/tests/specs/sharedialoglinkshareview.js
index 9d07dcb479..d8dec3968e 100644
--- a/core/js/tests/specs/sharedialoglinkshareview.js
+++ b/core/js/tests/specs/sharedialoglinkshareview.js
@@ -72,6 +72,100 @@ describe('OC.Share.ShareDialogLinkShareView', function () {
configModel.isShareWithLinkAllowed.restore();
});
+ describe('hide download', function () {
+
+ var $hideDownloadCheckbox;
+ var $workingIcon;
+
+ beforeEach(function () {
+ // Needed to render the view
+ configModel.isShareWithLinkAllowed.returns(true);
+
+ // Setting the share also triggers the rendering
+ shareModel.set({
+ linkShare: {
+ isLinkShare: true,
+ }
+ });
+
+ $hideDownloadCheckbox = view.$el.find('.hideDownloadCheckbox');
+ $workingIcon = $hideDownloadCheckbox.prev('.icon-loading-small');
+
+ sinon.stub(shareModel, 'saveLinkShare');
+
+ expect($workingIcon.hasClass('hidden')).toBeTruthy();
+ });
+
+ afterEach(function () {
+ shareModel.saveLinkShare.restore();
+ });
+
+ it('is shown if the share is a file', function() {
+ expect($hideDownloadCheckbox.length).toBeTruthy();
+ });
+
+ it('is not shown if the share is a folder', function() {
+ shareModel.fileInfoModel.set('mimetype', 'httpd/unix-directory');
+
+ // Setting the item type also triggers the rendering
+ shareModel.set({
+ itemType: 'folder'
+ });
+
+ $hideDownloadCheckbox = view.$el.find('.hideDownloadCheckbox');
+
+ expect($hideDownloadCheckbox.length).toBeFalsy();
+ });
+
+ it('checkbox is checked when the setting is enabled', function () {
+ shareModel.set({
+ linkShare: {
+ isLinkShare: true,
+ hideDownload: true
+ }
+ });
+
+ $hideDownloadCheckbox = view.$el.find('.hideDownloadCheckbox');
+
+ expect($hideDownloadCheckbox.is(':checked')).toEqual(true);
+ });
+
+ it('checkbox is not checked when the setting is disabled', function () {
+ expect($hideDownloadCheckbox.is(':checked')).toEqual(false);
+ });
+
+ it('enables the setting if clicked when unchecked', function () {
+ // Simulate the click by checking the checkbox and then triggering
+ // the "change" event.
+ $hideDownloadCheckbox.prop('checked', true);
+ $hideDownloadCheckbox.change();
+
+ expect($workingIcon.hasClass('hidden')).toBeFalsy();
+ expect(shareModel.saveLinkShare.withArgs({ hideDownload: true }).calledOnce).toBeTruthy();
+ });
+
+ it('disables the setting if clicked when checked', function () {
+ shareModel.set({
+ linkShare: {
+ isLinkShare: true,
+ hideDownload: true
+ }
+ });
+
+ $hideDownloadCheckbox = view.$el.find('.hideDownloadCheckbox');
+ $workingIcon = $hideDownloadCheckbox.prev('.icon-loading-small');
+
+ // Simulate the click by unchecking the checkbox and then triggering
+ // the "change" event.
+ $hideDownloadCheckbox.prop('checked', false);
+ $hideDownloadCheckbox.change();
+
+ expect($workingIcon.hasClass('hidden')).toBeFalsy();
+ expect(shareModel.saveLinkShare.withArgs({ hideDownload: false }).calledOnce).toBeTruthy();
+ });
+
+ });
+
describe('onPasswordEntered', function () {
var $passwordText;
diff --git a/core/js/tests/specs/sharedialogshareelistview.js b/core/js/tests/specs/sharedialogshareelistview.js
index 8e34225d19..e51fc2df72 100644
--- a/core/js/tests/specs/sharedialogshareelistview.js
+++ b/core/js/tests/specs/sharedialogshareelistview.js
@@ -90,6 +90,37 @@ describe('OC.Share.ShareDialogShareeListView', function () {
});
describe('Sets correct initial checkbox state', function () {
+
+ it('marks edit box as unchecked for file shares without edit permissions', function () {
+ shareModel.set('shares', [{
+ id: 100,
+ item_source: 123,
+ permissions: 1,
+ share_type: OC.Share.SHARE_TYPE_USER,
+ share_with: 'user1',
+ share_with_displayname: 'User One',
+ uid_owner: oc_current_user,
+ itemType: 'file'
+ }]);
+ listView.render();
+ expect(listView.$el.find("input[name='edit']").is(':not(:checked)')).toEqual(true);
+ });
+
+ it('marks edit box as checked for file shares', function () {
+ shareModel.set('shares', [{
+ id: 100,
+ item_source: 123,
+ permissions: 1 | OC.PERMISSION_UPDATE,
+ share_type: OC.Share.SHARE_TYPE_USER,
+ share_with: 'user1',
+ share_with_displayname: 'User One',
+ uid_owner: oc_current_user,
+ itemType: 'file'
+ }]);
+ listView.render();
+ expect(listView.$el.find("input[name='edit']").is(':checked')).toEqual(true);
+ });
+
it('marks edit box as indeterminate when only some permissions are given', function () {
shareModel.set('shares', [{
id: 100,
diff --git a/core/js/tests/specs/shareitemmodelSpec.js b/core/js/tests/specs/shareitemmodelSpec.js
index 2e89b2e3cd..a2eabbf4ae 100644
--- a/core/js/tests/specs/shareitemmodelSpec.js
+++ b/core/js/tests/specs/shareitemmodelSpec.js
@@ -168,7 +168,8 @@ describe('OC.Share.ShareItemModel', function() {
stime: 1403884258,
storage: 1,
token: 'tehtoken',
- uid_owner: 'root'
+ uid_owner: 'root',
+ hide_download: 1
}
]));
@@ -186,6 +187,7 @@ describe('OC.Share.ShareItemModel', function() {
var linkShare = model.get('linkShare');
expect(linkShare.isLinkShare).toEqual(true);
+ expect(linkShare.hideDownload).toEqual(true);
// TODO: check more attributes
});
@@ -289,7 +291,8 @@ describe('OC.Share.ShareItemModel', function() {
stime: 1403884258,
storage: 1,
token: 'tehtoken',
- uid_owner: 'root'
+ uid_owner: 'root',
+ hide_download: 0
}, {
displayname_owner: 'root',
expiration: '2015-10-15 00:00:00',
@@ -307,7 +310,8 @@ describe('OC.Share.ShareItemModel', function() {
stime: 1403884509,
storage: 1,
token: 'anothertoken',
- uid_owner: 'root'
+ uid_owner: 'root',
+ hide_download: 1
}]
));
OC.currentUser = 'root';
@@ -320,6 +324,7 @@ describe('OC.Share.ShareItemModel', function() {
var linkShare = model.get('linkShare');
expect(linkShare.isLinkShare).toEqual(true);
expect(linkShare.token).toEqual('tehtoken');
+ expect(linkShare.hideDownload).toEqual(false);
// TODO: check child too
});
@@ -579,6 +584,7 @@ describe('OC.Share.ShareItemModel', function() {
expect(addShareStub.calledOnce).toEqual(true);
expect(addShareStub.firstCall.args[0]).toEqual({
+ hideDownload: false,
password: '',
passwordChanged: false,
permissions: OC.PERMISSION_READ,
@@ -603,6 +609,7 @@ describe('OC.Share.ShareItemModel', function() {
expect(addShareStub.calledOnce).toEqual(true);
expect(addShareStub.firstCall.args[0]).toEqual({
+ hideDownload: false,
password: '',
passwordChanged: false,
permissions: OC.PERMISSION_READ,
diff --git a/core/l10n/af.js b/core/l10n/af.js
index f808814568..0cb8191d59 100644
--- a/core/l10n/af.js
+++ b/core/l10n/af.js
@@ -141,9 +141,6 @@ OC.L10N.register(
"No users found for {search}" : "Geen gebruiker gevind vir {search}",
"An error occurred (\"{message}\"). Please try again" : "'n Fout het voorgekom (\"{message}\"). Probeer asseblief weer",
"An error occurred. Please try again" : "'n Fout het voorgekom. Probeer asseblief weer",
- "{sharee} (group)" : "{sharee} (groep)",
- "{sharee} (remote)" : "{sharee} (afgeleë)",
- "{sharee} (email)" : "{sharee} (e-pos)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Deel",
"Name or email address..." : "Naam of e-posadres...",
@@ -243,6 +240,9 @@ OC.L10N.register(
"Error setting expiration date" : "Fout terwyl vervaldatum stel",
"The public link will expire no later than {days} days after it is created" : "Die publieke skakel sal presies {days} na dit geskep is verval",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} gedeel via skakel",
+ "{sharee} (group)" : "{sharee} (groep)",
+ "{sharee} (remote)" : "{sharee} (afgeleë)",
+ "{sharee} (email)" : "{sharee} (e-pos)",
"Share with other people by entering a user or group or an email address." : "Deel met ander deur 'n gebruiker, groep of e-posadres in te vul. ",
"The specified document has not been found on the server." : "Die gekose dokument was nie op die bediener gevind nie.",
"You can click here to return to %s." : "U kan hier klik om terug te keer na %s",
diff --git a/core/l10n/af.json b/core/l10n/af.json
index e835f8bf95..5dc5705081 100644
--- a/core/l10n/af.json
+++ b/core/l10n/af.json
@@ -139,9 +139,6 @@
"No users found for {search}" : "Geen gebruiker gevind vir {search}",
"An error occurred (\"{message}\"). Please try again" : "'n Fout het voorgekom (\"{message}\"). Probeer asseblief weer",
"An error occurred. Please try again" : "'n Fout het voorgekom. Probeer asseblief weer",
- "{sharee} (group)" : "{sharee} (groep)",
- "{sharee} (remote)" : "{sharee} (afgeleë)",
- "{sharee} (email)" : "{sharee} (e-pos)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Deel",
"Name or email address..." : "Naam of e-posadres...",
@@ -241,6 +238,9 @@
"Error setting expiration date" : "Fout terwyl vervaldatum stel",
"The public link will expire no later than {days} days after it is created" : "Die publieke skakel sal presies {days} na dit geskep is verval",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} gedeel via skakel",
+ "{sharee} (group)" : "{sharee} (groep)",
+ "{sharee} (remote)" : "{sharee} (afgeleë)",
+ "{sharee} (email)" : "{sharee} (e-pos)",
"Share with other people by entering a user or group or an email address." : "Deel met ander deur 'n gebruiker, groep of e-posadres in te vul. ",
"The specified document has not been found on the server." : "Die gekose dokument was nie op die bediener gevind nie.",
"You can click here to return to %s." : "U kan hier klik om terug te keer na %s",
diff --git a/core/l10n/ast.js b/core/l10n/ast.js
index d40d413827..0bd13b54ca 100644
--- a/core/l10n/ast.js
+++ b/core/l10n/ast.js
@@ -130,8 +130,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "Nun s'alcontraron usuarios o grupos pa {search}",
"No users found for {search}" : "Nun s'alcontraron usuarios pa {search}",
"An error occurred. Please try again" : "Asocedió un fallu. Volvi tentalo, por favor",
- "{sharee} (group)" : "{sharee} (grupu)",
- "{sharee} (email)" : "{sharee} (corréu)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nome o direición de corréu...",
@@ -230,6 +228,8 @@ OC.L10N.register(
"Error setting expiration date" : "Fallu afitando la fecha de caducidá",
"The public link will expire no later than {days} days after it is created" : "L'enllaz públicu va caducar enantes de {days} díes dende la so creación",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} compartió per enllaz",
+ "{sharee} (group)" : "{sharee} (grupu)",
+ "{sharee} (email)" : "{sharee} (corréu)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparti con otra xente introduciendo un usuariu, grupu, ID de ñube federada o direición de corréu.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparti con otra xente introduciendo un usuariu, grupu o ID de ñube federada.",
"Share with other people by entering a user or group or an email address." : "Comparti con otra xente introduciendo un usuariu, grupu o direición de corréu.",
diff --git a/core/l10n/ast.json b/core/l10n/ast.json
index 5019fcc995..3ab9303f39 100644
--- a/core/l10n/ast.json
+++ b/core/l10n/ast.json
@@ -128,8 +128,6 @@
"No users or groups found for {search}" : "Nun s'alcontraron usuarios o grupos pa {search}",
"No users found for {search}" : "Nun s'alcontraron usuarios pa {search}",
"An error occurred. Please try again" : "Asocedió un fallu. Volvi tentalo, por favor",
- "{sharee} (group)" : "{sharee} (grupu)",
- "{sharee} (email)" : "{sharee} (corréu)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nome o direición de corréu...",
@@ -228,6 +226,8 @@
"Error setting expiration date" : "Fallu afitando la fecha de caducidá",
"The public link will expire no later than {days} days after it is created" : "L'enllaz públicu va caducar enantes de {days} díes dende la so creación",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} compartió per enllaz",
+ "{sharee} (group)" : "{sharee} (grupu)",
+ "{sharee} (email)" : "{sharee} (corréu)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparti con otra xente introduciendo un usuariu, grupu, ID de ñube federada o direición de corréu.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparti con otra xente introduciendo un usuariu, grupu o ID de ñube federada.",
"Share with other people by entering a user or group or an email address." : "Comparti con otra xente introduciendo un usuariu, grupu o direición de corréu.",
diff --git a/core/l10n/bg.js b/core/l10n/bg.js
index 08eea88b73..9781829bd6 100644
--- a/core/l10n/bg.js
+++ b/core/l10n/bg.js
@@ -151,12 +151,8 @@ OC.L10N.register(
"No users or groups found for {search}" : "Няма потребители или групи за {search}",
"No users found for {search}" : "Няма потребители за {search}",
"An error occurred. Please try again" : "Възникна грешка. Моля, опитайте отново",
- "{sharee} (group)" : "{sharee} (група)",
- "{sharee} (remote)" : "{sharee} (отдалечен)",
"{sharee} (remote group)" : "{sharee} (отдалечена група)",
- "{sharee} (email)" : "{sharee} (имейл)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (разговор)",
"Share" : "Споделяне",
"Name or email address..." : "Име или имейл адрес...",
"Name..." : "Име...",
@@ -278,6 +274,9 @@ OC.L10N.register(
"Error setting expiration date" : "Грешка при задаване на срок на валидност",
"The public link will expire no later than {days} days after it is created" : "Общодостъпната връзка ще изтече не по-късно от {days} дни след създаването ѝ.",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} споделен с връзка",
+ "{sharee} (group)" : "{sharee} (група)",
+ "{sharee} (remote)" : "{sharee} (отдалечен)",
+ "{sharee} (email)" : "{sharee} (имейл)",
"The specified document has not been found on the server." : "Избраният документ не е намерен на сървъра.",
"You can click here to return to %s." : "Можете да натиснете тук, за да се върнете на %s.",
"The server encountered an internal error and was unable to complete your request." : "Поради вътрешно сървърна грешка, сървърът не можа да изпълни заявката ви.",
@@ -297,6 +296,7 @@ OC.L10N.register(
"This page will refresh itself when the %s instance is available again." : "Страницата ще се зареди автоматично, когато %s е отново на линия.",
"Thank you for your patience." : "Благодарим ви за търпението.",
"You are about to grant %s access to your %s account." : "Ще разрешите на %s да ползва профила %s.",
+ "{sharee} (conversation)" : "{sharee} (разговор)",
"Please log in before granting %s access to your %s account." : "Необходимо е да се впишете, преди да дадете достъп на %s до вашия %s профил."
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/bg.json b/core/l10n/bg.json
index 7b2368f8d9..684028f081 100644
--- a/core/l10n/bg.json
+++ b/core/l10n/bg.json
@@ -149,12 +149,8 @@
"No users or groups found for {search}" : "Няма потребители или групи за {search}",
"No users found for {search}" : "Няма потребители за {search}",
"An error occurred. Please try again" : "Възникна грешка. Моля, опитайте отново",
- "{sharee} (group)" : "{sharee} (група)",
- "{sharee} (remote)" : "{sharee} (отдалечен)",
"{sharee} (remote group)" : "{sharee} (отдалечена група)",
- "{sharee} (email)" : "{sharee} (имейл)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (разговор)",
"Share" : "Споделяне",
"Name or email address..." : "Име или имейл адрес...",
"Name..." : "Име...",
@@ -276,6 +272,9 @@
"Error setting expiration date" : "Грешка при задаване на срок на валидност",
"The public link will expire no later than {days} days after it is created" : "Общодостъпната връзка ще изтече не по-късно от {days} дни след създаването ѝ.",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} споделен с връзка",
+ "{sharee} (group)" : "{sharee} (група)",
+ "{sharee} (remote)" : "{sharee} (отдалечен)",
+ "{sharee} (email)" : "{sharee} (имейл)",
"The specified document has not been found on the server." : "Избраният документ не е намерен на сървъра.",
"You can click here to return to %s." : "Можете да натиснете тук, за да се върнете на %s.",
"The server encountered an internal error and was unable to complete your request." : "Поради вътрешно сървърна грешка, сървърът не можа да изпълни заявката ви.",
@@ -295,6 +294,7 @@
"This page will refresh itself when the %s instance is available again." : "Страницата ще се зареди автоматично, когато %s е отново на линия.",
"Thank you for your patience." : "Благодарим ви за търпението.",
"You are about to grant %s access to your %s account." : "Ще разрешите на %s да ползва профила %s.",
+ "{sharee} (conversation)" : "{sharee} (разговор)",
"Please log in before granting %s access to your %s account." : "Необходимо е да се впишете, преди да дадете достъп на %s до вашия %s профил."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
\ No newline at end of file
diff --git a/core/l10n/ca.js b/core/l10n/ca.js
index e6ae31313d..0b409104a2 100644
--- a/core/l10n/ca.js
+++ b/core/l10n/ca.js
@@ -210,12 +210,8 @@ OC.L10N.register(
"No users found for {search}" : "No s'han trobat usuaris per {search}",
"An error occurred (\"{message}\"). Please try again" : "S'ha produït un error (\"{message}\"). Si us plau, torni a intentar-ho",
"An error occurred. Please try again" : "S'ha produït un error. Si us plau, torni a intentar-ho",
- "{sharee} (group)" : "{sharee} (grup)",
- "{sharee} (remote)" : "{sharee} (remot)",
"{sharee} (remote group)" : "{sharee} (grup remot)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (conversation)",
"Share" : "Comparteix",
"Name or email address..." : "Nom o adreça electrònica...",
"Name or federated cloud ID..." : "Nom o ID de Núvol Federat…",
@@ -382,6 +378,9 @@ OC.L10N.register(
"Error setting expiration date" : "Error en establir la data de venciment",
"The public link will expire no later than {days} days after it is created" : "L'enllaç públic tindrà venciment abans de {days} dies després de crear-lo",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartit per enllaç",
+ "{sharee} (group)" : "{sharee} (grup)",
+ "{sharee} (remote)" : "{sharee} (remot)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Compartir amb altres persones introduint un usuari o grup, un ID de núvol federat o una adreça d’email.",
"Share with other people by entering a user or group or a federated cloud ID." : "Compartir amb altres persones introduint un usuari o grup o ID de núvol federat.",
"Share with other people by entering a user or group or an email address." : "Compartir amb altres persones introduint un usuari o grup o una adreça d’email.",
@@ -413,6 +412,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Estàs a punt d'autoritzar a %s a accedir al teu compte %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "Depenent de la teva configuració, aquest botó també podria funcionar per confiar en el domini:",
"Copy URL" : "Copiar URL",
+ "{sharee} (conversation)" : "{sharee} (conversation)",
"Please log in before granting %s access to your %s account." : "Si us plau entrar abans de donar %s accés al teu compte %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Més informació de com configurar això es pot trobar a la %sdocumentation%s."
},
diff --git a/core/l10n/ca.json b/core/l10n/ca.json
index c166f4648d..fe9056b696 100644
--- a/core/l10n/ca.json
+++ b/core/l10n/ca.json
@@ -208,12 +208,8 @@
"No users found for {search}" : "No s'han trobat usuaris per {search}",
"An error occurred (\"{message}\"). Please try again" : "S'ha produït un error (\"{message}\"). Si us plau, torni a intentar-ho",
"An error occurred. Please try again" : "S'ha produït un error. Si us plau, torni a intentar-ho",
- "{sharee} (group)" : "{sharee} (grup)",
- "{sharee} (remote)" : "{sharee} (remot)",
"{sharee} (remote group)" : "{sharee} (grup remot)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (conversation)",
"Share" : "Comparteix",
"Name or email address..." : "Nom o adreça electrònica...",
"Name or federated cloud ID..." : "Nom o ID de Núvol Federat…",
@@ -380,6 +376,9 @@
"Error setting expiration date" : "Error en establir la data de venciment",
"The public link will expire no later than {days} days after it is created" : "L'enllaç públic tindrà venciment abans de {days} dies després de crear-lo",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartit per enllaç",
+ "{sharee} (group)" : "{sharee} (grup)",
+ "{sharee} (remote)" : "{sharee} (remot)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Compartir amb altres persones introduint un usuari o grup, un ID de núvol federat o una adreça d’email.",
"Share with other people by entering a user or group or a federated cloud ID." : "Compartir amb altres persones introduint un usuari o grup o ID de núvol federat.",
"Share with other people by entering a user or group or an email address." : "Compartir amb altres persones introduint un usuari o grup o una adreça d’email.",
@@ -411,6 +410,7 @@
"You are about to grant %s access to your %s account." : "Estàs a punt d'autoritzar a %s a accedir al teu compte %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "Depenent de la teva configuració, aquest botó també podria funcionar per confiar en el domini:",
"Copy URL" : "Copiar URL",
+ "{sharee} (conversation)" : "{sharee} (conversation)",
"Please log in before granting %s access to your %s account." : "Si us plau entrar abans de donar %s accés al teu compte %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Més informació de com configurar això es pot trobar a la %sdocumentation%s."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/core/l10n/cs.js b/core/l10n/cs.js
index 8a0f26a4e2..37ab7ea022 100644
--- a/core/l10n/cs.js
+++ b/core/l10n/cs.js
@@ -210,12 +210,8 @@ OC.L10N.register(
"No users found for {search}" : "Nebyli nalezeni žádní uživatelé pro {search}",
"An error occurred (\"{message}\"). Please try again" : "Došlo k chybě („{message}“). Zkuste to znovu",
"An error occurred. Please try again" : "Došlo k chybě. Zkuste to znovu",
- "{sharee} (group)" : "{sharee} (skupina)",
- "{sharee} (remote)" : "{sharee} (na protějšku)",
"{sharee} (remote group)" : "{sharee} (skupina na protějšku)",
- "{sharee} (email)" : "{sharee} (e-mail)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (konverzace)",
"Share" : "Sdílet",
"Name or email address..." : "Jméno nebo e-mailová adresa…",
"Name or federated cloud ID..." : "Jméno nebo identifikátor v rámci sdruženého cloudu…",
@@ -356,6 +352,7 @@ OC.L10N.register(
"For help, see the documentation." : "Pro pomoc, nahlédněte do dokumentace.",
"I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Beru na vědomí, že při aktualizaci skrze webové rozhraní hrozí nebezpečí vypršení požadavku, který může vyústit ve ztrátu dat. Mám pro takový případ zálohu a vím, jak ji v případě selhání obnovit.",
"Upgrade via web on my own risk" : "Na vlastní nebezpečí aktualizovat skrze web",
+ "Maintenance mode" : "Režim údržby",
"This %s instance is currently in maintenance mode, which may take a while." : "Tato instalace %s je právě ve stavu údržby a ta může chvíli trvat.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Pokud se tato zpráva objevuje opakovaně nebo nečekaně, obraťte se správce systému.",
"Updated \"%s\" to %s" : "Aktualizováno z „%s“ na %s",
@@ -380,6 +377,9 @@ OC.L10N.register(
"Error setting expiration date" : "Chyba při nastavení data skončení platnosti",
"The public link will expire no later than {days} days after it is created" : "Veřejný odkaz vyprší nejpozději {days} dní od svého vytvoření",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} sdílí pomocí odkazu",
+ "{sharee} (group)" : "{sharee} (skupina)",
+ "{sharee} (remote)" : "{sharee} (na protějšku)",
+ "{sharee} (email)" : "{sharee} (e-mail)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Sdílejte s dalšími lidmi zadáním uživatelského jména, skupiny, federovaného cloud ID, nebo e-mailové adresy.",
"Share with other people by entering a user or group or a federated cloud ID." : "Sdílejte s dalšími lidmi zadáním uživatelského jména, skupiny, nebo sdruženého cloud ID.",
"Share with other people by entering a user or group or an email address." : "Sdílejte s dalšími lidmi zadáním uživatelského jména, jména skupiny, nebo e-mailové adresy.",
@@ -411,6 +411,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Chystáte se povolit %s přístup k vašemu %s účtu.",
"Depending on your configuration, this button could also work to trust the domain:" : "V závislosti na vaší konfiguraci by pro označení domény za důvěryhodnou mohlo fungovat i toto tlačítko:",
"Copy URL" : "Kopírovat URL",
+ "{sharee} (conversation)" : "{sharee} (konverzace)",
"Please log in before granting %s access to your %s account." : "Přihlaste se před udělením %s přístupu k vašemu %s účtu.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Více informací o tom, jak toto nastavit, jsou k dispozici v%sdokumentaci%s."
},
diff --git a/core/l10n/cs.json b/core/l10n/cs.json
index 4a01f68d6d..edcc2917e5 100644
--- a/core/l10n/cs.json
+++ b/core/l10n/cs.json
@@ -208,12 +208,8 @@
"No users found for {search}" : "Nebyli nalezeni žádní uživatelé pro {search}",
"An error occurred (\"{message}\"). Please try again" : "Došlo k chybě („{message}“). Zkuste to znovu",
"An error occurred. Please try again" : "Došlo k chybě. Zkuste to znovu",
- "{sharee} (group)" : "{sharee} (skupina)",
- "{sharee} (remote)" : "{sharee} (na protějšku)",
"{sharee} (remote group)" : "{sharee} (skupina na protějšku)",
- "{sharee} (email)" : "{sharee} (e-mail)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (konverzace)",
"Share" : "Sdílet",
"Name or email address..." : "Jméno nebo e-mailová adresa…",
"Name or federated cloud ID..." : "Jméno nebo identifikátor v rámci sdruženého cloudu…",
@@ -354,6 +350,7 @@
"For help, see the documentation." : "Pro pomoc, nahlédněte do dokumentace.",
"I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Beru na vědomí, že při aktualizaci skrze webové rozhraní hrozí nebezpečí vypršení požadavku, který může vyústit ve ztrátu dat. Mám pro takový případ zálohu a vím, jak ji v případě selhání obnovit.",
"Upgrade via web on my own risk" : "Na vlastní nebezpečí aktualizovat skrze web",
+ "Maintenance mode" : "Režim údržby",
"This %s instance is currently in maintenance mode, which may take a while." : "Tato instalace %s je právě ve stavu údržby a ta může chvíli trvat.",
"Contact your system administrator if this message persists or appeared unexpectedly." : "Pokud se tato zpráva objevuje opakovaně nebo nečekaně, obraťte se správce systému.",
"Updated \"%s\" to %s" : "Aktualizováno z „%s“ na %s",
@@ -378,6 +375,9 @@
"Error setting expiration date" : "Chyba při nastavení data skončení platnosti",
"The public link will expire no later than {days} days after it is created" : "Veřejný odkaz vyprší nejpozději {days} dní od svého vytvoření",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} sdílí pomocí odkazu",
+ "{sharee} (group)" : "{sharee} (skupina)",
+ "{sharee} (remote)" : "{sharee} (na protějšku)",
+ "{sharee} (email)" : "{sharee} (e-mail)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Sdílejte s dalšími lidmi zadáním uživatelského jména, skupiny, federovaného cloud ID, nebo e-mailové adresy.",
"Share with other people by entering a user or group or a federated cloud ID." : "Sdílejte s dalšími lidmi zadáním uživatelského jména, skupiny, nebo sdruženého cloud ID.",
"Share with other people by entering a user or group or an email address." : "Sdílejte s dalšími lidmi zadáním uživatelského jména, jména skupiny, nebo e-mailové adresy.",
@@ -409,6 +409,7 @@
"You are about to grant %s access to your %s account." : "Chystáte se povolit %s přístup k vašemu %s účtu.",
"Depending on your configuration, this button could also work to trust the domain:" : "V závislosti na vaší konfiguraci by pro označení domény za důvěryhodnou mohlo fungovat i toto tlačítko:",
"Copy URL" : "Kopírovat URL",
+ "{sharee} (conversation)" : "{sharee} (konverzace)",
"Please log in before granting %s access to your %s account." : "Přihlaste se před udělením %s přístupu k vašemu %s účtu.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Více informací o tom, jak toto nastavit, jsou k dispozici v%sdokumentaci%s."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
diff --git a/core/l10n/da.js b/core/l10n/da.js
index cd0114ff74..f6d6d6a540 100644
--- a/core/l10n/da.js
+++ b/core/l10n/da.js
@@ -170,9 +170,6 @@ OC.L10N.register(
"No users found for {search}" : "Ingen brugere fundet for {search}",
"An error occurred (\"{message}\"). Please try again" : "Der opstor den fejl (\"{message}\"). Prøv igen",
"An error occurred. Please try again" : "Der opstor den fejl. Prøv igen",
- "{sharee} (group)" : "{sharee} (gruppe)",
- "{sharee} (remote)" : "{sharee} (ekstern)",
- "{sharee} (email)" : "{sharee} (e-mail)",
"{sharee} ({type}, {owner})" : "{share} ({type}, {owner})",
"Share" : "Del",
"Name or email address..." : "Navn eller e-mail adresse...",
@@ -319,6 +316,9 @@ OC.L10N.register(
"Error setting expiration date" : "Fejl under sætning af udløbsdato",
"The public link will expire no later than {days} days after it is created" : "Det offentlige link udløber senest {days} dage efter det blev oprettet",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} delt via link",
+ "{sharee} (group)" : "{sharee} (gruppe)",
+ "{sharee} (remote)" : "{sharee} (ekstern)",
+ "{sharee} (email)" : "{sharee} (e-mail)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Del med andre ved at indtaste et brugernavn, en gruppe, et federated cloud id eller en e-mail adresse.",
"Share with other people by entering a user or group or a federated cloud ID." : "Del med andre ved at indtaste et brugernavn, en gruppe eller et federated cloud id.",
"Share with other people by entering a user or group or an email address." : "Del med andre ved at indtaste et brugernavn, en gruppe eller e-mail adresse.",
diff --git a/core/l10n/da.json b/core/l10n/da.json
index 26938bb5a2..b363b922f7 100644
--- a/core/l10n/da.json
+++ b/core/l10n/da.json
@@ -168,9 +168,6 @@
"No users found for {search}" : "Ingen brugere fundet for {search}",
"An error occurred (\"{message}\"). Please try again" : "Der opstor den fejl (\"{message}\"). Prøv igen",
"An error occurred. Please try again" : "Der opstor den fejl. Prøv igen",
- "{sharee} (group)" : "{sharee} (gruppe)",
- "{sharee} (remote)" : "{sharee} (ekstern)",
- "{sharee} (email)" : "{sharee} (e-mail)",
"{sharee} ({type}, {owner})" : "{share} ({type}, {owner})",
"Share" : "Del",
"Name or email address..." : "Navn eller e-mail adresse...",
@@ -317,6 +314,9 @@
"Error setting expiration date" : "Fejl under sætning af udløbsdato",
"The public link will expire no later than {days} days after it is created" : "Det offentlige link udløber senest {days} dage efter det blev oprettet",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} delt via link",
+ "{sharee} (group)" : "{sharee} (gruppe)",
+ "{sharee} (remote)" : "{sharee} (ekstern)",
+ "{sharee} (email)" : "{sharee} (e-mail)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Del med andre ved at indtaste et brugernavn, en gruppe, et federated cloud id eller en e-mail adresse.",
"Share with other people by entering a user or group or a federated cloud ID." : "Del med andre ved at indtaste et brugernavn, en gruppe eller et federated cloud id.",
"Share with other people by entering a user or group or an email address." : "Del med andre ved at indtaste et brugernavn, en gruppe eller e-mail adresse.",
diff --git a/core/l10n/de.js b/core/l10n/de.js
index 260bb9ef82..1be2a21a5c 100644
--- a/core/l10n/de.js
+++ b/core/l10n/de.js
@@ -167,6 +167,7 @@ OC.L10N.register(
"Share to {name}" : "Mit {name} teilen",
"Copy link" : "Link kopieren",
"Link" : "Link",
+ "Hide download" : "Download verbergen",
"Password protect" : "Passwortschutz",
"Allow editing" : "Bearbeitung erlauben",
"Email link to person" : "Link per E-Mail verschicken",
@@ -210,12 +211,10 @@ OC.L10N.register(
"No users found for {search}" : "Keine Benutzer für {search} gefunden",
"An error occurred (\"{message}\"). Please try again" : "Benötigt keine Übersetzung. Für iOS wird nur die formelle Übersetzung verwendet (de_DE). ",
"An error occurred. Please try again" : "Es ist ein Fehler aufgetreten. Bitte versuche es noch einmal",
- "{sharee} (group)" : "{sharee} (Gruppe)",
- "{sharee} (remote)" : "{sharee} (remote)",
"{sharee} (remote group)" : "{sharee} (externe Gruppe)",
- "{sharee} (email)" : "{sharee} (E-Mail)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (conversation)",
+ "Home" : "Start",
+ "Other" : "Andere",
"Share" : "Teilen",
"Name or email address..." : "Name oder E-Mail-Adresse…",
"Name or federated cloud ID..." : "Name oder Federated-Cloud-ID…",
@@ -382,6 +381,9 @@ OC.L10N.register(
"Error setting expiration date" : "Fehler beim Setzen des Ablaufdatums",
"The public link will expire no later than {days} days after it is created" : "Der öffentliche Link wird spätestens {days} Tage nach seiner Erstellung ablaufen",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} mittels Link geteilt",
+ "{sharee} (group)" : "{sharee} (Gruppe)",
+ "{sharee} (remote)" : "{sharee} (remote)",
+ "{sharee} (email)" : "{sharee} (E-Mail)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Teile mit Anderen, indem Du einen Benutzer, eine Gruppe, eine Federated-Cloud-ID oder eine E-Mail-Adressen eingibst.",
"Share with other people by entering a user or group or a federated cloud ID." : "Teile mit Anderen, indem Du einen Benutzer, eine Gruppe, oder eine Federated-Cloud-ID eingibst.",
"Share with other people by entering a user or group or an email address." : "Teile mit Anderen, indem Du einen Benutzer, eine Gruppe, oder eine E-Mail-Adresse eingibst.",
@@ -413,6 +415,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Du bist dabei, %s Zugriff auf Dein %s-Konto zu gewähren.",
"Depending on your configuration, this button could also work to trust the domain:" : "Abhängig von Deiner Konfiguration kann diese Schaltfläche verwandt werden, um die Domain als vertrauenswürdig einzustufen:",
"Copy URL" : "URL kopieren",
+ "{sharee} (conversation)" : "{sharee} (conversation)",
"Please log in before granting %s access to your %s account." : "Bitte anmelden, bevor Du %s Zugriff auf Dein %s-Konto gewährst.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Weitere Informationen zur Konfiguration findest du in der %sDokumentation%s."
},
diff --git a/core/l10n/de.json b/core/l10n/de.json
index cf5b11bb67..f2063db8b2 100644
--- a/core/l10n/de.json
+++ b/core/l10n/de.json
@@ -165,6 +165,7 @@
"Share to {name}" : "Mit {name} teilen",
"Copy link" : "Link kopieren",
"Link" : "Link",
+ "Hide download" : "Download verbergen",
"Password protect" : "Passwortschutz",
"Allow editing" : "Bearbeitung erlauben",
"Email link to person" : "Link per E-Mail verschicken",
@@ -208,12 +209,10 @@
"No users found for {search}" : "Keine Benutzer für {search} gefunden",
"An error occurred (\"{message}\"). Please try again" : "Benötigt keine Übersetzung. Für iOS wird nur die formelle Übersetzung verwendet (de_DE). ",
"An error occurred. Please try again" : "Es ist ein Fehler aufgetreten. Bitte versuche es noch einmal",
- "{sharee} (group)" : "{sharee} (Gruppe)",
- "{sharee} (remote)" : "{sharee} (remote)",
"{sharee} (remote group)" : "{sharee} (externe Gruppe)",
- "{sharee} (email)" : "{sharee} (E-Mail)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (conversation)",
+ "Home" : "Start",
+ "Other" : "Andere",
"Share" : "Teilen",
"Name or email address..." : "Name oder E-Mail-Adresse…",
"Name or federated cloud ID..." : "Name oder Federated-Cloud-ID…",
@@ -380,6 +379,9 @@
"Error setting expiration date" : "Fehler beim Setzen des Ablaufdatums",
"The public link will expire no later than {days} days after it is created" : "Der öffentliche Link wird spätestens {days} Tage nach seiner Erstellung ablaufen",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} mittels Link geteilt",
+ "{sharee} (group)" : "{sharee} (Gruppe)",
+ "{sharee} (remote)" : "{sharee} (remote)",
+ "{sharee} (email)" : "{sharee} (E-Mail)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Teile mit Anderen, indem Du einen Benutzer, eine Gruppe, eine Federated-Cloud-ID oder eine E-Mail-Adressen eingibst.",
"Share with other people by entering a user or group or a federated cloud ID." : "Teile mit Anderen, indem Du einen Benutzer, eine Gruppe, oder eine Federated-Cloud-ID eingibst.",
"Share with other people by entering a user or group or an email address." : "Teile mit Anderen, indem Du einen Benutzer, eine Gruppe, oder eine E-Mail-Adresse eingibst.",
@@ -411,6 +413,7 @@
"You are about to grant %s access to your %s account." : "Du bist dabei, %s Zugriff auf Dein %s-Konto zu gewähren.",
"Depending on your configuration, this button could also work to trust the domain:" : "Abhängig von Deiner Konfiguration kann diese Schaltfläche verwandt werden, um die Domain als vertrauenswürdig einzustufen:",
"Copy URL" : "URL kopieren",
+ "{sharee} (conversation)" : "{sharee} (conversation)",
"Please log in before granting %s access to your %s account." : "Bitte anmelden, bevor Du %s Zugriff auf Dein %s-Konto gewährst.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Weitere Informationen zur Konfiguration findest du in der %sDokumentation%s."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index 7a7b1b1573..bdcea5e0bb 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -167,6 +167,7 @@ OC.L10N.register(
"Share to {name}" : "Mit {name} teilen",
"Copy link" : "Link kopieren",
"Link" : "Link",
+ "Hide download" : "Download verbergen",
"Password protect" : "Passwortschutz",
"Allow editing" : "Bearbeitung erlauben",
"Email link to person" : "Link per E-Mail verschicken",
@@ -210,12 +211,10 @@ OC.L10N.register(
"No users found for {search}" : "Keine Benutzer für {search} gefunden",
"An error occurred (\"{message}\"). Please try again" : "Es ist ein Fehler aufgetreten (\"{message}\"). Bitte erneut versuchen.",
"An error occurred. Please try again" : "Es ist ein Fehler aufgetreten. Bitte versuchen Sie es noch einmal",
- "{sharee} (group)" : "{sharee} (Gruppe)",
- "{sharee} (remote)" : "{sharee} (remote)",
"{sharee} (remote group)" : "{sharee} (Externe Gruppe)",
- "{sharee} (email)" : "{sharee} (E-Mail)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (conversation)",
+ "Home" : "Start",
+ "Other" : "Andere",
"Share" : "Teilen",
"Name or email address..." : "Name oder E-Mail-Adresse…",
"Name or federated cloud ID..." : "Name oder Federated-Cloud-ID…",
@@ -382,6 +381,9 @@ OC.L10N.register(
"Error setting expiration date" : "Fehler beim Setzen des Ablaufdatums",
"The public link will expire no later than {days} days after it is created" : "Der öffentliche Link wird spätestens {days} Tage nach seiner Erstellung ablaufen",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} mittels Link geteilt",
+ "{sharee} (group)" : "{sharee} (Gruppe)",
+ "{sharee} (remote)" : "{sharee} (remote)",
+ "{sharee} (email)" : "{sharee} (E-Mail)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Teilen mit Anderen, indem Sie einen Benutzer, eine Gruppe, eine Federated-Cloud-ID oder eine E-Mail-Adresse eingeben.",
"Share with other people by entering a user or group or a federated cloud ID." : "Teilen mit Anderen, indem Sie einen Benutzer, eine Gruppe, oder eine Federated-Cloud-ID eingeben.",
"Share with other people by entering a user or group or an email address." : "Teilen mit Anderen, indem Sie einen Benutzer, eine Gruppe, oder eine E-Mail-Adresse eingeben.",
@@ -413,6 +415,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Sie sind dabei, %s Zugriff auf Ihr %s-Konto zu gewähren.",
"Depending on your configuration, this button could also work to trust the domain:" : "Abhängig von Ihrer Konfiguration kann diese Schaltfläche verwandt werden, um die Domain als vertrauenswürdig einzustufen:",
"Copy URL" : "URL kopieren",
+ "{sharee} (conversation)" : "{sharee} (conversation)",
"Please log in before granting %s access to your %s account." : "Bitte anmelden, bevor Du %s Zugriff auf Dein %s-Konto gewährst.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Weitere Informationen zur Konfiguration finden Sie in der %sDokumentation%s."
},
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index dc1ed55448..7f844020d6 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -165,6 +165,7 @@
"Share to {name}" : "Mit {name} teilen",
"Copy link" : "Link kopieren",
"Link" : "Link",
+ "Hide download" : "Download verbergen",
"Password protect" : "Passwortschutz",
"Allow editing" : "Bearbeitung erlauben",
"Email link to person" : "Link per E-Mail verschicken",
@@ -208,12 +209,10 @@
"No users found for {search}" : "Keine Benutzer für {search} gefunden",
"An error occurred (\"{message}\"). Please try again" : "Es ist ein Fehler aufgetreten (\"{message}\"). Bitte erneut versuchen.",
"An error occurred. Please try again" : "Es ist ein Fehler aufgetreten. Bitte versuchen Sie es noch einmal",
- "{sharee} (group)" : "{sharee} (Gruppe)",
- "{sharee} (remote)" : "{sharee} (remote)",
"{sharee} (remote group)" : "{sharee} (Externe Gruppe)",
- "{sharee} (email)" : "{sharee} (E-Mail)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (conversation)",
+ "Home" : "Start",
+ "Other" : "Andere",
"Share" : "Teilen",
"Name or email address..." : "Name oder E-Mail-Adresse…",
"Name or federated cloud ID..." : "Name oder Federated-Cloud-ID…",
@@ -380,6 +379,9 @@
"Error setting expiration date" : "Fehler beim Setzen des Ablaufdatums",
"The public link will expire no later than {days} days after it is created" : "Der öffentliche Link wird spätestens {days} Tage nach seiner Erstellung ablaufen",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} mittels Link geteilt",
+ "{sharee} (group)" : "{sharee} (Gruppe)",
+ "{sharee} (remote)" : "{sharee} (remote)",
+ "{sharee} (email)" : "{sharee} (E-Mail)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Teilen mit Anderen, indem Sie einen Benutzer, eine Gruppe, eine Federated-Cloud-ID oder eine E-Mail-Adresse eingeben.",
"Share with other people by entering a user or group or a federated cloud ID." : "Teilen mit Anderen, indem Sie einen Benutzer, eine Gruppe, oder eine Federated-Cloud-ID eingeben.",
"Share with other people by entering a user or group or an email address." : "Teilen mit Anderen, indem Sie einen Benutzer, eine Gruppe, oder eine E-Mail-Adresse eingeben.",
@@ -411,6 +413,7 @@
"You are about to grant %s access to your %s account." : "Sie sind dabei, %s Zugriff auf Ihr %s-Konto zu gewähren.",
"Depending on your configuration, this button could also work to trust the domain:" : "Abhängig von Ihrer Konfiguration kann diese Schaltfläche verwandt werden, um die Domain als vertrauenswürdig einzustufen:",
"Copy URL" : "URL kopieren",
+ "{sharee} (conversation)" : "{sharee} (conversation)",
"Please log in before granting %s access to your %s account." : "Bitte anmelden, bevor Du %s Zugriff auf Dein %s-Konto gewährst.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Weitere Informationen zur Konfiguration finden Sie in der %sDokumentation%s."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/core/l10n/el.js b/core/l10n/el.js
index 490cace3f2..aae27a52af 100644
--- a/core/l10n/el.js
+++ b/core/l10n/el.js
@@ -155,9 +155,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "Δεν βρέθηκαν χρήστες ή ομάδες για την αναζήτηση {search}",
"No users found for {search}" : "Δεν βρέθηκαν χρήστες για την αναζήτηση {search}",
"An error occurred. Please try again" : "Παρουσιάστηκε σφάλμα. Παρακαλώ δοκιμάστε αργότερα",
- "{sharee} (group)" : "{sharee} (ομάδα)",
- "{sharee} (remote)" : "{sharee} (απομακρυσμένα)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Διαμοιρασμός",
"Name or email address..." : "Όνομα ή διεύθυνση ηλεκτρονικού ταχυδρομείου...",
@@ -281,6 +278,9 @@ OC.L10N.register(
"Error setting expiration date" : "Σφάλμα κατά τον ορισμό ημερομηνίας λήξης",
"The public link will expire no later than {days} days after it is created" : "Ο δημόσιος σύνδεσμος θα απενεργοποιηθεί το πολύ σε {days} ημέρες μετά την δημιουργία του",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} διαμοιράστηκε με σύνδεσμο",
+ "{sharee} (group)" : "{sharee} (ομάδα)",
+ "{sharee} (remote)" : "{sharee} (απομακρυσμένα)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Διαμοιραστείτε με άλλους εισάγοντας τον χρήστη ή την ομάδα, το ID του federated cloud ή μια διεύθυνση ηλεκτρονικού ταχυδρομείου.",
"Share with other people by entering a user or group or a federated cloud ID." : "Διαμοιραστείτε με άλλους εισάγοντας τον χρήστη ή την ομάδα ή το ID του federated cloud.",
"Share with other people by entering a user or group or an email address." : "Διαμοιραστείτε με άλλους εισάγοντας τον χρήστη ή την ομάδα ή μια διεύθυνση ηλεκτρονικού ταχυδρομείου.",
diff --git a/core/l10n/el.json b/core/l10n/el.json
index e70fff20a1..08f2db9210 100644
--- a/core/l10n/el.json
+++ b/core/l10n/el.json
@@ -153,9 +153,6 @@
"No users or groups found for {search}" : "Δεν βρέθηκαν χρήστες ή ομάδες για την αναζήτηση {search}",
"No users found for {search}" : "Δεν βρέθηκαν χρήστες για την αναζήτηση {search}",
"An error occurred. Please try again" : "Παρουσιάστηκε σφάλμα. Παρακαλώ δοκιμάστε αργότερα",
- "{sharee} (group)" : "{sharee} (ομάδα)",
- "{sharee} (remote)" : "{sharee} (απομακρυσμένα)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Διαμοιρασμός",
"Name or email address..." : "Όνομα ή διεύθυνση ηλεκτρονικού ταχυδρομείου...",
@@ -279,6 +276,9 @@
"Error setting expiration date" : "Σφάλμα κατά τον ορισμό ημερομηνίας λήξης",
"The public link will expire no later than {days} days after it is created" : "Ο δημόσιος σύνδεσμος θα απενεργοποιηθεί το πολύ σε {days} ημέρες μετά την δημιουργία του",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} διαμοιράστηκε με σύνδεσμο",
+ "{sharee} (group)" : "{sharee} (ομάδα)",
+ "{sharee} (remote)" : "{sharee} (απομακρυσμένα)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Διαμοιραστείτε με άλλους εισάγοντας τον χρήστη ή την ομάδα, το ID του federated cloud ή μια διεύθυνση ηλεκτρονικού ταχυδρομείου.",
"Share with other people by entering a user or group or a federated cloud ID." : "Διαμοιραστείτε με άλλους εισάγοντας τον χρήστη ή την ομάδα ή το ID του federated cloud.",
"Share with other people by entering a user or group or an email address." : "Διαμοιραστείτε με άλλους εισάγοντας τον χρήστη ή την ομάδα ή μια διεύθυνση ηλεκτρονικού ταχυδρομείου.",
diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js
index 269026c479..1530abaedb 100644
--- a/core/l10n/en_GB.js
+++ b/core/l10n/en_GB.js
@@ -172,9 +172,6 @@ OC.L10N.register(
"No users found for {search}" : "No users found for {search}",
"An error occurred (\"{message}\"). Please try again" : "An error occurred (\"{message}\"). Please try again",
"An error occurred. Please try again" : "An error occurred. Please try again",
- "{sharee} (group)" : "{sharee} (group)",
- "{sharee} (remote)" : "{sharee} (remote)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Share",
"Name or email address..." : "Name or email address...",
@@ -325,6 +322,9 @@ OC.L10N.register(
"Error setting expiration date" : "Error setting expiration date",
"The public link will expire no later than {days} days after it is created" : "The public link will expire no later than {days} days after it is created",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} shared via link",
+ "{sharee} (group)" : "{sharee} (group)",
+ "{sharee} (remote)" : "{sharee} (remote)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Share with other people by entering a user or group, a federated cloud ID or an email address.",
"Share with other people by entering a user or group or a federated cloud ID." : "Share with other people by entering a user or group or a federated cloud ID.",
"Share with other people by entering a user or group or an email address." : "Share with other people by entering a user or group or an email address.",
diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json
index 66c984ba1d..5fd03c9de3 100644
--- a/core/l10n/en_GB.json
+++ b/core/l10n/en_GB.json
@@ -170,9 +170,6 @@
"No users found for {search}" : "No users found for {search}",
"An error occurred (\"{message}\"). Please try again" : "An error occurred (\"{message}\"). Please try again",
"An error occurred. Please try again" : "An error occurred. Please try again",
- "{sharee} (group)" : "{sharee} (group)",
- "{sharee} (remote)" : "{sharee} (remote)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Share",
"Name or email address..." : "Name or email address...",
@@ -323,6 +320,9 @@
"Error setting expiration date" : "Error setting expiration date",
"The public link will expire no later than {days} days after it is created" : "The public link will expire no later than {days} days after it is created",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} shared via link",
+ "{sharee} (group)" : "{sharee} (group)",
+ "{sharee} (remote)" : "{sharee} (remote)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Share with other people by entering a user or group, a federated cloud ID or an email address.",
"Share with other people by entering a user or group or a federated cloud ID." : "Share with other people by entering a user or group or a federated cloud ID.",
"Share with other people by entering a user or group or an email address." : "Share with other people by entering a user or group or an email address.",
diff --git a/core/l10n/eo.js b/core/l10n/eo.js
index 3900daa108..2ebc961173 100644
--- a/core/l10n/eo.js
+++ b/core/l10n/eo.js
@@ -116,9 +116,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "Neniu uzanto aŭ grupo troviĝis por {search}",
"An error occurred (\"{message}\"). Please try again" : "Eraro okazis (\"{message}\"). Bonvolu provi ree.",
"An error occurred. Please try again" : "Eraro okazis. Bonvolu provi ree",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (fora)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Kunhavigi",
"Name or email address..." : "Nomo aŭ retpoŝtadreso...",
@@ -215,6 +212,9 @@ OC.L10N.register(
"Shared with {recipients}" : "Kunhavigis kun {recipients}",
"Error setting expiration date" : "Eraro dum agordado de limdato",
"The public link will expire no later than {days} days after it is created" : "La publika ligilo senvalidiĝos ne pli malfrue ol {days} tagojn post ĝi kreiĝos",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (fora)",
+ "{sharee} (email)" : "{sharee} (email)",
"This action requires you to confirm your password:" : "Tiu ĉi ago bezonas ke vi konfirmas vian pasvorton:",
"Wrong password. Reset it?" : "Falsa pasvorto. Ĉu vi volas rekomenci ĝin?",
"Stay logged in" : "Daŭri ensalutinta",
diff --git a/core/l10n/eo.json b/core/l10n/eo.json
index c48216f51b..1a1b56551f 100644
--- a/core/l10n/eo.json
+++ b/core/l10n/eo.json
@@ -114,9 +114,6 @@
"No users or groups found for {search}" : "Neniu uzanto aŭ grupo troviĝis por {search}",
"An error occurred (\"{message}\"). Please try again" : "Eraro okazis (\"{message}\"). Bonvolu provi ree.",
"An error occurred. Please try again" : "Eraro okazis. Bonvolu provi ree",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (fora)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Kunhavigi",
"Name or email address..." : "Nomo aŭ retpoŝtadreso...",
@@ -213,6 +210,9 @@
"Shared with {recipients}" : "Kunhavigis kun {recipients}",
"Error setting expiration date" : "Eraro dum agordado de limdato",
"The public link will expire no later than {days} days after it is created" : "La publika ligilo senvalidiĝos ne pli malfrue ol {days} tagojn post ĝi kreiĝos",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (fora)",
+ "{sharee} (email)" : "{sharee} (email)",
"This action requires you to confirm your password:" : "Tiu ĉi ago bezonas ke vi konfirmas vian pasvorton:",
"Wrong password. Reset it?" : "Falsa pasvorto. Ĉu vi volas rekomenci ĝin?",
"Stay logged in" : "Daŭri ensalutinta",
diff --git a/core/l10n/es.js b/core/l10n/es.js
index ce580b7d2d..7b8c50b403 100644
--- a/core/l10n/es.js
+++ b/core/l10n/es.js
@@ -210,12 +210,8 @@ OC.L10N.register(
"No users found for {search}" : "No se han encontrado usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Ha ocurrido un error (\"{message}\"). Por favor inténtelo de nuevo",
"An error occurred. Please try again" : "Ha ocurrido un error. Por favor inténtelo de nuevo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
"{sharee} (remote group)" : "{sharee} (grupo remoto)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (conversación)",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico...",
"Name or federated cloud ID..." : "Nombre o ID de nube federada...",
@@ -382,6 +378,9 @@ OC.L10N.register(
"Error setting expiration date" : "Error estableciendo fecha de caducidad",
"The public link will expire no later than {days} days after it is created" : "El vínculo público no expirará antes de {days} desde que se creó",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} compartido por medio de un link",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas introduciendo un usuario, grupo, ID de nube federada o dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas introduciendo un usuario, grupo o ID de nube federada.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas introduciendo un usuario, grupo o una dirección de correo electrónico.",
@@ -413,6 +412,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Estás a punto de conceder a %s acceso a tu cuenta de %s",
"Depending on your configuration, this button could also work to trust the domain:" : "Dependiendo de tu configuración, este botón también podría servir para confiar en el dominio:",
"Copy URL" : "Copiar URL",
+ "{sharee} (conversation)" : "{sharee} (conversación)",
"Please log in before granting %s access to your %s account." : "Por favor, inicie sesión antes de conceder a %s acceso a tu %s cuenta.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Más información sobre cómo configurar esto se puede encontrar en la %sdocumentación%s."
},
diff --git a/core/l10n/es.json b/core/l10n/es.json
index a2be02603d..15fa4d62ad 100644
--- a/core/l10n/es.json
+++ b/core/l10n/es.json
@@ -208,12 +208,8 @@
"No users found for {search}" : "No se han encontrado usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Ha ocurrido un error (\"{message}\"). Por favor inténtelo de nuevo",
"An error occurred. Please try again" : "Ha ocurrido un error. Por favor inténtelo de nuevo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
"{sharee} (remote group)" : "{sharee} (grupo remoto)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (conversación)",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico...",
"Name or federated cloud ID..." : "Nombre o ID de nube federada...",
@@ -380,6 +376,9 @@
"Error setting expiration date" : "Error estableciendo fecha de caducidad",
"The public link will expire no later than {days} days after it is created" : "El vínculo público no expirará antes de {days} desde que se creó",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} compartido por medio de un link",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas introduciendo un usuario, grupo, ID de nube federada o dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas introduciendo un usuario, grupo o ID de nube federada.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas introduciendo un usuario, grupo o una dirección de correo electrónico.",
@@ -411,6 +410,7 @@
"You are about to grant %s access to your %s account." : "Estás a punto de conceder a %s acceso a tu cuenta de %s",
"Depending on your configuration, this button could also work to trust the domain:" : "Dependiendo de tu configuración, este botón también podría servir para confiar en el dominio:",
"Copy URL" : "Copiar URL",
+ "{sharee} (conversation)" : "{sharee} (conversación)",
"Please log in before granting %s access to your %s account." : "Por favor, inicie sesión antes de conceder a %s acceso a tu %s cuenta.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Más información sobre cómo configurar esto se puede encontrar en la %sdocumentación%s."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/core/l10n/es_419.js b/core/l10n/es_419.js
index f44a641ce1..6cb4f43e6a 100644
--- a/core/l10n/es_419.js
+++ b/core/l10n/es_419.js
@@ -167,9 +167,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -294,6 +291,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_419.json b/core/l10n/es_419.json
index 62d866f132..fcb62367d1 100644
--- a/core/l10n/es_419.json
+++ b/core/l10n/es_419.json
@@ -165,9 +165,6 @@
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -292,6 +289,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_AR.js b/core/l10n/es_AR.js
index 88229c30d5..36ff6cfc7e 100644
--- a/core/l10n/es_AR.js
+++ b/core/l10n/es_AR.js
@@ -147,9 +147,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Favor de volver a intentar",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -265,6 +262,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "El link público expirará a los {days} días de haber sido creado",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compatido mediante un link",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparta con otras personas ingresando un usuario, un grupo, un ID de nube federado o una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparta con otras personas ingresando un usuario, un grupo o un ID de nube federado.",
"Share with other people by entering a user or group or an email address." : "Comparta con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_AR.json b/core/l10n/es_AR.json
index 1036a3cba2..c13e9e0bff 100644
--- a/core/l10n/es_AR.json
+++ b/core/l10n/es_AR.json
@@ -145,9 +145,6 @@
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Favor de volver a intentar",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -263,6 +260,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "El link público expirará a los {days} días de haber sido creado",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compatido mediante un link",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparta con otras personas ingresando un usuario, un grupo, un ID de nube federado o una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparta con otras personas ingresando un usuario, un grupo o un ID de nube federado.",
"Share with other people by entering a user or group or an email address." : "Comparta con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_CL.js b/core/l10n/es_CL.js
index 28531d4874..d98b3dcebe 100644
--- a/core/l10n/es_CL.js
+++ b/core/l10n/es_CL.js
@@ -170,9 +170,6 @@ OC.L10N.register(
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -323,6 +320,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_CL.json b/core/l10n/es_CL.json
index 9ec18d03f4..4446f7c861 100644
--- a/core/l10n/es_CL.json
+++ b/core/l10n/es_CL.json
@@ -168,9 +168,6 @@
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -321,6 +318,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_CO.js b/core/l10n/es_CO.js
index 28531d4874..d98b3dcebe 100644
--- a/core/l10n/es_CO.js
+++ b/core/l10n/es_CO.js
@@ -170,9 +170,6 @@ OC.L10N.register(
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -323,6 +320,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_CO.json b/core/l10n/es_CO.json
index 9ec18d03f4..4446f7c861 100644
--- a/core/l10n/es_CO.json
+++ b/core/l10n/es_CO.json
@@ -168,9 +168,6 @@
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -321,6 +318,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_CR.js b/core/l10n/es_CR.js
index 28531d4874..d98b3dcebe 100644
--- a/core/l10n/es_CR.js
+++ b/core/l10n/es_CR.js
@@ -170,9 +170,6 @@ OC.L10N.register(
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -323,6 +320,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_CR.json b/core/l10n/es_CR.json
index 9ec18d03f4..4446f7c861 100644
--- a/core/l10n/es_CR.json
+++ b/core/l10n/es_CR.json
@@ -168,9 +168,6 @@
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -321,6 +318,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_DO.js b/core/l10n/es_DO.js
index 28531d4874..d98b3dcebe 100644
--- a/core/l10n/es_DO.js
+++ b/core/l10n/es_DO.js
@@ -170,9 +170,6 @@ OC.L10N.register(
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -323,6 +320,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_DO.json b/core/l10n/es_DO.json
index 9ec18d03f4..4446f7c861 100644
--- a/core/l10n/es_DO.json
+++ b/core/l10n/es_DO.json
@@ -168,9 +168,6 @@
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -321,6 +318,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_EC.js b/core/l10n/es_EC.js
index 28531d4874..d98b3dcebe 100644
--- a/core/l10n/es_EC.js
+++ b/core/l10n/es_EC.js
@@ -170,9 +170,6 @@ OC.L10N.register(
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -323,6 +320,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_EC.json b/core/l10n/es_EC.json
index 9ec18d03f4..4446f7c861 100644
--- a/core/l10n/es_EC.json
+++ b/core/l10n/es_EC.json
@@ -168,9 +168,6 @@
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -321,6 +318,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_GT.js b/core/l10n/es_GT.js
index 28531d4874..d98b3dcebe 100644
--- a/core/l10n/es_GT.js
+++ b/core/l10n/es_GT.js
@@ -170,9 +170,6 @@ OC.L10N.register(
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -323,6 +320,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_GT.json b/core/l10n/es_GT.json
index 9ec18d03f4..4446f7c861 100644
--- a/core/l10n/es_GT.json
+++ b/core/l10n/es_GT.json
@@ -168,9 +168,6 @@
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -321,6 +318,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_HN.js b/core/l10n/es_HN.js
index f44a641ce1..6cb4f43e6a 100644
--- a/core/l10n/es_HN.js
+++ b/core/l10n/es_HN.js
@@ -167,9 +167,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -294,6 +291,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_HN.json b/core/l10n/es_HN.json
index 62d866f132..fcb62367d1 100644
--- a/core/l10n/es_HN.json
+++ b/core/l10n/es_HN.json
@@ -165,9 +165,6 @@
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -292,6 +289,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_MX.js b/core/l10n/es_MX.js
index cfa292606c..705c2721a6 100644
--- a/core/l10n/es_MX.js
+++ b/core/l10n/es_MX.js
@@ -170,9 +170,6 @@ OC.L10N.register(
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -323,6 +320,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_MX.json b/core/l10n/es_MX.json
index ea929476c1..87529c8e1b 100644
--- a/core/l10n/es_MX.json
+++ b/core/l10n/es_MX.json
@@ -168,9 +168,6 @@
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -321,6 +318,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_NI.js b/core/l10n/es_NI.js
index f44a641ce1..6cb4f43e6a 100644
--- a/core/l10n/es_NI.js
+++ b/core/l10n/es_NI.js
@@ -167,9 +167,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -294,6 +291,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_NI.json b/core/l10n/es_NI.json
index 62d866f132..fcb62367d1 100644
--- a/core/l10n/es_NI.json
+++ b/core/l10n/es_NI.json
@@ -165,9 +165,6 @@
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -292,6 +289,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_PA.js b/core/l10n/es_PA.js
index f44a641ce1..6cb4f43e6a 100644
--- a/core/l10n/es_PA.js
+++ b/core/l10n/es_PA.js
@@ -167,9 +167,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -294,6 +291,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_PA.json b/core/l10n/es_PA.json
index 62d866f132..fcb62367d1 100644
--- a/core/l10n/es_PA.json
+++ b/core/l10n/es_PA.json
@@ -165,9 +165,6 @@
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -292,6 +289,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_PE.js b/core/l10n/es_PE.js
index f44a641ce1..6cb4f43e6a 100644
--- a/core/l10n/es_PE.js
+++ b/core/l10n/es_PE.js
@@ -167,9 +167,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -294,6 +291,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_PE.json b/core/l10n/es_PE.json
index 62d866f132..fcb62367d1 100644
--- a/core/l10n/es_PE.json
+++ b/core/l10n/es_PE.json
@@ -165,9 +165,6 @@
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -292,6 +289,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_PR.js b/core/l10n/es_PR.js
index f44a641ce1..6cb4f43e6a 100644
--- a/core/l10n/es_PR.js
+++ b/core/l10n/es_PR.js
@@ -167,9 +167,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -294,6 +291,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_PR.json b/core/l10n/es_PR.json
index 62d866f132..fcb62367d1 100644
--- a/core/l10n/es_PR.json
+++ b/core/l10n/es_PR.json
@@ -165,9 +165,6 @@
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -292,6 +289,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_PY.js b/core/l10n/es_PY.js
index f44a641ce1..6cb4f43e6a 100644
--- a/core/l10n/es_PY.js
+++ b/core/l10n/es_PY.js
@@ -167,9 +167,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -294,6 +291,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_PY.json b/core/l10n/es_PY.json
index 62d866f132..fcb62367d1 100644
--- a/core/l10n/es_PY.json
+++ b/core/l10n/es_PY.json
@@ -165,9 +165,6 @@
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -292,6 +289,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_SV.js b/core/l10n/es_SV.js
index 28531d4874..d98b3dcebe 100644
--- a/core/l10n/es_SV.js
+++ b/core/l10n/es_SV.js
@@ -170,9 +170,6 @@ OC.L10N.register(
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -323,6 +320,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_SV.json b/core/l10n/es_SV.json
index 9ec18d03f4..4446f7c861 100644
--- a/core/l10n/es_SV.json
+++ b/core/l10n/es_SV.json
@@ -168,9 +168,6 @@
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred (\"{message}\"). Please try again" : "Se presentó un error (\"{message}\"). Por favor vuelve a intentarlo",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -321,6 +318,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_UY.js b/core/l10n/es_UY.js
index f44a641ce1..6cb4f43e6a 100644
--- a/core/l10n/es_UY.js
+++ b/core/l10n/es_UY.js
@@ -167,9 +167,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -294,6 +291,9 @@ OC.L10N.register(
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/es_UY.json b/core/l10n/es_UY.json
index 62d866f132..fcb62367d1 100644
--- a/core/l10n/es_UY.json
+++ b/core/l10n/es_UY.json
@@ -165,9 +165,6 @@
"No users or groups found for {search}" : "No se encontraron usuarios o gurpos para {search}",
"No users found for {search}" : "No se encontraron usuarios para {search}",
"An error occurred. Please try again" : "Se presentó un error. Por favor vuelve a intentarlo",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (correo electrónico)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Compartir",
"Name or email address..." : "Nombre o dirección de correo electrónico",
@@ -292,6 +289,9 @@
"Error setting expiration date" : "Se presentó un error al establecer la fecha de expiración",
"The public link will expire no later than {days} days after it is created" : "La liga pública expirará a los {days} días de haber sido creada",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha compartido mediante una liga",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (correo electrónico)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Comparte con otras personas ingresando una dirección de correo electrónico.",
"Share with other people by entering a user or group or a federated cloud ID." : "Comparte con otras personas ingresando un usuario o un grupo.",
"Share with other people by entering a user or group or an email address." : "Comparte con otras personas ingresando un usuario, un grupo o una dirección de correo electrónico.",
diff --git a/core/l10n/et_EE.js b/core/l10n/et_EE.js
index f52158fff6..d5dc8f888a 100644
--- a/core/l10n/et_EE.js
+++ b/core/l10n/et_EE.js
@@ -153,9 +153,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "Otsingu {search} põhjal kasutajaid ega gruppe ei leitud",
"No users found for {search}" : "Otsingu {search} põhjal kasutajaid ei leitud",
"An error occurred. Please try again" : "Tekkis tõrge. Palun proovi uuesti",
- "{sharee} (group)" : "{sharee} (grupp)",
- "{sharee} (remote)" : "{sharee} (mujal serveris)",
- "{sharee} (email)" : "{sharee} (e-post)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Jaga",
"Name or email address..." : "Nimi või e-posti aadress",
@@ -275,6 +272,9 @@ OC.L10N.register(
"Error setting expiration date" : "Viga aegumise kuupäeva määramisel",
"The public link will expire no later than {days} days after it is created" : "Avalik link aegub mitte hiljem kui pärast {days} päeva selle loomist",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} lingiga jagatud",
+ "{sharee} (group)" : "{sharee} (grupp)",
+ "{sharee} (remote)" : "{sharee} (mujal serveris)",
+ "{sharee} (email)" : "{sharee} (e-post)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Jaga teiste inimestega sisestades kasutaja või grupi, liitpilve ID või e-posti aadressi.",
"Share with other people by entering a user or group or a federated cloud ID." : "Jaga teiste inimestega, sisestades kasutaja või grupi või liitpilve ID.",
"Share with other people by entering a user or group or an email address." : "Jaga teiste inimestega, sisestades kasutaja, grupi või e-posti aadressi.",
diff --git a/core/l10n/et_EE.json b/core/l10n/et_EE.json
index 7ae2161a14..01c2d1626d 100644
--- a/core/l10n/et_EE.json
+++ b/core/l10n/et_EE.json
@@ -151,9 +151,6 @@
"No users or groups found for {search}" : "Otsingu {search} põhjal kasutajaid ega gruppe ei leitud",
"No users found for {search}" : "Otsingu {search} põhjal kasutajaid ei leitud",
"An error occurred. Please try again" : "Tekkis tõrge. Palun proovi uuesti",
- "{sharee} (group)" : "{sharee} (grupp)",
- "{sharee} (remote)" : "{sharee} (mujal serveris)",
- "{sharee} (email)" : "{sharee} (e-post)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Jaga",
"Name or email address..." : "Nimi või e-posti aadress",
@@ -273,6 +270,9 @@
"Error setting expiration date" : "Viga aegumise kuupäeva määramisel",
"The public link will expire no later than {days} days after it is created" : "Avalik link aegub mitte hiljem kui pärast {days} päeva selle loomist",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} lingiga jagatud",
+ "{sharee} (group)" : "{sharee} (grupp)",
+ "{sharee} (remote)" : "{sharee} (mujal serveris)",
+ "{sharee} (email)" : "{sharee} (e-post)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Jaga teiste inimestega sisestades kasutaja või grupi, liitpilve ID või e-posti aadressi.",
"Share with other people by entering a user or group or a federated cloud ID." : "Jaga teiste inimestega, sisestades kasutaja või grupi või liitpilve ID.",
"Share with other people by entering a user or group or an email address." : "Jaga teiste inimestega, sisestades kasutaja, grupi või e-posti aadressi.",
diff --git a/core/l10n/eu.js b/core/l10n/eu.js
index 041313326a..248409d80d 100644
--- a/core/l10n/eu.js
+++ b/core/l10n/eu.js
@@ -150,9 +150,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "Ez dira {search} -rentzat erabiltzaile edo talderik aurkitu",
"No users found for {search}" : "Ez dira {search} -rentzat erabiltzailerik aurkitu",
"An error occurred. Please try again" : "Errore bat gertatu da. Saiatu berriro.",
- "{sharee} (group)" : "{sharee} (taldea)",
- "{sharee} (remote)" : "{sharee} (urrunekoa)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {jabea})",
"Share" : "Partekatu",
"Name or email address..." : "Izena edo e-posta helbidea...",
@@ -273,6 +270,9 @@ OC.L10N.register(
"Error setting expiration date" : "Errore bat egon da muga data ezartzean",
"The public link will expire no later than {days} days after it is created" : "Esteka publikoak iraungi egingo du, askoz jota, sortu eta {days} egunetara.",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} esteka bidez partekatuta",
+ "{sharee} (group)" : "{sharee} (taldea)",
+ "{sharee} (remote)" : "{sharee} (urrunekoa)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Parteka ezazu jendearekin taldeko erabiltzailea, federatutako hodei baten IDa edo e-posta helbide bat sartuta.",
"Share with other people by entering a user or group or a federated cloud ID." : "Parteka ezazu jendearekin taldeko erabiltzailea edo federatutako hodei baten IDa sartuta.",
"Share with other people by entering a user or group or an email address." : "Parteka ezazu jendearekin taldeko erabiltzailea edo e-posta helbide bat sartuta.",
diff --git a/core/l10n/eu.json b/core/l10n/eu.json
index 37d0faa64b..686e31fcc7 100644
--- a/core/l10n/eu.json
+++ b/core/l10n/eu.json
@@ -148,9 +148,6 @@
"No users or groups found for {search}" : "Ez dira {search} -rentzat erabiltzaile edo talderik aurkitu",
"No users found for {search}" : "Ez dira {search} -rentzat erabiltzailerik aurkitu",
"An error occurred. Please try again" : "Errore bat gertatu da. Saiatu berriro.",
- "{sharee} (group)" : "{sharee} (taldea)",
- "{sharee} (remote)" : "{sharee} (urrunekoa)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {jabea})",
"Share" : "Partekatu",
"Name or email address..." : "Izena edo e-posta helbidea...",
@@ -271,6 +268,9 @@
"Error setting expiration date" : "Errore bat egon da muga data ezartzean",
"The public link will expire no later than {days} days after it is created" : "Esteka publikoak iraungi egingo du, askoz jota, sortu eta {days} egunetara.",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} esteka bidez partekatuta",
+ "{sharee} (group)" : "{sharee} (taldea)",
+ "{sharee} (remote)" : "{sharee} (urrunekoa)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Parteka ezazu jendearekin taldeko erabiltzailea, federatutako hodei baten IDa edo e-posta helbide bat sartuta.",
"Share with other people by entering a user or group or a federated cloud ID." : "Parteka ezazu jendearekin taldeko erabiltzailea edo federatutako hodei baten IDa sartuta.",
"Share with other people by entering a user or group or an email address." : "Parteka ezazu jendearekin taldeko erabiltzailea edo e-posta helbide bat sartuta.",
diff --git a/core/l10n/fa.js b/core/l10n/fa.js
index 6c5cd28899..1b8c916cff 100644
--- a/core/l10n/fa.js
+++ b/core/l10n/fa.js
@@ -150,9 +150,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "هیچ کاربری یا گروهی یافت نشد {search}",
"No users found for {search}" : "هیچ کاربری با جستجوی {search} یافت نشد",
"An error occurred. Please try again" : "یک خطا رخ داده است، لطفا مجددا تلاش کنید",
- "{sharee} (group)" : "{sharee} (group)",
- "{sharee} (remote)" : "{sharee} (remote)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "اشتراکگذاری",
"Name or email address..." : "نام یا آدرس ایمیل ...",
@@ -257,6 +254,9 @@ OC.L10N.register(
"Error setting expiration date" : "خطا در تنظیم تاریخ انقضا",
"The public link will expire no later than {days} days after it is created" : "لینک عمومی پس از {days} روز پس از ایجاد منقضی خواهد شد",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} به اشتراک گذاشته شده از طریق لینک",
+ "{sharee} (group)" : "{sharee} (group)",
+ "{sharee} (remote)" : "{sharee} (remote)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "با وارد کردن یک کاربر یا گروه، شناسه Federated Cloud یا آدرس ایمیل با دیگران به اشتراک بگذارید.",
"Share with other people by entering a user or group or a federated cloud ID." : "با وارد کردن یک کاربر یا گروه یا شناسه Federated Cloud با افراد دیگر به اشتراک بگذارید.",
"Share with other people by entering a user or group or an email address." : "با وارد کردن یک کاربر یا گروه یا یک آدرس ایمیل با افراد دیگر به اشتراک بگذارید.",
diff --git a/core/l10n/fa.json b/core/l10n/fa.json
index 24e8130b42..96cc772cc9 100644
--- a/core/l10n/fa.json
+++ b/core/l10n/fa.json
@@ -148,9 +148,6 @@
"No users or groups found for {search}" : "هیچ کاربری یا گروهی یافت نشد {search}",
"No users found for {search}" : "هیچ کاربری با جستجوی {search} یافت نشد",
"An error occurred. Please try again" : "یک خطا رخ داده است، لطفا مجددا تلاش کنید",
- "{sharee} (group)" : "{sharee} (group)",
- "{sharee} (remote)" : "{sharee} (remote)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "اشتراکگذاری",
"Name or email address..." : "نام یا آدرس ایمیل ...",
@@ -255,6 +252,9 @@
"Error setting expiration date" : "خطا در تنظیم تاریخ انقضا",
"The public link will expire no later than {days} days after it is created" : "لینک عمومی پس از {days} روز پس از ایجاد منقضی خواهد شد",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} به اشتراک گذاشته شده از طریق لینک",
+ "{sharee} (group)" : "{sharee} (group)",
+ "{sharee} (remote)" : "{sharee} (remote)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "با وارد کردن یک کاربر یا گروه، شناسه Federated Cloud یا آدرس ایمیل با دیگران به اشتراک بگذارید.",
"Share with other people by entering a user or group or a federated cloud ID." : "با وارد کردن یک کاربر یا گروه یا شناسه Federated Cloud با افراد دیگر به اشتراک بگذارید.",
"Share with other people by entering a user or group or an email address." : "با وارد کردن یک کاربر یا گروه یا یک آدرس ایمیل با افراد دیگر به اشتراک بگذارید.",
diff --git a/core/l10n/fi.js b/core/l10n/fi.js
index 8cbbf37cc8..52f76812da 100644
--- a/core/l10n/fi.js
+++ b/core/l10n/fi.js
@@ -180,9 +180,6 @@ OC.L10N.register(
"No users found for {search}" : "Haulla {search} ei löytynyt käyttäjiä",
"An error occurred (\"{message}\"). Please try again" : "Tapahtui virhe (\"{message}\"). Yritä uudestaan",
"An error occurred. Please try again" : "Tapahtui virhe, yritä uudelleen",
- "{sharee} (group)" : "{sharee} (ryhmä)",
- "{sharee} (remote)" : "{sharee} (etä)",
- "{sharee} (email)" : "{sharee} (sähköposti)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Jaa",
"Name or email address..." : "Nimi tai sähköpostiosoite...",
@@ -332,6 +329,9 @@ OC.L10N.register(
"Error setting expiration date" : "Virhe vanhenemispäivää asetettaessa",
"The public link will expire no later than {days} days after it is created" : "Julkinen linkki vanhenee {days} päivän jälkeen sen luomisesta",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} jakoi linkillä",
+ "{sharee} (group)" : "{sharee} (ryhmä)",
+ "{sharee} (remote)" : "{sharee} (etä)",
+ "{sharee} (email)" : "{sharee} (sähköposti)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Jaa muille kirjoittamalla käyttäjä tai ryhmä, federoidun pilven tunniste tai sähköpostiosoite.",
"Share with other people by entering a user or group or a federated cloud ID." : "Jaa muille kirjoittamalla käyttäjä, ryhmä tai federoidun pilven tunniste.",
"Share with other people by entering a user or group or an email address." : "Jaa muille kirjoittamalla käyttäjä, ryhmä tai sähköpostiosoite.",
diff --git a/core/l10n/fi.json b/core/l10n/fi.json
index 22bcbca652..cd83c50269 100644
--- a/core/l10n/fi.json
+++ b/core/l10n/fi.json
@@ -178,9 +178,6 @@
"No users found for {search}" : "Haulla {search} ei löytynyt käyttäjiä",
"An error occurred (\"{message}\"). Please try again" : "Tapahtui virhe (\"{message}\"). Yritä uudestaan",
"An error occurred. Please try again" : "Tapahtui virhe, yritä uudelleen",
- "{sharee} (group)" : "{sharee} (ryhmä)",
- "{sharee} (remote)" : "{sharee} (etä)",
- "{sharee} (email)" : "{sharee} (sähköposti)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Jaa",
"Name or email address..." : "Nimi tai sähköpostiosoite...",
@@ -330,6 +327,9 @@
"Error setting expiration date" : "Virhe vanhenemispäivää asetettaessa",
"The public link will expire no later than {days} days after it is created" : "Julkinen linkki vanhenee {days} päivän jälkeen sen luomisesta",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} jakoi linkillä",
+ "{sharee} (group)" : "{sharee} (ryhmä)",
+ "{sharee} (remote)" : "{sharee} (etä)",
+ "{sharee} (email)" : "{sharee} (sähköposti)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Jaa muille kirjoittamalla käyttäjä tai ryhmä, federoidun pilven tunniste tai sähköpostiosoite.",
"Share with other people by entering a user or group or a federated cloud ID." : "Jaa muille kirjoittamalla käyttäjä, ryhmä tai federoidun pilven tunniste.",
"Share with other people by entering a user or group or an email address." : "Jaa muille kirjoittamalla käyttäjä, ryhmä tai sähköpostiosoite.",
diff --git a/core/l10n/fr.js b/core/l10n/fr.js
index a0e31cc9e9..5eaf3ba99f 100644
--- a/core/l10n/fr.js
+++ b/core/l10n/fr.js
@@ -210,12 +210,8 @@ OC.L10N.register(
"No users found for {search}" : "Aucun utilisateur trouvé pour {search}",
"An error occurred (\"{message}\"). Please try again" : "Une erreur est survenue (\"{message}\"). Veuillez réessayer",
"An error occurred. Please try again" : "Une erreur est survenue. Merci de réessayer",
- "{sharee} (group)" : "{sharee} (groupe)",
- "{sharee} (remote)" : "{sharee} (distant)",
"{sharee} (remote group)" : "{sharee} (groupe distant)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (discussion)",
"Share" : "Partager",
"Name or email address..." : "Nom ou adresse mail...",
"Name or federated cloud ID..." : "Nom ou ID du cloud fédéré...",
@@ -382,6 +378,9 @@ OC.L10N.register(
"Error setting expiration date" : "Erreur lors de la configuration de la date d'expiration",
"The public link will expire no later than {days} days after it is created" : "Ce lien public expirera dans {days} jours après sa création.",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} a partagé via un lien",
+ "{sharee} (group)" : "{sharee} (groupe)",
+ "{sharee} (remote)" : "{sharee} (distant)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Partager avec d'autres personnes en indiquant un nom d'utilisateur, un groupe, un identifiant de cloud fédéré ou une adresse email.",
"Share with other people by entering a user or group or a federated cloud ID." : "Partager avec d'autres personnes en indiquant un utilisateur, un groupe ou un identifiant de cloud fédéré.",
"Share with other people by entering a user or group or an email address." : "Partager avec d'autres personnes en indiquant un utilisateur, un groupe ou une adresse email.",
@@ -413,6 +412,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Vous êtes sur le point d'accorder à \"%s\" l'accès à votre compte \"%s\".",
"Depending on your configuration, this button could also work to trust the domain:" : "En fonction de votre configuration, ce bouton peut aussi fonctionner pour approuver ce domaine :",
"Copy URL" : "Copier l'adresse URL",
+ "{sharee} (conversation)" : "{sharee} (discussion)",
"Please log in before granting %s access to your %s account." : "Veuillez vous connecter avant d'autoriser %s à accéder à votre compte %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Vous trouverez d'autres informations sur la configuration dans la %sdocumentation %s."
},
diff --git a/core/l10n/fr.json b/core/l10n/fr.json
index 8aa4264d79..d526c33fc7 100644
--- a/core/l10n/fr.json
+++ b/core/l10n/fr.json
@@ -208,12 +208,8 @@
"No users found for {search}" : "Aucun utilisateur trouvé pour {search}",
"An error occurred (\"{message}\"). Please try again" : "Une erreur est survenue (\"{message}\"). Veuillez réessayer",
"An error occurred. Please try again" : "Une erreur est survenue. Merci de réessayer",
- "{sharee} (group)" : "{sharee} (groupe)",
- "{sharee} (remote)" : "{sharee} (distant)",
"{sharee} (remote group)" : "{sharee} (groupe distant)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (discussion)",
"Share" : "Partager",
"Name or email address..." : "Nom ou adresse mail...",
"Name or federated cloud ID..." : "Nom ou ID du cloud fédéré...",
@@ -380,6 +376,9 @@
"Error setting expiration date" : "Erreur lors de la configuration de la date d'expiration",
"The public link will expire no later than {days} days after it is created" : "Ce lien public expirera dans {days} jours après sa création.",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} a partagé via un lien",
+ "{sharee} (group)" : "{sharee} (groupe)",
+ "{sharee} (remote)" : "{sharee} (distant)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Partager avec d'autres personnes en indiquant un nom d'utilisateur, un groupe, un identifiant de cloud fédéré ou une adresse email.",
"Share with other people by entering a user or group or a federated cloud ID." : "Partager avec d'autres personnes en indiquant un utilisateur, un groupe ou un identifiant de cloud fédéré.",
"Share with other people by entering a user or group or an email address." : "Partager avec d'autres personnes en indiquant un utilisateur, un groupe ou une adresse email.",
@@ -411,6 +410,7 @@
"You are about to grant %s access to your %s account." : "Vous êtes sur le point d'accorder à \"%s\" l'accès à votre compte \"%s\".",
"Depending on your configuration, this button could also work to trust the domain:" : "En fonction de votre configuration, ce bouton peut aussi fonctionner pour approuver ce domaine :",
"Copy URL" : "Copier l'adresse URL",
+ "{sharee} (conversation)" : "{sharee} (discussion)",
"Please log in before granting %s access to your %s account." : "Veuillez vous connecter avant d'autoriser %s à accéder à votre compte %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Vous trouverez d'autres informations sur la configuration dans la %sdocumentation %s."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
diff --git a/core/l10n/he.js b/core/l10n/he.js
index 0664553203..5b34af1254 100644
--- a/core/l10n/he.js
+++ b/core/l10n/he.js
@@ -198,12 +198,8 @@ OC.L10N.register(
"No users found for {search}" : "לא אותרו משתמשים עבור {search}",
"An error occurred (\"{message}\"). Please try again" : "אירעה שגיאה (\"{message}\"). נא לנסות שוב",
"An error occurred. Please try again" : "אירעה שגיאה. יש לנסות שנית",
- "{sharee} (group)" : "{sharee} (קבוצה)",
- "{sharee} (remote)" : "{sharee} (מרוחק)",
"{sharee} (remote group)" : "{sharee} (קבוצה מרוחקת)",
- "{sharee} (email)" : "{sharee} (דוא״ל)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (דיון)",
"Share" : "שתף",
"Name or email address..." : "שם או כתובת דוא״ל…",
"Name or federated cloud ID..." : "שם או מזהה ענן מאוגד…",
@@ -359,6 +355,9 @@ OC.L10N.register(
"Error setting expiration date" : "אירעה שגיאה בעת הגדרת תאריך התפוגה",
"The public link will expire no later than {days} days after it is created" : "הקישור הציבורי יפוג עד {days} ימים לאחר שנוצר",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} שותף על ידי קישור",
+ "{sharee} (group)" : "{sharee} (קבוצה)",
+ "{sharee} (remote)" : "{sharee} (מרוחק)",
+ "{sharee} (email)" : "{sharee} (דוא״ל)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "ניתן לשתף אחרים על ידי הקלדת משתמש או קבוצה או מזהה ענן מאוגד או כתובת דוא״ל.",
"Share with other people by entering a user or group or a federated cloud ID." : "ניתן לשתף אחרים על ידי הקלדת משתמש או קבוצה או מזהה ענן מאוגד.",
"Share with other people by entering a user or group or an email address." : "ניתן לשתף עם אנשים אחרים על ידי הקלדת משתמש או קבוצה או כתובת דוא״ל.",
@@ -389,6 +388,7 @@ OC.L10N.register(
"Back to log in" : "חזרה לכניסה",
"You are about to grant %s access to your %s account." : "פעולה זו תעניק הרשאת %s לחשבון שלך ב־%s.",
"Depending on your configuration, this button could also work to trust the domain:" : "בהתאם לתצורה שלך, הכפתור הזה יכול לעבוד גם כדי לתת אמון בשם המתחם:",
+ "{sharee} (conversation)" : "{sharee} (דיון)",
"Please log in before granting %s access to your %s account." : "נא להיכנס בטרם מתן הרשאת %s לחשבון שלך ב־%s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "ניתן למצוא מידע נוסף כיצד להגדיר ב%sתיעוד%s."
},
diff --git a/core/l10n/he.json b/core/l10n/he.json
index 10a4653e89..649197398c 100644
--- a/core/l10n/he.json
+++ b/core/l10n/he.json
@@ -196,12 +196,8 @@
"No users found for {search}" : "לא אותרו משתמשים עבור {search}",
"An error occurred (\"{message}\"). Please try again" : "אירעה שגיאה (\"{message}\"). נא לנסות שוב",
"An error occurred. Please try again" : "אירעה שגיאה. יש לנסות שנית",
- "{sharee} (group)" : "{sharee} (קבוצה)",
- "{sharee} (remote)" : "{sharee} (מרוחק)",
"{sharee} (remote group)" : "{sharee} (קבוצה מרוחקת)",
- "{sharee} (email)" : "{sharee} (דוא״ל)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (דיון)",
"Share" : "שתף",
"Name or email address..." : "שם או כתובת דוא״ל…",
"Name or federated cloud ID..." : "שם או מזהה ענן מאוגד…",
@@ -357,6 +353,9 @@
"Error setting expiration date" : "אירעה שגיאה בעת הגדרת תאריך התפוגה",
"The public link will expire no later than {days} days after it is created" : "הקישור הציבורי יפוג עד {days} ימים לאחר שנוצר",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} שותף על ידי קישור",
+ "{sharee} (group)" : "{sharee} (קבוצה)",
+ "{sharee} (remote)" : "{sharee} (מרוחק)",
+ "{sharee} (email)" : "{sharee} (דוא״ל)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "ניתן לשתף אחרים על ידי הקלדת משתמש או קבוצה או מזהה ענן מאוגד או כתובת דוא״ל.",
"Share with other people by entering a user or group or a federated cloud ID." : "ניתן לשתף אחרים על ידי הקלדת משתמש או קבוצה או מזהה ענן מאוגד.",
"Share with other people by entering a user or group or an email address." : "ניתן לשתף עם אנשים אחרים על ידי הקלדת משתמש או קבוצה או כתובת דוא״ל.",
@@ -387,6 +386,7 @@
"Back to log in" : "חזרה לכניסה",
"You are about to grant %s access to your %s account." : "פעולה זו תעניק הרשאת %s לחשבון שלך ב־%s.",
"Depending on your configuration, this button could also work to trust the domain:" : "בהתאם לתצורה שלך, הכפתור הזה יכול לעבוד גם כדי לתת אמון בשם המתחם:",
+ "{sharee} (conversation)" : "{sharee} (דיון)",
"Please log in before granting %s access to your %s account." : "נא להיכנס בטרם מתן הרשאת %s לחשבון שלך ב־%s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "ניתן למצוא מידע נוסף כיצד להגדיר ב%sתיעוד%s."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
diff --git a/core/l10n/hu.js b/core/l10n/hu.js
index 6737eec479..641f78aefb 100644
--- a/core/l10n/hu.js
+++ b/core/l10n/hu.js
@@ -194,9 +194,6 @@ OC.L10N.register(
"No users found for {search}" : "{search} keresésre nem található felhasználó",
"An error occurred (\"{message}\"). Please try again" : "Hiba történt (\"{message}\"). Kérjük, próbálja meg újra! ",
"An error occurred. Please try again" : "Hiba történt. Kérjük, próbálja meg újra!",
- "{sharee} (group)" : "{sharee} (csoport)",
- "{sharee} (remote)" : "{sharee} (távoli)",
- "{sharee} (email)" : "{sharee} (e-mail)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Megosztás",
"Name or email address..." : "Név vagy e-mail cím...",
@@ -350,6 +347,9 @@ OC.L10N.register(
"Error setting expiration date" : "Nem sikerült a lejárati időt beállítani",
"The public link will expire no later than {days} days after it is created" : "A nyilvános hivatkozás érvényessége legkorábban {days} nappal a létrehozása után jár csak le",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} megosztva hivatkozással",
+ "{sharee} (group)" : "{sharee} (csoport)",
+ "{sharee} (remote)" : "{sharee} (távoli)",
+ "{sharee} (email)" : "{sharee} (e-mail)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Megosztás más emberekkel név vagy csoport, egy egységes felhőazonosító vagy e-mail cím megadásával.",
"Share with other people by entering a user or group or a federated cloud ID." : "Megosztás más emberekkel felhasználó, csoport vagy egyesített felhőazonosító megadásával.",
"Share with other people by entering a user or group or an email address." : "Megosztás más emberekkel név, csoport vagy e-mail cím megadásával.",
diff --git a/core/l10n/hu.json b/core/l10n/hu.json
index c464423151..37152e84b6 100644
--- a/core/l10n/hu.json
+++ b/core/l10n/hu.json
@@ -192,9 +192,6 @@
"No users found for {search}" : "{search} keresésre nem található felhasználó",
"An error occurred (\"{message}\"). Please try again" : "Hiba történt (\"{message}\"). Kérjük, próbálja meg újra! ",
"An error occurred. Please try again" : "Hiba történt. Kérjük, próbálja meg újra!",
- "{sharee} (group)" : "{sharee} (csoport)",
- "{sharee} (remote)" : "{sharee} (távoli)",
- "{sharee} (email)" : "{sharee} (e-mail)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Megosztás",
"Name or email address..." : "Név vagy e-mail cím...",
@@ -348,6 +345,9 @@
"Error setting expiration date" : "Nem sikerült a lejárati időt beállítani",
"The public link will expire no later than {days} days after it is created" : "A nyilvános hivatkozás érvényessége legkorábban {days} nappal a létrehozása után jár csak le",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} megosztva hivatkozással",
+ "{sharee} (group)" : "{sharee} (csoport)",
+ "{sharee} (remote)" : "{sharee} (távoli)",
+ "{sharee} (email)" : "{sharee} (e-mail)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Megosztás más emberekkel név vagy csoport, egy egységes felhőazonosító vagy e-mail cím megadásával.",
"Share with other people by entering a user or group or a federated cloud ID." : "Megosztás más emberekkel felhasználó, csoport vagy egyesített felhőazonosító megadásával.",
"Share with other people by entering a user or group or an email address." : "Megosztás más emberekkel név, csoport vagy e-mail cím megadásával.",
diff --git a/core/l10n/id.js b/core/l10n/id.js
index 66ac2c6cc5..db6412940a 100644
--- a/core/l10n/id.js
+++ b/core/l10n/id.js
@@ -119,9 +119,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "Tidak ada pengguna atau grup ditemukan untuk {search}",
"No users found for {search}" : "Tidak ada pengguna ditemukan untuk {search}",
"An error occurred. Please try again" : "Terjadi kesalahan. Silakan coba lagi",
- "{sharee} (group)" : "{sharee} (grup)",
- "{sharee} (remote)" : "{sharee} (remote)",
- "{sharee} (email)" : "{sharee} (surel)",
"Share" : "Bagikan",
"Error" : "Kesalahan",
"Error removing share" : "Terjadi kesalahan saat menghapus pembagian",
@@ -222,6 +219,9 @@ OC.L10N.register(
"Error setting expiration date" : "Kesalahan saat mengatur tanggal kedaluwarsa",
"The public link will expire no later than {days} days after it is created" : "Tautan publik akan kadaluarsa tidak lebih dari {days} hari setelah ini dibuat",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} dibagikan lewat tautan",
+ "{sharee} (group)" : "{sharee} (grup)",
+ "{sharee} (remote)" : "{sharee} (remote)",
+ "{sharee} (email)" : "{sharee} (surel)",
"The specified document has not been found on the server." : "Dokumen yang diminta tidak tersedia pada server.",
"You can click here to return to %s." : "Anda dapat klik disini unutk kembali ke %s.",
"Stay logged in" : "Tetap masuk",
diff --git a/core/l10n/id.json b/core/l10n/id.json
index 3fb08a344a..8435a76b3f 100644
--- a/core/l10n/id.json
+++ b/core/l10n/id.json
@@ -117,9 +117,6 @@
"No users or groups found for {search}" : "Tidak ada pengguna atau grup ditemukan untuk {search}",
"No users found for {search}" : "Tidak ada pengguna ditemukan untuk {search}",
"An error occurred. Please try again" : "Terjadi kesalahan. Silakan coba lagi",
- "{sharee} (group)" : "{sharee} (grup)",
- "{sharee} (remote)" : "{sharee} (remote)",
- "{sharee} (email)" : "{sharee} (surel)",
"Share" : "Bagikan",
"Error" : "Kesalahan",
"Error removing share" : "Terjadi kesalahan saat menghapus pembagian",
@@ -220,6 +217,9 @@
"Error setting expiration date" : "Kesalahan saat mengatur tanggal kedaluwarsa",
"The public link will expire no later than {days} days after it is created" : "Tautan publik akan kadaluarsa tidak lebih dari {days} hari setelah ini dibuat",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} dibagikan lewat tautan",
+ "{sharee} (group)" : "{sharee} (grup)",
+ "{sharee} (remote)" : "{sharee} (remote)",
+ "{sharee} (email)" : "{sharee} (surel)",
"The specified document has not been found on the server." : "Dokumen yang diminta tidak tersedia pada server.",
"You can click here to return to %s." : "Anda dapat klik disini unutk kembali ke %s.",
"Stay logged in" : "Tetap masuk",
diff --git a/core/l10n/is.js b/core/l10n/is.js
index 7f7d83e37c..0b0b26b723 100644
--- a/core/l10n/is.js
+++ b/core/l10n/is.js
@@ -204,12 +204,8 @@ OC.L10N.register(
"No users found for {search}" : "Engir notendur fundust með {search}",
"An error occurred (\"{message}\"). Please try again" : "Villa kom upp (\"{message}\"). Endilega reyndu aftur",
"An error occurred. Please try again" : "Villa kom upp. Endilega reyndu aftur",
- "{sharee} (group)" : "{sharee} (hópur)",
- "{sharee} (remote)" : "{sharee} (fjartengdur)",
"{sharee} (remote group)" : "{sharee} (fjartengdur hópur)",
- "{sharee} (email)" : "{sharee} (tölvupóstur)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (samtal)",
"Share" : "Deila",
"Name or email address..." : "Nafn eða tölvupóstfang...",
"Name or federated cloud ID..." : "Nafn eða skýjasambandsauðkenni (Federated Cloud ID)...",
@@ -372,6 +368,9 @@ OC.L10N.register(
"Error setting expiration date" : "Villa við að setja gildistíma",
"The public link will expire no later than {days} days after it is created" : "Almenningstengillinn rennur út eigi síðar en {days} dögum eftir að hann er útbúinn",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} deildi með tengli",
+ "{sharee} (group)" : "{sharee} (hópur)",
+ "{sharee} (remote)" : "{sharee} (fjartengdur)",
+ "{sharee} (email)" : "{sharee} (tölvupóstur)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Deildu með öðru fólki með því að setja inn notanda, hóp, skýjasambandsauðkenni eða tölvupóstfang.",
"Share with other people by entering a user or group or a federated cloud ID." : "Deildu með öðru fólki með því að setja inn notanda, hóp eða skýjasambandsauðkenni.",
"Share with other people by entering a user or group or an email address." : "Deildu með öðru fólki með því að setja inn notanda, hóp eða tölvupóstfang.",
@@ -403,6 +402,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Þú ert að fara að leyfa %s aðgang að %s notandaaðgangnum þínum.",
"Depending on your configuration, this button could also work to trust the domain:" : "Það fer eftir stillingunum þínum, þessi hnappur gæti einnig virkað til að treysta þessu léni.",
"Copy URL" : "Afrita slóð",
+ "{sharee} (conversation)" : "{sharee} (samtal)",
"Please log in before granting %s access to your %s account." : "Skráði þig inn áður en þú leyfir %s aðgang að %s notandaaðgangnum þínum.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Frekari upplýsingar um hvernig hægt er að stilla þetta má finna í %shjálparskjölunum%s."
},
diff --git a/core/l10n/is.json b/core/l10n/is.json
index a283760911..05092ee314 100644
--- a/core/l10n/is.json
+++ b/core/l10n/is.json
@@ -202,12 +202,8 @@
"No users found for {search}" : "Engir notendur fundust með {search}",
"An error occurred (\"{message}\"). Please try again" : "Villa kom upp (\"{message}\"). Endilega reyndu aftur",
"An error occurred. Please try again" : "Villa kom upp. Endilega reyndu aftur",
- "{sharee} (group)" : "{sharee} (hópur)",
- "{sharee} (remote)" : "{sharee} (fjartengdur)",
"{sharee} (remote group)" : "{sharee} (fjartengdur hópur)",
- "{sharee} (email)" : "{sharee} (tölvupóstur)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (samtal)",
"Share" : "Deila",
"Name or email address..." : "Nafn eða tölvupóstfang...",
"Name or federated cloud ID..." : "Nafn eða skýjasambandsauðkenni (Federated Cloud ID)...",
@@ -370,6 +366,9 @@
"Error setting expiration date" : "Villa við að setja gildistíma",
"The public link will expire no later than {days} days after it is created" : "Almenningstengillinn rennur út eigi síðar en {days} dögum eftir að hann er útbúinn",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} deildi með tengli",
+ "{sharee} (group)" : "{sharee} (hópur)",
+ "{sharee} (remote)" : "{sharee} (fjartengdur)",
+ "{sharee} (email)" : "{sharee} (tölvupóstur)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Deildu með öðru fólki með því að setja inn notanda, hóp, skýjasambandsauðkenni eða tölvupóstfang.",
"Share with other people by entering a user or group or a federated cloud ID." : "Deildu með öðru fólki með því að setja inn notanda, hóp eða skýjasambandsauðkenni.",
"Share with other people by entering a user or group or an email address." : "Deildu með öðru fólki með því að setja inn notanda, hóp eða tölvupóstfang.",
@@ -401,6 +400,7 @@
"You are about to grant %s access to your %s account." : "Þú ert að fara að leyfa %s aðgang að %s notandaaðgangnum þínum.",
"Depending on your configuration, this button could also work to trust the domain:" : "Það fer eftir stillingunum þínum, þessi hnappur gæti einnig virkað til að treysta þessu léni.",
"Copy URL" : "Afrita slóð",
+ "{sharee} (conversation)" : "{sharee} (samtal)",
"Please log in before granting %s access to your %s account." : "Skráði þig inn áður en þú leyfir %s aðgang að %s notandaaðgangnum þínum.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Frekari upplýsingar um hvernig hægt er að stilla þetta má finna í %shjálparskjölunum%s."
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
diff --git a/core/l10n/it.js b/core/l10n/it.js
index 28682cb778..0c502a1688 100644
--- a/core/l10n/it.js
+++ b/core/l10n/it.js
@@ -167,6 +167,7 @@ OC.L10N.register(
"Share to {name}" : "Condividi con {name}",
"Copy link" : "Copia collegamento",
"Link" : "Collegamento",
+ "Hide download" : "Nascondi scaricamento",
"Password protect" : "Proteggi con password",
"Allow editing" : "Consenti la modifica",
"Email link to person" : "Invia collegamento via email",
@@ -210,12 +211,10 @@ OC.L10N.register(
"No users found for {search}" : "Nessun utente trovato per {search}",
"An error occurred (\"{message}\"). Please try again" : "Si è verificato un errore (\"{message}\"). Prova ancora",
"An error occurred. Please try again" : "Si è verificato un errore. Prova ancora",
- "{sharee} (group)" : "{sharee} (group)",
- "{sharee} (remote)" : "{sharee} (remote)",
"{sharee} (remote group)" : "{sharee} (remote group)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (conversation)",
+ "Home" : "Home",
+ "Other" : "Altro",
"Share" : "Condividi",
"Name or email address..." : "Nome o indirizzo email...",
"Name or federated cloud ID..." : "Nome o ID di cloud federata...",
@@ -382,6 +381,9 @@ OC.L10N.register(
"Error setting expiration date" : "Errore durante l'impostazione della data di scadenza",
"The public link will expire no later than {days} days after it is created" : "Il collegamento pubblico scadrà non più tardi di {days} giorni dopo la sua creazione",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha condiviso tramite collegamento",
+ "{sharee} (group)" : "{sharee} (group)",
+ "{sharee} (remote)" : "{sharee} (remote)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Condividi con altre persone digitando un utente o un gruppo, un ID di cloud federata o un indirizzo di posta elettronica.",
"Share with other people by entering a user or group or a federated cloud ID." : "Condividi con altre persone digitando un utente, un gruppo o un ID di cloud federata.",
"Share with other people by entering a user or group or an email address." : "Condividi con altre persone digitando un utente, un gruppo o un indirizzo di posta elettronica.",
@@ -413,6 +415,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Stai per accordare a \"%s\" l'accesso al tuo account %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "In base alla tua configurazione, questo pulsante può funzionare anche per rendere attendibile il dominio:",
"Copy URL" : "Copia URL",
+ "{sharee} (conversation)" : "{sharee} (conversation)",
"Please log in before granting %s access to your %s account." : "Accedi prima di accordare a %s l'accesso al tuo account %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Ulteriori informazioni sulla configurazione sono disponibili nella %sdocumentazione%s."
},
diff --git a/core/l10n/it.json b/core/l10n/it.json
index 129e9471b6..e93e313727 100644
--- a/core/l10n/it.json
+++ b/core/l10n/it.json
@@ -165,6 +165,7 @@
"Share to {name}" : "Condividi con {name}",
"Copy link" : "Copia collegamento",
"Link" : "Collegamento",
+ "Hide download" : "Nascondi scaricamento",
"Password protect" : "Proteggi con password",
"Allow editing" : "Consenti la modifica",
"Email link to person" : "Invia collegamento via email",
@@ -208,12 +209,10 @@
"No users found for {search}" : "Nessun utente trovato per {search}",
"An error occurred (\"{message}\"). Please try again" : "Si è verificato un errore (\"{message}\"). Prova ancora",
"An error occurred. Please try again" : "Si è verificato un errore. Prova ancora",
- "{sharee} (group)" : "{sharee} (group)",
- "{sharee} (remote)" : "{sharee} (remote)",
"{sharee} (remote group)" : "{sharee} (remote group)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (conversation)",
+ "Home" : "Home",
+ "Other" : "Altro",
"Share" : "Condividi",
"Name or email address..." : "Nome o indirizzo email...",
"Name or federated cloud ID..." : "Nome o ID di cloud federata...",
@@ -380,6 +379,9 @@
"Error setting expiration date" : "Errore durante l'impostazione della data di scadenza",
"The public link will expire no later than {days} days after it is created" : "Il collegamento pubblico scadrà non più tardi di {days} giorni dopo la sua creazione",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} ha condiviso tramite collegamento",
+ "{sharee} (group)" : "{sharee} (group)",
+ "{sharee} (remote)" : "{sharee} (remote)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Condividi con altre persone digitando un utente o un gruppo, un ID di cloud federata o un indirizzo di posta elettronica.",
"Share with other people by entering a user or group or a federated cloud ID." : "Condividi con altre persone digitando un utente, un gruppo o un ID di cloud federata.",
"Share with other people by entering a user or group or an email address." : "Condividi con altre persone digitando un utente, un gruppo o un indirizzo di posta elettronica.",
@@ -411,6 +413,7 @@
"You are about to grant %s access to your %s account." : "Stai per accordare a \"%s\" l'accesso al tuo account %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "In base alla tua configurazione, questo pulsante può funzionare anche per rendere attendibile il dominio:",
"Copy URL" : "Copia URL",
+ "{sharee} (conversation)" : "{sharee} (conversation)",
"Please log in before granting %s access to your %s account." : "Accedi prima di accordare a %s l'accesso al tuo account %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Ulteriori informazioni sulla configurazione sono disponibili nella %sdocumentazione%s."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/core/l10n/ja.js b/core/l10n/ja.js
index c3eb3db054..668748296d 100644
--- a/core/l10n/ja.js
+++ b/core/l10n/ja.js
@@ -155,9 +155,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "{search} の検索でユーザー、グループが見つかりません",
"No users found for {search}" : "{search} のユーザーはいませんでした",
"An error occurred. Please try again" : "エラーが発生しました。もう一度実行してください。",
- "{sharee} (group)" : "{sharee} (グループ)",
- "{sharee} (remote)" : "{sharee} (リモート)",
- "{sharee} (email)" : "{sharee} (メール)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "共有",
"Name or email address..." : "名前またはメールアドレス",
@@ -281,6 +278,9 @@ OC.L10N.register(
"Error setting expiration date" : "有効期限の設定でエラー発生",
"The public link will expire no later than {days} days after it is created" : "URLによる共有は、作成してから {days} 日以内に有効期限切れになります",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} がリンク経由で共有",
+ "{sharee} (group)" : "{sharee} (グループ)",
+ "{sharee} (remote)" : "{sharee} (リモート)",
+ "{sharee} (email)" : "{sharee} (メール)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "ユーザー名、グループ、クラウド統合ID、メールアドレスで共有",
"Share with other people by entering a user or group or a federated cloud ID." : "ユーザー名、グループ、クラウド統合IDで共有",
"Share with other people by entering a user or group or an email address." : "ユーザー名やグループ名、メールアドレスで共有",
diff --git a/core/l10n/ja.json b/core/l10n/ja.json
index 1a290bfc64..b0819cbfc3 100644
--- a/core/l10n/ja.json
+++ b/core/l10n/ja.json
@@ -153,9 +153,6 @@
"No users or groups found for {search}" : "{search} の検索でユーザー、グループが見つかりません",
"No users found for {search}" : "{search} のユーザーはいませんでした",
"An error occurred. Please try again" : "エラーが発生しました。もう一度実行してください。",
- "{sharee} (group)" : "{sharee} (グループ)",
- "{sharee} (remote)" : "{sharee} (リモート)",
- "{sharee} (email)" : "{sharee} (メール)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "共有",
"Name or email address..." : "名前またはメールアドレス",
@@ -279,6 +276,9 @@
"Error setting expiration date" : "有効期限の設定でエラー発生",
"The public link will expire no later than {days} days after it is created" : "URLによる共有は、作成してから {days} 日以内に有効期限切れになります",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} がリンク経由で共有",
+ "{sharee} (group)" : "{sharee} (グループ)",
+ "{sharee} (remote)" : "{sharee} (リモート)",
+ "{sharee} (email)" : "{sharee} (メール)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "ユーザー名、グループ、クラウド統合ID、メールアドレスで共有",
"Share with other people by entering a user or group or a federated cloud ID." : "ユーザー名、グループ、クラウド統合IDで共有",
"Share with other people by entering a user or group or an email address." : "ユーザー名やグループ名、メールアドレスで共有",
diff --git a/core/l10n/ka_GE.js b/core/l10n/ka_GE.js
index c1b5a9c302..8b5b8a9ed6 100644
--- a/core/l10n/ka_GE.js
+++ b/core/l10n/ka_GE.js
@@ -169,9 +169,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "მომხმარებლები და ჯგუფები {search}-ისთვის არ იქნა ნაპოვნი",
"No users found for {search}" : "მომხმარებლები {search}-ისთვის არ იქნა ნაპოვნი",
"An error occurred. Please try again" : "წარმოიშვა შეცდომა. გთხოვთ სცადოთ ახლიდან.",
- "{sharee} (group)" : "{sharee} (ჯგუფი)",
- "{sharee} (remote)" : "{sharee} (დისტანციური)",
- "{sharee} (email)" : "{sharee} (ელ-ფოსტა)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "გაზიარება",
"Name or email address..." : "სახელი ან ელ-ფოსტის მისამართი...",
@@ -315,6 +312,9 @@ OC.L10N.register(
"Error setting expiration date" : "ვადის გასვლის მითითებისას წარმოიშვა შეცდომა",
"The public link will expire no later than {days} days after it is created" : "საზოგადო ბმული გაუქმედება შექმნის მომენტიდან {days} დღის შემდეგ",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} მომხმარებელმა გააზიარა ბმულით",
+ "{sharee} (group)" : "{sharee} (ჯგუფი)",
+ "{sharee} (remote)" : "{sharee} (დისტანციური)",
+ "{sharee} (email)" : "{sharee} (ელ-ფოსტა)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "გაუზიარეთ სხვა ადამიანებს მოხმარებლის, ჯგუფის, ფედერალური ქლაუდ ID-ის ან ელ-ფოსტის მისამართის შეყვანით.",
"Share with other people by entering a user or group or a federated cloud ID." : "გაუზიარეთ სხვა ადამიანებს, მომხმარებლის, ჯგუფის ან ფედერალური ქლაუდ ID-ის შეყვანით.",
"Share with other people by entering a user or group or an email address." : "გაუზიარეთ სხვა ადამიანებს მომხმარებლის, ჯგუფის ან ელ-ფოსტის მისამართის შეყვანით.",
diff --git a/core/l10n/ka_GE.json b/core/l10n/ka_GE.json
index f85e63cf77..2e2dff3d7b 100644
--- a/core/l10n/ka_GE.json
+++ b/core/l10n/ka_GE.json
@@ -167,9 +167,6 @@
"No users or groups found for {search}" : "მომხმარებლები და ჯგუფები {search}-ისთვის არ იქნა ნაპოვნი",
"No users found for {search}" : "მომხმარებლები {search}-ისთვის არ იქნა ნაპოვნი",
"An error occurred. Please try again" : "წარმოიშვა შეცდომა. გთხოვთ სცადოთ ახლიდან.",
- "{sharee} (group)" : "{sharee} (ჯგუფი)",
- "{sharee} (remote)" : "{sharee} (დისტანციური)",
- "{sharee} (email)" : "{sharee} (ელ-ფოსტა)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "გაზიარება",
"Name or email address..." : "სახელი ან ელ-ფოსტის მისამართი...",
@@ -313,6 +310,9 @@
"Error setting expiration date" : "ვადის გასვლის მითითებისას წარმოიშვა შეცდომა",
"The public link will expire no later than {days} days after it is created" : "საზოგადო ბმული გაუქმედება შექმნის მომენტიდან {days} დღის შემდეგ",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} მომხმარებელმა გააზიარა ბმულით",
+ "{sharee} (group)" : "{sharee} (ჯგუფი)",
+ "{sharee} (remote)" : "{sharee} (დისტანციური)",
+ "{sharee} (email)" : "{sharee} (ელ-ფოსტა)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "გაუზიარეთ სხვა ადამიანებს მოხმარებლის, ჯგუფის, ფედერალური ქლაუდ ID-ის ან ელ-ფოსტის მისამართის შეყვანით.",
"Share with other people by entering a user or group or a federated cloud ID." : "გაუზიარეთ სხვა ადამიანებს, მომხმარებლის, ჯგუფის ან ფედერალური ქლაუდ ID-ის შეყვანით.",
"Share with other people by entering a user or group or an email address." : "გაუზიარეთ სხვა ადამიანებს მომხმარებლის, ჯგუფის ან ელ-ფოსტის მისამართის შეყვანით.",
diff --git a/core/l10n/ko.js b/core/l10n/ko.js
index 3fb9985a83..be933a3af4 100644
--- a/core/l10n/ko.js
+++ b/core/l10n/ko.js
@@ -185,9 +185,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "{search} 사용자나 그룹을 찾을 수 없음",
"No users found for {search}" : "{search} 사용자를 찾을 수 없음",
"An error occurred. Please try again" : "오류가 발생했습니다. 다시 시도하십시오.",
- "{sharee} (group)" : "{sharee}(그룹)",
- "{sharee} (remote)" : "{sharee}(원격)",
- "{sharee} (email)" : "{sharee}(이메일)",
"{sharee} ({type}, {owner})" : "{sharee}({type}, {owner})",
"Share" : "공유",
"Name or email address..." : "이름이나 이메일 주소...",
@@ -331,6 +328,9 @@ OC.L10N.register(
"Error setting expiration date" : "만료 날짜 설정 오류",
"The public link will expire no later than {days} days after it is created" : "공개 링크를 만든 후 최대 {days}일까지 유지됩니다",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} 님이 링크를 통해 공유",
+ "{sharee} (group)" : "{sharee}(그룹)",
+ "{sharee} (remote)" : "{sharee}(원격)",
+ "{sharee} (email)" : "{sharee}(이메일)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "사용자나 그룹 이름, 연합 클라우드 ID 및 이메일 주소를 입력해서 다른 사람과 공유하십시오.",
"Share with other people by entering a user or group or a federated cloud ID." : "사용자나 그룹 이름, 연합 클라우드 ID를 입력해서 다른 사람과 공유하십시오.",
"Share with other people by entering a user or group or an email address." : "사용자나 그룹 이름 및 이메일 주소를 입력해서 다른 사람과 공유하십시오.",
diff --git a/core/l10n/ko.json b/core/l10n/ko.json
index 4168d836ff..abf5423811 100644
--- a/core/l10n/ko.json
+++ b/core/l10n/ko.json
@@ -183,9 +183,6 @@
"No users or groups found for {search}" : "{search} 사용자나 그룹을 찾을 수 없음",
"No users found for {search}" : "{search} 사용자를 찾을 수 없음",
"An error occurred. Please try again" : "오류가 발생했습니다. 다시 시도하십시오.",
- "{sharee} (group)" : "{sharee}(그룹)",
- "{sharee} (remote)" : "{sharee}(원격)",
- "{sharee} (email)" : "{sharee}(이메일)",
"{sharee} ({type}, {owner})" : "{sharee}({type}, {owner})",
"Share" : "공유",
"Name or email address..." : "이름이나 이메일 주소...",
@@ -329,6 +326,9 @@
"Error setting expiration date" : "만료 날짜 설정 오류",
"The public link will expire no later than {days} days after it is created" : "공개 링크를 만든 후 최대 {days}일까지 유지됩니다",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} 님이 링크를 통해 공유",
+ "{sharee} (group)" : "{sharee}(그룹)",
+ "{sharee} (remote)" : "{sharee}(원격)",
+ "{sharee} (email)" : "{sharee}(이메일)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "사용자나 그룹 이름, 연합 클라우드 ID 및 이메일 주소를 입력해서 다른 사람과 공유하십시오.",
"Share with other people by entering a user or group or a federated cloud ID." : "사용자나 그룹 이름, 연합 클라우드 ID를 입력해서 다른 사람과 공유하십시오.",
"Share with other people by entering a user or group or an email address." : "사용자나 그룹 이름 및 이메일 주소를 입력해서 다른 사람과 공유하십시오.",
diff --git a/core/l10n/lt_LT.js b/core/l10n/lt_LT.js
index b189c27103..cce116db61 100644
--- a/core/l10n/lt_LT.js
+++ b/core/l10n/lt_LT.js
@@ -156,9 +156,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "Nerasta vartotojų ar grupių pagal paieškos kriterijų: {search}",
"No users found for {search}" : "Nerasta vartotojų pagal paieškos kriterijų: {search}",
"An error occurred. Please try again" : "Įvyko klaida. Bandykite dar kartą",
- "{sharee} (group)" : "{sharee} (grupė)",
- "{sharee} (remote)" : "{sharee} (nuotolinis)",
- "{sharee} (email)" : "{sharee} (elektroninis paštas)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Dalintis",
"Name or email address..." : "Vardas arba elektroninio pašto adresas...",
@@ -283,6 +280,9 @@ OC.L10N.register(
"Error setting expiration date" : "Klaida nustatant dalinimosi pabaigos laiką",
"The public link will expire no later than {days} days after it is created" : "Nuoroda veiks ne mažiau kaip {days} dienas nuo sukūrimo",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} pasidalino per nuorodą",
+ "{sharee} (group)" : "{sharee} (grupė)",
+ "{sharee} (remote)" : "{sharee} (nuotolinis)",
+ "{sharee} (email)" : "{sharee} (elektroninis paštas)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą, NextCloud tinklo kompiuterio ID arba elektroninio pašto adresą.",
"Share with other people by entering a user or group or a federated cloud ID." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą arba NextCloud tinklo kompiuterio ID.",
"Share with other people by entering a user or group or an email address." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą arba elektroninio pašto adresą.",
diff --git a/core/l10n/lt_LT.json b/core/l10n/lt_LT.json
index 6206e0193c..8ab546d29e 100644
--- a/core/l10n/lt_LT.json
+++ b/core/l10n/lt_LT.json
@@ -154,9 +154,6 @@
"No users or groups found for {search}" : "Nerasta vartotojų ar grupių pagal paieškos kriterijų: {search}",
"No users found for {search}" : "Nerasta vartotojų pagal paieškos kriterijų: {search}",
"An error occurred. Please try again" : "Įvyko klaida. Bandykite dar kartą",
- "{sharee} (group)" : "{sharee} (grupė)",
- "{sharee} (remote)" : "{sharee} (nuotolinis)",
- "{sharee} (email)" : "{sharee} (elektroninis paštas)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Dalintis",
"Name or email address..." : "Vardas arba elektroninio pašto adresas...",
@@ -281,6 +278,9 @@
"Error setting expiration date" : "Klaida nustatant dalinimosi pabaigos laiką",
"The public link will expire no later than {days} days after it is created" : "Nuoroda veiks ne mažiau kaip {days} dienas nuo sukūrimo",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} pasidalino per nuorodą",
+ "{sharee} (group)" : "{sharee} (grupė)",
+ "{sharee} (remote)" : "{sharee} (nuotolinis)",
+ "{sharee} (email)" : "{sharee} (elektroninis paštas)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą, NextCloud tinklo kompiuterio ID arba elektroninio pašto adresą.",
"Share with other people by entering a user or group or a federated cloud ID." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą arba NextCloud tinklo kompiuterio ID.",
"Share with other people by entering a user or group or an email address." : "Pasidalinti su kitais asmenimis galima įvedus vartotojo ar grupės vardą arba elektroninio pašto adresą.",
diff --git a/core/l10n/lv.js b/core/l10n/lv.js
index 48e1297cc0..ea8322bea5 100644
--- a/core/l10n/lv.js
+++ b/core/l10n/lv.js
@@ -171,9 +171,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "Pēc {search} netika atrasts neviens lietotājs vai grupa",
"No users found for {search}" : "Pēc {search} netika atrasts neviens lietotājs",
"An error occurred. Please try again" : "Notika kļūda. Mēģini vēlreiz.",
- "{sharee} (group)" : "{sharee} (grupa)",
- "{sharee} (remote)" : "{sharee} (attālināti)",
- "{sharee} (email)" : "{sharee} (e-pasts)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Koplietot",
"Name or email address..." : "Vārds vai e-pasta adrese...",
@@ -297,6 +294,9 @@ OC.L10N.register(
"Error setting expiration date" : "Kļūda, iestatot termiņa datumu",
"The public link will expire no later than {days} days after it is created" : "Šis links beigs strādāt pēc ne vēlāk kā {days} dienām pēc tam kad tas tiks izveidots",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} koplietots ar saiti",
+ "{sharee} (group)" : "{sharee} (grupa)",
+ "{sharee} (remote)" : "{sharee} (attālināti)",
+ "{sharee} (email)" : "{sharee} (e-pasts)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu, federated cloud ID vai e-pasta adresi.",
"Share with other people by entering a user or group or a federated cloud ID." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai federated cloud ID.",
"Share with other people by entering a user or group or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai e-pasta adresi.",
diff --git a/core/l10n/lv.json b/core/l10n/lv.json
index 7745e88c50..397a6c93c6 100644
--- a/core/l10n/lv.json
+++ b/core/l10n/lv.json
@@ -169,9 +169,6 @@
"No users or groups found for {search}" : "Pēc {search} netika atrasts neviens lietotājs vai grupa",
"No users found for {search}" : "Pēc {search} netika atrasts neviens lietotājs",
"An error occurred. Please try again" : "Notika kļūda. Mēģini vēlreiz.",
- "{sharee} (group)" : "{sharee} (grupa)",
- "{sharee} (remote)" : "{sharee} (attālināti)",
- "{sharee} (email)" : "{sharee} (e-pasts)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Koplietot",
"Name or email address..." : "Vārds vai e-pasta adrese...",
@@ -295,6 +292,9 @@
"Error setting expiration date" : "Kļūda, iestatot termiņa datumu",
"The public link will expire no later than {days} days after it is created" : "Šis links beigs strādāt pēc ne vēlāk kā {days} dienām pēc tam kad tas tiks izveidots",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} koplietots ar saiti",
+ "{sharee} (group)" : "{sharee} (grupa)",
+ "{sharee} (remote)" : "{sharee} (attālināti)",
+ "{sharee} (email)" : "{sharee} (e-pasts)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu, federated cloud ID vai e-pasta adresi.",
"Share with other people by entering a user or group or a federated cloud ID." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai federated cloud ID.",
"Share with other people by entering a user or group or an email address." : "Dalīties ar citiem cilvēkiem ievadot lietotāju, grupu vai e-pasta adresi.",
diff --git a/core/l10n/nb.js b/core/l10n/nb.js
index b1785137d1..05659963e0 100644
--- a/core/l10n/nb.js
+++ b/core/l10n/nb.js
@@ -210,12 +210,8 @@ OC.L10N.register(
"No users found for {search}" : "Ingen brukere funnet for {search}",
"An error occurred (\"{message}\"). Please try again" : "En feil inntraff (\"{message}\"). Prøv igjen",
"An error occurred. Please try again" : "Det oppstod en feil. Prøv igjen",
- "{sharee} (group)" : "{sharee} (gruppe)",
- "{sharee} (remote)" : "{sharee} (ekstern)",
"{sharee} (remote group)" : "{sharee} (remote group)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (conversation)",
"Share" : "Del",
"Name or email address..." : "Navn eller e-postadresse…",
"Name or federated cloud ID..." : "Navn eller sammenknyttet sky-ID…",
@@ -382,6 +378,9 @@ OC.L10N.register(
"Error setting expiration date" : "Kan ikke sette utløpsdato",
"The public link will expire no later than {days} days after it is created" : "Den offentlige lenken vil utløpe senest {days} dager etter at den lages",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} delt via lenke",
+ "{sharee} (group)" : "{sharee} (gruppe)",
+ "{sharee} (remote)" : "{sharee} (ekstern)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Del med andre ved å skrive inn en bruker, en gruppe, en sammenknyttet sky-ID eller en e-postadresse.",
"Share with other people by entering a user or group or a federated cloud ID." : "Del med andre ved å skrive inn en bruker, en gruppe eller en sammenknyttet sky-ID",
"Share with other people by entering a user or group or an email address." : "Del med andre ved å skrive inn en bruker, en gruppe, eller en e-postadresse.",
@@ -413,6 +412,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Du er i ferd med å gi %s tilgang til din %s konto.",
"Depending on your configuration, this button could also work to trust the domain:" : "Avhengig av ditt oppsett, kan denne knappen også betro domenet.",
"Copy URL" : "Kopier URL",
+ "{sharee} (conversation)" : "{sharee} (conversation)",
"Please log in before granting %s access to your %s account." : "Logg inn før du innvilger %s tilgang til din %s konto.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Ytterligere informasjon om hvordan du konfigurerer dette kan du finne i %sdokumentasjon%s."
},
diff --git a/core/l10n/nb.json b/core/l10n/nb.json
index 704c3dc27f..75981eb1d7 100644
--- a/core/l10n/nb.json
+++ b/core/l10n/nb.json
@@ -208,12 +208,8 @@
"No users found for {search}" : "Ingen brukere funnet for {search}",
"An error occurred (\"{message}\"). Please try again" : "En feil inntraff (\"{message}\"). Prøv igjen",
"An error occurred. Please try again" : "Det oppstod en feil. Prøv igjen",
- "{sharee} (group)" : "{sharee} (gruppe)",
- "{sharee} (remote)" : "{sharee} (ekstern)",
"{sharee} (remote group)" : "{sharee} (remote group)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (conversation)",
"Share" : "Del",
"Name or email address..." : "Navn eller e-postadresse…",
"Name or federated cloud ID..." : "Navn eller sammenknyttet sky-ID…",
@@ -380,6 +376,9 @@
"Error setting expiration date" : "Kan ikke sette utløpsdato",
"The public link will expire no later than {days} days after it is created" : "Den offentlige lenken vil utløpe senest {days} dager etter at den lages",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} delt via lenke",
+ "{sharee} (group)" : "{sharee} (gruppe)",
+ "{sharee} (remote)" : "{sharee} (ekstern)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Del med andre ved å skrive inn en bruker, en gruppe, en sammenknyttet sky-ID eller en e-postadresse.",
"Share with other people by entering a user or group or a federated cloud ID." : "Del med andre ved å skrive inn en bruker, en gruppe eller en sammenknyttet sky-ID",
"Share with other people by entering a user or group or an email address." : "Del med andre ved å skrive inn en bruker, en gruppe, eller en e-postadresse.",
@@ -411,6 +410,7 @@
"You are about to grant %s access to your %s account." : "Du er i ferd med å gi %s tilgang til din %s konto.",
"Depending on your configuration, this button could also work to trust the domain:" : "Avhengig av ditt oppsett, kan denne knappen også betro domenet.",
"Copy URL" : "Kopier URL",
+ "{sharee} (conversation)" : "{sharee} (conversation)",
"Please log in before granting %s access to your %s account." : "Logg inn før du innvilger %s tilgang til din %s konto.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Ytterligere informasjon om hvordan du konfigurerer dette kan du finne i %sdokumentasjon%s."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/core/l10n/nl.js b/core/l10n/nl.js
index e79ab4ab6a..6296051f8d 100644
--- a/core/l10n/nl.js
+++ b/core/l10n/nl.js
@@ -210,12 +210,8 @@ OC.L10N.register(
"No users found for {search}" : "Geen gebruikers gevonden voor {search}",
"An error occurred (\"{message}\"). Please try again" : "Er heeft zich een fout voorgedaan (\"{message}\"). Probeer het opnieuw",
"An error occurred. Please try again" : "Er trad een fout op. Probeer het opnieuw",
- "{sharee} (group)" : "{sharee} (groep)",
- "{sharee} (remote)" : "{sharee} (extern)",
"{sharee} (remote group)" : "{sharee} (remote group)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (gesprek)",
"Share" : "Delen",
"Name or email address..." : "Naam of emailadres...",
"Name or federated cloud ID..." : "Naam of gefedereerd Cloud ID:",
@@ -382,6 +378,9 @@ OC.L10N.register(
"Error setting expiration date" : "Fout tijdens het instellen van de vervaldatum",
"The public link will expire no later than {days} days after it is created" : "De openbare link vervalt niet eerder dan {days} dagen na het aanmaken",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} delen via link",
+ "{sharee} (group)" : "{sharee} (groep)",
+ "{sharee} (remote)" : "{sharee} (extern)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Deel met anderen door het invullen van een gebruiker, groep, gefedereerd cloud ID of een emailadres.",
"Share with other people by entering a user or group or a federated cloud ID." : "Deel met anderen door middel van gebruikers, groep of een gefedereerd cloud ID.",
"Share with other people by entering a user or group or an email address." : "Deel met anderen door het invullen van een gebruiker, groep of een emailadres.",
@@ -413,6 +412,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Je staat op het punt om %s toegang te verlenen to je %s account.",
"Depending on your configuration, this button could also work to trust the domain:" : "Afhankelijk van je configuratie kan deze knop ook werken om het volgende domein te vertrouwen:",
"Copy URL" : "Kopiëren URL",
+ "{sharee} (conversation)" : "{sharee} (gesprek)",
"Please log in before granting %s access to your %s account." : "Log alsjeblieft in voordat je %s toegang geeft tot je %s account.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Verdere informatie over hoe je dit insteld staat in de %s documentatie %s."
},
diff --git a/core/l10n/nl.json b/core/l10n/nl.json
index f4b753fe01..ef3359e400 100644
--- a/core/l10n/nl.json
+++ b/core/l10n/nl.json
@@ -208,12 +208,8 @@
"No users found for {search}" : "Geen gebruikers gevonden voor {search}",
"An error occurred (\"{message}\"). Please try again" : "Er heeft zich een fout voorgedaan (\"{message}\"). Probeer het opnieuw",
"An error occurred. Please try again" : "Er trad een fout op. Probeer het opnieuw",
- "{sharee} (group)" : "{sharee} (groep)",
- "{sharee} (remote)" : "{sharee} (extern)",
"{sharee} (remote group)" : "{sharee} (remote group)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (gesprek)",
"Share" : "Delen",
"Name or email address..." : "Naam of emailadres...",
"Name or federated cloud ID..." : "Naam of gefedereerd Cloud ID:",
@@ -380,6 +376,9 @@
"Error setting expiration date" : "Fout tijdens het instellen van de vervaldatum",
"The public link will expire no later than {days} days after it is created" : "De openbare link vervalt niet eerder dan {days} dagen na het aanmaken",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} delen via link",
+ "{sharee} (group)" : "{sharee} (groep)",
+ "{sharee} (remote)" : "{sharee} (extern)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Deel met anderen door het invullen van een gebruiker, groep, gefedereerd cloud ID of een emailadres.",
"Share with other people by entering a user or group or a federated cloud ID." : "Deel met anderen door middel van gebruikers, groep of een gefedereerd cloud ID.",
"Share with other people by entering a user or group or an email address." : "Deel met anderen door het invullen van een gebruiker, groep of een emailadres.",
@@ -411,6 +410,7 @@
"You are about to grant %s access to your %s account." : "Je staat op het punt om %s toegang te verlenen to je %s account.",
"Depending on your configuration, this button could also work to trust the domain:" : "Afhankelijk van je configuratie kan deze knop ook werken om het volgende domein te vertrouwen:",
"Copy URL" : "Kopiëren URL",
+ "{sharee} (conversation)" : "{sharee} (gesprek)",
"Please log in before granting %s access to your %s account." : "Log alsjeblieft in voordat je %s toegang geeft tot je %s account.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Verdere informatie over hoe je dit insteld staat in de %s documentatie %s."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index c74cda973e..b4562c98aa 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -206,12 +206,8 @@ OC.L10N.register(
"No users found for {search}" : "Nie znaleziono użytkowników dla {search}",
"An error occurred (\"{message}\"). Please try again" : "Wystąpił błąd (\"{message}\"). Spróbuj ponownie",
"An error occurred. Please try again" : "Wystąpił błąd. Proszę spróbować ponownie.",
- "{sharee} (group)" : "{sharee} (grupa)",
- "{sharee} (remote)" : "{sharee} (zdalny)",
"{sharee} (remote group)" : "{sharee} (zdalna grupa)",
- "{sharee} (email)" : "{sharee} (e-mail)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (konwersacja)",
"Share" : "Udostępnij",
"Name or email address..." : "Nazwa lub adres e-mail…",
"Name or federated cloud ID..." : "Nazwa lub ID chmury stowarzyszonej…",
@@ -370,6 +366,9 @@ OC.L10N.register(
"Error setting expiration date" : "Błąd podczas ustawiania daty wygaśnięcia",
"The public link will expire no later than {days} days after it is created" : "Link publiczny wygaśnie nie później niż po {days} dniach od utworzenia",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} udostępniane za pośrednictwem łącza",
+ "{sharee} (group)" : "{sharee} (grupa)",
+ "{sharee} (remote)" : "{sharee} (zdalny)",
+ "{sharee} (email)" : "{sharee} (e-mail)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Współdziel z innymi osobami przez wpisanie użytkownika lub grupy, ID chmury stowarzyszonej lub adres e-mail.",
"Share with other people by entering a user or group or a federated cloud ID." : "Współdziel z innymi osobami przez wpisanie użytkownika lub grupy lub ID chmury stowarzyszonej.",
"Share with other people by entering a user or group or an email address." : "Współdziel z innymi osobami przez wpisanie użytkownika lub grupy lub adresu e-mail.",
@@ -401,6 +400,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Zamierzasz udzielić %s dostępu do Twojego konta %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "W zależności od Twojej konfiguracji, ten przycisk aby zaufać domenie powinien również zadziałać: ",
"Copy URL" : "Skopiuj URL",
+ "{sharee} (conversation)" : "{sharee} (konwersacja)",
"Please log in before granting %s access to your %s account." : "Zaloguj się aby udzielić %s dostępu do Twojego konta %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Więcej informacji o konfiguracji znajdziesz w %sdokumentacji%s."
},
diff --git a/core/l10n/pl.json b/core/l10n/pl.json
index f62f1ee31f..be0ea0f0d6 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -204,12 +204,8 @@
"No users found for {search}" : "Nie znaleziono użytkowników dla {search}",
"An error occurred (\"{message}\"). Please try again" : "Wystąpił błąd (\"{message}\"). Spróbuj ponownie",
"An error occurred. Please try again" : "Wystąpił błąd. Proszę spróbować ponownie.",
- "{sharee} (group)" : "{sharee} (grupa)",
- "{sharee} (remote)" : "{sharee} (zdalny)",
"{sharee} (remote group)" : "{sharee} (zdalna grupa)",
- "{sharee} (email)" : "{sharee} (e-mail)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (konwersacja)",
"Share" : "Udostępnij",
"Name or email address..." : "Nazwa lub adres e-mail…",
"Name or federated cloud ID..." : "Nazwa lub ID chmury stowarzyszonej…",
@@ -368,6 +364,9 @@
"Error setting expiration date" : "Błąd podczas ustawiania daty wygaśnięcia",
"The public link will expire no later than {days} days after it is created" : "Link publiczny wygaśnie nie później niż po {days} dniach od utworzenia",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} udostępniane za pośrednictwem łącza",
+ "{sharee} (group)" : "{sharee} (grupa)",
+ "{sharee} (remote)" : "{sharee} (zdalny)",
+ "{sharee} (email)" : "{sharee} (e-mail)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Współdziel z innymi osobami przez wpisanie użytkownika lub grupy, ID chmury stowarzyszonej lub adres e-mail.",
"Share with other people by entering a user or group or a federated cloud ID." : "Współdziel z innymi osobami przez wpisanie użytkownika lub grupy lub ID chmury stowarzyszonej.",
"Share with other people by entering a user or group or an email address." : "Współdziel z innymi osobami przez wpisanie użytkownika lub grupy lub adresu e-mail.",
@@ -399,6 +398,7 @@
"You are about to grant %s access to your %s account." : "Zamierzasz udzielić %s dostępu do Twojego konta %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "W zależności od Twojej konfiguracji, ten przycisk aby zaufać domenie powinien również zadziałać: ",
"Copy URL" : "Skopiuj URL",
+ "{sharee} (conversation)" : "{sharee} (konwersacja)",
"Please log in before granting %s access to your %s account." : "Zaloguj się aby udzielić %s dostępu do Twojego konta %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Więcej informacji o konfiguracji znajdziesz w %sdokumentacji%s."
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
diff --git a/core/l10n/pt_BR.js b/core/l10n/pt_BR.js
index a797647db5..db7a373647 100644
--- a/core/l10n/pt_BR.js
+++ b/core/l10n/pt_BR.js
@@ -167,6 +167,7 @@ OC.L10N.register(
"Share to {name}" : "Compartilhar com {name}",
"Copy link" : "Copiar link",
"Link" : "Link",
+ "Hide download" : "Ocultar download",
"Password protect" : "Proteger com senha",
"Allow editing" : "Permitir edição",
"Email link to person" : "Enviar link por e-mail",
@@ -210,12 +211,10 @@ OC.L10N.register(
"No users found for {search}" : "Nenhum usuário encontrado para {search}",
"An error occurred (\"{message}\"). Please try again" : "Ocorreu um erro (\"{message}\"). Tente novamente",
"An error occurred. Please try again" : "Ocorreu um erro. Tente novamente",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
"{sharee} (remote group)" : "{sharee} (grupo remoto)",
- "{sharee} (email)" : "{sharee} (e-mail)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (conversation)",
+ "Home" : "Home",
+ "Other" : "Outro",
"Share" : "Compartilhar",
"Name or email address..." : "Nome ou endereço de e-mail...",
"Name or federated cloud ID..." : "Nome ou ID de cloud federada...",
@@ -382,6 +381,9 @@ OC.L10N.register(
"Error setting expiration date" : "Erro ao definir data de expiração",
"The public link will expire no later than {days} days after it is created" : "O link público irá expirar não antes de {days} depois de criado",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatiorDisplayName}} compartilhou via link",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (e-mail)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Compartilhe com outras pessoas entrando um usuário, grupo, ID de cloud federada ou um e-mail.",
"Share with other people by entering a user or group or a federated cloud ID." : "Compartilhe com outras pessoas entrando um usuário, grupo ou ID de nuvem federada.",
"Share with other people by entering a user or group or an email address." : "Compartilhe com outras pessoas entrando um usuário, grupo ou um e-mail.",
@@ -413,6 +415,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Você está prestes a conceder acesso a %s à sua conta %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "Dependendo de sua configuração, este botão também pode funcionar para confiar no domínio.",
"Copy URL" : "Copiar URL",
+ "{sharee} (conversation)" : "{sharee} (conversation)",
"Please log in before granting %s access to your %s account." : " Por favor, faça o login antes de conceder %s acesso à sua %s conta.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Mais informações sobre configuração podem ser encontradas na %sdocumentação%s."
},
diff --git a/core/l10n/pt_BR.json b/core/l10n/pt_BR.json
index 319e736852..99330296c3 100644
--- a/core/l10n/pt_BR.json
+++ b/core/l10n/pt_BR.json
@@ -165,6 +165,7 @@
"Share to {name}" : "Compartilhar com {name}",
"Copy link" : "Copiar link",
"Link" : "Link",
+ "Hide download" : "Ocultar download",
"Password protect" : "Proteger com senha",
"Allow editing" : "Permitir edição",
"Email link to person" : "Enviar link por e-mail",
@@ -208,12 +209,10 @@
"No users found for {search}" : "Nenhum usuário encontrado para {search}",
"An error occurred (\"{message}\"). Please try again" : "Ocorreu um erro (\"{message}\"). Tente novamente",
"An error occurred. Please try again" : "Ocorreu um erro. Tente novamente",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
"{sharee} (remote group)" : "{sharee} (grupo remoto)",
- "{sharee} (email)" : "{sharee} (e-mail)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (conversation)",
+ "Home" : "Home",
+ "Other" : "Outro",
"Share" : "Compartilhar",
"Name or email address..." : "Nome ou endereço de e-mail...",
"Name or federated cloud ID..." : "Nome ou ID de cloud federada...",
@@ -380,6 +379,9 @@
"Error setting expiration date" : "Erro ao definir data de expiração",
"The public link will expire no later than {days} days after it is created" : "O link público irá expirar não antes de {days} depois de criado",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatiorDisplayName}} compartilhou via link",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (e-mail)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Compartilhe com outras pessoas entrando um usuário, grupo, ID de cloud federada ou um e-mail.",
"Share with other people by entering a user or group or a federated cloud ID." : "Compartilhe com outras pessoas entrando um usuário, grupo ou ID de nuvem federada.",
"Share with other people by entering a user or group or an email address." : "Compartilhe com outras pessoas entrando um usuário, grupo ou um e-mail.",
@@ -411,6 +413,7 @@
"You are about to grant %s access to your %s account." : "Você está prestes a conceder acesso a %s à sua conta %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "Dependendo de sua configuração, este botão também pode funcionar para confiar no domínio.",
"Copy URL" : "Copiar URL",
+ "{sharee} (conversation)" : "{sharee} (conversation)",
"Please log in before granting %s access to your %s account." : " Por favor, faça o login antes de conceder %s acesso à sua %s conta.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Mais informações sobre configuração podem ser encontradas na %sdocumentação%s."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
diff --git a/core/l10n/pt_PT.js b/core/l10n/pt_PT.js
index 5e6ca82b37..5328b26d40 100644
--- a/core/l10n/pt_PT.js
+++ b/core/l10n/pt_PT.js
@@ -169,9 +169,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "Não foram encontrados nenhuns utilizadores ou grupos para {search}",
"No users found for {search}" : "Não foram encontrados utilizadores para {search}",
"An error occurred. Please try again" : "Ocorreu um erro. Por favor, tente de novo.",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Partilhar",
"Name or email address..." : "Nome ou endereço de email...",
@@ -315,6 +312,9 @@ OC.L10N.register(
"Error setting expiration date" : "Erro ao definir a data de expiração",
"The public link will expire no later than {days} days after it is created" : "A hiperligação pública irá expirar, o mais tardar {days} dias depois da sua criação",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} partilhado via ligação",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Partilhar com terceiros introduzindo um nome de utilizador ou grupo, um identificador de federação ou um endereço de e-mail.",
"Share with other people by entering a user or group or a federated cloud ID." : "Partilhar com terceiros introduzindo um nome de utilizador ou grupo, um ID de cloud federada ou um endereço de e-mail.",
"Share with other people by entering a user or group or an email address." : "Partilhar com terceiros introduzindo um nome de utilizador ou grupo ou um endereço de e-mail.",
diff --git a/core/l10n/pt_PT.json b/core/l10n/pt_PT.json
index 994cad2f5c..1ff0eabc99 100644
--- a/core/l10n/pt_PT.json
+++ b/core/l10n/pt_PT.json
@@ -167,9 +167,6 @@
"No users or groups found for {search}" : "Não foram encontrados nenhuns utilizadores ou grupos para {search}",
"No users found for {search}" : "Não foram encontrados utilizadores para {search}",
"An error occurred. Please try again" : "Ocorreu um erro. Por favor, tente de novo.",
- "{sharee} (group)" : "{sharee} (grupo)",
- "{sharee} (remote)" : "{sharee} (remoto)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Partilhar",
"Name or email address..." : "Nome ou endereço de email...",
@@ -313,6 +310,9 @@
"Error setting expiration date" : "Erro ao definir a data de expiração",
"The public link will expire no later than {days} days after it is created" : "A hiperligação pública irá expirar, o mais tardar {days} dias depois da sua criação",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} partilhado via ligação",
+ "{sharee} (group)" : "{sharee} (grupo)",
+ "{sharee} (remote)" : "{sharee} (remoto)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Partilhar com terceiros introduzindo um nome de utilizador ou grupo, um identificador de federação ou um endereço de e-mail.",
"Share with other people by entering a user or group or a federated cloud ID." : "Partilhar com terceiros introduzindo um nome de utilizador ou grupo, um ID de cloud federada ou um endereço de e-mail.",
"Share with other people by entering a user or group or an email address." : "Partilhar com terceiros introduzindo um nome de utilizador ou grupo ou um endereço de e-mail.",
diff --git a/core/l10n/ro.js b/core/l10n/ro.js
index aa63b37960..de217f61e3 100644
--- a/core/l10n/ro.js
+++ b/core/l10n/ro.js
@@ -150,9 +150,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "Nu au fost găsiți utilizatori sau grupuri pentru {search}",
"No users found for {search}" : "Nu au fost găsiți utilizatori pentru {search}",
"An error occurred. Please try again" : "A apărut o eroare. Încearcă din nou",
- "{sharee} (group)" : "{sharee} (grup)",
- "{sharee} (remote)" : "{sharee} (distanță)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Partajează",
"Name or email address..." : "Nume sau adresă de email...",
@@ -272,6 +269,9 @@ OC.L10N.register(
"Error setting expiration date" : "Eroare la specificarea datei de expirare",
"The public link will expire no later than {days} days after it is created" : "Legătura publică va expira nu mai târziu de {days} zile de la ziua creării",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} partajat prin legătura",
+ "{sharee} (group)" : "{sharee} (grup)",
+ "{sharee} (remote)" : "{sharee} (distanță)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Partajează cu alte persoane prin introducerea unui utilizator sau grup, a unui ID de cloud federalizat sau a unei adrese de email.",
"Share with other people by entering a user or group or a federated cloud ID." : "Partajează cu alte persoane prin introducerea unui utilizator sau grup sau a unui ID de cloud federalizat.",
"Share with other people by entering a user or group or an email address." : "Partajează cu alte persoane prin introducerea unui utilizator sau grup sau a unei adrese de email.",
diff --git a/core/l10n/ro.json b/core/l10n/ro.json
index f6fac2234f..d1d457aaab 100644
--- a/core/l10n/ro.json
+++ b/core/l10n/ro.json
@@ -148,9 +148,6 @@
"No users or groups found for {search}" : "Nu au fost găsiți utilizatori sau grupuri pentru {search}",
"No users found for {search}" : "Nu au fost găsiți utilizatori pentru {search}",
"An error occurred. Please try again" : "A apărut o eroare. Încearcă din nou",
- "{sharee} (group)" : "{sharee} (grup)",
- "{sharee} (remote)" : "{sharee} (distanță)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Partajează",
"Name or email address..." : "Nume sau adresă de email...",
@@ -270,6 +267,9 @@
"Error setting expiration date" : "Eroare la specificarea datei de expirare",
"The public link will expire no later than {days} days after it is created" : "Legătura publică va expira nu mai târziu de {days} zile de la ziua creării",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} partajat prin legătura",
+ "{sharee} (group)" : "{sharee} (grup)",
+ "{sharee} (remote)" : "{sharee} (distanță)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Partajează cu alte persoane prin introducerea unui utilizator sau grup, a unui ID de cloud federalizat sau a unei adrese de email.",
"Share with other people by entering a user or group or a federated cloud ID." : "Partajează cu alte persoane prin introducerea unui utilizator sau grup sau a unui ID de cloud federalizat.",
"Share with other people by entering a user or group or an email address." : "Partajează cu alte persoane prin introducerea unui utilizator sau grup sau a unei adrese de email.",
diff --git a/core/l10n/ru.js b/core/l10n/ru.js
index 5af259d99d..a8e2f077b7 100644
--- a/core/l10n/ru.js
+++ b/core/l10n/ru.js
@@ -210,12 +210,8 @@ OC.L10N.register(
"No users found for {search}" : "Не найдено пользователей по запросу {search}",
"An error occurred (\"{message}\"). Please try again" : "Произошла ошибка («{message}»). Попробуйте ещё раз",
"An error occurred. Please try again" : "Произошла ошибка. Попробуйте ещё раз",
- "{sharee} (group)" : "{sharee} (группа)",
- "{sharee} (remote)" : "{sharee} (на другом сервере)",
"{sharee} (remote group)" : "{sharee} (группа на другом сервере)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (разговор)",
"Share" : "Поделиться",
"Name or email address..." : "Имя или адрес email…",
"Name or federated cloud ID..." : "Имя или ID межсерверного обмена…",
@@ -380,6 +376,9 @@ OC.L10N.register(
"Error setting expiration date" : "Ошибка при установке срока доступа",
"The public link will expire no later than {days} days after it is created" : "Срок действия общедоступной ссылки истекает не позже чем через {days} дней после её создания",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} предоставил(а) доступ созданием ссылки",
+ "{sharee} (group)" : "{sharee} (группа)",
+ "{sharee} (remote)" : "{sharee} (на другом сервере)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Поделиться, указав имя пользователя или группы, ID межсерверного обмена хранилища или адрес эл. почты.",
"Share with other people by entering a user or group or a federated cloud ID." : "Поделиться, указав имя пользователя или группы или ID межсерверного обмена.",
"Share with other people by entering a user or group or an email address." : "Поделиться, указав имя пользователя или группы, либо адрес email.",
@@ -411,6 +410,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Вы собираетесь предоставить пользователю %s доступ к вашему аккаунту %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "В зависимости от конфигурации, эта кнопка может сделать доверенным следующий домен:",
"Copy URL" : "Копировать ссылку",
+ "{sharee} (conversation)" : "{sharee} (разговор)",
"Please log in before granting %s access to your %s account." : "Пожалуйста, авторизуйтесь до того, как предоставить пользователю %s доступ к вашей учётной записи %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Более подробная информация о том, как это сконфигурировать, может быть найдена в %sдокументации%s."
},
diff --git a/core/l10n/ru.json b/core/l10n/ru.json
index da774c5ee8..637b110e59 100644
--- a/core/l10n/ru.json
+++ b/core/l10n/ru.json
@@ -208,12 +208,8 @@
"No users found for {search}" : "Не найдено пользователей по запросу {search}",
"An error occurred (\"{message}\"). Please try again" : "Произошла ошибка («{message}»). Попробуйте ещё раз",
"An error occurred. Please try again" : "Произошла ошибка. Попробуйте ещё раз",
- "{sharee} (group)" : "{sharee} (группа)",
- "{sharee} (remote)" : "{sharee} (на другом сервере)",
"{sharee} (remote group)" : "{sharee} (группа на другом сервере)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (разговор)",
"Share" : "Поделиться",
"Name or email address..." : "Имя или адрес email…",
"Name or federated cloud ID..." : "Имя или ID межсерверного обмена…",
@@ -378,6 +374,9 @@
"Error setting expiration date" : "Ошибка при установке срока доступа",
"The public link will expire no later than {days} days after it is created" : "Срок действия общедоступной ссылки истекает не позже чем через {days} дней после её создания",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} предоставил(а) доступ созданием ссылки",
+ "{sharee} (group)" : "{sharee} (группа)",
+ "{sharee} (remote)" : "{sharee} (на другом сервере)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Поделиться, указав имя пользователя или группы, ID межсерверного обмена хранилища или адрес эл. почты.",
"Share with other people by entering a user or group or a federated cloud ID." : "Поделиться, указав имя пользователя или группы или ID межсерверного обмена.",
"Share with other people by entering a user or group or an email address." : "Поделиться, указав имя пользователя или группы, либо адрес email.",
@@ -409,6 +408,7 @@
"You are about to grant %s access to your %s account." : "Вы собираетесь предоставить пользователю %s доступ к вашему аккаунту %s.",
"Depending on your configuration, this button could also work to trust the domain:" : "В зависимости от конфигурации, эта кнопка может сделать доверенным следующий домен:",
"Copy URL" : "Копировать ссылку",
+ "{sharee} (conversation)" : "{sharee} (разговор)",
"Please log in before granting %s access to your %s account." : "Пожалуйста, авторизуйтесь до того, как предоставить пользователю %s доступ к вашей учётной записи %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Более подробная информация о том, как это сконфигурировать, может быть найдена в %sдокументации%s."
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
diff --git a/core/l10n/sk.js b/core/l10n/sk.js
index 9a66d5e379..d4e68d0216 100644
--- a/core/l10n/sk.js
+++ b/core/l10n/sk.js
@@ -210,12 +210,8 @@ OC.L10N.register(
"No users found for {search}" : "Výrazu {search} nezodpovedá žiadny používateľ",
"An error occurred (\"{message}\"). Please try again" : "Nastala chyba (\"{message}\"). Prosím, skúste znova",
"An error occurred. Please try again" : "Nastala chyba. Skúste to prosím znovu",
- "{sharee} (group)" : "{sharee} (skupina)",
- "{sharee} (remote)" : "{sharee} (vzdialene)",
"{sharee} (remote group)" : "{sharee} (vzdialená skupina)",
- "{sharee} (email)" : "{sharee} (pošta)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (rozhovor)",
"Share" : "Sprístupniť",
"Name or email address..." : "Meno alebo e-mailová adresa...",
"Name or federated cloud ID..." : "Meno alebo federatívny cloud ID...",
@@ -382,6 +378,9 @@ OC.L10N.register(
"Error setting expiration date" : "Chyba pri nastavení dátumu expirácie",
"The public link will expire no later than {days} days after it is created" : "Verejný odkaz nevyprší skôr než za {days} dní po vytvorení",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} zdieľal pomocou odkazu",
+ "{sharee} (group)" : "{sharee} (skupina)",
+ "{sharee} (remote)" : "{sharee} (vzdialene)",
+ "{sharee} (email)" : "{sharee} (pošta)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Sprístupniť iným ľuďom zadaním používateľa alebo skupiny, federatívneho cloud ID alebo e-mailovej adresy.",
"Share with other people by entering a user or group or a federated cloud ID." : "Sprístupniť iným ľuďom zadaním používateľa alebo skupiny, federatívneho cloud ID.",
"Share with other people by entering a user or group or an email address." : "Sprístupniť iným ľuďom zadaním používateľa, skupiny alebo e-mailovej adresy.",
@@ -413,6 +412,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Chystáte sa udeliť %s prístup k svojmu %s účtu.",
"Depending on your configuration, this button could also work to trust the domain:" : "V závislosti od vašej konfigurácie by toto tlačidlo mohlo fungovať tak, že dôverujete doméne:",
"Copy URL" : "Kopírovať URL",
+ "{sharee} (conversation)" : "{sharee} (rozhovor)",
"Please log in before granting %s access to your %s account." : "Skôr než udelíte prístup pre %s do vášho účtu %s je potrebné sa prihlásiť.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Viac informácií o konfigurácii je možné nájsť v %sdokumentácii%s."
},
diff --git a/core/l10n/sk.json b/core/l10n/sk.json
index d6c8611002..12cfddd988 100644
--- a/core/l10n/sk.json
+++ b/core/l10n/sk.json
@@ -208,12 +208,8 @@
"No users found for {search}" : "Výrazu {search} nezodpovedá žiadny používateľ",
"An error occurred (\"{message}\"). Please try again" : "Nastala chyba (\"{message}\"). Prosím, skúste znova",
"An error occurred. Please try again" : "Nastala chyba. Skúste to prosím znovu",
- "{sharee} (group)" : "{sharee} (skupina)",
- "{sharee} (remote)" : "{sharee} (vzdialene)",
"{sharee} (remote group)" : "{sharee} (vzdialená skupina)",
- "{sharee} (email)" : "{sharee} (pošta)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (rozhovor)",
"Share" : "Sprístupniť",
"Name or email address..." : "Meno alebo e-mailová adresa...",
"Name or federated cloud ID..." : "Meno alebo federatívny cloud ID...",
@@ -380,6 +376,9 @@
"Error setting expiration date" : "Chyba pri nastavení dátumu expirácie",
"The public link will expire no later than {days} days after it is created" : "Verejný odkaz nevyprší skôr než za {days} dní po vytvorení",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} zdieľal pomocou odkazu",
+ "{sharee} (group)" : "{sharee} (skupina)",
+ "{sharee} (remote)" : "{sharee} (vzdialene)",
+ "{sharee} (email)" : "{sharee} (pošta)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Sprístupniť iným ľuďom zadaním používateľa alebo skupiny, federatívneho cloud ID alebo e-mailovej adresy.",
"Share with other people by entering a user or group or a federated cloud ID." : "Sprístupniť iným ľuďom zadaním používateľa alebo skupiny, federatívneho cloud ID.",
"Share with other people by entering a user or group or an email address." : "Sprístupniť iným ľuďom zadaním používateľa, skupiny alebo e-mailovej adresy.",
@@ -411,6 +410,7 @@
"You are about to grant %s access to your %s account." : "Chystáte sa udeliť %s prístup k svojmu %s účtu.",
"Depending on your configuration, this button could also work to trust the domain:" : "V závislosti od vašej konfigurácie by toto tlačidlo mohlo fungovať tak, že dôverujete doméne:",
"Copy URL" : "Kopírovať URL",
+ "{sharee} (conversation)" : "{sharee} (rozhovor)",
"Please log in before granting %s access to your %s account." : "Skôr než udelíte prístup pre %s do vášho účtu %s je potrebné sa prihlásiť.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Viac informácií o konfigurácii je možné nájsť v %sdokumentácii%s."
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
diff --git a/core/l10n/sl.js b/core/l10n/sl.js
index 1a6bf3a645..0b8772f9b2 100644
--- a/core/l10n/sl.js
+++ b/core/l10n/sl.js
@@ -152,9 +152,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "Ni najdenih uporabnikov ali skupin za {search}",
"No users found for {search}" : "Ni uporabnikov, skladnih z iskalnim nizom {search}",
"An error occurred. Please try again" : "Prišlo je do napake. Poskusite znova.",
- "{sharee} (group)" : "{sharee} (skupina)",
- "{sharee} (remote)" : "{sharee} (oddaljeno)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Souporaba",
"Name or email address..." : "Ime ali e-poštni naslov...",
@@ -265,6 +262,9 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Datoteka \"%s\" je posodobljena na %s",
"Error setting expiration date" : "Napaka nastavljanja datuma preteka",
"The public link will expire no later than {days} days after it is created" : "Javna povezava bo potekla {days} dni po ustvarjanju.",
+ "{sharee} (group)" : "{sharee} (skupina)",
+ "{sharee} (remote)" : "{sharee} (oddaljeno)",
+ "{sharee} (email)" : "{sharee} (email)",
"The specified document has not been found on the server." : "Določenega dokumenta na strežniku ni mogoče najti.",
"You can click here to return to %s." : "S klikom na povezavo boste vrnjeni na %s.",
"Wrong password. Reset it?" : "Napačno geslo. Ali ga želite ponastaviti?",
diff --git a/core/l10n/sl.json b/core/l10n/sl.json
index 15ffbd5671..662667a7dd 100644
--- a/core/l10n/sl.json
+++ b/core/l10n/sl.json
@@ -150,9 +150,6 @@
"No users or groups found for {search}" : "Ni najdenih uporabnikov ali skupin za {search}",
"No users found for {search}" : "Ni uporabnikov, skladnih z iskalnim nizom {search}",
"An error occurred. Please try again" : "Prišlo je do napake. Poskusite znova.",
- "{sharee} (group)" : "{sharee} (skupina)",
- "{sharee} (remote)" : "{sharee} (oddaljeno)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Souporaba",
"Name or email address..." : "Ime ali e-poštni naslov...",
@@ -263,6 +260,9 @@
"Updated \"%s\" to %s" : "Datoteka \"%s\" je posodobljena na %s",
"Error setting expiration date" : "Napaka nastavljanja datuma preteka",
"The public link will expire no later than {days} days after it is created" : "Javna povezava bo potekla {days} dni po ustvarjanju.",
+ "{sharee} (group)" : "{sharee} (skupina)",
+ "{sharee} (remote)" : "{sharee} (oddaljeno)",
+ "{sharee} (email)" : "{sharee} (email)",
"The specified document has not been found on the server." : "Določenega dokumenta na strežniku ni mogoče najti.",
"You can click here to return to %s." : "S klikom na povezavo boste vrnjeni na %s.",
"Wrong password. Reset it?" : "Napačno geslo. Ali ga želite ponastaviti?",
diff --git a/core/l10n/sq.js b/core/l10n/sq.js
index f67d4ff464..1375211f79 100644
--- a/core/l10n/sq.js
+++ b/core/l10n/sq.js
@@ -153,9 +153,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "S’u gjetën përdorues ose grupe për {search}",
"No users found for {search}" : "S’u gjet përdorues për {search}",
"An error occurred. Please try again" : "Ndodhi një gabim. Ju lutemi, riprovoni",
- "{sharee} (group)" : "{sharee} (grup)",
- "{sharee} (remote)" : "{sharee} (i largët)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Ndaje",
"Name or email address..." : "Emri ose adresa e email-it",
@@ -277,6 +274,9 @@ OC.L10N.register(
"Error setting expiration date" : "Gabim në caktimin e datës së skadimit",
"The public link will expire no later than {days} days after it is created" : "Lidhja publike do të skadojë jo më vonë se {days} ditë pas krijimit të saj",
"{{shareInitiatorDisplayName}} shared via link" : "{{shpërndaEmrinEShfaqurTëNismëtarit}} shpërnda nëpërmjet linkut",
+ "{sharee} (group)" : "{sharee} (grup)",
+ "{sharee} (remote)" : "{sharee} (i largët)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Shpërndaje me persona të tjerë duke vendosur një përdorues ose një grup, një ID reje të federuar ose një adresë emaili",
"Share with other people by entering a user or group or a federated cloud ID." : "Ndaj me njerëz të tjerë duke futur një pëdorues ose grup ose një ID reje federale.",
"Share with other people by entering a user or group or an email address." : "Shpërndaje me persona të tjerë duke vendosur një perdorues ose një grup ose një adresë emaili",
diff --git a/core/l10n/sq.json b/core/l10n/sq.json
index 216537139b..0085599091 100644
--- a/core/l10n/sq.json
+++ b/core/l10n/sq.json
@@ -151,9 +151,6 @@
"No users or groups found for {search}" : "S’u gjetën përdorues ose grupe për {search}",
"No users found for {search}" : "S’u gjet përdorues për {search}",
"An error occurred. Please try again" : "Ndodhi një gabim. Ju lutemi, riprovoni",
- "{sharee} (group)" : "{sharee} (grup)",
- "{sharee} (remote)" : "{sharee} (i largët)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Ndaje",
"Name or email address..." : "Emri ose adresa e email-it",
@@ -275,6 +272,9 @@
"Error setting expiration date" : "Gabim në caktimin e datës së skadimit",
"The public link will expire no later than {days} days after it is created" : "Lidhja publike do të skadojë jo më vonë se {days} ditë pas krijimit të saj",
"{{shareInitiatorDisplayName}} shared via link" : "{{shpërndaEmrinEShfaqurTëNismëtarit}} shpërnda nëpërmjet linkut",
+ "{sharee} (group)" : "{sharee} (grup)",
+ "{sharee} (remote)" : "{sharee} (i largët)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Shpërndaje me persona të tjerë duke vendosur një përdorues ose një grup, një ID reje të federuar ose një adresë emaili",
"Share with other people by entering a user or group or a federated cloud ID." : "Ndaj me njerëz të tjerë duke futur një pëdorues ose grup ose një ID reje federale.",
"Share with other people by entering a user or group or an email address." : "Shpërndaje me persona të tjerë duke vendosur një perdorues ose një grup ose një adresë emaili",
diff --git a/core/l10n/sr.js b/core/l10n/sr.js
index 1d371ee480..6302fb88b7 100644
--- a/core/l10n/sr.js
+++ b/core/l10n/sr.js
@@ -210,12 +210,8 @@ OC.L10N.register(
"No users found for {search}" : "Није нађен ниједан корисник за претрагу {search}",
"An error occurred (\"{message}\"). Please try again" : "Десила се грешка (\"{message}\"). Покушајте поново.",
"An error occurred. Please try again" : "Дошло је до грешке. Покушајте поново",
- "{sharee} (group)" : "{sharee} (група)",
- "{sharee} (remote)" : "{sharee} (удаљено)",
"{sharee} (remote group)" : "{sharee} (удаљена група)",
- "{sharee} (email)" : "{sharee} (е-пошта)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (разговор)",
"Share" : "Дели",
"Name or email address..." : "Име или адреса е-поште...",
"Name or federated cloud ID..." : "Име или ID здруженог облака...",
@@ -382,6 +378,9 @@ OC.L10N.register(
"Error setting expiration date" : "Грешка при постављању датума истека",
"The public link will expire no later than {days} days after it is created" : "Јавна веза ће престати да важи {days} дана након стварања",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} је поделио преко везе",
+ "{sharee} (group)" : "{sharee} (група)",
+ "{sharee} (remote)" : "{sharee} (удаљено)",
+ "{sharee} (email)" : "{sharee} (е-пошта)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Делите са другим људима тако што унесете корисника, групу, ID здруженог облака или адресу е-поште. ",
"Share with other people by entering a user or group or a federated cloud ID." : "Делите са другим људима тако што унесете корисника, групу или ID здруженог облака.",
"Share with other people by entering a user or group or an email address." : "Делите са другим људима тако што унесете корисника или групу.",
@@ -413,6 +412,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "Управо ћете одобрити %s приступ Вашем %s налогу.",
"Depending on your configuration, this button could also work to trust the domain:" : "У зависности од Ваше конфигурације, овим дугметом може да послужи да почнете да верујете овом домену:",
"Copy URL" : "Копирај URL",
+ "{sharee} (conversation)" : "{sharee} (разговор)",
"Please log in before granting %s access to your %s account." : "Прво се пријавите пре него што одобрите привилегију %s приступ Вашем налогу %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Више информација о томе како ово подесити можете да нађете у %s документацији%s."
},
diff --git a/core/l10n/sr.json b/core/l10n/sr.json
index f6a3c9a2ed..11245f5bcf 100644
--- a/core/l10n/sr.json
+++ b/core/l10n/sr.json
@@ -208,12 +208,8 @@
"No users found for {search}" : "Није нађен ниједан корисник за претрагу {search}",
"An error occurred (\"{message}\"). Please try again" : "Десила се грешка (\"{message}\"). Покушајте поново.",
"An error occurred. Please try again" : "Дошло је до грешке. Покушајте поново",
- "{sharee} (group)" : "{sharee} (група)",
- "{sharee} (remote)" : "{sharee} (удаљено)",
"{sharee} (remote group)" : "{sharee} (удаљена група)",
- "{sharee} (email)" : "{sharee} (е-пошта)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (разговор)",
"Share" : "Дели",
"Name or email address..." : "Име или адреса е-поште...",
"Name or federated cloud ID..." : "Име или ID здруженог облака...",
@@ -380,6 +376,9 @@
"Error setting expiration date" : "Грешка при постављању датума истека",
"The public link will expire no later than {days} days after it is created" : "Јавна веза ће престати да важи {days} дана након стварања",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} је поделио преко везе",
+ "{sharee} (group)" : "{sharee} (група)",
+ "{sharee} (remote)" : "{sharee} (удаљено)",
+ "{sharee} (email)" : "{sharee} (е-пошта)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Делите са другим људима тако што унесете корисника, групу, ID здруженог облака или адресу е-поште. ",
"Share with other people by entering a user or group or a federated cloud ID." : "Делите са другим људима тако што унесете корисника, групу или ID здруженог облака.",
"Share with other people by entering a user or group or an email address." : "Делите са другим људима тако што унесете корисника или групу.",
@@ -411,6 +410,7 @@
"You are about to grant %s access to your %s account." : "Управо ћете одобрити %s приступ Вашем %s налогу.",
"Depending on your configuration, this button could also work to trust the domain:" : "У зависности од Ваше конфигурације, овим дугметом може да послужи да почнете да верујете овом домену:",
"Copy URL" : "Копирај URL",
+ "{sharee} (conversation)" : "{sharee} (разговор)",
"Please log in before granting %s access to your %s account." : "Прво се пријавите пре него што одобрите привилегију %s приступ Вашем налогу %s.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Више информација о томе како ово подесити можете да нађете у %s документацији%s."
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
diff --git a/core/l10n/sv.js b/core/l10n/sv.js
index f48fc60e08..4a3299422e 100644
--- a/core/l10n/sv.js
+++ b/core/l10n/sv.js
@@ -170,9 +170,6 @@ OC.L10N.register(
"No users found for {search}" : "Inga användare funna för {search}",
"An error occurred (\"{message}\"). Please try again" : "Ett fel uppstod (\"{message}\"). Försök igen",
"An error occurred. Please try again" : "Ett fel uppstod. Vänligen försök igen",
- "{sharee} (group)" : "{sharee} (grupp)",
- "{sharee} (remote)" : "{sharee} (externt)",
- "{sharee} (email)" : "{sharee} (e-post)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Dela",
"Name or email address..." : "Namn eller e-postadress",
@@ -322,6 +319,9 @@ OC.L10N.register(
"Error setting expiration date" : "Fel vid val av utgångsdatum",
"The public link will expire no later than {days} days after it is created" : "Den offentliga länken kommer sluta gälla inte senare än {days} dagar efter att den skapades",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} delad via länk",
+ "{sharee} (group)" : "{sharee} (grupp)",
+ "{sharee} (remote)" : "{sharee} (externt)",
+ "{sharee} (email)" : "{sharee} (e-post)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Dela med andra personer genom att ange användarnamn, grupp, ett federerat moln-ID eller en e-postadress.",
"Share with other people by entering a user or group or a federated cloud ID." : "Dela med andra personer genom att ange användarnamn, grupp eller ett federerat moln-ID.",
"Share with other people by entering a user or group or an email address." : "Dela med andra personer genom att ange användarnamn, grupp eller en e-postadress.",
diff --git a/core/l10n/sv.json b/core/l10n/sv.json
index 2d20e804a8..5a8c4dc866 100644
--- a/core/l10n/sv.json
+++ b/core/l10n/sv.json
@@ -168,9 +168,6 @@
"No users found for {search}" : "Inga användare funna för {search}",
"An error occurred (\"{message}\"). Please try again" : "Ett fel uppstod (\"{message}\"). Försök igen",
"An error occurred. Please try again" : "Ett fel uppstod. Vänligen försök igen",
- "{sharee} (group)" : "{sharee} (grupp)",
- "{sharee} (remote)" : "{sharee} (externt)",
- "{sharee} (email)" : "{sharee} (e-post)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Dela",
"Name or email address..." : "Namn eller e-postadress",
@@ -320,6 +317,9 @@
"Error setting expiration date" : "Fel vid val av utgångsdatum",
"The public link will expire no later than {days} days after it is created" : "Den offentliga länken kommer sluta gälla inte senare än {days} dagar efter att den skapades",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} delad via länk",
+ "{sharee} (group)" : "{sharee} (grupp)",
+ "{sharee} (remote)" : "{sharee} (externt)",
+ "{sharee} (email)" : "{sharee} (e-post)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Dela med andra personer genom att ange användarnamn, grupp, ett federerat moln-ID eller en e-postadress.",
"Share with other people by entering a user or group or a federated cloud ID." : "Dela med andra personer genom att ange användarnamn, grupp eller ett federerat moln-ID.",
"Share with other people by entering a user or group or an email address." : "Dela med andra personer genom att ange användarnamn, grupp eller en e-postadress.",
diff --git a/core/l10n/tr.js b/core/l10n/tr.js
index e5c85dfc7a..080a6bc46f 100644
--- a/core/l10n/tr.js
+++ b/core/l10n/tr.js
@@ -167,6 +167,7 @@ OC.L10N.register(
"Share to {name}" : "{name} ile paylaş",
"Copy link" : "Bağlantıyı kopyala",
"Link" : "Bağlantı",
+ "Hide download" : "İndirmeyi gizle",
"Password protect" : "Parola koruması",
"Allow editing" : "Düzenlenebilsin",
"Email link to person" : "Bağlantıyı e-posta ile gönder",
@@ -210,12 +211,10 @@ OC.L10N.register(
"No users found for {search}" : "{search} araması sonucunda uygun bir kullanıcı bulunamadı",
"An error occurred (\"{message}\"). Please try again" : "Bir sorun çıktı (\"{message}\"). Lütfen yeniden deneyin.",
"An error occurred. Please try again" : "Bir sorun çıktı. Lütfen yeniden deneyin",
- "{sharee} (group)" : "{sharee} (grup)",
- "{sharee} (remote)" : "{sharee} (uzak)",
"{sharee} (remote group)" : "{sharee} (uzak grup)",
- "{sharee} (email)" : "{sharee} (e-posta)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (görüşme)",
+ "Home" : "Giriş",
+ "Other" : "Diğer",
"Share" : "Paylaş",
"Name or email address..." : "Ad ya da e-posta adresi...",
"Name or federated cloud ID..." : "Ad ya da birleşmiş bulut kodu...",
@@ -382,6 +381,9 @@ OC.L10N.register(
"Error setting expiration date" : "Son kullanma tarihi ayarlanırken sorun çıktı",
"The public link will expire no later than {days} days after it is created" : "Herkese açık bağlantı, oluşturulduktan {days} gün sonra kullanımdan kaldırılacak",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} bağlantı ile paylaşılmış",
+ "{sharee} (group)" : "{sharee} (grup)",
+ "{sharee} (remote)" : "{sharee} (uzak)",
+ "{sharee} (email)" : "{sharee} (e-posta)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Bir kullanıcı, grup, birleşmiş bulut kodu ya da e-posta adresi yazarak başkaları ile paylaşın.",
"Share with other people by entering a user or group or a federated cloud ID." : "Bir kullanıcı, grup ya da birleşmiş bulut kodu yazarak başkaları ile paylaşın.",
"Share with other people by entering a user or group or an email address." : "Bir kullanıcı, grup ya da e-posta adresi yazarak başkaları ile paylaşın.",
@@ -413,6 +415,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "%s erişim iznini %s hesabınız için vermek üzeresiniz.",
"Depending on your configuration, this button could also work to trust the domain:" : "Yapılandırmanıza bağlı olarak, bu düğme etki alanına güvenmek için de kullanılabilir:",
"Copy URL" : "Adresi Kopyala",
+ "{sharee} (conversation)" : "{sharee} (görüşme)",
"Please log in before granting %s access to your %s account." : "Lütfen %s erişim izni %s vermeden önce oturum açın.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Bu ayar ile ilgili ayrıntılı bilgi almak için %sbelgelere%s bakabilirsiniz."
},
diff --git a/core/l10n/tr.json b/core/l10n/tr.json
index a97bd48894..fb66979b76 100644
--- a/core/l10n/tr.json
+++ b/core/l10n/tr.json
@@ -165,6 +165,7 @@
"Share to {name}" : "{name} ile paylaş",
"Copy link" : "Bağlantıyı kopyala",
"Link" : "Bağlantı",
+ "Hide download" : "İndirmeyi gizle",
"Password protect" : "Parola koruması",
"Allow editing" : "Düzenlenebilsin",
"Email link to person" : "Bağlantıyı e-posta ile gönder",
@@ -208,12 +209,10 @@
"No users found for {search}" : "{search} araması sonucunda uygun bir kullanıcı bulunamadı",
"An error occurred (\"{message}\"). Please try again" : "Bir sorun çıktı (\"{message}\"). Lütfen yeniden deneyin.",
"An error occurred. Please try again" : "Bir sorun çıktı. Lütfen yeniden deneyin",
- "{sharee} (group)" : "{sharee} (grup)",
- "{sharee} (remote)" : "{sharee} (uzak)",
"{sharee} (remote group)" : "{sharee} (uzak grup)",
- "{sharee} (email)" : "{sharee} (e-posta)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (görüşme)",
+ "Home" : "Giriş",
+ "Other" : "Diğer",
"Share" : "Paylaş",
"Name or email address..." : "Ad ya da e-posta adresi...",
"Name or federated cloud ID..." : "Ad ya da birleşmiş bulut kodu...",
@@ -380,6 +379,9 @@
"Error setting expiration date" : "Son kullanma tarihi ayarlanırken sorun çıktı",
"The public link will expire no later than {days} days after it is created" : "Herkese açık bağlantı, oluşturulduktan {days} gün sonra kullanımdan kaldırılacak",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} bağlantı ile paylaşılmış",
+ "{sharee} (group)" : "{sharee} (grup)",
+ "{sharee} (remote)" : "{sharee} (uzak)",
+ "{sharee} (email)" : "{sharee} (e-posta)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Bir kullanıcı, grup, birleşmiş bulut kodu ya da e-posta adresi yazarak başkaları ile paylaşın.",
"Share with other people by entering a user or group or a federated cloud ID." : "Bir kullanıcı, grup ya da birleşmiş bulut kodu yazarak başkaları ile paylaşın.",
"Share with other people by entering a user or group or an email address." : "Bir kullanıcı, grup ya da e-posta adresi yazarak başkaları ile paylaşın.",
@@ -411,6 +413,7 @@
"You are about to grant %s access to your %s account." : "%s erişim iznini %s hesabınız için vermek üzeresiniz.",
"Depending on your configuration, this button could also work to trust the domain:" : "Yapılandırmanıza bağlı olarak, bu düğme etki alanına güvenmek için de kullanılabilir:",
"Copy URL" : "Adresi Kopyala",
+ "{sharee} (conversation)" : "{sharee} (görüşme)",
"Please log in before granting %s access to your %s account." : "Lütfen %s erişim izni %s vermeden önce oturum açın.",
"Further information how to configure this can be found in the %sdocumentation%s." : "Bu ayar ile ilgili ayrıntılı bilgi almak için %sbelgelere%s bakabilirsiniz."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
diff --git a/core/l10n/uk.js b/core/l10n/uk.js
index c5013f0ae5..d6d44f5778 100644
--- a/core/l10n/uk.js
+++ b/core/l10n/uk.js
@@ -152,9 +152,6 @@ OC.L10N.register(
"No users or groups found for {search}" : "Не знайдено груп або користувачів за пошуком {search}",
"No users found for {search}" : "Не знайдено жодного користувача для {search}",
"An error occurred. Please try again" : "Сталася помилка. Спробуйте ще раз",
- "{sharee} (group)" : "{sharee} (група)",
- "{sharee} (remote)" : "{sharee} (віддалений)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Поділитися",
"Name or email address..." : "Ім'я або адреса електронної пошти...",
@@ -259,6 +256,9 @@ OC.L10N.register(
"Updated \"%s\" to %s" : "Оновлено \"%s\" до %s",
"Error setting expiration date" : "Помилка при встановленні терміну дії",
"The public link will expire no later than {days} days after it is created" : "Доступ до опублікованого посилання буде припинено не пізніше ніж через {days} днів з моменту створення",
+ "{sharee} (group)" : "{sharee} (група)",
+ "{sharee} (remote)" : "{sharee} (віддалений)",
+ "{sharee} (email)" : "{sharee} (email)",
"The specified document has not been found on the server." : "Не вдалось знайти вказаний документ на сервері.",
"You can click here to return to %s." : "Ви можете натиснути тут для повернення до %s.",
"Wrong password. Reset it?" : "Невірний пароль. Скинути його?",
diff --git a/core/l10n/uk.json b/core/l10n/uk.json
index 5eb7b3b93c..af612818e9 100644
--- a/core/l10n/uk.json
+++ b/core/l10n/uk.json
@@ -150,9 +150,6 @@
"No users or groups found for {search}" : "Не знайдено груп або користувачів за пошуком {search}",
"No users found for {search}" : "Не знайдено жодного користувача для {search}",
"An error occurred. Please try again" : "Сталася помилка. Спробуйте ще раз",
- "{sharee} (group)" : "{sharee} (група)",
- "{sharee} (remote)" : "{sharee} (віддалений)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Поділитися",
"Name or email address..." : "Ім'я або адреса електронної пошти...",
@@ -257,6 +254,9 @@
"Updated \"%s\" to %s" : "Оновлено \"%s\" до %s",
"Error setting expiration date" : "Помилка при встановленні терміну дії",
"The public link will expire no later than {days} days after it is created" : "Доступ до опублікованого посилання буде припинено не пізніше ніж через {days} днів з моменту створення",
+ "{sharee} (group)" : "{sharee} (група)",
+ "{sharee} (remote)" : "{sharee} (віддалений)",
+ "{sharee} (email)" : "{sharee} (email)",
"The specified document has not been found on the server." : "Не вдалось знайти вказаний документ на сервері.",
"You can click here to return to %s." : "Ви можете натиснути тут для повернення до %s.",
"Wrong password. Reset it?" : "Невірний пароль. Скинути його?",
diff --git a/core/l10n/vi.js b/core/l10n/vi.js
index a661510921..16882d7cc7 100644
--- a/core/l10n/vi.js
+++ b/core/l10n/vi.js
@@ -159,9 +159,6 @@ OC.L10N.register(
"No users found for {search}" : "Không tìm thấy người dùng cho {search}",
"An error occurred (\"{message}\"). Please try again" : "Đã xảy ra lỗi (\"{message}\"). Hãy thử lại",
"An error occurred. Please try again" : "Có lỗi vừa xảy ra. Xin vui lòng thử lại",
- "{sharee} (group)" : "{sharee} (nhóm)",
- "{sharee} (remote)" : "{sharee} (từ xa)",
- "{sharee} (email)" : "{sharee} (thư điện tử)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Chia sẻ",
"Name or email address..." : "Tên hoặc địa chỉ email.",
@@ -292,6 +289,9 @@ OC.L10N.register(
"Error setting expiration date" : "Lỗi cấu hình ngày kết thúc",
"The public link will expire no later than {days} days after it is created" : "Liên kết công khai sẽ hết hạn sau {days} ngày sau khi được tạo",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} chia sẻ qua liên kết",
+ "{sharee} (group)" : "{sharee} (nhóm)",
+ "{sharee} (remote)" : "{sharee} (từ xa)",
+ "{sharee} (email)" : "{sharee} (thư điện tử)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Chia sẻ với người khác bằng cách nhập tên người dùng hoặc tên nhóm, ID đám mây liên kết hoặc địa chỉ email.",
"Share with other people by entering a user or group or a federated cloud ID." : "Chia sẻ với người khác bằng cách nhập tên người dùng hoặc tên nhóm, ID đám mây liên kết.",
"Share with other people by entering a user or group or an email address." : "Chia sẻ với người khác bằng cách nhập tên người dùng hoặc tên nhóm, hoặc địa chỉ email.",
diff --git a/core/l10n/vi.json b/core/l10n/vi.json
index cee3000c91..ff500a839b 100644
--- a/core/l10n/vi.json
+++ b/core/l10n/vi.json
@@ -157,9 +157,6 @@
"No users found for {search}" : "Không tìm thấy người dùng cho {search}",
"An error occurred (\"{message}\"). Please try again" : "Đã xảy ra lỗi (\"{message}\"). Hãy thử lại",
"An error occurred. Please try again" : "Có lỗi vừa xảy ra. Xin vui lòng thử lại",
- "{sharee} (group)" : "{sharee} (nhóm)",
- "{sharee} (remote)" : "{sharee} (từ xa)",
- "{sharee} (email)" : "{sharee} (thư điện tử)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
"Share" : "Chia sẻ",
"Name or email address..." : "Tên hoặc địa chỉ email.",
@@ -290,6 +287,9 @@
"Error setting expiration date" : "Lỗi cấu hình ngày kết thúc",
"The public link will expire no later than {days} days after it is created" : "Liên kết công khai sẽ hết hạn sau {days} ngày sau khi được tạo",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} chia sẻ qua liên kết",
+ "{sharee} (group)" : "{sharee} (nhóm)",
+ "{sharee} (remote)" : "{sharee} (từ xa)",
+ "{sharee} (email)" : "{sharee} (thư điện tử)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "Chia sẻ với người khác bằng cách nhập tên người dùng hoặc tên nhóm, ID đám mây liên kết hoặc địa chỉ email.",
"Share with other people by entering a user or group or a federated cloud ID." : "Chia sẻ với người khác bằng cách nhập tên người dùng hoặc tên nhóm, ID đám mây liên kết.",
"Share with other people by entering a user or group or an email address." : "Chia sẻ với người khác bằng cách nhập tên người dùng hoặc tên nhóm, hoặc địa chỉ email.",
diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js
index ca39729ad2..815c457edf 100644
--- a/core/l10n/zh_CN.js
+++ b/core/l10n/zh_CN.js
@@ -209,12 +209,8 @@ OC.L10N.register(
"No users found for {search}" : "没有找到 {search} 用户",
"An error occurred (\"{message}\"). Please try again" : "发生错误 (\"{message}\"). 请重试",
"An error occurred. Please try again" : "发生错误. 请重试",
- "{sharee} (group)" : "{sharee} (分组)",
- "{sharee} (remote)" : "{sharee} (外部)",
"{sharee} (remote group)" : "{sharee}(远程组)",
- "{sharee} (email)" : "{sharee} (邮件)",
"{sharee} ({type}, {owner})" : "{share}({type},{owner})",
- "{sharee} (conversation)" : "{sharee}(对话)",
"Share" : "共享",
"Name or email address..." : "姓名或电子邮件地址...",
"Name or federated cloud ID..." : "姓名或联合云 ID...",
@@ -381,6 +377,9 @@ OC.L10N.register(
"Error setting expiration date" : "设置过期日期时出错",
"The public link will expire no later than {days} days after it is created" : "该共享链接将在创建后 {days} 天失效",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} 通过链接共享",
+ "{sharee} (group)" : "{sharee} (分组)",
+ "{sharee} (remote)" : "{sharee} (外部)",
+ "{sharee} (email)" : "{sharee} (邮件)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "通过输入用户或组,联合云ID或电子邮件地址与其他人共享。",
"Share with other people by entering a user or group or a federated cloud ID." : "通过输入用户或组或联合云ID与其他人共享。",
"Share with other people by entering a user or group or an email address." : "输入用户/组织或邮箱地址来共享给其他人.",
@@ -412,6 +411,7 @@ OC.L10N.register(
"You are about to grant %s access to your %s account." : "你将分配 %s 访问权限给你的 %s 账户。",
"Depending on your configuration, this button could also work to trust the domain:" : "取决于配置,此按钮也可用作设置信任域名:",
"Copy URL" : "复制超链接",
+ "{sharee} (conversation)" : "{sharee}(对话)",
"Please log in before granting %s access to your %s account." : "请在登录之前授权 %s 访问你的 %s 账户。",
"Further information how to configure this can be found in the %sdocumentation%s." : "更多配置信息可以查看 %s文档%s。"
},
diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json
index 3a6f1c5899..87f1b38c1f 100644
--- a/core/l10n/zh_CN.json
+++ b/core/l10n/zh_CN.json
@@ -207,12 +207,8 @@
"No users found for {search}" : "没有找到 {search} 用户",
"An error occurred (\"{message}\"). Please try again" : "发生错误 (\"{message}\"). 请重试",
"An error occurred. Please try again" : "发生错误. 请重试",
- "{sharee} (group)" : "{sharee} (分组)",
- "{sharee} (remote)" : "{sharee} (外部)",
"{sharee} (remote group)" : "{sharee}(远程组)",
- "{sharee} (email)" : "{sharee} (邮件)",
"{sharee} ({type}, {owner})" : "{share}({type},{owner})",
- "{sharee} (conversation)" : "{sharee}(对话)",
"Share" : "共享",
"Name or email address..." : "姓名或电子邮件地址...",
"Name or federated cloud ID..." : "姓名或联合云 ID...",
@@ -379,6 +375,9 @@
"Error setting expiration date" : "设置过期日期时出错",
"The public link will expire no later than {days} days after it is created" : "该共享链接将在创建后 {days} 天失效",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} 通过链接共享",
+ "{sharee} (group)" : "{sharee} (分组)",
+ "{sharee} (remote)" : "{sharee} (外部)",
+ "{sharee} (email)" : "{sharee} (邮件)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "通过输入用户或组,联合云ID或电子邮件地址与其他人共享。",
"Share with other people by entering a user or group or a federated cloud ID." : "通过输入用户或组或联合云ID与其他人共享。",
"Share with other people by entering a user or group or an email address." : "输入用户/组织或邮箱地址来共享给其他人.",
@@ -410,6 +409,7 @@
"You are about to grant %s access to your %s account." : "你将分配 %s 访问权限给你的 %s 账户。",
"Depending on your configuration, this button could also work to trust the domain:" : "取决于配置,此按钮也可用作设置信任域名:",
"Copy URL" : "复制超链接",
+ "{sharee} (conversation)" : "{sharee}(对话)",
"Please log in before granting %s access to your %s account." : "请在登录之前授权 %s 访问你的 %s 账户。",
"Further information how to configure this can be found in the %sdocumentation%s." : "更多配置信息可以查看 %s文档%s。"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js
index db99f2107a..89787aa34a 100644
--- a/core/l10n/zh_TW.js
+++ b/core/l10n/zh_TW.js
@@ -193,12 +193,8 @@ OC.L10N.register(
"No users found for {search}" : "沒有使用者符合 {search}",
"An error occurred (\"{message}\"). Please try again" : "發生錯誤({message}),請再試一次",
"An error occurred. Please try again" : "發生錯誤,請再試一次",
- "{sharee} (group)" : "{sharee} (群組)",
- "{sharee} (remote)" : "{sharee} (遠端)",
"{sharee} (remote group)" : "{sharee} (遠端群組)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (對話)",
"Share" : "分享",
"Name or email address..." : "名字或電子郵件地址",
"Name or federated cloud ID..." : "名稱或者聯盟式雲端ID...",
@@ -353,6 +349,9 @@ OC.L10N.register(
"Error setting expiration date" : "設定到期日發生錯誤",
"The public link will expire no later than {days} days after it is created" : "這個公開連結會在 {days} 天內失效",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} 分享了連結",
+ "{sharee} (group)" : "{sharee} (群組)",
+ "{sharee} (remote)" : "{sharee} (遠端)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "透過輸入使用者、群組名稱,聯盟式雲端ID或e-mail信箱來分享給其他人。 ",
"Share with other people by entering a user or group or a federated cloud ID." : "透過輸入使用者、群組名稱,聯盟式雲端ID來分享給其他人。",
"Share with other people by entering a user or group or an email address." : "透過輸入使用者、群組名稱或email來分享給其他人。",
@@ -379,6 +378,7 @@ OC.L10N.register(
"Back to log in" : "回到登入頁面",
"You are about to grant %s access to your %s account." : "您將授予「%s」存取您的 %s 帳戶",
"Depending on your configuration, this button could also work to trust the domain:" : "根據你的設定值,此按鈕也可用於信任以下網域:",
+ "{sharee} (conversation)" : "{sharee} (對話)",
"Please log in before granting %s access to your %s account." : "請登入後再授權 %s 存取你的 %s 帳號",
"Further information how to configure this can be found in the %sdocumentation%s." : "關於如何設定這個的更多訊息,請見 %s 文件 %s"
},
diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json
index 45c57f4bc3..a82889658e 100644
--- a/core/l10n/zh_TW.json
+++ b/core/l10n/zh_TW.json
@@ -191,12 +191,8 @@
"No users found for {search}" : "沒有使用者符合 {search}",
"An error occurred (\"{message}\"). Please try again" : "發生錯誤({message}),請再試一次",
"An error occurred. Please try again" : "發生錯誤,請再試一次",
- "{sharee} (group)" : "{sharee} (群組)",
- "{sharee} (remote)" : "{sharee} (遠端)",
"{sharee} (remote group)" : "{sharee} (遠端群組)",
- "{sharee} (email)" : "{sharee} (email)",
"{sharee} ({type}, {owner})" : "{sharee} ({type}, {owner})",
- "{sharee} (conversation)" : "{sharee} (對話)",
"Share" : "分享",
"Name or email address..." : "名字或電子郵件地址",
"Name or federated cloud ID..." : "名稱或者聯盟式雲端ID...",
@@ -351,6 +347,9 @@
"Error setting expiration date" : "設定到期日發生錯誤",
"The public link will expire no later than {days} days after it is created" : "這個公開連結會在 {days} 天內失效",
"{{shareInitiatorDisplayName}} shared via link" : "{{shareInitiatorDisplayName}} 分享了連結",
+ "{sharee} (group)" : "{sharee} (群組)",
+ "{sharee} (remote)" : "{sharee} (遠端)",
+ "{sharee} (email)" : "{sharee} (email)",
"Share with other people by entering a user or group, a federated cloud ID or an email address." : "透過輸入使用者、群組名稱,聯盟式雲端ID或e-mail信箱來分享給其他人。 ",
"Share with other people by entering a user or group or a federated cloud ID." : "透過輸入使用者、群組名稱,聯盟式雲端ID來分享給其他人。",
"Share with other people by entering a user or group or an email address." : "透過輸入使用者、群組名稱或email來分享給其他人。",
@@ -377,6 +376,7 @@
"Back to log in" : "回到登入頁面",
"You are about to grant %s access to your %s account." : "您將授予「%s」存取您的 %s 帳戶",
"Depending on your configuration, this button could also work to trust the domain:" : "根據你的設定值,此按鈕也可用於信任以下網域:",
+ "{sharee} (conversation)" : "{sharee} (對話)",
"Please log in before granting %s access to your %s account." : "請登入後再授權 %s 存取你的 %s 帳號",
"Further information how to configure this can be found in the %sdocumentation%s." : "關於如何設定這個的更多訊息,請見 %s 文件 %s"
},"pluralForm" :"nplurals=1; plural=0;"
diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php
index d82043b257..6f0344aa60 100644
--- a/core/templates/layout.user.php
+++ b/core/templates/layout.user.php
@@ -47,7 +47,7 @@
diff --git a/core/templates/login.php b/core/templates/login.php
index 989ea1eaad..3035d23da7 100644
--- a/core/templates/login.php
+++ b/core/templates/login.php
@@ -42,7 +42,7 @@ use OC\Core\Controller\LoginController;
aria-label="t('Username or email')); ?>"
value=""
- autocomplete="on" autocapitalize="none" autocorrect="off" required>
+ autocomplete="" autocapitalize="none" autocorrect="off" required>
@@ -51,7 +51,7 @@ use OC\Core\Controller\LoginController;
placeholder="t('Password')); ?>"
aria-label="t('Password')); ?>"
- autocomplete="on" autocapitalize="off" autocorrect="none" required>
+ autocomplete="" autocapitalize="none" autocorrect="off" required>
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index e880d5ede4..d7523d52ca 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -231,7 +231,25 @@ return array(
'OCP\\Files\\Storage\\INotifyStorage' => $baseDir . '/lib/public/Files/Storage/INotifyStorage.php',
'OCP\\Files\\Storage\\IStorage' => $baseDir . '/lib/public/Files/Storage/IStorage.php',
'OCP\\Files\\Storage\\IStorageFactory' => $baseDir . '/lib/public/Files/Storage/IStorageFactory.php',
+ 'OCP\\Files\\Storage\\IWriteStreamStorage' => $baseDir . '/lib/public/Files/Storage/IWriteStreamStorage.php',
'OCP\\Files\\UnseekableException' => $baseDir . '/lib/public/Files/UnseekableException.php',
+ 'OCP\\Files_FullTextSearch\\Model\\AFilesDocument' => $baseDir . '/lib/public/Files_FullTextSearch/Model/AFilesDocument.php',
+ 'OCP\\FullTextSearch\\Exceptions\\FullTextSearchAppNotAvailableException' => $baseDir . '/lib/public/FullTextSearch/Exceptions/FullTextSearchAppNotAvailableException.php',
+ 'OCP\\FullTextSearch\\IFullTextSearchManager' => $baseDir . '/lib/public/FullTextSearch/IFullTextSearchManager.php',
+ 'OCP\\FullTextSearch\\IFullTextSearchPlatform' => $baseDir . '/lib/public/FullTextSearch/IFullTextSearchPlatform.php',
+ 'OCP\\FullTextSearch\\IFullTextSearchProvider' => $baseDir . '/lib/public/FullTextSearch/IFullTextSearchProvider.php',
+ 'OCP\\FullTextSearch\\Model\\DocumentAccess' => $baseDir . '/lib/public/FullTextSearch/Model/DocumentAccess.php',
+ 'OCP\\FullTextSearch\\Model\\IIndex' => $baseDir . '/lib/public/FullTextSearch/Model/IIndex.php',
+ 'OCP\\FullTextSearch\\Model\\IIndexOptions' => $baseDir . '/lib/public/FullTextSearch/Model/IIndexOptions.php',
+ 'OCP\\FullTextSearch\\Model\\IRunner' => $baseDir . '/lib/public/FullTextSearch/Model/IRunner.php',
+ 'OCP\\FullTextSearch\\Model\\ISearchRequest' => $baseDir . '/lib/public/FullTextSearch/Model/ISearchRequest.php',
+ 'OCP\\FullTextSearch\\Model\\ISearchResult' => $baseDir . '/lib/public/FullTextSearch/Model/ISearchResult.php',
+ 'OCP\\FullTextSearch\\Model\\IndexDocument' => $baseDir . '/lib/public/FullTextSearch/Model/IndexDocument.php',
+ 'OCP\\FullTextSearch\\Model\\SearchOption' => $baseDir . '/lib/public/FullTextSearch/Model/SearchOption.php',
+ 'OCP\\FullTextSearch\\Model\\SearchTemplate' => $baseDir . '/lib/public/FullTextSearch/Model/SearchTemplate.php',
+ 'OCP\\FullTextSearch\\Service\\IIndexService' => $baseDir . '/lib/public/FullTextSearch/Service/IIndexService.php',
+ 'OCP\\FullTextSearch\\Service\\IProviderService' => $baseDir . '/lib/public/FullTextSearch/Service/IProviderService.php',
+ 'OCP\\FullTextSearch\\Service\\ISearchService' => $baseDir . '/lib/public/FullTextSearch/Service/ISearchService.php',
'OCP\\GlobalScale\\IConfig' => $baseDir . '/lib/public/GlobalScale/IConfig.php',
'OCP\\GroupInterface' => $baseDir . '/lib/public/GroupInterface.php',
'OCP\\Group\\Backend\\ABackend' => $baseDir . '/lib/public/Group/Backend/ABackend.php',
@@ -458,6 +476,7 @@ return array(
'OC\\Archive\\Archive' => $baseDir . '/lib/private/Archive/Archive.php',
'OC\\Archive\\TAR' => $baseDir . '/lib/private/Archive/TAR.php',
'OC\\Archive\\ZIP' => $baseDir . '/lib/private/Archive/ZIP.php',
+ 'OC\\Authentication\\Exceptions\\ExpiredTokenException' => $baseDir . '/lib/private/Authentication/Exceptions/ExpiredTokenException.php',
'OC\\Authentication\\Exceptions\\InvalidProviderException' => $baseDir . '/lib/private/Authentication/Exceptions/InvalidProviderException.php',
'OC\\Authentication\\Exceptions\\InvalidTokenException' => $baseDir . '/lib/private/Authentication/Exceptions/InvalidTokenException.php',
'OC\\Authentication\\Exceptions\\LoginRequiredException' => $baseDir . '/lib/private/Authentication/Exceptions/LoginRequiredException.php',
@@ -471,7 +490,6 @@ return array(
'OC\\Authentication\\Token\\DefaultTokenCleanupJob' => $baseDir . '/lib/private/Authentication/Token/DefaultTokenCleanupJob.php',
'OC\\Authentication\\Token\\DefaultTokenMapper' => $baseDir . '/lib/private/Authentication/Token/DefaultTokenMapper.php',
'OC\\Authentication\\Token\\DefaultTokenProvider' => $baseDir . '/lib/private/Authentication/Token/DefaultTokenProvider.php',
- 'OC\\Authentication\\Token\\ExpiredTokenException' => $baseDir . '/lib/private/Authentication/Exceptions/ExpiredTokenException.php',
'OC\\Authentication\\Token\\IProvider' => $baseDir . '/lib/private/Authentication/Token/IProvider.php',
'OC\\Authentication\\Token\\IToken' => $baseDir . '/lib/private/Authentication/Token/IToken.php',
'OC\\Authentication\\Token\\Manager' => $baseDir . '/lib/private/Authentication/Token/Manager.php',
@@ -652,6 +670,7 @@ return array(
'OC\\Core\\Migrations\\Version14000Date20180710092004' => $baseDir . '/core/Migrations/Version14000Date20180710092004.php',
'OC\\Core\\Migrations\\Version14000Date20180712153140' => $baseDir . '/core/Migrations/Version14000Date20180712153140.php',
'OC\\Core\\Migrations\\Version15000Date20180926101451' => $baseDir . '/core/Migrations/Version15000Date20180926101451.php',
+ 'OC\\Core\\Migrations\\Version15000Date20181015062942' => $baseDir . '/core/Migrations/Version15000Date20181015062942.php',
'OC\\DB\\Adapter' => $baseDir . '/lib/private/DB/Adapter.php',
'OC\\DB\\AdapterMySQL' => $baseDir . '/lib/private/DB/AdapterMySQL.php',
'OC\\DB\\AdapterOCI8' => $baseDir . '/lib/private/DB/AdapterOCI8.php',
@@ -803,6 +822,7 @@ return array(
'OC\\Files\\Storage\\Wrapper\\PermissionsMask' => $baseDir . '/lib/private/Files/Storage/Wrapper/PermissionsMask.php',
'OC\\Files\\Storage\\Wrapper\\Quota' => $baseDir . '/lib/private/Files/Storage/Wrapper/Quota.php',
'OC\\Files\\Storage\\Wrapper\\Wrapper' => $baseDir . '/lib/private/Files/Storage/Wrapper/Wrapper.php',
+ 'OC\\Files\\Stream\\CountReadStream' => $baseDir . '/lib/private/Files/Stream/CountReadStream.php',
'OC\\Files\\Stream\\Encryption' => $baseDir . '/lib/private/Files/Stream/Encryption.php',
'OC\\Files\\Stream\\Quota' => $baseDir . '/lib/private/Files/Stream/Quota.php',
'OC\\Files\\Type\\Detection' => $baseDir . '/lib/private/Files/Type/Detection.php',
@@ -811,6 +831,7 @@ return array(
'OC\\Files\\Utils\\Scanner' => $baseDir . '/lib/private/Files/Utils/Scanner.php',
'OC\\Files\\View' => $baseDir . '/lib/private/Files/View.php',
'OC\\ForbiddenException' => $baseDir . '/lib/private/ForbiddenException.php',
+ 'OC\\FullTextSearch\\FullTextSearchManager' => $baseDir . '/lib/private/FullTextSearch/FullTextSearchManager.php',
'OC\\GlobalScale\\Config' => $baseDir . '/lib/private/GlobalScale/Config.php',
'OC\\Group\\Backend' => $baseDir . '/lib/private/Group/Backend.php',
'OC\\Group\\Database' => $baseDir . '/lib/private/Group/Database.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index c5f6211b69..cf2fef4282 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -261,7 +261,25 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Files\\Storage\\INotifyStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/INotifyStorage.php',
'OCP\\Files\\Storage\\IStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IStorage.php',
'OCP\\Files\\Storage\\IStorageFactory' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IStorageFactory.php',
+ 'OCP\\Files\\Storage\\IWriteStreamStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IWriteStreamStorage.php',
'OCP\\Files\\UnseekableException' => __DIR__ . '/../../..' . '/lib/public/Files/UnseekableException.php',
+ 'OCP\\Files_FullTextSearch\\Model\\AFilesDocument' => __DIR__ . '/../../..' . '/lib/public/Files_FullTextSearch/Model/AFilesDocument.php',
+ 'OCP\\FullTextSearch\\Exceptions\\FullTextSearchAppNotAvailableException' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Exceptions/FullTextSearchAppNotAvailableException.php',
+ 'OCP\\FullTextSearch\\IFullTextSearchManager' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/IFullTextSearchManager.php',
+ 'OCP\\FullTextSearch\\IFullTextSearchPlatform' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/IFullTextSearchPlatform.php',
+ 'OCP\\FullTextSearch\\IFullTextSearchProvider' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/IFullTextSearchProvider.php',
+ 'OCP\\FullTextSearch\\Model\\DocumentAccess' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/DocumentAccess.php',
+ 'OCP\\FullTextSearch\\Model\\IIndex' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/IIndex.php',
+ 'OCP\\FullTextSearch\\Model\\IIndexOptions' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/IIndexOptions.php',
+ 'OCP\\FullTextSearch\\Model\\IRunner' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/IRunner.php',
+ 'OCP\\FullTextSearch\\Model\\ISearchRequest' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/ISearchRequest.php',
+ 'OCP\\FullTextSearch\\Model\\ISearchResult' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/ISearchResult.php',
+ 'OCP\\FullTextSearch\\Model\\IndexDocument' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/IndexDocument.php',
+ 'OCP\\FullTextSearch\\Model\\SearchOption' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/SearchOption.php',
+ 'OCP\\FullTextSearch\\Model\\SearchTemplate' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Model/SearchTemplate.php',
+ 'OCP\\FullTextSearch\\Service\\IIndexService' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Service/IIndexService.php',
+ 'OCP\\FullTextSearch\\Service\\IProviderService' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Service/IProviderService.php',
+ 'OCP\\FullTextSearch\\Service\\ISearchService' => __DIR__ . '/../../..' . '/lib/public/FullTextSearch/Service/ISearchService.php',
'OCP\\GlobalScale\\IConfig' => __DIR__ . '/../../..' . '/lib/public/GlobalScale/IConfig.php',
'OCP\\GroupInterface' => __DIR__ . '/../../..' . '/lib/public/GroupInterface.php',
'OCP\\Group\\Backend\\ABackend' => __DIR__ . '/../../..' . '/lib/public/Group/Backend/ABackend.php',
@@ -488,6 +506,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Archive\\Archive' => __DIR__ . '/../../..' . '/lib/private/Archive/Archive.php',
'OC\\Archive\\TAR' => __DIR__ . '/../../..' . '/lib/private/Archive/TAR.php',
'OC\\Archive\\ZIP' => __DIR__ . '/../../..' . '/lib/private/Archive/ZIP.php',
+ 'OC\\Authentication\\Exceptions\\ExpiredTokenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/ExpiredTokenException.php',
'OC\\Authentication\\Exceptions\\InvalidProviderException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/InvalidProviderException.php',
'OC\\Authentication\\Exceptions\\InvalidTokenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/InvalidTokenException.php',
'OC\\Authentication\\Exceptions\\LoginRequiredException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/LoginRequiredException.php',
@@ -501,7 +520,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Authentication\\Token\\DefaultTokenCleanupJob' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/DefaultTokenCleanupJob.php',
'OC\\Authentication\\Token\\DefaultTokenMapper' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/DefaultTokenMapper.php',
'OC\\Authentication\\Token\\DefaultTokenProvider' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/DefaultTokenProvider.php',
- 'OC\\Authentication\\Token\\ExpiredTokenException' => __DIR__ . '/../../..' . '/lib/private/Authentication/Exceptions/ExpiredTokenException.php',
'OC\\Authentication\\Token\\IProvider' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/IProvider.php',
'OC\\Authentication\\Token\\IToken' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/IToken.php',
'OC\\Authentication\\Token\\Manager' => __DIR__ . '/../../..' . '/lib/private/Authentication/Token/Manager.php',
@@ -682,6 +700,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Core\\Migrations\\Version14000Date20180710092004' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180710092004.php',
'OC\\Core\\Migrations\\Version14000Date20180712153140' => __DIR__ . '/../../..' . '/core/Migrations/Version14000Date20180712153140.php',
'OC\\Core\\Migrations\\Version15000Date20180926101451' => __DIR__ . '/../../..' . '/core/Migrations/Version15000Date20180926101451.php',
+ 'OC\\Core\\Migrations\\Version15000Date20181015062942' => __DIR__ . '/../../..' . '/core/Migrations/Version15000Date20181015062942.php',
'OC\\DB\\Adapter' => __DIR__ . '/../../..' . '/lib/private/DB/Adapter.php',
'OC\\DB\\AdapterMySQL' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterMySQL.php',
'OC\\DB\\AdapterOCI8' => __DIR__ . '/../../..' . '/lib/private/DB/AdapterOCI8.php',
@@ -833,6 +852,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Files\\Storage\\Wrapper\\PermissionsMask' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/PermissionsMask.php',
'OC\\Files\\Storage\\Wrapper\\Quota' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Quota.php',
'OC\\Files\\Storage\\Wrapper\\Wrapper' => __DIR__ . '/../../..' . '/lib/private/Files/Storage/Wrapper/Wrapper.php',
+ 'OC\\Files\\Stream\\CountReadStream' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/CountReadStream.php',
'OC\\Files\\Stream\\Encryption' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/Encryption.php',
'OC\\Files\\Stream\\Quota' => __DIR__ . '/../../..' . '/lib/private/Files/Stream/Quota.php',
'OC\\Files\\Type\\Detection' => __DIR__ . '/../../..' . '/lib/private/Files/Type/Detection.php',
@@ -841,6 +861,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Files\\Utils\\Scanner' => __DIR__ . '/../../..' . '/lib/private/Files/Utils/Scanner.php',
'OC\\Files\\View' => __DIR__ . '/../../..' . '/lib/private/Files/View.php',
'OC\\ForbiddenException' => __DIR__ . '/../../..' . '/lib/private/ForbiddenException.php',
+ 'OC\\FullTextSearch\\FullTextSearchManager' => __DIR__ . '/../../..' . '/lib/private/FullTextSearch/FullTextSearchManager.php',
'OC\\GlobalScale\\Config' => __DIR__ . '/../../..' . '/lib/private/GlobalScale/Config.php',
'OC\\Group\\Backend' => __DIR__ . '/../../..' . '/lib/private/Group/Backend.php',
'OC\\Group\\Database' => __DIR__ . '/../../..' . '/lib/private/Group/Database.php',
diff --git a/lib/private/Authentication/Exceptions/ExpiredTokenException.php b/lib/private/Authentication/Exceptions/ExpiredTokenException.php
index a45ca5b695..d5b2e2cbca 100644
--- a/lib/private/Authentication/Exceptions/ExpiredTokenException.php
+++ b/lib/private/Authentication/Exceptions/ExpiredTokenException.php
@@ -21,9 +21,9 @@ declare(strict_types=1);
* along with this program. If not, see .
*
*/
-namespace OC\Authentication\Token;
+namespace OC\Authentication\Exceptions;
-use OC\Authentication\Exceptions\InvalidTokenException;
+use OC\Authentication\Token\IToken;
class ExpiredTokenException extends InvalidTokenException {
/** @var IToken */
diff --git a/lib/private/Authentication/Token/DefaultTokenProvider.php b/lib/private/Authentication/Token/DefaultTokenProvider.php
index a27a875a27..98609a3f14 100644
--- a/lib/private/Authentication/Token/DefaultTokenProvider.php
+++ b/lib/private/Authentication/Token/DefaultTokenProvider.php
@@ -29,6 +29,7 @@ declare(strict_types=1);
namespace OC\Authentication\Token;
use Exception;
+use OC\Authentication\Exceptions\ExpiredTokenException;
use OC\Authentication\Exceptions\InvalidTokenException;
use OC\Authentication\Exceptions\PasswordlessTokenException;
use OCP\AppFramework\Db\DoesNotExistException;
diff --git a/lib/private/Authentication/Token/IProvider.php b/lib/private/Authentication/Token/IProvider.php
index 7ee76b7b38..21223cecdf 100644
--- a/lib/private/Authentication/Token/IProvider.php
+++ b/lib/private/Authentication/Token/IProvider.php
@@ -26,6 +26,7 @@ declare(strict_types=1);
namespace OC\Authentication\Token;
+use OC\Authentication\Exceptions\ExpiredTokenException;
use OC\Authentication\Exceptions\InvalidTokenException;
use OC\Authentication\Exceptions\PasswordlessTokenException;
diff --git a/lib/private/Authentication/Token/Manager.php b/lib/private/Authentication/Token/Manager.php
index 98a48f4152..3174599221 100644
--- a/lib/private/Authentication/Token/Manager.php
+++ b/lib/private/Authentication/Token/Manager.php
@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace OC\Authentication\Token;
+use OC\Authentication\Exceptions\ExpiredTokenException;
use OC\Authentication\Exceptions\InvalidTokenException;
use OC\Authentication\Exceptions\PasswordlessTokenException;
diff --git a/lib/private/Authentication/Token/PublicKeyTokenProvider.php b/lib/private/Authentication/Token/PublicKeyTokenProvider.php
index 33c0b1d59e..9f596ac456 100644
--- a/lib/private/Authentication/Token/PublicKeyTokenProvider.php
+++ b/lib/private/Authentication/Token/PublicKeyTokenProvider.php
@@ -23,6 +23,7 @@ declare(strict_types=1);
namespace OC\Authentication\Token;
+use OC\Authentication\Exceptions\ExpiredTokenException;
use OC\Authentication\Exceptions\InvalidTokenException;
use OC\Authentication\Exceptions\PasswordlessTokenException;
use OCP\AppFramework\Db\DoesNotExistException;
diff --git a/lib/private/Collaboration/Collaborators/MailPlugin.php b/lib/private/Collaboration/Collaborators/MailPlugin.php
index 101d6845ec..6faa5d5d12 100644
--- a/lib/private/Collaboration/Collaborators/MailPlugin.php
+++ b/lib/private/Collaboration/Collaborators/MailPlugin.php
@@ -84,11 +84,17 @@ class MailPlugin implements ISearchPlugin {
foreach ($addressBookContacts as $contact) {
if (isset($contact['EMAIL'])) {
$emailAddresses = $contact['EMAIL'];
- if (!is_array($emailAddresses)) {
+ if (\is_string($emailAddresses)) {
$emailAddresses = [$emailAddresses];
}
- foreach ($emailAddresses as $emailAddress) {
+ foreach ($emailAddresses as $type => $emailAddress) {
$displayName = $emailAddress;
+ $emailAddressType = null;
+ if (\is_array($emailAddress)) {
+ $emailAddressData = $emailAddress;
+ $emailAddress = $emailAddressData['value'];
+ $emailAddressType = $emailAddressData['type'];
+ }
if (isset($contact['FN'])) {
$displayName = $contact['FN'] . ' (' . $emailAddress . ')';
}
@@ -121,6 +127,8 @@ class MailPlugin implements ISearchPlugin {
if (!$this->isCurrentUser($cloud) && !$searchResult->hasResult($userType, $cloud->getUser())) {
$singleResult = [[
'label' => $displayName,
+ 'uuid' => $contact['UID'],
+ 'name' => $contact['FN'],
'value' => [
'shareType' => Share::SHARE_TYPE_USER,
'shareWith' => $cloud->getUser(),
@@ -142,6 +150,8 @@ class MailPlugin implements ISearchPlugin {
if (!$this->isCurrentUser($cloud) && !$searchResult->hasResult($userType, $cloud->getUser())) {
$userResults['wide'][] = [
'label' => $displayName,
+ 'uuid' => $contact['UID'],
+ 'name' => $contact['FN'],
'value' => [
'shareType' => Share::SHARE_TYPE_USER,
'shareWith' => $cloud->getUser(),
@@ -160,6 +170,9 @@ class MailPlugin implements ISearchPlugin {
}
$result['exact'][] = [
'label' => $displayName,
+ 'uuid' => $contact['UID'],
+ 'name' => $contact['FN'],
+ 'type' => $emailAddressType ?? '',
'value' => [
'shareType' => Share::SHARE_TYPE_EMAIL,
'shareWith' => $emailAddress,
@@ -168,6 +181,9 @@ class MailPlugin implements ISearchPlugin {
} else {
$result['wide'][] = [
'label' => $displayName,
+ 'uuid' => $contact['UID'],
+ 'name' => $contact['FN'],
+ 'type' => $emailAddressType ?? '',
'value' => [
'shareType' => Share::SHARE_TYPE_EMAIL,
'shareWith' => $emailAddress,
@@ -194,6 +210,7 @@ class MailPlugin implements ISearchPlugin {
if (!$searchResult->hasExactIdMatch($emailType) && filter_var($search, FILTER_VALIDATE_EMAIL)) {
$result['exact'][] = [
'label' => $search,
+ 'uuid' => $search,
'value' => [
'shareType' => Share::SHARE_TYPE_EMAIL,
'shareWith' => $search,
diff --git a/lib/private/Collaboration/Collaborators/RemotePlugin.php b/lib/private/Collaboration/Collaborators/RemotePlugin.php
index e0f5298f83..d877346b15 100644
--- a/lib/private/Collaboration/Collaborators/RemotePlugin.php
+++ b/lib/private/Collaboration/Collaborators/RemotePlugin.php
@@ -30,6 +30,8 @@ use OCP\Collaboration\Collaborators\SearchResultType;
use OCP\Contacts\IManager;
use OCP\Federation\ICloudIdManager;
use OCP\IConfig;
+use OCP\IUserManager;
+use OCP\IUserSession;
use OCP\Share;
class RemotePlugin implements ISearchPlugin {
@@ -41,12 +43,20 @@ class RemotePlugin implements ISearchPlugin {
private $cloudIdManager;
/** @var IConfig */
private $config;
+ /** @var IUserManager */
+ private $userManager;
+ /** @var string */
+ private $userId = '';
- public function __construct(IManager $contactsManager, ICloudIdManager $cloudIdManager, IConfig $config) {
+ public function __construct(IManager $contactsManager, ICloudIdManager $cloudIdManager, IConfig $config, IUserManager $userManager, IUserSession $userSession) {
$this->contactsManager = $contactsManager;
$this->cloudIdManager = $cloudIdManager;
$this->config = $config;
-
+ $this->userManager = $userManager;
+ $user = $userSession->getUser();
+ if ($user !== null) {
+ $this->userId = $user->getUID();
+ }
$this->shareeEnumeration = $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') === 'yes';
}
@@ -63,23 +73,47 @@ class RemotePlugin implements ISearchPlugin {
}
if (isset($contact['CLOUD'])) {
$cloudIds = $contact['CLOUD'];
- if (!is_array($cloudIds)) {
+ if (is_string($cloudIds)) {
$cloudIds = [$cloudIds];
}
$lowerSearch = strtolower($search);
foreach ($cloudIds as $cloudId) {
+ $cloudIdType = '';
+ if (\is_array($cloudId)) {
+ $cloudIdData = $cloudId;
+ $cloudId = $cloudIdData['value'];
+ $cloudIdType = $cloudIdData['type'];
+ }
try {
- list(, $serverUrl) = $this->splitUserRemote($cloudId);
+ list($remoteUser, $serverUrl) = $this->splitUserRemote($cloudId);
} catch (\InvalidArgumentException $e) {
continue;
}
+ $localUser = $this->userManager->get($remoteUser);
+ /**
+ * Add local share if remote cloud id matches a local user ones
+ */
+ if ($localUser !== null && $remoteUser !== $this->userId && $cloudId === $localUser->getCloudId() ) {
+ $result['wide'][] = [
+ 'label' => $contact['FN'],
+ 'uuid' => $contact['UID'],
+ 'value' => [
+ 'shareType' => Share::SHARE_TYPE_USER,
+ 'shareWith' => $remoteUser
+ ]
+ ];
+ }
+
if (strtolower($contact['FN']) === $lowerSearch || strtolower($cloudId) === $lowerSearch) {
if (strtolower($cloudId) === $lowerSearch) {
$searchResult->markExactIdMatch($resultType);
}
$result['exact'][] = [
'label' => $contact['FN'] . " ($cloudId)",
+ 'uuid' => $contact['UID'],
+ 'name' => $contact['FN'],
+ 'type' => $cloudIdType,
'value' => [
'shareType' => Share::SHARE_TYPE_REMOTE,
'shareWith' => $cloudId,
@@ -89,6 +123,9 @@ class RemotePlugin implements ISearchPlugin {
} else {
$result['wide'][] = [
'label' => $contact['FN'] . " ($cloudId)",
+ 'uuid' => $contact['UID'],
+ 'name' => $contact['FN'],
+ 'type' => $cloudIdType,
'value' => [
'shareType' => Share::SHARE_TYPE_REMOTE,
'shareWith' => $cloudId,
@@ -106,14 +143,24 @@ class RemotePlugin implements ISearchPlugin {
$result['wide'] = array_slice($result['wide'], $offset, $limit);
}
+ /**
+ * Add generic share with remote item for valid cloud ids that are not users of the local instance
+ */
if (!$searchResult->hasExactIdMatch($resultType) && $this->cloudIdManager->isValidCloudId($search) && $offset === 0) {
- $result['exact'][] = [
- 'label' => $search,
- 'value' => [
- 'shareType' => Share::SHARE_TYPE_REMOTE,
- 'shareWith' => $search,
- ],
- ];
+ try {
+ list($remoteUser, $serverUrl) = $this->splitUserRemote($search);
+ $localUser = $this->userManager->get($remoteUser);
+ if ($localUser === null || $search !== $localUser->getCloudId()) {
+ $result['exact'][] = [
+ 'label' => $search,
+ 'value' => [
+ 'shareType' => Share::SHARE_TYPE_REMOTE,
+ 'shareWith' => $search,
+ ],
+ ];
+ }
+ } catch (\InvalidArgumentException $e) {
+ }
}
$searchResult->addResultSet($resultType, $result['wide'], $result['exact']);
diff --git a/lib/private/Files/ObjectStore/ObjectStoreStorage.php b/lib/private/Files/ObjectStore/ObjectStoreStorage.php
index 3ce919a4cb..71acd27783 100644
--- a/lib/private/Files/ObjectStore/ObjectStoreStorage.php
+++ b/lib/private/Files/ObjectStore/ObjectStoreStorage.php
@@ -28,6 +28,7 @@ namespace OC\Files\ObjectStore;
use Icewind\Streams\CallbackWrapper;
use Icewind\Streams\IteratorDirectory;
use OC\Files\Cache\CacheEntry;
+use OC\Files\Stream\CountReadStream;
use OCP\Files\ObjectStore\IObjectStore;
class ObjectStoreStorage extends \OC\Files\Storage\Common {
@@ -382,41 +383,8 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
}
public function writeBack($tmpFile, $path) {
- $stat = $this->stat($path);
- if (empty($stat)) {
- // create new file
- $stat = array(
- 'permissions' => \OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_CREATE,
- );
- }
- // update stat with new data
- $mTime = time();
- $stat['size'] = filesize($tmpFile);
- $stat['mtime'] = $mTime;
- $stat['storage_mtime'] = $mTime;
-
- // run path based detection first, to use file extension because $tmpFile is only a random string
- $mimetypeDetector = \OC::$server->getMimeTypeDetector();
- $mimetype = $mimetypeDetector->detectPath($path);
- if ($mimetype === 'application/octet-stream') {
- $mimetype = $mimetypeDetector->detect($tmpFile);
- }
-
- $stat['mimetype'] = $mimetype;
- $stat['etag'] = $this->getETag($path);
-
- $fileId = $this->getCache()->put($path, $stat);
- try {
- //upload to object storage
- $this->objectStore->writeObject($this->getURN($fileId), fopen($tmpFile, 'r'));
- } catch (\Exception $ex) {
- $this->getCache()->remove($path);
- $this->logger->logException($ex, [
- 'app' => 'objectstore',
- 'message' => 'Could not create object ' . $this->getURN($fileId) . ' for ' . $path,
- ]);
- throw $ex; // make this bubble up
- }
+ $size = filesize($tmpFile);
+ $this->writeStream($path, fopen($tmpFile, 'r'), $size);
}
/**
@@ -433,4 +401,60 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
public function needsPartFile() {
return false;
}
+
+ public function file_put_contents($path, $data) {
+ $stream = fopen('php://temp', 'r+');
+ fwrite($stream, $data);
+ rewind($stream);
+ return $this->writeStream($path, $stream, strlen($data)) > 0;
+ }
+
+ public function writeStream(string $path, $stream, int $size = null): int {
+ $stat = $this->stat($path);
+ if (empty($stat)) {
+ // create new file
+ $stat = [
+ 'permissions' => \OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_CREATE,
+ ];
+ }
+ // update stat with new data
+ $mTime = time();
+ $stat['size'] = (int)$size;
+ $stat['mtime'] = $mTime;
+ $stat['storage_mtime'] = $mTime;
+
+ $mimetypeDetector = \OC::$server->getMimeTypeDetector();
+ $mimetype = $mimetypeDetector->detectPath($path);
+
+ $stat['mimetype'] = $mimetype;
+ $stat['etag'] = $this->getETag($path);
+
+ $fileId = $this->getCache()->put($path, $stat);
+ try {
+ //upload to object storage
+ if ($size === null) {
+ $countStream = CountReadStream::wrap($stream, function ($writtenSize) use ($fileId, &$size) {
+ $this->getCache()->update($fileId, [
+ 'size' => $writtenSize
+ ]);
+ $size = $writtenSize;
+ });
+ $this->objectStore->writeObject($this->getURN($fileId), $countStream);
+ if (is_resource($countStream)) {
+ fclose($countStream);
+ }
+ } else {
+ $this->objectStore->writeObject($this->getURN($fileId), $stream);
+ }
+ } catch (\Exception $ex) {
+ $this->getCache()->remove($path);
+ $this->logger->logException($ex, [
+ 'app' => 'objectstore',
+ 'message' => 'Could not create object ' . $this->getURN($fileId) . ' for ' . $path,
+ ]);
+ throw $ex; // make this bubble up
+ }
+
+ return $size;
+ }
}
diff --git a/lib/private/Files/Storage/Common.php b/lib/private/Files/Storage/Common.php
index b6c82f3a1d..72fe3a7979 100644
--- a/lib/private/Files/Storage/Common.php
+++ b/lib/private/Files/Storage/Common.php
@@ -54,6 +54,7 @@ use OCP\Files\InvalidPathException;
use OCP\Files\ReservedWordException;
use OCP\Files\Storage\ILockingStorage;
use OCP\Files\Storage\IStorage;
+use OCP\Files\Storage\IWriteStreamStorage;
use OCP\ILogger;
use OCP\Lock\ILockingProvider;
use OCP\Lock\LockedException;
@@ -69,7 +70,7 @@ use OCP\Lock\LockedException;
* Some \OC\Files\Storage\Common methods call functions which are first defined
* in classes which extend it, e.g. $this->stat() .
*/
-abstract class Common implements Storage, ILockingStorage {
+abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage {
use LocalTempFileTrait;
@@ -809,4 +810,23 @@ abstract class Common implements Storage, ILockingStorage {
public function needsPartFile() {
return true;
}
+
+ /**
+ * fallback implementation
+ *
+ * @param string $path
+ * @param resource $stream
+ * @param int $size
+ * @return int
+ */
+ public function writeStream(string $path, $stream, int $size = null): int {
+ $target = $this->fopen($path, 'w');
+ if (!$target) {
+ return 0;
+ }
+ list($count, $result) = \OC_Helper::streamCopy($stream, $target);
+ fclose($stream);
+ fclose($target);
+ return $count;
+ }
}
diff --git a/lib/private/Files/Storage/Local.php b/lib/private/Files/Storage/Local.php
index 46b53dcf95..5f7232e64b 100644
--- a/lib/private/Files/Storage/Local.php
+++ b/lib/private/Files/Storage/Local.php
@@ -462,4 +462,8 @@ class Local extends \OC\Files\Storage\Common {
return parent::moveFromStorage($sourceStorage, $sourceInternalPath, $targetInternalPath);
}
}
+
+ public function writeStream(string $path, $stream, int $size = null): int {
+ return (int)file_put_contents($this->getSourcePath($path), $stream);
+ }
}
diff --git a/lib/private/Files/Storage/Wrapper/Encryption.php b/lib/private/Files/Storage/Wrapper/Encryption.php
index 42653b2d4a..e1c1225e0c 100644
--- a/lib/private/Files/Storage/Wrapper/Encryption.php
+++ b/lib/private/Files/Storage/Wrapper/Encryption.php
@@ -1029,4 +1029,13 @@ class Encryption extends Wrapper {
}
+ public function writeStream(string $path, $stream, int $size = null): int {
+ // always fall back to fopen
+ $target = $this->fopen($path, 'w');
+ list($count, $result) = \OC_Helper::streamCopy($stream, $target);
+ fclose($stream);
+ fclose($target);
+ return $count;
+ }
+
}
diff --git a/lib/private/Files/Storage/Wrapper/Jail.php b/lib/private/Files/Storage/Wrapper/Jail.php
index 56514af6d8..f21b571646 100644
--- a/lib/private/Files/Storage/Wrapper/Jail.php
+++ b/lib/private/Files/Storage/Wrapper/Jail.php
@@ -29,6 +29,7 @@ use OC\Files\Cache\Wrapper\CacheJail;
use OC\Files\Cache\Wrapper\JailPropagator;
use OC\Files\Filesystem;
use OCP\Files\Storage\IStorage;
+use OCP\Files\Storage\IWriteStreamStorage;
use OCP\Lock\ILockingProvider;
/**
@@ -515,4 +516,18 @@ class Jail extends Wrapper {
$this->propagator = new JailPropagator($storage, \OC::$server->getDatabaseConnection());
return $this->propagator;
}
+
+ public function writeStream(string $path, $stream, int $size = null): int {
+ $storage = $this->getWrapperStorage();
+ if ($storage->instanceOfStorage(IWriteStreamStorage::class)) {
+ /** @var IWriteStreamStorage $storage */
+ return $storage->writeStream($this->getUnjailedPath($path), $stream, $size);
+ } else {
+ $target = $this->fopen($path, 'w');
+ list($count, $result) = \OC_Helper::streamCopy($stream, $target);
+ fclose($stream);
+ fclose($target);
+ return $count;
+ }
+ }
}
diff --git a/lib/private/Files/Storage/Wrapper/Wrapper.php b/lib/private/Files/Storage/Wrapper/Wrapper.php
index 060c596ad6..f9c84b89fe 100644
--- a/lib/private/Files/Storage/Wrapper/Wrapper.php
+++ b/lib/private/Files/Storage/Wrapper/Wrapper.php
@@ -32,9 +32,10 @@ namespace OC\Files\Storage\Wrapper;
use OCP\Files\InvalidPathException;
use OCP\Files\Storage\ILockingStorage;
use OCP\Files\Storage\IStorage;
+use OCP\Files\Storage\IWriteStreamStorage;
use OCP\Lock\ILockingProvider;
-class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage {
+class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage, IWriteStreamStorage {
/**
* @var \OC\Files\Storage\Storage $storage
*/
@@ -621,4 +622,18 @@ class Wrapper implements \OC\Files\Storage\Storage, ILockingStorage {
public function needsPartFile() {
return $this->getWrapperStorage()->needsPartFile();
}
+
+ public function writeStream(string $path, $stream, int $size = null): int {
+ $storage = $this->getWrapperStorage();
+ if ($storage->instanceOfStorage(IWriteStreamStorage::class)) {
+ /** @var IWriteStreamStorage $storage */
+ return $storage->writeStream($path, $stream, $size);
+ } else {
+ $target = $this->fopen($path, 'w');
+ list($count, $result) = \OC_Helper::streamCopy($stream, $target);
+ fclose($stream);
+ fclose($target);
+ return $count;
+ }
+ }
}
diff --git a/lib/private/Files/Stream/CountReadStream.php b/lib/private/Files/Stream/CountReadStream.php
new file mode 100644
index 0000000000..93cadf8f21
--- /dev/null
+++ b/lib/private/Files/Stream/CountReadStream.php
@@ -0,0 +1,65 @@
+
+ *
+ * @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 .
+ *
+ */
+
+namespace OC\Files\Stream;
+
+use Icewind\Streams\Wrapper;
+
+class CountReadStream extends Wrapper {
+ /** @var int */
+ private $count;
+
+ /** @var callback */
+ private $callback;
+
+ public static function wrap($source, $callback) {
+ $context = stream_context_create(array(
+ 'count' => array(
+ 'source' => $source,
+ 'callback' => $callback,
+ )
+ ));
+ return Wrapper::wrapSource($source, $context, 'count', self::class);
+ }
+
+ public function dir_opendir($path, $options) {
+ return false;
+ }
+
+ public function stream_open($path, $mode, $options, &$opened_path) {
+ $context = $this->loadContext('count');
+
+ $this->callback = $context['callback'];
+ return true;
+ }
+
+ public function stream_read($count) {
+ $result = parent::stream_read($count);
+ $this->count += strlen($result);
+ return $result;
+ }
+
+ public function stream_close() {
+ $result = parent::stream_close();
+ call_user_func($this->callback, $this->count);
+ return $result;
+ }
+}
diff --git a/lib/private/FullTextSearch/FullTextSearchManager.php b/lib/private/FullTextSearch/FullTextSearchManager.php
new file mode 100644
index 0000000000..9a9b077cf2
--- /dev/null
+++ b/lib/private/FullTextSearch/FullTextSearchManager.php
@@ -0,0 +1,227 @@
+
+ * @copyright 2018, Maxence Lange
+ * @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 .
+ *
+ */
+
+
+namespace OC\FullTextSearch;
+
+
+use OCP\FullTextSearch\Exceptions\FullTextSearchAppNotAvailableException;
+use OCP\FullTextSearch\IFullTextSearchManager;
+use OCP\FullTextSearch\Model\IIndex;
+use OCP\FullTextSearch\Model\ISearchResult;
+use OCP\FullTextSearch\Service\IIndexService;
+use OCP\FullTextSearch\Service\IProviderService;
+use OCP\FullTextSearch\Service\ISearchService;
+
+
+/**
+ * Class FullTextSearchManager
+ *
+ * @package OC\FullTextSearch
+ */
+class FullTextSearchManager implements IFullTextSearchManager {
+
+
+ /** @var IProviderService */
+ private $providerService;
+
+ /** @var IIndexService */
+ private $indexService;
+
+ /** @var ISearchService */
+ private $searchService;
+
+
+ /**
+ * @since 15.0.0
+ *
+ * @param IProviderService $providerService
+ */
+ public function registerProviderService(IProviderService $providerService) {
+ $this->providerService = $providerService;
+ }
+
+ /**
+ * @since 15.0.0
+ *
+ * @param IIndexService $indexService
+ */
+ public function registerIndexService(IIndexService $indexService) {
+ $this->indexService = $indexService;
+ }
+
+ /**
+ * @since 15.0.0
+ *
+ * @param ISearchService $searchService
+ */
+ public function registerSearchService(ISearchService $searchService) {
+ $this->searchService = $searchService;
+ }
+
+
+ /**
+ * @return IProviderService
+ * @throws FullTextSearchAppNotAvailableException
+ */
+ private function getProviderService(): IProviderService {
+ if ($this->providerService === null) {
+ throw new FullTextSearchAppNotAvailableException('No IProviderService registered');
+ }
+
+ return $this->providerService;
+ }
+
+
+ /**
+ * @return IIndexService
+ * @throws FullTextSearchAppNotAvailableException
+ */
+ private function getIndexService(): IIndexService {
+ if ($this->indexService === null) {
+ throw new FullTextSearchAppNotAvailableException('No IIndexService registered');
+ }
+
+ return $this->indexService;
+ }
+
+
+ /**
+ * @return ISearchService
+ * @throws FullTextSearchAppNotAvailableException
+ */
+ private function getSearchService(): ISearchService {
+ if ($this->searchService === null) {
+ throw new FullTextSearchAppNotAvailableException('No ISearchService registered');
+ }
+
+ return $this->searchService;
+ }
+
+
+ /**
+ * @throws FullTextSearchAppNotAvailableException
+ */
+ public function addJavascriptAPI() {
+ $this->getProviderService()->addJavascriptAPI();
+ }
+
+
+ /**
+ * @param string $providerId
+ *
+ * @return bool
+ * @throws FullTextSearchAppNotAvailableException
+ */
+ public function isProviderIndexed(string $providerId): bool {
+ return $this->getProviderService()->isProviderIndexed($providerId);
+ }
+
+
+ /**
+ * @param string $providerId
+ * @param string $documentId
+ * @return IIndex
+ * @throws FullTextSearchAppNotAvailableException
+ */
+ public function getIndex(string $providerId, string $documentId): IIndex {
+ return $this->getIndexService()->getIndex($providerId, $documentId);
+ }
+
+ /**
+ * @param string $providerId
+ * @param string $documentId
+ * @param string $userId
+ * @param int $status
+ *
+ * @see IIndex for available value for $status.
+ *
+ * @return IIndex
+ * @throws FullTextSearchAppNotAvailableException
+ */
+ public function createIndex(string $providerId, string $documentId, string $userId, int $status = 0): IIndex {
+ return $this->getIndexService()->getIndex($providerId, $documentId);
+ }
+
+
+ /**
+ * @param string $providerId
+ * @param string $documentId
+ * @param int $status
+ * @param bool $reset
+ *
+ * @see IIndex for available value for $status.
+ *
+ * @throws FullTextSearchAppNotAvailableException
+ */
+ public function updateIndexStatus(string $providerId, string $documentId, int $status, bool $reset = false) {
+ $this->getIndexService()->updateIndexStatus($providerId, $documentId, $status, $reset);
+ }
+
+ /**
+ * @param string $providerId
+ * @param array $documentIds
+ * @param int $status
+ * @param bool $reset
+ *
+ * @see IIndex for available value for $status.
+ *
+ * @throws FullTextSearchAppNotAvailableException
+ */
+ public function updateIndexesStatus(string $providerId, array $documentIds, int $status, bool $reset = false) {
+ $this->getIndexService()->updateIndexesStatus($providerId, $documentIds, $status, $reset);
+ }
+
+
+ /**
+ * @param IIndex[] $indexes
+ *
+ * @throws FullTextSearchAppNotAvailableException
+ */
+ public function updateIndexes(array $indexes) {
+ $this->getIndexService()->updateIndexes($indexes);
+ }
+
+
+ /**
+ * @param array $request
+ * @param string $userId
+ *
+ * @return ISearchResult[]
+ * @throws FullTextSearchAppNotAvailableException
+ */
+ public function search(array $request, string $userId = ''): array {
+ $searchRequest = $this->getSearchService()->generateSearchRequest($request);
+
+ return $this->getSearchService()->search($userId, $searchRequest);
+ }
+
+
+}
+
diff --git a/lib/private/Preview/Generator.php b/lib/private/Preview/Generator.php
index 86579e3480..1f7decf2b7 100644
--- a/lib/private/Preview/Generator.php
+++ b/lib/private/Preview/Generator.php
@@ -298,19 +298,23 @@ class Generator {
if ($height !== $maxHeight && $width !== $maxWidth) {
/*
- * Scale to the nearest power of two
+ * Scale to the nearest power of four
*/
- $pow2height = 2 ** ceil(log($height) / log(2));
- $pow2width = 2 ** ceil(log($width) / log(2));
+ $pow4height = 4 ** ceil(log($height) / log(4));
+ $pow4width = 4 ** ceil(log($width) / log(4));
- $ratioH = $height / $pow2height;
- $ratioW = $width / $pow2width;
+ // Minimum size is 64
+ $pow4height = max($pow4height, 64);
+ $pow4width = max($pow4width, 64);
+
+ $ratioH = $height / $pow4height;
+ $ratioW = $width / $pow4width;
if ($ratioH < $ratioW) {
- $width = $pow2width;
+ $width = $pow4width;
$height /= $ratioW;
} else {
- $height = $pow2height;
+ $height = $pow4height;
$width /= $ratioH;
}
}
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 32d7705919..ceecd059df 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -82,6 +82,7 @@ use OC\Files\Node\LazyRoot;
use OC\Files\Node\Root;
use OC\Files\Storage\StorageFactory;
use OC\Files\View;
+use OC\FullTextSearch\FullTextSearchManager;
use OC\Http\Client\ClientService;
use OC\IntegrityCheck\Checker;
use OC\IntegrityCheck\Helpers\AppLocator;
@@ -138,6 +139,7 @@ use OCP\Federation\ICloudIdManager;
use OCP\Authentication\LoginCredentials\IStore;
use OCP\Files\NotFoundException;
use OCP\Files\Storage\IStorageFactory;
+use OCP\FullTextSearch\IFullTextSearchManager;
use OCP\GlobalScale\IConfig;
use OCP\ICacheFactory;
use OCP\IDBConnection;
@@ -758,7 +760,7 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerService('TrustedDomainHelper', function ($c) {
return new TrustedDomainHelper($this->getConfig());
});
- $this->registerService('Throttler', function (Server $c) {
+ $this->registerService(Throttler::class, function (Server $c) {
return new Throttler(
$c->getDatabaseConnection(),
new TimeFactory(),
@@ -766,6 +768,7 @@ class Server extends ServerContainer implements IServerContainer {
$c->getConfig()
);
});
+ $this->registerAlias('Throttler', Throttler::class);
$this->registerService('IntegrityCodeChecker', function (Server $c) {
// IConfig and IAppManager requires a working database. This code
// might however be called when ownCloud is not yet setup.
@@ -1183,6 +1186,7 @@ class Server extends ServerContainer implements IServerContainer {
});
$this->registerAlias(IDashboardManager::class, Dashboard\DashboardManager::class);
+ $this->registerAlias(IFullTextSearchManager::class, FullTextSearchManager::class);
$this->connectDispatcher();
}
diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php
index 9c5d78a595..3dcca0facb 100644
--- a/lib/private/Share20/DefaultShareProvider.php
+++ b/lib/private/Share20/DefaultShareProvider.php
@@ -296,6 +296,7 @@ class DefaultShareProvider implements IShareProvider {
->set('token', $qb->createNamedParameter($share->getToken()))
->set('expiration', $qb->createNamedParameter($share->getExpirationDate(), IQueryBuilder::PARAM_DATE))
->set('note', $qb->createNamedParameter($share->getNote()))
+ ->set('hide_download', $qb->createNamedParameter($share->getHideDownload() ? 1 : 0), IQueryBuilder::PARAM_INT)
->execute();
}
@@ -953,6 +954,7 @@ class DefaultShareProvider implements IShareProvider {
}
$share->setProviderId($this->identifier());
+ $share->setHideDownload((int)$data['hide_download'] === 1);
return $share;
}
diff --git a/lib/private/Share20/Share.php b/lib/private/Share20/Share.php
index 71c0453d9e..e218360f87 100644
--- a/lib/private/Share20/Share.php
+++ b/lib/private/Share20/Share.php
@@ -30,6 +30,7 @@ use OCP\Files\Node;
use OCP\Files\NotFoundException;
use OCP\IUserManager;
use OCP\Share\Exceptions\IllegalIDChangeException;
+use OCP\Share\IShare;
class Share implements \OCP\Share\IShare {
@@ -85,6 +86,9 @@ class Share implements \OCP\Share\IShare {
/** @var ICacheEntry|null */
private $nodeCacheEntry;
+ /** @var bool */
+ private $hideDownload = false;
+
public function __construct(IRootFolder $rootFolder, IUserManager $userManager) {
$this->rootFolder = $rootFolder;
$this->userManager = $userManager;
@@ -514,4 +518,13 @@ class Share implements \OCP\Share\IShare {
public function getNodeCacheEntry() {
return $this->nodeCacheEntry;
}
+
+ public function setHideDownload(bool $hide): IShare {
+ $this->hideDownload = $hide;
+ return $this;
+ }
+
+ public function getHideDownload(): bool {
+ return $this->hideDownload;
+ }
}
diff --git a/lib/private/User/Session.php b/lib/private/User/Session.php
index a9c638dca9..674f38e240 100644
--- a/lib/private/User/Session.php
+++ b/lib/private/User/Session.php
@@ -38,6 +38,7 @@
namespace OC\User;
use OC;
+use OC\Authentication\Exceptions\ExpiredTokenException;
use OC\Authentication\Exceptions\InvalidTokenException;
use OC\Authentication\Exceptions\PasswordlessTokenException;
use OC\Authentication\Exceptions\PasswordLoginForbiddenException;
@@ -401,7 +402,13 @@ class Session implements IUserSession, Emitter {
$this->manager->emit('\OC\User', 'preLogin', array($user, $password));
}
- $isTokenPassword = $this->isTokenPassword($password);
+ try {
+ $isTokenPassword = $this->isTokenPassword($password);
+ } catch (ExpiredTokenException $e) {
+ // Just return on an expired token no need to check further or record a failed login
+ return false;
+ }
+
if (!$isTokenPassword && $this->isTokenAuthEnforced()) {
throw new PasswordLoginForbiddenException();
}
@@ -474,11 +481,14 @@ class Session implements IUserSession, Emitter {
*
* @param string $password
* @return boolean
+ * @throws ExpiredTokenException
*/
public function isTokenPassword($password) {
try {
$this->tokenProvider->getToken($password);
return true;
+ } catch (ExpiredTokenException $e) {
+ throw $e;
} catch (InvalidTokenException $ex) {
return false;
}
diff --git a/lib/public/Files/Storage/IWriteStreamStorage.php b/lib/public/Files/Storage/IWriteStreamStorage.php
new file mode 100644
index 0000000000..39a28dd037
--- /dev/null
+++ b/lib/public/Files/Storage/IWriteStreamStorage.php
@@ -0,0 +1,40 @@
+
+ *
+ * @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 .
+ *
+ */
+
+namespace OCP\Files\Storage;
+
+/**
+ * Interface that adds the ability to write a stream directly to file
+ *
+ * @since 15.0.0
+ */
+interface IWriteStreamStorage extends IStorage {
+ /**
+ * Write the data from a stream to a file
+ *
+ * @param string $path
+ * @param resource $stream
+ * @param int|null $size the size of the stream if known in advance
+ * @return int the number of bytes written
+ * @since 15.0.0
+ */
+ public function writeStream(string $path, $stream, int $size = null): int;
+}
diff --git a/lib/public/Files_FullTextSearch/Model/AFilesDocument.php b/lib/public/Files_FullTextSearch/Model/AFilesDocument.php
new file mode 100644
index 0000000000..3eed956df8
--- /dev/null
+++ b/lib/public/Files_FullTextSearch/Model/AFilesDocument.php
@@ -0,0 +1,112 @@
+
+ * @copyright 2018
+ * @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 .
+ *
+ */
+
+
+namespace OCP\Files_FullTextSearch\Model;
+
+
+use OCP\FullTextSearch\Model\IndexDocument;
+
+
+/**
+ * Abstract Class AFilesDocument
+ *
+ * This is mostly used by 3rd party apps that want to complete the IndexDocument
+ * with more information about a file before its index:
+ *
+ * \OC::$server->getEventDispatcher()->addListener(
+ * '\OCA\Files_FullTextSearch::onFileIndexing',
+ * function(GenericEvent $e) {
+ * //@var \OCP\Files\Node $file
+ * $file = $e->getArgument('file');
+ *
+ * // @var \OCP\Files_FullTextSearch\Model\AFilesDocument $document
+ * $document = $e->getArgument('document');
+ *
+ * }
+ * );
+ *
+ * @since 15.0.0
+ *
+ * @package OCP\Files_FullTextSearch\Model
+ */
+abstract class AFilesDocument extends IndexDocument {
+
+
+ /**
+ * Returns the owner of the document/file.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ abstract public function getOwnerId(): string;
+
+
+ /**
+ * Returns the current viewer of the document/file.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ abstract public function getViewerId(): string;
+
+
+ /**
+ * Returns the type of the document/file.
+ *
+ * @since 15.0.0
+ *
+ * @return string \OCP\Files\FileInfo::TYPE_FILE|\OCP\Files\FileInfo::TYPE_FOLDER
+ */
+ abstract public function getType(): string;
+
+
+ /**
+ * Returns the mimetype of the document/file.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ abstract public function getMimetype(): string;
+
+ /**
+ * Returns the path of the document/file.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ abstract public function getPath(): string;
+
+
+}
+
diff --git a/lib/public/FullTextSearch/Exceptions/FullTextSearchAppNotAvailableException.php b/lib/public/FullTextSearch/Exceptions/FullTextSearchAppNotAvailableException.php
new file mode 100644
index 0000000000..4363376f0f
--- /dev/null
+++ b/lib/public/FullTextSearch/Exceptions/FullTextSearchAppNotAvailableException.php
@@ -0,0 +1,42 @@
+
+ * @copyright 2018, Maxence Lange
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch\Exceptions;
+
+/**
+ * @since 15.0.0
+ *
+ * Class FullTextSearchAppNotAvailableException
+ *
+ * @package OCP\FullTextSearch\Exceptions
+ */
+class FullTextSearchAppNotAvailableException extends \Exception {
+}
+
diff --git a/lib/public/FullTextSearch/IFullTextSearchManager.php b/lib/public/FullTextSearch/IFullTextSearchManager.php
new file mode 100644
index 0000000000..1027f7ade7
--- /dev/null
+++ b/lib/public/FullTextSearch/IFullTextSearchManager.php
@@ -0,0 +1,186 @@
+
+ * @copyright 2018, Maxence Lange
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch;
+
+
+use OCP\FullTextSearch\Model\IIndex;
+use OCP\FullTextSearch\Model\ISearchResult;
+use OCP\FullTextSearch\Service\IIndexService;
+use OCP\FullTextSearch\Service\IProviderService;
+use OCP\FullTextSearch\Service\ISearchService;
+
+
+/**
+ * Interface IFullTextSearchManager
+ *
+ * Should be used to manage FullTextSearch from the app that contains your
+ * Content Provider/Search Platform.
+ *
+ * @since 15.0.0
+ *
+ * @package OCP\FullTextSearch
+ */
+interface IFullTextSearchManager {
+
+
+ /**
+ * Register a IProviderService.
+ *
+ * @since 15.0.0
+ *
+ * @param IProviderService $providerService
+ */
+ public function registerProviderService(IProviderService $providerService);
+
+ /**
+ * Register a IIndexService.
+ *
+ * @since 15.0.0
+ *
+ * @param IIndexService $indexService
+ */
+ public function registerIndexService(IIndexService $indexService);
+
+ /**
+ * Register a ISearchService.
+ *
+ * @since 15.0.0
+ *
+ * @param ISearchService $searchService
+ */
+ public function registerSearchService(ISearchService $searchService);
+
+
+ /**
+ * Add the Javascript API in the navigation page of an app.
+ * Needed to replace the default search.
+ *
+ * @since 15.0.0
+ */
+ public function addJavascriptAPI();
+
+
+ /**
+ * Check if the provider $providerId is already indexed.
+ *
+ * @since 15.0.0
+ *
+ * @param string $providerId
+ *
+ * @return bool
+ */
+ public function isProviderIndexed(string $providerId): bool;
+
+
+ /**
+ * Retrieve an Index from the database, based on the Id of the Provider
+ * and the Id of the Document
+ *
+ * @since 15.0.0
+ *
+ * @param string $providerId
+ * @param string $documentId
+ *
+ * @return IIndex
+ */
+ public function getIndex(string $providerId, string $documentId): IIndex;
+
+
+ /**
+ * Create a new Index.
+ *
+ * This method must be called when a new document is created.
+ *
+ * @since 15.0.0
+ *
+ * @param string $providerId
+ * @param string $documentId
+ * @param string $userId
+ * @param int $status
+ *
+ * @return IIndex
+ */
+ public function createIndex(string $providerId, string $documentId, string $userId, int $status = 0): IIndex;
+
+
+ /**
+ * Update the status of an Index. status is a bitflag, setting $reset to
+ * true will reset the status to the value defined in the parameter.
+ *
+ * @since 15.0.0
+ *
+ * @param string $providerId
+ * @param string $documentId
+ * @param int $status
+ * @param bool $reset
+ */
+ public function updateIndexStatus(string $providerId, string $documentId, int $status, bool $reset = false);
+
+
+ /**
+ * Update the status of an array of Index. status is a bit flag, setting $reset to
+ * true will reset the status to the value defined in the parameter.
+ *
+ * @since 15.0.0
+ *
+ * @param string $providerId
+ * @param array $documentIds
+ * @param int $status
+ * @param bool $reset
+ */
+ public function updateIndexesStatus(string $providerId, array $documentIds, int $status, bool $reset = false);
+
+ /**
+ * Update an array of Index.
+ *
+ * @since 15.0.0
+ *
+ * @param IIndex[] $indexes
+ */
+ public function updateIndexes(array $indexes);
+
+ /**
+ * Search using an array as request. If $userId is empty, will use the
+ * current session.
+ *
+ * @see ISearchService::generateSearchRequest
+ *
+ * @since 15.0.0
+ *
+ * @param array $request
+ * @param string $userId
+ * @return ISearchResult[]
+ */
+ public function search(array $request, string $userId = ''): array;
+
+
+}
+
diff --git a/lib/public/FullTextSearch/IFullTextSearchPlatform.php b/lib/public/FullTextSearch/IFullTextSearchPlatform.php
new file mode 100644
index 0000000000..f3f9a35bae
--- /dev/null
+++ b/lib/public/FullTextSearch/IFullTextSearchPlatform.php
@@ -0,0 +1,227 @@
+
+ * @copyright 2018
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch;
+
+
+use OCP\FullTextSearch\Model\DocumentAccess;
+use OCP\FullTextSearch\Model\IIndex;
+use OCP\FullTextSearch\Model\IndexDocument;
+use OCP\FullTextSearch\Model\IRunner;
+use OCP\FullTextSearch\Model\ISearchResult;
+
+
+/**
+ * Interface IFullTextSearchPlatform
+ *
+ * This interface must be use when creating a Search Platform for FullTextSearch.
+ *
+ * A Search Platform is an extension to the FullTextSearch that will act as a
+ * a gateway between FullTextSearch and a search server (ie. ElasticSearch,
+ * Solr, ...)
+ *
+ * Multiple Search Platform can exist at the same time in Nextcloud, however only
+ * one Search Platform will be used by FullTextSearch.
+ * Administrator must select at least one Search Platform to be used by
+ * FullTextSearch in the admin settings page.
+ *
+ * The content provided by FullTextSearch comes in chunk from multiple Content
+ * Provider. Each chunk is identified by the ID of the Content Provider, and the
+ * ID of the document.
+ *
+ *
+ * To oversimplify the mechanism:
+ *
+ * - When indexing, FullTextSearch will send providerId, documentId, content.
+ * - When searching within the content of a Content Provider, identified by its
+ * providerId, FullTextSearch expect documentId as result.
+ *
+ *
+ * The Search Platform ia a PHP class that implement this interface and is defined
+ * in appinfo/info.xml of the app that contains that class:
+ *
+ *
+ * OCA\YourApp\YourSearchPlatform
+ *
+ *
+ * Multiple Search Platform can be defined in a single app.
+ *
+ * @since 15.0.0
+ *
+ * @package OCP\FullTextSearch
+ */
+interface IFullTextSearchPlatform {
+
+
+ /**
+ * Must returns a unique Id used to identify the Search Platform.
+ * Id must contains only alphanumeric chars, with no space.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getId(): string;
+
+
+ /**
+ * Must returns a descriptive name of the Search Platform.
+ * This is used mainly in the admin settings page to display the list of
+ * available Search Platform
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getName(): string;
+
+
+ /**
+ * should returns the current configuration of the Search Platform.
+ * This is used to display the configuration when using the
+ * ./occ fulltextsearch:check command line.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getConfiguration(): array;
+
+
+ /**
+ * Set the wrapper of the currently executed process.
+ * Because the index process can be long and heavy, and because errors can
+ * be encountered during the process, the IRunner is a wrapper that allow the
+ * Search Platform to communicate with the process initiated by
+ * FullTextSearch.
+ *
+ * The IRunner is coming with some methods so the Search Platform can
+ * returns important information and errors to be displayed to the admin.
+ *
+ * @since 15.0.0
+ *
+ * @param IRunner $runner
+ */
+ public function setRunner(IRunner $runner);
+
+
+ /**
+ * Called when FullTextSearch is loading your Search Platform.
+ *
+ * @since 15.0.0
+ */
+ public function loadPlatform();
+
+
+ /**
+ * Called to check that your Search Platform is correctly configured and that
+ * This is also the right place to check that the Search Service is available.
+ *
+ * @since 15.0.0
+ *
+ * @return bool
+ */
+ public function testPlatform(): bool;
+
+
+ /**
+ * Called before an index is initiated.
+ * Best place to initiate some stuff on the Search Server (mapping, ...)
+ *
+ * @since 15.0.0
+ */
+ public function initializeIndex();
+
+
+ /**
+ * Reset the indexes for a specific providerId.
+ * $providerId can be 'all' if it is a global reset.
+ *
+ * @since 15.0.0
+ *
+ * @param string $providerId
+ */
+ public function resetIndex(string $providerId);
+
+
+ /**
+ * Deleting some IIndex, sent in an array
+ *
+ * @see IIndex
+ *
+ * @since 15.0.0
+ *
+ * @param IIndex[] $indexes
+ */
+ public function deleteIndexes(array $indexes);
+
+
+ /**
+ * Indexing a document.
+ *
+ * @see IndexDocument
+ *
+ * @since 15.0.0
+ *
+ * @param IndexDocument $document
+ *
+ * @return IIndex
+ */
+ public function indexDocument(IndexDocument $document): IIndex;
+
+
+ /**
+ * Searching documents, ISearchResult should be updated with the result of
+ * the search.
+ *
+ * @since 15.0.0
+ *
+ * @param ISearchResult $result
+ * @param DocumentAccess $access
+ */
+ public function searchRequest(ISearchResult $result, DocumentAccess $access);
+
+
+ /**
+ * Return a document based on its Id and the Provider.
+ * This is used when an admin execute ./occ fulltextsearch:document:platform
+ *
+ * @since 15.0.0
+ *
+ * @param string $providerId
+ * @param string $documentId
+ *
+ * @return IndexDocument
+ */
+ public function getDocument(string $providerId, string $documentId): IndexDocument;
+
+
+}
+
diff --git a/lib/public/FullTextSearch/IFullTextSearchProvider.php b/lib/public/FullTextSearch/IFullTextSearchProvider.php
new file mode 100644
index 0000000000..890b57d84c
--- /dev/null
+++ b/lib/public/FullTextSearch/IFullTextSearchProvider.php
@@ -0,0 +1,304 @@
+
+ * @copyright 2018
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch;
+
+
+use OCP\FullTextSearch\Model\IIndex;
+use OCP\FullTextSearch\Model\IIndexOptions;
+use OCP\FullTextSearch\Model\IndexDocument;
+use OCP\FullTextSearch\Model\IRunner;
+use OCP\FullTextSearch\Model\ISearchRequest;
+use OCP\FullTextSearch\Model\ISearchResult;
+use OCP\FullTextSearch\Model\SearchTemplate;
+
+
+/**
+ * Interface IFullTextSearchProvider
+ *
+ * This interface must be use when creating a Content Provider for FullTextSearch.
+ *
+ * A Content Provider is an extension to the FullTextSearch that will extract and
+ * provide content to the FullTextSearch.
+ *
+ * There is no limit to the number of Content Provider that can be integrated to
+ * FullTextSearch. Each Content Provider corresponding to a type of content
+ * available in Nextcloud (files, bookmarks, notes, deck cards, mails, ...)
+ *
+ * Content is split in document identified by an ID and the ID of the Content
+ * Provider. The content is indexed by a Search Platform that will returns a
+ * documentId as a result on a search request.
+ *
+ *
+ * To oversimplify the mechanism:
+ *
+ * - When indexing, FullTextSearch will ask for documents to every Content Provider.
+ * - On search, results from the Search Platform, identified by documentId, will
+ * be improved by each relative Content Provider.
+ *
+ *
+ * The Content Provider is a PHP class that implement this interface and is defined
+ * in appinfo/info.xml of the app that contains that class:
+ *
+ *
+ * OCA\YourApp\YourContentProvider
+ *
+ *
+ * Multiple Content Provider can be defined in a single app.
+ *
+ * @since 15.0.0
+ *
+ * @package OCP\FullTextSearch
+ */
+interface IFullTextSearchProvider {
+
+
+ /**
+ * Must returns a unique Id used to identify the Content Provider.
+ * Id must contains only alphanumeric chars, with no space.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getId(): string;
+
+
+ /**
+ * Must returns a descriptive name of the Content Provider.
+ * This is used in multiple places, so better use a clear display name.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getName(): string;
+
+
+ /**
+ * Should returns the current configuration of the Content Provider.
+ * This is used to display the configuration when using the
+ * ./occ fulltextsearch:check command line.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getConfiguration(): array;
+
+
+ /**
+ * Must returns a SearchTemplate that contains displayable items and
+ * available options to users when searching.
+ *
+ * @see SearchTemplate
+ *
+ * @since 15.0.0
+ *
+ * @return SearchTemplate
+ */
+ public function getSearchTemplate(): SearchTemplate;
+
+
+ /**
+ * Called when FullTextSearch is loading your Content Provider.
+ *
+ * @since 15.0.0
+ */
+ public function loadProvider();
+
+
+ /**
+ * Set the wrapper of the currently executed process.
+ * Because the index process can be long and heavy, and because errors can
+ * be encountered during the process, the IRunner is a wrapper that allow the
+ * Content Provider to communicate with the process initiated by
+ * FullTextSearch.
+ *
+ * The IRunner is coming with some methods so the Content Provider can
+ * returns important information and errors to be displayed to the admin.
+ *
+ * @since 15.0.0
+ *
+ * @param IRunner $runner
+ */
+ public function setRunner(IRunner $runner);
+
+
+ /**
+ * This method is called when the administrator specify options when running
+ * the ./occ fulltextsearch:index or ./occ fulltextsearch:live
+ *
+ * @since 15.0.0
+ *
+ * @param IIndexOptions $options
+ */
+ public function setIndexOptions(IIndexOptions $options);
+
+
+ /**
+ * Returns all indexable document for a user as an array of IndexDocument.
+ *
+ * There is no need to fill each IndexDocument with content; at this point,
+ * only fill the object with the minimum information to not waste memory while
+ * still being able to identify the document it is referring to.
+ *
+ * FullTextSearch will call 2 other methods of this interface for each
+ * IndexDocument of the array, prior to their indexing:
+ *
+ * - first, to compare the date of the last index,
+ * - then, to fill each IndexDocument with complete data
+ *
+ * @see IndexDocument
+ *
+ * @since 15.0.0
+ *
+ * @param string $userId
+ *
+ * @return IndexDocument[]
+ */
+ public function generateIndexableDocuments(string $userId): array;
+
+
+ /**
+ * Called to verify that the document is not already indexed and that the
+ * old index is not up-to-date, using the IIndex from
+ * IndexDocument->getIndex()
+ *
+ * Returning true will not queue the current IndexDocument to any further
+ * operation and will continue on the next element from the list returned by
+ * generateIndexableDocuments().
+ *
+ * @since 15.0.0
+ *
+ * @param IndexDocument $document
+ *
+ * @return bool
+ */
+ public function isDocumentUpToDate(IndexDocument $document): bool;
+
+
+ /**
+ * Must fill IndexDocument with all information relative to the document,
+ * before its indexing by the Search Platform.
+ *
+ * Method is called for each element returned previously by
+ * generateIndexableDocuments().
+ *
+ * @see IndexDocument
+ *
+ * @since 15.0.0
+ *
+ * @param IndexDocument $document
+ */
+ public function fillIndexDocument(IndexDocument $document);
+
+
+ /**
+ * The Search Provider must create and return an IndexDocument
+ * based on the IIndex and its status. The IndexDocument must contains all
+ * information as it will be send for indexing.
+ *
+ * Method is called during a cron or a ./occ fulltextsearch:live after a
+ * new document is created, or an old document is set as modified.
+ *
+ * @since 15.0.0
+ *
+ * @param IIndex $index
+ *
+ * @return IndexDocument
+ */
+ public function updateDocument(IIndex $index): IndexDocument;
+
+
+ /**
+ * Called when an index is initiated by the administrator.
+ * This is should only be used in case of a specific mapping is needed.
+ * (ie. _almost_ never)
+ *
+ * @since 15.0.0
+ *
+ * @param IFullTextSearchPlatform $platform
+ */
+ public function onInitializingIndex(IFullTextSearchPlatform $platform);
+
+
+ /**
+ * Called when administrator is resetting the index.
+ * This is should only be used in case of a specific mapping has been
+ * created.
+ *
+ * @since 15.0.0
+ *
+ * @param IFullTextSearchPlatform $platform
+ */
+ public function onResettingIndex(IFullTextSearchPlatform $platform);
+
+
+ /**
+ * Method is called when a search request is initiated by a user, prior to
+ * be sent to the Search Platform.
+ *
+ * Your Content Provider can interact with the ISearchRequest to apply the
+ * search options and make the search more precise.
+ *
+ * @see ISearchRequest
+ *
+ * @since 15.0.0
+ *
+ * @param ISearchRequest $searchRequest
+ */
+ public function improveSearchRequest(ISearchRequest $searchRequest);
+
+
+ /**
+ * Method is called after results of a search are returned by the
+ * Search Platform.
+ *
+ * Your Content Provider can detail each entry with local data to improve
+ * the display of the search result.
+ *
+ * @see ISearchResult
+ *
+ * @since 15.0.0
+ *
+ * @param ISearchResult $searchResult
+ */
+ public function improveSearchResult(ISearchResult $searchResult);
+
+
+ /**
+ * not used yet.
+ *
+ * @since 15.0.0
+ */
+ public function unloadProvider();
+
+}
diff --git a/lib/public/FullTextSearch/Model/DocumentAccess.php b/lib/public/FullTextSearch/Model/DocumentAccess.php
new file mode 100644
index 0000000000..ef199fb738
--- /dev/null
+++ b/lib/public/FullTextSearch/Model/DocumentAccess.php
@@ -0,0 +1,363 @@
+
+ * @copyright 2018
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch\Model;
+
+
+use JsonSerializable;
+
+
+/**
+ * Class DocumentAccess
+ *
+ * This object is used as a data transfer object when
+ *
+ * - indexing a document,
+ * - generating a search request.
+ *
+ * During the index, it is used to define which users, groups, circles, ...
+ * have access to the IndexDocument
+ *
+ * During the search, it is internally use to define to which group, circles, ...
+ * a user that perform the search belongs to.
+ *
+ * @see IndexDocument::setAccess
+ *
+ * @since 15.0.0
+ *
+ * @package OCP\FullTextSearch\Model
+ */
+final class DocumentAccess implements JsonSerializable {
+
+ /** @var string */
+ private $ownerId;
+
+ /** @var string */
+ private $viewerId = '';
+
+ /** @var array */
+ private $users = [];
+
+ /** @var array */
+ private $groups = [];
+
+ /** @var array */
+ private $circles = [];
+
+ /** @var array */
+ private $links = [];
+
+
+ /**
+ * Owner of the document can be set at the init of the object.
+ *
+ * @since 15.0.0
+ *
+ * DocumentAccess constructor.
+ *
+ * @param string $ownerId
+ */
+ public function __construct(string $ownerId = '') {
+ $this->setOwnerId($ownerId);
+ }
+
+
+ /**
+ * Set the Owner of the document.
+ *
+ * @since 15.0.0
+ *
+ * @param string $ownerId
+ *
+ * @return DocumentAccess
+ */
+ public function setOwnerId(string $ownerId) {
+ $this->ownerId = $ownerId;
+
+ return $this;
+ }
+
+ /**
+ * Get the Owner of the document.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getOwnerId(): string {
+ return $this->ownerId;
+ }
+
+
+ /**
+ * Set the viewer of the document.
+ *
+ * @since 15.0.0
+ *
+ * @param string $viewerId
+ *
+ * @return DocumentAccess
+ */
+ public function setViewerId(string $viewerId): DocumentAccess {
+ $this->viewerId = $viewerId;
+
+ return $this;
+ }
+
+ /**
+ * Get the viewer of the document.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getViewerId(): string {
+ return $this->viewerId;
+ }
+
+
+ /**
+ * Set the list of users that have read access to the document.
+ *
+ * @since 15.0.0
+ *
+ * @param array $users
+ *
+ * @return DocumentAccess
+ */
+ public function setUsers(array $users): DocumentAccess {
+ $this->users = $users;
+
+ return $this;
+ }
+
+ /**
+ * Add an entry to the list of users that have read access to the document.
+ *
+ * @since 15.0.0
+ *
+ * @param string $user
+ *
+ * @return DocumentAccess
+ */
+ public function addUser(string $user): DocumentAccess {
+ $this->users[] = $user;
+
+ return $this;
+ }
+
+ /**
+ * Add multiple entries to the list of users that have read access to the
+ * document.
+ *
+ * @since 15.0.0
+ *
+ * @param array $users
+ *
+ * @return DocumentAccess
+ */
+ public function addUsers($users): DocumentAccess {
+ $this->users = array_merge($this->users, $users);
+
+ return $this;
+ }
+
+ /**
+ * Get the complete list of users that have read access to the document.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getUsers(): array {
+ return $this->users;
+ }
+
+
+ /**
+ * Set the list of groups that have read access to the document.
+ *
+ * @since 15.0.0
+ *
+ * @param array $groups
+ *
+ * @return DocumentAccess
+ */
+ public function setGroups(array $groups): DocumentAccess {
+ $this->groups = $groups;
+
+ return $this;
+ }
+
+ /**
+ * Add an entry to the list of groups that have read access to the document.
+ *
+ * @since 15.0.0
+ *
+ * @param string $group
+ *
+ * @return DocumentAccess
+ */
+ public function addGroup(string $group): DocumentAccess {
+ $this->groups[] = $group;
+
+ return $this;
+ }
+
+ /**
+ * Add multiple entries to the list of groups that have read access to the
+ * document.
+ *
+ * @since 15.0.0
+ *
+ * @param array $groups
+ *
+ * @return DocumentAccess
+ */
+ public function addGroups(array $groups) {
+ $this->groups = array_merge($this->groups, $groups);
+
+ return $this;
+ }
+
+ /**
+ * Get the complete list of groups that have read access to the document.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getGroups(): array {
+ return $this->groups;
+ }
+
+
+ /**
+ * Set the list of circles that have read access to the document.
+ *
+ * @since 15.0.0
+ *
+ * @param array $circles
+ *
+ * @return DocumentAccess
+ */
+ public function setCircles(array $circles): DocumentAccess {
+ $this->circles = $circles;
+
+ return $this;
+ }
+
+ /**
+ * Add an entry to the list of circles that have read access to the document.
+ *
+ * @since 15.0.0
+ *
+ * @param string $circle
+ *
+ * @return DocumentAccess
+ */
+ public function addCircle(string $circle): DocumentAccess {
+ $this->circles[] = $circle;
+
+ return $this;
+ }
+
+ /**
+ * Add multiple entries to the list of groups that have read access to the
+ * document.
+ *
+ * @since 15.0.0
+ *
+ * @param array $circles
+ *
+ * @return DocumentAccess
+ */
+ public function addCircles(array $circles): DocumentAccess {
+ $this->circles = array_merge($this->circles, $circles);
+
+ return $this;
+ }
+
+ /**
+ * Get the complete list of circles that have read access to the document.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getCircles(): array {
+ return $this->circles;
+ }
+
+
+ /**
+ * Set the list of links that have read access to the document.
+ *
+ * @since 15.0.0
+ *
+ * @param array $links
+ *
+ * @return DocumentAccess
+ */
+ public function setLinks(array $links): DocumentAccess {
+ $this->links = $links;
+
+ return $this;
+ }
+
+ /**
+ * Get the list of links that have read access to the document.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getLinks(): array {
+ return $this->links;
+ }
+
+
+ /**
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function jsonSerialize(): array {
+ return [
+ 'ownerId' => $this->getOwnerId(),
+ 'viewerId' => $this->getViewerId(),
+ 'users' => $this->getUsers(),
+ 'groups' => $this->getGroups(),
+ 'circles' => $this->getCircles(),
+ 'links' => $this->getLinks()
+ ];
+ }
+}
+
diff --git a/lib/public/FullTextSearch/Model/IIndex.php b/lib/public/FullTextSearch/Model/IIndex.php
new file mode 100644
index 0000000000..adfdf34aee
--- /dev/null
+++ b/lib/public/FullTextSearch/Model/IIndex.php
@@ -0,0 +1,292 @@
+
+ * @copyright 2018
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch\Model;
+
+
+/**
+ * Interface IIndex
+ *
+ * Index are generated by FullTextSearch to manage the status of a document
+ * regarding the date of the last index and the date of the last modification
+ * of the original document.
+ *
+ * The uniqueness of an IndexDocument is made by the Id of the Content Provider
+ * and the Id of the original document within the Content Provider.
+ *
+ * We will call original document the source from which the IndexDocument is
+ * generated. As an example, an original document can be a file, a mail, ...
+ *
+ * @since 15.0.0
+ *
+ * @package OCP\FullTextSearch\Model
+ */
+interface IIndex {
+
+
+ const INDEX_OK = 1;
+ const INDEX_IGNORE = 2;
+
+ const INDEX_META = 4;
+ const INDEX_CONTENT = 8;
+ const INDEX_FULL = 12;
+ const INDEX_REMOVE = 16;
+
+ const INDEX_DONE = 32;
+ const INDEX_FAILED = 64;
+
+ const ERROR_FAILED = 1;
+ const ERROR_FAILED2 = 2;
+ const ERROR_FAILED3 = 4;
+
+ const ERROR_SEV_1 = 1;
+ const ERROR_SEV_2 = 2;
+ const ERROR_SEV_3 = 3;
+ const ERROR_SEV_4 = 4;
+
+
+ /**
+ * Get the Id of the Content Provider.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getProviderId(): string;
+
+
+ /**
+ * Get the Id of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getDocumentId(): string;
+
+
+ /**
+ * Set the source of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @param string $source
+ *
+ * @return IIndex
+ */
+ public function setSource(string $source): IIndex;
+
+ /**
+ * Get the source of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getSource(): string;
+
+
+ /**
+ * Set the owner of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @param string $ownerId
+ *
+ * @return IIndex
+ */
+ public function setOwnerId(string $ownerId): IIndex;
+
+ /**
+ * Get the owner of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getOwnerId(): string;
+
+
+ /**
+ * Set the current index status (bit flag) of the original document.
+ * If $reset is true, the status is reset to the defined value.
+ *
+ * @since 15.0.0
+ *
+ * @param int $status
+ * @param bool $reset
+ *
+ * @return IIndex
+ */
+ public function setStatus(int $status, bool $reset = false): IIndex;
+
+ /**
+ * Get the current index status of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return int
+ */
+ public function getStatus(): int;
+
+ /**
+ * Check if the document fit a specific status.
+ *
+ * @since 15.0.0
+ *
+ * @param int $status
+ *
+ * @return bool
+ */
+ public function isStatus(int $status): bool;
+
+ /**
+ * Remove a status.
+ *
+ * @since 15.0.0
+ *
+ * @param int $status
+ *
+ * @return IIndex
+ */
+ public function unsetStatus(int $status): IIndex;
+
+
+ /**
+ * Add an option related to the original document (as string).
+ *
+ * @since 15.0.0
+ *
+ * @param string $option
+ * @param string|int $value
+ *
+ * @return IIndex
+ */
+ public function addOption(string $option, string $value): IIndex;
+
+ /**
+ * Add an option related to the original document (as integer).
+ *
+ * @since 15.0.0
+ *
+ * @param string $option
+ * @param int $value
+ *
+ * @return IIndex
+ */
+ public function addOptionInt(string $option, int $value): IIndex;
+
+ /**
+ * Get the option related to the original document (as string).
+ *
+ * @since 15.0.0
+ *
+ * @param string $option
+ * @param string $default
+ *
+ * @return string
+ */
+ public function getOption(string $option, string $default = ''): string;
+
+ /**
+ * Get the option related to the original document (as integer).
+ *
+ * @since 15.0.0
+ *
+ * @param string $option
+ * @param int $default
+ *
+ * @return int
+ */
+ public function getOptionInt(string $option, int $default = 0): int;
+
+ /**
+ * Get all options related to the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getOptions(): array;
+
+
+ /**
+ * Add an error log related to the Index.
+ *
+ * @since 15.0.0
+ *
+ * @param string $message
+ * @param string $exception
+ * @param int $sev
+ *
+ * @return IIndex
+ */
+ public function addError(string $message, string $exception = '', int $sev = self::ERROR_SEV_3): IIndex;
+
+ /**
+ * Returns the number of known errors related to the Index.
+ *
+ * @since 15.0.0
+ *
+ * @return int
+ */
+ public function getErrorCount(): int;
+
+ /**
+ * Reset all error logs related to the Index.
+ *
+ * @since 15.0.0
+ */
+ public function resetErrors(): IIndex;
+
+
+ /**
+ * Set the date of the last index.
+ *
+ * @since 15.0.0
+ *
+ * @param int $lastIndex
+ *
+ * @return IIndex
+ */
+ public function setLastIndex(int $lastIndex = -1): IIndex;
+
+ /**
+ * Get the date of the last index.
+ *
+ * @since 15.0.0
+ *
+ * @return int
+ */
+ public function getLastIndex(): int;
+
+
+}
+
diff --git a/lib/public/FullTextSearch/Model/IIndexOptions.php b/lib/public/FullTextSearch/Model/IIndexOptions.php
new file mode 100644
index 0000000000..8cc5da13d4
--- /dev/null
+++ b/lib/public/FullTextSearch/Model/IIndexOptions.php
@@ -0,0 +1,86 @@
+
+ * @copyright 2018
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch\Model;
+
+
+/**
+ * Interface IIndexOptions
+ *
+ * IndexOptions are created in FullTextSearch when an admin initiate an index
+ * from the command line:
+ *
+ * ./occ fulltextsearch:index "{\"option1\": \"value\", \"option2\": true}"
+ *
+ * @since 15.0.0
+ *
+ * @package OCP\FullTextSearch\Model
+ */
+interface IIndexOptions {
+
+
+ /**
+ * Get the value (as a string) for an option.
+ *
+ * @since 15.0.0
+ *
+ * @param string $option
+ * @param string $default
+ *
+ * @return string
+ */
+ public function getOption(string $option, string $default = ''): string;
+
+ /**
+ * Get the value (as an array) for an option.
+ *
+ * @since 15.0.0
+ *
+ * @param string $option
+ * @param array $default
+ *
+ * @return array
+ */
+ public function getOptionArray(string $option, array $default = []): array;
+
+ /**
+ * Get the value (as an boolean) for an option.
+ *
+ * @since 15.0.0
+ *
+ * @param string $option
+ * @param bool $default
+ *
+ * @return bool
+ */
+ public function getOptionBool(string $option, bool $default): bool;
+
+}
+
diff --git a/lib/public/FullTextSearch/Model/IRunner.php b/lib/public/FullTextSearch/Model/IRunner.php
new file mode 100644
index 0000000000..0dff82bd5a
--- /dev/null
+++ b/lib/public/FullTextSearch/Model/IRunner.php
@@ -0,0 +1,142 @@
+
+ * @copyright 2018
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch\Model;
+
+
+/**
+ * Interface IRunner
+ *
+ * The indexing process can be long and heavy, and because errors can
+ * be encountered the process is wrapped using this interface.
+ * It allows the any extension of FullTextSearch to communicate with the process.
+ *
+ * The IRunner is coming with some methods so the Search Platform can
+ * returns important information and errors to be displayed to the admin.
+ *
+ * @since 15.0.0
+ *
+ * @package OCP\FullTextSearch\Model
+ */
+interface IRunner {
+
+
+ const RESULT_TYPE_SUCCESS = 1;
+ const RESULT_TYPE_WARNING = 4;
+ const RESULT_TYPE_FAIL = 9;
+
+
+ /**
+ * Info are displayed in the user interface when an admin execute the
+ * ./occ fulltextsearch:index command.
+ *
+ * quick list of info that can be edited:
+ * 'documentId', 'info', 'title', 'resultIndex', 'resultStatus',
+ * 'content', 'documentCurrent', 'documentTotal', 'progressStatus',
+ * 'errorCurrent', 'errorException', 'errorIndex'.
+ *
+ * List of all editable info can be find in the Command\Index.php of the
+ * FullTextSearch app.
+ * (look for a comment 'full list of info that can be edited')
+ *
+ * @since 15.0.0
+ *
+ * @param string $info
+ * @param string $value
+ */
+ public function setInfo(string $info, string $value);
+
+
+ /**
+ * This method should be used when editing multiple info to avoid too many
+ * refresh of the interface.
+ *
+ * @since 15.0.0
+ *
+ * @param array $data
+ */
+ public function setInfoArray(array $data);
+
+
+ /**
+ * Method used to update the current Action when an index is running.
+ *
+ * This method should be used instead of manually update the 'action' using
+ * setInfo()/setInfoArray() as it is also used to keep the process alive,
+ * manage the input, and some statistics of the load of the process.
+ *
+ * $action is a string with no space
+ * $force should be set to true if the action is heavy while being executed
+ * multiple times
+ *
+ * @since 15.0.0
+ *
+ * @param string $action
+ * @param bool $force
+ *
+ * @return string
+ * @throws \Exception
+ */
+ public function updateAction(string $action = '', bool $force = false): string;
+
+
+ /**
+ * Call this method in a Search Platform or Content Provider if there is an
+ * issue while generating a document or while indexing the current document.
+ * This is used to store and display errors in the UI during an index to help
+ * admin to keep track of errors.
+ *
+ * @since 15.0.0
+ *
+ * @param IIndex $index
+ * @param string $message
+ * @param string $class
+ * @param int $sev
+ */
+ public function newIndexError(IIndex $index, string $message, string $class = '', int $sev = 3);
+
+
+ /**
+ * Call this method only in a Search Platform after an index of a document.
+ * This is used to store and display results (good or bad) in the UI during
+ * an index to help admin to keep track of fail and successful indexes.
+ *
+ * @since 15.0.0
+ *
+ * @param IIndex $index
+ * @param string $message
+ * @param string $status
+ * @param int $type
+ */
+ public function newIndexResult(IIndex $index, string $message, string $status, int $type);
+
+
+}
+
diff --git a/lib/public/FullTextSearch/Model/ISearchRequest.php b/lib/public/FullTextSearch/Model/ISearchRequest.php
new file mode 100644
index 0000000000..073b4805f6
--- /dev/null
+++ b/lib/public/FullTextSearch/Model/ISearchRequest.php
@@ -0,0 +1,326 @@
+
+ * @copyright 2018
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch\Model;
+
+
+/**
+ * Interface ISearchRequest
+ *
+ * When a search request is initiated, from a request from the front-end or using
+ * the IFullTextSearchManager::search() method, FullTextSearch will create a
+ * SearchRequest object, based on this interface.
+ *
+ * The object will be passed to the targeted Content Provider so it can convert
+ * search options using available method.
+ *
+ * The object is then encapsulated in a SearchResult and send to the
+ * Search Platform.
+ *
+ * @since 15.0.0
+ *
+ *
+ * @package OCP\FullTextSearch\Model
+ */
+interface ISearchRequest {
+
+
+ /**
+ * Get the maximum number of results to be returns by the Search Platform.
+ *
+ * @since 15.0.0
+ *
+ * @return int
+ */
+ public function getSize(): int;
+
+
+ /**
+ * Get the current page.
+ * Used by pagination.
+ *
+ * @since 15.0.0
+ *
+ * @return int
+ */
+ public function getPage(): int;
+
+
+ /**
+ * Get the author of the request.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getAuthor(): string;
+
+ /**
+ * Get the searched string.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getSearch(): string;
+
+
+ /**
+ * Get the value of an option (as string).
+ *
+ * @since 15.0.0
+ *
+ * @param string $option
+ * @param string $default
+ *
+ * @return string
+ */
+ public function getOption(string $option, string $default = ''): string;
+
+ /**
+ * Get the value of an option (as array).
+ *
+ * @since 15.0.0
+ *
+ * @param string $option
+ * @param array $default
+ *
+ * @return array
+ */
+ public function getOptionArray(string $option, array $default = []): array;
+
+
+ /**
+ * Limit the search to a part of the document.
+ *
+ * @since 15.0.0
+ *
+ * @param string $part
+ *
+ * @return ISearchRequest
+ */
+ public function addPart(string $part): ISearchRequest;
+
+ /**
+ * Limit the search to an array of parts of the document.
+ *
+ * @since 15.0.0
+ *
+ * @param array $parts
+ *
+ * @return ISearchRequest
+ */
+ public function setParts(array $parts): ISearchRequest;
+
+ /**
+ * Get the parts the search is limited to.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getParts(): array;
+
+
+ /**
+ * Limit the search to a specific meta tag.
+ *
+ * @since 15.0.0
+ *
+ * @param string $tag
+ *
+ * @return ISearchRequest
+ */
+ public function addMetaTag(string $tag): ISearchRequest;
+
+ /**
+ * Get the meta tags the search is limited to.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getMetaTags(): array;
+
+ /**
+ * Limit the search to an array of meta tags.
+ *
+ * @since 15.0.0
+ *
+ * @param array $tags
+ *
+ * @return ISearchRequest
+ */
+ public function setMetaTags(array $tags): IsearchRequest;
+
+
+ /**
+ * Limit the search to a specific sub tag.
+ *
+ * @since 15.0.0
+ *
+ * @param string $source
+ * @param string $tag
+ *
+ * @return ISearchRequest
+ */
+ public function addSubTag(string $source, string $tag): ISearchRequest;
+
+ /**
+ * Get the sub tags the search is limited to.
+ *
+ * @since 15.0.0
+ *
+ * @param bool $formatted
+ *
+ * @return array
+ */
+ public function getSubTags(bool $formatted): array;
+
+ /**
+ * Limit the search to an array of sub tags.
+ *
+ * @since 15.0.0
+ *
+ * @param array $tags
+ *
+ * @return ISearchRequest
+ */
+ public function setSubTags(array $tags): ISearchRequest;
+
+
+ /**
+ * Limit the search to a specific field of the mapping, using a full string.
+ *
+ * @since 15.0.0
+ *
+ * @param string $field
+ *
+ * @return ISearchRequest
+ */
+ public function addLimitField(string $field): ISearchRequest;
+
+ /**
+ * Get the fields the search is limited to.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getLimitFields(): array;
+
+
+ /**
+ * Limit the search to a specific field of the mapping, using a wildcard on
+ * the search string.
+ *
+ * @since 15.0.0
+ *
+ * @param string $field
+ *
+ * @return ISearchRequest
+ */
+ public function addWildcardField(string $field): ISearchRequest;
+
+ /**
+ * Get the limit to field of the mapping.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getWildcardFields(): array;
+
+
+ /**
+ * Filter the results, based on a group of field, using regex
+ *
+ * @since 15.0.0
+ *
+ * @param array $filters
+ *
+ * @return ISearchRequest
+ */
+ public function addRegexFilters(array $filters): ISearchRequest;
+
+ /**
+ * Get the regex filters the search is limit to.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getRegexFilters(): array;
+
+
+ /**
+ * Filter the results, based on a group of field, using wildcard
+ *
+ * @since 15.0.0
+ *
+ * @param array $filter
+ *
+ * @return ISearchRequest
+ */
+ public function addWildcardFilter(array $filter): ISearchRequest;
+
+ /**
+ * Get the wildcard filters the search is limit to.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getWildcardFilters(): array;
+
+
+ /**
+ * Add an extra field to the search.
+ *
+ * @since 15.0.0
+ *
+ * @param string $field
+ *
+ * @return ISearchRequest
+ */
+ public function addField(string $field): ISearchRequest;
+
+ /**
+ * Get the list of extra field to search into.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getFields(): array;
+
+
+}
+
diff --git a/lib/public/FullTextSearch/Model/ISearchResult.php b/lib/public/FullTextSearch/Model/ISearchResult.php
new file mode 100644
index 0000000000..a7dcba82f5
--- /dev/null
+++ b/lib/public/FullTextSearch/Model/ISearchResult.php
@@ -0,0 +1,198 @@
+
+ * @copyright 2018
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch\Model;
+
+
+use OCP\FullTextSearch\IFullTextSearchProvider;
+
+
+/**
+ * Interface ISearchResult
+ *
+ * When a search request is initiated, FullTextSearch will create a SearchResult
+ * object, based on this interface, containing the SearchRequest and the targeted
+ * Content Provider.
+ *
+ * The object will be passed to the Search Platform, which will proceed to the
+ * search and fill the SearchResult object with results.
+ *
+ * Then, the object will be passed to the targeted Content Provider that will
+ * improve the Search Results with detailed informations.
+ *
+ * Finally, the SearchResult is returned to the original search request.
+ *
+ * @since 15.0.0
+ *
+ * @package OCP\FullTextSearch\Model
+ */
+interface ISearchResult {
+
+
+ /**
+ * Get the original SearchRequest.
+ *
+ * @see ISearchRequest
+ *
+ * @since 15.0.0
+ *
+ * @return ISearchRequest
+ */
+ public function getRequest(): ISearchRequest;
+
+ /**
+ * Get the targeted Content Provider.
+ *
+ * @since 15.0.0
+ *
+ * @return IFullTextSearchProvider
+ */
+ public function getProvider(): IFullTextSearchProvider;
+
+
+ /**
+ * Add an IndexDocument as one of the result of the search request.
+ *
+ * @since 15.0.0
+ *
+ * @param IndexDocument $document
+ *
+ * @return ISearchResult
+ */
+ public function addDocument(IndexDocument $document): ISearchResult;
+
+ /**
+ * Returns all result of the search request, in an array of IndexDocument.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getDocuments(): array;
+
+ /**
+ * Set an array of IndexDocument as the result of the search request.
+ *
+ * @since 15.0.0
+ *
+ * @param IndexDocument[] $documents
+ *
+ * @return ISearchResult
+ */
+ public function setDocuments(array $documents): ISearchResult;
+
+
+ /**
+ * Add an aggregation to the result.
+ *
+ * @since 15.0.0
+ *
+ * @param string $category
+ * @param string $value
+ * @param int $count
+ *
+ * @return ISearchResult
+ */
+ public function addAggregation(string $category, string $value, int $count): ISearchResult;
+
+ /**
+ * Get all aggregations.
+ *
+ * @since 15.0.0
+ *
+ * @param string $category
+ *
+ * @return array
+ */
+ public function getAggregations(string $category): array;
+
+
+ /**
+ * Set the raw result of the request.
+ *
+ * @since 15.0.0
+ *
+ * @param string $result
+ *
+ * @return ISearchResult
+ */
+ public function setRawResult(string $result): ISearchResult;
+
+
+ /**
+ * Set the total number of results for the search request.
+ * Used by pagination.
+ *
+ * @since 15.0.0
+ *
+ * @param int $total
+ *
+ * @return ISearchResult
+ */
+ public function setTotal(int $total): ISearchResult;
+
+
+ /**
+ * Set the top score for the search request.
+ *
+ * @since 15.0.0
+ *
+ * @param int $score
+ *
+ * @return ISearchResult
+ */
+ public function setMaxScore(int $score): ISearchResult;
+
+
+ /**
+ * Set the time spent by the request to perform the search.
+ *
+ * @since 15.0.0
+ *
+ * @param int $time
+ *
+ * @return ISearchResult
+ */
+ public function setTime(int $time): ISearchResult;
+
+
+ /**
+ * Set to true if the request timed out.
+ *
+ * @since 15.0.0
+ *
+ * @param bool $timedOut
+ *
+ * @return ISearchResult
+ */
+ public function setTimedOut(bool $timedOut): ISearchResult;
+
+}
+
diff --git a/lib/public/FullTextSearch/Model/IndexDocument.php b/lib/public/FullTextSearch/Model/IndexDocument.php
new file mode 100644
index 0000000000..a73b702e50
--- /dev/null
+++ b/lib/public/FullTextSearch/Model/IndexDocument.php
@@ -0,0 +1,898 @@
+
+ * @copyright 2018
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch\Model;
+
+
+use JsonSerializable;
+
+/**
+ * Class IndexDocument
+ *
+ * This is one of the main class of the FullTextSearch, used as a data transfer
+ * object. An IndexDocument is created to manage documents around FullTextSearch,
+ * during an index and during a search.
+ * The uniqueness of an IndexDocument is made by the Id of the Content Provider
+ * and the Id of the original document within the Content Provider.
+ *
+ * We will call original document the source from which the IndexDocument is
+ * generated. As an example, an original document can be a file, a mail, ...
+ *
+ * @since 15.0.0
+ *
+ * @package OC\FullTextSearch\Model
+ */
+class IndexDocument implements JsonSerializable {
+
+
+ const NOT_ENCODED = 0;
+ const ENCODED_BASE64 = 1;
+
+
+ /** @var string */
+ protected $id;
+
+ /** @var string */
+ protected $providerId;
+
+ /** @var DocumentAccess */
+ protected $access;
+
+ /** @var IIndex */
+ protected $index;
+
+ /** @var int */
+ protected $modifiedTime = 0;
+
+ /** @var string */
+ protected $source = '';
+
+ /** @var array */
+ protected $tags = [];
+
+ /** @var array */
+ protected $metaTags = [];
+
+ /** @var array */
+ protected $subTags = [];
+
+ /** @var string */
+ protected $title = '';
+
+ /** @var string */
+ protected $content = '';
+
+ /** @var string */
+ protected $hash = '';
+
+ /** @var array */
+ protected $parts = [];
+
+ /** @var string */
+ protected $link = '';
+
+ /** @var array */
+ protected $more = [];
+
+ /** @var array */
+ protected $excerpts = [];
+
+ /** @var string */
+ protected $score = '';
+
+ /** @var array */
+ protected $info = [];
+
+ /** @var int */
+ protected $contentEncoded;
+
+
+ /**
+ * IndexDocument constructor.
+ *
+ * On creation, we assure the uniqueness of the object using the providerId
+ * and the Id of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @param string $providerId
+ * @param string $documentId
+ */
+ public function __construct(string $providerId, string $documentId) {
+ $this->providerId = $providerId;
+ $this->id = $documentId;
+ }
+
+
+ /**
+ * Returns the Id of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ final public function getId(): string {
+ return $this->id;
+ }
+
+
+ /**
+ * Returns the Id of the provider.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ final public function getProviderId(): string {
+ return $this->providerId;
+ }
+
+
+ /**
+ * Set the Index related to the IndexDocument.
+ *
+ * @see IIndex
+ *
+ * @since 15.0.0
+ *
+ * @param IIndex $index
+ *
+ * @return IndexDocument
+ */
+ final public function setIndex(IIndex $index): IndexDocument {
+ $this->index = $index;
+
+ return $this;
+ }
+
+ /**
+ * Get the Index.
+ *
+ * @since 15.0.0
+ *
+ * @return IIndex
+ */
+ final public function getIndex(): IIndex {
+ return $this->index;
+ }
+
+
+ /**
+ * Set the modified time of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @param int $modifiedTime
+ *
+ * @return IndexDocument
+ */
+ final public function setModifiedTime(int $modifiedTime): IndexDocument {
+ $this->modifiedTime = $modifiedTime;
+
+ return $this;
+ }
+
+ /**
+ * Get the modified time of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return int
+ */
+ final public function getModifiedTime(): int {
+ return $this->modifiedTime;
+ }
+
+ /**
+ * Check if the original document of the IndexDocument is older than $time.
+ *
+ * @since 15.0.0
+ *
+ * @param int $time
+ *
+ * @return bool
+ */
+ final public function isOlderThan(int $time): bool {
+ return ($this->modifiedTime < $time);
+ }
+
+
+ /**
+ * Set the read rights of the original document using a DocumentAccess.
+ *
+ * @see DocumentAccess
+ *
+ * @since 15.0.0
+ *
+ * @param DocumentAccess $access
+ *
+ * @return $this
+ */
+ final public function setAccess(DocumentAccess $access) {
+ $this->access = $access;
+
+ return $this;
+ }
+
+ /**
+ * Get the DocumentAccess related to the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return DocumentAccess
+ */
+ final public function getAccess(): DocumentAccess {
+ return $this->access;
+ }
+
+
+ /**
+ * Add a tag to the list.
+ *
+ * @since 15.0.0
+ *
+ * @param string $tag
+ *
+ * @return IndexDocument
+ */
+ final public function addTag(string $tag): IndexDocument {
+ $this->tags[] = $tag;
+
+ return $this;
+ }
+
+ /**
+ * Set the list of tags assigned to the original document.
+ *
+ * @since 15.0.0
+ *
+ * @param array $tags
+ *
+ * @return IndexDocument
+ */
+ final public function setTags(array $tags): IndexDocument {
+ $this->tags = $tags;
+
+ return $this;
+ }
+
+ /**
+ * Get the list of tags assigned to the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ final public function getTags(): array {
+ return $this->tags;
+ }
+
+
+ /**
+ * Add a meta tag to the list.
+ *
+ * @since 15.0.0
+ *
+ * @param string $tag
+ *
+ * @return IndexDocument
+ */
+ final public function addMetaTag(string $tag): IndexDocument {
+ $this->metaTags[] = $tag;
+
+ return $this;
+ }
+
+ /**
+ * Set the list of meta tags assigned to the original document.
+ *
+ * @since 15.0.0
+ *
+ * @param array $tags
+ *
+ * @return IndexDocument
+ */
+ final public function setMetaTags(array $tags): IndexDocument {
+ $this->metaTags = $tags;
+
+ return $this;
+ }
+
+ /**
+ * Get the list of meta tags assigned to the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ final public function getMetaTags(): array {
+ return $this->metaTags;
+ }
+
+
+ /**
+ * Add a sub tag to the list.
+ *
+ * @since 15.0.0
+ *
+ * @param string $sub
+ * @param string $tag
+ *
+ * @return IndexDocument
+ */
+ final public function addSubTag(string $sub, string $tag): IndexDocument {
+ $this->subTags[$sub] = $tag;
+
+ return $this;
+ }
+
+ /**
+ * Set the list of sub tags assigned to the original document.
+ *
+ * @since 15.0.0
+ *
+ * @param array $tags
+ *
+ * @return IndexDocument
+ */
+ final public function setSubTags(array $tags): IndexDocument {
+ $this->subTags = $tags;
+
+ return $this;
+ }
+
+ /**
+ * Get the list of sub tags assigned to the original document.
+ * If $formatted is true, the result will be formatted in a one
+ * dimensional array.
+ *
+ * @since 15.0.0
+ *
+ * @param bool $formatted
+ *
+ * @return array
+ */
+ final public function getSubTags(bool $formatted = false): array {
+ if ($formatted === false) {
+ return $this->subTags;
+ }
+
+ $subTags = [];
+ $ak = array_keys($this->subTags);
+ foreach ($ak as $source) {
+ $tags = $this->subTags[$source];
+ foreach ($tags as $tag) {
+ $subTags[] = $source . '_' . $tag;
+ }
+ }
+
+ return $subTags;
+ }
+
+
+ /**
+ * Set the source of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @param string $source
+ *
+ * @return IndexDocument
+ */
+ final public function setSource(string $source): IndexDocument {
+ $this->source = $source;
+
+ return $this;
+ }
+
+ /**
+ * Get the source of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ final public function getSource(): string {
+ return $this->source;
+ }
+
+
+ /**
+ * Set the title of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @param string $title
+ *
+ * @return IndexDocument
+ */
+ final public function setTitle(string $title): IndexDocument {
+ $this->title = $title;
+
+ return $this;
+ }
+
+ /**
+ * Get the title of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ final public function getTitle(): string {
+ return $this->title;
+ }
+
+
+ /**
+ * Set the content of the document.
+ * $encoded can be NOT_ENCODED or ENCODED_BASE64 if the content is raw or
+ * encoded in base64.
+ *
+ * @since 15.0.0
+ *
+ * @param string $content
+ * @param int $encoded
+ *
+ * @return IndexDocument
+ */
+ final public function setContent(string $content, int $encoded = 0): IndexDocument {
+ $this->content = $content;
+ $this->contentEncoded = $encoded;
+
+ return $this;
+ }
+
+ /**
+ * Get the content of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ final public function getContent(): string {
+ return $this->content;
+ }
+
+ /**
+ * Returns the type of the encoding on the content.
+ *
+ * @since 15.0.0
+ *
+ * @return int
+ */
+ final public function isContentEncoded(): int {
+ return $this->contentEncoded;
+ }
+
+ /**
+ * Return the size of the content.
+ *
+ * @since 15.0.0
+ *
+ * @return int
+ */
+ final public function getContentSize(): int {
+ return strlen($this->getContent());
+ }
+
+
+ /**
+ * Generate an hash, based on the content of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return IndexDocument
+ */
+ final public function initHash(): IndexDocument {
+ if ($this->getContent() === '' || is_null($this->getContent())) {
+ return $this;
+ }
+
+ $this->hash = hash("md5", $this->getContent());
+
+ return $this;
+ }
+
+ /**
+ * Set the hash of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @param string $hash
+ *
+ * @return IndexDocument
+ */
+ final public function setHash(string $hash): IndexDocument {
+ $this->hash = $hash;
+
+ return $this;
+ }
+
+ /**
+ * Get the hash of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ final public function getHash(): string {
+ return $this->hash;
+ }
+
+
+ /**
+ * Add a part, identified by a string, and its content.
+ *
+ * It is strongly advised to use alphanumerical chars with no space in the
+ * $part string.
+ *
+ * @since 15.0.0
+ *
+ * @param string $part
+ * @param string $content
+ *
+ * @return IndexDocument
+ */
+ final public function addPart(string $part, string $content): IndexDocument {
+ $this->parts[$part] = $content;
+
+ return $this;
+ }
+
+ /**
+ * Set all parts and their content.
+ *
+ * @since 15.0.0
+ *
+ * @param array $parts
+ *
+ * @return IndexDocument
+ */
+ final public function setParts(array $parts): IndexDocument {
+ $this->parts = $parts;
+
+ return $this;
+ }
+
+ /**
+ * Get all parts of the IndexDocument.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ final public function getParts(): array {
+ return $this->parts;
+ }
+
+
+ /**
+ * Add a link, usable by the frontend.
+ *
+ * @since 15.0.0
+ *
+ * @param string $link
+ *
+ * @return IndexDocument
+ */
+ final public function setLink(string $link): IndexDocument {
+ $this->link = $link;
+
+ return $this;
+ }
+
+ /**
+ * Get the link.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ final public function getLink(): string {
+ return $this->link;
+ }
+
+
+ /**
+ * Set more information that couldn't be set using other method.
+ *
+ * @since 15.0.0
+ *
+ * @param array $more
+ *
+ * @return IndexDocument
+ */
+ final public function setMore(array $more): IndexDocument {
+ $this->more = $more;
+
+ return $this;
+ }
+
+ /**
+ * Get more information.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ final public function getMore(): array {
+ return $this->more;
+ }
+
+
+ /**
+ * Add some excerpt of the content of the original document, usually based
+ * on the search request.
+ *
+ * @since 15.0.0
+ *
+ * @param string $excerpt
+ *
+ * @return IndexDocument
+ */
+ final public function addExcerpt(string $excerpt): IndexDocument {
+ $excerpt = $this->cleanExcerpt($excerpt);
+
+ $this->excerpts[] = $excerpt;
+
+ return $this;
+ }
+
+ /**
+ * Set all excerpts of the content of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @param array $excerpts
+ *
+ * @return IndexDocument
+ */
+ final public function setExcerpts(array $excerpts): IndexDocument {
+ $excerpts = array_map([$this, 'cleanExcerpt'], $excerpts);
+
+ $this->excerpts = $excerpts;
+
+ return $this;
+ }
+
+ /**
+ * Get all excerpts of the content of the original document.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ final public function getExcerpts(): array {
+ return $this->excerpts;
+ }
+
+ /**
+ * Clean excerpt.
+ *
+ * @since 15.0.0
+ *
+ * @param string $excerpt
+ *
+ * @return string
+ */
+ final public function cleanExcerpt(string $excerpt): string {
+ $excerpt = str_replace("\\n", ' ', $excerpt);
+ $excerpt = str_replace("\\r", ' ', $excerpt);
+ $excerpt = str_replace("\\t", ' ', $excerpt);
+ $excerpt = str_replace("\n", ' ', $excerpt);
+ $excerpt = str_replace("\r", ' ', $excerpt);
+ $excerpt = str_replace("\t", ' ', $excerpt);
+
+ return $excerpt;
+ }
+
+ /**
+ * Set the score to the result assigned to this document during a search
+ * request.
+ *
+ * @since 15.0.0
+ *
+ * @param string $score
+ *
+ * @return IndexDocument
+ */
+ final public function setScore(string $score): IndexDocument {
+ $this->score = $score;
+
+ return $this;
+ }
+
+ /**
+ * Get the score.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ final public function getScore(): string {
+ return $this->score;
+ }
+
+
+ /**
+ * Set some information about the original document that will be available
+ * to the front-end when displaying search result. (as string)
+ * Because this information will not be indexed, this method can also be
+ * used to manage some data while filling the IndexDocument before its
+ * indexing.
+ *
+ * @since 15.0.0
+ *
+ * @param string $info
+ * @param string $value
+ *
+ * @return IndexDocument
+ */
+ final public function setInfo(string $info, string $value): IndexDocument {
+ $this->info[$info] = $value;
+
+ return $this;
+ }
+
+ /**
+ * Get an information about a document. (string)
+ *
+ * @since 15.0.0
+ *
+ * @param string $info
+ * @param string $default
+ *
+ * @return string
+ */
+ final public function getInfo(string $info, string $default = ''): string {
+ if (!key_exists($info, $this->info)) {
+ return $default;
+ }
+
+ return $this->info[$info];
+ }
+
+ /**
+ * Set some information about the original document that will be available
+ * to the front-end when displaying search result. (as array)
+ * Because this information will not be indexed, this method can also be
+ * used to manage some data while filling the IndexDocument before its
+ * indexing.
+ *
+ * @since 15.0.0
+ *
+ * @param string $info
+ * @param array $value
+ *
+ * @return IndexDocument
+ */
+ final public function setInfoArray(string $info, array $value): IndexDocument {
+ $this->info[$info] = $value;
+
+ return $this;
+ }
+
+ /**
+ * Get an information about a document. (array)
+ *
+ * @since 15.0.0
+ *
+ * @param string $info
+ * @param array $default
+ *
+ * @return array
+ */
+ final public function getInfoArray(string $info, array $default = []): array {
+ if (!key_exists($info, $this->info)) {
+ return $default;
+ }
+
+ return $this->info[$info];
+ }
+
+ /**
+ * Get all info.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ final public function getInfoAll(): array {
+
+ $info = [];
+ foreach ($this->info as $k => $v) {
+ if (substr($k, 0, 1) === '_') {
+ continue;
+ }
+
+ $info[$k] = $v;
+ }
+
+ return $info;
+ }
+
+
+ /**
+ * @since 15.0.0
+ *
+ * On some version of PHP, it is better to force destruct the object.
+ * And during the index, the number of generated IndexDocument can be
+ * _huge_.
+ */
+ public function __destruct() {
+ unset($this->id);
+ unset($this->providerId);
+ unset($this->access);
+ unset($this->modifiedTime);
+ unset($this->title);
+ unset($this->content);
+ unset($this->hash);
+ unset($this->link);
+ unset($this->source);
+ unset($this->tags);
+ unset($this->metaTags);
+ unset($this->subTags);
+ unset($this->more);
+ unset($this->excerpts);
+ unset($this->score);
+ unset($this->info);
+ unset($this->contentEncoded);
+ }
+
+ /**
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function jsonSerialize() {
+ return [
+ 'id' => $this->getId(),
+ 'providerId' => $this->getProviderId(),
+ 'access' => $this->access,
+ 'modifiedTime' => $this->getModifiedTime(),
+ 'title' => $this->getTitle(),
+ 'link' => $this->getLink(),
+ 'index' => $this->index,
+ 'source' => $this->getSource(),
+ 'info' => $this->getInfoAll(),
+ 'hash' => $this->getHash(),
+ 'contentSize' => $this->getContentSize(),
+ 'tags' => $this->getTags(),
+ 'metatags' => $this->getMetaTags(),
+ 'subtags' => $this->getSubTags(),
+ 'more' => $this->getMore(),
+ 'excerpts' => $this->getExcerpts(),
+ 'score' => $this->getScore()
+ ];
+ }
+
+}
+
diff --git a/lib/public/FullTextSearch/Model/SearchOption.php b/lib/public/FullTextSearch/Model/SearchOption.php
new file mode 100644
index 0000000000..ae6ad3241b
--- /dev/null
+++ b/lib/public/FullTextSearch/Model/SearchOption.php
@@ -0,0 +1,296 @@
+
+ * @copyright 2018
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch\Model;
+
+
+use JsonSerializable;
+
+
+/**
+ * @since 15.0.0
+ *
+ * Class SearchOption
+ *
+ * @package OCP\FullTextSearch\Model
+ */
+final class SearchOption implements JsonSerializable {
+
+
+ const CHECKBOX = 'checkbox';
+ const INPUT = 'input';
+
+ const INPUT_SMALL = 'small';
+
+
+ /** @var string */
+ private $name = '';
+
+ /** @var string */
+ private $title = '';
+
+ /** @var string */
+ private $type = '';
+
+ /** @var string */
+ private $size = '';
+
+ /** @var string */
+ private $placeholder = '';
+
+
+ /**
+ * *
+ *
+ * The array can be empty in case no search options are available.
+ * The format of the array must be like this:
+ *
+ * [
+ * 'panel' => [
+ * 'options' => [
+ * OPTION1,
+ * OPTION2,
+ * OPTION3
+ * ]
+ * ],
+ * 'navigation' => [
+ * 'icon' => 'css-class-of-the-icon',
+ * 'options' => [
+ * OPTION1,
+ * OPTION2,
+ * OPTION3
+ * ]
+ * ]
+ * ]
+ *
+ * - PANEL contains entries that will be displayed in the app itself, when
+ * a search is initiated.
+ * - NAVIGATION contains entries that will be available when using the
+ * FullTextSearch navigation page
+ * - OPTION is an element that define each option available to the user.
+ *
+ * The format for the options must be like this:
+ *
+ * [
+ * 'name' => 'name_of_the_option',
+ * 'title' => 'Name displayed in the panel',
+ * 'type' => '',
+ * 'size' => '' (optional),
+ * 'placeholder' => '' (optional)
+ * ]
+ *
+ * - NAME is the variable name that is sent to the IFullTextSearchProvider
+ * when a ISearchRequest is requested. (keys in the array returned by the
+ * ISearchRequest->getOptions())
+ * - TYPE can be 'input' or 'checkbox'
+ * - SIZE is only used in case TYPE='input', default is 'large' but can be
+ * 'small'
+ * - PLACEHOLDER is only used in case TYPE='input', default is empty.
+ */
+
+ /**
+ * SearchOption constructor.
+ *
+ * Some value can be setduring the creation of the object.
+ *
+ * @since 15.0.0
+ *
+ * @param string $name
+ * @param string $title
+ * @param string $type
+ * @param string $size
+ * @param string $placeholder
+ */
+ public function __construct(string $name = '', string $title = '', string $type = '', string $size = '', string $placeholder = '') {
+ $this->name = $name;
+ $this->title = $title;
+ $this->type = $type;
+ $this->size = $size;
+ $this->placeholder = $placeholder;
+ }
+
+
+ /**
+ * Set the name/key of the option.
+ * The string should only contains alphanumerical chars and underscore.
+ * The key can be retrieve when using ISearchRequest::getOption
+ *
+ * @see ISearchRequest::getOption
+ *
+ * @since 15.0.0
+ *
+ * @param string $name
+ *
+ * @return SearchOption
+ */
+ public function setName(string $name): SearchOption {
+ $this->name = $name;
+
+ return $this;
+ }
+
+ /**
+ * Get the name/key of the option.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getName(): string {
+ return $this->name;
+ }
+
+
+ /**
+ * Set the title/display name of the option.
+ *
+ * @since 15.0.0
+ *
+ * @param string $title
+ *
+ * @return SearchOption
+ */
+ public function setTitle(string $title): SearchOption {
+ $this->title = $title;
+
+ return $this;
+ }
+
+ /**
+ * Get the title of the option.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getTitle(): string {
+ return $this->title;
+ }
+
+
+ /**
+ * Set the type of the option.
+ * $type can be SearchOption::CHECKBOX or SearchOption::INPUT
+ *
+ * @since 15.0.0
+ *
+ * @param string $type
+ *
+ * @return SearchOption
+ */
+ public function setType(string $type): SearchOption {
+ $this->type = $type;
+
+ return $this;
+ }
+
+ /**
+ * Get the type of the option.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getType(): string {
+ return $this->type;
+ }
+
+
+ /**
+ * In case of Type is INPUT, set the size of the input field.
+ * Value can be SearchOption::INPUT_SMALL or not defined.
+ *
+ * @since 15.0.0
+ *
+ * @param string $size
+ *
+ * @return SearchOption
+ */
+ public function setSize(string $size): SearchOption {
+ $this->size = $size;
+
+ return $this;
+ }
+
+ /**
+ * Get the size of the INPUT.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getSize(): string {
+ return $this->size;
+ }
+
+
+ /**
+ * In case of Type is , set the placeholder to be displayed in the input
+ * field.
+ *
+ * @since 15.0.0
+ *
+ * @param string $placeholder
+ *
+ * @return SearchOption
+ */
+ public function setPlaceholder(string $placeholder): SearchOption {
+ $this->placeholder = $placeholder;
+
+ return $this;
+ }
+
+ /**
+ * Get the placeholder.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getPlaceholder(): string {
+ return $this->placeholder;
+ }
+
+
+ /**
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function jsonSerialize(): array {
+ return [
+ 'name' => $this->getName(),
+ 'title' => $this->getTitle(),
+ 'type' => $this->getType(),
+ 'size' => $this->getSize(),
+ 'placeholder' => $this->getPlaceholder()
+ ];
+ }
+}
diff --git a/lib/public/FullTextSearch/Model/SearchTemplate.php b/lib/public/FullTextSearch/Model/SearchTemplate.php
new file mode 100644
index 0000000000..7d9159190e
--- /dev/null
+++ b/lib/public/FullTextSearch/Model/SearchTemplate.php
@@ -0,0 +1,258 @@
+
+ * @copyright 2018
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch\Model;
+
+
+use JsonSerializable;
+use OCP\FullTextSearch\IFullTextSearchProvider;
+
+
+/**
+ * Class SearchTemplate
+ *
+ * This is a data transfer object that should be created by Content Provider
+ * when the getSearchTemplate() method is called.
+ *
+ * The object will contain templates to be displayed, and the list of the different
+ * options to be available to the user when he start a new search.
+ *
+ * The display of the Options is generated by the FullTextSearch app and Options
+ * can be displayed in 2 places:
+ *
+ * - the navigation page of the app that generate the indexed content.
+ * (files, bookmarks, deck, mails, ...)
+ * - the navigation page of the FullTextSearch app.
+ *
+ * Both pages will have different Options, and only the first one can integrate
+ * a specific template.
+ *
+ * @see IFullTextSearchProvider::getSearchTemplate
+ *
+ * @since 15.0.0
+ *
+ * @package OCP\FullTextSearch\Model
+ */
+final class SearchTemplate implements JsonSerializable {
+
+
+ /** @var string */
+ private $icon = '';
+
+ /** @var string */
+ private $css = '';
+
+ /** @var string */
+ private $template = '';
+
+ /** @var SearchOption[] */
+ private $panelOptions = [];
+
+ /** @var SearchOption[] */
+ private $navigationOptions = [];
+
+
+ /**
+ * SearchTemplate constructor.
+ *
+ * the class of the icon and the css file to be loaded can be set during the
+ * creation of the object.
+ *
+ * @since 15.0.0
+ *
+ * @param string $icon
+ * @param string $css
+ */
+ public function __construct(string $icon = '', string $css = '') {
+ $this->icon = $icon;
+ $this->css = $css;
+ }
+
+
+ /**
+ * Set the class of the icon to be displayed in the left panel of the
+ * FullTextSearch navigation page, in front of the related Content Provider.
+ *
+ * @since 15.0.0
+ *
+ * @param string $class
+ *
+ * @return SearchTemplate
+ */
+ public function setIcon(string $class): SearchTemplate {
+ $this->icon = $class;
+
+ return $this;
+ }
+
+ /**
+ * Get the class of the icon.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getIcon(): string {
+ return $this->icon;
+ }
+
+
+ /**
+ * Set the path of a CSS file that will be loaded when needed.
+ *
+ * @since 15.0.0
+ *
+ * @param string $css
+ *
+ * @return SearchTemplate
+ */
+ public function setCss(string $css): SearchTemplate {
+ $this->css = $css;
+
+ return $this;
+ }
+
+ /**
+ * Get the path of the CSS file.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getCss(): string {
+ return $this->css;
+ }
+
+
+ /**
+ * Set the path of the file of a template that the HTML will be displayed
+ * below the Options.
+ * This should only be used if your Content Provider needs to set options in
+ * a way not generated by FullTextSearch
+ *
+ * @since 15.0.0
+ *
+ * @param string $template
+ *
+ * @return SearchTemplate
+ */
+ public function setTemplate(string $template): SearchTemplate {
+ $this->template = $template;
+
+ return $this;
+ }
+
+ /**
+ * Get the path of the template file.
+ *
+ * @since 15.0.0
+ *
+ * @return string
+ */
+ public function getTemplate(): string {
+ return $this->template;
+ }
+
+
+ /**
+ * Add an option in the Panel that is displayed when the user start a search
+ * within the app that generate the content.
+ *
+ * @see SearchOption
+ *
+ * @since 15.0.0
+ *
+ * @param SearchOption $option
+ *
+ * @return SearchTemplate
+ */
+ public function addPanelOption(SearchOption $option): SearchTemplate {
+ $this->panelOptions[] = $option;
+
+ return $this;
+ }
+
+ /**
+ * Get all options to be displayed in the Panel.
+ *
+ * @since 15.0.0
+ *
+ * @return SearchOption[]
+ */
+ public function getPanelOptions(): array {
+ return $this->panelOptions;
+ }
+
+
+ /**
+ * Add an option in the left panel of the FullTextSearch navigation page.
+ *
+ * @see SearchOption
+ *
+ * @since 15.0.0
+ *
+ * @param SearchOption $option
+ *
+ * @return SearchTemplate
+ */
+ public function addNavigationOption(SearchOption $option): SearchTemplate {
+ $this->navigationOptions[] = $option;
+
+ return $this;
+ }
+
+ /**
+ * Get all options to be displayed in the FullTextSearch navigation page.
+ *
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function getNavigationOptions(): array {
+ return $this->navigationOptions;
+ }
+
+
+ /**
+ * @since 15.0.0
+ *
+ * @return array
+ */
+ public function jsonSerialize(): array {
+ return [
+ 'icon' => $this->getIcon(),
+ 'css' => $this->getCss(),
+ 'template' => $this->getTemplate(),
+ 'panel' => $this->getPanelOptions(),
+ 'navigation' => $this->getNavigationOptions()
+ ];
+ }
+}
+
diff --git a/lib/public/FullTextSearch/Service/IIndexService.php b/lib/public/FullTextSearch/Service/IIndexService.php
new file mode 100644
index 0000000000..c5d1b9b3bc
--- /dev/null
+++ b/lib/public/FullTextSearch/Service/IIndexService.php
@@ -0,0 +1,99 @@
+
+ * @copyright 2018, Maxence Lange
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch\Service;
+
+
+use OCP\FullTextSearch\Model\IIndex;
+
+
+/**
+ * Interface IIndexService
+ *
+ * @since 15.0.0
+ *
+ * @package OCP\FullTextSearch\Service
+ */
+interface IIndexService {
+
+
+ /**
+ * Retrieve an Index from the database, based on the Id of the Provider
+ * and the Id of the Document
+ *
+ * @since 15.0.0
+ *
+ * @param string $providerId
+ * @param string $documentId
+ *
+ * @return IIndex
+ */
+ public function getIndex(string $providerId, string $documentId): IIndex;
+
+
+ /**
+ * Update the status of an Index. status is a bit flag, setting $reset to
+ * true will reset the status to the value defined in the parameter.
+ *
+ * @since 15.0.0
+ *
+ * @param string $providerId
+ * @param string $documentId
+ * @param int $status
+ * @param bool $reset
+ */
+ public function updateIndexStatus(string $providerId, string $documentId, int $status, bool $reset = false);
+
+
+ /**
+ * Update the status of an array of Index. status is a bit flag, setting $reset to
+ * true will reset the status to the value defined in the parameter.
+ *
+ * @since 15.0.0
+ *
+ * @param string $providerId
+ * @param array $documentIds
+ * @param int $status
+ * @param bool $reset
+ */
+ public function updateIndexesStatus(string $providerId, array $documentIds, int $status, bool $reset = false);
+
+
+ /**
+ * Update an array of Index.
+ *
+ * @since 15.0.0
+ *
+ * @param array $indexes
+ */
+ public function updateIndexes(array $indexes);
+
+}
+
diff --git a/lib/public/FullTextSearch/Service/IProviderService.php b/lib/public/FullTextSearch/Service/IProviderService.php
new file mode 100644
index 0000000000..64153c1396
--- /dev/null
+++ b/lib/public/FullTextSearch/Service/IProviderService.php
@@ -0,0 +1,65 @@
+
+ * @copyright 2018, Maxence Lange
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch\Service;
+
+
+/**
+ * Interface IProviderService
+ *
+ * @since 15.0.0
+ *
+ * @package OCP\FullTextSearch\Service
+ */
+interface IProviderService {
+
+
+ /**
+ * Check if the provider $providerId is already indexed.
+ *
+ * @since 15.0.0
+ *
+ * @param string $providerId
+ *
+ * @return bool
+ */
+ public function isProviderIndexed(string $providerId);
+
+
+ /**
+ * Add the Javascript API in the navigation page of an app.
+ *
+ * @since 15.0.0
+ */
+ public function addJavascriptAPI();
+
+
+}
+
diff --git a/lib/public/FullTextSearch/Service/ISearchService.php b/lib/public/FullTextSearch/Service/ISearchService.php
new file mode 100644
index 0000000000..7da38e44f5
--- /dev/null
+++ b/lib/public/FullTextSearch/Service/ISearchService.php
@@ -0,0 +1,89 @@
+
+ * @copyright 2018, Maxence Lange
+ * @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 .
+ *
+ */
+
+
+namespace OCP\FullTextSearch\Service;
+
+
+use OCP\FullTextSearch\Model\ISearchRequest;
+use OCP\FullTextSearch\Model\ISearchResult;
+
+
+/**
+ * Interface ISearchService
+ *
+ * @since 15.0.0
+ *
+ * @package OCP\FullTextSearch\Service
+ */
+interface ISearchService {
+
+
+ /**
+ * generate a search request, based on an array:
+ *
+ * $request =
+ * [
+ * 'providers' => (string/array) 'all'
+ * 'author' => (string) owner of the document.
+ * 'search' => (string) search string,
+ * 'size' => (int) number of items to be return
+ * 'page' => (int) page
+ * 'parts' => (array) parts of document to search within,
+ * 'options' = (array) search options,
+ * 'tags' => (array) tags,
+ * 'metatags' => (array) metatags,
+ * 'subtags' => (array) subtags
+ * ]
+ *
+ * 'providers' can be an array of providerIds
+ *
+ * @since 15.0.0
+ *
+ * @param array $request
+ *
+ * @return ISearchRequest
+ */
+ public function generateSearchRequest(array $request): ISearchRequest;
+
+
+ /**
+ * Search documents
+ *
+ * @since 15.0.0
+ *
+ * @param string $userId
+ * @param ISearchRequest $searchRequest
+ *
+ * @return ISearchResult[]
+ */
+ public function search(string $userId, ISearchRequest $searchRequest): array;
+
+}
+
diff --git a/lib/public/IAddressBook.php b/lib/public/IAddressBook.php
index 67c34c9e8c..4739e6f0c5 100644
--- a/lib/public/IAddressBook.php
+++ b/lib/public/IAddressBook.php
@@ -55,16 +55,18 @@ namespace OCP {
/**
* @param string $pattern which should match within the $searchProperties
* @param array $searchProperties defines the properties within the query pattern should match
- * @param array $options - for future use. One should always have options!
+ * @param array $options Options to define the output format
+ * - types boolean (since 15.0.0) If set to true, fields that come with a TYPE property will be an array
+ * example: ['id' => 5, 'FN' => 'Thomas Tanghus', 'EMAIL' => ['type => 'HOME', 'value' => 'g@h.i']]
* @return array an array of contacts which are arrays of key-value-pairs
+ * example result:
+ * [
+ * ['id' => 0, 'FN' => 'Thomas Müller', 'EMAIL' => 'a@b.c', 'GEO' => '37.386013;-122.082932'],
+ * ['id' => 5, 'FN' => 'Thomas Tanghus', 'EMAIL' => ['d@e.f', 'g@h.i']]
+ * ]
* @since 5.0.0
*/
public function search($pattern, $searchProperties, $options);
- // // dummy results
- // return array(
- // array('id' => 0, 'FN' => 'Thomas Müller', 'EMAIL' => 'a@b.c', 'GEO' => '37.386013;-122.082932'),
- // array('id' => 5, 'FN' => 'Thomas Tanghus', 'EMAIL' => array('d@e.f', 'g@h.i')),
- // );
/**
* @param array $properties this array if key-value-pairs defines a contact
diff --git a/lib/public/Share/IShare.php b/lib/public/Share/IShare.php
index 43543fdad4..dcd5fdecbe 100644
--- a/lib/public/Share/IShare.php
+++ b/lib/public/Share/IShare.php
@@ -418,4 +418,25 @@ interface IShare {
* @since 11.0.0
*/
public function getNodeCacheEntry();
+
+ /**
+ * Sets a shares hide download state
+ * This is mainly for public shares. It will signal that the share page should
+ * hide download buttons etc.
+ *
+ * @param bool $ro
+ * @return IShare
+ * @since 15.0.0
+ */
+ public function setHideDownload(bool $hide): IShare;
+
+ /**
+ * Gets a shares hide download state
+ * This is mainly for public shares. It will signal that the share page should
+ * hide download buttons etc.
+ *
+ * @return bool
+ * @since 15.0.0
+ */
+ public function getHideDownload(): bool;
}
diff --git a/resources/app-info.xsd b/resources/app-info.xsd
index fa06752c01..287ed6b991 100644
--- a/resources/app-info.xsd
+++ b/resources/app-info.xsd
@@ -63,6 +63,8 @@
maxOccurs="1" />
+
@@ -670,6 +672,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
getSystemValue('lookup_server', 'https://lookup.nextcloud.com');
$this->lookupServerUrl = rtrim($lookupServerUrl, '/');
+ $this->config = $config;
}
/**
diff --git a/settings/js/admin.js b/settings/js/admin.js
index 35f3d949ab..56bbaead52 100644
--- a/settings/js/admin.js
+++ b/settings/js/admin.js
@@ -66,11 +66,8 @@ $(document).ready(function(){
});
});
- $('#shareapiExpireAfterNDays').change(function() {
- var value = $(this).val();
- if (value <= 0) {
- $(this).val("1");
- }
+ $('#shareapiExpireAfterNDays').on('input', function() {
+ this.value = this.value.replace(/\D/g, '');
});
$('#shareAPI input:not(.noJSAutoUpdate)').change(function() {
diff --git a/tests/Core/Controller/LoginControllerTest.php b/tests/Core/Controller/LoginControllerTest.php
index f2e8d112b6..efe85d81e1 100644
--- a/tests/Core/Controller/LoginControllerTest.php
+++ b/tests/Core/Controller/LoginControllerTest.php
@@ -199,6 +199,7 @@ class LoginControllerTest extends TestCase {
'alt_login' => [],
'resetPasswordLink' => null,
'throttle_delay' => 1000,
+ 'login_form_autocomplete' => 'off',
],
'guest'
);
@@ -223,6 +224,7 @@ class LoginControllerTest extends TestCase {
'alt_login' => [],
'resetPasswordLink' => null,
'throttle_delay' => 1000,
+ 'login_form_autocomplete' => 'off',
],
'guest'
);
@@ -255,10 +257,12 @@ class LoginControllerTest extends TestCase {
->method('isLoggedIn')
->willReturn(false);
$this->config
- ->expects($this->once())
+ ->expects($this->exactly(2))
->method('getSystemValue')
- ->with('lost_password_link')
- ->willReturn(false);
+ ->will($this->returnValueMap([
+ ['login_form_autocomplete', true, true],
+ ['lost_password_link', '', false],
+ ]));
$user = $this->createMock(IUser::class);
$user
->expects($this->once())
@@ -281,6 +285,7 @@ class LoginControllerTest extends TestCase {
'alt_login' => [],
'resetPasswordLink' => false,
'throttle_delay' => 1000,
+ 'login_form_autocomplete' => 'on',
],
'guest'
);
@@ -338,10 +343,12 @@ class LoginControllerTest extends TestCase {
->method('isLoggedIn')
->willReturn(false);
$this->config
- ->expects($this->once())
+ ->expects($this->exactly(2))
->method('getSystemValue')
- ->with('lost_password_link')
- ->willReturn(false);
+ ->will($this->returnValueMap([
+ ['login_form_autocomplete', true, true],
+ ['lost_password_link', '', false],
+ ]));
$user = $this->createMock(IUser::class);
$user->expects($this->once())
->method('canChangePassword')
@@ -363,6 +370,7 @@ class LoginControllerTest extends TestCase {
'alt_login' => [],
'resetPasswordLink' => false,
'throttle_delay' => 1000,
+ 'login_form_autocomplete' => 'on',
],
'guest'
);
diff --git a/tests/acceptance/features/app-files.feature b/tests/acceptance/features/app-files.feature
index 74490180ad..70e085ca66 100644
--- a/tests/acceptance/features/app-files.feature
+++ b/tests/acceptance/features/app-files.feature
@@ -121,6 +121,32 @@ Feature: app-files
And I open the Share menu
Then I see that the Share menu is shown
+ Scenario: hide download in a public shared link
+ Given I act as John
+ And I am logged in
+ And I share the link for "welcome.txt"
+ And I set the download of the shared link as hidden
+ And I write down the shared link
+ When I act as Jane
+ And I visit the shared link I wrote down
+ And I see that the current page is the shared link I wrote down
+ Then I see that the download button is not shown
+ And I see that the Share menu button is not shown
+
+ Scenario: show download again in a public shared link
+ Given I act as John
+ And I am logged in
+ And I share the link for "welcome.txt"
+ And I set the download of the shared link as hidden
+ And I set the download of the shared link as shown
+ And I write down the shared link
+ When I act as Jane
+ And I visit the shared link I wrote down
+ And I see that the current page is the shared link I wrote down
+ Then I see that the download button is shown
+ And I open the Share menu
+ And I see that the Share menu is shown
+
Scenario: creation is not possible by default in a public shared folder
Given I act as John
And I am logged in
diff --git a/tests/acceptance/features/bootstrap/FilesAppContext.php b/tests/acceptance/features/bootstrap/FilesAppContext.php
index 408995b9a8..4b648bfc54 100644
--- a/tests/acceptance/features/bootstrap/FilesAppContext.php
+++ b/tests/acceptance/features/bootstrap/FilesAppContext.php
@@ -232,6 +232,27 @@ class FilesAppContext implements Context, ActorAwareInterface {
describedAs("Copy link menu item in the share link menu in the details view in Files app");
}
+ /**
+ * @return Locator
+ */
+ public static function hideDownloadCheckbox() {
+ // forThe()->checkbox("Hide download") can not be used here; that would
+ // return the checkbox itself, but the element that the user interacts
+ // with is the label.
+ return Locator::forThe()->xpath("//label[normalize-space() = 'Hide download']")->
+ descendantOf(self::shareLinkMenu())->
+ describedAs("Hide download checkbox in the details view in Files app");
+ }
+
+ /**
+ * @return Locator
+ */
+ public static function hideDownloadCheckboxInput() {
+ return Locator::forThe()->checkbox("Hide download")->
+ descendantOf(self::shareLinkMenu())->
+ describedAs("Hide download checkbox input in the details view in Files app");
+ }
+
/**
* @return Locator
*/
@@ -334,6 +355,28 @@ class FilesAppContext implements Context, ActorAwareInterface {
$this->actor->find(self::itemInDropdownForTag($tag), 10)->click();
}
+ /**
+ * @When I set the download of the shared link as hidden
+ */
+ public function iSetTheDownloadOfTheSharedLinkAsHidden() {
+ $this->showShareLinkMenuIfNeeded();
+
+ $this->iSeeThatTheDownloadOfTheLinkShareIsShown();
+
+ $this->actor->find(self::hideDownloadCheckbox(), 2)->click();
+ }
+
+ /**
+ * @When I set the download of the shared link as shown
+ */
+ public function iSetTheDownloadOfTheSharedLinkAsShown() {
+ $this->showShareLinkMenuIfNeeded();
+
+ $this->iSeeThatTheDownloadOfTheLinkShareIsHidden();
+
+ $this->actor->find(self::hideDownloadCheckbox(), 2)->click();
+ }
+
/**
* @When I set the shared link as editable
*/
@@ -460,6 +503,24 @@ class FilesAppContext implements Context, ActorAwareInterface {
}
}
+ /**
+ * @Then I see that the download of the link share is hidden
+ */
+ public function iSeeThatTheDownloadOfTheLinkShareIsHidden() {
+ $this->showShareLinkMenuIfNeeded();
+
+ PHPUnit_Framework_Assert::assertTrue($this->actor->find(self::hideDownloadCheckboxInput(), 10)->isChecked());
+ }
+
+ /**
+ * @Then I see that the download of the link share is shown
+ */
+ public function iSeeThatTheDownloadOfTheLinkShareIsShown() {
+ $this->showShareLinkMenuIfNeeded();
+
+ PHPUnit_Framework_Assert::assertFalse($this->actor->find(self::hideDownloadCheckboxInput(), 10)->isChecked());
+ }
+
/**
* @Then I see that the working icon for password protect is shown
*/
diff --git a/tests/acceptance/features/bootstrap/FilesSharingAppContext.php b/tests/acceptance/features/bootstrap/FilesSharingAppContext.php
index 1fe12d5f42..531184442d 100644
--- a/tests/acceptance/features/bootstrap/FilesSharingAppContext.php
+++ b/tests/acceptance/features/bootstrap/FilesSharingAppContext.php
@@ -103,6 +103,14 @@ class FilesSharingAppContext implements Context, ActorAwareInterface {
describedAs("Text preview in Shared file page");
}
+ /**
+ * @return Locator
+ */
+ public static function downloadButton() {
+ return Locator::forThe()->id("downloadFile")->
+ describedAs("Download button in Shared file page");
+ }
+
/**
* @When I visit the shared link I wrote down
*/
@@ -198,6 +206,17 @@ class FilesSharingAppContext implements Context, ActorAwareInterface {
$this->actor->find(self::saveItemInShareMenu())->isVisible());
}
+ /**
+ * @Then I see that the Share menu button is not shown
+ */
+ public function iSeeThatTheShareMenuButtonIsNotShown() {
+ try {
+ PHPUnit_Framework_Assert::assertFalse(
+ $this->actor->find(self::shareMenuButton())->isVisible());
+ } catch (NoSuchElementException $exception) {
+ }
+ }
+
/**
* @Then I see that the shared file preview shows the text :text
*/
@@ -205,4 +224,25 @@ class FilesSharingAppContext implements Context, ActorAwareInterface {
PHPUnit_Framework_Assert::assertContains($text, $this->actor->find(self::textPreview(), 10)->getText());
}
+ /**
+ * @Then I see that the download button is shown
+ */
+ public function iSeeThatTheDownloadButtonIsShown() {
+ if (!WaitFor::elementToBeEventuallyShown(
+ $this->actor, self::downloadButton(), $timeout = 10 * $this->actor->getFindTimeoutMultiplier())) {
+ PHPUnit_Framework_Assert::fail("The download button is not visible yet after $timeout seconds");
+ }
+ }
+
+ /**
+ * @Then I see that the download button is not shown
+ */
+ public function iSeeThatTheDownloadButtonIsNotShown() {
+ try {
+ PHPUnit_Framework_Assert::assertFalse(
+ $this->actor->find(self::downloadButton())->isVisible());
+ } catch (NoSuchElementException $exception) {
+ }
+ }
+
}
diff --git a/tests/lib/Authentication/Token/DefaultTokenProviderTest.php b/tests/lib/Authentication/Token/DefaultTokenProviderTest.php
index 8b005bd8bd..57144d0f00 100644
--- a/tests/lib/Authentication/Token/DefaultTokenProviderTest.php
+++ b/tests/lib/Authentication/Token/DefaultTokenProviderTest.php
@@ -22,18 +22,17 @@
namespace Test\Authentication\Token;
+use OC\Authentication\Exceptions\ExpiredTokenException;
use OC\Authentication\Exceptions\InvalidTokenException;
use OC\Authentication\Token\DefaultToken;
use OC\Authentication\Token\DefaultTokenMapper;
use OC\Authentication\Token\DefaultTokenProvider;
-use OC\Authentication\Token\ExpiredTokenException;
use OC\Authentication\Token\IToken;
use OC\Authentication\Token\PublicKeyToken;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
use OCP\ILogger;
-use OCP\IUser;
use OCP\Security\ICrypto;
use Test\TestCase;
diff --git a/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php b/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php
index 02ec62d3d7..ce64878bf5 100644
--- a/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php
+++ b/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php
@@ -23,19 +23,17 @@
namespace Test\Authentication\Token;
+use OC\Authentication\Exceptions\ExpiredTokenException;
use OC\Authentication\Exceptions\InvalidTokenException;
-use OC\Authentication\Exceptions\PasswordlessTokenException;
use OC\Authentication\Token\DefaultToken;
use OC\Authentication\Token\PublicKeyToken;
use OC\Authentication\Token\PublicKeyTokenMapper;
use OC\Authentication\Token\PublicKeyTokenProvider;
-use OC\Authentication\Token\ExpiredTokenException;
use OC\Authentication\Token\IToken;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
use OCP\ILogger;
-use OCP\IUser;
use OCP\Security\ICrypto;
use Test\TestCase;
diff --git a/tests/lib/Collaboration/Collaborators/MailPluginTest.php b/tests/lib/Collaboration/Collaborators/MailPluginTest.php
index 775941bd44..a9d0244d38 100644
--- a/tests/lib/Collaboration/Collaborators/MailPluginTest.php
+++ b/tests/lib/Collaboration/Collaborators/MailPluginTest.php
@@ -120,16 +120,20 @@ class MailPluginTest extends TestCase {
public function dataGetEmail() {
return [
+ // data set 0
['test', [], true, ['emails' => [], 'exact' => ['emails' => []]], false, false],
+ // data set 1
['test', [], false, ['emails' => [], 'exact' => ['emails' => []]], false, false],
+ // data set 2
[
'test@remote.com',
[],
true,
- ['emails' => [], 'exact' => ['emails' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]],
+ ['emails' => [], 'exact' => ['emails' => [['uuid' => 'test@remote.com', 'label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]],
false,
false,
],
+ // data set 3
[ // no valid email address
'test@remote',
[],
@@ -138,26 +142,31 @@ class MailPluginTest extends TestCase {
false,
false,
],
+ // data set 4
[
'test@remote.com',
[],
false,
- ['emails' => [], 'exact' => ['emails' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]],
+ ['emails' => [], 'exact' => ['emails' => [['uuid' => 'test@remote.com', 'label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]],
false,
false,
],
+ // data set 5
[
'test',
[
[
+ 'UID' => 'uid3',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid2',
'FN' => 'User2 @ Localhost',
'EMAIL' => [
],
],
[
+ 'UID' => 'uid1',
'FN' => 'User @ Localhost',
'EMAIL' => [
'username@localhost',
@@ -165,22 +174,26 @@ class MailPluginTest extends TestCase {
],
],
true,
- ['emails' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]], 'exact' => ['emails' => []]],
+ ['emails' => [['uuid' => 'uid1', 'name' => 'User @ Localhost', 'type' => '', 'label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]], 'exact' => ['emails' => []]],
false,
false,
],
+ // data set 6
[
'test',
[
[
+ 'UID' => 'uid3',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid2',
'FN' => 'User2 @ Localhost',
'EMAIL' => [
],
],
[
+ 'UID' => 'uid1',
'FN' => 'User @ Localhost',
'EMAIL' => [
'username@localhost',
@@ -192,18 +205,22 @@ class MailPluginTest extends TestCase {
false,
false,
],
+ // data set 7
[
'test@remote.com',
[
[
+ 'UID' => 'uid3',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid2',
'FN' => 'User2 @ Localhost',
'EMAIL' => [
],
],
[
+ 'UID' => 'uid1',
'FN' => 'User @ Localhost',
'EMAIL' => [
'username@localhost',
@@ -211,22 +228,26 @@ class MailPluginTest extends TestCase {
],
],
true,
- ['emails' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]], 'exact' => ['emails' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]],
+ ['emails' => [['uuid' => 'uid1', 'name' => 'User @ Localhost', 'type' => '', 'label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]], 'exact' => ['emails' => [['label' => 'test@remote.com', 'uuid' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]],
false,
false,
],
+ // data set 8
[
'test@remote.com',
[
[
+ 'UID' => 'uid3',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid2',
'FN' => 'User2 @ Localhost',
'EMAIL' => [
],
],
[
+ 'UID' => 'uid1',
'FN' => 'User @ Localhost',
'EMAIL' => [
'username@localhost',
@@ -234,22 +255,26 @@ class MailPluginTest extends TestCase {
],
],
false,
- ['emails' => [], 'exact' => ['emails' => [['label' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]],
+ ['emails' => [], 'exact' => ['emails' => [['label' => 'test@remote.com', 'uuid' => 'test@remote.com', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@remote.com']]]]],
false,
false,
],
+ // data set 9
[
'username@localhost',
[
[
+ 'UID' => 'uid3',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid2',
'FN' => 'User2 @ Localhost',
'EMAIL' => [
],
],
[
+ 'UID' => 'uid1',
'FN' => 'User @ Localhost',
'EMAIL' => [
'username@localhost',
@@ -257,22 +282,26 @@ class MailPluginTest extends TestCase {
],
],
true,
- ['emails' => [], 'exact' => ['emails' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]]]],
+ ['emails' => [], 'exact' => ['emails' => [['name' => 'User @ Localhost', 'uuid' => 'uid1', 'type' => '', 'label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]]]],
true,
false,
],
+ // data set 10
[
'username@localhost',
[
[
+ 'UID' => 'uid1',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid2',
'FN' => 'User2 @ Localhost',
'EMAIL' => [
],
],
[
+ 'UID' => 'uid1',
'FN' => 'User @ Localhost',
'EMAIL' => [
'username@localhost',
@@ -280,23 +309,27 @@ class MailPluginTest extends TestCase {
],
],
false,
- ['emails' => [], 'exact' => ['emails' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]]]],
+ ['emails' => [], 'exact' => ['emails' => [['name' => 'User @ Localhost', 'uuid' => 'uid1', 'type' => '', 'label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']]]]],
true,
false,
],
+ // data set 11
// contact with space
[
'user name@localhost',
[
[
+ 'UID' => 'uid3',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid2',
'FN' => 'User2 @ Localhost',
'EMAIL' => [
],
],
[
+ 'UID' => 'uid1',
'FN' => 'User Name @ Localhost',
'EMAIL' => [
'user name@localhost',
@@ -304,23 +337,27 @@ class MailPluginTest extends TestCase {
],
],
false,
- ['emails' => [], 'exact' => ['emails' => [['label' => 'User Name @ Localhost (user name@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'user name@localhost']]]]],
+ ['emails' => [], 'exact' => ['emails' => [['name' => 'User Name @ Localhost', 'uuid' => 'uid1', 'type' => '', 'label' => 'User Name @ Localhost (user name@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'user name@localhost']]]]],
true,
false,
],
+ // data set 12
// remote with space, no contact
[
'user space@remote.com',
[
[
+ 'UID' => 'uid3',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid2',
'FN' => 'User2 @ Localhost',
'EMAIL' => [
],
],
[
+ 'UID' => 'uid1',
'FN' => 'User @ Localhost',
'EMAIL' => [
'username@localhost',
@@ -332,11 +369,13 @@ class MailPluginTest extends TestCase {
false,
false,
],
+ // data set 13
// Local user found by email
[
'test@example.com',
[
[
+ 'UID' => 'uid1',
'FN' => 'User',
'EMAIL' => ['test@example.com'],
'CLOUD' => ['test@localhost'],
@@ -344,15 +383,17 @@ class MailPluginTest extends TestCase {
]
],
false,
- ['users' => [], 'exact' => ['users' => [['label' => 'User (test@example.com)','value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test'],]]]],
+ ['users' => [], 'exact' => ['users' => [['uuid' => 'uid1', 'name' => 'User', 'label' => 'User (test@example.com)','value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test'],]]]],
true,
false,
],
+ // data set 14
// Current local user found by email => no result
[
'test@example.com',
[
[
+ 'UID' => 'uid1',
'FN' => 'User',
'EMAIL' => ['test@example.com'],
'CLOUD' => ['current@localhost'],
@@ -364,29 +405,34 @@ class MailPluginTest extends TestCase {
false,
false,
],
+ // data set 15
// Pagination and "more results" for user matches byyyyyyy emails
[
'test@example',
[
[
+ 'UID' => 'uid1',
'FN' => 'User1',
'EMAIL' => ['test@example.com'],
'CLOUD' => ['test1@localhost'],
'isLocalSystemBook' => true,
],
[
+ 'UID' => 'uid2',
'FN' => 'User2',
'EMAIL' => ['test@example.de'],
'CLOUD' => ['test2@localhost'],
'isLocalSystemBook' => true,
],
[
+ 'UID' => 'uid3',
'FN' => 'User3',
'EMAIL' => ['test@example.org'],
'CLOUD' => ['test3@localhost'],
'isLocalSystemBook' => true,
],
[
+ 'UID' => 'uid4',
'FN' => 'User4',
'EMAIL' => ['test@example.net'],
'CLOUD' => ['test4@localhost'],
@@ -395,32 +441,37 @@ class MailPluginTest extends TestCase {
],
true,
['users' => [
- ['label' => 'User1 (test@example.com)', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']],
- ['label' => 'User2 (test@example.de)', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test2']],
+ ['uuid' => 'uid1', 'name' => 'User1', 'label' => 'User1 (test@example.com)', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test1']],
+ ['uuid' => 'uid2', 'name' => 'User2', 'label' => 'User2 (test@example.de)', 'value' => ['shareType' => Share::SHARE_TYPE_USER, 'shareWith' => 'test2']],
], 'emails' => [], 'exact' => ['users' => [], 'emails' => []]],
false,
true,
],
+ // data set 16
// Pagination and "more results" for normal emails
[
'test@example',
[
[
+ 'UID' => 'uid1',
'FN' => 'User1',
'EMAIL' => ['test@example.com'],
'CLOUD' => ['test1@localhost'],
],
[
+ 'UID' => 'uid2',
'FN' => 'User2',
'EMAIL' => ['test@example.de'],
'CLOUD' => ['test2@localhost'],
],
[
+ 'UID' => 'uid3',
'FN' => 'User3',
'EMAIL' => ['test@example.org'],
'CLOUD' => ['test3@localhost'],
],
[
+ 'UID' => 'uid4',
'FN' => 'User4',
'EMAIL' => ['test@example.net'],
'CLOUD' => ['test4@localhost'],
@@ -428,12 +479,45 @@ class MailPluginTest extends TestCase {
],
true,
['emails' => [
- ['label' => 'User1 (test@example.com)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@example.com']],
- ['label' => 'User2 (test@example.de)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@example.de']],
+ ['uuid' => 'uid1', 'name' => 'User1', 'type' => '', 'label' => 'User1 (test@example.com)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@example.com']],
+ ['uuid' => 'uid2', 'name' => 'User2', 'type' => '', 'label' => 'User2 (test@example.de)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'test@example.de']],
], 'exact' => ['emails' => []]],
false,
true,
],
+ // data set 17
+ // multiple email addresses with type
+ [
+ 'User Name',
+ [
+ [
+ 'UID' => 'uid3',
+ 'FN' => 'User3',
+ ],
+ [
+ 'UID' => 'uid2',
+ 'FN' => 'User2',
+ 'EMAIL' => [
+ ],
+ ],
+ [
+ 'UID' => 'uid1',
+ 'FN' => 'User Name',
+ 'EMAIL' => [
+ ['type' => 'HOME', 'value' => 'username@localhost'],
+ ['type' => 'WORK', 'value' => 'username@other'],
+ ],
+ ],
+ ],
+ false,
+ ['emails' => [
+ ], 'exact' => ['emails' => [
+ ['name' => 'User Name', 'uuid' => 'uid1', 'type' => 'HOME', 'label' => 'User Name (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@localhost']],
+ ['name' => 'User Name', 'uuid' => 'uid1', 'type' => 'WORK', 'label' => 'User Name (username@other)', 'value' => ['shareType' => Share::SHARE_TYPE_EMAIL, 'shareWith' => 'username@other']]
+ ]]],
+ false,
+ false,
+ ],
];
}
@@ -513,7 +597,7 @@ class MailPluginTest extends TestCase {
'UID' => 'User'
]
],
- ['users' => [['label' => 'User (test@example.com)','value' => ['shareType' => 0, 'shareWith' => 'test'],]], 'emails' => [], 'exact' => ['emails' => [], 'users' => []]],
+ ['users' => [['label' => 'User (test@example.com)', 'uuid' => 'User', 'name' => 'User', 'value' => ['shareType' => 0, 'shareWith' => 'test'],]], 'emails' => [], 'exact' => ['emails' => [], 'users' => []]],
false,
false,
[
@@ -553,7 +637,7 @@ class MailPluginTest extends TestCase {
'UID' => 'User'
]
],
- ['emails' => [], 'exact' => ['emails' => [['label' => 'test@example.com', 'value' => ['shareType' => 4,'shareWith' => 'test@example.com']]]]],
+ ['emails' => [], 'exact' => ['emails' => [['label' => 'test@example.com', 'uuid' => 'test@example.com', 'value' => ['shareType' => 4,'shareWith' => 'test@example.com']]]]],
false,
false,
[
diff --git a/tests/lib/Collaboration/Collaborators/RemotePluginTest.php b/tests/lib/Collaboration/Collaborators/RemotePluginTest.php
index aa009a7134..aff6818576 100644
--- a/tests/lib/Collaboration/Collaborators/RemotePluginTest.php
+++ b/tests/lib/Collaboration/Collaborators/RemotePluginTest.php
@@ -31,10 +31,17 @@ use OCP\Collaboration\Collaborators\SearchResultType;
use OCP\Contacts\IManager;
use OCP\Federation\ICloudIdManager;
use OCP\IConfig;
+use OCP\IUser;
+use OCP\IUserManager;
+use OCP\IUserSession;
use OCP\Share;
use Test\TestCase;
class RemotePluginTest extends TestCase {
+
+ /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
+ protected $userManager;
+
/** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
protected $config;
@@ -53,6 +60,7 @@ class RemotePluginTest extends TestCase {
public function setUp() {
parent::setUp();
+ $this->userManager = $this->createMock(IUserManager::class);
$this->config = $this->createMock(IConfig::class);
$this->contactsManager = $this->createMock(IManager::class);
$this->cloudIdManager = new CloudIdManager();
@@ -60,7 +68,15 @@ class RemotePluginTest extends TestCase {
}
public function instantiatePlugin() {
- $this->plugin = new RemotePlugin($this->contactsManager, $this->cloudIdManager, $this->config);
+ $user = $this->createMock(IUser::class);
+ $user->expects($this->any())
+ ->method('getUID')
+ ->willReturn('admin');
+ $userSession = $this->createMock(IUserSession::class);
+ $userSession->expects($this->any())
+ ->method('getUser')
+ ->willReturn($user);
+ $this->plugin = new RemotePlugin($this->contactsManager, $this->cloudIdManager, $this->config, $this->userManager, $userSession);
}
/**
@@ -152,14 +168,17 @@ class RemotePluginTest extends TestCase {
'test',
[
[
+ 'UID' => 'uid',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid',
'FN' => 'User2 @ Localhost',
'CLOUD' => [
],
],
[
+ 'UID' => 'uid1',
'FN' => 'User @ Localhost',
'CLOUD' => [
'username@localhost',
@@ -167,7 +186,7 @@ class RemotePluginTest extends TestCase {
],
],
true,
- ['remotes' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']]], 'exact' => ['remotes' => []]],
+ ['remotes' => [['name' => 'User @ Localhost', 'label' => 'User @ Localhost (username@localhost)', 'uuid' => 'uid1', 'type' => '', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']]], 'exact' => ['remotes' => []]],
false,
true,
],
@@ -175,14 +194,17 @@ class RemotePluginTest extends TestCase {
'test',
[
[
+ 'UID' => 'uid',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid',
'FN' => 'User2 @ Localhost',
'CLOUD' => [
],
],
[
+ 'UID' => 'uid',
'FN' => 'User @ Localhost',
'CLOUD' => [
'username@localhost',
@@ -198,14 +220,17 @@ class RemotePluginTest extends TestCase {
'test@remote',
[
[
+ 'UID' => 'uid',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid',
'FN' => 'User2 @ Localhost',
'CLOUD' => [
],
],
[
+ 'UID' => 'uid',
'FN' => 'User @ Localhost',
'CLOUD' => [
'username@localhost',
@@ -213,7 +238,7 @@ class RemotePluginTest extends TestCase {
],
],
true,
- ['remotes' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']]], 'exact' => ['remotes' => [['label' => 'test@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'test@remote']]]]],
+ ['remotes' => [['name' => 'User @ Localhost', 'label' => 'User @ Localhost (username@localhost)', 'uuid' => 'uid', 'type' => '', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']]], 'exact' => ['remotes' => [['label' => 'test@remote', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'test@remote']]]]],
false,
true,
],
@@ -221,14 +246,17 @@ class RemotePluginTest extends TestCase {
'test@remote',
[
[
+ 'UID' => 'uid',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid',
'FN' => 'User2 @ Localhost',
'CLOUD' => [
],
],
[
+ 'UID' => 'uid',
'FN' => 'User @ Localhost',
'CLOUD' => [
'username@localhost',
@@ -244,14 +272,17 @@ class RemotePluginTest extends TestCase {
'username@localhost',
[
[
+ 'UID' => 'uid3',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => '2',
'FN' => 'User2 @ Localhost',
'CLOUD' => [
],
],
[
+ 'UID' => 'uid1',
'FN' => 'User @ Localhost',
'CLOUD' => [
'username@localhost',
@@ -259,7 +290,7 @@ class RemotePluginTest extends TestCase {
],
],
true,
- ['remotes' => [], 'exact' => ['remotes' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']]]]],
+ ['remotes' => [], 'exact' => ['remotes' => [['name' => 'User @ Localhost', 'label' => 'User @ Localhost (username@localhost)', 'uuid' => 'uid1', 'type' => '', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']]]]],
true,
true,
],
@@ -267,14 +298,17 @@ class RemotePluginTest extends TestCase {
'username@localhost',
[
[
+ 'UID' => 'uid3',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid2',
'FN' => 'User2 @ Localhost',
'CLOUD' => [
],
],
[
+ 'UID' => 'uid1',
'FN' => 'User @ Localhost',
'CLOUD' => [
'username@localhost',
@@ -282,7 +316,7 @@ class RemotePluginTest extends TestCase {
],
],
false,
- ['remotes' => [], 'exact' => ['remotes' => [['label' => 'User @ Localhost (username@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']]]]],
+ ['remotes' => [], 'exact' => ['remotes' => [['name' => 'User @ Localhost', 'label' => 'User @ Localhost (username@localhost)', 'uuid' => 'uid1', 'type' => '', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'username@localhost', 'server' => 'localhost']]]]],
true,
true,
],
@@ -291,14 +325,17 @@ class RemotePluginTest extends TestCase {
'user name@localhost',
[
[
+ 'UID' => 'uid1',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid2',
'FN' => 'User2 @ Localhost',
'CLOUD' => [
],
],
[
+ 'UID' => 'uid3',
'FN' => 'User Name @ Localhost',
'CLOUD' => [
'user name@localhost',
@@ -306,7 +343,7 @@ class RemotePluginTest extends TestCase {
],
],
false,
- ['remotes' => [], 'exact' => ['remotes' => [['label' => 'User Name @ Localhost (user name@localhost)', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'user name@localhost', 'server' => 'localhost']]]]],
+ ['remotes' => [], 'exact' => ['remotes' => [['name' => 'User Name @ Localhost', 'label' => 'User Name @ Localhost (user name@localhost)', 'uuid' => 'uid3', 'type' => '', 'value' => ['shareType' => Share::SHARE_TYPE_REMOTE, 'shareWith' => 'user name@localhost', 'server' => 'localhost']]]]],
true,
true,
],
@@ -315,14 +352,17 @@ class RemotePluginTest extends TestCase {
'user space@remote',
[
[
+ 'UID' => 'uid3',
'FN' => 'User3 @ Localhost',
],
[
+ 'UID' => 'uid2',
'FN' => 'User2 @ Localhost',
'CLOUD' => [
],
],
[
+ 'UID' => 'uid1',
'FN' => 'User @ Localhost',
'CLOUD' => [
'username@localhost',
diff --git a/tests/lib/Files/Storage/Storage.php b/tests/lib/Files/Storage/Storage.php
index 04aafece2e..a25a3f74f9 100644
--- a/tests/lib/Files/Storage/Storage.php
+++ b/tests/lib/Files/Storage/Storage.php
@@ -23,6 +23,7 @@
namespace Test\Files\Storage;
use OC\Files\Cache\Watcher;
+use OCP\Files\Storage\IWriteStreamStorage;
abstract class Storage extends \Test\TestCase {
/**
@@ -628,4 +629,20 @@ abstract class Storage extends \Test\TestCase {
$this->instance->rename('bar.txt.part', 'bar.txt');
$this->assertEquals('bar', $this->instance->file_get_contents('bar.txt'));
}
+
+ public function testWriteStream() {
+ $textFile = \OC::$SERVERROOT . '/tests/data/lorem.txt';
+
+ if (!$this->instance->instanceOfStorage(IWriteStreamStorage::class)) {
+ $this->markTestSkipped('Not a WriteSteamStorage');
+ }
+ /** @var IWriteStreamStorage $storage */
+ $storage = $this->instance;
+
+ $source = fopen($textFile, 'r');
+
+ $storage->writeStream('test.txt', $source);
+ $this->assertTrue($storage->file_exists('test.txt'));
+ $this->assertEquals(file_get_contents($textFile), $storage->file_get_contents('test.txt'));
+ }
}
diff --git a/tests/lib/Files/Stream/CountReadStreamTest.php b/tests/lib/Files/Stream/CountReadStreamTest.php
new file mode 100644
index 0000000000..99291d1644
--- /dev/null
+++ b/tests/lib/Files/Stream/CountReadStreamTest.php
@@ -0,0 +1,49 @@
+
+ *
+ * @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 .
+ *
+ */
+
+namespace Test\Files\Stream;
+
+use OC\Files\Stream\CountReadStream;
+use Test\TestCase;
+
+class CountReadStreamTest extends TestCase {
+ private function getStream($data) {
+ $handle = fopen('php://temp', 'w+');
+ fwrite($handle, $data);
+ rewind($handle);
+ return $handle;
+ }
+
+ public function testBasicCount() {
+ $source = $this->getStream('foo');
+ $stream = CountReadStream::wrap($source, function ($size) {
+ $this->assertEquals(3, $size);
+ });
+ stream_get_contents($stream);
+ }
+
+ public function testLarger() {
+ $stream = CountReadStream::wrap(fopen(__DIR__ . '/../../../data/testimage.mp4', 'r'), function ($size) {
+ $this->assertEquals(383631, $size);
+ });
+ stream_get_contents($stream);
+ }
+}
diff --git a/tests/lib/Preview/GeneratorTest.php b/tests/lib/Preview/GeneratorTest.php
index 64786fa9fe..565b526b65 100644
--- a/tests/lib/Preview/GeneratorTest.php
+++ b/tests/lib/Preview/GeneratorTest.php
@@ -104,7 +104,7 @@ class GeneratorTest extends \Test\TestCase {
$previewFile = $this->createMock(ISimpleFile::class);
$previewFolder->method('getFile')
- ->with($this->equalTo('128-128.png'))
+ ->with($this->equalTo('256-256.png'))
->willReturn($previewFile);
$this->eventDispatcher->expects($this->once())
@@ -212,7 +212,7 @@ class GeneratorTest extends \Test\TestCase {
->will($this->returnCallback(function($filename) use ($maxPreview, $previewFile) {
if ($filename === '2048-2048-max.png') {
return $maxPreview;
- } else if ($filename === '128-128.png') {
+ } else if ($filename === '256-256.png') {
return $previewFile;
}
$this->fail('Unexpected file');
@@ -223,7 +223,7 @@ class GeneratorTest extends \Test\TestCase {
->with($this->equalTo('my data'));
$previewFolder->method('getFile')
- ->with($this->equalTo('128-128.png'))
+ ->with($this->equalTo('256-256.png'))
->willThrowException(new NotFoundException());
$image = $this->createMock(IImage::class);
@@ -233,7 +233,7 @@ class GeneratorTest extends \Test\TestCase {
$image->expects($this->once())
->method('resize')
- ->with(128);
+ ->with(256);
$image->method('data')
->willReturn('my resized data');
$image->method('valid')->willReturn(true);
@@ -328,8 +328,8 @@ class GeneratorTest extends \Test\TestCase {
return [
[1024, 2048, 512, 512, false, IPreview::MODE_FILL, 256, 512],
[1024, 2048, 512, 512, false, IPreview::MODE_COVER, 512, 1024],
- [1024, 2048, 512, 512, true, IPreview::MODE_FILL, 512, 512],
- [1024, 2048, 512, 512, true, IPreview::MODE_COVER, 512, 512],
+ [1024, 2048, 512, 512, true, IPreview::MODE_FILL, 1024, 1024],
+ [1024, 2048, 512, 512, true, IPreview::MODE_COVER, 1024, 1024],
[1024, 2048, -1, 512, false, IPreview::MODE_COVER, 256, 512],
[1024, 2048, 512, -1, false, IPreview::MODE_FILL, 512, 1024],
@@ -343,14 +343,20 @@ class GeneratorTest extends \Test\TestCase {
[2048, 1024, 512, 512, false, IPreview::MODE_FILL, 512, 256],
[2048, 1024, 512, 512, false, IPreview::MODE_COVER, 1024, 512],
- [2048, 1024, 512, 512, true, IPreview::MODE_FILL, 512, 512],
- [2048, 1024, 512, 512, true, IPreview::MODE_COVER, 512, 512],
+ [2048, 1024, 512, 512, true, IPreview::MODE_FILL, 1024, 1024],
+ [2048, 1024, 512, 512, true, IPreview::MODE_COVER, 1024, 1024],
[2048, 1024, -1, 512, false, IPreview::MODE_FILL, 1024, 512],
[2048, 1024, 512, -1, false, IPreview::MODE_COVER, 512, 256],
[2048, 1024, 4096, 1024, true, IPreview::MODE_FILL, 2048, 512],
[2048, 1024, 4096, 1024, true, IPreview::MODE_COVER, 2048, 512],
+
+ //Test minimum size
+ [2048, 1024, 32, 32, false, IPreview::MODE_FILL, 64, 32],
+ [2048, 1024, 32, 32, false, IPreview::MODE_COVER, 64, 32],
+ [2048, 1024, 32, 32, true, IPreview::MODE_FILL, 64, 64],
+ [2048, 1024, 32, 32, true, IPreview::MODE_COVER, 64, 64],
];
}
diff --git a/tests/lib/Repair/SetVcardDatabaseUIDTest.php b/tests/lib/Repair/SetVcardDatabaseUIDTest.php
index fe1a7481d7..97da3c6a90 100644
--- a/tests/lib/Repair/SetVcardDatabaseUIDTest.php
+++ b/tests/lib/Repair/SetVcardDatabaseUIDTest.php
@@ -118,4 +118,4 @@ class SetVcardDatabaseUIDTest extends TestCase {
$this->assertEquals($expected, $this->invokePrivate($this->repair, 'shouldRun'));
}
-}
\ No newline at end of file
+}