summaryrefslogtreecommitdiffstats
path: root/apps/dav
diff options
context:
space:
mode:
authorCôme Chilliet <91878298+come-nc@users.noreply.github.com>2022-12-05 12:03:39 +0100
committerGitHub <noreply@github.com>2022-12-05 12:03:39 +0100
commit30560d316584276a08c909f5198a839c1c170cc9 (patch)
tree154477dee76d6b7451671010aa2318c500975521 /apps/dav
parentcb0450b5c4fbe590e7b35284a40d78d96a0251f6 (diff)
parent4196bf81e653c39d33d25c76652cc78dab8c5e1c (diff)
downloadnextcloud-server-30560d316584276a08c909f5198a839c1c170cc9.tar.gz
nextcloud-server-30560d316584276a08c909f5198a839c1c170cc9.zip
Merge branch 'master' into tests/fix-phpunit-warnings
Signed-off-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
Diffstat (limited to 'apps/dav')
-rw-r--r--apps/dav/composer/autoload.php17
-rw-r--r--apps/dav/composer/composer/installed.php4
-rw-r--r--apps/dav/l10n/ca.js86
-rw-r--r--apps/dav/l10n/ca.json86
-rw-r--r--apps/dav/l10n/da.js1
-rw-r--r--apps/dav/l10n/da.json1
-rw-r--r--apps/dav/l10n/el.js1
-rw-r--r--apps/dav/l10n/el.json1
-rw-r--r--apps/dav/l10n/en_GB.js160
-rw-r--r--apps/dav/l10n/en_GB.json160
-rw-r--r--apps/dav/l10n/ja.js1
-rw-r--r--apps/dav/l10n/ja.json1
-rw-r--r--apps/dav/l10n/mk.js3
-rw-r--r--apps/dav/l10n/mk.json3
-rw-r--r--apps/dav/lib/CardDAV/Integration/ExternalAddressBook.php11
-rw-r--r--apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php2
-rw-r--r--apps/dav/lib/Connector/Sabre/Directory.php6
-rw-r--r--apps/dav/lib/Connector/Sabre/File.php14
-rw-r--r--apps/dav/lib/Connector/Sabre/QuotaPlugin.php39
-rw-r--r--apps/dav/lib/Files/FileSearchBackend.php4
-rw-r--r--apps/dav/lib/RootCollection.php1
-rw-r--r--apps/dav/lib/Server.php5
-rw-r--r--apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap40
-rw-r--r--apps/dav/tests/unit/BackgroundJob/CleanupInvitationTokenJobTest.php2
-rw-r--r--apps/dav/tests/unit/BackgroundJob/PruneOutdatedSyncTokensJobTest.php3
-rw-r--r--apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php5
-rw-r--r--apps/dav/tests/unit/CardDAV/Activity/BackendTest.php4
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/BlockLegacyClientPluginTest.php4
-rw-r--r--apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php9
-rw-r--r--apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php4
30 files changed, 585 insertions, 93 deletions
diff --git a/apps/dav/composer/autoload.php b/apps/dav/composer/autoload.php
index a3040af8caa..0103857e976 100644
--- a/apps/dav/composer/autoload.php
+++ b/apps/dav/composer/autoload.php
@@ -3,8 +3,21 @@
// autoload.php @generated by Composer
if (PHP_VERSION_ID < 50600) {
- echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
- exit(1);
+ if (!headers_sent()) {
+ header('HTTP/1.1 500 Internal Server Error');
+ }
+ $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
+ if (!ini_get('display_errors')) {
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+ fwrite(STDERR, $err);
+ } elseif (!headers_sent()) {
+ echo $err;
+ }
+ }
+ trigger_error(
+ $err,
+ E_USER_ERROR
+ );
}
require_once __DIR__ . '/composer/autoload_real.php';
diff --git a/apps/dav/composer/composer/installed.php b/apps/dav/composer/composer/installed.php
index 5f83b3f2bff..ee1748532a9 100644
--- a/apps/dav/composer/composer/installed.php
+++ b/apps/dav/composer/composer/installed.php
@@ -3,7 +3,7 @@
'name' => '__root__',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
+ 'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
@@ -13,7 +13,7 @@
'__root__' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => '144514e49e25b7b123fd535902fee97fa39fb446',
+ 'reference' => 'e35bcc9381246a8ec3da96e78e9771ef6044a6d4',
'type' => 'library',
'install_path' => __DIR__ . '/../',
'aliases' => array(),
diff --git a/apps/dav/l10n/ca.js b/apps/dav/l10n/ca.js
index a1d37e37ba3..7842a8ea390 100644
--- a/apps/dav/l10n/ca.js
+++ b/apps/dav/l10n/ca.js
@@ -2,6 +2,7 @@ OC.L10N.register(
"dav",
{
"Calendar" : "Calendari",
+ "To-dos" : "Tasques pendents",
"Personal" : "Personal",
"{actor} created calendar {calendar}" : "{actor} ha creat el calendari {calendar}",
"You created calendar {calendar}" : "Heu creat el calendari {calendar}",
@@ -9,6 +10,8 @@ OC.L10N.register(
"You deleted calendar {calendar}" : "Heu suprimit el calendari {calendar}",
"{actor} updated calendar {calendar}" : "{actor} ha actualitzat el calendari {calendar}",
"You updated calendar {calendar}" : "Heu actualitzat el calendari {calendar}",
+ "{actor} restored calendar {calendar}" : "{actor} ha restaurat el calendari {calendar}",
+ "You restored calendar {calendar}" : "Heu restaurat el calendari {calendar}",
"You shared calendar {calendar} as public link" : "Heu compartit el calendari {calendar} amb un enllaç públic",
"You removed public link for calendar {calendar}" : "Heu eliminat l'enllaç públic del calendari {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} ha compartit el calendari {calendar} amb vós",
@@ -29,9 +32,27 @@ OC.L10N.register(
"You deleted event {event} from calendar {calendar}" : "Heu suprimit l'esdeveniment {event} del calendari {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} esdeveniment actualitzat {esdeveniment} al calendari {calendar}",
"You updated event {event} in calendar {calendar}" : "Heu actualitzat l'esdeveniment {event} al calendari {calendar}",
+ "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} ha mogut l'esdeveniment {event} del calendari {sourceCalendar} al calendari {targetCalendar}",
+ "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Heu mogut l'esdeveniment {event} del calendari {sourceCalendar} al calendari {targetCalendar}",
+ "{actor} restored event {event} of calendar {calendar}" : "{actor} esdeveniment restaurat {event} del calendari {calendar}",
+ "You restored event {event} of calendar {calendar}" : "Heu restaurat l'esdeveniment {event} del calendari {calendar}",
"Busy" : "Ocupat",
+ "{actor} created to-do {todo} in list {calendar}" : "{actor} ha creat la tasca pendent {todo} a la llista {calendar}",
+ "You created to-do {todo} in list {calendar}" : "Heu creat la tasca pendent {todo} a la llista {calendar}",
+ "{actor} deleted to-do {todo} from list {calendar}" : "{actor} ha suprimit tasques pendents {todo} de la llista {calendar}",
+ "You deleted to-do {todo} from list {calendar}" : "Heu suprimit la tasca pendent {todo} de la llista {calendar}",
+ "{actor} updated to-do {todo} in list {calendar}" : "{actor} ha actualitzat tasques pendents {todo} a la llista {calendar}",
+ "You updated to-do {todo} in list {calendar}" : "Heu actualitzat la tasca pendent {todo} a la llista {calendar}",
+ "{actor} solved to-do {todo} in list {calendar}" : "{actor} ha resolt la tasca pendent {todo} a la llista {calendar}",
+ "You solved to-do {todo} in list {calendar}" : "Heu resolt la tasca pendent {todo} a la llista {calendar}",
+ "{actor} reopened to-do {todo} in list {calendar}" : "{actor} va reobrir tasques pendents {todo} a la llista {calendar}",
+ "You reopened to-do {todo} in list {calendar}" : "Heu reobert les tasques pendents {todo} a la llista {calendar}",
+ "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} ha mogut la tasca pendent {todo} de la llista {sourceCalendar} a la llista {targetCalendar}",
+ "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Heu mogut la tasca pendent {todo} de la llista {sourceCalendar} a la llista {targetCalendar}",
+ "Calendar, contacts and tasks" : "Calendari, contactes i tasques",
"A <strong>calendar</strong> was modified" : "El <strong>calendari</strong> has estat modificat",
"A calendar <strong>event</strong> was modified" : "S'ha modificat un <strong> esdeveniment </strong> del calendari",
+ "A calendar <strong>to-do</strong> was modified" : "S'ha modificat una <strong>tasca pendent</strong> del calendari",
"Contact birthdays" : "Aniversaris dels contactes",
"Death of %s" : "Mort de %s",
"Calendar:" : "Calendari:",
@@ -50,8 +71,11 @@ OC.L10N.register(
"Description: %s" : "Descripció: %s",
"Where: %s" : "On: %s",
"%1$s via %2$s" : "%1$s mitjançant %2$s",
+ "Cancelled: %1$s" : "Cancel·lat: %1$s",
"Invitation canceled" : "Invitació cancel·lada",
+ "Re: %1$s" : "Re: %1$s",
"Invitation updated" : "Invitació actualitzada",
+ "Invitation: %1$s" : "Invitació: %1$s",
"Invitation" : "Invitació",
"Title:" : "Títol:",
"Time:" : "Hora:",
@@ -60,10 +84,52 @@ OC.L10N.register(
"Organizer:" : "Organitzador:",
"Attendees:" : "Assistents:",
"Accept" : "Accepta",
- "Decline" : "Rebutja",
+ "Decline" : "Declina",
"More options …" : "Més opcions …",
"More options at %s" : "Més opcions a %s",
"Contacts" : "Contactes",
+ "{actor} created address book {addressbook}" : "{actor} ha creat la llibreta d'adreces {addressbook}",
+ "You created address book {addressbook}" : "Heu creat la llibreta d'adreces {addressbook}",
+ "{actor} deleted address book {addressbook}" : "{actor} llibreta d'adreces suprimida {addressbook}",
+ "You deleted address book {addressbook}" : "Heu suprimit la llibreta d'adreces {addressbook}",
+ "{actor} updated address book {addressbook}" : "{actor} llibreta d'adreces actualitzada {addressbook}",
+ "You updated address book {addressbook}" : "Heu actualitzat la llibreta d'adreces {addressbook}",
+ "{actor} shared address book {addressbook} with you" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb vostè",
+ "You shared address book {addressbook} with {user}" : "Heu compartit la llibreta d'adreces {addressbook} amb {user}",
+ "{actor} shared address book {addressbook} with {user}" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb {user}",
+ "{actor} unshared address book {addressbook} from you" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} amb vostè",
+ "You unshared address book {addressbook} from {user}" : "Heu deixat de compartir la llibreta d'adreces {addressbook} de {user}",
+ "{actor} unshared address book {addressbook} from {user}" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} de {user}",
+ "{actor} unshared address book {addressbook} from themselves" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} d'ells mateixos",
+ "You shared address book {addressbook} with group {group}" : "Heu compartit la llibreta d'adreces {addressbook} amb el grup {group}",
+ "{actor} shared address book {addressbook} with group {group}" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb el grup {group}",
+ "You unshared address book {addressbook} from group {group}" : "Heu deixat de compartir la llibreta d'adreces {addressbook} del grup {group}",
+ "{actor} unshared address book {addressbook} from group {group}" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} del grup {group}",
+ "{actor} created contact {card} in address book {addressbook}" : "{actor} ha creat el contacte {card} a la llibreta d'adreces {addressbook}",
+ "You created contact {card} in address book {addressbook}" : "Heu creat el contacte {card} a la llibreta d'adreces {addressbook}",
+ "{actor} deleted contact {card} from address book {addressbook}" : "{actor} ha suprimit el contacte {card} de la llibreta d'adreces {addressbook}",
+ "You deleted contact {card} from address book {addressbook}" : "Heu suprimit el contacte {card} de la llibreta d'adreces {addressbook}",
+ "{actor} updated contact {card} in address book {addressbook}" : "{actor} ha actualitzat el contacte {card} a la llibreta d'adreces {addressbook}",
+ "You updated contact {card} in address book {addressbook}" : "Heu actualitzat el contacte {card} a la llibreta d'adreces {addressbook}",
+ "A <strong>contact</strong> or <strong>address book</strong> was modified" : "S'ha modificat un <strong>contacte</strong> o una <strong>llibreta d'adreces</strong>",
+ "File is not updatable: %1$s" : "El fitxer no es pot actualitzar: %1$s",
+ "Could not write to final file, canceled by hook" : "No s'ha pogut escriure al fitxer final, cancel·lat per ganxo",
+ "Could not write file contents" : "No s'ha pogut escriure el contingut del fitxer",
+ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
+ "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error en copiar el fitxer a la ubicació de destí (copiat: %1$s, mida esperada del fitxer: %2$s)",
+ "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "S'esperava una mida de fitxer de %1$s però llegit (des del client Nextcloud) i escrit (a l'emmagatzematge de Nextcloud) %2$s. Pot ser un problema de xarxa al costat d'enviament o un problema d'escriptura a l'emmagatzematge del costat del servidor.",
+ "Could not rename part file to final file, canceled by hook" : "No s'ha pogut canviar el nom del fitxer de la part al fitxer final, cancel·lat per ganxo",
+ "Could not rename part file to final file" : "No s'ha pogut canviar el nom del fitxer de part al fitxer final",
+ "Failed to check file size: %1$s" : "No s'ha pogut comprovar la mida del fitxer: %1$s",
+ "Could not open file" : "No s’ha pogut obrir el fitxer",
+ "Encryption not ready: %1$s" : "El xifratge no està preparat: %1$s",
+ "Failed to open file: %1$s" : "No s'ha pogut obrir el fitxer: %1$s",
+ "Failed to unlink: %1$s" : "No s'ha pogut desenllaçar: %1$s",
+ "Invalid chunk name" : "Nom del fragment no vàlid",
+ "Could not rename part file assembled from chunks" : "No s'ha pogut canviar el nom del fitxer de peces muntat a partir de fragments",
+ "Failed to write file contents: %1$s" : "No s'ha pogut escriure el contingut del fitxer: %1$s",
+ "File not found: %1$s" : "No s'ha trobat el fitxer: %1$s",
+ "System is in maintenance mode." : "Sistema en mode de manteniment.",
"Upgrade needed" : "Fa falta l'actualització",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "El vostre %s cal configurar-se per utilitzar HTTPS per poder fer servir CalDAV i CardDAV amb iOS/macOS.",
"Configures a CalDAV account" : "Configura un compte CalDAV",
@@ -74,11 +140,18 @@ OC.L10N.register(
"Completed on %s" : "Completat a %s",
"Due on %s by %s" : "Venciment a %s per %s",
"Due on %s" : "Venç en %s",
+ "Migrated calendar (%1$s)" : "Calendari migrat (%1$s)",
+ "Calendars including events, details and attendees" : "Calendaris que inclouen esdeveniments, detalls i assistents",
"Contacts and groups" : "Contactes i grups",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Punt final de WebDAV",
+ "Availability" : "Disponibilitat",
+ "If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Si configureu el vostre horari laboral, els altres usuaris veuran quan sou fora de l'oficina quan reserven una reunió.",
+ "Time zone:" : "Zona horària:",
"to" : "a",
- "Delete slot" : "Suprimeix unitat temporal",
+ "Delete slot" : "Suprimeix forat",
+ "No working hours set" : "Sense horari de treball establert",
+ "Add slot" : "Afegeix una forat",
"Monday" : "Dilluns",
"Tuesday" : "Dimarts",
"Wednesday" : "Dimecres",
@@ -86,14 +159,20 @@ OC.L10N.register(
"Friday" : "Divendres",
"Saturday" : "Dissabte",
"Sunday" : "Diumenge",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Estableix automàticament l'estat de l'usuari a \"No molestar\" fora de la disponibilitat per silenciar totes les notificacions.",
"Save" : "Desa",
+ "Failed to load availability" : "No s'ha pogut carregar la disponibilitat",
+ "Saved availability" : "Disponibilitat guardada",
+ "Failed to save availability" : "No s'ha pogut desar la disponibilitat",
"Calendar server" : "Servidor de calendari",
"Send invitations to attendees" : "Envia invitacions als assistents",
"Automatically generate a birthday calendar" : "Genera automàticament un calendari d’aniversari",
"Birthday calendars will be generated by a background job." : "Els calendaris d'aniversari es generaran per un procés en segon pla..",
"Hence they will not be available immediately after enabling but will show up after some time." : "Per tant, no estaran disponibles immediatament després d'habilitar-los, però apareixeran d'aquí una estona.",
"Send notifications for events" : "Envia notificacions per als esdeveniments",
- "Notifications are sent via background jobs, so these must occur often enough." : "Les notificacions s'envien per tasques funcionant en segon pla, així que això ha de succeir bastant sovint.",
+ "Notifications are sent via background jobs, so these must occur often enough." : "Les notificacions s'envien per feines en segon pla, així que això ha de succeir bastant sovint.",
+ "Send reminder notifications to calendar sharees as well" : "També envieu notificacions de recordatoris als recursos compartits del calendari",
+ "Reminders are always sent to organizers and attendees." : "Sempre s'envien recordatoris als organitzadors i als assistents.",
"Enable notifications for events via push" : "Habiliteu les notificacions per a esdeveniments mitjançant l’empenyiment",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instal·leu també {calendarappstoreopen}l’aplicació de Calendari{linkclose} o {calendardocopen}connecteu el vostre escriptori i el mòbil per sincronitzar ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Si us plau, assegureu-vos de configurar correctament {emailopen}el servidor de correu electrònic{linkclose}.",
@@ -101,6 +180,7 @@ OC.L10N.register(
"Please contact the organizer directly." : "Si us plau contacteu amb l'organitzador directament.",
"Are you accepting the invitation?" : "Accepteu la invitació?",
"Tentative" : "Provisional",
+ "Number of guests" : "Nombre d'hostes",
"Comment" : "Comentari",
"Your attendance was updated successfully." : "La vostra assistència ha estat actualitzada correctament.",
"Todos" : "Tasques",
diff --git a/apps/dav/l10n/ca.json b/apps/dav/l10n/ca.json
index 5d339d4de30..34c384e1648 100644
--- a/apps/dav/l10n/ca.json
+++ b/apps/dav/l10n/ca.json
@@ -1,5 +1,6 @@
{ "translations": {
"Calendar" : "Calendari",
+ "To-dos" : "Tasques pendents",
"Personal" : "Personal",
"{actor} created calendar {calendar}" : "{actor} ha creat el calendari {calendar}",
"You created calendar {calendar}" : "Heu creat el calendari {calendar}",
@@ -7,6 +8,8 @@
"You deleted calendar {calendar}" : "Heu suprimit el calendari {calendar}",
"{actor} updated calendar {calendar}" : "{actor} ha actualitzat el calendari {calendar}",
"You updated calendar {calendar}" : "Heu actualitzat el calendari {calendar}",
+ "{actor} restored calendar {calendar}" : "{actor} ha restaurat el calendari {calendar}",
+ "You restored calendar {calendar}" : "Heu restaurat el calendari {calendar}",
"You shared calendar {calendar} as public link" : "Heu compartit el calendari {calendar} amb un enllaç públic",
"You removed public link for calendar {calendar}" : "Heu eliminat l'enllaç públic del calendari {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} ha compartit el calendari {calendar} amb vós",
@@ -27,9 +30,27 @@
"You deleted event {event} from calendar {calendar}" : "Heu suprimit l'esdeveniment {event} del calendari {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} esdeveniment actualitzat {esdeveniment} al calendari {calendar}",
"You updated event {event} in calendar {calendar}" : "Heu actualitzat l'esdeveniment {event} al calendari {calendar}",
+ "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} ha mogut l'esdeveniment {event} del calendari {sourceCalendar} al calendari {targetCalendar}",
+ "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Heu mogut l'esdeveniment {event} del calendari {sourceCalendar} al calendari {targetCalendar}",
+ "{actor} restored event {event} of calendar {calendar}" : "{actor} esdeveniment restaurat {event} del calendari {calendar}",
+ "You restored event {event} of calendar {calendar}" : "Heu restaurat l'esdeveniment {event} del calendari {calendar}",
"Busy" : "Ocupat",
+ "{actor} created to-do {todo} in list {calendar}" : "{actor} ha creat la tasca pendent {todo} a la llista {calendar}",
+ "You created to-do {todo} in list {calendar}" : "Heu creat la tasca pendent {todo} a la llista {calendar}",
+ "{actor} deleted to-do {todo} from list {calendar}" : "{actor} ha suprimit tasques pendents {todo} de la llista {calendar}",
+ "You deleted to-do {todo} from list {calendar}" : "Heu suprimit la tasca pendent {todo} de la llista {calendar}",
+ "{actor} updated to-do {todo} in list {calendar}" : "{actor} ha actualitzat tasques pendents {todo} a la llista {calendar}",
+ "You updated to-do {todo} in list {calendar}" : "Heu actualitzat la tasca pendent {todo} a la llista {calendar}",
+ "{actor} solved to-do {todo} in list {calendar}" : "{actor} ha resolt la tasca pendent {todo} a la llista {calendar}",
+ "You solved to-do {todo} in list {calendar}" : "Heu resolt la tasca pendent {todo} a la llista {calendar}",
+ "{actor} reopened to-do {todo} in list {calendar}" : "{actor} va reobrir tasques pendents {todo} a la llista {calendar}",
+ "You reopened to-do {todo} in list {calendar}" : "Heu reobert les tasques pendents {todo} a la llista {calendar}",
+ "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} ha mogut la tasca pendent {todo} de la llista {sourceCalendar} a la llista {targetCalendar}",
+ "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Heu mogut la tasca pendent {todo} de la llista {sourceCalendar} a la llista {targetCalendar}",
+ "Calendar, contacts and tasks" : "Calendari, contactes i tasques",
"A <strong>calendar</strong> was modified" : "El <strong>calendari</strong> has estat modificat",
"A calendar <strong>event</strong> was modified" : "S'ha modificat un <strong> esdeveniment </strong> del calendari",
+ "A calendar <strong>to-do</strong> was modified" : "S'ha modificat una <strong>tasca pendent</strong> del calendari",
"Contact birthdays" : "Aniversaris dels contactes",
"Death of %s" : "Mort de %s",
"Calendar:" : "Calendari:",
@@ -48,8 +69,11 @@
"Description: %s" : "Descripció: %s",
"Where: %s" : "On: %s",
"%1$s via %2$s" : "%1$s mitjançant %2$s",
+ "Cancelled: %1$s" : "Cancel·lat: %1$s",
"Invitation canceled" : "Invitació cancel·lada",
+ "Re: %1$s" : "Re: %1$s",
"Invitation updated" : "Invitació actualitzada",
+ "Invitation: %1$s" : "Invitació: %1$s",
"Invitation" : "Invitació",
"Title:" : "Títol:",
"Time:" : "Hora:",
@@ -58,10 +82,52 @@
"Organizer:" : "Organitzador:",
"Attendees:" : "Assistents:",
"Accept" : "Accepta",
- "Decline" : "Rebutja",
+ "Decline" : "Declina",
"More options …" : "Més opcions …",
"More options at %s" : "Més opcions a %s",
"Contacts" : "Contactes",
+ "{actor} created address book {addressbook}" : "{actor} ha creat la llibreta d'adreces {addressbook}",
+ "You created address book {addressbook}" : "Heu creat la llibreta d'adreces {addressbook}",
+ "{actor} deleted address book {addressbook}" : "{actor} llibreta d'adreces suprimida {addressbook}",
+ "You deleted address book {addressbook}" : "Heu suprimit la llibreta d'adreces {addressbook}",
+ "{actor} updated address book {addressbook}" : "{actor} llibreta d'adreces actualitzada {addressbook}",
+ "You updated address book {addressbook}" : "Heu actualitzat la llibreta d'adreces {addressbook}",
+ "{actor} shared address book {addressbook} with you" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb vostè",
+ "You shared address book {addressbook} with {user}" : "Heu compartit la llibreta d'adreces {addressbook} amb {user}",
+ "{actor} shared address book {addressbook} with {user}" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb {user}",
+ "{actor} unshared address book {addressbook} from you" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} amb vostè",
+ "You unshared address book {addressbook} from {user}" : "Heu deixat de compartir la llibreta d'adreces {addressbook} de {user}",
+ "{actor} unshared address book {addressbook} from {user}" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} de {user}",
+ "{actor} unshared address book {addressbook} from themselves" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} d'ells mateixos",
+ "You shared address book {addressbook} with group {group}" : "Heu compartit la llibreta d'adreces {addressbook} amb el grup {group}",
+ "{actor} shared address book {addressbook} with group {group}" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb el grup {group}",
+ "You unshared address book {addressbook} from group {group}" : "Heu deixat de compartir la llibreta d'adreces {addressbook} del grup {group}",
+ "{actor} unshared address book {addressbook} from group {group}" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} del grup {group}",
+ "{actor} created contact {card} in address book {addressbook}" : "{actor} ha creat el contacte {card} a la llibreta d'adreces {addressbook}",
+ "You created contact {card} in address book {addressbook}" : "Heu creat el contacte {card} a la llibreta d'adreces {addressbook}",
+ "{actor} deleted contact {card} from address book {addressbook}" : "{actor} ha suprimit el contacte {card} de la llibreta d'adreces {addressbook}",
+ "You deleted contact {card} from address book {addressbook}" : "Heu suprimit el contacte {card} de la llibreta d'adreces {addressbook}",
+ "{actor} updated contact {card} in address book {addressbook}" : "{actor} ha actualitzat el contacte {card} a la llibreta d'adreces {addressbook}",
+ "You updated contact {card} in address book {addressbook}" : "Heu actualitzat el contacte {card} a la llibreta d'adreces {addressbook}",
+ "A <strong>contact</strong> or <strong>address book</strong> was modified" : "S'ha modificat un <strong>contacte</strong> o una <strong>llibreta d'adreces</strong>",
+ "File is not updatable: %1$s" : "El fitxer no es pot actualitzar: %1$s",
+ "Could not write to final file, canceled by hook" : "No s'ha pogut escriure al fitxer final, cancel·lat per ganxo",
+ "Could not write file contents" : "No s'ha pogut escriure el contingut del fitxer",
+ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
+ "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error en copiar el fitxer a la ubicació de destí (copiat: %1$s, mida esperada del fitxer: %2$s)",
+ "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "S'esperava una mida de fitxer de %1$s però llegit (des del client Nextcloud) i escrit (a l'emmagatzematge de Nextcloud) %2$s. Pot ser un problema de xarxa al costat d'enviament o un problema d'escriptura a l'emmagatzematge del costat del servidor.",
+ "Could not rename part file to final file, canceled by hook" : "No s'ha pogut canviar el nom del fitxer de la part al fitxer final, cancel·lat per ganxo",
+ "Could not rename part file to final file" : "No s'ha pogut canviar el nom del fitxer de part al fitxer final",
+ "Failed to check file size: %1$s" : "No s'ha pogut comprovar la mida del fitxer: %1$s",
+ "Could not open file" : "No s’ha pogut obrir el fitxer",
+ "Encryption not ready: %1$s" : "El xifratge no està preparat: %1$s",
+ "Failed to open file: %1$s" : "No s'ha pogut obrir el fitxer: %1$s",
+ "Failed to unlink: %1$s" : "No s'ha pogut desenllaçar: %1$s",
+ "Invalid chunk name" : "Nom del fragment no vàlid",
+ "Could not rename part file assembled from chunks" : "No s'ha pogut canviar el nom del fitxer de peces muntat a partir de fragments",
+ "Failed to write file contents: %1$s" : "No s'ha pogut escriure el contingut del fitxer: %1$s",
+ "File not found: %1$s" : "No s'ha trobat el fitxer: %1$s",
+ "System is in maintenance mode." : "Sistema en mode de manteniment.",
"Upgrade needed" : "Fa falta l'actualització",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "El vostre %s cal configurar-se per utilitzar HTTPS per poder fer servir CalDAV i CardDAV amb iOS/macOS.",
"Configures a CalDAV account" : "Configura un compte CalDAV",
@@ -72,11 +138,18 @@
"Completed on %s" : "Completat a %s",
"Due on %s by %s" : "Venciment a %s per %s",
"Due on %s" : "Venç en %s",
+ "Migrated calendar (%1$s)" : "Calendari migrat (%1$s)",
+ "Calendars including events, details and attendees" : "Calendaris que inclouen esdeveniments, detalls i assistents",
"Contacts and groups" : "Contactes i grups",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Punt final de WebDAV",
+ "Availability" : "Disponibilitat",
+ "If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Si configureu el vostre horari laboral, els altres usuaris veuran quan sou fora de l'oficina quan reserven una reunió.",
+ "Time zone:" : "Zona horària:",
"to" : "a",
- "Delete slot" : "Suprimeix unitat temporal",
+ "Delete slot" : "Suprimeix forat",
+ "No working hours set" : "Sense horari de treball establert",
+ "Add slot" : "Afegeix una forat",
"Monday" : "Dilluns",
"Tuesday" : "Dimarts",
"Wednesday" : "Dimecres",
@@ -84,14 +157,20 @@
"Friday" : "Divendres",
"Saturday" : "Dissabte",
"Sunday" : "Diumenge",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Estableix automàticament l'estat de l'usuari a \"No molestar\" fora de la disponibilitat per silenciar totes les notificacions.",
"Save" : "Desa",
+ "Failed to load availability" : "No s'ha pogut carregar la disponibilitat",
+ "Saved availability" : "Disponibilitat guardada",
+ "Failed to save availability" : "No s'ha pogut desar la disponibilitat",
"Calendar server" : "Servidor de calendari",
"Send invitations to attendees" : "Envia invitacions als assistents",
"Automatically generate a birthday calendar" : "Genera automàticament un calendari d’aniversari",
"Birthday calendars will be generated by a background job." : "Els calendaris d'aniversari es generaran per un procés en segon pla..",
"Hence they will not be available immediately after enabling but will show up after some time." : "Per tant, no estaran disponibles immediatament després d'habilitar-los, però apareixeran d'aquí una estona.",
"Send notifications for events" : "Envia notificacions per als esdeveniments",
- "Notifications are sent via background jobs, so these must occur often enough." : "Les notificacions s'envien per tasques funcionant en segon pla, així que això ha de succeir bastant sovint.",
+ "Notifications are sent via background jobs, so these must occur often enough." : "Les notificacions s'envien per feines en segon pla, així que això ha de succeir bastant sovint.",
+ "Send reminder notifications to calendar sharees as well" : "També envieu notificacions de recordatoris als recursos compartits del calendari",
+ "Reminders are always sent to organizers and attendees." : "Sempre s'envien recordatoris als organitzadors i als assistents.",
"Enable notifications for events via push" : "Habiliteu les notificacions per a esdeveniments mitjançant l’empenyiment",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instal·leu també {calendarappstoreopen}l’aplicació de Calendari{linkclose} o {calendardocopen}connecteu el vostre escriptori i el mòbil per sincronitzar ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Si us plau, assegureu-vos de configurar correctament {emailopen}el servidor de correu electrònic{linkclose}.",
@@ -99,6 +178,7 @@
"Please contact the organizer directly." : "Si us plau contacteu amb l'organitzador directament.",
"Are you accepting the invitation?" : "Accepteu la invitació?",
"Tentative" : "Provisional",
+ "Number of guests" : "Nombre d'hostes",
"Comment" : "Comentari",
"Your attendance was updated successfully." : "La vostra assistència ha estat actualitzada correctament.",
"Todos" : "Tasques",
diff --git a/apps/dav/l10n/da.js b/apps/dav/l10n/da.js
index 987589d0c29..d5dc0bab99f 100644
--- a/apps/dav/l10n/da.js
+++ b/apps/dav/l10n/da.js
@@ -75,6 +75,7 @@ OC.L10N.register(
"Contacts and groups" : "Kontakter og grupper",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
+ "Availability" : "tilgængelighed",
"to" : "til",
"Delete slot" : "Slet slot",
"Monday" : "Mandag",
diff --git a/apps/dav/l10n/da.json b/apps/dav/l10n/da.json
index 2ee6c850cd4..0b2467a841e 100644
--- a/apps/dav/l10n/da.json
+++ b/apps/dav/l10n/da.json
@@ -73,6 +73,7 @@
"Contacts and groups" : "Kontakter og grupper",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
+ "Availability" : "tilgængelighed",
"to" : "til",
"Delete slot" : "Slet slot",
"Monday" : "Mandag",
diff --git a/apps/dav/l10n/el.js b/apps/dav/l10n/el.js
index 45ce51a502f..24c35f48709 100644
--- a/apps/dav/l10n/el.js
+++ b/apps/dav/l10n/el.js
@@ -31,6 +31,7 @@ OC.L10N.register(
"{actor} updated event {event} in calendar {calendar}" : "Ο {actor} ενημέρωσε το γεγονός {event} στο ημερολόγιο {calendar}",
"You updated event {event} in calendar {calendar}" : "Ενημερώσατε το συμβάν {event} στο ημερολόγιο {calendar}",
"Busy" : "Απασχολημένος",
+ "Calendar, contacts and tasks" : "Ημερολόγιο, επαφές και εργασίες",
"A <strong>calendar</strong> was modified" : "Τροποποιήθηκε ένα <strong>ημερολόγιο</strong> ",
"A calendar <strong>event</strong> was modified" : "Τροποποιήθηκε ένα <strong>γεγονός</strong> του ημερολογίου",
"Contact birthdays" : "Γενέθλια επαφών",
diff --git a/apps/dav/l10n/el.json b/apps/dav/l10n/el.json
index 019d0e757c9..cfdc151b53c 100644
--- a/apps/dav/l10n/el.json
+++ b/apps/dav/l10n/el.json
@@ -29,6 +29,7 @@
"{actor} updated event {event} in calendar {calendar}" : "Ο {actor} ενημέρωσε το γεγονός {event} στο ημερολόγιο {calendar}",
"You updated event {event} in calendar {calendar}" : "Ενημερώσατε το συμβάν {event} στο ημερολόγιο {calendar}",
"Busy" : "Απασχολημένος",
+ "Calendar, contacts and tasks" : "Ημερολόγιο, επαφές και εργασίες",
"A <strong>calendar</strong> was modified" : "Τροποποιήθηκε ένα <strong>ημερολόγιο</strong> ",
"A calendar <strong>event</strong> was modified" : "Τροποποιήθηκε ένα <strong>γεγονός</strong> του ημερολογίου",
"Contact birthdays" : "Γενέθλια επαφών",
diff --git a/apps/dav/l10n/en_GB.js b/apps/dav/l10n/en_GB.js
index 11229abe9f4..44e424f5eb0 100644
--- a/apps/dav/l10n/en_GB.js
+++ b/apps/dav/l10n/en_GB.js
@@ -2,7 +2,7 @@ OC.L10N.register(
"dav",
{
"Calendar" : "Calendar",
- "Todos" : "Todos",
+ "To-dos" : "To-dos",
"Personal" : "Personal",
"{actor} created calendar {calendar}" : "{actor} created calendar {calendar}",
"You created calendar {calendar}" : "You created calendar {calendar}",
@@ -10,6 +10,8 @@ OC.L10N.register(
"You deleted calendar {calendar}" : "You deleted calendar {calendar}",
"{actor} updated calendar {calendar}" : "{actor} updated calendar {calendar}",
"You updated calendar {calendar}" : "You updated calendar {calendar}",
+ "{actor} restored calendar {calendar}" : "{actor} restored calendar {calendar}",
+ "You restored calendar {calendar}" : "You restored calendar {calendar}",
"You shared calendar {calendar} as public link" : "You shared calendar {calendar} as public link",
"You removed public link for calendar {calendar}" : "You removed public link for calendar {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} shared calendar {calendar} with you",
@@ -23,47 +25,175 @@ OC.L10N.register(
"{actor} shared calendar {calendar} with group {group}" : "{actor} shared calendar {calendar} with group {group}",
"You unshared calendar {calendar} from group {group}" : "You unshared calendar {calendar} from group {group}",
"{actor} unshared calendar {calendar} from group {group}" : "{actor} unshared calendar {calendar} from group {group}",
+ "Untitled event" : "Untitled event",
"{actor} created event {event} in calendar {calendar}" : "{actor} created event {event} in calendar {calendar}",
"You created event {event} in calendar {calendar}" : "You created event {event} in calendar {calendar}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} deleted event {event} from calendar {calendar}",
"You deleted event {event} from calendar {calendar}" : "You deleted event {event} from calendar {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} updated event {event} in calendar {calendar}",
"You updated event {event} in calendar {calendar}" : "You updated event {event} in calendar {calendar}",
+ "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}",
+ "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}",
+ "{actor} restored event {event} of calendar {calendar}" : "{actor} restored event {event} of calendar {calendar}",
+ "You restored event {event} of calendar {calendar}" : "You restored event {event} of calendar {calendar}",
"Busy" : "Busy",
- "{actor} created todo {todo} in list {calendar}" : "{actor} created todo {todo} in list {calendar}",
- "You created todo {todo} in list {calendar}" : "You created todo {todo} in list {calendar}",
- "{actor} deleted todo {todo} from list {calendar}" : "{actor} deleted todo {todo} from list {calendar}",
- "You deleted todo {todo} from list {calendar}" : "You deleted todo {todo} from list {calendar}",
- "{actor} updated todo {todo} in list {calendar}" : "{actor} updated todo {todo} in list {calendar}",
- "You updated todo {todo} in list {calendar}" : "You updated todo {todo} in list {calendar}",
- "{actor} solved todo {todo} in list {calendar}" : "{actor} solved todo {todo} in list {calendar}",
- "You solved todo {todo} in list {calendar}" : "You solved todo {todo} in list {calendar}",
- "{actor} reopened todo {todo} in list {calendar}" : "{actor} reopened todo {todo} in list {calendar}",
- "You reopened todo {todo} in list {calendar}" : "You reopened todo {todo} in list {calendar}",
+ "{actor} created to-do {todo} in list {calendar}" : "{actor} created to-do {todo} in list {calendar}",
+ "You created to-do {todo} in list {calendar}" : "You created to-do {todo} in list {calendar}",
+ "{actor} deleted to-do {todo} from list {calendar}" : "{actor} deleted to-do {todo} from list {calendar}",
+ "You deleted to-do {todo} from list {calendar}" : "You deleted to-do {todo} from list {calendar}",
+ "{actor} updated to-do {todo} in list {calendar}" : "{actor} updated to-do {todo} in list {calendar}",
+ "You updated to-do {todo} in list {calendar}" : "You updated to-do {todo} in list {calendar}",
+ "{actor} solved to-do {todo} in list {calendar}" : "{actor} solved to-do {todo} in list {calendar}",
+ "You solved to-do {todo} in list {calendar}" : "You solved to-do {todo} in list {calendar}",
+ "{actor} reopened to-do {todo} in list {calendar}" : "{actor} reopened to-do {todo} in list {calendar}",
+ "You reopened to-do {todo} in list {calendar}" : "You reopened to-do {todo} in list {calendar}",
+ "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}",
+ "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}",
+ "Calendar, contacts and tasks" : "Calendar, contacts and tasks",
"A <strong>calendar</strong> was modified" : "A <strong>calendar</strong> was modified",
"A calendar <strong>event</strong> was modified" : "A calendar <strong>event</strong> was modified",
- "A calendar <strong>todo</strong> was modified" : "A calendar <strong>todo</strong> was modified",
+ "A calendar <strong>to-do</strong> was modified" : "A calendar <strong>to-do</strong> was modified",
"Contact birthdays" : "Contact birthdays",
+ "Death of %s" : "Death of %s",
+ "Calendar:" : "Calendar:",
+ "Date:" : "Date:",
"Where:" : "Where:",
"Description:" : "Description:",
+ "_%n year_::_%n years_" : ["%n year","%n years"],
+ "_%n month_::_%n months_" : ["%n month","%n months"],
+ "_%n day_::_%n days_" : ["%n day","%n days"],
+ "_%n hour_::_%n hours_" : ["%n hour","%n hours"],
+ "_%n minute_::_%n minutes_" : ["%n minute","%n minutes"],
+ "%s (in %s)" : "%s (in %s)",
+ "%s (%s ago)" : "%s (%s ago)",
+ "Calendar: %s" : "Calendar: %s",
+ "Date: %s" : "Date: %s",
+ "Description: %s" : "Description: %s",
+ "Where: %s" : "Where: %s",
"%1$s via %2$s" : "%1$s via %2$s",
+ "Cancelled: %1$s" : "Cancelled: %1$s",
"Invitation canceled" : "Invitation canceled",
+ "Re: %1$s" : "Re: %1$s",
"Invitation updated" : "Invitation updated",
+ "Invitation: %1$s" : "Invitation: %1$s",
+ "Invitation" : "Invitation",
+ "Title:" : "Title:",
+ "Time:" : "Time:",
"Location:" : "Location:",
"Link:" : "Link:",
+ "Organizer:" : "Organizer:",
+ "Attendees:" : "Attendees:",
"Accept" : "Accept",
"Decline" : "Decline",
+ "More options …" : "More options …",
+ "More options at %s" : "More options at %s",
"Contacts" : "Contacts",
+ "{actor} created address book {addressbook}" : "{actor} created address book {addressbook}",
+ "You created address book {addressbook}" : "You created address book {addressbook}",
+ "{actor} deleted address book {addressbook}" : "{actor} deleted address book {addressbook}",
+ "You deleted address book {addressbook}" : "You deleted address book {addressbook}",
+ "{actor} updated address book {addressbook}" : "{actor} updated address book {addressbook}",
+ "You updated address book {addressbook}" : "You updated address book {addressbook}",
+ "{actor} shared address book {addressbook} with you" : "{actor} shared address book {addressbook} with you",
+ "You shared address book {addressbook} with {user}" : "You shared address book {addressbook} with {user}",
+ "{actor} shared address book {addressbook} with {user}" : "{actor} shared address book {addressbook} with {user}",
+ "{actor} unshared address book {addressbook} from you" : "{actor} unshared address book {addressbook} from you",
+ "You unshared address book {addressbook} from {user}" : "You unshared address book {addressbook} from {user}",
+ "{actor} unshared address book {addressbook} from {user}" : "{actor} unshared address book {addressbook} from {user}",
+ "{actor} unshared address book {addressbook} from themselves" : "{actor} unshared address book {addressbook} from themselves",
+ "You shared address book {addressbook} with group {group}" : "You shared address book {addressbook} with group {group}",
+ "{actor} shared address book {addressbook} with group {group}" : "{actor} shared address book {addressbook} with group {group}",
+ "You unshared address book {addressbook} from group {group}" : "You unshared address book {addressbook} from group {group}",
+ "{actor} unshared address book {addressbook} from group {group}" : "{actor} unshared address book {addressbook} from group {group}",
+ "{actor} created contact {card} in address book {addressbook}" : "{actor} created contact {card} in address book {addressbook}",
+ "You created contact {card} in address book {addressbook}" : "You created contact {card} in address book {addressbook}",
+ "{actor} deleted contact {card} from address book {addressbook}" : "{actor} deleted contact {card} from address book {addressbook}",
+ "You deleted contact {card} from address book {addressbook}" : "You deleted contact {card} from address book {addressbook}",
+ "{actor} updated contact {card} in address book {addressbook}" : "{actor} updated contact {card} in address book {addressbook}",
+ "You updated contact {card} in address book {addressbook}" : "You updated contact {card} in address book {addressbook}",
+ "A <strong>contact</strong> or <strong>address book</strong> was modified" : "A <strong>contact</strong> or <strong>address book</strong> was modified",
+ "File is not updatable: %1$s" : "File is not updatable: %1$s",
+ "Could not write to final file, canceled by hook" : "Could not write to final file, canceled by hook",
+ "Could not write file contents" : "Could not write file contents",
+ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
+ "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)",
+ "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side.",
+ "Could not rename part file to final file, canceled by hook" : "Could not rename part file to final file, canceled by hook",
+ "Could not rename part file to final file" : "Could not rename part file to final file",
+ "Failed to check file size: %1$s" : "Failed to check file size: %1$s",
+ "Could not open file" : "Could not open file",
+ "Encryption not ready: %1$s" : "Encryption not ready: %1$s",
+ "Failed to open file: %1$s" : "Failed to open file: %1$s",
+ "Failed to unlink: %1$s" : "Failed to unlink: %1$s",
+ "Invalid chunk name" : "Invalid chunk name",
+ "Could not rename part file assembled from chunks" : "Could not rename part file assembled from chunks",
+ "Failed to write file contents: %1$s" : "Failed to write file contents: %1$s",
+ "File not found: %1$s" : "File not found: %1$s",
+ "System is in maintenance mode." : "System is in maintenance mode.",
+ "Upgrade needed" : "Upgrade needed",
+ "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS.",
+ "Configures a CalDAV account" : "Configures a CalDAV account",
+ "Configures a CardDAV account" : "Configures a CardDAV account",
+ "Events" : "Events",
"Tasks" : "Tasks",
+ "Untitled task" : "Untitled task",
+ "Completed on %s" : "Completed on %s",
+ "Due on %s by %s" : "Due on %s by %s",
+ "Due on %s" : "Due on %s",
+ "Migrated calendar (%1$s)" : "Migrated calendar (%1$s)",
+ "Calendars including events, details and attendees" : "Calendars including events, details and attendees",
+ "Contacts and groups" : "Contacts and groups",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
- "Tentative" : "Tentative",
+ "Availability" : "Availability",
+ "If you configure your working hours, other users will see when you are out of office when they book a meeting." : "If you configure your working hours, other users will see when you are out of office when they book a meeting.",
+ "Time zone:" : "Time zone:",
+ "to" : "to",
+ "Delete slot" : "Delete slot",
+ "No working hours set" : "No working hours set",
+ "Add slot" : "Add slot",
+ "Monday" : "Monday",
+ "Tuesday" : "Tuesday",
+ "Wednesday" : "Wednesday",
+ "Thursday" : "Thursday",
+ "Friday" : "Friday",
+ "Saturday" : "Saturday",
+ "Sunday" : "Sunday",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications.",
"Save" : "Save",
+ "Failed to load availability" : "Failed to load availability",
+ "Saved availability" : "Saved availability",
+ "Failed to save availability" : "Failed to save availability",
+ "Calendar server" : "Calendar server",
"Send invitations to attendees" : "Send invitations to attendees",
"Automatically generate a birthday calendar" : "Automatically generate a birthday calendar",
"Birthday calendars will be generated by a background job." : "Birthday calendars will be generated by a background job.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Hence they will not be available immediately after enabling but will show up after some time.",
- "Hello %s," : "Hello %s,",
- "When:" : "When:"
+ "Send notifications for events" : "Send notifications for events",
+ "Notifications are sent via background jobs, so these must occur often enough." : "Notifications are sent via background jobs, so these must occur often enough.",
+ "Send reminder notifications to calendar sharees as well" : "Send reminder notifications to calendar sharees as well",
+ "Reminders are always sent to organizers and attendees." : "Reminders are always sent to organizers and attendees.",
+ "Enable notifications for events via push" : "Enable notifications for events via push",
+ "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.",
+ "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Please make sure to properly set up {emailopen}the email server{linkclose}.",
+ "There was an error updating your attendance status." : "There was an error updating your attendance status.",
+ "Please contact the organizer directly." : "Please contact the organizer directly.",
+ "Are you accepting the invitation?" : "Are you accepting the invitation?",
+ "Tentative" : "Tentative",
+ "Number of guests" : "Number of guests",
+ "Comment" : "Comment",
+ "Your attendance was updated successfully." : "Your attendance was updated successfully.",
+ "Todos" : "Todos",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} created todo {todo} in list {calendar}",
+ "You created todo {todo} in list {calendar}" : "You created todo {todo} in list {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} deleted todo {todo} from list {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "You deleted todo {todo} from list {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} updated todo {todo} in list {calendar}",
+ "You updated todo {todo} in list {calendar}" : "You updated todo {todo} in list {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} solved todo {todo} in list {calendar}",
+ "You solved todo {todo} in list {calendar}" : "You solved todo {todo} in list {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} reopened todo {todo} in list {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "You reopened todo {todo} in list {calendar}",
+ "A calendar <strong>todo</strong> was modified" : "A calendar <strong>todo</strong> was modified"
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/dav/l10n/en_GB.json b/apps/dav/l10n/en_GB.json
index 2acf739fa33..ea3bf51acae 100644
--- a/apps/dav/l10n/en_GB.json
+++ b/apps/dav/l10n/en_GB.json
@@ -1,6 +1,6 @@
{ "translations": {
"Calendar" : "Calendar",
- "Todos" : "Todos",
+ "To-dos" : "To-dos",
"Personal" : "Personal",
"{actor} created calendar {calendar}" : "{actor} created calendar {calendar}",
"You created calendar {calendar}" : "You created calendar {calendar}",
@@ -8,6 +8,8 @@
"You deleted calendar {calendar}" : "You deleted calendar {calendar}",
"{actor} updated calendar {calendar}" : "{actor} updated calendar {calendar}",
"You updated calendar {calendar}" : "You updated calendar {calendar}",
+ "{actor} restored calendar {calendar}" : "{actor} restored calendar {calendar}",
+ "You restored calendar {calendar}" : "You restored calendar {calendar}",
"You shared calendar {calendar} as public link" : "You shared calendar {calendar} as public link",
"You removed public link for calendar {calendar}" : "You removed public link for calendar {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} shared calendar {calendar} with you",
@@ -21,47 +23,175 @@
"{actor} shared calendar {calendar} with group {group}" : "{actor} shared calendar {calendar} with group {group}",
"You unshared calendar {calendar} from group {group}" : "You unshared calendar {calendar} from group {group}",
"{actor} unshared calendar {calendar} from group {group}" : "{actor} unshared calendar {calendar} from group {group}",
+ "Untitled event" : "Untitled event",
"{actor} created event {event} in calendar {calendar}" : "{actor} created event {event} in calendar {calendar}",
"You created event {event} in calendar {calendar}" : "You created event {event} in calendar {calendar}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} deleted event {event} from calendar {calendar}",
"You deleted event {event} from calendar {calendar}" : "You deleted event {event} from calendar {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} updated event {event} in calendar {calendar}",
"You updated event {event} in calendar {calendar}" : "You updated event {event} in calendar {calendar}",
+ "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}",
+ "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}",
+ "{actor} restored event {event} of calendar {calendar}" : "{actor} restored event {event} of calendar {calendar}",
+ "You restored event {event} of calendar {calendar}" : "You restored event {event} of calendar {calendar}",
"Busy" : "Busy",
- "{actor} created todo {todo} in list {calendar}" : "{actor} created todo {todo} in list {calendar}",
- "You created todo {todo} in list {calendar}" : "You created todo {todo} in list {calendar}",
- "{actor} deleted todo {todo} from list {calendar}" : "{actor} deleted todo {todo} from list {calendar}",
- "You deleted todo {todo} from list {calendar}" : "You deleted todo {todo} from list {calendar}",
- "{actor} updated todo {todo} in list {calendar}" : "{actor} updated todo {todo} in list {calendar}",
- "You updated todo {todo} in list {calendar}" : "You updated todo {todo} in list {calendar}",
- "{actor} solved todo {todo} in list {calendar}" : "{actor} solved todo {todo} in list {calendar}",
- "You solved todo {todo} in list {calendar}" : "You solved todo {todo} in list {calendar}",
- "{actor} reopened todo {todo} in list {calendar}" : "{actor} reopened todo {todo} in list {calendar}",
- "You reopened todo {todo} in list {calendar}" : "You reopened todo {todo} in list {calendar}",
+ "{actor} created to-do {todo} in list {calendar}" : "{actor} created to-do {todo} in list {calendar}",
+ "You created to-do {todo} in list {calendar}" : "You created to-do {todo} in list {calendar}",
+ "{actor} deleted to-do {todo} from list {calendar}" : "{actor} deleted to-do {todo} from list {calendar}",
+ "You deleted to-do {todo} from list {calendar}" : "You deleted to-do {todo} from list {calendar}",
+ "{actor} updated to-do {todo} in list {calendar}" : "{actor} updated to-do {todo} in list {calendar}",
+ "You updated to-do {todo} in list {calendar}" : "You updated to-do {todo} in list {calendar}",
+ "{actor} solved to-do {todo} in list {calendar}" : "{actor} solved to-do {todo} in list {calendar}",
+ "You solved to-do {todo} in list {calendar}" : "You solved to-do {todo} in list {calendar}",
+ "{actor} reopened to-do {todo} in list {calendar}" : "{actor} reopened to-do {todo} in list {calendar}",
+ "You reopened to-do {todo} in list {calendar}" : "You reopened to-do {todo} in list {calendar}",
+ "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}",
+ "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}",
+ "Calendar, contacts and tasks" : "Calendar, contacts and tasks",
"A <strong>calendar</strong> was modified" : "A <strong>calendar</strong> was modified",
"A calendar <strong>event</strong> was modified" : "A calendar <strong>event</strong> was modified",
- "A calendar <strong>todo</strong> was modified" : "A calendar <strong>todo</strong> was modified",
+ "A calendar <strong>to-do</strong> was modified" : "A calendar <strong>to-do</strong> was modified",
"Contact birthdays" : "Contact birthdays",
+ "Death of %s" : "Death of %s",
+ "Calendar:" : "Calendar:",
+ "Date:" : "Date:",
"Where:" : "Where:",
"Description:" : "Description:",
+ "_%n year_::_%n years_" : ["%n year","%n years"],
+ "_%n month_::_%n months_" : ["%n month","%n months"],
+ "_%n day_::_%n days_" : ["%n day","%n days"],
+ "_%n hour_::_%n hours_" : ["%n hour","%n hours"],
+ "_%n minute_::_%n minutes_" : ["%n minute","%n minutes"],
+ "%s (in %s)" : "%s (in %s)",
+ "%s (%s ago)" : "%s (%s ago)",
+ "Calendar: %s" : "Calendar: %s",
+ "Date: %s" : "Date: %s",
+ "Description: %s" : "Description: %s",
+ "Where: %s" : "Where: %s",
"%1$s via %2$s" : "%1$s via %2$s",
+ "Cancelled: %1$s" : "Cancelled: %1$s",
"Invitation canceled" : "Invitation canceled",
+ "Re: %1$s" : "Re: %1$s",
"Invitation updated" : "Invitation updated",
+ "Invitation: %1$s" : "Invitation: %1$s",
+ "Invitation" : "Invitation",
+ "Title:" : "Title:",
+ "Time:" : "Time:",
"Location:" : "Location:",
"Link:" : "Link:",
+ "Organizer:" : "Organizer:",
+ "Attendees:" : "Attendees:",
"Accept" : "Accept",
"Decline" : "Decline",
+ "More options …" : "More options …",
+ "More options at %s" : "More options at %s",
"Contacts" : "Contacts",
+ "{actor} created address book {addressbook}" : "{actor} created address book {addressbook}",
+ "You created address book {addressbook}" : "You created address book {addressbook}",
+ "{actor} deleted address book {addressbook}" : "{actor} deleted address book {addressbook}",
+ "You deleted address book {addressbook}" : "You deleted address book {addressbook}",
+ "{actor} updated address book {addressbook}" : "{actor} updated address book {addressbook}",
+ "You updated address book {addressbook}" : "You updated address book {addressbook}",
+ "{actor} shared address book {addressbook} with you" : "{actor} shared address book {addressbook} with you",
+ "You shared address book {addressbook} with {user}" : "You shared address book {addressbook} with {user}",
+ "{actor} shared address book {addressbook} with {user}" : "{actor} shared address book {addressbook} with {user}",
+ "{actor} unshared address book {addressbook} from you" : "{actor} unshared address book {addressbook} from you",
+ "You unshared address book {addressbook} from {user}" : "You unshared address book {addressbook} from {user}",
+ "{actor} unshared address book {addressbook} from {user}" : "{actor} unshared address book {addressbook} from {user}",
+ "{actor} unshared address book {addressbook} from themselves" : "{actor} unshared address book {addressbook} from themselves",
+ "You shared address book {addressbook} with group {group}" : "You shared address book {addressbook} with group {group}",
+ "{actor} shared address book {addressbook} with group {group}" : "{actor} shared address book {addressbook} with group {group}",
+ "You unshared address book {addressbook} from group {group}" : "You unshared address book {addressbook} from group {group}",
+ "{actor} unshared address book {addressbook} from group {group}" : "{actor} unshared address book {addressbook} from group {group}",
+ "{actor} created contact {card} in address book {addressbook}" : "{actor} created contact {card} in address book {addressbook}",
+ "You created contact {card} in address book {addressbook}" : "You created contact {card} in address book {addressbook}",
+ "{actor} deleted contact {card} from address book {addressbook}" : "{actor} deleted contact {card} from address book {addressbook}",
+ "You deleted contact {card} from address book {addressbook}" : "You deleted contact {card} from address book {addressbook}",
+ "{actor} updated contact {card} in address book {addressbook}" : "{actor} updated contact {card} in address book {addressbook}",
+ "You updated contact {card} in address book {addressbook}" : "You updated contact {card} in address book {addressbook}",
+ "A <strong>contact</strong> or <strong>address book</strong> was modified" : "A <strong>contact</strong> or <strong>address book</strong> was modified",
+ "File is not updatable: %1$s" : "File is not updatable: %1$s",
+ "Could not write to final file, canceled by hook" : "Could not write to final file, canceled by hook",
+ "Could not write file contents" : "Could not write file contents",
+ "_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
+ "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)",
+ "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side.",
+ "Could not rename part file to final file, canceled by hook" : "Could not rename part file to final file, canceled by hook",
+ "Could not rename part file to final file" : "Could not rename part file to final file",
+ "Failed to check file size: %1$s" : "Failed to check file size: %1$s",
+ "Could not open file" : "Could not open file",
+ "Encryption not ready: %1$s" : "Encryption not ready: %1$s",
+ "Failed to open file: %1$s" : "Failed to open file: %1$s",
+ "Failed to unlink: %1$s" : "Failed to unlink: %1$s",
+ "Invalid chunk name" : "Invalid chunk name",
+ "Could not rename part file assembled from chunks" : "Could not rename part file assembled from chunks",
+ "Failed to write file contents: %1$s" : "Failed to write file contents: %1$s",
+ "File not found: %1$s" : "File not found: %1$s",
+ "System is in maintenance mode." : "System is in maintenance mode.",
+ "Upgrade needed" : "Upgrade needed",
+ "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS.",
+ "Configures a CalDAV account" : "Configures a CalDAV account",
+ "Configures a CardDAV account" : "Configures a CardDAV account",
+ "Events" : "Events",
"Tasks" : "Tasks",
+ "Untitled task" : "Untitled task",
+ "Completed on %s" : "Completed on %s",
+ "Due on %s by %s" : "Due on %s by %s",
+ "Due on %s" : "Due on %s",
+ "Migrated calendar (%1$s)" : "Migrated calendar (%1$s)",
+ "Calendars including events, details and attendees" : "Calendars including events, details and attendees",
+ "Contacts and groups" : "Contacts and groups",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
- "Tentative" : "Tentative",
+ "Availability" : "Availability",
+ "If you configure your working hours, other users will see when you are out of office when they book a meeting." : "If you configure your working hours, other users will see when you are out of office when they book a meeting.",
+ "Time zone:" : "Time zone:",
+ "to" : "to",
+ "Delete slot" : "Delete slot",
+ "No working hours set" : "No working hours set",
+ "Add slot" : "Add slot",
+ "Monday" : "Monday",
+ "Tuesday" : "Tuesday",
+ "Wednesday" : "Wednesday",
+ "Thursday" : "Thursday",
+ "Friday" : "Friday",
+ "Saturday" : "Saturday",
+ "Sunday" : "Sunday",
+ "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications.",
"Save" : "Save",
+ "Failed to load availability" : "Failed to load availability",
+ "Saved availability" : "Saved availability",
+ "Failed to save availability" : "Failed to save availability",
+ "Calendar server" : "Calendar server",
"Send invitations to attendees" : "Send invitations to attendees",
"Automatically generate a birthday calendar" : "Automatically generate a birthday calendar",
"Birthday calendars will be generated by a background job." : "Birthday calendars will be generated by a background job.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Hence they will not be available immediately after enabling but will show up after some time.",
- "Hello %s," : "Hello %s,",
- "When:" : "When:"
+ "Send notifications for events" : "Send notifications for events",
+ "Notifications are sent via background jobs, so these must occur often enough." : "Notifications are sent via background jobs, so these must occur often enough.",
+ "Send reminder notifications to calendar sharees as well" : "Send reminder notifications to calendar sharees as well",
+ "Reminders are always sent to organizers and attendees." : "Reminders are always sent to organizers and attendees.",
+ "Enable notifications for events via push" : "Enable notifications for events via push",
+ "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.",
+ "Please make sure to properly set up {emailopen}the email server{linkclose}." : "Please make sure to properly set up {emailopen}the email server{linkclose}.",
+ "There was an error updating your attendance status." : "There was an error updating your attendance status.",
+ "Please contact the organizer directly." : "Please contact the organizer directly.",
+ "Are you accepting the invitation?" : "Are you accepting the invitation?",
+ "Tentative" : "Tentative",
+ "Number of guests" : "Number of guests",
+ "Comment" : "Comment",
+ "Your attendance was updated successfully." : "Your attendance was updated successfully.",
+ "Todos" : "Todos",
+ "{actor} created todo {todo} in list {calendar}" : "{actor} created todo {todo} in list {calendar}",
+ "You created todo {todo} in list {calendar}" : "You created todo {todo} in list {calendar}",
+ "{actor} deleted todo {todo} from list {calendar}" : "{actor} deleted todo {todo} from list {calendar}",
+ "You deleted todo {todo} from list {calendar}" : "You deleted todo {todo} from list {calendar}",
+ "{actor} updated todo {todo} in list {calendar}" : "{actor} updated todo {todo} in list {calendar}",
+ "You updated todo {todo} in list {calendar}" : "You updated todo {todo} in list {calendar}",
+ "{actor} solved todo {todo} in list {calendar}" : "{actor} solved todo {todo} in list {calendar}",
+ "You solved todo {todo} in list {calendar}" : "You solved todo {todo} in list {calendar}",
+ "{actor} reopened todo {todo} in list {calendar}" : "{actor} reopened todo {todo} in list {calendar}",
+ "You reopened todo {todo} in list {calendar}" : "You reopened todo {todo} in list {calendar}",
+ "A calendar <strong>todo</strong> was modified" : "A calendar <strong>todo</strong> was modified"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/dav/l10n/ja.js b/apps/dav/l10n/ja.js
index a9cbf7e6b94..365a97efd89 100644
--- a/apps/dav/l10n/ja.js
+++ b/apps/dav/l10n/ja.js
@@ -2,6 +2,7 @@ OC.L10N.register(
"dav",
{
"Calendar" : "カレンダー",
+ "To-dos" : "To-dos",
"Personal" : "個人",
"{actor} created calendar {calendar}" : "{actor}はカレンダー {calendar} を作成しました",
"You created calendar {calendar}" : "カレンダー {calendar} を作成しました",
diff --git a/apps/dav/l10n/ja.json b/apps/dav/l10n/ja.json
index e5ec8aeb504..41a9d4437a6 100644
--- a/apps/dav/l10n/ja.json
+++ b/apps/dav/l10n/ja.json
@@ -1,5 +1,6 @@
{ "translations": {
"Calendar" : "カレンダー",
+ "To-dos" : "To-dos",
"Personal" : "個人",
"{actor} created calendar {calendar}" : "{actor}はカレンダー {calendar} を作成しました",
"You created calendar {calendar}" : "カレンダー {calendar} を作成しました",
diff --git a/apps/dav/l10n/mk.js b/apps/dav/l10n/mk.js
index fe16669120e..a519db32b04 100644
--- a/apps/dav/l10n/mk.js
+++ b/apps/dav/l10n/mk.js
@@ -100,8 +100,11 @@ OC.L10N.register(
"You unshared address book {addressbook} from {user}" : "Не го споделиувате адресар {addressbook} со {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} не го споделува адресар {addressbook} со {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} не го споделува адресар {addressbook} со себе",
+ "You shared address book {addressbook} with group {group}" : "Споделивте адресар {addressbook} со група {group}",
+ "{actor} shared address book {addressbook} with group {group}" : "{actor} сподели адресар {addressbook} со група {group}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Контракт</strong> или <strong>адресар</strong> е променет",
"_%n byte_::_%n bytes_" : ["%n бајт","%n бајти"],
+ "Could not open file" : "Неможе да се отвори датотеката",
"File not found: %1$s" : "Датотеката не е пронајдена: %1$s",
"System is in maintenance mode." : "Системот е во мод за одржување.",
"Upgrade needed" : "Потребна е надградба",
diff --git a/apps/dav/l10n/mk.json b/apps/dav/l10n/mk.json
index 7a179fab5a7..095a3b21a18 100644
--- a/apps/dav/l10n/mk.json
+++ b/apps/dav/l10n/mk.json
@@ -98,8 +98,11 @@
"You unshared address book {addressbook} from {user}" : "Не го споделиувате адресар {addressbook} со {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} не го споделува адресар {addressbook} со {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} не го споделува адресар {addressbook} со себе",
+ "You shared address book {addressbook} with group {group}" : "Споделивте адресар {addressbook} со група {group}",
+ "{actor} shared address book {addressbook} with group {group}" : "{actor} сподели адресар {addressbook} со група {group}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Контракт</strong> или <strong>адресар</strong> е променет",
"_%n byte_::_%n bytes_" : ["%n бајт","%n бајти"],
+ "Could not open file" : "Неможе да се отвори датотеката",
"File not found: %1$s" : "Датотеката не е пронајдена: %1$s",
"System is in maintenance mode." : "Системот е во мод за одржување.",
"Upgrade needed" : "Потребна е надградба",
diff --git a/apps/dav/lib/CardDAV/Integration/ExternalAddressBook.php b/apps/dav/lib/CardDAV/Integration/ExternalAddressBook.php
index b1deb638f3d..bd394cb7fb6 100644
--- a/apps/dav/lib/CardDAV/Integration/ExternalAddressBook.php
+++ b/apps/dav/lib/CardDAV/Integration/ExternalAddressBook.php
@@ -50,16 +50,9 @@ abstract class ExternalAddressBook implements IAddressBook, DAV\IProperties {
*/
private const DELIMITER = '--';
- /** @var string */
- private $appId;
-
- /** @var string */
- private $uri;
+ private string $appId;
+ private string $uri;
- /**
- * @param string $appId
- * @param string $uri
- */
public function __construct(string $appId, string $uri) {
$this->appId = $appId;
$this->uri = $uri;
diff --git a/apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php b/apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php
index 2d2be631416..257068b9576 100644
--- a/apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php
@@ -64,7 +64,7 @@ class BlockLegacyClientPlugin extends ServerPlugin {
return;
}
- $minimumSupportedDesktopVersion = $this->config->getSystemValue('minimum.supported.desktop.version', '2.0.0');
+ $minimumSupportedDesktopVersion = $this->config->getSystemValue('minimum.supported.desktop.version', '2.3.0');
// Match on the mirall version which is in scheme "Mozilla/5.0 (%1) mirall/%2" or
// "mirall/%1" for older releases
diff --git a/apps/dav/lib/Connector/Sabre/Directory.php b/apps/dav/lib/Connector/Sabre/Directory.php
index b575a051b2a..f4b1ee62190 100644
--- a/apps/dav/lib/Connector/Sabre/Directory.php
+++ b/apps/dav/lib/Connector/Sabre/Directory.php
@@ -255,7 +255,11 @@ class Directory extends \OCA\DAV\Connector\Sabre\Node implements \Sabre\DAV\ICol
if (!$this->info->isReadable()) {
// return 403 instead of 404 because a 404 would make
// the caller believe that the collection itself does not exist
- throw new Forbidden('No read permissions');
+ if (\OCP\Server::get(\OCP\App\IAppManager::class)->isInstalled('files_accesscontrol')) {
+ throw new Forbidden('No read permissions. This might be caused by files_accesscontrol, check your configured rules');
+ } else {
+ throw new Forbidden('No read permissions');
+ }
}
$folderContent = $this->getNode()->getDirectoryListing();
} catch (LockedException $e) {
diff --git a/apps/dav/lib/Connector/Sabre/File.php b/apps/dav/lib/Connector/Sabre/File.php
index 94632b265db..3a871b06259 100644
--- a/apps/dav/lib/Connector/Sabre/File.php
+++ b/apps/dav/lib/Connector/Sabre/File.php
@@ -45,11 +45,11 @@ use OC\Files\Stream\HashWrapper;
use OC\Files\View;
use OC\Metadata\FileMetadata;
use OCA\DAV\AppInfo\Application;
+use OCA\DAV\Connector\Sabre\Exception\BadGateway;
use OCA\DAV\Connector\Sabre\Exception\EntityTooLarge;
use OCA\DAV\Connector\Sabre\Exception\FileLocked;
use OCA\DAV\Connector\Sabre\Exception\Forbidden as DAVForbiddenException;
use OCA\DAV\Connector\Sabre\Exception\UnsupportedMediaType;
-use OCA\DAV\Connector\Sabre\Exception\BadGateway;
use OCP\Encryption\Exceptions\GenericEncryptionException;
use OCP\Files\EntityTooLargeException;
use OCP\Files\FileInfo;
@@ -491,9 +491,21 @@ class File extends Node implements IFile {
} catch (\Exception $e) {
$this->convertToSabreException($e);
}
+
if ($res === false) {
throw new ServiceUnavailable($this->l10n->t('Could not open file'));
}
+
+ // comparing current file size with the one in DB
+ // if different, fix DB and refresh cache.
+ if ($this->getSize() !== $this->fileView->filesize($this->getPath())) {
+ $logger = \OC::$server->get(LoggerInterface::class);
+ $logger->warning('fixing cached size of file id=' . $this->getId());
+
+ $this->getFileInfo()->getStorage()->getUpdater()->update($this->getFileInfo()->getInternalPath());
+ $this->refreshInfo();
+ }
+
return $res;
} catch (GenericEncryptionException $e) {
// returning 503 will allow retry of the operation at a later point in time
diff --git a/apps/dav/lib/Connector/Sabre/QuotaPlugin.php b/apps/dav/lib/Connector/Sabre/QuotaPlugin.php
index f2b652e3320..ff7396a0825 100644
--- a/apps/dav/lib/Connector/Sabre/QuotaPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/QuotaPlugin.php
@@ -44,7 +44,6 @@ use Sabre\DAV\INode;
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
*/
class QuotaPlugin extends \Sabre\DAV\ServerPlugin {
-
/** @var \OC\Files\View */
private $view;
@@ -79,6 +78,7 @@ class QuotaPlugin extends \Sabre\DAV\ServerPlugin {
$server->on('beforeWriteContent', [$this, 'beforeWriteContent'], 10);
$server->on('beforeCreateFile', [$this, 'beforeCreateFile'], 10);
$server->on('beforeMove', [$this, 'beforeMove'], 10);
+ $server->on('beforeCopy', [$this, 'beforeCopy'], 10);
}
/**
@@ -131,7 +131,42 @@ class QuotaPlugin extends \Sabre\DAV\ServerPlugin {
$destinationNode = $this->server->tree->getNodeForPath($destination);
$path = $destinationNode->getPath();
} else {
- $parentNode = $this->server->tree->getNodeForPath(dirname($destination));
+ $parent = dirname($destination);
+ if ($parent === '.') {
+ $parent = '';
+ }
+ $parentNode = $this->server->tree->getNodeForPath($parent);
+ $path = $parentNode->getPath();
+ }
+
+ return $this->checkQuota($path, $sourceNode->getSize());
+ }
+
+ /**
+ * Check quota on the target destination before a copy.
+ */
+ public function beforeCopy(string $sourcePath, string $destinationPath): bool {
+ $sourceNode = $this->server->tree->getNodeForPath($sourcePath);
+ if (!$sourceNode instanceof Node) {
+ return true;
+ }
+
+ // get target node for proper path conversion
+ if ($this->server->tree->nodeExists($destinationPath)) {
+ $destinationNode = $this->server->tree->getNodeForPath($destinationPath);
+ if (!$destinationNode instanceof Node) {
+ return true;
+ }
+ $path = $destinationNode->getPath();
+ } else {
+ $parent = dirname($destinationPath);
+ if ($parent === '.') {
+ $parent = '';
+ }
+ $parentNode = $this->server->tree->getNodeForPath($parent);
+ if (!$parentNode instanceof Node) {
+ return true;
+ }
$path = $parentNode->getPath();
}
diff --git a/apps/dav/lib/Files/FileSearchBackend.php b/apps/dav/lib/Files/FileSearchBackend.php
index c819fa6afc6..524f90e6623 100644
--- a/apps/dav/lib/Files/FileSearchBackend.php
+++ b/apps/dav/lib/Files/FileSearchBackend.php
@@ -55,7 +55,7 @@ use SearchDAV\Query\Order;
use SearchDAV\Query\Query;
class FileSearchBackend implements ISearchBackend {
- const OPERATOR_LIMIT = 100;
+ public const OPERATOR_LIMIT = 100;
/** @var CachingTree */
private $tree;
@@ -432,7 +432,7 @@ class FileSearchBackend implements ISearchBackend {
if (is_numeric($value)) {
return max(0, 0 + $value);
}
- $date = \DateTime::createFromFormat(\DateTimeInterface::ATOM, $value);
+ $date = \DateTime::createFromFormat(\DateTimeInterface::ATOM, (string)$value);
return ($date instanceof \DateTime && $date->getTimestamp() !== false) ? $date->getTimestamp() : 0;
default:
return $value;
diff --git a/apps/dav/lib/RootCollection.php b/apps/dav/lib/RootCollection.php
index 29ab65d46a9..bacb550b415 100644
--- a/apps/dav/lib/RootCollection.php
+++ b/apps/dav/lib/RootCollection.php
@@ -118,7 +118,6 @@ class RootCollection extends SimpleCollection {
$roomCalendarRoot->disableListing = $disableListing;
$publicCalendarRoot = new PublicCalendarRoot($caldavBackend, $l10n, $config, $logger);
- $publicCalendarRoot->disableListing = $disableListing;
$systemTagCollection = new SystemTag\SystemTagsByIdCollection(
\OC::$server->getSystemTagManager(),
diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php
index f98dba22925..437a425fcd3 100644
--- a/apps/dav/lib/Server.php
+++ b/apps/dav/lib/Server.php
@@ -1,6 +1,7 @@
<?php
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @copyright Copyright (c) 2022 Informatyka Boguslawski sp. z o.o. sp.k., http://www.ib.pl/
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
* @author Bjoern Schiessle <bjoern@schiessle.org>
@@ -177,7 +178,9 @@ class Server {
$this->server->addPlugin(\OC::$server->get(\OCA\DAV\CalDAV\Trashbin\Plugin::class));
$this->server->addPlugin(new \OCA\DAV\CalDAV\WebcalCaching\Plugin($request));
- $this->server->addPlugin(new \Sabre\CalDAV\Subscriptions\Plugin());
+ if (\OC::$server->getConfig()->getAppValue('dav', 'allow_calendar_link_subscriptions', 'yes') === 'yes') {
+ $this->server->addPlugin(new \Sabre\CalDAV\Subscriptions\Plugin());
+ }
$this->server->addPlugin(new \Sabre\CalDAV\Notifications\Plugin());
$this->server->addPlugin(new DAV\Sharing\Plugin($authBackend, \OC::$server->getRequest(), \OC::$server->getConfig()));
diff --git a/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap b/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap
index ed024d32475..136abaffb4e 100644
--- a/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap
+++ b/apps/dav/src/views/__snapshots__/CalDavSettings.spec.js.snap
@@ -72,18 +72,18 @@ exports[`CalDavSettings interactions 1`] = `
>
<span
class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
- data-v-2b31639e=""
data-v-751c6bad=""
+ data-v-d423551e=""
style="--icon-size: 36px;"
>
<label
class="checkbox-radio-switch__label"
- data-v-2b31639e=""
+ data-v-d423551e=""
for="caldavSendInvitations"
>
<input
class="checkbox-radio-switch__input"
- data-v-2b31639e=""
+ data-v-d423551e=""
id="caldavSendInvitations"
type="checkbox"
value=""
@@ -92,7 +92,7 @@ exports[`CalDavSettings interactions 1`] = `
<span
aria-hidden="true"
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
- data-v-2b31639e=""
+ data-v-d423551e=""
role="img"
>
<svg
@@ -133,18 +133,18 @@ exports[`CalDavSettings interactions 1`] = `
>
<span
class="checkbox-radio-switch checkbox checkbox-radio-switch-switch checkbox-radio-switch--checked"
- data-v-2b31639e=""
data-v-751c6bad=""
+ data-v-d423551e=""
style="--icon-size: 36px;"
>
<label
class="checkbox-radio-switch__label"
- data-v-2b31639e=""
+ data-v-d423551e=""
for="caldavGenerateBirthdayCalendar"
>
<input
class="checkbox-radio-switch__input"
- data-v-2b31639e=""
+ data-v-d423551e=""
id="caldavGenerateBirthdayCalendar"
type="checkbox"
value=""
@@ -153,7 +153,7 @@ exports[`CalDavSettings interactions 1`] = `
<span
aria-hidden="true"
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
- data-v-2b31639e=""
+ data-v-d423551e=""
role="img"
>
<svg
@@ -202,18 +202,18 @@ exports[`CalDavSettings interactions 1`] = `
>
<span
class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
- data-v-2b31639e=""
data-v-751c6bad=""
+ data-v-d423551e=""
style="--icon-size: 36px;"
>
<label
class="checkbox-radio-switch__label"
- data-v-2b31639e=""
+ data-v-d423551e=""
for="caldavSendEventReminders"
>
<input
class="checkbox-radio-switch__input"
- data-v-2b31639e=""
+ data-v-d423551e=""
id="caldavSendEventReminders"
type="checkbox"
value=""
@@ -222,7 +222,7 @@ exports[`CalDavSettings interactions 1`] = `
<span
aria-hidden="true"
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
- data-v-2b31639e=""
+ data-v-d423551e=""
role="img"
>
<svg
@@ -276,18 +276,18 @@ exports[`CalDavSettings interactions 1`] = `
>
<span
class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
- data-v-2b31639e=""
data-v-751c6bad=""
+ data-v-d423551e=""
style="--icon-size: 36px;"
>
<label
class="checkbox-radio-switch__label"
- data-v-2b31639e=""
+ data-v-d423551e=""
for="caldavSendEventRemindersToSharedGroupMembers"
>
<input
class="checkbox-radio-switch__input"
- data-v-2b31639e=""
+ data-v-d423551e=""
id="caldavSendEventRemindersToSharedGroupMembers"
type="checkbox"
value=""
@@ -296,7 +296,7 @@ exports[`CalDavSettings interactions 1`] = `
<span
aria-hidden="true"
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
- data-v-2b31639e=""
+ data-v-d423551e=""
role="img"
>
<svg
@@ -334,18 +334,18 @@ exports[`CalDavSettings interactions 1`] = `
>
<span
class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
- data-v-2b31639e=""
data-v-751c6bad=""
+ data-v-d423551e=""
style="--icon-size: 36px;"
>
<label
class="checkbox-radio-switch__label"
- data-v-2b31639e=""
+ data-v-d423551e=""
for="caldavSendEventRemindersPush"
>
<input
class="checkbox-radio-switch__input"
- data-v-2b31639e=""
+ data-v-d423551e=""
id="caldavSendEventRemindersPush"
type="checkbox"
value=""
@@ -354,7 +354,7 @@ exports[`CalDavSettings interactions 1`] = `
<span
aria-hidden="true"
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
- data-v-2b31639e=""
+ data-v-d423551e=""
role="img"
>
<svg
diff --git a/apps/dav/tests/unit/BackgroundJob/CleanupInvitationTokenJobTest.php b/apps/dav/tests/unit/BackgroundJob/CleanupInvitationTokenJobTest.php
index ee43bae5355..d3b7ca92581 100644
--- a/apps/dav/tests/unit/BackgroundJob/CleanupInvitationTokenJobTest.php
+++ b/apps/dav/tests/unit/BackgroundJob/CleanupInvitationTokenJobTest.php
@@ -76,7 +76,7 @@ class CleanupInvitationTokenJobTest extends TestCase {
[1337, \PDO::PARAM_STR, null, 'namedParameter1337']
]);
- $function = 'fakefunction';
+ $function = 'function1337';
$expr->expects($this->once())
->method('lt')
->with('expiration', 'namedParameter1337')
diff --git a/apps/dav/tests/unit/BackgroundJob/PruneOutdatedSyncTokensJobTest.php b/apps/dav/tests/unit/BackgroundJob/PruneOutdatedSyncTokensJobTest.php
index 991caafd597..1de56b37d80 100644
--- a/apps/dav/tests/unit/BackgroundJob/PruneOutdatedSyncTokensJobTest.php
+++ b/apps/dav/tests/unit/BackgroundJob/PruneOutdatedSyncTokensJobTest.php
@@ -34,13 +34,14 @@ use OCA\DAV\BackgroundJob\PruneOutdatedSyncTokensJob;
use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\CardDAV\CardDavBackend;
use OCP\AppFramework\Utility\ITimeFactory;
-use OCP\DB\Exception;
use OCP\IConfig;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
class PruneOutdatedSyncTokensJobTest extends TestCase {
+ /** @var ITimeFactory | MockObject */
+ private $timeFactory;
/** @var CalDavBackend | MockObject */
private $calDavBackend;
diff --git a/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php b/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php
index 79d9376650b..e2b5390f875 100644
--- a/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php
+++ b/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php
@@ -40,13 +40,11 @@ use OCP\IConfig;
use OCP\IGroupManager;
use OCP\IUser;
use OCP\IUserManager;
-use OCP\IUserSession;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
class ReminderServiceTest extends TestCase {
-
/** @var Backend|MockObject */
private $backend;
@@ -74,6 +72,9 @@ class ReminderServiceTest extends TestCase {
/** @var MockObject|LoggerInterface */
private $logger;
+ /** @var MockObject|Principal */
+ private $principalConnector;
+
public const CALENDAR_DATA = <<<EOD
BEGIN:VCALENDAR
PRODID:-//Nextcloud calendar v1.6.4
diff --git a/apps/dav/tests/unit/CardDAV/Activity/BackendTest.php b/apps/dav/tests/unit/CardDAV/Activity/BackendTest.php
index 4f3459233aa..bd5660747ff 100644
--- a/apps/dav/tests/unit/CardDAV/Activity/BackendTest.php
+++ b/apps/dav/tests/unit/CardDAV/Activity/BackendTest.php
@@ -40,7 +40,6 @@ use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class BackendTest extends TestCase {
-
/** @var IManager|MockObject */
protected $activityManager;
@@ -53,6 +52,9 @@ class BackendTest extends TestCase {
/** @var IAppManager|MockObject */
protected $appManager;
+ /** @var IUserManager|MockObject */
+ protected $userManager;
+
protected function setUp(): void {
parent::setUp();
$this->activityManager = $this->createMock(IManager::class);
diff --git a/apps/dav/tests/unit/Connector/Sabre/BlockLegacyClientPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/BlockLegacyClientPluginTest.php
index 4d2771132cc..e9d43f77cca 100644
--- a/apps/dav/tests/unit/Connector/Sabre/BlockLegacyClientPluginTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/BlockLegacyClientPluginTest.php
@@ -82,7 +82,7 @@ class BlockLegacyClientPluginTest extends TestCase {
$this->config
->expects($this->once())
->method('getSystemValue')
- ->with('minimum.supported.desktop.version', '2.0.0')
+ ->with('minimum.supported.desktop.version', '2.3.0')
->willReturn('1.7.0');
$this->blockLegacyClientVersionPlugin->beforeHandler($request);
@@ -117,7 +117,7 @@ class BlockLegacyClientPluginTest extends TestCase {
$this->config
->expects($this->once())
->method('getSystemValue')
- ->with('minimum.supported.desktop.version', '2.0.0')
+ ->with('minimum.supported.desktop.version', '2.3.0')
->willReturn('1.7.0');
$this->blockLegacyClientVersionPlugin->beforeHandler($request);
diff --git a/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php b/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php
index 7cd31e3b8dd..2614f541613 100644
--- a/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php
+++ b/apps/dav/tests/unit/Connector/Sabre/PrincipalTest.php
@@ -54,7 +54,6 @@ use Sabre\DAV\PropPatch;
use Test\TestCase;
class PrincipalTest extends TestCase {
-
/** @var IUserManager | MockObject */
private $userManager;
@@ -658,12 +657,12 @@ class PrincipalTest extends TestCase {
$user2->method('getSystemEMailAddress')->willReturn('user2@foo.bar');
$user3 = $this->createMock(IUser::class);
$user3->method('getUID')->willReturn('user3');
- $user2->method('getDisplayName')->willReturn('User 22');
- $user2->method('getSystemEMailAddress')->willReturn('user2@foo.bar123');
+ $user3->method('getDisplayName')->willReturn('User 22');
+ $user3->method('getSystemEMailAddress')->willReturn('user2@foo.bar123');
$user4 = $this->createMock(IUser::class);
$user4->method('getUID')->willReturn('user4');
- $user2->method('getDisplayName')->willReturn('User 222');
- $user2->method('getSystemEMailAddress')->willReturn('user2@foo.bar456');
+ $user4->method('getDisplayName')->willReturn('User 222');
+ $user4->method('getSystemEMailAddress')->willReturn('user2@foo.bar456');
$this->userManager->expects($this->at(0))
->method('searchDisplayName')
diff --git a/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php b/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php
index 3e6886964c9..fdbb69e6c0d 100644
--- a/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php
+++ b/apps/dav/tests/unit/Controller/InvitationResponseControllerTest.php
@@ -37,14 +37,12 @@ use OCP\AppFramework\Utility\ITimeFactory;
use OCP\DB\IResult;
use OCP\DB\QueryBuilder\IExpressionBuilder;
use OCP\DB\QueryBuilder\IQueryBuilder;
-use OCP\DB\QueryBuilder\IQueryFunction;
use OCP\IDBConnection;
use OCP\IRequest;
use Sabre\VObject\ITip\Message;
use Test\TestCase;
class InvitationResponseControllerTest extends TestCase {
-
/** @var InvitationResponseController */
private $controller;
@@ -478,7 +476,7 @@ EOF;
->with(\PDO::FETCH_ASSOC)
->willReturn($return);
- $function = $this->createMock(IQueryFunction::class);
+ $function = 'functionToken';
$expr->expects($this->once())
->method('eq')
->with('token', 'namedParameterToken')