summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.drone.yml42
-rw-r--r--.github/CODEOWNERS2
m---------3rdparty0
-rw-r--r--apps/comments/src/services/GetComments.js14
-rw-r--r--apps/comments/src/services/NewComment.js8
-rw-r--r--apps/comments/src/utils/decodeHtmlEntities.js34
-rw-r--r--apps/dav/l10n/el.js1
-rw-r--r--apps/dav/l10n/el.json1
-rw-r--r--apps/federatedfilesharing/l10n/lt_LT.js2
-rw-r--r--apps/federatedfilesharing/l10n/lt_LT.json2
-rw-r--r--apps/files/l10n/hu.js2
-rw-r--r--apps/files/l10n/hu.json2
-rw-r--r--apps/files/l10n/lv.js1
-rw-r--r--apps/files/l10n/lv.json1
-rw-r--r--apps/files_trashbin/l10n/lt_LT.js5
-rw-r--r--apps/files_trashbin/l10n/lt_LT.json5
-rw-r--r--apps/settings/appinfo/info.xml1
-rw-r--r--apps/settings/composer/composer/autoload_classmap.php1
-rw-r--r--apps/settings/composer/composer/autoload_static.php1
-rw-r--r--apps/settings/l10n/af.js1
-rw-r--r--apps/settings/l10n/af.json1
-rw-r--r--apps/settings/l10n/ar.js1
-rw-r--r--apps/settings/l10n/ar.json1
-rw-r--r--apps/settings/l10n/ast.js1
-rw-r--r--apps/settings/l10n/ast.json1
-rw-r--r--apps/settings/l10n/bg.js1
-rw-r--r--apps/settings/l10n/bg.json1
-rw-r--r--apps/settings/l10n/br.js1
-rw-r--r--apps/settings/l10n/br.json1
-rw-r--r--apps/settings/l10n/ca.js1
-rw-r--r--apps/settings/l10n/ca.json1
-rw-r--r--apps/settings/l10n/cs.js1
-rw-r--r--apps/settings/l10n/cs.json1
-rw-r--r--apps/settings/l10n/da.js1
-rw-r--r--apps/settings/l10n/da.json1
-rw-r--r--apps/settings/l10n/de.js1
-rw-r--r--apps/settings/l10n/de.json1
-rw-r--r--apps/settings/l10n/de_DE.js1
-rw-r--r--apps/settings/l10n/de_DE.json1
-rw-r--r--apps/settings/l10n/el.js1
-rw-r--r--apps/settings/l10n/el.json1
-rw-r--r--apps/settings/l10n/en_GB.js1
-rw-r--r--apps/settings/l10n/en_GB.json1
-rw-r--r--apps/settings/l10n/eo.js1
-rw-r--r--apps/settings/l10n/eo.json1
-rw-r--r--apps/settings/l10n/es.js1
-rw-r--r--apps/settings/l10n/es.json1
-rw-r--r--apps/settings/l10n/es_419.js1
-rw-r--r--apps/settings/l10n/es_419.json1
-rw-r--r--apps/settings/l10n/es_AR.js1
-rw-r--r--apps/settings/l10n/es_AR.json1
-rw-r--r--apps/settings/l10n/es_CL.js1
-rw-r--r--apps/settings/l10n/es_CL.json1
-rw-r--r--apps/settings/l10n/es_CO.js1
-rw-r--r--apps/settings/l10n/es_CO.json1
-rw-r--r--apps/settings/l10n/es_CR.js1
-rw-r--r--apps/settings/l10n/es_CR.json1
-rw-r--r--apps/settings/l10n/es_DO.js1
-rw-r--r--apps/settings/l10n/es_DO.json1
-rw-r--r--apps/settings/l10n/es_EC.js1
-rw-r--r--apps/settings/l10n/es_EC.json1
-rw-r--r--apps/settings/l10n/es_GT.js1
-rw-r--r--apps/settings/l10n/es_GT.json1
-rw-r--r--apps/settings/l10n/es_HN.js1
-rw-r--r--apps/settings/l10n/es_HN.json1
-rw-r--r--apps/settings/l10n/es_MX.js1
-rw-r--r--apps/settings/l10n/es_MX.json1
-rw-r--r--apps/settings/l10n/es_NI.js1
-rw-r--r--apps/settings/l10n/es_NI.json1
-rw-r--r--apps/settings/l10n/es_PA.js1
-rw-r--r--apps/settings/l10n/es_PA.json1
-rw-r--r--apps/settings/l10n/es_PE.js1
-rw-r--r--apps/settings/l10n/es_PE.json1
-rw-r--r--apps/settings/l10n/es_PR.js1
-rw-r--r--apps/settings/l10n/es_PR.json1
-rw-r--r--apps/settings/l10n/es_PY.js1
-rw-r--r--apps/settings/l10n/es_PY.json1
-rw-r--r--apps/settings/l10n/es_SV.js1
-rw-r--r--apps/settings/l10n/es_SV.json1
-rw-r--r--apps/settings/l10n/es_UY.js1
-rw-r--r--apps/settings/l10n/es_UY.json1
-rw-r--r--apps/settings/l10n/et_EE.js1
-rw-r--r--apps/settings/l10n/et_EE.json1
-rw-r--r--apps/settings/l10n/eu.js1
-rw-r--r--apps/settings/l10n/eu.json1
-rw-r--r--apps/settings/l10n/fa.js1
-rw-r--r--apps/settings/l10n/fa.json1
-rw-r--r--apps/settings/l10n/fi.js1
-rw-r--r--apps/settings/l10n/fi.json1
-rw-r--r--apps/settings/l10n/fr.js2
-rw-r--r--apps/settings/l10n/fr.json2
-rw-r--r--apps/settings/l10n/gl.js1
-rw-r--r--apps/settings/l10n/gl.json1
-rw-r--r--apps/settings/l10n/he.js1
-rw-r--r--apps/settings/l10n/he.json1
-rw-r--r--apps/settings/l10n/hr.js1
-rw-r--r--apps/settings/l10n/hr.json1
-rw-r--r--apps/settings/l10n/hu.js1
-rw-r--r--apps/settings/l10n/hu.json1
-rw-r--r--apps/settings/l10n/ia.js1
-rw-r--r--apps/settings/l10n/ia.json1
-rw-r--r--apps/settings/l10n/id.js1
-rw-r--r--apps/settings/l10n/id.json1
-rw-r--r--apps/settings/l10n/is.js1
-rw-r--r--apps/settings/l10n/is.json1
-rw-r--r--apps/settings/l10n/it.js1
-rw-r--r--apps/settings/l10n/it.json1
-rw-r--r--apps/settings/l10n/ja.js12
-rw-r--r--apps/settings/l10n/ja.json12
-rw-r--r--apps/settings/l10n/ka_GE.js1
-rw-r--r--apps/settings/l10n/ka_GE.json1
-rw-r--r--apps/settings/l10n/ko.js1
-rw-r--r--apps/settings/l10n/ko.json1
-rw-r--r--apps/settings/l10n/lt_LT.js1
-rw-r--r--apps/settings/l10n/lt_LT.json1
-rw-r--r--apps/settings/l10n/lv.js6
-rw-r--r--apps/settings/l10n/lv.json6
-rw-r--r--apps/settings/l10n/mk.js1
-rw-r--r--apps/settings/l10n/mk.json1
-rw-r--r--apps/settings/l10n/nb.js1
-rw-r--r--apps/settings/l10n/nb.json1
-rw-r--r--apps/settings/l10n/nl.js1
-rw-r--r--apps/settings/l10n/nl.json1
-rw-r--r--apps/settings/l10n/nn_NO.js1
-rw-r--r--apps/settings/l10n/nn_NO.json1
-rw-r--r--apps/settings/l10n/oc.js1
-rw-r--r--apps/settings/l10n/oc.json1
-rw-r--r--apps/settings/l10n/pl.js1
-rw-r--r--apps/settings/l10n/pl.json1
-rw-r--r--apps/settings/l10n/pt_BR.js1
-rw-r--r--apps/settings/l10n/pt_BR.json1
-rw-r--r--apps/settings/l10n/pt_PT.js1
-rw-r--r--apps/settings/l10n/pt_PT.json1
-rw-r--r--apps/settings/l10n/ro.js1
-rw-r--r--apps/settings/l10n/ro.json1
-rw-r--r--apps/settings/l10n/ru.js1
-rw-r--r--apps/settings/l10n/ru.json1
-rw-r--r--apps/settings/l10n/sc.js1
-rw-r--r--apps/settings/l10n/sc.json1
-rw-r--r--apps/settings/l10n/sk.js1
-rw-r--r--apps/settings/l10n/sk.json1
-rw-r--r--apps/settings/l10n/sl.js1
-rw-r--r--apps/settings/l10n/sl.json1
-rw-r--r--apps/settings/l10n/sq.js1
-rw-r--r--apps/settings/l10n/sq.json1
-rw-r--r--apps/settings/l10n/sr.js1
-rw-r--r--apps/settings/l10n/sr.json1
-rw-r--r--apps/settings/l10n/sv.js1
-rw-r--r--apps/settings/l10n/sv.json1
-rw-r--r--apps/settings/l10n/th.js1
-rw-r--r--apps/settings/l10n/th.json1
-rw-r--r--apps/settings/l10n/tr.js1
-rw-r--r--apps/settings/l10n/tr.json1
-rw-r--r--apps/settings/l10n/uk.js1
-rw-r--r--apps/settings/l10n/uk.json1
-rw-r--r--apps/settings/l10n/vi.js1
-rw-r--r--apps/settings/l10n/vi.json1
-rw-r--r--apps/settings/l10n/zh_CN.js1
-rw-r--r--apps/settings/l10n/zh_CN.json1
-rw-r--r--apps/settings/l10n/zh_HK.js1
-rw-r--r--apps/settings/l10n/zh_HK.json1
-rw-r--r--apps/settings/l10n/zh_TW.js1
-rw-r--r--apps/settings/l10n/zh_TW.json1
-rw-r--r--apps/settings/lib/Controller/CheckSetupController.php1
-rw-r--r--apps/settings/lib/Sections/Personal/Calendar.php55
-rw-r--r--apps/theming/l10n/de.js22
-rw-r--r--apps/theming/l10n/de.json22
-rw-r--r--apps/theming/l10n/el.js15
-rw-r--r--apps/theming/l10n/el.json15
-rw-r--r--apps/theming/l10n/hu.js14
-rw-r--r--apps/theming/l10n/hu.json14
-rw-r--r--apps/theming/l10n/ja.js31
-rw-r--r--apps/theming/l10n/ja.json31
-rw-r--r--apps/user_ldap/l10n/es.js2
-rw-r--r--apps/user_ldap/l10n/es.json2
-rw-r--r--apps/user_ldap/l10n/lv.js2
-rw-r--r--apps/user_ldap/l10n/lv.json2
-rw-r--r--apps/user_ldap/lib/AppInfo/Application.php27
-rw-r--r--apps/user_status/l10n/lt_LT.js1
-rw-r--r--apps/user_status/l10n/lt_LT.json1
-rw-r--r--core/Command/App/ListApps.php2
-rw-r--r--core/l10n/cs.js1
-rw-r--r--core/l10n/cs.json1
-rw-r--r--core/l10n/de_DE.js1
-rw-r--r--core/l10n/de_DE.json1
-rw-r--r--core/l10n/es.js1
-rw-r--r--core/l10n/es.json1
-rw-r--r--core/l10n/fr.js4
-rw-r--r--core/l10n/fr.json4
-rw-r--r--core/l10n/hu.js8
-rw-r--r--core/l10n/hu.json8
-rw-r--r--core/l10n/lv.js1
-rw-r--r--core/l10n/lv.json1
-rw-r--r--core/l10n/pl.js1
-rw-r--r--core/l10n/pl.json1
-rw-r--r--core/l10n/tr.js1
-rw-r--r--core/l10n/tr.json1
-rw-r--r--core/l10n/zh_HK.js1
-rw-r--r--core/l10n/zh_HK.json1
-rw-r--r--core/l10n/zh_TW.js1
-rw-r--r--core/l10n/zh_TW.json1
-rw-r--r--dist/comments-comments-app.js4
-rw-r--r--dist/comments-comments-app.js.LICENSE.txt22
-rw-r--r--dist/comments-comments-app.js.map2
-rw-r--r--lib/l10n/bg.js4
-rw-r--r--lib/l10n/bg.json4
-rw-r--r--lib/l10n/cs.js5
-rw-r--r--lib/l10n/cs.json5
-rw-r--r--lib/l10n/da.js4
-rw-r--r--lib/l10n/da.json4
-rw-r--r--lib/l10n/de.js4
-rw-r--r--lib/l10n/de.json4
-rw-r--r--lib/l10n/de_DE.js5
-rw-r--r--lib/l10n/de_DE.json5
-rw-r--r--lib/l10n/es.js4
-rw-r--r--lib/l10n/es.json4
-rw-r--r--lib/l10n/fr.js4
-rw-r--r--lib/l10n/fr.json4
-rw-r--r--lib/l10n/hu.js11
-rw-r--r--lib/l10n/hu.json11
-rw-r--r--lib/l10n/ja.js4
-rw-r--r--lib/l10n/ja.json4
-rw-r--r--lib/l10n/lv.js6
-rw-r--r--lib/l10n/lv.json6
-rw-r--r--lib/l10n/pl.js4
-rw-r--r--lib/l10n/pl.json4
-rw-r--r--lib/l10n/pt_BR.js4
-rw-r--r--lib/l10n/pt_BR.json4
-rw-r--r--lib/l10n/sk.js4
-rw-r--r--lib/l10n/sk.json4
-rw-r--r--lib/l10n/tr.js5
-rw-r--r--lib/l10n/tr.json5
-rw-r--r--lib/l10n/zh_CN.js4
-rw-r--r--lib/l10n/zh_CN.json4
-rw-r--r--lib/l10n/zh_HK.js5
-rw-r--r--lib/l10n/zh_HK.json5
-rw-r--r--lib/l10n/zh_TW.js4
-rw-r--r--lib/l10n/zh_TW.json4
-rw-r--r--lib/private/AppConfig.php4
-rw-r--r--lib/private/Files/Node/Folder.php15
-rw-r--r--lib/private/Files/Node/Node.php6
-rw-r--r--lib/private/Preview/Imaginary.php18
-rw-r--r--lib/private/Setup/PostgreSQL.php11
-rw-r--r--lib/private/Support/Subscription/Assertion.php2
-rw-r--r--lib/private/SystemConfig.php4
-rw-r--r--resources/codesigning/root.crl69
-rwxr-xr-xtests/drone-run-integration-tests.sh2
-rw-r--r--tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php6
248 files changed, 773 insertions, 156 deletions
diff --git a/.drone.yml b/.drone.yml
index 79cd295210e..a782e84b169 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -455,7 +455,7 @@ services:
image: ghcr.io/nextcloud/continuous-integration-postgres-10:postgres-10
environment:
POSTGRES_USER: oc_autotest
- POSTGRES_DB: oc_autotest_dummy
+ POSTGRES_DB: oc_autotest
POSTGRES_PASSWORD: owncloud
tmpfs:
- /var/lib/postgresql/data
@@ -491,7 +491,7 @@ services:
image: ghcr.io/nextcloud/continuous-integration-postgres-11:postgres-11
environment:
POSTGRES_USER: oc_autotest
- POSTGRES_DB: oc_autotest_dummy
+ POSTGRES_DB: oc_autotest
POSTGRES_PASSWORD: owncloud
tmpfs:
- /var/lib/postgresql/data
@@ -527,7 +527,43 @@ services:
image: ghcr.io/nextcloud/continuous-integration-postgres-13:postgres-13
environment:
POSTGRES_USER: oc_autotest
- POSTGRES_DB: oc_autotest_dummy
+ POSTGRES_DB: oc_autotest
+ POSTGRES_PASSWORD: owncloud
+ tmpfs:
+ - /var/lib/postgresql/data
+
+trigger:
+ branch:
+ - master
+ - stable*
+ event:
+ - pull_request
+ - push
+
+---
+kind: pipeline
+name: postgres15-php8.0
+
+steps:
+- name: submodules
+ image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
+ commands:
+ - git submodule update --init
+- name: postgres-php8.0
+ image: ghcr.io/nextcloud/continuous-integration-php8.0:latest
+ commands:
+ - bash tests/drone-run-php-tests.sh || exit 0
+ - sleep 10 # gives the database enough time to initialize
+ - POSTGRES=15 NOCOVERAGE=true TEST_SELECTION=DB ./autotest.sh pgsql
+
+services:
+- name: cache
+ image: ghcr.io/nextcloud/continuous-integration-redis:latest
+- name: postgres-15
+ image: ghcr.io/nextcloud/continuous-integration-postgres-15:latest
+ environment:
+ POSTGRES_USER: oc_autotest
+ POSTGRES_DB: oc_autotest
POSTGRES_PASSWORD: owncloud
tmpfs:
- /var/lib/postgresql/data
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 7b32b340f53..5c24b8e1d15 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -16,4 +16,4 @@
/lib/public/Profiler @CarlSchwan
# Security team
-resources/config/ca-bundle.crt @ChristophWurst @eneiluj @miaulalala @nickvergessen
+resources/config/ca-bundle.crt @ChristophWurst @julien-nc @miaulalala @nickvergessen
diff --git a/3rdparty b/3rdparty
-Subproject c1fe9577fcc7006273d35848598df01eaa708b4
+Subproject 02ba5bba999b61d40c79a6ed56683b69edf6661
diff --git a/apps/comments/src/services/GetComments.js b/apps/comments/src/services/GetComments.js
index 7dffa969a69..bf3dd31b5f1 100644
--- a/apps/comments/src/services/GetComments.js
+++ b/apps/comments/src/services/GetComments.js
@@ -22,6 +22,7 @@
import { parseXML, prepareFileFromProps } from 'webdav/dist/node/tools/dav'
import { processResponsePayload } from 'webdav/dist/node/response'
+import { decodeHtmlEntities } from '../utils/decodeHtmlEntities'
import client from './DavClient'
export const DEFAULT_LIMIT = 20
@@ -89,16 +90,3 @@ function processMultistatus(result, isDetailed = false) {
return prepareFileFromProps(decodedProps, decodedProps.id.toString(), isDetailed)
})
}
-
-/**
- * @param {any} value -
- * @param {any} passes -
- */
-function decodeHtmlEntities(value, passes = 1) {
- const parser = new DOMParser()
- let decoded = value
- for (let i = 0; i < passes; i++) {
- decoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent
- }
- return decoded
-}
diff --git a/apps/comments/src/services/NewComment.js b/apps/comments/src/services/NewComment.js
index eaf08cc10b9..27d227ed656 100644
--- a/apps/comments/src/services/NewComment.js
+++ b/apps/comments/src/services/NewComment.js
@@ -22,6 +22,7 @@
import { getCurrentUser } from '@nextcloud/auth'
import { getRootPath } from '../utils/davUtils'
+import { decodeHtmlEntities } from '../utils/decodeHtmlEntities'
import axios from '@nextcloud/axios'
import client from './DavClient'
@@ -55,5 +56,12 @@ export default async function(commentsType, ressourceId, message) {
details: true,
})
+ const props = comment.data.props
+ // Decode twice to handle potentially double-encoded entities
+ // FIXME Remove this once https://github.com/nextcloud/server/issues/29306
+ // is resolved
+ props.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)
+ props.message = decodeHtmlEntities(props.message, 2)
+
return comment.data
}
diff --git a/apps/comments/src/utils/decodeHtmlEntities.js b/apps/comments/src/utils/decodeHtmlEntities.js
new file mode 100644
index 00000000000..60c08163faa
--- /dev/null
+++ b/apps/comments/src/utils/decodeHtmlEntities.js
@@ -0,0 +1,34 @@
+/**
+ * @copyright Copyright (c) 2021 Christopher Ng <chrng8@gmail.com>
+ *
+ * @author Christopher Ng <chrng8@gmail.com>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * @param {any} value -
+ * @param {any} passes -
+ */
+export function decodeHtmlEntities(value, passes = 1) {
+ const parser = new DOMParser()
+ let decoded = value
+ for (let i = 0; i < passes; i++) {
+ decoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent
+ }
+ return decoded
+}
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/federatedfilesharing/l10n/lt_LT.js b/apps/federatedfilesharing/l10n/lt_LT.js
index e5050c9b4e9..e2ec19fb177 100644
--- a/apps/federatedfilesharing/l10n/lt_LT.js
+++ b/apps/federatedfilesharing/l10n/lt_LT.js
@@ -34,9 +34,11 @@ OC.L10N.register(
"Federated Cloud" : "Federacinė debesija",
"Your Federated Cloud ID:" : "Jūsų federacinės debesijos ID:",
"Share it so your friends can share files with you:" : "Pasidalinkite juo, kad jūsų draugai galėtų bendrinti failus kartu su jumis:",
+ "Facebook" : "„Facebook“",
"Twitter" : "Twitter",
"HTML Code:" : "HTML kodas:",
"Copy to clipboard" : "Kopijuoti į iškarpinę",
+ "Clipboard is not available" : "Iškarpinė neprieinama",
"Copy" : "Kopijuoti",
"Copied!" : "Nukopijuota!",
"Not supported!" : "Nepalaikoma!",
diff --git a/apps/federatedfilesharing/l10n/lt_LT.json b/apps/federatedfilesharing/l10n/lt_LT.json
index 6c1c6bb2c69..133dbe78e9a 100644
--- a/apps/federatedfilesharing/l10n/lt_LT.json
+++ b/apps/federatedfilesharing/l10n/lt_LT.json
@@ -32,9 +32,11 @@
"Federated Cloud" : "Federacinė debesija",
"Your Federated Cloud ID:" : "Jūsų federacinės debesijos ID:",
"Share it so your friends can share files with you:" : "Pasidalinkite juo, kad jūsų draugai galėtų bendrinti failus kartu su jumis:",
+ "Facebook" : "„Facebook“",
"Twitter" : "Twitter",
"HTML Code:" : "HTML kodas:",
"Copy to clipboard" : "Kopijuoti į iškarpinę",
+ "Clipboard is not available" : "Iškarpinė neprieinama",
"Copy" : "Kopijuoti",
"Copied!" : "Nukopijuota!",
"Not supported!" : "Nepalaikoma!",
diff --git a/apps/files/l10n/hu.js b/apps/files/l10n/hu.js
index c789732c6dd..e5df8f243a7 100644
--- a/apps/files/l10n/hu.js
+++ b/apps/files/l10n/hu.js
@@ -36,6 +36,7 @@ OC.L10N.register(
"Move" : "Áthelyezés",
"Copy" : "Másolás",
"Choose target folder" : "Válasszon célmappát",
+ "Edit locally" : "Szerkesztés helyileg",
"Open" : "Megnyitás",
"Delete file" : "Fájl törlése",
"Delete folder" : "Mappa törlése",
@@ -59,6 +60,7 @@ OC.L10N.register(
"Could not copy \"{file}\"" : "A(z) „{file}” másolása sikertelen",
"Copied {origin} inside {destination}" : "A(z) {origin} átmásolva ide: {destination}",
"Copied {origin} and {nbfiles} other files inside {destination}" : "A(z) {origin} és {nbfiles} egyéb fájl átmásolva ide: {destination}",
+ "Failed to redirect to client" : "Nem sikerült az átirányítás a klienshez",
"{newName} already exists" : "A(z) {newName} már létezik",
"Could not rename \"{fileName}\", it does not exist any more" : "A(z) „{fileName}” átnevetése sikertelen, mert már nem létezik",
"The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "A(z) „{targetName}” név már használatban van a(z) „{dir}” mappában. Válasszon másik nevet.",
diff --git a/apps/files/l10n/hu.json b/apps/files/l10n/hu.json
index d5ee44d901e..1e03c773ff4 100644
--- a/apps/files/l10n/hu.json
+++ b/apps/files/l10n/hu.json
@@ -34,6 +34,7 @@
"Move" : "Áthelyezés",
"Copy" : "Másolás",
"Choose target folder" : "Válasszon célmappát",
+ "Edit locally" : "Szerkesztés helyileg",
"Open" : "Megnyitás",
"Delete file" : "Fájl törlése",
"Delete folder" : "Mappa törlése",
@@ -57,6 +58,7 @@
"Could not copy \"{file}\"" : "A(z) „{file}” másolása sikertelen",
"Copied {origin} inside {destination}" : "A(z) {origin} átmásolva ide: {destination}",
"Copied {origin} and {nbfiles} other files inside {destination}" : "A(z) {origin} és {nbfiles} egyéb fájl átmásolva ide: {destination}",
+ "Failed to redirect to client" : "Nem sikerült az átirányítás a klienshez",
"{newName} already exists" : "A(z) {newName} már létezik",
"Could not rename \"{fileName}\", it does not exist any more" : "A(z) „{fileName}” átnevetése sikertelen, mert már nem létezik",
"The name \"{targetName}\" is already used in the folder \"{dir}\". Please choose a different name." : "A(z) „{targetName}” név már használatban van a(z) „{dir}” mappában. Válasszon másik nevet.",
diff --git a/apps/files/l10n/lv.js b/apps/files/l10n/lv.js
index ca2d2815241..9e0e091ca27 100644
--- a/apps/files/l10n/lv.js
+++ b/apps/files/l10n/lv.js
@@ -113,6 +113,7 @@ OC.L10N.register(
"Create" : "Izveidot",
"%s used" : "%s izmantoti",
"%1$s of %2$s used" : "%1$s no %2$s lietoti",
+ "Files settings" : "Failu iestatījumi",
"Show hidden files" : "Rādīt slēptās datnes",
"Crop image previews" : "Apgriezt attēlu priekšskatījumus",
"WebDAV" : "WebDAV",
diff --git a/apps/files/l10n/lv.json b/apps/files/l10n/lv.json
index 9d50d79cb23..6ac7a616517 100644
--- a/apps/files/l10n/lv.json
+++ b/apps/files/l10n/lv.json
@@ -111,6 +111,7 @@
"Create" : "Izveidot",
"%s used" : "%s izmantoti",
"%1$s of %2$s used" : "%1$s no %2$s lietoti",
+ "Files settings" : "Failu iestatījumi",
"Show hidden files" : "Rādīt slēptās datnes",
"Crop image previews" : "Apgriezt attēlu priekšskatījumus",
"WebDAV" : "WebDAV",
diff --git a/apps/files_trashbin/l10n/lt_LT.js b/apps/files_trashbin/l10n/lt_LT.js
index d2c2b7ecdd3..e0a8af94243 100644
--- a/apps/files_trashbin/l10n/lt_LT.js
+++ b/apps/files_trashbin/l10n/lt_LT.js
@@ -7,6 +7,11 @@ OC.L10N.register(
"This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Ši programa leidžia vartotojams atkurti iš sistemos ištrintus failus. Ištrintų failų sąrašas yra gali būti atvaizduojamas žiniatinklyje ir turi nustatymus atkurti ištrintus failus vartotojų failų kataloguose arba visam laikui pašalinti juos iš sistemos. Atkūrus failą, kartu atkuriamos ir failo versijos, jei yra įjungta versijavimo programa. Ištrynus failą iš bendrinimo, jį taip pat galima atkurti , nors jis nebebendrinamas. Pagal numatytuosius nustatymus ištrinti failai lieka šiukšliadėžėje 30 dienų.\nKad naudotojai nepritrūktų vietos diske, programa „Ištrinti failai“ negali naudoti daugiau kaip 50% šiuo metu turimų nemokamų panaikintų failų kvotų. Jei numatyta riba yra viršijama, programa atrenka seniausius failus ir juos ištrina, kad užimata vieta neviršytų numatytosios ribos. Daugiau informacijos galite rasti ištrintų failų dokumentuose.",
"Restore" : "Atkurti",
"Delete permanently" : "Ištrinti negrįžtamai",
+ "Error while restoring file from trash bin" : "Klaida atkuriant failą iš šiukšlinės",
+ "Error while removing file from trash bin" : "Klaida šalinant failą iš šiukšlinės",
+ "Error while restoring files from trash bin" : "Klaida atkuriant failus iš šiukšlinės",
+ "Error while emptying trash bin" : "Klaida išvalant šiukšlinę",
+ "Error while removing files from trash bin" : "Klaida šalinant failus iš šiukšlinės",
"This operation is forbidden" : "Ši operacija yra uždrausta",
"This directory is unavailable, please check the logs or contact the administrator" : "Šis katalogas neprieinamas, peržiūrėkite žurnalo įrašus arba susisiekite su administratoriumi",
"No deleted files" : "Jokių ištrintų failų",
diff --git a/apps/files_trashbin/l10n/lt_LT.json b/apps/files_trashbin/l10n/lt_LT.json
index 8b426106450..8cfa67e7f4c 100644
--- a/apps/files_trashbin/l10n/lt_LT.json
+++ b/apps/files_trashbin/l10n/lt_LT.json
@@ -5,6 +5,11 @@
"This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Ši programa leidžia vartotojams atkurti iš sistemos ištrintus failus. Ištrintų failų sąrašas yra gali būti atvaizduojamas žiniatinklyje ir turi nustatymus atkurti ištrintus failus vartotojų failų kataloguose arba visam laikui pašalinti juos iš sistemos. Atkūrus failą, kartu atkuriamos ir failo versijos, jei yra įjungta versijavimo programa. Ištrynus failą iš bendrinimo, jį taip pat galima atkurti , nors jis nebebendrinamas. Pagal numatytuosius nustatymus ištrinti failai lieka šiukšliadėžėje 30 dienų.\nKad naudotojai nepritrūktų vietos diske, programa „Ištrinti failai“ negali naudoti daugiau kaip 50% šiuo metu turimų nemokamų panaikintų failų kvotų. Jei numatyta riba yra viršijama, programa atrenka seniausius failus ir juos ištrina, kad užimata vieta neviršytų numatytosios ribos. Daugiau informacijos galite rasti ištrintų failų dokumentuose.",
"Restore" : "Atkurti",
"Delete permanently" : "Ištrinti negrįžtamai",
+ "Error while restoring file from trash bin" : "Klaida atkuriant failą iš šiukšlinės",
+ "Error while removing file from trash bin" : "Klaida šalinant failą iš šiukšlinės",
+ "Error while restoring files from trash bin" : "Klaida atkuriant failus iš šiukšlinės",
+ "Error while emptying trash bin" : "Klaida išvalant šiukšlinę",
+ "Error while removing files from trash bin" : "Klaida šalinant failus iš šiukšlinės",
"This operation is forbidden" : "Ši operacija yra uždrausta",
"This directory is unavailable, please check the logs or contact the administrator" : "Šis katalogas neprieinamas, peržiūrėkite žurnalo įrašus arba susisiekite su administratoriumi",
"No deleted files" : "Jokių ištrintų failų",
diff --git a/apps/settings/appinfo/info.xml b/apps/settings/appinfo/info.xml
index 9cb489ff0f3..310d2902510 100644
--- a/apps/settings/appinfo/info.xml
+++ b/apps/settings/appinfo/info.xml
@@ -38,6 +38,7 @@
<personal>OCA\Settings\Settings\Personal\Security\TwoFactor</personal>
<personal>OCA\Settings\Settings\Personal\Security\WebAuthn</personal>
<personal-section>OCA\Settings\Sections\Personal\Availability</personal-section>
+ <personal-section>OCA\Settings\Sections\Personal\Calendar</personal-section>
<personal-section>OCA\Settings\Sections\Personal\PersonalInfo</personal-section>
<personal-section>OCA\Settings\Sections\Personal\Security</personal-section>
<personal-section>OCA\Settings\Sections\Personal\SyncClients</personal-section>
diff --git a/apps/settings/composer/composer/autoload_classmap.php b/apps/settings/composer/composer/autoload_classmap.php
index f45aae3eb80..32de1ff6d2a 100644
--- a/apps/settings/composer/composer/autoload_classmap.php
+++ b/apps/settings/composer/composer/autoload_classmap.php
@@ -49,6 +49,7 @@ return array(
'OCA\\Settings\\Sections\\Admin\\Server' => $baseDir . '/../lib/Sections/Admin/Server.php',
'OCA\\Settings\\Sections\\Admin\\Sharing' => $baseDir . '/../lib/Sections/Admin/Sharing.php',
'OCA\\Settings\\Sections\\Personal\\Availability' => $baseDir . '/../lib/Sections/Personal/Availability.php',
+ 'OCA\\Settings\\Sections\\Personal\\Calendar' => $baseDir . '/../lib/Sections/Personal/Calendar.php',
'OCA\\Settings\\Sections\\Personal\\PersonalInfo' => $baseDir . '/../lib/Sections/Personal/PersonalInfo.php',
'OCA\\Settings\\Sections\\Personal\\Security' => $baseDir . '/../lib/Sections/Personal/Security.php',
'OCA\\Settings\\Sections\\Personal\\SyncClients' => $baseDir . '/../lib/Sections/Personal/SyncClients.php',
diff --git a/apps/settings/composer/composer/autoload_static.php b/apps/settings/composer/composer/autoload_static.php
index f353d007bb5..57235766a7c 100644
--- a/apps/settings/composer/composer/autoload_static.php
+++ b/apps/settings/composer/composer/autoload_static.php
@@ -64,6 +64,7 @@ class ComposerStaticInitSettings
'OCA\\Settings\\Sections\\Admin\\Server' => __DIR__ . '/..' . '/../lib/Sections/Admin/Server.php',
'OCA\\Settings\\Sections\\Admin\\Sharing' => __DIR__ . '/..' . '/../lib/Sections/Admin/Sharing.php',
'OCA\\Settings\\Sections\\Personal\\Availability' => __DIR__ . '/..' . '/../lib/Sections/Personal/Availability.php',
+ 'OCA\\Settings\\Sections\\Personal\\Calendar' => __DIR__ . '/..' . '/../lib/Sections/Personal/Calendar.php',
'OCA\\Settings\\Sections\\Personal\\PersonalInfo' => __DIR__ . '/..' . '/../lib/Sections/Personal/PersonalInfo.php',
'OCA\\Settings\\Sections\\Personal\\Security' => __DIR__ . '/..' . '/../lib/Sections/Personal/Security.php',
'OCA\\Settings\\Sections\\Personal\\SyncClients' => __DIR__ . '/..' . '/../lib/Sections/Personal/SyncClients.php',
diff --git a/apps/settings/l10n/af.js b/apps/settings/l10n/af.js
index 04a7e5b54a5..6ad4f4d9d02 100644
--- a/apps/settings/l10n/af.js
+++ b/apps/settings/l10n/af.js
@@ -30,6 +30,7 @@ OC.L10N.register(
"Apps" : "Toeps",
"Settings" : "Instellings",
"Personal" : "Persoonlik",
+ "Calendar" : "Kalender",
"Personal info" : "Persoonlike inligting",
"Create" : "Skep",
"Delete" : "Skrap",
diff --git a/apps/settings/l10n/af.json b/apps/settings/l10n/af.json
index 05d87b9c77b..62b5da6f44b 100644
--- a/apps/settings/l10n/af.json
+++ b/apps/settings/l10n/af.json
@@ -28,6 +28,7 @@
"Apps" : "Toeps",
"Settings" : "Instellings",
"Personal" : "Persoonlik",
+ "Calendar" : "Kalender",
"Personal info" : "Persoonlike inligting",
"Create" : "Skep",
"Delete" : "Skrap",
diff --git a/apps/settings/l10n/ar.js b/apps/settings/l10n/ar.js
index 5e33e036ff3..396b67d1001 100644
--- a/apps/settings/l10n/ar.js
+++ b/apps/settings/l10n/ar.js
@@ -55,6 +55,7 @@ OC.L10N.register(
"Overview" : "نظرة شاملة",
"Basic settings" : "الإعدادات الأساسية",
"Sharing" : "مشاركة",
+ "Calendar" : "التقويم",
"Personal info" : "المعلومات الشخصية",
"Mobile & desktop" : "الجوال وسطح المكتب",
"Email server" : "خادوم البريد",
diff --git a/apps/settings/l10n/ar.json b/apps/settings/l10n/ar.json
index 1f9d065fa83..87244e561a2 100644
--- a/apps/settings/l10n/ar.json
+++ b/apps/settings/l10n/ar.json
@@ -53,6 +53,7 @@
"Overview" : "نظرة شاملة",
"Basic settings" : "الإعدادات الأساسية",
"Sharing" : "مشاركة",
+ "Calendar" : "التقويم",
"Personal info" : "المعلومات الشخصية",
"Mobile & desktop" : "الجوال وسطح المكتب",
"Email server" : "خادوم البريد",
diff --git a/apps/settings/l10n/ast.js b/apps/settings/l10n/ast.js
index f105abb015e..af631829434 100644
--- a/apps/settings/l10n/ast.js
+++ b/apps/settings/l10n/ast.js
@@ -63,6 +63,7 @@ OC.L10N.register(
"Additional settings" : "Axustes adicionales",
"Basic settings" : "Axustes básicos",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendariu",
"Personal info" : "Información personal",
"Email server" : "Sirvidor de corréu",
"Security & setup warnings" : "Alvertancies de seguranza y configuración",
diff --git a/apps/settings/l10n/ast.json b/apps/settings/l10n/ast.json
index a03d3539acd..9cbecf003a0 100644
--- a/apps/settings/l10n/ast.json
+++ b/apps/settings/l10n/ast.json
@@ -61,6 +61,7 @@
"Additional settings" : "Axustes adicionales",
"Basic settings" : "Axustes básicos",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendariu",
"Personal info" : "Información personal",
"Email server" : "Sirvidor de corréu",
"Security & setup warnings" : "Alvertancies de seguranza y configuración",
diff --git a/apps/settings/l10n/bg.js b/apps/settings/l10n/bg.js
index 619e4013259..7c39cac4564 100644
--- a/apps/settings/l10n/bg.js
+++ b/apps/settings/l10n/bg.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Основни настройки",
"Sharing" : "Споделяне",
"Availability" : "Наличност",
+ "Calendar" : "Kалендар",
"Personal info" : "Лични данни",
"Mobile & desktop" : "Мобилни и настолни",
"Email server" : "Имейл сървър",
diff --git a/apps/settings/l10n/bg.json b/apps/settings/l10n/bg.json
index 49b21483ca4..72e9d50396c 100644
--- a/apps/settings/l10n/bg.json
+++ b/apps/settings/l10n/bg.json
@@ -120,6 +120,7 @@
"Basic settings" : "Основни настройки",
"Sharing" : "Споделяне",
"Availability" : "Наличност",
+ "Calendar" : "Kалендар",
"Personal info" : "Лични данни",
"Mobile & desktop" : "Мобилни и настолни",
"Email server" : "Имейл сървър",
diff --git a/apps/settings/l10n/br.js b/apps/settings/l10n/br.js
index 997e6f36945..f22b5642370 100644
--- a/apps/settings/l10n/br.js
+++ b/apps/settings/l10n/br.js
@@ -96,6 +96,7 @@ OC.L10N.register(
"Overview" : "Taol-lagad",
"Basic settings" : "Stummoù diazez",
"Sharing" : "Rannan",
+ "Calendar" : "Deiziataer",
"Personal info" : "Titouroù personel",
"Mobile & desktop" : "Hezouk ha burev",
"Email server" : "Servijour postel",
diff --git a/apps/settings/l10n/br.json b/apps/settings/l10n/br.json
index 0fec17df5eb..8adf4b78fe1 100644
--- a/apps/settings/l10n/br.json
+++ b/apps/settings/l10n/br.json
@@ -94,6 +94,7 @@
"Overview" : "Taol-lagad",
"Basic settings" : "Stummoù diazez",
"Sharing" : "Rannan",
+ "Calendar" : "Deiziataer",
"Personal info" : "Titouroù personel",
"Mobile & desktop" : "Hezouk ha burev",
"Email server" : "Servijour postel",
diff --git a/apps/settings/l10n/ca.js b/apps/settings/l10n/ca.js
index 8d9c26edb54..a37f91f05ae 100644
--- a/apps/settings/l10n/ca.js
+++ b/apps/settings/l10n/ca.js
@@ -121,6 +121,7 @@ OC.L10N.register(
"Overview" : "Resum",
"Basic settings" : "Paràmetres bàsics",
"Sharing" : "Compartició",
+ "Calendar" : "Calendari",
"Personal info" : "Informació personal",
"Mobile & desktop" : "Mòbil i escriptori",
"Email server" : "Servidor de correu electrònic",
diff --git a/apps/settings/l10n/ca.json b/apps/settings/l10n/ca.json
index 17abad941fd..e735ec95826 100644
--- a/apps/settings/l10n/ca.json
+++ b/apps/settings/l10n/ca.json
@@ -119,6 +119,7 @@
"Overview" : "Resum",
"Basic settings" : "Paràmetres bàsics",
"Sharing" : "Compartició",
+ "Calendar" : "Calendari",
"Personal info" : "Informació personal",
"Mobile & desktop" : "Mòbil i escriptori",
"Email server" : "Servidor de correu electrònic",
diff --git a/apps/settings/l10n/cs.js b/apps/settings/l10n/cs.js
index 2cdfe95896d..59dc00cc627 100644
--- a/apps/settings/l10n/cs.js
+++ b/apps/settings/l10n/cs.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Základní nastavení",
"Sharing" : "Sdílení",
"Availability" : "Dostupnost",
+ "Calendar" : "Kalendář",
"Personal info" : "Osobní údaje",
"Mobile & desktop" : "Mobilní a desktop",
"Email server" : "E-mailový server",
diff --git a/apps/settings/l10n/cs.json b/apps/settings/l10n/cs.json
index 81d6fd6ca23..04d4955db85 100644
--- a/apps/settings/l10n/cs.json
+++ b/apps/settings/l10n/cs.json
@@ -120,6 +120,7 @@
"Basic settings" : "Základní nastavení",
"Sharing" : "Sdílení",
"Availability" : "Dostupnost",
+ "Calendar" : "Kalendář",
"Personal info" : "Osobní údaje",
"Mobile & desktop" : "Mobilní a desktop",
"Email server" : "E-mailový server",
diff --git a/apps/settings/l10n/da.js b/apps/settings/l10n/da.js
index 0088c1a0bb4..302c99c39ea 100644
--- a/apps/settings/l10n/da.js
+++ b/apps/settings/l10n/da.js
@@ -105,6 +105,7 @@ OC.L10N.register(
"Overview" : "Overblik",
"Basic settings" : "Grundlæggende Indstillinger",
"Sharing" : "Deling",
+ "Calendar" : "Kalender",
"Personal info" : "Personlige oplysninger",
"Mobile & desktop" : "Mobil & desktop",
"Email server" : "E-mailserver",
diff --git a/apps/settings/l10n/da.json b/apps/settings/l10n/da.json
index 35723f375c4..dc9c29967dc 100644
--- a/apps/settings/l10n/da.json
+++ b/apps/settings/l10n/da.json
@@ -103,6 +103,7 @@
"Overview" : "Overblik",
"Basic settings" : "Grundlæggende Indstillinger",
"Sharing" : "Deling",
+ "Calendar" : "Kalender",
"Personal info" : "Personlige oplysninger",
"Mobile & desktop" : "Mobil & desktop",
"Email server" : "E-mailserver",
diff --git a/apps/settings/l10n/de.js b/apps/settings/l10n/de.js
index 12381d4dec2..62f0e061134 100644
--- a/apps/settings/l10n/de.js
+++ b/apps/settings/l10n/de.js
@@ -121,6 +121,7 @@ OC.L10N.register(
"Basic settings" : "Grundeinstellungen",
"Sharing" : "Teilen",
"Availability" : "Verfügbarkeit",
+ "Calendar" : "Kalender",
"Personal info" : "Persönliche Informationen",
"Mobile & desktop" : "Mobil & Desktop",
"Email server" : "E-Mail-Server",
diff --git a/apps/settings/l10n/de.json b/apps/settings/l10n/de.json
index 4c313c13f19..a8941c3f387 100644
--- a/apps/settings/l10n/de.json
+++ b/apps/settings/l10n/de.json
@@ -119,6 +119,7 @@
"Basic settings" : "Grundeinstellungen",
"Sharing" : "Teilen",
"Availability" : "Verfügbarkeit",
+ "Calendar" : "Kalender",
"Personal info" : "Persönliche Informationen",
"Mobile & desktop" : "Mobil & Desktop",
"Email server" : "E-Mail-Server",
diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js
index 8af48884740..4ff035c97a8 100644
--- a/apps/settings/l10n/de_DE.js
+++ b/apps/settings/l10n/de_DE.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Grundeinstellungen",
"Sharing" : "Teilen",
"Availability" : "Verfügbarkeit",
+ "Calendar" : "Kalender",
"Personal info" : "Persönliche Informationen",
"Mobile & desktop" : "Mobil & Desktop",
"Email server" : "E-Mail-Server",
diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json
index c69589557cd..31d56f027b6 100644
--- a/apps/settings/l10n/de_DE.json
+++ b/apps/settings/l10n/de_DE.json
@@ -120,6 +120,7 @@
"Basic settings" : "Grundeinstellungen",
"Sharing" : "Teilen",
"Availability" : "Verfügbarkeit",
+ "Calendar" : "Kalender",
"Personal info" : "Persönliche Informationen",
"Mobile & desktop" : "Mobil & Desktop",
"Email server" : "E-Mail-Server",
diff --git a/apps/settings/l10n/el.js b/apps/settings/l10n/el.js
index 8d489f3993f..a7cab43d86e 100644
--- a/apps/settings/l10n/el.js
+++ b/apps/settings/l10n/el.js
@@ -107,6 +107,7 @@ OC.L10N.register(
"Basic settings" : "Βασικές ρυθμίσεις",
"Sharing" : "Διαμοιρασμός",
"Availability" : "Διαθεσιμότητα",
+ "Calendar" : "Ημερολόγιο",
"Personal info" : "Προσωπικές πληροφορίες",
"Mobile & desktop" : "Κινητό & σταθερό",
"Email server" : "Διακομιστής Email",
diff --git a/apps/settings/l10n/el.json b/apps/settings/l10n/el.json
index 65cd8725179..23a9fd04fe9 100644
--- a/apps/settings/l10n/el.json
+++ b/apps/settings/l10n/el.json
@@ -105,6 +105,7 @@
"Basic settings" : "Βασικές ρυθμίσεις",
"Sharing" : "Διαμοιρασμός",
"Availability" : "Διαθεσιμότητα",
+ "Calendar" : "Ημερολόγιο",
"Personal info" : "Προσωπικές πληροφορίες",
"Mobile & desktop" : "Κινητό & σταθερό",
"Email server" : "Διακομιστής Email",
diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js
index 57aa2c344aa..059f0902796 100644
--- a/apps/settings/l10n/en_GB.js
+++ b/apps/settings/l10n/en_GB.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Overview",
"Basic settings" : "Basic settings",
"Sharing" : "Sharing",
+ "Calendar" : "Calendar",
"Personal info" : "Personal info",
"Mobile & desktop" : "Mobile & desktop",
"Email server" : "Email server",
diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json
index 5f8cbc518a3..04f6c5c8c5d 100644
--- a/apps/settings/l10n/en_GB.json
+++ b/apps/settings/l10n/en_GB.json
@@ -71,6 +71,7 @@
"Overview" : "Overview",
"Basic settings" : "Basic settings",
"Sharing" : "Sharing",
+ "Calendar" : "Calendar",
"Personal info" : "Personal info",
"Mobile & desktop" : "Mobile & desktop",
"Email server" : "Email server",
diff --git a/apps/settings/l10n/eo.js b/apps/settings/l10n/eo.js
index b3203994d5d..ba2054b1010 100644
--- a/apps/settings/l10n/eo.js
+++ b/apps/settings/l10n/eo.js
@@ -93,6 +93,7 @@ OC.L10N.register(
"Overview" : "Superrigardo",
"Basic settings" : "Bazaj agordoj",
"Sharing" : "Kunhavigo",
+ "Calendar" : "Kalendaro",
"Personal info" : "Persona informo",
"Mobile & desktop" : "Porteblaj kaj labortablaj aplikaĵoj",
"Email server" : "Retpoŝtoservilo",
diff --git a/apps/settings/l10n/eo.json b/apps/settings/l10n/eo.json
index 3f9633d00b4..d9f6ad63d47 100644
--- a/apps/settings/l10n/eo.json
+++ b/apps/settings/l10n/eo.json
@@ -91,6 +91,7 @@
"Overview" : "Superrigardo",
"Basic settings" : "Bazaj agordoj",
"Sharing" : "Kunhavigo",
+ "Calendar" : "Kalendaro",
"Personal info" : "Persona informo",
"Mobile & desktop" : "Porteblaj kaj labortablaj aplikaĵoj",
"Email server" : "Retpoŝtoservilo",
diff --git a/apps/settings/l10n/es.js b/apps/settings/l10n/es.js
index af4946bd00d..1bfa0d71a6c 100644
--- a/apps/settings/l10n/es.js
+++ b/apps/settings/l10n/es.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Ajustes básicos",
"Sharing" : "Compartir",
"Availability" : "Disponibilidad",
+ "Calendar" : "Calendario",
"Personal info" : "Información personal",
"Mobile & desktop" : "Móvil y escritorio",
"Email server" : "Servidor de correo electrónico",
diff --git a/apps/settings/l10n/es.json b/apps/settings/l10n/es.json
index 556ac2bc007..8567f8841be 100644
--- a/apps/settings/l10n/es.json
+++ b/apps/settings/l10n/es.json
@@ -120,6 +120,7 @@
"Basic settings" : "Ajustes básicos",
"Sharing" : "Compartir",
"Availability" : "Disponibilidad",
+ "Calendar" : "Calendario",
"Personal info" : "Información personal",
"Mobile & desktop" : "Móvil y escritorio",
"Email server" : "Servidor de correo electrónico",
diff --git a/apps/settings/l10n/es_419.js b/apps/settings/l10n/es_419.js
index c51505b74d6..23e41110342 100644
--- a/apps/settings/l10n/es_419.js
+++ b/apps/settings/l10n/es_419.js
@@ -70,6 +70,7 @@ OC.L10N.register(
"Overview" : "Resumen",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_419.json b/apps/settings/l10n/es_419.json
index a74f8e7ecd7..cde36ba95eb 100644
--- a/apps/settings/l10n/es_419.json
+++ b/apps/settings/l10n/es_419.json
@@ -68,6 +68,7 @@
"Overview" : "Resumen",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_AR.js b/apps/settings/l10n/es_AR.js
index 8bb31e9785e..457c6b0c265 100644
--- a/apps/settings/l10n/es_AR.js
+++ b/apps/settings/l10n/es_AR.js
@@ -67,6 +67,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_AR.json b/apps/settings/l10n/es_AR.json
index d83e46ca2af..d656e835741 100644
--- a/apps/settings/l10n/es_AR.json
+++ b/apps/settings/l10n/es_AR.json
@@ -65,6 +65,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_CL.js b/apps/settings/l10n/es_CL.js
index 5b5d3fa08d8..f6d63a823c0 100644
--- a/apps/settings/l10n/es_CL.js
+++ b/apps/settings/l10n/es_CL.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_CL.json b/apps/settings/l10n/es_CL.json
index d019218c7c6..53bd3f694ea 100644
--- a/apps/settings/l10n/es_CL.json
+++ b/apps/settings/l10n/es_CL.json
@@ -71,6 +71,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_CO.js b/apps/settings/l10n/es_CO.js
index 5b5d3fa08d8..f6d63a823c0 100644
--- a/apps/settings/l10n/es_CO.js
+++ b/apps/settings/l10n/es_CO.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_CO.json b/apps/settings/l10n/es_CO.json
index d019218c7c6..53bd3f694ea 100644
--- a/apps/settings/l10n/es_CO.json
+++ b/apps/settings/l10n/es_CO.json
@@ -71,6 +71,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_CR.js b/apps/settings/l10n/es_CR.js
index 5b5d3fa08d8..f6d63a823c0 100644
--- a/apps/settings/l10n/es_CR.js
+++ b/apps/settings/l10n/es_CR.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_CR.json b/apps/settings/l10n/es_CR.json
index d019218c7c6..53bd3f694ea 100644
--- a/apps/settings/l10n/es_CR.json
+++ b/apps/settings/l10n/es_CR.json
@@ -71,6 +71,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_DO.js b/apps/settings/l10n/es_DO.js
index 5b5d3fa08d8..f6d63a823c0 100644
--- a/apps/settings/l10n/es_DO.js
+++ b/apps/settings/l10n/es_DO.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_DO.json b/apps/settings/l10n/es_DO.json
index d019218c7c6..53bd3f694ea 100644
--- a/apps/settings/l10n/es_DO.json
+++ b/apps/settings/l10n/es_DO.json
@@ -71,6 +71,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_EC.js b/apps/settings/l10n/es_EC.js
index 5b5d3fa08d8..f6d63a823c0 100644
--- a/apps/settings/l10n/es_EC.js
+++ b/apps/settings/l10n/es_EC.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_EC.json b/apps/settings/l10n/es_EC.json
index d019218c7c6..53bd3f694ea 100644
--- a/apps/settings/l10n/es_EC.json
+++ b/apps/settings/l10n/es_EC.json
@@ -71,6 +71,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_GT.js b/apps/settings/l10n/es_GT.js
index 5b5d3fa08d8..f6d63a823c0 100644
--- a/apps/settings/l10n/es_GT.js
+++ b/apps/settings/l10n/es_GT.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_GT.json b/apps/settings/l10n/es_GT.json
index d019218c7c6..53bd3f694ea 100644
--- a/apps/settings/l10n/es_GT.json
+++ b/apps/settings/l10n/es_GT.json
@@ -71,6 +71,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_HN.js b/apps/settings/l10n/es_HN.js
index 2892cc701d9..cd234ab572b 100644
--- a/apps/settings/l10n/es_HN.js
+++ b/apps/settings/l10n/es_HN.js
@@ -69,6 +69,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_HN.json b/apps/settings/l10n/es_HN.json
index d4a070621a7..33aa9fee59b 100644
--- a/apps/settings/l10n/es_HN.json
+++ b/apps/settings/l10n/es_HN.json
@@ -67,6 +67,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_MX.js b/apps/settings/l10n/es_MX.js
index f3beb979556..a66616a4b37 100644
--- a/apps/settings/l10n/es_MX.js
+++ b/apps/settings/l10n/es_MX.js
@@ -83,6 +83,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Mobile & desktop" : "Móvil & escritorio",
"Email server" : "Servidor de correo electrónico",
diff --git a/apps/settings/l10n/es_MX.json b/apps/settings/l10n/es_MX.json
index 1c978c39be6..c559e3f9f73 100644
--- a/apps/settings/l10n/es_MX.json
+++ b/apps/settings/l10n/es_MX.json
@@ -81,6 +81,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Mobile & desktop" : "Móvil & escritorio",
"Email server" : "Servidor de correo electrónico",
diff --git a/apps/settings/l10n/es_NI.js b/apps/settings/l10n/es_NI.js
index 2892cc701d9..cd234ab572b 100644
--- a/apps/settings/l10n/es_NI.js
+++ b/apps/settings/l10n/es_NI.js
@@ -69,6 +69,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_NI.json b/apps/settings/l10n/es_NI.json
index d4a070621a7..33aa9fee59b 100644
--- a/apps/settings/l10n/es_NI.json
+++ b/apps/settings/l10n/es_NI.json
@@ -67,6 +67,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PA.js b/apps/settings/l10n/es_PA.js
index 2892cc701d9..cd234ab572b 100644
--- a/apps/settings/l10n/es_PA.js
+++ b/apps/settings/l10n/es_PA.js
@@ -69,6 +69,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PA.json b/apps/settings/l10n/es_PA.json
index d4a070621a7..33aa9fee59b 100644
--- a/apps/settings/l10n/es_PA.json
+++ b/apps/settings/l10n/es_PA.json
@@ -67,6 +67,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PE.js b/apps/settings/l10n/es_PE.js
index 2892cc701d9..cd234ab572b 100644
--- a/apps/settings/l10n/es_PE.js
+++ b/apps/settings/l10n/es_PE.js
@@ -69,6 +69,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PE.json b/apps/settings/l10n/es_PE.json
index d4a070621a7..33aa9fee59b 100644
--- a/apps/settings/l10n/es_PE.json
+++ b/apps/settings/l10n/es_PE.json
@@ -67,6 +67,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PR.js b/apps/settings/l10n/es_PR.js
index 2892cc701d9..cd234ab572b 100644
--- a/apps/settings/l10n/es_PR.js
+++ b/apps/settings/l10n/es_PR.js
@@ -69,6 +69,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PR.json b/apps/settings/l10n/es_PR.json
index d4a070621a7..33aa9fee59b 100644
--- a/apps/settings/l10n/es_PR.json
+++ b/apps/settings/l10n/es_PR.json
@@ -67,6 +67,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PY.js b/apps/settings/l10n/es_PY.js
index 2892cc701d9..cd234ab572b 100644
--- a/apps/settings/l10n/es_PY.js
+++ b/apps/settings/l10n/es_PY.js
@@ -69,6 +69,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_PY.json b/apps/settings/l10n/es_PY.json
index d4a070621a7..33aa9fee59b 100644
--- a/apps/settings/l10n/es_PY.json
+++ b/apps/settings/l10n/es_PY.json
@@ -67,6 +67,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_SV.js b/apps/settings/l10n/es_SV.js
index 5b5d3fa08d8..f6d63a823c0 100644
--- a/apps/settings/l10n/es_SV.js
+++ b/apps/settings/l10n/es_SV.js
@@ -73,6 +73,7 @@ OC.L10N.register(
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_SV.json b/apps/settings/l10n/es_SV.json
index d019218c7c6..53bd3f694ea 100644
--- a/apps/settings/l10n/es_SV.json
+++ b/apps/settings/l10n/es_SV.json
@@ -71,6 +71,7 @@
"Overview" : "Generalidades",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_UY.js b/apps/settings/l10n/es_UY.js
index 2892cc701d9..cd234ab572b 100644
--- a/apps/settings/l10n/es_UY.js
+++ b/apps/settings/l10n/es_UY.js
@@ -69,6 +69,7 @@ OC.L10N.register(
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/es_UY.json b/apps/settings/l10n/es_UY.json
index d4a070621a7..33aa9fee59b 100644
--- a/apps/settings/l10n/es_UY.json
+++ b/apps/settings/l10n/es_UY.json
@@ -67,6 +67,7 @@
"Additional settings" : "Configuraciones adicionales",
"Basic settings" : "Configuraciones básicas",
"Sharing" : "Compartiendo",
+ "Calendar" : "Calendario",
"Personal info" : "Información Personal",
"Email server" : "Servidor de correo electrónico",
"Security & setup warnings" : "Advertencias de seguridad y configuración",
diff --git a/apps/settings/l10n/et_EE.js b/apps/settings/l10n/et_EE.js
index 1fbc4ec3b7f..2324c479e8a 100644
--- a/apps/settings/l10n/et_EE.js
+++ b/apps/settings/l10n/et_EE.js
@@ -71,6 +71,7 @@ OC.L10N.register(
"Overview" : "Ülevaade",
"Basic settings" : "Põhiseaded",
"Sharing" : "Jagamine",
+ "Calendar" : "Kalender",
"Personal info" : "Isiklik info",
"Mobile & desktop" : "Mobiil ja töölaud",
"Email server" : "E-kirjade server",
diff --git a/apps/settings/l10n/et_EE.json b/apps/settings/l10n/et_EE.json
index d3b1816fc65..6c8b428b59f 100644
--- a/apps/settings/l10n/et_EE.json
+++ b/apps/settings/l10n/et_EE.json
@@ -69,6 +69,7 @@
"Overview" : "Ülevaade",
"Basic settings" : "Põhiseaded",
"Sharing" : "Jagamine",
+ "Calendar" : "Kalender",
"Personal info" : "Isiklik info",
"Mobile & desktop" : "Mobiil ja töölaud",
"Email server" : "E-kirjade server",
diff --git a/apps/settings/l10n/eu.js b/apps/settings/l10n/eu.js
index 5142bd95948..bdc24763336 100644
--- a/apps/settings/l10n/eu.js
+++ b/apps/settings/l10n/eu.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Oinarrizko ezarpenak",
"Sharing" : "Partekatzea",
"Availability" : "Eskuragarritasuna",
+ "Calendar" : "Egutegia",
"Personal info" : "Informazio pertsonala",
"Mobile & desktop" : "Mugikorra eta mahaigaina",
"Email server" : "E-posta zerbitzaria",
diff --git a/apps/settings/l10n/eu.json b/apps/settings/l10n/eu.json
index 2571ec02cc0..ba4ff989f8f 100644
--- a/apps/settings/l10n/eu.json
+++ b/apps/settings/l10n/eu.json
@@ -120,6 +120,7 @@
"Basic settings" : "Oinarrizko ezarpenak",
"Sharing" : "Partekatzea",
"Availability" : "Eskuragarritasuna",
+ "Calendar" : "Egutegia",
"Personal info" : "Informazio pertsonala",
"Mobile & desktop" : "Mugikorra eta mahaigaina",
"Email server" : "E-posta zerbitzaria",
diff --git a/apps/settings/l10n/fa.js b/apps/settings/l10n/fa.js
index 612b7874a96..515dd4a7b4a 100644
--- a/apps/settings/l10n/fa.js
+++ b/apps/settings/l10n/fa.js
@@ -105,6 +105,7 @@ OC.L10N.register(
"Overview" : "بررسی اجمالی",
"Basic settings" : "تنظیمات پایه",
"Sharing" : "اشتراک گذاری",
+ "Calendar" : "تقویم",
"Personal info" : "مشخصات شخصی",
"Mobile & desktop" : "موبایل و دسک تاپ",
"Email server" : "سرور ایمیل",
diff --git a/apps/settings/l10n/fa.json b/apps/settings/l10n/fa.json
index b7bb1262d67..884cfa85442 100644
--- a/apps/settings/l10n/fa.json
+++ b/apps/settings/l10n/fa.json
@@ -103,6 +103,7 @@
"Overview" : "بررسی اجمالی",
"Basic settings" : "تنظیمات پایه",
"Sharing" : "اشتراک گذاری",
+ "Calendar" : "تقویم",
"Personal info" : "مشخصات شخصی",
"Mobile & desktop" : "موبایل و دسک تاپ",
"Email server" : "سرور ایمیل",
diff --git a/apps/settings/l10n/fi.js b/apps/settings/l10n/fi.js
index 3f2841b0937..0eacc11583e 100644
--- a/apps/settings/l10n/fi.js
+++ b/apps/settings/l10n/fi.js
@@ -106,6 +106,7 @@ OC.L10N.register(
"Basic settings" : "Perusasetukset",
"Sharing" : "Jakaminen",
"Availability" : "Saatavuus",
+ "Calendar" : "Kalenteri",
"Personal info" : "Henkilökohtaiset tiedot",
"Mobile & desktop" : "Mobiili ja työpöytä",
"Email server" : "Sähköpostipalvelin",
diff --git a/apps/settings/l10n/fi.json b/apps/settings/l10n/fi.json
index 25eb6effcbf..417c55fb656 100644
--- a/apps/settings/l10n/fi.json
+++ b/apps/settings/l10n/fi.json
@@ -104,6 +104,7 @@
"Basic settings" : "Perusasetukset",
"Sharing" : "Jakaminen",
"Availability" : "Saatavuus",
+ "Calendar" : "Kalenteri",
"Personal info" : "Henkilökohtaiset tiedot",
"Mobile & desktop" : "Mobiili ja työpöytä",
"Email server" : "Sähköpostipalvelin",
diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js
index bd3ff53600e..7958daf0931 100644
--- a/apps/settings/l10n/fr.js
+++ b/apps/settings/l10n/fr.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Paramètres de base",
"Sharing" : "Partage",
"Availability" : "Disponibilité",
+ "Calendar" : "Agenda",
"Personal info" : "Informations personnelles",
"Mobile & desktop" : "Mobile & bureau",
"Email server" : "Serveur e-mail",
@@ -416,6 +417,7 @@ OC.L10N.register(
"Website" : "Site web",
"Profile visibility" : "Visibilité du profil",
"Not available as this property is required for core functionality including file sharing and calendar invitations" : "Non disponible car cette propriété est requise pour les fonctionnalités essentielles comme le partage de fichiers et les invitations de l'agenda.",
+ "Not available as federation has been disabled for your account, contact your system administrator if you have any questions" : "Non disponible car la fédération a été désactivée pour votre compte, contactez votre administrateur système si vous avez des questions.",
"Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "Non disponible car la publication de données spécifiques d'un utilisateur au serveur de recherche est interdit, contacter votre administrateur système si vous avez des questions",
"Show to everyone" : "Montrer à tout le monde",
"Show to logged in users only" : "Montrer seulement aux utilisateurs enregistrés",
diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json
index 82790ba23f4..b8fc44fca5e 100644
--- a/apps/settings/l10n/fr.json
+++ b/apps/settings/l10n/fr.json
@@ -120,6 +120,7 @@
"Basic settings" : "Paramètres de base",
"Sharing" : "Partage",
"Availability" : "Disponibilité",
+ "Calendar" : "Agenda",
"Personal info" : "Informations personnelles",
"Mobile & desktop" : "Mobile & bureau",
"Email server" : "Serveur e-mail",
@@ -414,6 +415,7 @@
"Website" : "Site web",
"Profile visibility" : "Visibilité du profil",
"Not available as this property is required for core functionality including file sharing and calendar invitations" : "Non disponible car cette propriété est requise pour les fonctionnalités essentielles comme le partage de fichiers et les invitations de l'agenda.",
+ "Not available as federation has been disabled for your account, contact your system administrator if you have any questions" : "Non disponible car la fédération a été désactivée pour votre compte, contactez votre administrateur système si vous avez des questions.",
"Not available as publishing user specific data to the lookup server is not allowed, contact your system administrator if you have any questions" : "Non disponible car la publication de données spécifiques d'un utilisateur au serveur de recherche est interdit, contacter votre administrateur système si vous avez des questions",
"Show to everyone" : "Montrer à tout le monde",
"Show to logged in users only" : "Montrer seulement aux utilisateurs enregistrés",
diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js
index 6ef83fbe42b..0068b1fd358 100644
--- a/apps/settings/l10n/gl.js
+++ b/apps/settings/l10n/gl.js
@@ -99,6 +99,7 @@ OC.L10N.register(
"Overview" : "Vista xeral",
"Basic settings" : "Axustes básicos",
"Sharing" : "Compartindo",
+ "Calendar" : "Calendario",
"Personal info" : "Información persoal",
"Mobile & desktop" : "Móbil e escritorio",
"Email server" : "Servidor de correo",
diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json
index b5c296234ad..9f7f89f1447 100644
--- a/apps/settings/l10n/gl.json
+++ b/apps/settings/l10n/gl.json
@@ -97,6 +97,7 @@
"Overview" : "Vista xeral",
"Basic settings" : "Axustes básicos",
"Sharing" : "Compartindo",
+ "Calendar" : "Calendario",
"Personal info" : "Información persoal",
"Mobile & desktop" : "Móbil e escritorio",
"Email server" : "Servidor de correo",
diff --git a/apps/settings/l10n/he.js b/apps/settings/l10n/he.js
index 54cfe1ed6e7..1068af924a3 100644
--- a/apps/settings/l10n/he.js
+++ b/apps/settings/l10n/he.js
@@ -99,6 +99,7 @@ OC.L10N.register(
"Overview" : "סקירה",
"Basic settings" : "הגדרות בסיסיות",
"Sharing" : "שיתוף",
+ "Calendar" : "לוח שנה",
"Personal info" : "פרטים אישיים",
"Mobile & desktop" : "נייד ושולחן עבודה",
"Email server" : "שרת דואר אלקטרוני",
diff --git a/apps/settings/l10n/he.json b/apps/settings/l10n/he.json
index 7b91f42d2de..9fd2adc912f 100644
--- a/apps/settings/l10n/he.json
+++ b/apps/settings/l10n/he.json
@@ -97,6 +97,7 @@
"Overview" : "סקירה",
"Basic settings" : "הגדרות בסיסיות",
"Sharing" : "שיתוף",
+ "Calendar" : "לוח שנה",
"Personal info" : "פרטים אישיים",
"Mobile & desktop" : "נייד ושולחן עבודה",
"Email server" : "שרת דואר אלקטרוני",
diff --git a/apps/settings/l10n/hr.js b/apps/settings/l10n/hr.js
index c5d9f17ab7e..880192b81b1 100644
--- a/apps/settings/l10n/hr.js
+++ b/apps/settings/l10n/hr.js
@@ -106,6 +106,7 @@ OC.L10N.register(
"Basic settings" : "Osnovne postavke",
"Sharing" : "Dijeljenje",
"Availability" : "Raspoloživost",
+ "Calendar" : "Kalendar",
"Personal info" : "Osobne informacije",
"Mobile & desktop" : "Mobilni uređaji i osobna računala",
"Email server" : "Poslužitelj e-pošte",
diff --git a/apps/settings/l10n/hr.json b/apps/settings/l10n/hr.json
index c093bb0c72d..a1f5536679d 100644
--- a/apps/settings/l10n/hr.json
+++ b/apps/settings/l10n/hr.json
@@ -104,6 +104,7 @@
"Basic settings" : "Osnovne postavke",
"Sharing" : "Dijeljenje",
"Availability" : "Raspoloživost",
+ "Calendar" : "Kalendar",
"Personal info" : "Osobne informacije",
"Mobile & desktop" : "Mobilni uređaji i osobna računala",
"Email server" : "Poslužitelj e-pošte",
diff --git a/apps/settings/l10n/hu.js b/apps/settings/l10n/hu.js
index 6626d99a7af..fd9096c42dc 100644
--- a/apps/settings/l10n/hu.js
+++ b/apps/settings/l10n/hu.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Alapvető beállítások",
"Sharing" : "Megosztás",
"Availability" : "Elérhetőség",
+ "Calendar" : "Naptár",
"Personal info" : "Személyes információk",
"Mobile & desktop" : "Mobil és asztali",
"Email server" : "E-mail kiszolgáló",
diff --git a/apps/settings/l10n/hu.json b/apps/settings/l10n/hu.json
index caceea16cf5..934b560012d 100644
--- a/apps/settings/l10n/hu.json
+++ b/apps/settings/l10n/hu.json
@@ -120,6 +120,7 @@
"Basic settings" : "Alapvető beállítások",
"Sharing" : "Megosztás",
"Availability" : "Elérhetőség",
+ "Calendar" : "Naptár",
"Personal info" : "Személyes információk",
"Mobile & desktop" : "Mobil és asztali",
"Email server" : "E-mail kiszolgáló",
diff --git a/apps/settings/l10n/ia.js b/apps/settings/l10n/ia.js
index f1443ddbf26..8ded23fd3b6 100644
--- a/apps/settings/l10n/ia.js
+++ b/apps/settings/l10n/ia.js
@@ -27,6 +27,7 @@ OC.L10N.register(
"Settings" : "Configurationes",
"Personal" : "Personal",
"Sharing" : "Compartente",
+ "Calendar" : "Calendario",
"Personal info" : "Information personal",
"Email server" : "Servitor de e-posta",
"Security & setup warnings" : "Securitate e advertimentos de configuration",
diff --git a/apps/settings/l10n/ia.json b/apps/settings/l10n/ia.json
index 2b5311445ab..384084d2729 100644
--- a/apps/settings/l10n/ia.json
+++ b/apps/settings/l10n/ia.json
@@ -25,6 +25,7 @@
"Settings" : "Configurationes",
"Personal" : "Personal",
"Sharing" : "Compartente",
+ "Calendar" : "Calendario",
"Personal info" : "Information personal",
"Email server" : "Servitor de e-posta",
"Security & setup warnings" : "Securitate e advertimentos de configuration",
diff --git a/apps/settings/l10n/id.js b/apps/settings/l10n/id.js
index 44d8a9797d0..16fc775fdff 100644
--- a/apps/settings/l10n/id.js
+++ b/apps/settings/l10n/id.js
@@ -108,6 +108,7 @@ OC.L10N.register(
"Overview" : "Ringkasan",
"Basic settings" : "Setelan dasar",
"Sharing" : "Berbagi",
+ "Calendar" : "Kalender",
"Personal info" : "Info pribadi",
"Mobile & desktop" : "Mobil & desktop",
"Email server" : "Server surel",
diff --git a/apps/settings/l10n/id.json b/apps/settings/l10n/id.json
index 721b6575747..589f9653bb0 100644
--- a/apps/settings/l10n/id.json
+++ b/apps/settings/l10n/id.json
@@ -106,6 +106,7 @@
"Overview" : "Ringkasan",
"Basic settings" : "Setelan dasar",
"Sharing" : "Berbagi",
+ "Calendar" : "Kalender",
"Personal info" : "Info pribadi",
"Mobile & desktop" : "Mobil & desktop",
"Email server" : "Server surel",
diff --git a/apps/settings/l10n/is.js b/apps/settings/l10n/is.js
index ca880a4e4ad..2a8403da64a 100644
--- a/apps/settings/l10n/is.js
+++ b/apps/settings/l10n/is.js
@@ -94,6 +94,7 @@ OC.L10N.register(
"Overview" : "Yfirlit",
"Basic settings" : "Grunnstillingar",
"Sharing" : "Deiling",
+ "Calendar" : "Dagatal",
"Personal info" : "Persónulegar upplýsingar",
"Mobile & desktop" : "Farsímar og borðtölvur",
"Email server" : "Póstþjónn",
diff --git a/apps/settings/l10n/is.json b/apps/settings/l10n/is.json
index 45753843cde..a97a7e6e2de 100644
--- a/apps/settings/l10n/is.json
+++ b/apps/settings/l10n/is.json
@@ -92,6 +92,7 @@
"Overview" : "Yfirlit",
"Basic settings" : "Grunnstillingar",
"Sharing" : "Deiling",
+ "Calendar" : "Dagatal",
"Personal info" : "Persónulegar upplýsingar",
"Mobile & desktop" : "Farsímar og borðtölvur",
"Email server" : "Póstþjónn",
diff --git a/apps/settings/l10n/it.js b/apps/settings/l10n/it.js
index 19f7ec9d4ba..9e08d3b3f53 100644
--- a/apps/settings/l10n/it.js
+++ b/apps/settings/l10n/it.js
@@ -112,6 +112,7 @@ OC.L10N.register(
"Basic settings" : "Impostazioni di base",
"Sharing" : "Condivisione",
"Availability" : "Disponibilità",
+ "Calendar" : "Calendario",
"Personal info" : "Informazioni personali",
"Mobile & desktop" : "Mobile e desktop",
"Email server" : "Server di posta",
diff --git a/apps/settings/l10n/it.json b/apps/settings/l10n/it.json
index 1f581136734..b142d6c5b79 100644
--- a/apps/settings/l10n/it.json
+++ b/apps/settings/l10n/it.json
@@ -110,6 +110,7 @@
"Basic settings" : "Impostazioni di base",
"Sharing" : "Condivisione",
"Availability" : "Disponibilità",
+ "Calendar" : "Calendario",
"Personal info" : "Informazioni personali",
"Mobile & desktop" : "Mobile e desktop",
"Email server" : "Server di posta",
diff --git a/apps/settings/l10n/ja.js b/apps/settings/l10n/ja.js
index 5d3fc95ecd6..b01f2ba1944 100644
--- a/apps/settings/l10n/ja.js
+++ b/apps/settings/l10n/ja.js
@@ -121,6 +121,7 @@ OC.L10N.register(
"Basic settings" : "基本設定",
"Sharing" : "共有",
"Availability" : "応対可能日時",
+ "Calendar" : "カレンダー",
"Personal info" : "個人情報",
"Mobile & desktop" : "モバイル & デスクトップ",
"Email server" : "メールサーバー",
@@ -260,9 +261,20 @@ OC.L10N.register(
"Current password" : "現在のパスワード",
"New password" : "新しいパスワード",
"Change password" : "パスワードを変更",
+ "Your profile picture" : "プロフィール画像",
+ "Upload profile picture" : "新しいプロフィール画像のアップロード",
+ "Choose profile picture from files" : "ファイルからプロフィール画像を選択",
+ "Remove profile picture" : "プロフィール画像を削除",
"png or jpg, max. 20 MB" : "pngまたはjpg。最大20MB",
"Picture provided by original account" : "オリジナルのアカウントで提供されている写真",
"Cancel" : "キャンセル",
+ "Set as profile picture" : "プロフィール画像として設定",
+ "Choose your profile picture" : "プロフィール画像を選択",
+ "Please select a valid png or jpg file" : "pngもしくは、jpgファイルを選択してください",
+ "Error setting profile picture" : "プロフィール画像に設定できませんでした",
+ "Error cropping profile picture" : "プロフィール画像を切り取れませんでした",
+ "Error saving profile picture" : "プロフィール画像を保存できませんでした",
+ "Error removing profile picture" : "プロフィール画像を削除できませんでした",
"Your biography" : "あなたのプロファイル",
"Details" : "詳細",
"You are a member of the following groups:" : "次のグループに所属:",
diff --git a/apps/settings/l10n/ja.json b/apps/settings/l10n/ja.json
index 36cf89266ae..f3e9089a3b3 100644
--- a/apps/settings/l10n/ja.json
+++ b/apps/settings/l10n/ja.json
@@ -119,6 +119,7 @@
"Basic settings" : "基本設定",
"Sharing" : "共有",
"Availability" : "応対可能日時",
+ "Calendar" : "カレンダー",
"Personal info" : "個人情報",
"Mobile & desktop" : "モバイル & デスクトップ",
"Email server" : "メールサーバー",
@@ -258,9 +259,20 @@
"Current password" : "現在のパスワード",
"New password" : "新しいパスワード",
"Change password" : "パスワードを変更",
+ "Your profile picture" : "プロフィール画像",
+ "Upload profile picture" : "新しいプロフィール画像のアップロード",
+ "Choose profile picture from files" : "ファイルからプロフィール画像を選択",
+ "Remove profile picture" : "プロフィール画像を削除",
"png or jpg, max. 20 MB" : "pngまたはjpg。最大20MB",
"Picture provided by original account" : "オリジナルのアカウントで提供されている写真",
"Cancel" : "キャンセル",
+ "Set as profile picture" : "プロフィール画像として設定",
+ "Choose your profile picture" : "プロフィール画像を選択",
+ "Please select a valid png or jpg file" : "pngもしくは、jpgファイルを選択してください",
+ "Error setting profile picture" : "プロフィール画像に設定できませんでした",
+ "Error cropping profile picture" : "プロフィール画像を切り取れませんでした",
+ "Error saving profile picture" : "プロフィール画像を保存できませんでした",
+ "Error removing profile picture" : "プロフィール画像を削除できませんでした",
"Your biography" : "あなたのプロファイル",
"Details" : "詳細",
"You are a member of the following groups:" : "次のグループに所属:",
diff --git a/apps/settings/l10n/ka_GE.js b/apps/settings/l10n/ka_GE.js
index ac3e6f57900..92745345582 100644
--- a/apps/settings/l10n/ka_GE.js
+++ b/apps/settings/l10n/ka_GE.js
@@ -71,6 +71,7 @@ OC.L10N.register(
"Overview" : "ზოგადი მიმოხილვა",
"Basic settings" : "ძირითადი პარამეტრები",
"Sharing" : "გაზიარება",
+ "Calendar" : "კალენდარი",
"Personal info" : "პირადი ინფორმაცია",
"Mobile & desktop" : "მობილური და დესკტოპი",
"Email server" : "საფოსტო სერვერი",
diff --git a/apps/settings/l10n/ka_GE.json b/apps/settings/l10n/ka_GE.json
index 4644cbeda9c..05248732eec 100644
--- a/apps/settings/l10n/ka_GE.json
+++ b/apps/settings/l10n/ka_GE.json
@@ -69,6 +69,7 @@
"Overview" : "ზოგადი მიმოხილვა",
"Basic settings" : "ძირითადი პარამეტრები",
"Sharing" : "გაზიარება",
+ "Calendar" : "კალენდარი",
"Personal info" : "პირადი ინფორმაცია",
"Mobile & desktop" : "მობილური და დესკტოპი",
"Email server" : "საფოსტო სერვერი",
diff --git a/apps/settings/l10n/ko.js b/apps/settings/l10n/ko.js
index 96dfdc67bbf..8de44a90a03 100644
--- a/apps/settings/l10n/ko.js
+++ b/apps/settings/l10n/ko.js
@@ -121,6 +121,7 @@ OC.L10N.register(
"Basic settings" : "기본 설정",
"Sharing" : "공유",
"Availability" : "가능한 시간대",
+ "Calendar" : "달력",
"Personal info" : "개인 정보",
"Mobile & desktop" : "모바일 & 데스크톱",
"Email server" : "이메일 서버",
diff --git a/apps/settings/l10n/ko.json b/apps/settings/l10n/ko.json
index e0352152ed4..369fab5ff0e 100644
--- a/apps/settings/l10n/ko.json
+++ b/apps/settings/l10n/ko.json
@@ -119,6 +119,7 @@
"Basic settings" : "기본 설정",
"Sharing" : "공유",
"Availability" : "가능한 시간대",
+ "Calendar" : "달력",
"Personal info" : "개인 정보",
"Mobile & desktop" : "모바일 & 데스크톱",
"Email server" : "이메일 서버",
diff --git a/apps/settings/l10n/lt_LT.js b/apps/settings/l10n/lt_LT.js
index 73cd2dfed58..9cf41a63d74 100644
--- a/apps/settings/l10n/lt_LT.js
+++ b/apps/settings/l10n/lt_LT.js
@@ -113,6 +113,7 @@ OC.L10N.register(
"Basic settings" : "Pagrindiniai nustatymai",
"Sharing" : "Bendrinimas",
"Availability" : "Pasiekiamumas",
+ "Calendar" : "Kalendorius",
"Personal info" : "Asmeninė informacija",
"Mobile & desktop" : "Mobilieji ir darbalaukiai",
"Email server" : "El. pašto serveris",
diff --git a/apps/settings/l10n/lt_LT.json b/apps/settings/l10n/lt_LT.json
index 2aa23344d15..91396565c47 100644
--- a/apps/settings/l10n/lt_LT.json
+++ b/apps/settings/l10n/lt_LT.json
@@ -111,6 +111,7 @@
"Basic settings" : "Pagrindiniai nustatymai",
"Sharing" : "Bendrinimas",
"Availability" : "Pasiekiamumas",
+ "Calendar" : "Kalendorius",
"Personal info" : "Asmeninė informacija",
"Mobile & desktop" : "Mobilieji ir darbalaukiai",
"Email server" : "El. pašto serveris",
diff --git a/apps/settings/l10n/lv.js b/apps/settings/l10n/lv.js
index 166ee58b8a1..338e22deec8 100644
--- a/apps/settings/l10n/lv.js
+++ b/apps/settings/l10n/lv.js
@@ -32,9 +32,12 @@ OC.L10N.register(
"Apps" : "Lietotnes",
"Settings" : "Iestatījumi",
"Personal" : "Personīgs",
+ "Administration" : "Administrēšana",
"Additional settings" : "Papildu iestatījumi",
+ "Administration privileges" : "Administrēšanas privilēģijas",
"Sharing" : "Koplietošana",
"Availability" : "Pieejamība",
+ "Calendar" : "Kalendārs",
"Personal info" : "Personiskā informācija",
"Email server" : "E-pasta serveris",
"Security & setup warnings" : "Drošības un iestatījumu brīdinājumi",
@@ -42,6 +45,7 @@ OC.L10N.register(
"Change" : "Mainīt",
"Delete" : "Dzēst",
"Unlimited" : "Neierobežota",
+ "Nextcloud settings" : "Nextcloud iestatījumi",
"None" : "Nav",
"Limit to groups" : "Grupu ierobežojums",
"Save changes" : "Saglabāt izmaiņas",
@@ -56,6 +60,7 @@ OC.L10N.register(
"Admin documentation" : "Administratora dokumentācija",
"Developer documentation" : "Izstrādātāja dokumentācija",
"No apps found for your version" : "Neatrada lietotnes jūsu versijai",
+ "Device settings" : "Ierīces iestatījumi",
"Rename" : "Pārsaukt",
"Revoke" : "Atsaukt",
"Internet Explorer" : "Internet Explorer",
@@ -109,6 +114,7 @@ OC.L10N.register(
"Last login" : "Pēdējā pieteikšanās",
"Default quota" : "Apjoms pēc noklusējuma",
"Updates" : "Atjauninājumi",
+ "Changelog" : "Izmaiņu žurnāls",
"Add group" : "Pievienot grupu",
"Active users" : "Aktīvie lietotāji",
"Admins" : "Admins",
diff --git a/apps/settings/l10n/lv.json b/apps/settings/l10n/lv.json
index 292f9ad3d56..869e60ccc63 100644
--- a/apps/settings/l10n/lv.json
+++ b/apps/settings/l10n/lv.json
@@ -30,9 +30,12 @@
"Apps" : "Lietotnes",
"Settings" : "Iestatījumi",
"Personal" : "Personīgs",
+ "Administration" : "Administrēšana",
"Additional settings" : "Papildu iestatījumi",
+ "Administration privileges" : "Administrēšanas privilēģijas",
"Sharing" : "Koplietošana",
"Availability" : "Pieejamība",
+ "Calendar" : "Kalendārs",
"Personal info" : "Personiskā informācija",
"Email server" : "E-pasta serveris",
"Security & setup warnings" : "Drošības un iestatījumu brīdinājumi",
@@ -40,6 +43,7 @@
"Change" : "Mainīt",
"Delete" : "Dzēst",
"Unlimited" : "Neierobežota",
+ "Nextcloud settings" : "Nextcloud iestatījumi",
"None" : "Nav",
"Limit to groups" : "Grupu ierobežojums",
"Save changes" : "Saglabāt izmaiņas",
@@ -54,6 +58,7 @@
"Admin documentation" : "Administratora dokumentācija",
"Developer documentation" : "Izstrādātāja dokumentācija",
"No apps found for your version" : "Neatrada lietotnes jūsu versijai",
+ "Device settings" : "Ierīces iestatījumi",
"Rename" : "Pārsaukt",
"Revoke" : "Atsaukt",
"Internet Explorer" : "Internet Explorer",
@@ -107,6 +112,7 @@
"Last login" : "Pēdējā pieteikšanās",
"Default quota" : "Apjoms pēc noklusējuma",
"Updates" : "Atjauninājumi",
+ "Changelog" : "Izmaiņu žurnāls",
"Add group" : "Pievienot grupu",
"Active users" : "Aktīvie lietotāji",
"Admins" : "Admins",
diff --git a/apps/settings/l10n/mk.js b/apps/settings/l10n/mk.js
index dd2e978d9ee..4b4043c521c 100644
--- a/apps/settings/l10n/mk.js
+++ b/apps/settings/l10n/mk.js
@@ -117,6 +117,7 @@ OC.L10N.register(
"Basic settings" : "Основни параметри",
"Sharing" : "Споделување",
"Availability" : "Достапност",
+ "Calendar" : "Календар",
"Personal info" : "Лични податоци",
"Mobile & desktop" : "Мобилен & компјутер",
"Email server" : "Сервер за е-пошта",
diff --git a/apps/settings/l10n/mk.json b/apps/settings/l10n/mk.json
index fedc9d26fea..83af21f8d0f 100644
--- a/apps/settings/l10n/mk.json
+++ b/apps/settings/l10n/mk.json
@@ -115,6 +115,7 @@
"Basic settings" : "Основни параметри",
"Sharing" : "Споделување",
"Availability" : "Достапност",
+ "Calendar" : "Календар",
"Personal info" : "Лични податоци",
"Mobile & desktop" : "Мобилен & компјутер",
"Email server" : "Сервер за е-пошта",
diff --git a/apps/settings/l10n/nb.js b/apps/settings/l10n/nb.js
index d23963ba7ef..66868b09c08 100644
--- a/apps/settings/l10n/nb.js
+++ b/apps/settings/l10n/nb.js
@@ -99,6 +99,7 @@ OC.L10N.register(
"Overview" : "Oversikt",
"Basic settings" : "Grunninnstillinger",
"Sharing" : "Deling",
+ "Calendar" : "Kalender",
"Personal info" : "Personlig informasjon",
"Mobile & desktop" : "Mobil og skrivebord",
"Email server" : "E-postserver",
diff --git a/apps/settings/l10n/nb.json b/apps/settings/l10n/nb.json
index 5cab71e91be..9ca56908f20 100644
--- a/apps/settings/l10n/nb.json
+++ b/apps/settings/l10n/nb.json
@@ -97,6 +97,7 @@
"Overview" : "Oversikt",
"Basic settings" : "Grunninnstillinger",
"Sharing" : "Deling",
+ "Calendar" : "Kalender",
"Personal info" : "Personlig informasjon",
"Mobile & desktop" : "Mobil og skrivebord",
"Email server" : "E-postserver",
diff --git a/apps/settings/l10n/nl.js b/apps/settings/l10n/nl.js
index 33d018026a7..098c660d58e 100644
--- a/apps/settings/l10n/nl.js
+++ b/apps/settings/l10n/nl.js
@@ -113,6 +113,7 @@ OC.L10N.register(
"Basic settings" : "Basis-instellingen",
"Sharing" : "Delen",
"Availability" : "Beschikbaarheid",
+ "Calendar" : "Agenda",
"Personal info" : "Persoonlijke info",
"Mobile & desktop" : "Mobiel & desktop",
"Email server" : "E-mailserver",
diff --git a/apps/settings/l10n/nl.json b/apps/settings/l10n/nl.json
index 97cfa3856c3..f9f4a925933 100644
--- a/apps/settings/l10n/nl.json
+++ b/apps/settings/l10n/nl.json
@@ -111,6 +111,7 @@
"Basic settings" : "Basis-instellingen",
"Sharing" : "Delen",
"Availability" : "Beschikbaarheid",
+ "Calendar" : "Agenda",
"Personal info" : "Persoonlijke info",
"Mobile & desktop" : "Mobiel & desktop",
"Email server" : "E-mailserver",
diff --git a/apps/settings/l10n/nn_NO.js b/apps/settings/l10n/nn_NO.js
index 835daefc37d..187ba2df519 100644
--- a/apps/settings/l10n/nn_NO.js
+++ b/apps/settings/l10n/nn_NO.js
@@ -34,6 +34,7 @@ OC.L10N.register(
"Additional settings" : "Tilleggsinnstillingar",
"Overview" : "Oversyn",
"Sharing" : "Deling",
+ "Calendar" : "Kalendar",
"Personal info" : "Personleg informasjon",
"Email server" : "E-postserver",
"Create" : "Lag",
diff --git a/apps/settings/l10n/nn_NO.json b/apps/settings/l10n/nn_NO.json
index 8a53596581a..af1d95e7c5c 100644
--- a/apps/settings/l10n/nn_NO.json
+++ b/apps/settings/l10n/nn_NO.json
@@ -32,6 +32,7 @@
"Additional settings" : "Tilleggsinnstillingar",
"Overview" : "Oversyn",
"Sharing" : "Deling",
+ "Calendar" : "Kalendar",
"Personal info" : "Personleg informasjon",
"Email server" : "E-postserver",
"Create" : "Lag",
diff --git a/apps/settings/l10n/oc.js b/apps/settings/l10n/oc.js
index 3476ebebd27..2d02b1d3f05 100644
--- a/apps/settings/l10n/oc.js
+++ b/apps/settings/l10n/oc.js
@@ -63,6 +63,7 @@ OC.L10N.register(
"Basic settings" : "Paramètres de basa",
"Sharing" : "Partiment",
"Availability" : "Disponibilitat",
+ "Calendar" : "Calendièr",
"Personal info" : "Info personalas",
"Mobile & desktop" : "Mobile e burèu",
"Email server" : "Servidor email",
diff --git a/apps/settings/l10n/oc.json b/apps/settings/l10n/oc.json
index 1e93272b0e1..f5a64ce40ab 100644
--- a/apps/settings/l10n/oc.json
+++ b/apps/settings/l10n/oc.json
@@ -61,6 +61,7 @@
"Basic settings" : "Paramètres de basa",
"Sharing" : "Partiment",
"Availability" : "Disponibilitat",
+ "Calendar" : "Calendièr",
"Personal info" : "Info personalas",
"Mobile & desktop" : "Mobile e burèu",
"Email server" : "Servidor email",
diff --git a/apps/settings/l10n/pl.js b/apps/settings/l10n/pl.js
index aa2af3b84b9..3373a2a7d5f 100644
--- a/apps/settings/l10n/pl.js
+++ b/apps/settings/l10n/pl.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Ustawienia podstawowe",
"Sharing" : "Udostępnianie",
"Availability" : "Dostępność",
+ "Calendar" : "Kalendarz",
"Personal info" : "Informacje osobiste",
"Mobile & desktop" : "Mobilne i stacjonarne",
"Email server" : "Serwer poczty",
diff --git a/apps/settings/l10n/pl.json b/apps/settings/l10n/pl.json
index 6bbf624de8b..a4f285e6d80 100644
--- a/apps/settings/l10n/pl.json
+++ b/apps/settings/l10n/pl.json
@@ -120,6 +120,7 @@
"Basic settings" : "Ustawienia podstawowe",
"Sharing" : "Udostępnianie",
"Availability" : "Dostępność",
+ "Calendar" : "Kalendarz",
"Personal info" : "Informacje osobiste",
"Mobile & desktop" : "Mobilne i stacjonarne",
"Email server" : "Serwer poczty",
diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js
index 987a886d530..3511ca119b6 100644
--- a/apps/settings/l10n/pt_BR.js
+++ b/apps/settings/l10n/pt_BR.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Configurações básicas",
"Sharing" : "Compartilhamento",
"Availability" : "Disponibilidade",
+ "Calendar" : "Calendário",
"Personal info" : "Informação pessoal",
"Mobile & desktop" : "Móvel & desktop",
"Email server" : "Servidor de e-mail",
diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json
index 59bf87966b9..a49f29915a3 100644
--- a/apps/settings/l10n/pt_BR.json
+++ b/apps/settings/l10n/pt_BR.json
@@ -120,6 +120,7 @@
"Basic settings" : "Configurações básicas",
"Sharing" : "Compartilhamento",
"Availability" : "Disponibilidade",
+ "Calendar" : "Calendário",
"Personal info" : "Informação pessoal",
"Mobile & desktop" : "Móvel & desktop",
"Email server" : "Servidor de e-mail",
diff --git a/apps/settings/l10n/pt_PT.js b/apps/settings/l10n/pt_PT.js
index 208627da0cc..f50ef1b41cc 100644
--- a/apps/settings/l10n/pt_PT.js
+++ b/apps/settings/l10n/pt_PT.js
@@ -75,6 +75,7 @@ OC.L10N.register(
"Overview" : "Visão Geral",
"Basic settings" : "Definições básicas",
"Sharing" : "Partilha",
+ "Calendar" : "Calendário",
"Personal info" : "Informação pessoal",
"Email server" : "Servidor de Correio Eletrónico",
"Security & setup warnings" : "Avisos de configuração e segurança",
diff --git a/apps/settings/l10n/pt_PT.json b/apps/settings/l10n/pt_PT.json
index 67688631734..7a6e78da88c 100644
--- a/apps/settings/l10n/pt_PT.json
+++ b/apps/settings/l10n/pt_PT.json
@@ -73,6 +73,7 @@
"Overview" : "Visão Geral",
"Basic settings" : "Definições básicas",
"Sharing" : "Partilha",
+ "Calendar" : "Calendário",
"Personal info" : "Informação pessoal",
"Email server" : "Servidor de Correio Eletrónico",
"Security & setup warnings" : "Avisos de configuração e segurança",
diff --git a/apps/settings/l10n/ro.js b/apps/settings/l10n/ro.js
index 3ae822bc6e3..6d34ee8871e 100644
--- a/apps/settings/l10n/ro.js
+++ b/apps/settings/l10n/ro.js
@@ -102,6 +102,7 @@ OC.L10N.register(
"Overview" : "Prezentare generală",
"Basic settings" : "Setări de bază",
"Sharing" : "Partajare",
+ "Calendar" : "Calendar",
"Personal info" : "Informații personale",
"Mobile & desktop" : "Mobil și desktop",
"Email server" : "Server de email",
diff --git a/apps/settings/l10n/ro.json b/apps/settings/l10n/ro.json
index 2febc844edc..dbbb1f2abd8 100644
--- a/apps/settings/l10n/ro.json
+++ b/apps/settings/l10n/ro.json
@@ -100,6 +100,7 @@
"Overview" : "Prezentare generală",
"Basic settings" : "Setări de bază",
"Sharing" : "Partajare",
+ "Calendar" : "Calendar",
"Personal info" : "Informații personale",
"Mobile & desktop" : "Mobil și desktop",
"Email server" : "Server de email",
diff --git a/apps/settings/l10n/ru.js b/apps/settings/l10n/ru.js
index dcba2846795..caf147825f7 100644
--- a/apps/settings/l10n/ru.js
+++ b/apps/settings/l10n/ru.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Основные параметры",
"Sharing" : "Параметры публикации",
"Availability" : "Доступность",
+ "Calendar" : "Календарь",
"Personal info" : "Личная информация",
"Mobile & desktop" : "Клиенты для ПК и мобильных устройств",
"Email server" : "Почтовый сервер",
diff --git a/apps/settings/l10n/ru.json b/apps/settings/l10n/ru.json
index 3c71d4f754b..d8edbcb8b1a 100644
--- a/apps/settings/l10n/ru.json
+++ b/apps/settings/l10n/ru.json
@@ -120,6 +120,7 @@
"Basic settings" : "Основные параметры",
"Sharing" : "Параметры публикации",
"Availability" : "Доступность",
+ "Calendar" : "Календарь",
"Personal info" : "Личная информация",
"Mobile & desktop" : "Клиенты для ПК и мобильных устройств",
"Email server" : "Почтовый сервер",
diff --git a/apps/settings/l10n/sc.js b/apps/settings/l10n/sc.js
index 740323ecbc1..a067c0f50e9 100644
--- a/apps/settings/l10n/sc.js
+++ b/apps/settings/l10n/sc.js
@@ -104,6 +104,7 @@ OC.L10N.register(
"Overview" : "Panoràmica",
"Basic settings" : "Impostatziones de base",
"Sharing" : "Cumpartzidura",
+ "Calendar" : "Calendàriu",
"Personal info" : "Informatziones personales",
"Mobile & desktop" : "Mòbile e de iscrivania",
"Email server" : "Serbidore posta eletrònica",
diff --git a/apps/settings/l10n/sc.json b/apps/settings/l10n/sc.json
index 4fc00a13f1f..f4d0a2939c5 100644
--- a/apps/settings/l10n/sc.json
+++ b/apps/settings/l10n/sc.json
@@ -102,6 +102,7 @@
"Overview" : "Panoràmica",
"Basic settings" : "Impostatziones de base",
"Sharing" : "Cumpartzidura",
+ "Calendar" : "Calendàriu",
"Personal info" : "Informatziones personales",
"Mobile & desktop" : "Mòbile e de iscrivania",
"Email server" : "Serbidore posta eletrònica",
diff --git a/apps/settings/l10n/sk.js b/apps/settings/l10n/sk.js
index 8423b5eb4a4..07e91155847 100644
--- a/apps/settings/l10n/sk.js
+++ b/apps/settings/l10n/sk.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Základné nastavenia",
"Sharing" : "Sprístupňovanie",
"Availability" : "Dostupnosť",
+ "Calendar" : "Kalendár",
"Personal info" : "Osobné informácie",
"Mobile & desktop" : "Mobil a počítač",
"Email server" : "Email server",
diff --git a/apps/settings/l10n/sk.json b/apps/settings/l10n/sk.json
index 2006d394785..3a46888fdfe 100644
--- a/apps/settings/l10n/sk.json
+++ b/apps/settings/l10n/sk.json
@@ -120,6 +120,7 @@
"Basic settings" : "Základné nastavenia",
"Sharing" : "Sprístupňovanie",
"Availability" : "Dostupnosť",
+ "Calendar" : "Kalendár",
"Personal info" : "Osobné informácie",
"Mobile & desktop" : "Mobil a počítač",
"Email server" : "Email server",
diff --git a/apps/settings/l10n/sl.js b/apps/settings/l10n/sl.js
index c1e3941cc61..7f78e1b9d35 100644
--- a/apps/settings/l10n/sl.js
+++ b/apps/settings/l10n/sl.js
@@ -105,6 +105,7 @@ OC.L10N.register(
"Basic settings" : "Osnovne nastavitve",
"Sharing" : "Souporaba",
"Availability" : "Razpoložljivost",
+ "Calendar" : "Koledar",
"Personal info" : "Osebni podatki",
"Mobile & desktop" : "Mobilni in namizni dostop",
"Email server" : "Poštni strežnik",
diff --git a/apps/settings/l10n/sl.json b/apps/settings/l10n/sl.json
index ae0d2686d00..ad306368256 100644
--- a/apps/settings/l10n/sl.json
+++ b/apps/settings/l10n/sl.json
@@ -103,6 +103,7 @@
"Basic settings" : "Osnovne nastavitve",
"Sharing" : "Souporaba",
"Availability" : "Razpoložljivost",
+ "Calendar" : "Koledar",
"Personal info" : "Osebni podatki",
"Mobile & desktop" : "Mobilni in namizni dostop",
"Email server" : "Poštni strežnik",
diff --git a/apps/settings/l10n/sq.js b/apps/settings/l10n/sq.js
index 6a37b89cdd1..1fd37dec143 100644
--- a/apps/settings/l10n/sq.js
+++ b/apps/settings/l10n/sq.js
@@ -67,6 +67,7 @@ OC.L10N.register(
"Additional settings" : "Konfigurime shtesë",
"Basic settings" : "Konfigurime bazike",
"Sharing" : "Ndarje me të tjerët",
+ "Calendar" : "Kalendar",
"Personal info" : "Informacion personal",
"Email server" : "Shërbyes email-esh",
"Security & setup warnings" : "Sinjalizime sigurie & rregullimi",
diff --git a/apps/settings/l10n/sq.json b/apps/settings/l10n/sq.json
index 52a69c8cae0..f1968a54517 100644
--- a/apps/settings/l10n/sq.json
+++ b/apps/settings/l10n/sq.json
@@ -65,6 +65,7 @@
"Additional settings" : "Konfigurime shtesë",
"Basic settings" : "Konfigurime bazike",
"Sharing" : "Ndarje me të tjerët",
+ "Calendar" : "Kalendar",
"Personal info" : "Informacion personal",
"Email server" : "Shërbyes email-esh",
"Security & setup warnings" : "Sinjalizime sigurie & rregullimi",
diff --git a/apps/settings/l10n/sr.js b/apps/settings/l10n/sr.js
index b63a4e64309..c6fcb745e8d 100644
--- a/apps/settings/l10n/sr.js
+++ b/apps/settings/l10n/sr.js
@@ -97,6 +97,7 @@ OC.L10N.register(
"Overview" : "Преглед",
"Basic settings" : "Основне поставке",
"Sharing" : "Дељење",
+ "Calendar" : "Календар",
"Personal info" : "Лични подаци",
"Mobile & desktop" : "Мобилни и десктоп",
"Email server" : "Сервер е-поште",
diff --git a/apps/settings/l10n/sr.json b/apps/settings/l10n/sr.json
index 0c3467b67fa..465f82633b5 100644
--- a/apps/settings/l10n/sr.json
+++ b/apps/settings/l10n/sr.json
@@ -95,6 +95,7 @@
"Overview" : "Преглед",
"Basic settings" : "Основне поставке",
"Sharing" : "Дељење",
+ "Calendar" : "Календар",
"Personal info" : "Лични подаци",
"Mobile & desktop" : "Мобилни и десктоп",
"Email server" : "Сервер е-поште",
diff --git a/apps/settings/l10n/sv.js b/apps/settings/l10n/sv.js
index fa4b3412343..09aeaae078b 100644
--- a/apps/settings/l10n/sv.js
+++ b/apps/settings/l10n/sv.js
@@ -106,6 +106,7 @@ OC.L10N.register(
"Basic settings" : "Generella inställningar",
"Sharing" : "Dela",
"Availability" : "Tillgänglighet",
+ "Calendar" : "Kalender",
"Personal info" : "Personlig information",
"Mobile & desktop" : "Mobil & skrivbord",
"Email server" : "E-postserver",
diff --git a/apps/settings/l10n/sv.json b/apps/settings/l10n/sv.json
index 19c4adda6e6..6b4b39e8b80 100644
--- a/apps/settings/l10n/sv.json
+++ b/apps/settings/l10n/sv.json
@@ -104,6 +104,7 @@
"Basic settings" : "Generella inställningar",
"Sharing" : "Dela",
"Availability" : "Tillgänglighet",
+ "Calendar" : "Kalender",
"Personal info" : "Personlig information",
"Mobile & desktop" : "Mobil & skrivbord",
"Email server" : "E-postserver",
diff --git a/apps/settings/l10n/th.js b/apps/settings/l10n/th.js
index b7da6dc43e4..875cd8c21d8 100644
--- a/apps/settings/l10n/th.js
+++ b/apps/settings/l10n/th.js
@@ -66,6 +66,7 @@ OC.L10N.register(
"Settings" : "การตั้งค่า",
"Personal" : "ส่วนตัว",
"Sharing" : "การแชร์",
+ "Calendar" : "ปฏิทิน",
"Personal info" : "ข้อมูลส่วนบุคคล",
"Email server" : "เซิร์ฟเวอร์อีเมล",
"Security & setup warnings" : "คำเตือนความปลอดภัยและการติดตั้ง",
diff --git a/apps/settings/l10n/th.json b/apps/settings/l10n/th.json
index 913c45cc091..622a4f12b58 100644
--- a/apps/settings/l10n/th.json
+++ b/apps/settings/l10n/th.json
@@ -64,6 +64,7 @@
"Settings" : "การตั้งค่า",
"Personal" : "ส่วนตัว",
"Sharing" : "การแชร์",
+ "Calendar" : "ปฏิทิน",
"Personal info" : "ข้อมูลส่วนบุคคล",
"Email server" : "เซิร์ฟเวอร์อีเมล",
"Security & setup warnings" : "คำเตือนความปลอดภัยและการติดตั้ง",
diff --git a/apps/settings/l10n/tr.js b/apps/settings/l10n/tr.js
index 6014d5886de..e3bf0b81791 100644
--- a/apps/settings/l10n/tr.js
+++ b/apps/settings/l10n/tr.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Temel ayarlar",
"Sharing" : "Paylaşım",
"Availability" : "Kullanılabilirlik",
+ "Calendar" : "Takvim",
"Personal info" : "Kişisel bilgiler",
"Mobile & desktop" : "Mobil ve masaüstü",
"Email server" : "E-posta sunucusu",
diff --git a/apps/settings/l10n/tr.json b/apps/settings/l10n/tr.json
index bae09468d74..f89e3021a01 100644
--- a/apps/settings/l10n/tr.json
+++ b/apps/settings/l10n/tr.json
@@ -120,6 +120,7 @@
"Basic settings" : "Temel ayarlar",
"Sharing" : "Paylaşım",
"Availability" : "Kullanılabilirlik",
+ "Calendar" : "Takvim",
"Personal info" : "Kişisel bilgiler",
"Mobile & desktop" : "Mobil ve masaüstü",
"Email server" : "E-posta sunucusu",
diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js
index 0a9224a45a9..e0a9c8bc9d7 100644
--- a/apps/settings/l10n/uk.js
+++ b/apps/settings/l10n/uk.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "Основні налаштування",
"Sharing" : "Спільний доступ",
"Availability" : "Доступність",
+ "Calendar" : "Календар",
"Personal info" : "Особиста інформація",
"Mobile & desktop" : "Застосунки для пристроїв",
"Email server" : "Сервер електронної пошти",
diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json
index 728dceacd12..34587a8ac48 100644
--- a/apps/settings/l10n/uk.json
+++ b/apps/settings/l10n/uk.json
@@ -120,6 +120,7 @@
"Basic settings" : "Основні налаштування",
"Sharing" : "Спільний доступ",
"Availability" : "Доступність",
+ "Calendar" : "Календар",
"Personal info" : "Особиста інформація",
"Mobile & desktop" : "Застосунки для пристроїв",
"Email server" : "Сервер електронної пошти",
diff --git a/apps/settings/l10n/vi.js b/apps/settings/l10n/vi.js
index 10e3083df05..1864e8d9718 100644
--- a/apps/settings/l10n/vi.js
+++ b/apps/settings/l10n/vi.js
@@ -86,6 +86,7 @@ OC.L10N.register(
"Settings" : "Cài đặt",
"Personal" : "Cá nhân",
"Sharing" : "Chia sẻ",
+ "Calendar" : "Lịch",
"Security & setup warnings" : "Bảo mật và thiết lập cảnh báo",
"Background jobs" : "Các công việc trong nền",
"Create" : "Tạo mới",
diff --git a/apps/settings/l10n/vi.json b/apps/settings/l10n/vi.json
index bc8fbfe6a52..8ebe85b7fb9 100644
--- a/apps/settings/l10n/vi.json
+++ b/apps/settings/l10n/vi.json
@@ -84,6 +84,7 @@
"Settings" : "Cài đặt",
"Personal" : "Cá nhân",
"Sharing" : "Chia sẻ",
+ "Calendar" : "Lịch",
"Security & setup warnings" : "Bảo mật và thiết lập cảnh báo",
"Background jobs" : "Các công việc trong nền",
"Create" : "Tạo mới",
diff --git a/apps/settings/l10n/zh_CN.js b/apps/settings/l10n/zh_CN.js
index bf57657c957..1bf122e8c7a 100644
--- a/apps/settings/l10n/zh_CN.js
+++ b/apps/settings/l10n/zh_CN.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "基本设置",
"Sharing" : "共享",
"Availability" : "可用性",
+ "Calendar" : "日历",
"Personal info" : "个人信息",
"Mobile & desktop" : "手机与电脑",
"Email server" : "电子邮件服务器",
diff --git a/apps/settings/l10n/zh_CN.json b/apps/settings/l10n/zh_CN.json
index d49fcdd7806..b210112ffdd 100644
--- a/apps/settings/l10n/zh_CN.json
+++ b/apps/settings/l10n/zh_CN.json
@@ -120,6 +120,7 @@
"Basic settings" : "基本设置",
"Sharing" : "共享",
"Availability" : "可用性",
+ "Calendar" : "日历",
"Personal info" : "个人信息",
"Mobile & desktop" : "手机与电脑",
"Email server" : "电子邮件服务器",
diff --git a/apps/settings/l10n/zh_HK.js b/apps/settings/l10n/zh_HK.js
index f8d04f8ecac..ae7267e3431 100644
--- a/apps/settings/l10n/zh_HK.js
+++ b/apps/settings/l10n/zh_HK.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "基本設定",
"Sharing" : "分享",
"Availability" : "可得性",
+ "Calendar" : "日曆",
"Personal info" : "個人資訊",
"Mobile & desktop" : "手提電話及電腦",
"Email server" : "電郵伺服器",
diff --git a/apps/settings/l10n/zh_HK.json b/apps/settings/l10n/zh_HK.json
index b0117df0020..160d06cfed2 100644
--- a/apps/settings/l10n/zh_HK.json
+++ b/apps/settings/l10n/zh_HK.json
@@ -120,6 +120,7 @@
"Basic settings" : "基本設定",
"Sharing" : "分享",
"Availability" : "可得性",
+ "Calendar" : "日曆",
"Personal info" : "個人資訊",
"Mobile & desktop" : "手提電話及電腦",
"Email server" : "電郵伺服器",
diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js
index 70ae97e9217..e323b8b8c79 100644
--- a/apps/settings/l10n/zh_TW.js
+++ b/apps/settings/l10n/zh_TW.js
@@ -122,6 +122,7 @@ OC.L10N.register(
"Basic settings" : "基本設定",
"Sharing" : "分享",
"Availability" : "可用性",
+ "Calendar" : "日曆",
"Personal info" : "個人資訊",
"Mobile & desktop" : "行動裝置及桌面",
"Email server" : "電子郵件伺服器",
diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json
index d0f78af2305..526ddc77d9b 100644
--- a/apps/settings/l10n/zh_TW.json
+++ b/apps/settings/l10n/zh_TW.json
@@ -120,6 +120,7 @@
"Basic settings" : "基本設定",
"Sharing" : "分享",
"Availability" : "可用性",
+ "Calendar" : "日曆",
"Personal info" : "個人資訊",
"Mobile & desktop" : "行動裝置及桌面",
"Email server" : "電子郵件伺服器",
diff --git a/apps/settings/lib/Controller/CheckSetupController.php b/apps/settings/lib/Controller/CheckSetupController.php
index 96fa6c20fc3..c0496369f20 100644
--- a/apps/settings/lib/Controller/CheckSetupController.php
+++ b/apps/settings/lib/Controller/CheckSetupController.php
@@ -774,6 +774,7 @@ Raw output
'federated_reshares' => ['share_id'],
'filecache' => ['fileid', 'storage', 'parent', 'mimetype', 'mimepart', 'mtime', 'storage_mtime'],
'filecache_extended' => ['fileid'],
+ 'files_trash' => ['auto_id'],
'file_locks' => ['id'],
'file_metadata' => ['id'],
'jobs' => ['id'],
diff --git a/apps/settings/lib/Sections/Personal/Calendar.php b/apps/settings/lib/Sections/Personal/Calendar.php
new file mode 100644
index 00000000000..3f4f100e121
--- /dev/null
+++ b/apps/settings/lib/Sections/Personal/Calendar.php
@@ -0,0 +1,55 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
+ *
+ * Mail
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\Settings\Sections\Personal;
+
+use OCP\IL10N;
+use OCP\IURLGenerator;
+use OCP\Settings\IIconSection;
+
+class Calendar implements IIconSection {
+
+ private IL10N $l;
+ private IURLGenerator $urlGenerator;
+
+ public function __construct(IL10N $l, IURLGenerator $urlGenerator) {
+ $this->l = $l;
+ $this->urlGenerator = $urlGenerator;
+ }
+
+ public function getIcon(): string {
+ return $this->urlGenerator->imagePath('core', 'caldav/time.svg');
+ }
+
+ public function getID(): string {
+ return 'calendar';
+ }
+
+ public function getName(): string {
+ return $this->l->t('Calendar');
+ }
+
+ public function getPriority(): int {
+ return 50;
+ }
+}
diff --git a/apps/theming/l10n/de.js b/apps/theming/l10n/de.js
index bfb0b7bab3f..0c7730f2fb8 100644
--- a/apps/theming/l10n/de.js
+++ b/apps/theming/l10n/de.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"The given privacy policy address is not a valid URL" : "Die eingegebene Adresse der Datenschutzerklärung ist keine gültige URL",
"The given slogan is too long" : "Der eingegebene Slogan ist zu lang",
"The given color is invalid" : "Die gewählte Farbe ist ungültig",
+ "Disable-user-theming should be true or false" : "Benutzer-Design deaktivieren sollte wahr oder falsch sein",
"Saved" : "Gespeichert",
"The file was uploaded" : "Die Datei wurde hochgeladen",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini",
@@ -20,6 +21,8 @@ OC.L10N.register(
"Could not write file to disk" : "Die Datei konnte nicht auf die Festplatte geschrieben werden",
"A PHP extension stopped the file upload" : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt",
"No file uploaded" : "Keine Datei hochgeladen",
+ "Cleanup old theming cache" : "Alten Design-Cache leeren",
+ "Failed to delete folder: \"%1$s\", error: %2$s" : "Verzeichnis konnte nicht gelöscht werden: \"%1$s\", Fehler: %2$s",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Du benutzt bereits ein benutzerdefiniertes Design. Die App \"Theming\" würde dies überschreiben.",
"Theming" : "Design",
"Appearance and accessibility" : "Erscheinungsbild und Barrierefreiheit",
@@ -29,7 +32,7 @@ OC.L10N.register(
"Dark theme" : "Dunkles Design",
"Enable dark theme" : "Dunkles Design aktivieren",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Ein dunkles Design zur Entlastung deiner Augen durch Verringerung der Gesamtleuchtkraft und -helligkeit.",
- "System default theme" : "Design des Systemstandards",
+ "System default theme" : "Standard-Design des Systems",
"Enable the system default" : "Systemstandard aktivieren",
"Using the default system appearance." : "Das Erscheinungsbild des Systemstandards verwenden",
"Dyslexia font" : "Legasthenie-Schriftart",
@@ -46,6 +49,7 @@ OC.L10N.register(
"Adjust the Nextcloud theme" : "Passe das Design von Nextcloud an",
"Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Das Ändern des Designs ermöglicht es auf einfache Weise das Aussehen deiner Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.",
"Advanced options" : "Erweiterte Optionen",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installiere die ImageMagick PHP-Erweiterung mit Unterstützung für SVG-Bilder, um automatisch Favicons auf Basis des hochgeladenen Logos und der Farbe zu erstellen.",
"Name" : "Name",
"Web link" : "Internet-Link",
"a safe home for all your data" : "Ein sicheres Zuhause für deine Daten",
@@ -53,16 +57,23 @@ OC.L10N.register(
"Color" : "Farbe",
"Logo" : "Logo",
"Upload new logo" : "Neues Logo hochladen",
+ "Background and login image" : "Hintergrund und Login-Bild",
+ "Upload new background and login image" : "Ein neues Hintergrund- und Anmeldebild hochladen",
"Legal notice link" : "Link zum Impressum",
"Privacy policy link" : "Link zur Datenschutzerklärung",
"Header logo" : "Kopfbereichs-Logo",
- "Upload new header logo" : "Neues Kopfbereichs-Logo hochladen",
+ "Upload new header logo" : "Neues Logo für den Kopfbereich hochladen",
"Favicon" : "Favicon",
"Upload new favicon" : "Neues Favicon hochladen",
"User settings" : "Benutzer-Einstellungen",
+ "Disable user theming" : "Benutzer-Design deaktivieren",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "Obwohl du deine Instanz auswählen und anpassen kannst, können Benutzer ihren Hintergrund und ihre Farben ändern. Wenn du deine Anpassung erzwingen möchtest, kannst du dies einschalten.",
"Keyboard shortcuts" : "Tastaturkürzel",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "In einigen Fällen können Tastenkombinationen Barrierefreiheits-Tools beeinträchtigen. Damit du dich richtig auf dein Werkzeug konzentrieren kannst, kannst du hier alle Tastaturkürzel deaktivieren. Dadurch werden auch alle verfügbaren Verknüpfungen in Apps deaktiviert.",
+ "Disable all keyboard shortcuts" : "Alle Tastenkombinationen deaktivieren",
"Background" : "Hintergrund",
- "Customization has been disabled by your administrator" : "Die Einstellung wurde von deinem Administrator deaktiviert.",
+ "Customization has been disabled by your administrator" : "Das Ändern der Einstellungen wurde von deinem Administrator deaktiviert.",
+ "Set a custom background" : "Einen benutzerdefinierten Hintergrund setzen",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Der unbeschränkte Zugang ist für uns sehr wichtig. Wir halten uns an Webstandards und prüfen, ob alles auch ohne Maus und unterstützende Software wie Screenreader nutzbar ist. Wir streben die Einhaltung der {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 auf AA-Niveau an, mit dem kontrastreichen Design sogar auf AAA-Niveau.",
"If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Wenn du Fehler findest, melde sie bitte im {issuetracker}Problemverfolgungssystem{linkend}. Und wenn du mithelfen willst, trete dem {designteam}Designteam{linkend} bei!",
"Pick from Files" : "Aus Dateien auswählen",
@@ -71,7 +82,9 @@ OC.L10N.register(
"Plain background" : "Einfacher Hintergrund",
"Insert from {productName}" : "Von {productName} einfügen",
"Theme selection is enforced" : "Designauswahl wird erzwungen",
+ "Select a custom color" : "Eine benutzerdefinierte Farbe auswählen",
"Reset to default" : " Auf Standard zurücksetzen ",
+ "Upload" : "Hochladen",
"Remove background image" : "Hintergrundbild entfernen",
"Loading preview…" : "Lade Vorschau…",
"Admin" : "Administrator",
@@ -82,6 +95,7 @@ OC.L10N.register(
"Login image" : "Anmeldebild",
"Upload new login background" : "Neuen Anmelde-Hintergrund hochladen",
"Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installiere die Imagemagick PHP-Erweiterung mit Unterstützung für SVG-Bilder, um automatisch Favicons auf Basis des hochgeladenen Logos und der Farbe zu erstellen.",
- "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "In einigen Fällen können Tastenkombinationen Werkzeuge zur Barrierefreiheit beeinträchtigen. Damit du dich richtig auf dein Werkzeug konzentrieren kannst, kannst du hier alle Tastaturkürzel deaktivieren. Dadurch werden auch alle verfügbaren Verknüpfungen in Apps deaktiviert."
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "In einigen Fällen können Tastenkombinationen Werkzeuge zur Barrierefreiheit beeinträchtigen. Damit du dich richtig auf dein Werkzeug konzentrieren kannst, kannst du hier alle Tastaturkürzel deaktivieren. Dadurch werden auch alle verfügbaren Verknüpfungen in Apps deaktiviert.",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can check this box." : "Obwohl du deine Instanz auswählen und anpassen kannst, können Benutzer ihren Hintergrund und ihre Farben ändern. Wenn du ihre Anpassung erzwingen möchtest, kannst du dieses Kontrollkästchen aktivieren."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/theming/l10n/de.json b/apps/theming/l10n/de.json
index 6819e72fe15..54f7c9d04f4 100644
--- a/apps/theming/l10n/de.json
+++ b/apps/theming/l10n/de.json
@@ -8,6 +8,7 @@
"The given privacy policy address is not a valid URL" : "Die eingegebene Adresse der Datenschutzerklärung ist keine gültige URL",
"The given slogan is too long" : "Der eingegebene Slogan ist zu lang",
"The given color is invalid" : "Die gewählte Farbe ist ungültig",
+ "Disable-user-theming should be true or false" : "Benutzer-Design deaktivieren sollte wahr oder falsch sein",
"Saved" : "Gespeichert",
"The file was uploaded" : "Die Datei wurde hochgeladen",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Die hochgeladene Datei überschreitet die upload_max_filesize-Vorgabe in php.ini",
@@ -18,6 +19,8 @@
"Could not write file to disk" : "Die Datei konnte nicht auf die Festplatte geschrieben werden",
"A PHP extension stopped the file upload" : "Eine PHP-Erweiterung hat das Hochladen der Datei gestoppt",
"No file uploaded" : "Keine Datei hochgeladen",
+ "Cleanup old theming cache" : "Alten Design-Cache leeren",
+ "Failed to delete folder: \"%1$s\", error: %2$s" : "Verzeichnis konnte nicht gelöscht werden: \"%1$s\", Fehler: %2$s",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Du benutzt bereits ein benutzerdefiniertes Design. Die App \"Theming\" würde dies überschreiben.",
"Theming" : "Design",
"Appearance and accessibility" : "Erscheinungsbild und Barrierefreiheit",
@@ -27,7 +30,7 @@
"Dark theme" : "Dunkles Design",
"Enable dark theme" : "Dunkles Design aktivieren",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Ein dunkles Design zur Entlastung deiner Augen durch Verringerung der Gesamtleuchtkraft und -helligkeit.",
- "System default theme" : "Design des Systemstandards",
+ "System default theme" : "Standard-Design des Systems",
"Enable the system default" : "Systemstandard aktivieren",
"Using the default system appearance." : "Das Erscheinungsbild des Systemstandards verwenden",
"Dyslexia font" : "Legasthenie-Schriftart",
@@ -44,6 +47,7 @@
"Adjust the Nextcloud theme" : "Passe das Design von Nextcloud an",
"Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Das Ändern des Designs ermöglicht es auf einfache Weise das Aussehen deiner Installation und Clients anzupassen. Die Änderungen wirken sich auf alle Benutzer aus.",
"Advanced options" : "Erweiterte Optionen",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installiere die ImageMagick PHP-Erweiterung mit Unterstützung für SVG-Bilder, um automatisch Favicons auf Basis des hochgeladenen Logos und der Farbe zu erstellen.",
"Name" : "Name",
"Web link" : "Internet-Link",
"a safe home for all your data" : "Ein sicheres Zuhause für deine Daten",
@@ -51,16 +55,23 @@
"Color" : "Farbe",
"Logo" : "Logo",
"Upload new logo" : "Neues Logo hochladen",
+ "Background and login image" : "Hintergrund und Login-Bild",
+ "Upload new background and login image" : "Ein neues Hintergrund- und Anmeldebild hochladen",
"Legal notice link" : "Link zum Impressum",
"Privacy policy link" : "Link zur Datenschutzerklärung",
"Header logo" : "Kopfbereichs-Logo",
- "Upload new header logo" : "Neues Kopfbereichs-Logo hochladen",
+ "Upload new header logo" : "Neues Logo für den Kopfbereich hochladen",
"Favicon" : "Favicon",
"Upload new favicon" : "Neues Favicon hochladen",
"User settings" : "Benutzer-Einstellungen",
+ "Disable user theming" : "Benutzer-Design deaktivieren",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "Obwohl du deine Instanz auswählen und anpassen kannst, können Benutzer ihren Hintergrund und ihre Farben ändern. Wenn du deine Anpassung erzwingen möchtest, kannst du dies einschalten.",
"Keyboard shortcuts" : "Tastaturkürzel",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "In einigen Fällen können Tastenkombinationen Barrierefreiheits-Tools beeinträchtigen. Damit du dich richtig auf dein Werkzeug konzentrieren kannst, kannst du hier alle Tastaturkürzel deaktivieren. Dadurch werden auch alle verfügbaren Verknüpfungen in Apps deaktiviert.",
+ "Disable all keyboard shortcuts" : "Alle Tastenkombinationen deaktivieren",
"Background" : "Hintergrund",
- "Customization has been disabled by your administrator" : "Die Einstellung wurde von deinem Administrator deaktiviert.",
+ "Customization has been disabled by your administrator" : "Das Ändern der Einstellungen wurde von deinem Administrator deaktiviert.",
+ "Set a custom background" : "Einen benutzerdefinierten Hintergrund setzen",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Der unbeschränkte Zugang ist für uns sehr wichtig. Wir halten uns an Webstandards und prüfen, ob alles auch ohne Maus und unterstützende Software wie Screenreader nutzbar ist. Wir streben die Einhaltung der {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 auf AA-Niveau an, mit dem kontrastreichen Design sogar auf AAA-Niveau.",
"If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Wenn du Fehler findest, melde sie bitte im {issuetracker}Problemverfolgungssystem{linkend}. Und wenn du mithelfen willst, trete dem {designteam}Designteam{linkend} bei!",
"Pick from Files" : "Aus Dateien auswählen",
@@ -69,7 +80,9 @@
"Plain background" : "Einfacher Hintergrund",
"Insert from {productName}" : "Von {productName} einfügen",
"Theme selection is enforced" : "Designauswahl wird erzwungen",
+ "Select a custom color" : "Eine benutzerdefinierte Farbe auswählen",
"Reset to default" : " Auf Standard zurücksetzen ",
+ "Upload" : "Hochladen",
"Remove background image" : "Hintergrundbild entfernen",
"Loading preview…" : "Lade Vorschau…",
"Admin" : "Administrator",
@@ -80,6 +93,7 @@
"Login image" : "Anmeldebild",
"Upload new login background" : "Neuen Anmelde-Hintergrund hochladen",
"Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Installiere die Imagemagick PHP-Erweiterung mit Unterstützung für SVG-Bilder, um automatisch Favicons auf Basis des hochgeladenen Logos und der Farbe zu erstellen.",
- "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "In einigen Fällen können Tastenkombinationen Werkzeuge zur Barrierefreiheit beeinträchtigen. Damit du dich richtig auf dein Werkzeug konzentrieren kannst, kannst du hier alle Tastaturkürzel deaktivieren. Dadurch werden auch alle verfügbaren Verknüpfungen in Apps deaktiviert."
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "In einigen Fällen können Tastenkombinationen Werkzeuge zur Barrierefreiheit beeinträchtigen. Damit du dich richtig auf dein Werkzeug konzentrieren kannst, kannst du hier alle Tastaturkürzel deaktivieren. Dadurch werden auch alle verfügbaren Verknüpfungen in Apps deaktiviert.",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can check this box." : "Obwohl du deine Instanz auswählen und anpassen kannst, können Benutzer ihren Hintergrund und ihre Farben ändern. Wenn du ihre Anpassung erzwingen möchtest, kannst du dieses Kontrollkästchen aktivieren."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/theming/l10n/el.js b/apps/theming/l10n/el.js
index 073569e2c59..4402c6be199 100644
--- a/apps/theming/l10n/el.js
+++ b/apps/theming/l10n/el.js
@@ -25,12 +25,18 @@ OC.L10N.register(
"Appearance and accessibility" : "Εμφάνιση και προσβασιμότητα",
"Dark theme" : "Σκούρο θέμα",
"Enable dark theme" : "Ενεργοποίηση σκούρου θέματος",
+ "System default theme" : "Προεπιλεγμένο θέμα συστήματος",
+ "Enable the system default" : "Ενεργοποίηση προεπιλογής συστήματος",
+ "Using the default system appearance." : "Χρήση της προεπιλεγμένης εμφάνισης του συστήματος.",
"Dyslexia font" : "Γραμματοσειρά για δυσλεκτικούς",
"Enable dyslexia font" : "Ενεργοποίηση γραμματοσειράς για δυσλεκτικούς",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "Η OpenDyslexic είναι μία δωρεάν γραμματοσειρά σχεδιασμένη ώστε να περιορίζει ορισμένα από τα πιο συνήθη λάθη που προκαλεί η δυσλεξία στην ανάγνωση",
"High contrast mode" : "Λειτουργία υψηλής αντίθεσης",
"Enable high contrast mode" : "Ενεργοποίηση λειτουργίας υψηλής αντίθεσης",
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Λειτουργία με υψηλή αντίθεση για να διευκολύνει την πλοήγηση σας. Η οπτική ποιότητα θα είναι μειωμένη αλλά θα έχετε υψηλότερη ευκρίνεια.",
+ "Light theme" : "Ανοιχτό θέμα",
+ "Enable the default light theme" : "Ενεργοποίηση ανοικτού θέματος",
+ "The default light appearance." : "Η προεπιλεγμένη ανοιχτόχρωμη εμφάνιση.",
"Legal notice" : "Νομική ειδοποίηση",
"Privacy policy" : "Πολιτική Απορρήτου",
"Adjust the Nextcloud theme" : "Προσαρμόστε το θέμα του Nextcloud",
@@ -43,6 +49,7 @@ OC.L10N.register(
"Color" : "Χρώμα",
"Logo" : "Λογότυπο",
"Upload new logo" : "Μεταφόρτωση νέου λογοτύπου",
+ "Background and login image" : "Παρασκήνιο και εικόνα εισόδου",
"Legal notice link" : "Σύνδεσμος νομικής ειδοποίησης",
"Privacy policy link" : "Σύνδεσμος πολιτικής απορρήτου",
"Header logo" : "Λογότυπο επικεφαλίδας",
@@ -51,12 +58,17 @@ OC.L10N.register(
"Upload new favicon" : "Μεταφόρτωση νέου favicon",
"User settings" : "Ρυθμίσεις χρήστη",
"Keyboard shortcuts" : "Συντομεύσεις πληκτρολογίου",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Σε ορισμένες περιπτώσεις, οι συντομεύσεις πληκτρολογίου μπορεί να επηρεάσουν τα εργαλεία προσβασιμότητας. Για να επιτρέψετε τη σωστή εστίαση στο εργαλείο σας, μπορείτε να απενεργοποιήσετε όλες τις συντομεύσεις πληκτρολογίου εδώ. Αυτό θα απενεργοποιήσει επίσης όλες τις διαθέσιμες συντομεύσεις στις εφαρμογές.",
+ "Disable all keyboard shortcuts" : "Απενεργοποίηση των συντομεύσεων πληκτρολογίου",
"Background" : "Φόντο",
+ "Set a custom background" : "Ορισμός προσαρμοσμένου φόντου",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Η πρόσβαση από όλους είναι πολύ σημαντική για εμάς. Ακολουθούμε τα πρότυπα του διαδικτύου και ελέγχουμε ότι τα πάντα μπορούν να χρησιμοποιηθούν χωρίς ποντίκι και βοηθητικό λογισμικό όπως προγράμματα ανάγνωσης οθόνης. Στόχος μας είναι να συμμορφωνόμαστε με τις {προδιαγραφές} Προδιαγραφές πρόσβασης περιεχομένου Ιστού 2.1 σε επίπεδο AA, με το θέμα υψηλής αντίθεσης ακόμη και σε επίπεδο ΑΑΑ.",
"Pick from Files" : "Επιλέξτε από αρχεία",
+ "Default image" : "Προεπιλεγμένη εικόνα",
"Custom color" : "Προσαρμοσμένο χρώμα",
"Plain background" : "Απλό παρασκήνιο",
"Insert from {productName}" : "Εισαγωγή από {productName}",
+ "Select a custom color" : "Επιλογή προσαρμοσμένου χρώματος",
"Reset to default" : "Επαναφορά στα προεπιλεγμένα",
"Upload" : "Μεταφόρτωση",
"Remove background image" : "Αφαίρεση εικόνας παρασκηνίου",
@@ -67,6 +79,7 @@ OC.L10N.register(
"https://…" : "https://…",
"Login image" : "Εικόνα εισόδου",
"Upload new login background" : "Μεταφόρτωση νέου παρασκηνίου εισόδου",
- "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Εγκαταστήστε την επέκταση PHP Imagemagick με υποστήριξη SVG εικόνων, για να γίνει αυτόματη δημιουργία favicon βασισμένο πάνω στο μεταφορτωμένο λογότυπο και χρώμα."
+ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Εγκαταστήστε την επέκταση PHP Imagemagick με υποστήριξη SVG εικόνων, για να γίνει αυτόματη δημιουργία favicon βασισμένο πάνω στο μεταφορτωμένο λογότυπο και χρώμα.",
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Σε ορισμένες περιπτώσεις, οι συντομεύσεις πληκτρολογίου μπορεί να επηρεάσουν τα εργαλεία προσβασιμότητας. Για να επιτρέψετε τη σωστή εστίαση στο εργαλείο σας, μπορείτε να απενεργοποιήσετε όλες τις συντομεύσεις πληκτρολογίου εδώ. Αυτό θα απενεργοποιήσει επίσης όλες τις διαθέσιμες συντομεύσεις στις εφαρμογές."
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/theming/l10n/el.json b/apps/theming/l10n/el.json
index c9168e0a139..7fc0731e8ad 100644
--- a/apps/theming/l10n/el.json
+++ b/apps/theming/l10n/el.json
@@ -23,12 +23,18 @@
"Appearance and accessibility" : "Εμφάνιση και προσβασιμότητα",
"Dark theme" : "Σκούρο θέμα",
"Enable dark theme" : "Ενεργοποίηση σκούρου θέματος",
+ "System default theme" : "Προεπιλεγμένο θέμα συστήματος",
+ "Enable the system default" : "Ενεργοποίηση προεπιλογής συστήματος",
+ "Using the default system appearance." : "Χρήση της προεπιλεγμένης εμφάνισης του συστήματος.",
"Dyslexia font" : "Γραμματοσειρά για δυσλεκτικούς",
"Enable dyslexia font" : "Ενεργοποίηση γραμματοσειράς για δυσλεκτικούς",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "Η OpenDyslexic είναι μία δωρεάν γραμματοσειρά σχεδιασμένη ώστε να περιορίζει ορισμένα από τα πιο συνήθη λάθη που προκαλεί η δυσλεξία στην ανάγνωση",
"High contrast mode" : "Λειτουργία υψηλής αντίθεσης",
"Enable high contrast mode" : "Ενεργοποίηση λειτουργίας υψηλής αντίθεσης",
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Λειτουργία με υψηλή αντίθεση για να διευκολύνει την πλοήγηση σας. Η οπτική ποιότητα θα είναι μειωμένη αλλά θα έχετε υψηλότερη ευκρίνεια.",
+ "Light theme" : "Ανοιχτό θέμα",
+ "Enable the default light theme" : "Ενεργοποίηση ανοικτού θέματος",
+ "The default light appearance." : "Η προεπιλεγμένη ανοιχτόχρωμη εμφάνιση.",
"Legal notice" : "Νομική ειδοποίηση",
"Privacy policy" : "Πολιτική Απορρήτου",
"Adjust the Nextcloud theme" : "Προσαρμόστε το θέμα του Nextcloud",
@@ -41,6 +47,7 @@
"Color" : "Χρώμα",
"Logo" : "Λογότυπο",
"Upload new logo" : "Μεταφόρτωση νέου λογοτύπου",
+ "Background and login image" : "Παρασκήνιο και εικόνα εισόδου",
"Legal notice link" : "Σύνδεσμος νομικής ειδοποίησης",
"Privacy policy link" : "Σύνδεσμος πολιτικής απορρήτου",
"Header logo" : "Λογότυπο επικεφαλίδας",
@@ -49,12 +56,17 @@
"Upload new favicon" : "Μεταφόρτωση νέου favicon",
"User settings" : "Ρυθμίσεις χρήστη",
"Keyboard shortcuts" : "Συντομεύσεις πληκτρολογίου",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Σε ορισμένες περιπτώσεις, οι συντομεύσεις πληκτρολογίου μπορεί να επηρεάσουν τα εργαλεία προσβασιμότητας. Για να επιτρέψετε τη σωστή εστίαση στο εργαλείο σας, μπορείτε να απενεργοποιήσετε όλες τις συντομεύσεις πληκτρολογίου εδώ. Αυτό θα απενεργοποιήσει επίσης όλες τις διαθέσιμες συντομεύσεις στις εφαρμογές.",
+ "Disable all keyboard shortcuts" : "Απενεργοποίηση των συντομεύσεων πληκτρολογίου",
"Background" : "Φόντο",
+ "Set a custom background" : "Ορισμός προσαρμοσμένου φόντου",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Η πρόσβαση από όλους είναι πολύ σημαντική για εμάς. Ακολουθούμε τα πρότυπα του διαδικτύου και ελέγχουμε ότι τα πάντα μπορούν να χρησιμοποιηθούν χωρίς ποντίκι και βοηθητικό λογισμικό όπως προγράμματα ανάγνωσης οθόνης. Στόχος μας είναι να συμμορφωνόμαστε με τις {προδιαγραφές} Προδιαγραφές πρόσβασης περιεχομένου Ιστού 2.1 σε επίπεδο AA, με το θέμα υψηλής αντίθεσης ακόμη και σε επίπεδο ΑΑΑ.",
"Pick from Files" : "Επιλέξτε από αρχεία",
+ "Default image" : "Προεπιλεγμένη εικόνα",
"Custom color" : "Προσαρμοσμένο χρώμα",
"Plain background" : "Απλό παρασκήνιο",
"Insert from {productName}" : "Εισαγωγή από {productName}",
+ "Select a custom color" : "Επιλογή προσαρμοσμένου χρώματος",
"Reset to default" : "Επαναφορά στα προεπιλεγμένα",
"Upload" : "Μεταφόρτωση",
"Remove background image" : "Αφαίρεση εικόνας παρασκηνίου",
@@ -65,6 +77,7 @@
"https://…" : "https://…",
"Login image" : "Εικόνα εισόδου",
"Upload new login background" : "Μεταφόρτωση νέου παρασκηνίου εισόδου",
- "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Εγκαταστήστε την επέκταση PHP Imagemagick με υποστήριξη SVG εικόνων, για να γίνει αυτόματη δημιουργία favicon βασισμένο πάνω στο μεταφορτωμένο λογότυπο και χρώμα."
+ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Εγκαταστήστε την επέκταση PHP Imagemagick με υποστήριξη SVG εικόνων, για να γίνει αυτόματη δημιουργία favicon βασισμένο πάνω στο μεταφορτωμένο λογότυπο και χρώμα.",
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Σε ορισμένες περιπτώσεις, οι συντομεύσεις πληκτρολογίου μπορεί να επηρεάσουν τα εργαλεία προσβασιμότητας. Για να επιτρέψετε τη σωστή εστίαση στο εργαλείο σας, μπορείτε να απενεργοποιήσετε όλες τις συντομεύσεις πληκτρολογίου εδώ. Αυτό θα απενεργοποιήσει επίσης όλες τις διαθέσιμες συντομεύσεις στις εφαρμογές."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/theming/l10n/hu.js b/apps/theming/l10n/hu.js
index a45163edadf..bb2d47a671c 100644
--- a/apps/theming/l10n/hu.js
+++ b/apps/theming/l10n/hu.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"The given privacy policy address is not a valid URL" : "A megadott adatvédelmi irányelvek URL címe érvénytelen",
"The given slogan is too long" : "A megadott szlogen túl hosszú",
"The given color is invalid" : "A megadott szín érvénytelen",
+ "Disable-user-theming should be true or false" : "A felhasználói témázás letiltásának igaznak vagy hamisnak kell lennie",
"Saved" : "Mentve",
"The file was uploaded" : "A fájl fel lett töltve",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "A feltöltött fájl meghaladja a php.ini upload_max_filesize direktívájában meghatározott méretet.",
@@ -20,6 +21,8 @@ OC.L10N.register(
"Could not write file to disk" : "A fájlt nem sikerült a lemezre írni",
"A PHP extension stopped the file upload" : "Egy PHP kiterjesztés megállította a fájl feltöltését",
"No file uploaded" : "Nincs fájl feltöltve",
+ "Cleanup old theming cache" : "Régi témagyorsítótár kitakarítása",
+ "Failed to delete folder: \"%1$s\", error: %2$s" : "A(z) „%1$s” törlése sikertelen, hiba: %2$s",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Már egyéni témát használ. Lehet, hogy a témázó alkalmazás beállításai felülírták.",
"Theming" : "Témázás",
"Appearance and accessibility" : "Megjelenés és akadálymentesítés",
@@ -46,6 +49,7 @@ OC.L10N.register(
"Adjust the Nextcloud theme" : "A Nextcloud téma módosítása",
"Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "A témák lehetővé teszik, hogy könnyedén személyre szabja a példány és a támogatott kliensek megjelenését. Ez minden felhasználó számára látható lesz.",
"Advanced options" : "Speciális beállítások",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Telepítse az ImageMagick PHP kiterjesztést SVG képtámogatással, hogy automatikusan előállítsa a kedvencek ikont a feltöltött logó és szín alapján.",
"Name" : "Név",
"Web link" : "Webes hivatkozás",
"a safe home for all your data" : "biztonságos hely az adatai számára",
@@ -53,6 +57,8 @@ OC.L10N.register(
"Color" : "Szín",
"Logo" : "Logó",
"Upload new logo" : "Új logó feltöltése",
+ "Background and login image" : "Háttér és bejelentkezőkép",
+ "Upload new background and login image" : "Új háttér és bejelentkezőkép feltöltése",
"Legal notice link" : "Jogi nyilatkozat hivatkozása",
"Privacy policy link" : "Adatvédelmi irányelvek hivatkozása",
"Header logo" : "Fejléc logó",
@@ -60,9 +66,13 @@ OC.L10N.register(
"Favicon" : "Kedvencek ikon",
"Upload new favicon" : "Kedvencek ikon feltöltése",
"User settings" : "Felhasználói beállítások",
+ "Disable user theming" : "Felhasználói témázás letiltása",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "Bár kiválaszthatja és testreszabhatja a példányát, a felhasználók módosíthatják a hátterüket és a színeiket. Ha ki akarja kényszeríteni a saját testreszabását, akkor bekapcsolja ezt. ",
"Keyboard shortcuts" : "Gyorsbillentyűk",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Egyes esetekben a gyorsbillentyűk összeakadhatnak az akadálymentesítési eszközökkel. Hogy helyesen tudjon fókuszálni az eszközre, itt letilthatja a gyorsbillentyűket. Ez az alkalmazásokban is letiltja az összes elérhető gyorsbillentyűt.",
"Disable all keyboard shortcuts" : "Összes gyorsbillentyű letiltása",
"Background" : "Háttér",
+ "Customization has been disabled by your administrator" : "A testreszabást letiltotta a rendszergazda",
"Set a custom background" : "Egyéni háttér beállítása",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Az akadálymentesítés fontos számunka. A webes szabványokat követjük, és ellenőrizzük, hogy minden használható egér nélkül, illetve akadálymentesítési technológiákkal, például képernyőolvasókkal. Arra törekszünk, hogy a {guidelines}Webes tartalomra vonatkozó akadálymentesítési irányelvek{linkend} 2.1-es változatának AA szinten, a magas kontrasztú témával pedig AAA szinten megfeleljünk.",
"If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Ha problémákat tapasztal, jelentse a {issuetracker}hibakövetőnkben{linkend}. És ha segíteni szeretne, csatlakozzon a {designteam}dizájn csapatunkhoz{linkend}!",
@@ -72,6 +82,7 @@ OC.L10N.register(
"Plain background" : "Egyszerű háttér",
"Insert from {productName}" : "Beillesztés innen: {productName}",
"Theme selection is enforced" : "A témaválasztás kényszerített",
+ "Select a custom color" : "Válasszon egyéni színt",
"Reset to default" : "Visszaállítás alapértelmezettre",
"Upload" : "Feltöltés",
"Remove background image" : "Háttérkép eltávolítása",
@@ -84,6 +95,7 @@ OC.L10N.register(
"Login image" : "Bejelentkező kép",
"Upload new login background" : "Új bejelentkező kép feltöltése",
"Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Telepítse az Imagemagick PHP kiterjesztést SVG képtámogatással, hogy automatikusan előállítsa a kedvencek ikont a feltöltött logó és szín alapján.",
- "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Egyes esetekben a gyorsbillentyűk összeakadhatnak az akadálymentesítési eszközökkel. Hogy helyesen tudjon fókuszálni az eszközre, itt letilthatja a gyorsbillentyűket. Ez az alkalmazásokban is letiltja az összes elérhető gyorsbillentyűt."
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Egyes esetekben a gyorsbillentyűk összeakadhatnak az akadálymentesítési eszközökkel. Hogy helyesen tudjon fókuszálni az eszközre, itt letilthatja a gyorsbillentyűket. Ez az alkalmazásokban is letiltja az összes elérhető gyorsbillentyűt.",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can check this box." : "Bár kiválaszthatja és testreszabhatja a példányát, a felhasználók módosíthatják a hátterüket és a színeiket. Ha ki akarja kényszeríteni a saját testreszabását, akkor bejelölheti ezt a mezőt. "
},
"nplurals=2; plural=(n != 1);");
diff --git a/apps/theming/l10n/hu.json b/apps/theming/l10n/hu.json
index e614cecf721..47ebcb60d00 100644
--- a/apps/theming/l10n/hu.json
+++ b/apps/theming/l10n/hu.json
@@ -8,6 +8,7 @@
"The given privacy policy address is not a valid URL" : "A megadott adatvédelmi irányelvek URL címe érvénytelen",
"The given slogan is too long" : "A megadott szlogen túl hosszú",
"The given color is invalid" : "A megadott szín érvénytelen",
+ "Disable-user-theming should be true or false" : "A felhasználói témázás letiltásának igaznak vagy hamisnak kell lennie",
"Saved" : "Mentve",
"The file was uploaded" : "A fájl fel lett töltve",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "A feltöltött fájl meghaladja a php.ini upload_max_filesize direktívájában meghatározott méretet.",
@@ -18,6 +19,8 @@
"Could not write file to disk" : "A fájlt nem sikerült a lemezre írni",
"A PHP extension stopped the file upload" : "Egy PHP kiterjesztés megállította a fájl feltöltését",
"No file uploaded" : "Nincs fájl feltöltve",
+ "Cleanup old theming cache" : "Régi témagyorsítótár kitakarítása",
+ "Failed to delete folder: \"%1$s\", error: %2$s" : "A(z) „%1$s” törlése sikertelen, hiba: %2$s",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "Már egyéni témát használ. Lehet, hogy a témázó alkalmazás beállításai felülírták.",
"Theming" : "Témázás",
"Appearance and accessibility" : "Megjelenés és akadálymentesítés",
@@ -44,6 +47,7 @@
"Adjust the Nextcloud theme" : "A Nextcloud téma módosítása",
"Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "A témák lehetővé teszik, hogy könnyedén személyre szabja a példány és a támogatott kliensek megjelenését. Ez minden felhasználó számára látható lesz.",
"Advanced options" : "Speciális beállítások",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Telepítse az ImageMagick PHP kiterjesztést SVG képtámogatással, hogy automatikusan előállítsa a kedvencek ikont a feltöltött logó és szín alapján.",
"Name" : "Név",
"Web link" : "Webes hivatkozás",
"a safe home for all your data" : "biztonságos hely az adatai számára",
@@ -51,6 +55,8 @@
"Color" : "Szín",
"Logo" : "Logó",
"Upload new logo" : "Új logó feltöltése",
+ "Background and login image" : "Háttér és bejelentkezőkép",
+ "Upload new background and login image" : "Új háttér és bejelentkezőkép feltöltése",
"Legal notice link" : "Jogi nyilatkozat hivatkozása",
"Privacy policy link" : "Adatvédelmi irányelvek hivatkozása",
"Header logo" : "Fejléc logó",
@@ -58,9 +64,13 @@
"Favicon" : "Kedvencek ikon",
"Upload new favicon" : "Kedvencek ikon feltöltése",
"User settings" : "Felhasználói beállítások",
+ "Disable user theming" : "Felhasználói témázás letiltása",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "Bár kiválaszthatja és testreszabhatja a példányát, a felhasználók módosíthatják a hátterüket és a színeiket. Ha ki akarja kényszeríteni a saját testreszabását, akkor bekapcsolja ezt. ",
"Keyboard shortcuts" : "Gyorsbillentyűk",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Egyes esetekben a gyorsbillentyűk összeakadhatnak az akadálymentesítési eszközökkel. Hogy helyesen tudjon fókuszálni az eszközre, itt letilthatja a gyorsbillentyűket. Ez az alkalmazásokban is letiltja az összes elérhető gyorsbillentyűt.",
"Disable all keyboard shortcuts" : "Összes gyorsbillentyű letiltása",
"Background" : "Háttér",
+ "Customization has been disabled by your administrator" : "A testreszabást letiltotta a rendszergazda",
"Set a custom background" : "Egyéni háttér beállítása",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Az akadálymentesítés fontos számunka. A webes szabványokat követjük, és ellenőrizzük, hogy minden használható egér nélkül, illetve akadálymentesítési technológiákkal, például képernyőolvasókkal. Arra törekszünk, hogy a {guidelines}Webes tartalomra vonatkozó akadálymentesítési irányelvek{linkend} 2.1-es változatának AA szinten, a magas kontrasztú témával pedig AAA szinten megfeleljünk.",
"If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Ha problémákat tapasztal, jelentse a {issuetracker}hibakövetőnkben{linkend}. És ha segíteni szeretne, csatlakozzon a {designteam}dizájn csapatunkhoz{linkend}!",
@@ -70,6 +80,7 @@
"Plain background" : "Egyszerű háttér",
"Insert from {productName}" : "Beillesztés innen: {productName}",
"Theme selection is enforced" : "A témaválasztás kényszerített",
+ "Select a custom color" : "Válasszon egyéni színt",
"Reset to default" : "Visszaállítás alapértelmezettre",
"Upload" : "Feltöltés",
"Remove background image" : "Háttérkép eltávolítása",
@@ -82,6 +93,7 @@
"Login image" : "Bejelentkező kép",
"Upload new login background" : "Új bejelentkező kép feltöltése",
"Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "Telepítse az Imagemagick PHP kiterjesztést SVG képtámogatással, hogy automatikusan előállítsa a kedvencek ikont a feltöltött logó és szín alapján.",
- "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Egyes esetekben a gyorsbillentyűk összeakadhatnak az akadálymentesítési eszközökkel. Hogy helyesen tudjon fókuszálni az eszközre, itt letilthatja a gyorsbillentyűket. Ez az alkalmazásokban is letiltja az összes elérhető gyorsbillentyűt."
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "Egyes esetekben a gyorsbillentyűk összeakadhatnak az akadálymentesítési eszközökkel. Hogy helyesen tudjon fókuszálni az eszközre, itt letilthatja a gyorsbillentyűket. Ez az alkalmazásokban is letiltja az összes elérhető gyorsbillentyűt.",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can check this box." : "Bár kiválaszthatja és testreszabhatja a példányát, a felhasználók módosíthatják a hátterüket és a színeiket. Ha ki akarja kényszeríteni a saját testreszabását, akkor bejelölheti ezt a mezőt. "
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/apps/theming/l10n/ja.js b/apps/theming/l10n/ja.js
index 23a641fb860..0cdf510d11c 100644
--- a/apps/theming/l10n/ja.js
+++ b/apps/theming/l10n/ja.js
@@ -10,6 +10,7 @@ OC.L10N.register(
"The given privacy policy address is not a valid URL" : "指定された個人情報保護方針アドレスは有効なURLではありません",
"The given slogan is too long" : "スローガンが長すぎます",
"The given color is invalid" : "無効な色です",
+ "Disable-user-theming should be true or false" : "Disable-user-themingは、trueまたはfalseで指定してください",
"Saved" : "保存済み",
"The file was uploaded" : "ファイルがアップロードされました",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "アップロードファイルサイズが、php.ini の upload_max_filesize を超過しています",
@@ -20,22 +21,35 @@ OC.L10N.register(
"Could not write file to disk" : "ディスクにファイルを書き込めませんでした",
"A PHP extension stopped the file upload" : "PHP拡張でファイルのアップロードが停止されています",
"No file uploaded" : "ファイルがアップロードされていません",
+ "Cleanup old theming cache" : "古いテーマのキャッシュを削除",
+ "Failed to delete folder: \"%1$s\", error: %2$s" : "フォルダー \"%1$s\" を削除できませんでした。エラー: %2$s",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "あなたはすでにカスタムテーマを使用しています。 テーマ設定の設定が上書きされる可能性があります。",
"Theming" : "テーマ",
"Appearance and accessibility" : "外観とアクセシビリティ",
+ "Dark theme with high contrast mode" : "ハイコントラストモードのダークテーマ",
+ "Enable dark high contrast mode" : "ハイコントラストモードのダークテーマを有効化",
+ "Similar to the high contrast mode, but with dark colours." : "暗い色調でのハイコントラストモード",
"Dark theme" : "ダークテーマ",
"Enable dark theme" : "ダークテーマを有効にする",
+ "A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "全体的な明度と明るさを下げることで目を楽にする暗い色調のテーマ",
+ "System default theme" : "システムのデフォルトに合わせたテーマ",
+ "Enable the system default" : "システムデフォルトを有効化",
+ "Using the default system appearance." : "デフォルトの外観を利用",
"Dyslexia font" : "Dyslexia フォント",
"Enable dyslexia font" : "Dyslexia フォントを有効にする",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexicは、ディスレクシアによって引き起こされる一般的な読み間違いの一部を軽減するためにデザインされた、無料で利用できる書体/フォントです。",
"High contrast mode" : "ハイ・コントラストモード",
"Enable high contrast mode" : "ハイ・コントラストモードを有効にする。",
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "操作をわかりやすくするためのハイ・コントラストモード。\n見た目の美しさは低下しますが、明確さが向上します。",
+ "Light theme" : "ライトテーマ",
+ "Enable the default light theme" : "デフォルトの明るいテーマを有効化",
+ "The default light appearance." : "デフォルトの明るい外観",
"Legal notice" : "法的通知",
"Privacy policy" : "個人情報保護方針",
"Adjust the Nextcloud theme" : "Nextcloudテーマを調整する",
"Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "テーマでは、あなたのインスタンスとサポートされたクライアントのルック&フィールを簡単に変更できます。この変更はすべてのユーザーが対象となります。",
"Advanced options" : "詳細オプション",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "SVG画像をサポートするPHP拡張機能 ImageMagick をインストールすると、アップロードされたロゴと色に基づいてファビコンを自動生成することができます。",
"Name" : "名前",
"Web link" : "Webリンク",
"a safe home for all your data" : "あなたのすべてのデータを安全に保管する場所",
@@ -43,6 +57,8 @@ OC.L10N.register(
"Color" : "色",
"Logo" : "ロゴ",
"Upload new logo" : "新しいロゴをアップロード",
+ "Background and login image" : "背景とログイン画像",
+ "Upload new background and login image" : "新しい背景とログイン画像",
"Legal notice link" : "法的通知のリンク",
"Privacy policy link" : "個人情報保護方針のリンク",
"Header logo" : "ヘッダーロゴ",
@@ -50,23 +66,36 @@ OC.L10N.register(
"Favicon" : "Favicon",
"Upload new favicon" : "新しいfaviconをアップロード",
"User settings" : "ユーザー設定",
+ "Disable user theming" : "ユーザー毎のテーマを無効",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "このサーバーの外観のカスタマイズと画像を変更を変更できますが、さらにユーザーは背景と色を変更できます。外観のカスタマイズを強制する場合は以下のチェック設定をオンにしてください。",
"Keyboard shortcuts" : "キーボードショートカット",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "場合によっては、キーボードショートカットがアクセシビリティツールに干渉することがあります。ツールに正しくフォーカスできるようにするために、ここですべてのキーボード ショートカットを無効にできます。この場合、アプリで使用可能なすべてのショートカットも無効になります。",
+ "Disable all keyboard shortcuts" : "全てのキーボードショートカットを無効化",
"Background" : "背景",
+ "Customization has been disabled by your administrator" : "カスタマイズは管理者によって無効にされています",
+ "Set a custom background" : "背景を設定",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "ユニバーサルアクセスは私たちにとって非常に重要なことです。そのためウェブ標準に従い、マウスやスクリーンリーダーなどの支援ソフトウェアが無くても全ての機能をご利用いただけるようにチェックしています。AAAレベルのハイコントラストのテーマを採用することで、{guidelines} Webコンテンツアクセシビリティガイドライン2.1 {linkend} のAAAレベルに準拠することを目指しています。",
+ "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "何か問題を見つけた場合は、{issuetracker}私たちの問題トラッカー{linkend}で遠慮なく報告してください。参加したい場合は、{designteam}私たちのデザイン チーム{linkend}に参加してください!",
"Pick from Files" : "ファイルから選択",
+ "Default image" : "デフォルト背景",
"Custom color" : "カスタム色",
"Plain background" : "シンプルな背景",
"Insert from {productName}" : "{productName} から挿入",
+ "Theme selection is enforced" : "テーマ選択を強制",
+ "Select a custom color" : "カスタムカラーを選択",
"Reset to default" : "デフォルトに戻す",
"Upload" : "アップロード",
"Remove background image" : "背景画像を削除",
"Loading preview…" : "プレビューを読み込み中...",
"Admin" : "管理者",
+ "Error uploading the file" : "ファイルのアップロードエラー",
"Name cannot be empty" : "名前は空にできません",
"Open documentation" : "ドキュメントを開く",
"https://…" : "https://…",
"Login image" : "ログイン画像",
"Upload new login background" : "新しいログイン背景画像をアップロード",
- "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "アップロードしたロゴと色に基づいてfaviconを自動的に生成するには、SVG画像をサポートしているimagemagick PHP拡張をインストールしてください。"
+ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "アップロードしたロゴと色に基づいてfaviconを自動的に生成するには、SVG画像をサポートしているimagemagick PHP拡張をインストールしてください。",
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "場合によっては、キーボードショートカットがアクセシビリティツールに干渉することがあります。ツールに正しくフォーカスできるようにするために、ここですべてのキーボード ショートカットを無効にできます。この場合、アプリで使用可能なすべてのショートカットも無効になります。",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can check this box." : "このサーバーの外観のカスタマイズと画像を変更を変更できますが、さらにユーザーは背景と色を変更できます。外観のカスタマイズを強制する場合は以下のチェック設定をオンにしてください。"
},
"nplurals=1; plural=0;");
diff --git a/apps/theming/l10n/ja.json b/apps/theming/l10n/ja.json
index 11e64862170..a0bffc78478 100644
--- a/apps/theming/l10n/ja.json
+++ b/apps/theming/l10n/ja.json
@@ -8,6 +8,7 @@
"The given privacy policy address is not a valid URL" : "指定された個人情報保護方針アドレスは有効なURLではありません",
"The given slogan is too long" : "スローガンが長すぎます",
"The given color is invalid" : "無効な色です",
+ "Disable-user-theming should be true or false" : "Disable-user-themingは、trueまたはfalseで指定してください",
"Saved" : "保存済み",
"The file was uploaded" : "ファイルがアップロードされました",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "アップロードファイルサイズが、php.ini の upload_max_filesize を超過しています",
@@ -18,22 +19,35 @@
"Could not write file to disk" : "ディスクにファイルを書き込めませんでした",
"A PHP extension stopped the file upload" : "PHP拡張でファイルのアップロードが停止されています",
"No file uploaded" : "ファイルがアップロードされていません",
+ "Cleanup old theming cache" : "古いテーマのキャッシュを削除",
+ "Failed to delete folder: \"%1$s\", error: %2$s" : "フォルダー \"%1$s\" を削除できませんでした。エラー: %2$s",
"You are already using a custom theme. Theming app settings might be overwritten by that." : "あなたはすでにカスタムテーマを使用しています。 テーマ設定の設定が上書きされる可能性があります。",
"Theming" : "テーマ",
"Appearance and accessibility" : "外観とアクセシビリティ",
+ "Dark theme with high contrast mode" : "ハイコントラストモードのダークテーマ",
+ "Enable dark high contrast mode" : "ハイコントラストモードのダークテーマを有効化",
+ "Similar to the high contrast mode, but with dark colours." : "暗い色調でのハイコントラストモード",
"Dark theme" : "ダークテーマ",
"Enable dark theme" : "ダークテーマを有効にする",
+ "A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "全体的な明度と明るさを下げることで目を楽にする暗い色調のテーマ",
+ "System default theme" : "システムのデフォルトに合わせたテーマ",
+ "Enable the system default" : "システムデフォルトを有効化",
+ "Using the default system appearance." : "デフォルトの外観を利用",
"Dyslexia font" : "Dyslexia フォント",
"Enable dyslexia font" : "Dyslexia フォントを有効にする",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexicは、ディスレクシアによって引き起こされる一般的な読み間違いの一部を軽減するためにデザインされた、無料で利用できる書体/フォントです。",
"High contrast mode" : "ハイ・コントラストモード",
"Enable high contrast mode" : "ハイ・コントラストモードを有効にする。",
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "操作をわかりやすくするためのハイ・コントラストモード。\n見た目の美しさは低下しますが、明確さが向上します。",
+ "Light theme" : "ライトテーマ",
+ "Enable the default light theme" : "デフォルトの明るいテーマを有効化",
+ "The default light appearance." : "デフォルトの明るい外観",
"Legal notice" : "法的通知",
"Privacy policy" : "個人情報保護方針",
"Adjust the Nextcloud theme" : "Nextcloudテーマを調整する",
"Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "テーマでは、あなたのインスタンスとサポートされたクライアントのルック&フィールを簡単に変更できます。この変更はすべてのユーザーが対象となります。",
"Advanced options" : "詳細オプション",
+ "Install the ImageMagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "SVG画像をサポートするPHP拡張機能 ImageMagick をインストールすると、アップロードされたロゴと色に基づいてファビコンを自動生成することができます。",
"Name" : "名前",
"Web link" : "Webリンク",
"a safe home for all your data" : "あなたのすべてのデータを安全に保管する場所",
@@ -41,6 +55,8 @@
"Color" : "色",
"Logo" : "ロゴ",
"Upload new logo" : "新しいロゴをアップロード",
+ "Background and login image" : "背景とログイン画像",
+ "Upload new background and login image" : "新しい背景とログイン画像",
"Legal notice link" : "法的通知のリンク",
"Privacy policy link" : "個人情報保護方針のリンク",
"Header logo" : "ヘッダーロゴ",
@@ -48,23 +64,36 @@
"Favicon" : "Favicon",
"Upload new favicon" : "新しいfaviconをアップロード",
"User settings" : "ユーザー設定",
+ "Disable user theming" : "ユーザー毎のテーマを無効",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on." : "このサーバーの外観のカスタマイズと画像を変更を変更できますが、さらにユーザーは背景と色を変更できます。外観のカスタマイズを強制する場合は以下のチェック設定をオンにしてください。",
"Keyboard shortcuts" : "キーボードショートカット",
+ "In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "場合によっては、キーボードショートカットがアクセシビリティツールに干渉することがあります。ツールに正しくフォーカスできるようにするために、ここですべてのキーボード ショートカットを無効にできます。この場合、アプリで使用可能なすべてのショートカットも無効になります。",
+ "Disable all keyboard shortcuts" : "全てのキーボードショートカットを無効化",
"Background" : "背景",
+ "Customization has been disabled by your administrator" : "カスタマイズは管理者によって無効にされています",
+ "Set a custom background" : "背景を設定",
"Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "ユニバーサルアクセスは私たちにとって非常に重要なことです。そのためウェブ標準に従い、マウスやスクリーンリーダーなどの支援ソフトウェアが無くても全ての機能をご利用いただけるようにチェックしています。AAAレベルのハイコントラストのテーマを採用することで、{guidelines} Webコンテンツアクセシビリティガイドライン2.1 {linkend} のAAAレベルに準拠することを目指しています。",
+ "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "何か問題を見つけた場合は、{issuetracker}私たちの問題トラッカー{linkend}で遠慮なく報告してください。参加したい場合は、{designteam}私たちのデザイン チーム{linkend}に参加してください!",
"Pick from Files" : "ファイルから選択",
+ "Default image" : "デフォルト背景",
"Custom color" : "カスタム色",
"Plain background" : "シンプルな背景",
"Insert from {productName}" : "{productName} から挿入",
+ "Theme selection is enforced" : "テーマ選択を強制",
+ "Select a custom color" : "カスタムカラーを選択",
"Reset to default" : "デフォルトに戻す",
"Upload" : "アップロード",
"Remove background image" : "背景画像を削除",
"Loading preview…" : "プレビューを読み込み中...",
"Admin" : "管理者",
+ "Error uploading the file" : "ファイルのアップロードエラー",
"Name cannot be empty" : "名前は空にできません",
"Open documentation" : "ドキュメントを開く",
"https://…" : "https://…",
"Login image" : "ログイン画像",
"Upload new login background" : "新しいログイン背景画像をアップロード",
- "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "アップロードしたロゴと色に基づいてfaviconを自動的に生成するには、SVG画像をサポートしているimagemagick PHP拡張をインストールしてください。"
+ "Install the Imagemagick PHP extension with support for SVG images to automatically generate favicons based on the uploaded logo and color." : "アップロードしたロゴと色に基づいてfaviconを自動的に生成するには、SVG画像をサポートしているimagemagick PHP拡張をインストールしてください。",
+ "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "場合によっては、キーボードショートカットがアクセシビリティツールに干渉することがあります。ツールに正しくフォーカスできるようにするために、ここですべてのキーボード ショートカットを無効にできます。この場合、アプリで使用可能なすべてのショートカットも無効になります。",
+ "Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can check this box." : "このサーバーの外観のカスタマイズと画像を変更を変更できますが、さらにユーザーは背景と色を変更できます。外観のカスタマイズを強制する場合は以下のチェック設定をオンにしてください。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/apps/user_ldap/l10n/es.js b/apps/user_ldap/l10n/es.js
index 25dc2745991..8821ad3ac5e 100644
--- a/apps/user_ldap/l10n/es.js
+++ b/apps/user_ldap/l10n/es.js
@@ -166,7 +166,7 @@ OC.L10N.register(
"Paging chunksize" : "Tamaño de los fragmentos de paginación",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Tamaño de los fragmentos usado para búsquedas LDAP paginadas que pueden devolver resultados voluminosos, como enumeración de usuarios o de grupos. (Si se establece en 0, se deshabilitan las búsquedas LDAP paginadas en esas situaciones.)",
"Enable LDAP password changes per user" : "Permitir cambios de contraseñas LDAP por usuario",
- "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Permite a usuarios LDAP cambiar su contraseña y permite administradores y administradores de grupos, cambiar la contraseña de sus usuarios LDAP. SOlo funciona cuando las políticas de control de acceso están configuradas de acuerdo a las del servidor LDAP. Como las contraseñas se mandan en texto plano al servidor, LDAP, encripción del transporte debe ser usado y cifrado de las contraseñas debe ser configurado en el servidor LDAP.",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Permite a usuarios LDAP cambiar su contraseña y permite administradores y administradores de grupos, cambiar la contraseña de sus usuarios LDAP. Solo funciona cuando las políticas de control de acceso están configuradas de acuerdo a las del servidor LDAP. Como las contraseñas se mandan en texto plano al servidor, LDAP, encripción del transporte debe ser usado y cifrado de las contraseñas debe ser configurado en el servidor LDAP.",
"(New password is sent as plain text to LDAP)" : "(La nueva contraseña se envía como texto plano a LDAP)",
"Default password policy DN" : "Política de contraseñas por defecto DN",
"The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "El DN de una política de contraseñas por defecto que será usado para el manejo de la expiración de contraseñas. Solo funciona cuando los cambios por usuario de la contraseña LDAP están habilitados y solo está aceptada por OpenLDAP. Déjala vacía para deshabilitar el manejo de expiración de contraseñas.",
diff --git a/apps/user_ldap/l10n/es.json b/apps/user_ldap/l10n/es.json
index c41959bc8ca..1d867cae117 100644
--- a/apps/user_ldap/l10n/es.json
+++ b/apps/user_ldap/l10n/es.json
@@ -164,7 +164,7 @@
"Paging chunksize" : "Tamaño de los fragmentos de paginación",
"Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)" : "Tamaño de los fragmentos usado para búsquedas LDAP paginadas que pueden devolver resultados voluminosos, como enumeración de usuarios o de grupos. (Si se establece en 0, se deshabilitan las búsquedas LDAP paginadas en esas situaciones.)",
"Enable LDAP password changes per user" : "Permitir cambios de contraseñas LDAP por usuario",
- "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Permite a usuarios LDAP cambiar su contraseña y permite administradores y administradores de grupos, cambiar la contraseña de sus usuarios LDAP. SOlo funciona cuando las políticas de control de acceso están configuradas de acuerdo a las del servidor LDAP. Como las contraseñas se mandan en texto plano al servidor, LDAP, encripción del transporte debe ser usado y cifrado de las contraseñas debe ser configurado en el servidor LDAP.",
+ "Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server." : "Permite a usuarios LDAP cambiar su contraseña y permite administradores y administradores de grupos, cambiar la contraseña de sus usuarios LDAP. Solo funciona cuando las políticas de control de acceso están configuradas de acuerdo a las del servidor LDAP. Como las contraseñas se mandan en texto plano al servidor, LDAP, encripción del transporte debe ser usado y cifrado de las contraseñas debe ser configurado en el servidor LDAP.",
"(New password is sent as plain text to LDAP)" : "(La nueva contraseña se envía como texto plano a LDAP)",
"Default password policy DN" : "Política de contraseñas por defecto DN",
"The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling." : "El DN de una política de contraseñas por defecto que será usado para el manejo de la expiración de contraseñas. Solo funciona cuando los cambios por usuario de la contraseña LDAP están habilitados y solo está aceptada por OpenLDAP. Déjala vacía para deshabilitar el manejo de expiración de contraseñas.",
diff --git a/apps/user_ldap/l10n/lv.js b/apps/user_ldap/l10n/lv.js
index 61eb1d75c98..2c623018a21 100644
--- a/apps/user_ldap/l10n/lv.js
+++ b/apps/user_ldap/l10n/lv.js
@@ -45,6 +45,7 @@ OC.L10N.register(
"Selected groups" : "Izvēlētās grupas",
"Edit LDAP Query" : "Labot LDAP vaicājumu",
"LDAP Filter:" : "LDAP filtrs:",
+ "Verify settings and count the groups" : "Pārbaudiet iestatījumus un saskaitiet grupas",
"Other Attributes:" : "Citi atribūti:",
"Test Loginname" : "Pārbaudiet lietotājvārdu",
"Verify settings" : "Pārbaudīt iestatījumus",
@@ -60,6 +61,7 @@ OC.L10N.register(
"You can specify Base DN for users and groups in the Advanced tab" : "Lietotājiem un grupām var norādīt bāzes DN cilnē “Paplašināti”",
"Detect Base DN" : "Noteikt bāzes DN",
"Test Base DN" : "Testēt bāzes DN",
+ "Verify settings and count users" : "Pārbaudiet iestatījumus un saskaitiet lietotājus",
"Saving" : "Saglabā",
"Back" : "Atpakaļ",
"Continue" : "Turpināt",
diff --git a/apps/user_ldap/l10n/lv.json b/apps/user_ldap/l10n/lv.json
index be82e0717dc..fdebc4b2287 100644
--- a/apps/user_ldap/l10n/lv.json
+++ b/apps/user_ldap/l10n/lv.json
@@ -43,6 +43,7 @@
"Selected groups" : "Izvēlētās grupas",
"Edit LDAP Query" : "Labot LDAP vaicājumu",
"LDAP Filter:" : "LDAP filtrs:",
+ "Verify settings and count the groups" : "Pārbaudiet iestatījumus un saskaitiet grupas",
"Other Attributes:" : "Citi atribūti:",
"Test Loginname" : "Pārbaudiet lietotājvārdu",
"Verify settings" : "Pārbaudīt iestatījumus",
@@ -58,6 +59,7 @@
"You can specify Base DN for users and groups in the Advanced tab" : "Lietotājiem un grupām var norādīt bāzes DN cilnē “Paplašināti”",
"Detect Base DN" : "Noteikt bāzes DN",
"Test Base DN" : "Testēt bāzes DN",
+ "Verify settings and count users" : "Pārbaudiet iestatījumus un saskaitiet lietotājus",
"Saving" : "Saglabā",
"Back" : "Atpakaļ",
"Continue" : "Turpināt",
diff --git a/apps/user_ldap/lib/AppInfo/Application.php b/apps/user_ldap/lib/AppInfo/Application.php
index 79998a580e5..757ac141d3d 100644
--- a/apps/user_ldap/lib/AppInfo/Application.php
+++ b/apps/user_ldap/lib/AppInfo/Application.php
@@ -31,6 +31,7 @@ use OCA\Files_External\Service\BackendService;
use OCA\User_LDAP\Controller\RenewPasswordController;
use OCA\User_LDAP\Events\GroupBackendRegistered;
use OCA\User_LDAP\Events\UserBackendRegistered;
+use OCA\User_LDAP\FilesystemHelper;
use OCA\User_LDAP\Group_Proxy;
use OCA\User_LDAP\GroupPluginManager;
use OCA\User_LDAP\Handler\ExtStorageConfigHandler;
@@ -38,6 +39,7 @@ use OCA\User_LDAP\Helper;
use OCA\User_LDAP\ILDAPWrapper;
use OCA\User_LDAP\LDAP;
use OCA\User_LDAP\Notification\Notifier;
+use OCA\User_LDAP\User\Manager;
use OCA\User_LDAP\User_Proxy;
use OCA\User_LDAP\UserPluginManager;
use OCP\AppFramework\App;
@@ -46,10 +48,17 @@ use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\AppFramework\IAppContainer;
use OCP\EventDispatcher\IEventDispatcher;
+use OCP\IAvatarManager;
+use OCP\IConfig;
use OCP\IGroupManager;
use OCP\IL10N;
+use OCP\Image;
use OCP\IServerContainer;
+use OCP\IUserManager;
use OCP\Notification\IManager as INotificationManager;
+use OCP\Share\IManager as IShareManager;
+use Psr\Container\ContainerInterface;
+use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class Application extends App implements IBootstrap {
@@ -87,6 +96,24 @@ class Application extends App implements IBootstrap {
public function register(IRegistrationContext $context): void {
$context->registerNotifierService(Notifier::class);
+
+ $context->registerService(
+ Manager::class,
+ function (ContainerInterface $c) {
+ return new Manager(
+ $c->get(IConfig::class),
+ $c->get(FilesystemHelper::class),
+ $c->get(LoggerInterface::class),
+ $c->get(IAvatarManager::class),
+ $c->get(Image::class),
+ $c->get(IUserManager::class),
+ $c->get(INotificationManager::class),
+ $c->get(IShareManager::class),
+ );
+ },
+ // the instance is specific to a lazy bound Access instance, thus cannot be shared.
+ false
+ );
}
public function boot(IBootContext $context): void {
diff --git a/apps/user_status/l10n/lt_LT.js b/apps/user_status/l10n/lt_LT.js
index d0ff5c5a8f2..6a3dfb254f5 100644
--- a/apps/user_status/l10n/lt_LT.js
+++ b/apps/user_status/l10n/lt_LT.js
@@ -7,6 +7,7 @@ OC.L10N.register(
"Out sick" : "Sergu",
"Vacationing" : "Poilsiauju",
"Working remotely" : "Dirbu nuotoliniu būdu",
+ "In a call" : "Dalyvauju skambutyje",
"User status" : "Naudotojo būsena",
"View profile" : "Rodyti profilį",
"Clear status after" : "Išvalyti būseną po",
diff --git a/apps/user_status/l10n/lt_LT.json b/apps/user_status/l10n/lt_LT.json
index 909198c80ac..8dbc1154bd8 100644
--- a/apps/user_status/l10n/lt_LT.json
+++ b/apps/user_status/l10n/lt_LT.json
@@ -5,6 +5,7 @@
"Out sick" : "Sergu",
"Vacationing" : "Poilsiauju",
"Working remotely" : "Dirbu nuotoliniu būdu",
+ "In a call" : "Dalyvauju skambutyje",
"User status" : "Naudotojo būsena",
"View profile" : "Rodyti profilį",
"Clear status after" : "Išvalyti būseną po",
diff --git a/core/Command/App/ListApps.php b/core/Command/App/ListApps.php
index 6f8858c8858..6405afc2f68 100644
--- a/core/Command/App/ListApps.php
+++ b/core/Command/App/ListApps.php
@@ -87,7 +87,7 @@ class ListApps extends Base {
sort($disabledApps);
foreach ($disabledApps as $app) {
- $apps['disabled'][$app] = $versions[$app] ?? null;
+ $apps['disabled'][$app] = $this->manager->getAppVersion($app) . (isset($versions[$app]) ? ' (installed ' . $versions[$app] . ')' : '');
}
$this->writeAppList($input, $output, $apps);
diff --git a/core/l10n/cs.js b/core/l10n/cs.js
index f60e1f56cfd..97890b6820a 100644
--- a/core/l10n/cs.js
+++ b/core/l10n/cs.js
@@ -100,6 +100,7 @@ OC.L10N.register(
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Této instanci chybí některé doporučené moduly pro PHP. V zájmu lepšího výkonu a kompatibility, je důrazně doporučeno je nainstalovat.",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "Ačkoli je zapnutá aplikace pro opatřování motivem vzhledu, není zapnutý PHP modul „imagick“. Aby vytváření ikon webů správně fungovalo, je zapotřebí tento modul nainstalovat a zapnout.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "PHP moduly „gmp“ a/nebo „bcmath“ nejsou zapnuté. Pro používání bezheslového WebAuthn ověřování jsou tyto moduly nezbytné.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Zdá se, že provozujete 32bitovou verzi PHP. Nextcloud verze 26 a novější vyžaduje 64bit. Přejděte na 64bit instalaci operačního systému a PHP! Bližší podrobnosti naleznete {linkstart}na stránce v dokumentaci ↗{linkend}.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Modul php-imagick v tomto případě nemá žádnou podporu SVG. Pro lepší kompatibilitu se doporučuje nainstalovat.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "U některých sloupců tabulek databáze doposud nebyla provedena konverze na datový typ big int. To proto, že změna typů sloupců ve velkých tabulkách může trvat dlouho a proto nebylo provedeno automaticky. Provedení je možné spustit ručně a to spuštěním příkazu „occ db: convert-filecache-bigint“. Ovšem provést lze jen tehdy, když je instance Nexcloud odstavená. Další podrobnosti naleznete {linkstart}na stránce v dokumentaci, pojednávající o tomto↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Jako podpůrná databázová vrstva je nyní používáno SQLite. Pro větší instalace doporučujeme přejít na jinou databázi.",
diff --git a/core/l10n/cs.json b/core/l10n/cs.json
index 11c31f64fdd..f7e76cca8d6 100644
--- a/core/l10n/cs.json
+++ b/core/l10n/cs.json
@@ -98,6 +98,7 @@
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Této instanci chybí některé doporučené moduly pro PHP. V zájmu lepšího výkonu a kompatibility, je důrazně doporučeno je nainstalovat.",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "Ačkoli je zapnutá aplikace pro opatřování motivem vzhledu, není zapnutý PHP modul „imagick“. Aby vytváření ikon webů správně fungovalo, je zapotřebí tento modul nainstalovat a zapnout.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "PHP moduly „gmp“ a/nebo „bcmath“ nejsou zapnuté. Pro používání bezheslového WebAuthn ověřování jsou tyto moduly nezbytné.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Zdá se, že provozujete 32bitovou verzi PHP. Nextcloud verze 26 a novější vyžaduje 64bit. Přejděte na 64bit instalaci operačního systému a PHP! Bližší podrobnosti naleznete {linkstart}na stránce v dokumentaci ↗{linkend}.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Modul php-imagick v tomto případě nemá žádnou podporu SVG. Pro lepší kompatibilitu se doporučuje nainstalovat.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "U některých sloupců tabulek databáze doposud nebyla provedena konverze na datový typ big int. To proto, že změna typů sloupců ve velkých tabulkách může trvat dlouho a proto nebylo provedeno automaticky. Provedení je možné spustit ručně a to spuštěním příkazu „occ db: convert-filecache-bigint“. Ovšem provést lze jen tehdy, když je instance Nexcloud odstavená. Další podrobnosti naleznete {linkstart}na stránce v dokumentaci, pojednávající o tomto↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Jako podpůrná databázová vrstva je nyní používáno SQLite. Pro větší instalace doporučujeme přejít na jinou databázi.",
diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js
index c1525b2bccb..4a38ebabd9c 100644
--- a/core/l10n/de_DE.js
+++ b/core/l10n/de_DE.js
@@ -100,6 +100,7 @@ OC.L10N.register(
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Dieser Installation fehlen einige empfohlene PHP-Module. Für bessere Leistung und bessere Kompatibilität wird dringend empfohlen, diese zu installieren.",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "Das PHP-Modul \"imagick\" ist nicht aktiviert, die Theming-App hingegen schon. Damit die Favicon-Generierung korrekt funktioniert, müssen Sie dieses Modul installieren und aktivieren.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "Die PHP-Module „gmp“ und/oder „bcmath“ sind nicht aktiviert. Wenn Sie die passwortlose WebAuthn-Authentifizierung verwenden, sind diese Module erforderlich.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Es scheint, als ob Sie eine 32-Bit-PHP-Version ausführen. Nextcloud 26 und höher erfordert 64-Bit. Bitte aktualisieren Sie Ihr Betriebssystem und PHP auf 64-Bit! Für weitere Details lesen Sie dazu die {linkstart}Dokumentationsseite ↗{linkend}.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Dem Modul php-imagick fehlt die SVG-Unterstützung. Für eine bessere Kompatibilität wird empfohlen, es zu installieren.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int. Aufgrund der Tatsache, dass das Ändern von Spaltentypen bei großen Tabellen einige Zeit dauern kann, wurden sie nicht automatisch geändert. Durch Ausführen von \"occ db:convert-filecache-bigint\" können diese ausstehenden Änderungen manuell übernommen werden. Diese Operation muss ausgeführt werden, während die Instanz offline ist. Weitere Details finden Sie auf {linkstart}der zugehörigen Dokumentationsseite ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite wird als Datenbank verwendet. Bei größeren Installationen wird empfohlen, auf ein anderes Datenbank-Backend zu wechseln.",
diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json
index 696f659398a..0bbb07d7afa 100644
--- a/core/l10n/de_DE.json
+++ b/core/l10n/de_DE.json
@@ -98,6 +98,7 @@
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Dieser Installation fehlen einige empfohlene PHP-Module. Für bessere Leistung und bessere Kompatibilität wird dringend empfohlen, diese zu installieren.",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "Das PHP-Modul \"imagick\" ist nicht aktiviert, die Theming-App hingegen schon. Damit die Favicon-Generierung korrekt funktioniert, müssen Sie dieses Modul installieren und aktivieren.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "Die PHP-Module „gmp“ und/oder „bcmath“ sind nicht aktiviert. Wenn Sie die passwortlose WebAuthn-Authentifizierung verwenden, sind diese Module erforderlich.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Es scheint, als ob Sie eine 32-Bit-PHP-Version ausführen. Nextcloud 26 und höher erfordert 64-Bit. Bitte aktualisieren Sie Ihr Betriebssystem und PHP auf 64-Bit! Für weitere Details lesen Sie dazu die {linkstart}Dokumentationsseite ↗{linkend}.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Dem Modul php-imagick fehlt die SVG-Unterstützung. Für eine bessere Kompatibilität wird empfohlen, es zu installieren.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int. Aufgrund der Tatsache, dass das Ändern von Spaltentypen bei großen Tabellen einige Zeit dauern kann, wurden sie nicht automatisch geändert. Durch Ausführen von \"occ db:convert-filecache-bigint\" können diese ausstehenden Änderungen manuell übernommen werden. Diese Operation muss ausgeführt werden, während die Instanz offline ist. Weitere Details finden Sie auf {linkstart}der zugehörigen Dokumentationsseite ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite wird als Datenbank verwendet. Bei größeren Installationen wird empfohlen, auf ein anderes Datenbank-Backend zu wechseln.",
diff --git a/core/l10n/es.js b/core/l10n/es.js
index 8ffe465acb8..9d1379c5226 100644
--- a/core/l10n/es.js
+++ b/core/l10n/es.js
@@ -100,6 +100,7 @@ OC.L10N.register(
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "A esta instancia le faltan algunos módulos PHP recomendados. Para mejorar el rendimiento y aumentar la compatibilidad, se recomienda encarecidamente instalarlos.",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "El módulo PHP \"imagick\" no está habilitado, y la aplicación Temas sí lo está. Para que la generación de favicon funcione correctamente, es necesario instalar y habilitar este módulo.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "Los módulos PHP \"gmp\" y/o \"bcmath\" no están habilitados. Si usas la autenticación sin contraseña WebAuthn, estos módulos son necesarios.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Parece que está ejecutando una versión de PHP de 32 bits. Nextcloud 26 y superiores requieren 64 bits. ¡Por favor, actualice su sistema operativo y PHP a 64 bits! Puede leer más detalles en {linkstart}la página de documentación correspondiente ↗{linkend}.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "El módulo php-imagick de esta instancia no tiene soporte para SVG. Para una mejor compatibilidad es recomendable instalarlo.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "A algunas columnas de la base de datos les falta convertirse a \"big int\". Debido a que cambiar los tipos de columna en tablas grandes podría tardar mucho tiempo no fueron cambiadas automáticamente. Ejecutando 'occ db:convert-filecache-bigint' se pueden aplicar estos cambios pendientes de manera manual. Esta operación debe realizarse cuando el servidor esté sin conexión. Para más detalles, consulte {linkstart}la página de documentación ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Actualmente se está usando SQLite como base de datos. Para instalaciones más largas recomendamos cambiar a un motor de bases de datos diferente.",
diff --git a/core/l10n/es.json b/core/l10n/es.json
index e94d198d6f1..9f36c4796e5 100644
--- a/core/l10n/es.json
+++ b/core/l10n/es.json
@@ -98,6 +98,7 @@
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "A esta instancia le faltan algunos módulos PHP recomendados. Para mejorar el rendimiento y aumentar la compatibilidad, se recomienda encarecidamente instalarlos.",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "El módulo PHP \"imagick\" no está habilitado, y la aplicación Temas sí lo está. Para que la generación de favicon funcione correctamente, es necesario instalar y habilitar este módulo.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "Los módulos PHP \"gmp\" y/o \"bcmath\" no están habilitados. Si usas la autenticación sin contraseña WebAuthn, estos módulos son necesarios.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Parece que está ejecutando una versión de PHP de 32 bits. Nextcloud 26 y superiores requieren 64 bits. ¡Por favor, actualice su sistema operativo y PHP a 64 bits! Puede leer más detalles en {linkstart}la página de documentación correspondiente ↗{linkend}.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "El módulo php-imagick de esta instancia no tiene soporte para SVG. Para una mejor compatibilidad es recomendable instalarlo.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "A algunas columnas de la base de datos les falta convertirse a \"big int\". Debido a que cambiar los tipos de columna en tablas grandes podría tardar mucho tiempo no fueron cambiadas automáticamente. Ejecutando 'occ db:convert-filecache-bigint' se pueden aplicar estos cambios pendientes de manera manual. Esta operación debe realizarse cuando el servidor esté sin conexión. Para más detalles, consulte {linkstart}la página de documentación ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Actualmente se está usando SQLite como base de datos. Para instalaciones más largas recomendamos cambiar a un motor de bases de datos diferente.",
diff --git a/core/l10n/fr.js b/core/l10n/fr.js
index 3c1eee505d7..721e01ecab6 100644
--- a/core/l10n/fr.js
+++ b/core/l10n/fr.js
@@ -100,6 +100,7 @@ OC.L10N.register(
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Cette instance ne dispose pas de plusieurs modules PHP recommandés. Il est recommandé de les installer pour améliorer les performances, et la compatibilité.",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "Le module PHP \"imagick\" n'est pas actif mais l'application Theming est activée. Pour que la génération du Favicon fonctionne correctement, ce module doit être installé et actif.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "Les modules PHP \"gmp\" et/ou \"bcmath\" ne sont pas actifs. Si vous utilisez l'authentification sans mot de passe WebAuthn, ces modules sont requis.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Il semble que vous exécutez une version 32-bit de PHP. Nextcloud 26 et plus nécessitent 64-bit. Veuillez mettre à jour votre système d'exploitation et PHP en 64 bits ! Pour plus de détails, lisez {linkstart}la page de documentation ↗{linkend} à ce sujet.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Le module php-imagick n’a aucun support SVG dans cette instance. Pour une meilleure compatibilité, il est recommandé de l’installer.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "Certaines colonnes de la base de données n'ont pas été converties en 'big int'. Changer le type de colonne dans de grandes tables peut prendre beaucoup de temps, elles n'ont donc pas été converties automatiquement. En exécutant la commande 'occ db:convert-filecache-bigint', ces changements en suspens peuvent être déclenchés manuellement. Cette opération doit être exécutée pendant que l'instance est hors ligne. Pour plus d'information, consulter {linkstart}la page de documentation à ce propos ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite est actuellement utilisé comme système de gestion de base de données. Pour des installations plus volumineuses, nous vous recommandons de migrer vers un autre système de gestion de base de données.",
@@ -421,6 +422,7 @@ OC.L10N.register(
"More apps menu" : "Menu des autres applications",
"Settings menu" : "Menu des paramètres",
"The password is wrong. Try again." : "Le mot de passe est incorrect. Veuillez réessayer.",
- "Setup two-factor authentication" : "Paramétrer l'authentification à double facteur"
+ "Setup two-factor authentication" : "Paramétrer l'authentification à double facteur",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Il semble que vous exécutez une version 32-bit de PHP. Nextcloud 26 et plus nécessitent 64-bit. Veuillez mettre à jour votre système d'exploitation et PHP en 64 bits ! Pour plus de détails, lisez {linkstart}la page de documentation à ce sujet ↗{linkend}."
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/core/l10n/fr.json b/core/l10n/fr.json
index eb863294328..ae805b45b2a 100644
--- a/core/l10n/fr.json
+++ b/core/l10n/fr.json
@@ -98,6 +98,7 @@
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Cette instance ne dispose pas de plusieurs modules PHP recommandés. Il est recommandé de les installer pour améliorer les performances, et la compatibilité.",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "Le module PHP \"imagick\" n'est pas actif mais l'application Theming est activée. Pour que la génération du Favicon fonctionne correctement, ce module doit être installé et actif.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "Les modules PHP \"gmp\" et/ou \"bcmath\" ne sont pas actifs. Si vous utilisez l'authentification sans mot de passe WebAuthn, ces modules sont requis.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Il semble que vous exécutez une version 32-bit de PHP. Nextcloud 26 et plus nécessitent 64-bit. Veuillez mettre à jour votre système d'exploitation et PHP en 64 bits ! Pour plus de détails, lisez {linkstart}la page de documentation ↗{linkend} à ce sujet.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Le module php-imagick n’a aucun support SVG dans cette instance. Pour une meilleure compatibilité, il est recommandé de l’installer.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "Certaines colonnes de la base de données n'ont pas été converties en 'big int'. Changer le type de colonne dans de grandes tables peut prendre beaucoup de temps, elles n'ont donc pas été converties automatiquement. En exécutant la commande 'occ db:convert-filecache-bigint', ces changements en suspens peuvent être déclenchés manuellement. Cette opération doit être exécutée pendant que l'instance est hors ligne. Pour plus d'information, consulter {linkstart}la page de documentation à ce propos ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite est actuellement utilisé comme système de gestion de base de données. Pour des installations plus volumineuses, nous vous recommandons de migrer vers un autre système de gestion de base de données.",
@@ -419,6 +420,7 @@
"More apps menu" : "Menu des autres applications",
"Settings menu" : "Menu des paramètres",
"The password is wrong. Try again." : "Le mot de passe est incorrect. Veuillez réessayer.",
- "Setup two-factor authentication" : "Paramétrer l'authentification à double facteur"
+ "Setup two-factor authentication" : "Paramétrer l'authentification à double facteur",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Il semble que vous exécutez une version 32-bit de PHP. Nextcloud 26 et plus nécessitent 64-bit. Veuillez mettre à jour votre système d'exploitation et PHP en 64 bits ! Pour plus de détails, lisez {linkstart}la page de documentation à ce sujet ↗{linkend}."
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/core/l10n/hu.js b/core/l10n/hu.js
index a870fe0a64d..4d52be989d9 100644
--- a/core/l10n/hu.js
+++ b/core/l10n/hu.js
@@ -40,6 +40,7 @@ OC.L10N.register(
"Some of your link shares have been removed" : "Néhány megosztási hivatkozása eltávolításra került",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Egy biztonsági hiba miatt el kellett távolítsunk néhány megosztási hivatkozását. További információkért lásd a lenti hivatkozást.",
"The user limit of this instance is reached." : "Elérte ennek a példánynak a felhasználói korlátját.",
+ "Enter your subscription key in the support app in order to increase the user limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Adja meg az előfizetési kulcsát a támogatási alkalmazásban, hogy megnövelje a felhasználókorlátot. Ez a Nextcloud vállalati ajánlatainak további előnyeit is biztosítja, és határozottan ajánlott a céges üzemeltetés esetén.",
"Learn more ↗" : "Tudjon meg többet ↗",
"Preparing update" : "Felkészülés a frissítésre",
"[%d / %d]: %s" : "[%d / %d]: %s",
@@ -99,6 +100,7 @@ OC.L10N.register(
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Ennél a példánynál hiányzik néhány javasolt PHP modul. A jobb teljesítmény és nagyobb kompatibilitás miatt ezek telepítése erősen javallott.",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "Az „imagick” PHP-modul nem engedélyezett, de a témázó alkalmazás igen. A webhelyikonok előállításához telepítenie és engedélyeznie kell ezt a modult.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "A „gmp” vagy a „bcmath” PHP modulok nem engedélyezettek. Ha WebAuthn jelszó nélküli hitelesítést használ, akkor szükség van ezekre a modulokra.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Úgy tűnik, hogy a PHP 32 bites változatát futtatja. a Nextcloud 26-os és újabb verziójához 64 bites szükséges. Frissítse az operációs rendszerét és a PHP-ját 64 bitesre. További információkért olvassa el az erről szóló {linkstart}dokumentációs oldalt ↗{linkend}.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "A php-imagick modul ebben az esetben nem rendelkezik SVG támogatással. A jobb kompatibilitás érdekében ajánlott telepíteni.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "Az adatbázis egyes oszlopaiból hiányzik a big int átalakítás. MIvel a nagy táblák oszloptípusainak megváltoztatása eltarthat egy ideig, azok nem lettek automatikusan megváltoztatva. Az „occ db: convert-filecache-bigint” futtatásával ezek a függőben lévő módosítások kézileg is alkalmazhatók. Ezt a műveletet offline állapotban kell végrehajtani. További részletekért olvassa el a {linkstart}erről szóló dokumentációs oldalt ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Jelenleg SQLite van háttéradatbázisként használva. Nagyobb telepítésekhez javasoljuk, hogy váltson más háttéradatbázisra. ",
@@ -202,6 +204,8 @@ OC.L10N.register(
"An error occurred while searching for {type}" : "Hiba történt a(z) {type} keresése sorá",
"_Please enter {minSearchLength} character or more to search_::_Please enter {minSearchLength} characters or more to search_" : ["A kereséshez írjon be a legalább {minSearchLength} karaktert","A kereséshez írjon be a legalább {minSearchLength} karaktert"],
"This browser is not supported" : "Ez a böngésző nem támogatott.",
+ "Your browser is not supported. Please upgrade to a newer version or a supported one." : "A böngészője nem támogatott. Frissítsen újabb verzióra, vagy váltson egy támogatott böngészőre.",
+ "Continue with this unsupported browser" : "Folytatás ezzel a nem támogatott böngészővel",
"Supported versions" : "Támogatott verziók",
"{name} version {version} and above" : "{name} {version} verziója, és újabb",
"Search {types} …" : "{types} keresése…",
@@ -292,6 +296,7 @@ OC.L10N.register(
"The profile does not exist." : "A profil nem létezik.",
"Back to %s" : "Vissza ide %s",
"Page not found" : "Az oldal nem található",
+ "The page could not be found on the server." : "Az oldal nem található a kiszolgálón.",
"Too many requests" : "Túl sok kérés",
"There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Túl sok kérés érkezett a hálózatától. Próbálja újra később, vagy ha ez egy hiba, akkor forduljon a rendszergazdához.",
"Error" : "Hiba",
@@ -417,6 +422,7 @@ OC.L10N.register(
"More apps menu" : "További alkalmazások menü",
"Settings menu" : "Beállítások menü",
"The password is wrong. Try again." : "A megadott jelszó hibás. Próbálja újra.",
- "Setup two-factor authentication" : "Kétfaktoros hitelesítés beállítása"
+ "Setup two-factor authentication" : "Kétfaktoros hitelesítés beállítása",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Úgy tűnik, hogy a PHP 32 bites változatát futtatja. a Nextcloud 26-os és újabb verziójához 64 bites szükséges. Frissítse az operációs rendszerét és a PHP-ját 64 bitesre. További információkért olvassa el az erről szóló {linkstart}dokumentációs oldalt ↗{linkend}."
},
"nplurals=2; plural=(n != 1);");
diff --git a/core/l10n/hu.json b/core/l10n/hu.json
index 2d2dc8a21c5..f5cf9d0a417 100644
--- a/core/l10n/hu.json
+++ b/core/l10n/hu.json
@@ -38,6 +38,7 @@
"Some of your link shares have been removed" : "Néhány megosztási hivatkozása eltávolításra került",
"Due to a security bug we had to remove some of your link shares. Please see the link for more information." : "Egy biztonsági hiba miatt el kellett távolítsunk néhány megosztási hivatkozását. További információkért lásd a lenti hivatkozást.",
"The user limit of this instance is reached." : "Elérte ennek a példánynak a felhasználói korlátját.",
+ "Enter your subscription key in the support app in order to increase the user limit. This does also grant you all additional benefits that Nextcloud Enterprise offers and is highly recommended for the operation in companies." : "Adja meg az előfizetési kulcsát a támogatási alkalmazásban, hogy megnövelje a felhasználókorlátot. Ez a Nextcloud vállalati ajánlatainak további előnyeit is biztosítja, és határozottan ajánlott a céges üzemeltetés esetén.",
"Learn more ↗" : "Tudjon meg többet ↗",
"Preparing update" : "Felkészülés a frissítésre",
"[%d / %d]: %s" : "[%d / %d]: %s",
@@ -97,6 +98,7 @@
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Ennél a példánynál hiányzik néhány javasolt PHP modul. A jobb teljesítmény és nagyobb kompatibilitás miatt ezek telepítése erősen javallott.",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "Az „imagick” PHP-modul nem engedélyezett, de a témázó alkalmazás igen. A webhelyikonok előállításához telepítenie és engedélyeznie kell ezt a modult.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "A „gmp” vagy a „bcmath” PHP modulok nem engedélyezettek. Ha WebAuthn jelszó nélküli hitelesítést használ, akkor szükség van ezekre a modulokra.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Úgy tűnik, hogy a PHP 32 bites változatát futtatja. a Nextcloud 26-os és újabb verziójához 64 bites szükséges. Frissítse az operációs rendszerét és a PHP-ját 64 bitesre. További információkért olvassa el az erről szóló {linkstart}dokumentációs oldalt ↗{linkend}.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "A php-imagick modul ebben az esetben nem rendelkezik SVG támogatással. A jobb kompatibilitás érdekében ajánlott telepíteni.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "Az adatbázis egyes oszlopaiból hiányzik a big int átalakítás. MIvel a nagy táblák oszloptípusainak megváltoztatása eltarthat egy ideig, azok nem lettek automatikusan megváltoztatva. Az „occ db: convert-filecache-bigint” futtatásával ezek a függőben lévő módosítások kézileg is alkalmazhatók. Ezt a műveletet offline állapotban kell végrehajtani. További részletekért olvassa el a {linkstart}erről szóló dokumentációs oldalt ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Jelenleg SQLite van háttéradatbázisként használva. Nagyobb telepítésekhez javasoljuk, hogy váltson más háttéradatbázisra. ",
@@ -200,6 +202,8 @@
"An error occurred while searching for {type}" : "Hiba történt a(z) {type} keresése sorá",
"_Please enter {minSearchLength} character or more to search_::_Please enter {minSearchLength} characters or more to search_" : ["A kereséshez írjon be a legalább {minSearchLength} karaktert","A kereséshez írjon be a legalább {minSearchLength} karaktert"],
"This browser is not supported" : "Ez a böngésző nem támogatott.",
+ "Your browser is not supported. Please upgrade to a newer version or a supported one." : "A böngészője nem támogatott. Frissítsen újabb verzióra, vagy váltson egy támogatott böngészőre.",
+ "Continue with this unsupported browser" : "Folytatás ezzel a nem támogatott böngészővel",
"Supported versions" : "Támogatott verziók",
"{name} version {version} and above" : "{name} {version} verziója, és újabb",
"Search {types} …" : "{types} keresése…",
@@ -290,6 +294,7 @@
"The profile does not exist." : "A profil nem létezik.",
"Back to %s" : "Vissza ide %s",
"Page not found" : "Az oldal nem található",
+ "The page could not be found on the server." : "Az oldal nem található a kiszolgálón.",
"Too many requests" : "Túl sok kérés",
"There were too many requests from your network. Retry later or contact your administrator if this is an error." : "Túl sok kérés érkezett a hálózatától. Próbálja újra később, vagy ha ez egy hiba, akkor forduljon a rendszergazdához.",
"Error" : "Hiba",
@@ -415,6 +420,7 @@
"More apps menu" : "További alkalmazások menü",
"Settings menu" : "Beállítások menü",
"The password is wrong. Try again." : "A megadott jelszó hibás. Próbálja újra.",
- "Setup two-factor authentication" : "Kétfaktoros hitelesítés beállítása"
+ "Setup two-factor authentication" : "Kétfaktoros hitelesítés beállítása",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Úgy tűnik, hogy a PHP 32 bites változatát futtatja. a Nextcloud 26-os és újabb verziójához 64 bites szükséges. Frissítse az operációs rendszerét és a PHP-ját 64 bitesre. További információkért olvassa el az erről szóló {linkstart}dokumentációs oldalt ↗{linkend}."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/core/l10n/lv.js b/core/l10n/lv.js
index 2cbeb46eb65..16eced8dc0f 100644
--- a/core/l10n/lv.js
+++ b/core/l10n/lv.js
@@ -252,6 +252,7 @@ OC.L10N.register(
"invisible" : "Neredzams",
"File not found" : "Datne nav atrasta",
"More" : "Vairāk",
+ "Settings menu" : "Iestatījumu izvēlne",
"The password is wrong. Try again." : "Nepareiza parole. Mēģiniet vēlreiz."
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/core/l10n/lv.json b/core/l10n/lv.json
index 933a9a36d17..d98d269d5bc 100644
--- a/core/l10n/lv.json
+++ b/core/l10n/lv.json
@@ -250,6 +250,7 @@
"invisible" : "Neredzams",
"File not found" : "Datne nav atrasta",
"More" : "Vairāk",
+ "Settings menu" : "Iestatījumu izvēlne",
"The password is wrong. Try again." : "Nepareiza parole. Mēģiniet vēlreiz."
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
} \ No newline at end of file
diff --git a/core/l10n/pl.js b/core/l10n/pl.js
index a14b7f60d72..0eb01262f2e 100644
--- a/core/l10n/pl.js
+++ b/core/l10n/pl.js
@@ -100,6 +100,7 @@ OC.L10N.register(
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "W tej instancji brakuje niektórych zalecanych modułów PHP. W celu zwiększenia wydajności i lepszej kompatybilności zaleca się ich instalację.",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "Moduł PHP \"imagick\" nie jest włączony, pomimo że aplikacja motywu jest. Aby generowanie favicon działało poprawnie, musisz zainstalować i włączyć ten moduł.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "Moduły PHP \"gmp\" i/lub \"bcmath\" nie są włączone. Jeśli używasz uwierzytelniania WebAuthn bez hasła, te moduły są wymagane.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Wygląda na to, że korzystasz z 32-bitowej wersji PHP. Nextcloud 26 i nowsze wymagają wersji 64-bitowej. Zaktualizuj swój system operacyjny i PHP do wersji 64-bitowej! Aby uzyskać więcej informacji, przeczytaj {linkstart}stronę dokumentacji ↗{linkend} na ten temat.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Moduł php-imagick w tej instancji nie obsługuje formatu SVG. Aby uzyskać lepszą kompatybilność, zaleca się jego zainstalowanie.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "Niektóre kolumny w bazie danych nie zawierają konwersji do big integers. Ze względu na to, że zmiana typów kolumn w dużych tabelach może zająć dużo czasu, nie zostały one zmienione automatycznie. Oczekujące zmiany można wykonać ręcznie, uruchamiając \"occ db:convert-filecache-bigint\". Ta operacja musi zostać wykonana, gdy instancja jest w trybie offline. Więcej informacji na ten temat przeczytasz na {linkstart}stronie dokumentacji ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite jest aktualnie używany jako baza danych. Dla większych instalacji zalecamy przełączenie na inną bazę danych.",
diff --git a/core/l10n/pl.json b/core/l10n/pl.json
index 0a6d299fde6..278050d867d 100644
--- a/core/l10n/pl.json
+++ b/core/l10n/pl.json
@@ -98,6 +98,7 @@
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "W tej instancji brakuje niektórych zalecanych modułów PHP. W celu zwiększenia wydajności i lepszej kompatybilności zaleca się ich instalację.",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "Moduł PHP \"imagick\" nie jest włączony, pomimo że aplikacja motywu jest. Aby generowanie favicon działało poprawnie, musisz zainstalować i włączyć ten moduł.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "Moduły PHP \"gmp\" i/lub \"bcmath\" nie są włączone. Jeśli używasz uwierzytelniania WebAuthn bez hasła, te moduły są wymagane.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "Wygląda na to, że korzystasz z 32-bitowej wersji PHP. Nextcloud 26 i nowsze wymagają wersji 64-bitowej. Zaktualizuj swój system operacyjny i PHP do wersji 64-bitowej! Aby uzyskać więcej informacji, przeczytaj {linkstart}stronę dokumentacji ↗{linkend} na ten temat.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Moduł php-imagick w tej instancji nie obsługuje formatu SVG. Aby uzyskać lepszą kompatybilność, zaleca się jego zainstalowanie.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "Niektóre kolumny w bazie danych nie zawierają konwersji do big integers. Ze względu na to, że zmiana typów kolumn w dużych tabelach może zająć dużo czasu, nie zostały one zmienione automatycznie. Oczekujące zmiany można wykonać ręcznie, uruchamiając \"occ db:convert-filecache-bigint\". Ta operacja musi zostać wykonana, gdy instancja jest w trybie offline. Więcej informacji na ten temat przeczytasz na {linkstart}stronie dokumentacji ↗{linkend}.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "SQLite jest aktualnie używany jako baza danych. Dla większych instalacji zalecamy przełączenie na inną bazę danych.",
diff --git a/core/l10n/tr.js b/core/l10n/tr.js
index b5119dd884b..650070dc035 100644
--- a/core/l10n/tr.js
+++ b/core/l10n/tr.js
@@ -100,6 +100,7 @@ OC.L10N.register(
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Bu kopyada önerilen bazı PHP modülleri eksik. Daha iyi başarım ve uyumluluk için bu modüllerin kurulması önemle önerilir.",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "Tema uygulamasında olmasına rağmen \"imagick\" PHP modülü etkinleştirilmemiş. Favicon oluşturma işleminin doğru çalışması için bu modülü kurmanız ve etkinleştirmeniz gerekir.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "\"gmp\" ve/veya \"bcmath\" PHP modülleri etkinleştirilmemiş. WebAuthn parolasız kimlik doğrulaması kullanıyorsanız, bu modüller gereklidir.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "32 bit bir PHP sürümü çalıştırıyorsunuz gibi görünüyor. Nextcloud 26 sürümü ve üzerinin iyi çalışması için 64 bit kullanılmalıdır. Lütfen işletim sisteminizi ve PHP sürümünüzü 64 bit olacak şekilde yükseltin! Ayrıntılı bilgi almak için {linkstart}ilgili belgeler sayfasına↗{linkend} bakabilirsiniz.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Bu kopyadaki php-imagick modülünde SVG desteği yok. Daha iyi başarım ve uyumluluk için bu modülün kurulması önemle önerilir.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "Veritabanında büyük tamsayıya dönüştürülecek bazı sütunlar eksik. Sütun türlerini büyük tablolara dönüştürme işlemi uzun sürebileceğinden bu işlem otomatik olarak yapılmaz. Sunucunuz normal çalışırken bekleyen değişiklikleri el ile uygulamak için \"occ db:convert-filecache-bigint\" komutunu yürütün. Bu işlem yapılırken Nextcloud kopyası çevrimdışı olur. Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Şu anda veritabanı olarak SQLite kullanılıyor. Daha büyük kurulumlar için farklı bir veritabanı arka ucuna geçmenizi öneriyoruz.",
diff --git a/core/l10n/tr.json b/core/l10n/tr.json
index 9c94ea07c15..f70ca3a7472 100644
--- a/core/l10n/tr.json
+++ b/core/l10n/tr.json
@@ -98,6 +98,7 @@
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "Bu kopyada önerilen bazı PHP modülleri eksik. Daha iyi başarım ve uyumluluk için bu modüllerin kurulması önemle önerilir.",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "Tema uygulamasında olmasına rağmen \"imagick\" PHP modülü etkinleştirilmemiş. Favicon oluşturma işleminin doğru çalışması için bu modülü kurmanız ve etkinleştirmeniz gerekir.",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "\"gmp\" ve/veya \"bcmath\" PHP modülleri etkinleştirilmemiş. WebAuthn parolasız kimlik doğrulaması kullanıyorsanız, bu modüller gereklidir.",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "32 bit bir PHP sürümü çalıştırıyorsunuz gibi görünüyor. Nextcloud 26 sürümü ve üzerinin iyi çalışması için 64 bit kullanılmalıdır. Lütfen işletim sisteminizi ve PHP sürümünüzü 64 bit olacak şekilde yükseltin! Ayrıntılı bilgi almak için {linkstart}ilgili belgeler sayfasına↗{linkend} bakabilirsiniz.",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Bu kopyadaki php-imagick modülünde SVG desteği yok. Daha iyi başarım ve uyumluluk için bu modülün kurulması önemle önerilir.",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "Veritabanında büyük tamsayıya dönüştürülecek bazı sütunlar eksik. Sütun türlerini büyük tablolara dönüştürme işlemi uzun sürebileceğinden bu işlem otomatik olarak yapılmaz. Sunucunuz normal çalışırken bekleyen değişiklikleri el ile uygulamak için \"occ db:convert-filecache-bigint\" komutunu yürütün. Bu işlem yapılırken Nextcloud kopyası çevrimdışı olur. Ayrıntılı bilgi almak için {linkstart}belgeler ↗{linkend} bölümüne bakabilirsiniz.",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Şu anda veritabanı olarak SQLite kullanılıyor. Daha büyük kurulumlar için farklı bir veritabanı arka ucuna geçmenizi öneriyoruz.",
diff --git a/core/l10n/zh_HK.js b/core/l10n/zh_HK.js
index 3faaa167b03..adf83a59fe7 100644
--- a/core/l10n/zh_HK.js
+++ b/core/l10n/zh_HK.js
@@ -100,6 +100,7 @@ OC.L10N.register(
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "您的 Nextcloud 缺少了某些建議的 PHP 模組。為了提升效能與相容性,強烈建議您安裝這些 PHP 模組。",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "雖然已啟用佈景主題應用程式,但並未啟用 PHP 模組「imagick」。為了讓 favicon 產生流程正常運作,您必須安裝並啟用此模組。",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "未啟用 PHP 模組「gmp」與「bcmath」。若您要使用 WebAuthn 免密碼驗證,這些模組就是必要的。",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "您似乎正在執行 32 位元版本的 PHP。Nextcloud 26 或更新版本需要使用 64 位元的版本。請將您的作業系統與 PHP 升級至 64 位元!要取得更多詳細資訊,請閱讀{linkstart}關於此問題的文件 ↗{linkend}。",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "本系統安裝的 php-imagick 不支援 SVG,為了更好的相容性,建議安裝它。",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "數據庫中的某些列缺少對 big int 的轉換。由於更改大表上的列類型可能需要一些時間,因此無法自動更改它們。通過運行 “occ db:convert-filecache-bigint”,可以手動應用這些未決的更改。實例處於脫機狀態時需要執行此操作。有關更多詳細信息,請{linklink}關於此↗{linkend}的文檔頁面。",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "目前您的後端數據庫使用 SQLite,在大型服務當中,我們建議您使用其他的數據庫後端。",
diff --git a/core/l10n/zh_HK.json b/core/l10n/zh_HK.json
index df4b85916df..91de4afd3d4 100644
--- a/core/l10n/zh_HK.json
+++ b/core/l10n/zh_HK.json
@@ -98,6 +98,7 @@
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "您的 Nextcloud 缺少了某些建議的 PHP 模組。為了提升效能與相容性,強烈建議您安裝這些 PHP 模組。",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "雖然已啟用佈景主題應用程式,但並未啟用 PHP 模組「imagick」。為了讓 favicon 產生流程正常運作,您必須安裝並啟用此模組。",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "未啟用 PHP 模組「gmp」與「bcmath」。若您要使用 WebAuthn 免密碼驗證,這些模組就是必要的。",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "您似乎正在執行 32 位元版本的 PHP。Nextcloud 26 或更新版本需要使用 64 位元的版本。請將您的作業系統與 PHP 升級至 64 位元!要取得更多詳細資訊,請閱讀{linkstart}關於此問題的文件 ↗{linkend}。",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "本系統安裝的 php-imagick 不支援 SVG,為了更好的相容性,建議安裝它。",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "數據庫中的某些列缺少對 big int 的轉換。由於更改大表上的列類型可能需要一些時間,因此無法自動更改它們。通過運行 “occ db:convert-filecache-bigint”,可以手動應用這些未決的更改。實例處於脫機狀態時需要執行此操作。有關更多詳細信息,請{linklink}關於此↗{linkend}的文檔頁面。",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "目前您的後端數據庫使用 SQLite,在大型服務當中,我們建議您使用其他的數據庫後端。",
diff --git a/core/l10n/zh_TW.js b/core/l10n/zh_TW.js
index 4613141515a..42852d69958 100644
--- a/core/l10n/zh_TW.js
+++ b/core/l10n/zh_TW.js
@@ -100,6 +100,7 @@ OC.L10N.register(
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "您的 Nextcloud 缺少了某些建議的 PHP 模組。為了提升效能與相容性,強烈建議您安裝這些 PHP 模組。",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "雖然已啟用佈景主題應用程式,但並未啟用 PHP 模組「imagick」。為了讓 favicon 產生流程正常運作,您必須安裝並啟用此模組。",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "未啟用 PHP 模組「gmp」與「bcmath」。若您要使用 WebAuthn 免密碼驗證,這些模組就是必要的。",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "您似乎正在執行 32 位元版本的 PHP。Nextcloud 26 或更新版本需要使用 64 位元的版本。請將您的作業系統與 PHP 升級至 64 位元!要取得更多詳細資訊,請閱讀關於此問題的{linkstart}文件 ↗{linkend}。",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "系統安裝的 php-imagick 不支援 SVG,為了更好的相容性,建議安裝它。",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "資料庫的有些欄位缺少 big int 格式轉換。因為欄位格式轉換需要一些時間,所以沒有自動轉換。您可以執行 \"occ db:convert-filecache-bigint\" 手動完成轉換,轉換時 Nextcloud 服務必須處於離線狀態。詳情請參閱{linkstart}關於這個問題的文件頁面 ↗{linkend}。",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "目前您的後端資料庫使用 SQLite,在大型服務當中,我們建議您使用其他的資料庫後端。",
diff --git a/core/l10n/zh_TW.json b/core/l10n/zh_TW.json
index 4ec0c131f47..7e7071252ca 100644
--- a/core/l10n/zh_TW.json
+++ b/core/l10n/zh_TW.json
@@ -98,6 +98,7 @@
"This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "您的 Nextcloud 缺少了某些建議的 PHP 模組。為了提升效能與相容性,強烈建議您安裝這些 PHP 模組。",
"The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "雖然已啟用佈景主題應用程式,但並未啟用 PHP 模組「imagick」。為了讓 favicon 產生流程正常運作,您必須安裝並啟用此模組。",
"The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "未啟用 PHP 模組「gmp」與「bcmath」。若您要使用 WebAuthn 免密碼驗證,這些模組就是必要的。",
+ "It seems like you are running a 32-bit PHP version. Nextcloud 26 and higher require 64-bit. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page ↗{linkend} about this." : "您似乎正在執行 32 位元版本的 PHP。Nextcloud 26 或更新版本需要使用 64 位元的版本。請將您的作業系統與 PHP 升級至 64 位元!要取得更多詳細資訊,請閱讀關於此問題的{linkstart}文件 ↗{linkend}。",
"Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "系統安裝的 php-imagick 不支援 SVG,為了更好的相容性,建議安裝它。",
"Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "資料庫的有些欄位缺少 big int 格式轉換。因為欄位格式轉換需要一些時間,所以沒有自動轉換。您可以執行 \"occ db:convert-filecache-bigint\" 手動完成轉換,轉換時 Nextcloud 服務必須處於離線狀態。詳情請參閱{linkstart}關於這個問題的文件頁面 ↗{linkend}。",
"SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "目前您的後端資料庫使用 SQLite,在大型服務當中,我們建議您使用其他的資料庫後端。",
diff --git a/dist/comments-comments-app.js b/dist/comments-comments-app.js
index e10ee6cb0a0..07980bb673f 100644
--- a/dist/comments-comments-app.js
+++ b/dist/comments-comments-app.js
@@ -1,3 +1,3 @@
/*! For license information please see comments-comments-app.js.LICENSE.txt */
-!function(){var n,e={71669:function(n,e,r){"use strict";var o=r(17499),s=r(9944),a=r(79753),i=r(22200),c=r(16453),u=r(4820),m=r(34741),l=r(20144),d=r(93455),p=r.n(d),f=r(10861),h=r.n(f),g=r(8466),v=r(63388),A=r(1252),C=r(80351),j=r.n(C),y=r(45400),b=r.n(y),_=r(12945),w=r.n(_),x=r(875),k=r.n(x),O=r(75925),R=r.n(O),P=r(12323),D=r.n(P),I=r(13408),N=r.n(I),E=r(45947),T={name:"Moment",props:{timestamp:{type:Number,required:!0},format:{type:String,default:"LLL"}},computed:{title:function(){return j().unix(this.timestamp).format(this.format)},formatted:function(){return j().unix(this.timestamp).fromNow()}}},S=r(51900),M=(0,S.Z)(T,(function(){var n=this,t=n.$createElement;return(n._self._c||t)("span",{staticClass:"live-relative-timestamp",attrs:{"data-timestamp":1e3*n.timestamp,title:n.title}},[n._v(n._s(n.formatted))])}),[],!1,null,null,null).exports,z=function(){return(0,a.generateRemoteUrl)("dav/comments")},B=r(81063);u.default.defaults.headers["X-Requested-With"]="XMLHttpRequest",(0,B.getPatcher)().patch("request",u.default);var q=(0,B.createClient)(z());function Z(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function $(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){Z(s,r,o,a,i,"next",n)}function i(n){Z(s,r,o,a,i,"throw",n)}a(void 0)}))}}function U(n,t,e){return L.apply(this,arguments)}function L(){return(L=$(regeneratorRuntime.mark((function n(t,e,r){var o,s,a,c,m;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=["",t,e].join("/"),n.next=3,u.default.post(z()+o,{actorDisplayName:(0,i.getCurrentUser)().displayName,actorId:(0,i.getCurrentUser)().uid,actorType:"users",creationDateTime:(new Date).toUTCString(),message:r,objectType:"files",verb:"comment"});case 3:return s=n.sent,a=parseInt(s.headers["content-location"].split("/").pop()),c=o+"/"+a,n.next=8,q.stat(c,{details:!0});case 8:return m=n.sent,n.abrupt("return",m.data);case 10:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function F(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function G(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){F(s,r,o,a,i,"next",n)}function i(n){F(s,r,o,a,i,"throw",n)}a(void 0)}))}}function H(n,t,e){return V.apply(this,arguments)}function V(){return(V=G(regeneratorRuntime.mark((function n(t,e,r){var o;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=["",t,e,r].join("/"),n.next=3,q.deleteFile(o);case 3:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function W(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function Q(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){W(s,r,o,a,i,"next",n)}function i(n){W(s,r,o,a,i,"throw",n)}a(void 0)}))}}function X(n,t,e,r){return Y.apply(this,arguments)}function Y(){return(Y=Q(regeneratorRuntime.mark((function n(t,e,r,o){var s;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return s=["",t,e,r].join("/"),n.next=3,q.customRequest(s,Object.assign({method:"PROPPATCH",data:'<?xml version="1.0"?>\n\t\t\t<d:propertyupdate\n\t\t\t\txmlns:d="DAV:"\n\t\t\t\txmlns:oc="http://owncloud.org/ns">\n\t\t\t<d:set>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<oc:message>'.concat(o,"</oc:message>\n\t\t\t\t</d:prop>\n\t\t\t</d:set>\n\t\t\t</d:propertyupdate>")}));case 3:return n.abrupt("return",n.sent);case 4:case"end":return n.stop()}}),n)})))).apply(this,arguments)}var K=r(26932);function J(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function nn(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){J(s,r,o,a,i,"next",n)}function i(n){J(s,r,o,a,i,"throw",n)}a(void 0)}))}}var tn={props:{id:{type:Number,default:null},message:{type:String,default:""},ressourceId:{type:[String,Number],required:!0}},data:function(){return{deleted:!1,editing:!1,loading:!1}},methods:{onEdit:function(){this.editing=!0},onEditCancel:function(){this.editing=!1,this.updateLocalMessage(this.message)},onEditComment:function(n){var e=this;return nn(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return e.loading=!0,r.prev=1,r.next=4,X(e.commentsType,e.ressourceId,e.id,n);case 4:e.logger.debug("Comment edited",{commentsType:e.commentsType,ressourceId:e.ressourceId,id:e.id,message:n}),e.$emit("update:message",n),e.editing=!1,r.next=13;break;case 9:r.prev=9,r.t0=r.catch(1),(0,K.x2)(t("comments","An error occurred while trying to edit the comment")),console.error(r.t0);case 13:return r.prev=13,e.loading=!1,r.finish(13);case 16:case"end":return r.stop()}}),r,null,[[1,9,13,16]])})))()},onDeleteWithUndo:function(){var n=this;this.deleted=!0;var e=setTimeout(this.onDelete,K.et);(0,K.yl)(t("comments","Comment deleted"),(function(){clearTimeout(e),n.deleted=!1}))},onDelete:function(){var n=this;return nn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,H(n.commentsType,n.ressourceId,n.id);case 3:n.logger.debug("Comment deleted",{commentsType:n.commentsType,ressourceId:n.ressourceId,id:n.id}),n.$emit("delete",n.id),e.next=12;break;case 7:e.prev=7,e.t0=e.catch(0),(0,K.x2)(t("comments","An error occurred while trying to delete the comment")),console.error(e.t0),n.deleted=!1;case 12:case"end":return e.stop()}}),e,null,[[0,7]])})))()},onNewComment:function(n){var e=this;return nn(regeneratorRuntime.mark((function r(){var o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return e.loading=!0,r.prev=1,r.next=4,U(e.commentsType,e.ressourceId,n);case 4:o=r.sent,e.logger.debug("New comment posted",{commentsType:e.commentsType,ressourceId:e.ressourceId,newComment:o}),e.$emit("new",o),e.$emit("update:message",""),e.localMessage="",r.next=15;break;case 11:r.prev=11,r.t0=r.catch(1),(0,K.x2)(t("comments","An error occurred while trying to create the comment")),console.error(r.t0);case 15:return r.prev=15,e.loading=!1,r.finish(15);case 18:case"end":return r.stop()}}),r,null,[[1,11,15,18]])})))()}}},en={name:"Comment",components:{NcActionButton:b(),NcActions:w(),NcActionSeparator:k(),ArrowRight:E.default,NcAvatar:R(),NcButton:h(),Moment:M,NcRichContenteditable:D()},mixins:[N(),tn],inheritAttrs:!1,props:{actorDisplayName:{type:String,required:!0},actorId:{type:String,required:!0},creationDateTime:{type:String,default:null},editor:{type:Boolean,default:!1},autoComplete:{type:Function,required:!0}},data:function(){return{expanded:!1,localMessage:""}},computed:{isOwnComment:function(){return(0,i.getCurrentUser)().uid===this.actorId},renderedContent:function(){return this.isEmptyMessage?"":this.renderContent(this.localMessage)},isEmptyMessage:function(){return!this.localMessage||""===this.localMessage.trim()},timestamp:function(){return parseInt(j()(this.creationDateTime).format("x"),10)/1e3}},watch:{message:function(n){this.updateLocalMessage(n)}},beforeMount:function(){this.updateLocalMessage(this.message)},methods:{updateLocalMessage:function(n){this.localMessage=n.toString()},onSubmit:function(){var n=this;if(""!==this.localMessage.trim())return this.editor?(this.onNewComment(this.localMessage.trim()),void this.$nextTick((function(){n.$refs.editor.$el.focus()}))):void this.onEditComment(this.localMessage.trim())},onExpand:function(){this.expanded=!0}}},rn=r(93379),on=r.n(rn),sn=r(7795),an=r.n(sn),cn=r(90569),un=r.n(cn),mn=r(3565),ln=r.n(mn),dn=r(19216),pn=r.n(dn),fn=r(44589),hn=r.n(fn),gn=r(9604),vn={};vn.styleTagTransform=hn(),vn.setAttributes=ln(),vn.insert=un().bind(null,"head"),vn.domAPI=an(),vn.insertStyleElement=pn(),on()(gn.Z,vn),gn.Z&&gn.Z.locals&&gn.Z.locals;var An=(0,S.Z)(en,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{directives:[{name:"show",rawName:"v-show",value:!n.deleted,expression:"!deleted"}],staticClass:"comment",class:{"comment--loading":n.loading}},[e("div",{staticClass:"comment__header"},[e("NcAvatar",{staticClass:"comment__avatar",attrs:{"display-name":n.actorDisplayName,user:n.actorId,size:32}}),n._v(" "),e("span",{staticClass:"comment__author"},[n._v(n._s(n.actorDisplayName))]),n._v(" "),n.isOwnComment&&n.id&&!n.loading?e("NcActions",{staticClass:"comment__actions"},[n.editing?e("NcActionButton",{attrs:{icon:"icon-close"},on:{click:n.onEditCancel}},[n._v("\n\t\t\t\t"+n._s(n.t("comments","Cancel edit"))+"\n\t\t\t")]):[e("NcActionButton",{attrs:{"close-after-click":!0,icon:"icon-rename"},on:{click:n.onEdit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("comments","Edit comment"))+"\n\t\t\t\t")]),n._v(" "),e("NcActionSeparator"),n._v(" "),e("NcActionButton",{attrs:{"close-after-click":!0,icon:"icon-delete"},on:{click:n.onDeleteWithUndo}},[n._v("\n\t\t\t\t\t"+n._s(n.t("comments","Delete comment"))+"\n\t\t\t\t")])]],2):n._e(),n._v(" "),n.id&&n.loading?e("div",{staticClass:"comment_loading icon-loading-small"}):n.creationDateTime?e("Moment",{staticClass:"comment__timestamp",attrs:{timestamp:n.timestamp}}):n._e()],1),n._v(" "),n.editor||n.editing?e("div",{staticClass:"comment__editor"},[e("NcRichContenteditable",{ref:"editor",attrs:{"auto-complete":n.autoComplete,contenteditable:!n.loading,value:n.localMessage},on:{"update:value":n.updateLocalMessage,submit:n.onSubmit}}),n._v(" "),e("NcButton",{staticClass:"comment__submit",attrs:{type:"tertiary-no-background","native-type":"submit","aria-label":n.t("comments","Post comment"),disabled:n.isEmptyMessage},on:{click:n.onSubmit},scopedSlots:n._u([{key:"icon",fn:function(){return[n.loading?e("span",{staticClass:"icon-loading-small"}):e("ArrowRight",{attrs:{size:20}})]},proxy:!0}],null,!1,2357784758)})],1):e("div",{staticClass:"comment__message",class:{"comment__message--expanded":n.expanded},domProps:{innerHTML:n._s(n.renderedContent)},on:{click:n.onExpand}})])}),[],!1,null,"d797e6e4",null).exports,Cn=r(7582),jn=r(18635);function yn(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),e.push.apply(e,r)}return e}function bn(n){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?yn(Object(e),!0).forEach((function(t){_n(n,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):yn(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}function _n(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}function wn(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function xn(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){wn(s,r,o,a,i,"next",n)}function i(n){wn(s,r,o,a,i,"throw",n)}a(void 0)}))}}var kn=20;function On(n){return Rn.apply(this,arguments)}function Rn(){return Rn=xn(regeneratorRuntime.mark((function n(t){var e,r,o,s,a,i=arguments;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=t.commentsType,r=t.ressourceId,o=i.length>1&&void 0!==i[1]?i[1]:{},s=null,a=["",e,r].join("/"),n.next=6,q.customRequest(a,Object.assign({method:"REPORT",data:'<?xml version="1.0"?>\n\t\t\t<oc:filter-comments\n\t\t\t\txmlns:d="DAV:"\n\t\t\t\txmlns:oc="http://owncloud.org/ns"\n\t\t\t\txmlns:nc="http://nextcloud.org/ns"\n\t\t\t\txmlns:ocs="http://open-collaboration-services.org/ns">\n\t\t\t\t<oc:limit>'.concat(kn,"</oc:limit>\n\t\t\t\t<oc:offset>").concat(o.offset||0,"</oc:offset>\n\t\t\t</oc:filter-comments>")},o)).then((function(n){return s=n,n.data})).then(Cn.parseXML).then((function(n){return Pn(n,!0)})).then((function(n){return(0,jn.processResponsePayload)(s,n,!0)})).then((function(n){return n.data}));case 6:return n.abrupt("return",n.sent);case 7:case"end":return n.stop()}}),n)}))),Rn.apply(this,arguments)}function Pn(n){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],e=n.multistatus.response;return e.map((function(n){var e=n.propstat.prop,r=bn(bn({},e),{},{actorDisplayName:Dn(e.actorDisplayName,2),message:Dn(e.message,2)});return(0,Cn.prepareFileFromProps)(r,r.id.toString(),t)}))}function Dn(n){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,e=new DOMParser,r=n,o=0;o<t;o++)r=e.parseFromString(r,"text/html").documentElement.textContent;return r}function In(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}var Nn=function(n){var t=u.default.CancelToken.source(),e=function(){var e,r=(e=regeneratorRuntime.mark((function e(r,o){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",n(r,Object.assign({cancelToken:t.token},o)));case 1:case"end":return e.stop()}}),e)})),function(){var n=this,t=arguments;return new Promise((function(r,o){var s=e.apply(n,t);function a(n){In(s,r,o,a,i,"next",n)}function i(n){In(s,r,o,a,i,"throw",n)}a(void 0)}))});return function(n,t){return r.apply(this,arguments)}}();return{request:e,cancel:t.cancel}};function En(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,r=new Array(t);e<t;e++)r[e]=n[e];return r}function Tn(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function Sn(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){Tn(s,r,o,a,i,"next",n)}function i(n){Tn(s,r,o,a,i,"throw",n)}a(void 0)}))}}l.ZP.use(m.default);var Mn={name:"Comments",components:{Comment:An,NcEmptyContent:p(),NcButton:h(),RefreshIcon:g.Z,MessageReplyTextIcon:v.Z,AlertCircleOutlineIcon:A.default},data:function(){return{error:"",loading:!1,done:!1,ressourceId:null,offset:0,comments:[],cancelRequest:function(){},editorData:{actorDisplayName:(0,i.getCurrentUser)().displayName,actorId:(0,i.getCurrentUser)().uid,key:"editor"},Comment:An}},computed:{hasComments:function(){return this.comments.length>0},isFirstLoading:function(){return this.loading&&0===this.offset}},methods:{update:function(n){var t=this;return Sn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.ressourceId=n,t.resetState(),t.getComments();case 3:case"end":return e.stop()}}),e)})))()},onScrollBottomReached:function(){this.error||this.done||this.loading||this.getComments()},genMentionsData:function(n){return Object.values(n).flat().reduce((function(n,t){return n[t.mentionId]={icon:"icon-user",id:t.mentionId,label:t.mentionDisplayName,source:"users",primary:(0,i.getCurrentUser)().uid===t.mentionId},n}),{})},getComments:function(){var n=this;return Sn(regeneratorRuntime.mark((function e(){var r,o,s,a,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.cancelRequest("cancel"),e.prev=1,n.loading=!0,n.error="",o=Nn(On),s=o.request,a=o.cancel,n.cancelRequest=a,e.next=8,s({commentsType:n.commentsType,ressourceId:n.ressourceId},{offset:n.offset});case 8:i=e.sent,n.logger.debug("Processed ".concat(i.length," comments"),{comments:i}),i.length<kn&&(n.done=!0),(r=n.comments).push.apply(r,function(n){if(Array.isArray(n))return En(n)}(c=i)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(c)||function(n,t){if(n){if("string"==typeof n)return En(n,t);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?En(n,t):void 0}}(c)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),n.offset+=kn,e.next=21;break;case 15:if(e.prev=15,e.t0=e.catch(1),"cancel"!==e.t0.message){e.next=19;break}return e.abrupt("return");case 19:n.error=t("comments","Unable to load the comments list"),console.error("Error loading the comments list",e.t0);case 21:return e.prev=21,n.loading=!1,e.finish(21);case 24:case"end":return e.stop()}var c}),e,null,[[1,15,21,24]])})))()},autoComplete:function(n,t){var e=this;return Sn(regeneratorRuntime.mark((function r(){var o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,u.default.get((0,a.generateOcsUrl)("core/autocomplete/get"),{params:{search:n,itemType:"files",itemId:e.ressourceId,sorter:"commenters|share-recipients",limit:(0,c.loadState)("comments","maxAutoCompleteResults")}});case 2:return o=r.sent,r.abrupt("return",t(o.data.ocs.data));case 4:case"end":return r.stop()}}),r)})))()},onNewComment:function(n){this.comments.unshift(n)},onDelete:function(n){var t=this.comments.findIndex((function(t){return t.props.id===n}));t>-1?this.comments.splice(t,1):console.error("Could not find the deleted comment in the list",n)},resetState:function(){this.error="",this.loading=!1,this.done=!1,this.offset=0,this.comments=[]}}},zn=r(94773),Bn={};Bn.styleTagTransform=hn(),Bn.setAttributes=ln(),Bn.insert=un().bind(null,"head"),Bn.domAPI=an(),Bn.insertStyleElement=pn(),on()(zn.Z,Bn),zn.Z&&zn.Z.locals&&zn.Z.locals;var qn=(0,S.Z)(Mn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"comments",class:{"icon-loading":n.isFirstLoading}},[e("Comment",n._b({staticClass:"comments__writer",attrs:{"auto-complete":n.autoComplete,editor:!0,"ressource-id":n.ressourceId},on:{new:n.onNewComment}},"Comment",n.editorData,!1)),n._v(" "),n.isFirstLoading?n._e():[!n.hasComments&&n.done?e("NcEmptyContent",{staticClass:"comments__empty",attrs:{title:n.t("comments","No comments yet, start the conversation!")},scopedSlots:n._u([{key:"icon",fn:function(){return[e("MessageReplyTextIcon")]},proxy:!0}],null,!1,1033639148)}):n._l(n.comments,(function(t){return e("Comment",n._b({key:t.props.id,staticClass:"comments__list",attrs:{"auto-complete":n.autoComplete,message:t.props.message,"ressource-id":n.ressourceId,"user-data":n.genMentionsData(t.props.mentions)},on:{"update:message":function(e){return n.$set(t.props,"message",e)},delete:n.onDelete}},"Comment",t.props,!1))})),n._v(" "),n.loading&&!n.isFirstLoading?e("div",{staticClass:"comments__info icon-loading"}):n.hasComments&&n.done?e("div",{staticClass:"comments__info"},[n._v("\n\t\t\t"+n._s(n.t("comments","No more messages"))+"\n\t\t")]):n.error?[e("NcEmptyContent",{staticClass:"comments__error",attrs:{title:n.error},scopedSlots:n._u([{key:"icon",fn:function(){return[e("AlertCircleOutlineIcon")]},proxy:!0}],null,!1,66050004)}),n._v(" "),e("NcButton",{staticClass:"comments__retry",on:{click:n.getComments},scopedSlots:n._u([{key:"icon",fn:function(){return[e("RefreshIcon")]},proxy:!0}],null,!1,3924573781)},[n._v("\n\t\t\t\t"+n._s(n.t("comments","Retry"))+"\n\t\t\t")])]:n._e()]],2)}),[],!1,null,"562a4c76",null).exports;function Zn(n,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}function $n(n,t,e){return t&&Zn(n.prototype,t),e&&Zn(n,e),Object.defineProperty(n,"prototype",{writable:!1}),n}function Un(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}var Ln=(0,o.IY)().setApp("comments").detectUser().build();l.ZP.mixin({data:function(){return{logger:Ln}},methods:{t:s.translate,n:s.translatePlural}});var Fn=$n((function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"files",e=arguments.length>1?arguments[1]:void 0;Un(this,n),l.ZP.mixin({data:function(){return{commentsType:t}}});var r=l.ZP.extend(qn);return new r(e)}));window.OCA&&!window.OCA.Comments&&Object.assign(window.OCA,{Comments:{}}),Object.assign(window.OCA.Comments,{View:Fn}),console.debug("OCA.Comments.View initialized")},9604:function(n,t,e){"use strict";var r=e(87537),o=e.n(r),s=e(23645),a=e.n(s)()(o());a.push([n.id,".comment[data-v-d797e6e4]{position:relative;padding:10px 0 15px}.comment__header[data-v-d797e6e4]{display:flex;align-items:center;min-height:44px;padding:5px 0}.comment__author[data-v-d797e6e4],.comment__actions[data-v-d797e6e4]{margin-left:10px !important}.comment__author[data-v-d797e6e4]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-d797e6e4],.comment__timestamp[data-v-d797e6e4]{margin-left:auto;color:var(--color-text-maxcontrast)}.comment__editor[data-v-d797e6e4],.comment__message[data-v-d797e6e4]{position:relative;padding-left:42px}.comment__submit[data-v-d797e6e4]{position:absolute !important;right:0;bottom:0;margin:1px}.comment__message[data-v-d797e6e4]{white-space:pre-wrap;word-break:break-word;max-height:70px;overflow:hidden}.comment__message--expanded[data-v-d797e6e4]{max-height:none;overflow:visible}.rich-contenteditable__input[data-v-d797e6e4]{min-height:44px;margin:0;padding:10px}","",{version:3,sources:["webpack://./apps/comments/src/components/Comment.vue"],names:[],mappings:"AAkQA,0BACC,iBAAA,CACA,mBAAA,CAEA,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,qEAEC,2BAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,gBAAA,CACA,mCAAA,CAGD,qEAEC,iBAAA,CAEA,iBAAA,CAGD,kCACC,4BAAA,CACA,OAAA,CACA,QAAA,CAEA,UAAA,CAGD,mCACC,oBAAA,CACA,qBAAA,CACA,eAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YA7DiB",sourcesContent:['\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@use "sass:math";\n\n$comment-padding: 10px;\n\n.comment {\n\tposition: relative;\n\tpadding: $comment-padding 0 $comment-padding * 1.5;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmin-height: 44px;\n\t\tpadding: math.div($comment-padding, 2) 0;\n\t}\n\n\t&__author,\n\t&__actions {\n\t\tmargin-left: $comment-padding !important;\n\t}\n\n\t&__author {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&_loading,\n\t&__timestamp {\n\t\tmargin-left: auto;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__editor,\n\t&__message {\n\t\tposition: relative;\n\t\t// Avatar size, align with author name\n\t\tpadding-left: 32px + $comment-padding;\n\t}\n\n\t&__submit {\n\t\tposition: absolute !important;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\t// Align with input border\n\t\tmargin: 1px;\n\t}\n\n\t&__message {\n\t\twhite-space: pre-wrap;\n\t\tword-break: break-word;\n\t\tmax-height: 70px;\n\t\toverflow: hidden;\n\t\t&--expanded {\n\t\t\tmax-height: none;\n\t\t\toverflow: visible;\n\t\t}\n\t}\n}\n\n.rich-contenteditable__input {\n\tmin-height: 44px;\n\tmargin: 0;\n\tpadding: $comment-padding;\n}\n\n'],sourceRoot:""}]),t.Z=a},94773:function(n,t,e){"use strict";var r=e(87537),o=e.n(r),s=e(23645),a=e.n(s)()(o());a.push([n.id,".comments__empty[data-v-562a4c76],.comments__error[data-v-562a4c76]{margin-top:0 !important}.comments__retry[data-v-562a4c76]{margin:0 auto}.comments__info[data-v-562a4c76]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}","",{version:3,sources:["webpack://./apps/comments/src/views/Comments.vue"],names:[],mappings:"AAwSC,oEAEC,uBAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.comments {\n\t// Do not add emptycontent top margin\n\t&__empty,\n\t&__error {\n\t\tmargin-top: 0 !important;\n\t}\n\n\t&__retry {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__info {\n\t\theight: 60px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\ttext-align: center;\n\t\tline-height: 60px;\n\t}\n}\n"],sourceRoot:""}]),t.Z=a},46700:function(n,t,e){var r={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function o(n){var t=s(n);return e(t)}function s(n){if(!e.o(r,n)){var t=new Error("Cannot find module '"+n+"'");throw t.code="MODULE_NOT_FOUND",t}return r[n]}o.keys=function(){return Object.keys(r)},o.resolve=s,n.exports=o,o.id=46700},69862:function(){},40964:function(){}},r={};function o(n){var t=r[n];if(void 0!==t)return t.exports;var s=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}o.m=e,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(t,e,r,s){if(!e){var a=1/0;for(m=0;m<n.length;m++){e=n[m][0],r=n[m][1],s=n[m][2];for(var i=!0,c=0;c<e.length;c++)(!1&s||a>=s)&&Object.keys(o.O).every((function(n){return o.O[n](e[c])}))?e.splice(c--,1):(i=!1,s<a&&(a=s));if(i){n.splice(m--,1);var u=r();void 0!==u&&(t=u)}}return t}s=s||0;for(var m=n.length;m>0&&n[m-1][2]>s;m--)n[m]=n[m-1];n[m]=[e,r,s]},o.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return o.d(t,{a:t}),t},o.d=function(n,t){for(var e in t)o.o(t,e)&&!o.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),o.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},o.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},o.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},o.j=6335,function(){o.b=document.baseURI||self.location.href;var n={6335:0};o.O.j=function(t){return 0===n[t]};var t=function(t,e){var r,s,a=e[0],i=e[1],c=e[2],u=0;if(a.some((function(t){return 0!==n[t]}))){for(r in i)o.o(i,r)&&(o.m[r]=i[r]);if(c)var m=c(o)}for(t&&t(e);u<a.length;u++)s=a[u],o.o(n,s)&&n[s]&&n[s][0](),n[s]=0;return o.O(m)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),o.nc=void 0;var s=o.O(void 0,[7874],(function(){return o(71669)}));s=o.O(s)}();
-//# sourceMappingURL=comments-comments-app.js.map?v=c2662c38290d4dddfcd8 \ No newline at end of file
+!function(){var n,e={79252:function(n,e,r){"use strict";var o=r(17499),s=r(9944),a=r(79753),i=r(22200),c=r(16453),u=r(4820),m=r(34741),l=r(20144),d=r(93455),p=r.n(d),f=r(10861),h=r.n(f),g=r(8466),v=r(63388),A=r(1252),C=r(80351),j=r.n(C),y=r(45400),b=r.n(y),_=r(12945),w=r.n(_),x=r(875),k=r.n(x),O=r(75925),R=r.n(O),P=r(12323),D=r.n(P),N=r(13408),I=r.n(N),E=r(45947),T={name:"Moment",props:{timestamp:{type:Number,required:!0},format:{type:String,default:"LLL"}},computed:{title:function(){return j().unix(this.timestamp).format(this.format)},formatted:function(){return j().unix(this.timestamp).fromNow()}}},S=r(51900),M=(0,S.Z)(T,(function(){var n=this,t=n.$createElement;return(n._self._c||t)("span",{staticClass:"live-relative-timestamp",attrs:{"data-timestamp":1e3*n.timestamp,title:n.title}},[n._v(n._s(n.formatted))])}),[],!1,null,null,null).exports,z=function(){return(0,a.generateRemoteUrl)("dav/comments")};function B(n){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,e=new DOMParser,r=n,o=0;o<t;o++)r=e.parseFromString(r,"text/html").documentElement.textContent;return r}var q=r(81063);u.default.defaults.headers["X-Requested-With"]="XMLHttpRequest",(0,q.getPatcher)().patch("request",u.default);var Z=(0,q.createClient)(z());function $(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function U(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){$(s,r,o,a,i,"next",n)}function i(n){$(s,r,o,a,i,"throw",n)}a(void 0)}))}}function L(n,t,e){return F.apply(this,arguments)}function F(){return(F=U(regeneratorRuntime.mark((function n(t,e,r){var o,s,a,c,m,l;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=["",t,e].join("/"),n.next=3,u.default.post(z()+o,{actorDisplayName:(0,i.getCurrentUser)().displayName,actorId:(0,i.getCurrentUser)().uid,actorType:"users",creationDateTime:(new Date).toUTCString(),message:r,objectType:"files",verb:"comment"});case 3:return s=n.sent,a=parseInt(s.headers["content-location"].split("/").pop()),c=o+"/"+a,n.next=8,Z.stat(c,{details:!0});case 8:return m=n.sent,(l=m.data.props).actorDisplayName=B(l.actorDisplayName,2),l.message=B(l.message,2),n.abrupt("return",m.data);case 13:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function G(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function H(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){G(s,r,o,a,i,"next",n)}function i(n){G(s,r,o,a,i,"throw",n)}a(void 0)}))}}function V(n,t,e){return W.apply(this,arguments)}function W(){return(W=H(regeneratorRuntime.mark((function n(t,e,r){var o;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return o=["",t,e,r].join("/"),n.next=3,Z.deleteFile(o);case 3:case"end":return n.stop()}}),n)})))).apply(this,arguments)}function Q(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function X(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){Q(s,r,o,a,i,"next",n)}function i(n){Q(s,r,o,a,i,"throw",n)}a(void 0)}))}}function Y(n,t,e,r){return K.apply(this,arguments)}function K(){return(K=X(regeneratorRuntime.mark((function n(t,e,r,o){var s;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return s=["",t,e,r].join("/"),n.next=3,Z.customRequest(s,Object.assign({method:"PROPPATCH",data:'<?xml version="1.0"?>\n\t\t\t<d:propertyupdate\n\t\t\t\txmlns:d="DAV:"\n\t\t\t\txmlns:oc="http://owncloud.org/ns">\n\t\t\t<d:set>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<oc:message>'.concat(o,"</oc:message>\n\t\t\t\t</d:prop>\n\t\t\t</d:set>\n\t\t\t</d:propertyupdate>")}));case 3:return n.abrupt("return",n.sent);case 4:case"end":return n.stop()}}),n)})))).apply(this,arguments)}var J=r(26932);function nn(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function tn(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){nn(s,r,o,a,i,"next",n)}function i(n){nn(s,r,o,a,i,"throw",n)}a(void 0)}))}}var en={props:{id:{type:Number,default:null},message:{type:String,default:""},ressourceId:{type:[String,Number],required:!0}},data:function(){return{deleted:!1,editing:!1,loading:!1}},methods:{onEdit:function(){this.editing=!0},onEditCancel:function(){this.editing=!1,this.updateLocalMessage(this.message)},onEditComment:function(n){var e=this;return tn(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return e.loading=!0,r.prev=1,r.next=4,Y(e.commentsType,e.ressourceId,e.id,n);case 4:e.logger.debug("Comment edited",{commentsType:e.commentsType,ressourceId:e.ressourceId,id:e.id,message:n}),e.$emit("update:message",n),e.editing=!1,r.next=13;break;case 9:r.prev=9,r.t0=r.catch(1),(0,J.x2)(t("comments","An error occurred while trying to edit the comment")),console.error(r.t0);case 13:return r.prev=13,e.loading=!1,r.finish(13);case 16:case"end":return r.stop()}}),r,null,[[1,9,13,16]])})))()},onDeleteWithUndo:function(){var n=this;this.deleted=!0;var e=setTimeout(this.onDelete,J.et);(0,J.yl)(t("comments","Comment deleted"),(function(){clearTimeout(e),n.deleted=!1}))},onDelete:function(){var n=this;return tn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,V(n.commentsType,n.ressourceId,n.id);case 3:n.logger.debug("Comment deleted",{commentsType:n.commentsType,ressourceId:n.ressourceId,id:n.id}),n.$emit("delete",n.id),e.next=12;break;case 7:e.prev=7,e.t0=e.catch(0),(0,J.x2)(t("comments","An error occurred while trying to delete the comment")),console.error(e.t0),n.deleted=!1;case 12:case"end":return e.stop()}}),e,null,[[0,7]])})))()},onNewComment:function(n){var e=this;return tn(regeneratorRuntime.mark((function r(){var o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return e.loading=!0,r.prev=1,r.next=4,L(e.commentsType,e.ressourceId,n);case 4:o=r.sent,e.logger.debug("New comment posted",{commentsType:e.commentsType,ressourceId:e.ressourceId,newComment:o}),e.$emit("new",o),e.$emit("update:message",""),e.localMessage="",r.next=15;break;case 11:r.prev=11,r.t0=r.catch(1),(0,J.x2)(t("comments","An error occurred while trying to create the comment")),console.error(r.t0);case 15:return r.prev=15,e.loading=!1,r.finish(15);case 18:case"end":return r.stop()}}),r,null,[[1,11,15,18]])})))()}}},rn={name:"Comment",components:{NcActionButton:b(),NcActions:w(),NcActionSeparator:k(),ArrowRight:E.default,NcAvatar:R(),NcButton:h(),Moment:M,NcRichContenteditable:D()},mixins:[I(),en],inheritAttrs:!1,props:{actorDisplayName:{type:String,required:!0},actorId:{type:String,required:!0},creationDateTime:{type:String,default:null},editor:{type:Boolean,default:!1},autoComplete:{type:Function,required:!0}},data:function(){return{expanded:!1,localMessage:""}},computed:{isOwnComment:function(){return(0,i.getCurrentUser)().uid===this.actorId},renderedContent:function(){return this.isEmptyMessage?"":this.renderContent(this.localMessage)},isEmptyMessage:function(){return!this.localMessage||""===this.localMessage.trim()},timestamp:function(){return parseInt(j()(this.creationDateTime).format("x"),10)/1e3}},watch:{message:function(n){this.updateLocalMessage(n)}},beforeMount:function(){this.updateLocalMessage(this.message)},methods:{updateLocalMessage:function(n){this.localMessage=n.toString()},onSubmit:function(){var n=this;if(""!==this.localMessage.trim())return this.editor?(this.onNewComment(this.localMessage.trim()),void this.$nextTick((function(){n.$refs.editor.$el.focus()}))):void this.onEditComment(this.localMessage.trim())},onExpand:function(){this.expanded=!0}}},on=r(93379),sn=r.n(on),an=r(7795),cn=r.n(an),un=r(90569),mn=r.n(un),ln=r(3565),dn=r.n(ln),pn=r(19216),fn=r.n(pn),hn=r(44589),gn=r.n(hn),vn=r(9604),An={};An.styleTagTransform=gn(),An.setAttributes=dn(),An.insert=mn().bind(null,"head"),An.domAPI=cn(),An.insertStyleElement=fn(),sn()(vn.Z,An),vn.Z&&vn.Z.locals&&vn.Z.locals;var Cn=(0,S.Z)(rn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{directives:[{name:"show",rawName:"v-show",value:!n.deleted,expression:"!deleted"}],staticClass:"comment",class:{"comment--loading":n.loading}},[e("div",{staticClass:"comment__header"},[e("NcAvatar",{staticClass:"comment__avatar",attrs:{"display-name":n.actorDisplayName,user:n.actorId,size:32}}),n._v(" "),e("span",{staticClass:"comment__author"},[n._v(n._s(n.actorDisplayName))]),n._v(" "),n.isOwnComment&&n.id&&!n.loading?e("NcActions",{staticClass:"comment__actions"},[n.editing?e("NcActionButton",{attrs:{icon:"icon-close"},on:{click:n.onEditCancel}},[n._v("\n\t\t\t\t"+n._s(n.t("comments","Cancel edit"))+"\n\t\t\t")]):[e("NcActionButton",{attrs:{"close-after-click":!0,icon:"icon-rename"},on:{click:n.onEdit}},[n._v("\n\t\t\t\t\t"+n._s(n.t("comments","Edit comment"))+"\n\t\t\t\t")]),n._v(" "),e("NcActionSeparator"),n._v(" "),e("NcActionButton",{attrs:{"close-after-click":!0,icon:"icon-delete"},on:{click:n.onDeleteWithUndo}},[n._v("\n\t\t\t\t\t"+n._s(n.t("comments","Delete comment"))+"\n\t\t\t\t")])]],2):n._e(),n._v(" "),n.id&&n.loading?e("div",{staticClass:"comment_loading icon-loading-small"}):n.creationDateTime?e("Moment",{staticClass:"comment__timestamp",attrs:{timestamp:n.timestamp}}):n._e()],1),n._v(" "),n.editor||n.editing?e("div",{staticClass:"comment__editor"},[e("NcRichContenteditable",{ref:"editor",attrs:{"auto-complete":n.autoComplete,contenteditable:!n.loading,value:n.localMessage},on:{"update:value":n.updateLocalMessage,submit:n.onSubmit}}),n._v(" "),e("NcButton",{staticClass:"comment__submit",attrs:{type:"tertiary-no-background","native-type":"submit","aria-label":n.t("comments","Post comment"),disabled:n.isEmptyMessage},on:{click:n.onSubmit},scopedSlots:n._u([{key:"icon",fn:function(){return[n.loading?e("span",{staticClass:"icon-loading-small"}):e("ArrowRight",{attrs:{size:20}})]},proxy:!0}],null,!1,2357784758)})],1):e("div",{staticClass:"comment__message",class:{"comment__message--expanded":n.expanded},domProps:{innerHTML:n._s(n.renderedContent)},on:{click:n.onExpand}})])}),[],!1,null,"d797e6e4",null).exports,jn=r(7582),yn=r(18635);function bn(n,t){var e=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),e.push.apply(e,r)}return e}function _n(n){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?bn(Object(e),!0).forEach((function(t){wn(n,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):bn(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}function wn(n,t,e){return t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e,n}function xn(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function kn(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){xn(s,r,o,a,i,"next",n)}function i(n){xn(s,r,o,a,i,"throw",n)}a(void 0)}))}}var On=20;function Rn(n){return Pn.apply(this,arguments)}function Pn(){return Pn=kn(regeneratorRuntime.mark((function n(t){var e,r,o,s,a,i=arguments;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e=t.commentsType,r=t.ressourceId,o=i.length>1&&void 0!==i[1]?i[1]:{},s=null,a=["",e,r].join("/"),n.next=6,Z.customRequest(a,Object.assign({method:"REPORT",data:'<?xml version="1.0"?>\n\t\t\t<oc:filter-comments\n\t\t\t\txmlns:d="DAV:"\n\t\t\t\txmlns:oc="http://owncloud.org/ns"\n\t\t\t\txmlns:nc="http://nextcloud.org/ns"\n\t\t\t\txmlns:ocs="http://open-collaboration-services.org/ns">\n\t\t\t\t<oc:limit>'.concat(On,"</oc:limit>\n\t\t\t\t<oc:offset>").concat(o.offset||0,"</oc:offset>\n\t\t\t</oc:filter-comments>")},o)).then((function(n){return s=n,n.data})).then(jn.parseXML).then((function(n){return Dn(n,!0)})).then((function(n){return(0,yn.processResponsePayload)(s,n,!0)})).then((function(n){return n.data}));case 6:return n.abrupt("return",n.sent);case 7:case"end":return n.stop()}}),n)}))),Pn.apply(this,arguments)}function Dn(n){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],e=n.multistatus.response;return e.map((function(n){var e=n.propstat.prop,r=_n(_n({},e),{},{actorDisplayName:B(e.actorDisplayName,2),message:B(e.message,2)});return(0,jn.prepareFileFromProps)(r,r.id.toString(),t)}))}function Nn(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}var In=function(n){var t=u.default.CancelToken.source(),e=function(){var e,r=(e=regeneratorRuntime.mark((function e(r,o){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",n(r,Object.assign({cancelToken:t.token},o)));case 1:case"end":return e.stop()}}),e)})),function(){var n=this,t=arguments;return new Promise((function(r,o){var s=e.apply(n,t);function a(n){Nn(s,r,o,a,i,"next",n)}function i(n){Nn(s,r,o,a,i,"throw",n)}a(void 0)}))});return function(n,t){return r.apply(this,arguments)}}();return{request:e,cancel:t.cancel}};function En(n,t){(null==t||t>n.length)&&(t=n.length);for(var e=0,r=new Array(t);e<t;e++)r[e]=n[e];return r}function Tn(n,t,e,r,o,s,a){try{var i=n[s](a),c=i.value}catch(n){return void e(n)}i.done?t(c):Promise.resolve(c).then(r,o)}function Sn(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var s=n.apply(t,e);function a(n){Tn(s,r,o,a,i,"next",n)}function i(n){Tn(s,r,o,a,i,"throw",n)}a(void 0)}))}}l.ZP.use(m.default);var Mn={name:"Comments",components:{Comment:Cn,NcEmptyContent:p(),NcButton:h(),RefreshIcon:g.Z,MessageReplyTextIcon:v.Z,AlertCircleOutlineIcon:A.default},data:function(){return{error:"",loading:!1,done:!1,ressourceId:null,offset:0,comments:[],cancelRequest:function(){},editorData:{actorDisplayName:(0,i.getCurrentUser)().displayName,actorId:(0,i.getCurrentUser)().uid,key:"editor"},Comment:Cn}},computed:{hasComments:function(){return this.comments.length>0},isFirstLoading:function(){return this.loading&&0===this.offset}},methods:{update:function(n){var t=this;return Sn(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.ressourceId=n,t.resetState(),t.getComments();case 3:case"end":return e.stop()}}),e)})))()},onScrollBottomReached:function(){this.error||this.done||this.loading||this.getComments()},genMentionsData:function(n){return Object.values(n).flat().reduce((function(n,t){return n[t.mentionId]={icon:"icon-user",id:t.mentionId,label:t.mentionDisplayName,source:"users",primary:(0,i.getCurrentUser)().uid===t.mentionId},n}),{})},getComments:function(){var n=this;return Sn(regeneratorRuntime.mark((function e(){var r,o,s,a,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.cancelRequest("cancel"),e.prev=1,n.loading=!0,n.error="",o=In(Rn),s=o.request,a=o.cancel,n.cancelRequest=a,e.next=8,s({commentsType:n.commentsType,ressourceId:n.ressourceId},{offset:n.offset});case 8:i=e.sent,n.logger.debug("Processed ".concat(i.length," comments"),{comments:i}),i.length<On&&(n.done=!0),(r=n.comments).push.apply(r,function(n){if(Array.isArray(n))return En(n)}(c=i)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(c)||function(n,t){if(n){if("string"==typeof n)return En(n,t);var e=Object.prototype.toString.call(n).slice(8,-1);return"Object"===e&&n.constructor&&(e=n.constructor.name),"Map"===e||"Set"===e?Array.from(n):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?En(n,t):void 0}}(c)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),n.offset+=On,e.next=21;break;case 15:if(e.prev=15,e.t0=e.catch(1),"cancel"!==e.t0.message){e.next=19;break}return e.abrupt("return");case 19:n.error=t("comments","Unable to load the comments list"),console.error("Error loading the comments list",e.t0);case 21:return e.prev=21,n.loading=!1,e.finish(21);case 24:case"end":return e.stop()}var c}),e,null,[[1,15,21,24]])})))()},autoComplete:function(n,t){var e=this;return Sn(regeneratorRuntime.mark((function r(){var o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,u.default.get((0,a.generateOcsUrl)("core/autocomplete/get"),{params:{search:n,itemType:"files",itemId:e.ressourceId,sorter:"commenters|share-recipients",limit:(0,c.loadState)("comments","maxAutoCompleteResults")}});case 2:return o=r.sent,r.abrupt("return",t(o.data.ocs.data));case 4:case"end":return r.stop()}}),r)})))()},onNewComment:function(n){this.comments.unshift(n)},onDelete:function(n){var t=this.comments.findIndex((function(t){return t.props.id===n}));t>-1?this.comments.splice(t,1):console.error("Could not find the deleted comment in the list",n)},resetState:function(){this.error="",this.loading=!1,this.done=!1,this.offset=0,this.comments=[]}}},zn=r(94773),Bn={};Bn.styleTagTransform=gn(),Bn.setAttributes=dn(),Bn.insert=mn().bind(null,"head"),Bn.domAPI=cn(),Bn.insertStyleElement=fn(),sn()(zn.Z,Bn),zn.Z&&zn.Z.locals&&zn.Z.locals;var qn=(0,S.Z)(Mn,(function(){var n=this,t=n.$createElement,e=n._self._c||t;return e("div",{staticClass:"comments",class:{"icon-loading":n.isFirstLoading}},[e("Comment",n._b({staticClass:"comments__writer",attrs:{"auto-complete":n.autoComplete,editor:!0,"ressource-id":n.ressourceId},on:{new:n.onNewComment}},"Comment",n.editorData,!1)),n._v(" "),n.isFirstLoading?n._e():[!n.hasComments&&n.done?e("NcEmptyContent",{staticClass:"comments__empty",attrs:{title:n.t("comments","No comments yet, start the conversation!")},scopedSlots:n._u([{key:"icon",fn:function(){return[e("MessageReplyTextIcon")]},proxy:!0}],null,!1,1033639148)}):n._l(n.comments,(function(t){return e("Comment",n._b({key:t.props.id,staticClass:"comments__list",attrs:{"auto-complete":n.autoComplete,message:t.props.message,"ressource-id":n.ressourceId,"user-data":n.genMentionsData(t.props.mentions)},on:{"update:message":function(e){return n.$set(t.props,"message",e)},delete:n.onDelete}},"Comment",t.props,!1))})),n._v(" "),n.loading&&!n.isFirstLoading?e("div",{staticClass:"comments__info icon-loading"}):n.hasComments&&n.done?e("div",{staticClass:"comments__info"},[n._v("\n\t\t\t"+n._s(n.t("comments","No more messages"))+"\n\t\t")]):n.error?[e("NcEmptyContent",{staticClass:"comments__error",attrs:{title:n.error},scopedSlots:n._u([{key:"icon",fn:function(){return[e("AlertCircleOutlineIcon")]},proxy:!0}],null,!1,66050004)}),n._v(" "),e("NcButton",{staticClass:"comments__retry",on:{click:n.getComments},scopedSlots:n._u([{key:"icon",fn:function(){return[e("RefreshIcon")]},proxy:!0}],null,!1,3924573781)},[n._v("\n\t\t\t\t"+n._s(n.t("comments","Retry"))+"\n\t\t\t")])]:n._e()]],2)}),[],!1,null,"562a4c76",null).exports;function Zn(n,t){for(var e=0;e<t.length;e++){var r=t[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}function $n(n,t,e){return t&&Zn(n.prototype,t),e&&Zn(n,e),Object.defineProperty(n,"prototype",{writable:!1}),n}function Un(n,t){if(!(n instanceof t))throw new TypeError("Cannot call a class as a function")}var Ln=(0,o.IY)().setApp("comments").detectUser().build();l.ZP.mixin({data:function(){return{logger:Ln}},methods:{t:s.translate,n:s.translatePlural}});var Fn=$n((function n(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"files",e=arguments.length>1?arguments[1]:void 0;Un(this,n),l.ZP.mixin({data:function(){return{commentsType:t}}});var r=l.ZP.extend(qn);return new r(e)}));window.OCA&&!window.OCA.Comments&&Object.assign(window.OCA,{Comments:{}}),Object.assign(window.OCA.Comments,{View:Fn}),console.debug("OCA.Comments.View initialized")},9604:function(n,t,e){"use strict";var r=e(87537),o=e.n(r),s=e(23645),a=e.n(s)()(o());a.push([n.id,".comment[data-v-d797e6e4]{position:relative;padding:10px 0 15px}.comment__header[data-v-d797e6e4]{display:flex;align-items:center;min-height:44px;padding:5px 0}.comment__author[data-v-d797e6e4],.comment__actions[data-v-d797e6e4]{margin-left:10px !important}.comment__author[data-v-d797e6e4]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-d797e6e4],.comment__timestamp[data-v-d797e6e4]{margin-left:auto;color:var(--color-text-maxcontrast)}.comment__editor[data-v-d797e6e4],.comment__message[data-v-d797e6e4]{position:relative;padding-left:42px}.comment__submit[data-v-d797e6e4]{position:absolute !important;right:0;bottom:0;margin:1px}.comment__message[data-v-d797e6e4]{white-space:pre-wrap;word-break:break-word;max-height:70px;overflow:hidden}.comment__message--expanded[data-v-d797e6e4]{max-height:none;overflow:visible}.rich-contenteditable__input[data-v-d797e6e4]{min-height:44px;margin:0;padding:10px}","",{version:3,sources:["webpack://./apps/comments/src/components/Comment.vue"],names:[],mappings:"AAkQA,0BACC,iBAAA,CACA,mBAAA,CAEA,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,qEAEC,2BAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,gBAAA,CACA,mCAAA,CAGD,qEAEC,iBAAA,CAEA,iBAAA,CAGD,kCACC,4BAAA,CACA,OAAA,CACA,QAAA,CAEA,UAAA,CAGD,mCACC,oBAAA,CACA,qBAAA,CACA,eAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YA7DiB",sourcesContent:['\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@use "sass:math";\n\n$comment-padding: 10px;\n\n.comment {\n\tposition: relative;\n\tpadding: $comment-padding 0 $comment-padding * 1.5;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmin-height: 44px;\n\t\tpadding: math.div($comment-padding, 2) 0;\n\t}\n\n\t&__author,\n\t&__actions {\n\t\tmargin-left: $comment-padding !important;\n\t}\n\n\t&__author {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&_loading,\n\t&__timestamp {\n\t\tmargin-left: auto;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__editor,\n\t&__message {\n\t\tposition: relative;\n\t\t// Avatar size, align with author name\n\t\tpadding-left: 32px + $comment-padding;\n\t}\n\n\t&__submit {\n\t\tposition: absolute !important;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\t// Align with input border\n\t\tmargin: 1px;\n\t}\n\n\t&__message {\n\t\twhite-space: pre-wrap;\n\t\tword-break: break-word;\n\t\tmax-height: 70px;\n\t\toverflow: hidden;\n\t\t&--expanded {\n\t\t\tmax-height: none;\n\t\t\toverflow: visible;\n\t\t}\n\t}\n}\n\n.rich-contenteditable__input {\n\tmin-height: 44px;\n\tmargin: 0;\n\tpadding: $comment-padding;\n}\n\n'],sourceRoot:""}]),t.Z=a},94773:function(n,t,e){"use strict";var r=e(87537),o=e.n(r),s=e(23645),a=e.n(s)()(o());a.push([n.id,".comments__empty[data-v-562a4c76],.comments__error[data-v-562a4c76]{margin-top:0 !important}.comments__retry[data-v-562a4c76]{margin:0 auto}.comments__info[data-v-562a4c76]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}","",{version:3,sources:["webpack://./apps/comments/src/views/Comments.vue"],names:[],mappings:"AAwSC,oEAEC,uBAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.comments {\n\t// Do not add emptycontent top margin\n\t&__empty,\n\t&__error {\n\t\tmargin-top: 0 !important;\n\t}\n\n\t&__retry {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__info {\n\t\theight: 60px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\ttext-align: center;\n\t\tline-height: 60px;\n\t}\n}\n"],sourceRoot:""}]),t.Z=a},46700:function(n,t,e){var r={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":75805,"./yo.js":75805,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function o(n){var t=s(n);return e(t)}function s(n){if(!e.o(r,n)){var t=new Error("Cannot find module '"+n+"'");throw t.code="MODULE_NOT_FOUND",t}return r[n]}o.keys=function(){return Object.keys(r)},o.resolve=s,n.exports=o,o.id=46700},69862:function(){},40964:function(){}},r={};function o(n){var t=r[n];if(void 0!==t)return t.exports;var s=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}o.m=e,o.amdD=function(){throw new Error("define cannot be used indirect")},o.amdO={},n=[],o.O=function(t,e,r,s){if(!e){var a=1/0;for(m=0;m<n.length;m++){e=n[m][0],r=n[m][1],s=n[m][2];for(var i=!0,c=0;c<e.length;c++)(!1&s||a>=s)&&Object.keys(o.O).every((function(n){return o.O[n](e[c])}))?e.splice(c--,1):(i=!1,s<a&&(a=s));if(i){n.splice(m--,1);var u=r();void 0!==u&&(t=u)}}return t}s=s||0;for(var m=n.length;m>0&&n[m-1][2]>s;m--)n[m]=n[m-1];n[m]=[e,r,s]},o.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return o.d(t,{a:t}),t},o.d=function(n,t){for(var e in t)o.o(t,e)&&!o.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),o.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},o.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},o.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},o.j=6335,function(){o.b=document.baseURI||self.location.href;var n={6335:0};o.O.j=function(t){return 0===n[t]};var t=function(t,e){var r,s,a=e[0],i=e[1],c=e[2],u=0;if(a.some((function(t){return 0!==n[t]}))){for(r in i)o.o(i,r)&&(o.m[r]=i[r]);if(c)var m=c(o)}for(t&&t(e);u<a.length;u++)s=a[u],o.o(n,s)&&n[s]&&n[s][0](),n[s]=0;return o.O(m)},e=self.webpackChunknextcloud=self.webpackChunknextcloud||[];e.forEach(t.bind(null,0)),e.push=t.bind(null,e.push.bind(e))}(),o.nc=void 0;var s=o.O(void 0,[7874],(function(){return o(79252)}));s=o.O(s)}();
+//# sourceMappingURL=comments-comments-app.js.map?v=613ba784da14683d4b7f \ No newline at end of file
diff --git a/dist/comments-comments-app.js.LICENSE.txt b/dist/comments-comments-app.js.LICENSE.txt
index 1e2a46776b9..f35b0b78fe9 100644
--- a/dist/comments-comments-app.js.LICENSE.txt
+++ b/dist/comments-comments-app.js.LICENSE.txt
@@ -21,6 +21,28 @@
*/
/**
+ * @copyright Copyright (c) 2021 Christopher Ng <chrng8@gmail.com>
+ *
+ * @author Christopher Ng <chrng8@gmail.com>
+ *
+ * @license AGPL-3.0-or-later
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
* @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>
*
* @author John Molakvoæ <skjnldsv@protonmail.com>
diff --git a/dist/comments-comments-app.js.map b/dist/comments-comments-app.js.map
index 271c5c5fa17..50648a55bad 100644
--- a/dist/comments-comments-app.js.map
+++ b/dist/comments-comments-app.js.map
@@ -1 +1 @@
-{"version":3,"file":"comments-comments-app.js?v=c2662c38290d4dddfcd8","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/comments/src/components/Moment.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/comments/src/components/Moment.vue","webpack://nextcloud/./apps/comments/src/components/Moment.vue?9b20","webpack:///nextcloud/apps/comments/src/components/Moment.vue?vue&type=template&id=57999be6&","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/apps/comments/src/services/NewComment.js","webpack:///nextcloud/apps/comments/src/services/DeleteComment.js","webpack:///nextcloud/apps/comments/src/services/EditComment.js","webpack:///nextcloud/apps/comments/src/mixins/CommentMixin.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/comments/src/components/Comment.vue","webpack://nextcloud/./apps/comments/src/components/Comment.vue?5716","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7f26","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=template&id=d797e6e4&scoped=true&","webpack:///nextcloud/apps/comments/src/services/GetComments.js","webpack:///nextcloud/apps/comments/src/utils/cancelableRequest.js","webpack:///nextcloud/apps/comments/src/views/Comments.vue","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/comments/src/views/Comments.vue?a4a3","webpack://nextcloud/./apps/comments/src/views/Comments.vue?f45b","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=template&id=562a4c76&scoped=true&","webpack:///nextcloud/apps/comments/src/services/CommentsInstance.js","webpack:///nextcloud/apps/comments/src/comments-app.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=style&index=0&id=d797e6e4&lang=scss&scoped=true&","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=style&index=0&id=562a4c76&lang=scss&scoped=true&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Moment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Moment.vue?vue&type=script&lang=js&\"","<!-- TODO: Move to vue components -->\n\n<template>\n\t<span class=\"live-relative-timestamp\" :data-timestamp=\"timestamp * 1000\" :title=\"title\">{{ formatted }}</span>\n</template>\n\n<script>\nimport moment from '@nextcloud/moment'\n\nexport default {\n\tname: 'Moment',\n\tprops: {\n\t\ttimestamp: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\tformat: {\n\t\t\ttype: String,\n\t\t\tdefault: 'LLL',\n\t\t},\n\t},\n\tcomputed: {\n\t\ttitle() {\n\t\t\treturn moment.unix(this.timestamp).format(this.format)\n\t\t},\n\t\tformatted() {\n\t\t\treturn moment.unix(this.timestamp).fromNow()\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./Moment.vue?vue&type=template&id=57999be6&\"\nimport script from \"./Moment.vue?vue&type=script&lang=js&\"\nexport * from \"./Moment.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"live-relative-timestamp\",attrs:{\"data-timestamp\":_vm.timestamp * 1000,\"title\":_vm.title}},[_vm._v(_vm._s(_vm.formatted))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\nconst getRootPath = function() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { createClient, getPatcher } from 'webdav'\nimport axios from '@nextcloud/axios'\n\nimport { getRootPath } from '../utils/davUtils'\n\n// Add this so the server knows it is an request from the browser\naxios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'\n\n// force our axios\nconst patcher = getPatcher()\npatcher.patch('request', axios)\n\n// init webdav client\nconst client = createClient(getRootPath())\n\nexport default client\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getRootPath } from '../utils/davUtils'\nimport axios from '@nextcloud/axios'\nimport client from './DavClient'\n\n/**\n * Retrieve the comments list\n *\n * @param {string} commentsType the ressource type\n * @param {number} ressourceId the ressource ID\n * @param {string} message the message\n * @return {object} the new comment\n */\nexport default async function(commentsType, ressourceId, message) {\n\tconst ressourcePath = ['', commentsType, ressourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + ressourcePath, {\n\t\tactorDisplayName: getCurrentUser().displayName,\n\t\tactorId: getCurrentUser().uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: 'files',\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from ressource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = ressourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\treturn comment.data\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport client from './DavClient'\n\n/**\n * Delete a comment\n *\n * @param {string} commentsType the ressource type\n * @param {number} ressourceId the ressource ID\n * @param {number} commentId the comment iD\n */\nexport default async function(commentsType, ressourceId, commentId) {\n\tconst commentPath = ['', commentsType, ressourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport client from './DavClient'\n\n/**\n * Edit an existing comment\n *\n * @param {string} commentsType the ressource type\n * @param {number} ressourceId the ressource ID\n * @param {number} commentId the comment iD\n * @param {string} message the message content\n */\nexport default async function(commentsType, ressourceId, commentId, message) {\n\tconst commentPath = ['', commentsType, ressourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, Object.assign({\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<d:propertyupdate\n\t\t\t\txmlns:d=\"DAV:\"\n\t\t\t\txmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t<d:set>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<oc:message>${message}</oc:message>\n\t\t\t\t</d:prop>\n\t\t\t</d:set>\n\t\t\t</d:propertyupdate>`,\n\t}))\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport NewComment from '../services/NewComment'\nimport DeleteComment from '../services/DeleteComment'\nimport EditComment from '../services/EditComment'\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tressourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.commentsType, this.ressourceId, this.id, message)\n\t\t\t\tthis.logger.debug('Comment edited', { commentsType: this.commentsType, ressourceId: this.ressourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.deleted = true\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.commentsType, this.ressourceId, this.id)\n\t\t\t\tthis.logger.debug('Comment deleted', { commentsType: this.commentsType, ressourceId: this.ressourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tconsole.error(error)\n\t\t\t\tthis.deleted = false\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.commentsType, this.ressourceId, message)\n\t\t\t\tthis.logger.debug('New comment posted', { commentsType: this.commentsType, ressourceId: this.ressourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div v-show=\"!deleted\"\n\t\t:class=\"{'comment--loading': loading}\"\n\t\tclass=\"comment\">\n\t\t<!-- Comment header toolbar -->\n\t\t<div class=\"comment__header\">\n\t\t\t<!-- Author -->\n\t\t\t<NcAvatar class=\"comment__avatar\"\n\t\t\t\t:display-name=\"actorDisplayName\"\n\t\t\t\t:user=\"actorId\"\n\t\t\t\t:size=\"32\" />\n\t\t\t<span class=\"comment__author\">{{ actorDisplayName }}</span>\n\n\t\t\t<!-- Comment actions,\n\t\t\t\tshow if we have a message id and current user is author -->\n\t\t\t<NcActions v-if=\"isOwnComment && id && !loading\" class=\"comment__actions\">\n\t\t\t\t<template v-if=\"!editing\">\n\t\t\t\t\t<NcActionButton :close-after-click=\"true\"\n\t\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\t\t@click=\"onEdit\">\n\t\t\t\t\t\t{{ t('comments', 'Edit comment') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<NcActionSeparator />\n\t\t\t\t\t<NcActionButton :close-after-click=\"true\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t@click=\"onDeleteWithUndo\">\n\t\t\t\t\t\t{{ t('comments', 'Delete comment') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<NcActionButton v-else\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t@click=\"onEditCancel\">\n\t\t\t\t\t{{ t('comments', 'Cancel edit') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</NcActions>\n\n\t\t\t<!-- Show loading if we're editing or deleting, not on new ones -->\n\t\t\t<div v-if=\"id && loading\" class=\"comment_loading icon-loading-small\" />\n\n\t\t\t<!-- Relative time to the comment creation -->\n\t\t\t<Moment v-else-if=\"creationDateTime\" class=\"comment__timestamp\" :timestamp=\"timestamp\" />\n\t\t</div>\n\n\t\t<!-- Message editor -->\n\t\t<div v-if=\"editor || editing\" class=\"comment__editor \">\n\t\t\t<NcRichContenteditable ref=\"editor\"\n\t\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t\t:contenteditable=\"!loading\"\n\t\t\t\t:value=\"localMessage\"\n\t\t\t\t@update:value=\"updateLocalMessage\"\n\t\t\t\t@submit=\"onSubmit\" />\n\t\t\t<NcButton class=\"comment__submit\"\n\t\t\t\ttype=\"tertiary-no-background\"\n\t\t\t\tnative-type=\"submit\"\n\t\t\t\t:aria-label=\"t('comments', 'Post comment')\"\n\t\t\t\t:disabled=\"isEmptyMessage\"\n\t\t\t\t@click=\"onSubmit\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<span v-if=\"loading\" class=\"icon-loading-small\" />\n\t\t\t\t\t<ArrowRight v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t</div>\n\n\t\t<!-- Message content -->\n\t\t<!-- The html is escaped and sanitized before rendering -->\n\t\t<!-- eslint-disable-next-line vue/no-v-html-->\n\t\t<div v-else\n\t\t\t:class=\"{'comment__message--expanded': expanded}\"\n\t\t\tclass=\"comment__message\"\n\t\t\t@click=\"onExpand\"\n\t\t\tv-html=\"renderedContent\" />\n\t</div>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport moment from '@nextcloud/moment'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport NcActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\nimport NcRichContenteditable from '@nextcloud/vue/dist/Components/NcRichContenteditable'\nimport RichEditorMixin from '@nextcloud/vue/dist/Mixins/richEditor'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight'\n\nimport Moment from './Moment'\nimport CommentMixin from '../mixins/CommentMixin'\n\nexport default {\n\tname: 'Comment',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcActionSeparator,\n\t\tArrowRight,\n\t\tNcAvatar,\n\t\tNcButton,\n\t\tMoment,\n\t\tNcRichContenteditable,\n\t},\n\tmixins: [RichEditorMixin, CommentMixin],\n\n\tinheritAttrs: false,\n\n\tprops: {\n\t\tactorDisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactorId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tcreationDateTime: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Force the editor display\n\t\t */\n\t\teditor: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Provide the autocompletion data\n\t\t */\n\t\tautoComplete: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\texpanded: false,\n\t\t\t// Only change data locally and update the original\n\t\t\t// parent data when the request is sent and resolved\n\t\t\tlocalMessage: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Is the current user the author of this comment\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisOwnComment() {\n\t\t\treturn getCurrentUser().uid === this.actorId\n\t\t},\n\n\t\t/**\n\t\t * Rendered content as html string\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\trenderedContent() {\n\t\t\tif (this.isEmptyMessage) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn this.renderContent(this.localMessage)\n\t\t},\n\n\t\tisEmptyMessage() {\n\t\t\treturn !this.localMessage || this.localMessage.trim() === ''\n\t\t},\n\n\t\ttimestamp() {\n\t\t\t// seconds, not milliseconds\n\t\t\treturn parseInt(moment(this.creationDateTime).format('x'), 10) / 1000\n\t\t},\n\t},\n\n\twatch: {\n\t\t// If the data change, update the local value\n\t\tmessage(message) {\n\t\t\tthis.updateLocalMessage(message)\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\t// Init localMessage\n\t\tthis.updateLocalMessage(this.message)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update local Message on outer change\n\t\t *\n\t\t * @param {string} message the message to set\n\t\t */\n\t\tupdateLocalMessage(message) {\n\t\t\tthis.localMessage = message.toString()\n\t\t},\n\n\t\t/**\n\t\t * Dispatch message between edit and create\n\t\t */\n\t\tonSubmit() {\n\t\t\t// Do not submit if message is empty\n\t\t\tif (this.localMessage.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.editor) {\n\t\t\t\tthis.onNewComment(this.localMessage.trim())\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// Focus the editor again\n\t\t\t\t\tthis.$refs.editor.$el.focus()\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.onEditComment(this.localMessage.trim())\n\t\t},\n\n\t\tonExpand() {\n\t\t\tthis.expanded = true\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$comment-padding: 10px;\n\n.comment {\n\tposition: relative;\n\tpadding: $comment-padding 0 $comment-padding * 1.5;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmin-height: 44px;\n\t\tpadding: math.div($comment-padding, 2) 0;\n\t}\n\n\t&__author,\n\t&__actions {\n\t\tmargin-left: $comment-padding !important;\n\t}\n\n\t&__author {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&_loading,\n\t&__timestamp {\n\t\tmargin-left: auto;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__editor,\n\t&__message {\n\t\tposition: relative;\n\t\t// Avatar size, align with author name\n\t\tpadding-left: 32px + $comment-padding;\n\t}\n\n\t&__submit {\n\t\tposition: absolute !important;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\t// Align with input border\n\t\tmargin: 1px;\n\t}\n\n\t&__message {\n\t\twhite-space: pre-wrap;\n\t\tword-break: break-word;\n\t\tmax-height: 70px;\n\t\toverflow: hidden;\n\t\t&--expanded {\n\t\t\tmax-height: none;\n\t\t\toverflow: visible;\n\t\t}\n\t}\n}\n\n.rich-contenteditable__input {\n\tmin-height: 44px;\n\tmargin: 0;\n\tpadding: $comment-padding;\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=style&index=0&id=d797e6e4&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=style&index=0&id=d797e6e4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comment.vue?vue&type=template&id=d797e6e4&scoped=true&\"\nimport script from \"./Comment.vue?vue&type=script&lang=js&\"\nexport * from \"./Comment.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Comment.vue?vue&type=style&index=0&id=d797e6e4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d797e6e4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.deleted),expression:\"!deleted\"}],staticClass:\"comment\",class:{'comment--loading': _vm.loading}},[_c('div',{staticClass:\"comment__header\"},[_c('NcAvatar',{staticClass:\"comment__avatar\",attrs:{\"display-name\":_vm.actorDisplayName,\"user\":_vm.actorId,\"size\":32}}),_vm._v(\" \"),_c('span',{staticClass:\"comment__author\"},[_vm._v(_vm._s(_vm.actorDisplayName))]),_vm._v(\" \"),(_vm.isOwnComment && _vm.id && !_vm.loading)?_c('NcActions',{staticClass:\"comment__actions\"},[(!_vm.editing)?[_c('NcActionButton',{attrs:{\"close-after-click\":true,\"icon\":\"icon-rename\"},on:{\"click\":_vm.onEdit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Edit comment'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true,\"icon\":\"icon-delete\"},on:{\"click\":_vm.onDeleteWithUndo}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Delete comment'))+\"\\n\\t\\t\\t\\t\")])]:_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":_vm.onEditCancel}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Cancel edit'))+\"\\n\\t\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),(_vm.id && _vm.loading)?_c('div',{staticClass:\"comment_loading icon-loading-small\"}):(_vm.creationDateTime)?_c('Moment',{staticClass:\"comment__timestamp\",attrs:{\"timestamp\":_vm.timestamp}}):_vm._e()],1),_vm._v(\" \"),(_vm.editor || _vm.editing)?_c('div',{staticClass:\"comment__editor\"},[_c('NcRichContenteditable',{ref:\"editor\",attrs:{\"auto-complete\":_vm.autoComplete,\"contenteditable\":!_vm.loading,\"value\":_vm.localMessage},on:{\"update:value\":_vm.updateLocalMessage,\"submit\":_vm.onSubmit}}),_vm._v(\" \"),_c('NcButton',{staticClass:\"comment__submit\",attrs:{\"type\":\"tertiary-no-background\",\"native-type\":\"submit\",\"aria-label\":_vm.t('comments', 'Post comment'),\"disabled\":_vm.isEmptyMessage},on:{\"click\":_vm.onSubmit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('span',{staticClass:\"icon-loading-small\"}):_c('ArrowRight',{attrs:{\"size\":20}})]},proxy:true}],null,false,2357784758)})],1):_c('div',{staticClass:\"comment__message\",class:{'comment__message--expanded': _vm.expanded},domProps:{\"innerHTML\":_vm._s(_vm.renderedContent)},on:{\"click\":_vm.onExpand}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { parseXML, prepareFileFromProps } from 'webdav/dist/node/tools/dav'\nimport { processResponsePayload } from 'webdav/dist/node/response'\nimport client from './DavClient'\n\nexport const DEFAULT_LIMIT = 20\n/**\n * Retrieve the comments list\n *\n * @param {object} data destructuring object\n * @param {string} data.commentsType the ressource type\n * @param {number} data.ressourceId the ressource ID\n * @param {object} [options] optional options for axios\n * @return {object[]} the comments list\n */\nexport default async function({ commentsType, ressourceId }, options = {}) {\n\tlet response = null\n\tconst ressourcePath = ['', commentsType, ressourceId].join('/')\n\n\treturn await client.customRequest(ressourcePath, Object.assign({\n\t\tmethod: 'REPORT',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<oc:filter-comments\n\t\t\t\txmlns:d=\"DAV:\"\n\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t\t<oc:limit>${DEFAULT_LIMIT}</oc:limit>\n\t\t\t\t<oc:offset>${options.offset || 0}</oc:offset>\n\t\t\t</oc:filter-comments>`,\n\t}, options))\n\t\t// See example on how it's done normally\n\t\t// https://github.com/perry-mitchell/webdav-client/blob/9de2da4a2599e06bd86c2778145b7ade39fe0b3c/source/interface/stat.js#L19\n\t\t// Waiting for proper REPORT integration https://github.com/perry-mitchell/webdav-client/issues/207\n\t\t.then(res => {\n\t\t\tresponse = res\n\t\t\treturn res.data\n\t\t})\n\t\t.then(parseXML)\n\t\t.then(xml => processMultistatus(xml, true))\n\t\t.then(comments => processResponsePayload(response, comments, true))\n\t\t.then(response => response.data)\n}\n\n// https://github.com/perry-mitchell/webdav-client/blob/9de2da4a2599e06bd86c2778145b7ade39fe0b3c/source/interface/directoryContents.js#L32\n/**\n * @param {any} result -\n * @param {any} isDetailed -\n */\nfunction processMultistatus(result, isDetailed = false) {\n\t// Extract the response items (directory contents)\n\tconst {\n\t\tmultistatus: { response: responseItems },\n\t} = result\n\treturn responseItems.map(item => {\n\t\t// Each item should contain a stat object\n\t\tconst {\n\t\t\tpropstat: { prop: props },\n\t\t} = item\n\t\t// Decode HTML entities\n\t\tconst decodedProps = {\n\t\t\t...props,\n\t\t\t// Decode twice to handle potentially double-encoded entities\n\t\t\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306 is resolved\n\t\t\tactorDisplayName: decodeHtmlEntities(props.actorDisplayName, 2),\n\t\t\tmessage: decodeHtmlEntities(props.message, 2),\n\t\t}\n\t\treturn prepareFileFromProps(decodedProps, decodedProps.id.toString(), isDetailed)\n\t})\n}\n\n/**\n * @param {any} value -\n * @param {any} passes -\n */\nfunction decodeHtmlEntities(value, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\n\n/**\n * Create a cancel token\n *\n * @return {import('axios').CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nconst cancelableRequest = function(request) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\treturn request(\n\t\t\turl,\n\t\t\tObject.assign({ cancelToken: cancelToken.token }, options)\n\t\t)\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n\nexport default cancelableRequest\n","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n - @author Richard Steinmetz <richard@steinmetz.cloud>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"comments\" :class=\"{ 'icon-loading': isFirstLoading }\">\n\t\t<!-- Editor -->\n\t\t<Comment v-bind=\"editorData\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:editor=\"true\"\n\t\t\t:ressource-id=\"ressourceId\"\n\t\t\tclass=\"comments__writer\"\n\t\t\t@new=\"onNewComment\" />\n\n\t\t<template v-if=\"!isFirstLoading\">\n\t\t\t<NcEmptyContent v-if=\"!hasComments && done\"\n\t\t\t\tclass=\"comments__empty\"\n\t\t\t\t:title=\"t('comments', 'No comments yet, start the conversation!')\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<MessageReplyTextIcon />\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\n\t\t\t<!-- Comments -->\n\t\t\t<Comment v-for=\"comment in comments\"\n\t\t\t\tv-else\n\t\t\t\t:key=\"comment.props.id\"\n\t\t\t\tv-bind=\"comment.props\"\n\t\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t\t:message.sync=\"comment.props.message\"\n\t\t\t\t:ressource-id=\"ressourceId\"\n\t\t\t\t:user-data=\"genMentionsData(comment.props.mentions)\"\n\t\t\t\tclass=\"comments__list\"\n\t\t\t\t@delete=\"onDelete\" />\n\n\t\t\t<!-- Loading more message -->\n\t\t\t<div v-if=\"loading && !isFirstLoading\" class=\"comments__info icon-loading\" />\n\n\t\t\t<div v-else-if=\"hasComments && done\" class=\"comments__info\">\n\t\t\t\t{{ t('comments', 'No more messages') }}\n\t\t\t</div>\n\n\t\t\t<!-- Error message -->\n\t\t\t<template v-else-if=\"error\">\n\t\t\t\t<NcEmptyContent class=\"comments__error\" :title=\"error\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<AlertCircleOutlineIcon />\n\t\t\t\t\t</template>\n\t\t\t\t</NcEmptyContent>\n\t\t\t\t<NcButton class=\"comments__retry\" @click=\"getComments\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<RefreshIcon />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('comments', 'Retry') }}\n\t\t\t\t</NcButton>\n\t\t\t</template>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport VTooltip from 'v-tooltip'\nimport Vue from 'vue'\n\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\nimport RefreshIcon from 'vue-material-design-icons/Refresh'\nimport MessageReplyTextIcon from 'vue-material-design-icons/MessageReplyText'\nimport AlertCircleOutlineIcon from 'vue-material-design-icons/AlertCircleOutline'\n\nimport Comment from '../components/Comment'\nimport getComments, { DEFAULT_LIMIT } from '../services/GetComments'\nimport cancelableRequest from '../utils/cancelableRequest'\n\nVue.use(VTooltip)\n\nexport default {\n\tname: 'Comments',\n\n\tcomponents: {\n\t\t// Avatar,\n\t\tComment,\n\t\tNcEmptyContent,\n\t\tNcButton,\n\t\tRefreshIcon,\n\t\tMessageReplyTextIcon,\n\t\tAlertCircleOutlineIcon,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\terror: '',\n\t\t\tloading: false,\n\t\t\tdone: false,\n\n\t\t\tressourceId: null,\n\t\t\toffset: 0,\n\t\t\tcomments: [],\n\n\t\t\tcancelRequest: () => {},\n\n\t\t\teditorData: {\n\t\t\t\tactorDisplayName: getCurrentUser().displayName,\n\t\t\t\tactorId: getCurrentUser().uid,\n\t\t\t\tkey: 'editor',\n\t\t\t},\n\n\t\t\tComment,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\thasComments() {\n\t\t\treturn this.comments.length > 0\n\t\t},\n\t\tisFirstLoading() {\n\t\t\treturn this.loading && this.offset === 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current ressourceId and fetch new data\n\t\t *\n\t\t * @param {number} ressourceId the current ressourceId (fileId...)\n\t\t */\n\t\tasync update(ressourceId) {\n\t\t\tthis.ressourceId = ressourceId\n\t\t\tthis.resetState()\n\t\t\tthis.getComments()\n\t\t},\n\n\t\t/**\n\t\t * Ran when the bottom of the tab is reached\n\t\t */\n\t\tonScrollBottomReached() {\n\t\t\t/**\n\t\t\t * Do not fetch more if we:\n\t\t\t * - are showing an error\n\t\t\t * - already fetched everything\n\t\t\t * - are currently loading\n\t\t\t */\n\t\t\tif (this.error || this.done || this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.getComments()\n\t\t},\n\n\t\t/**\n\t\t * Make sure we have all mentions as Array of objects\n\t\t *\n\t\t * @param {Array} mentions the mentions list\n\t\t * @return {object[]}\n\t\t */\n\t\tgenMentionsData(mentions) {\n\t\t\tconst list = Object.values(mentions).flat()\n\t\t\treturn list.reduce((mentions, mention) => {\n\t\t\t\tmentions[mention.mentionId] = {\n\t\t\t\t\t// TODO: support groups\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: mention.mentionId,\n\t\t\t\t\tlabel: mention.mentionDisplayName,\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tprimary: getCurrentUser().uid === mention.mentionId,\n\t\t\t\t}\n\t\t\t\treturn mentions\n\t\t\t}, {})\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getComments() {\n\t\t\t// Cancel any ongoing request\n\t\t\tthis.cancelRequest('cancel')\n\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.error = ''\n\n\t\t\t\t// Init cancellable request\n\t\t\t\tconst { request, cancel } = cancelableRequest(getComments)\n\t\t\t\tthis.cancelRequest = cancel\n\n\t\t\t\t// Fetch comments\n\t\t\t\tconst comments = await request({\n\t\t\t\t\tcommentsType: this.commentsType,\n\t\t\t\t\tressourceId: this.ressourceId,\n\t\t\t\t}, { offset: this.offset })\n\n\t\t\t\tthis.logger.debug(`Processed ${comments.length} comments`, { comments })\n\n\t\t\t\t// We received less than the requested amount,\n\t\t\t\t// we're done fetching comments\n\t\t\t\tif (comments.length < DEFAULT_LIMIT) {\n\t\t\t\t\tthis.done = true\n\t\t\t\t}\n\n\t\t\t\t// Insert results\n\t\t\t\tthis.comments.push(...comments)\n\n\t\t\t\t// Increase offset for next fetch\n\t\t\t\tthis.offset += DEFAULT_LIMIT\n\t\t\t} catch (error) {\n\t\t\t\tif (error.message === 'cancel') {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.error = t('comments', 'Unable to load the comments list')\n\t\t\t\tconsole.error('Error loading the comments list', error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Autocomplete @mentions\n\t\t *\n\t\t * @param {string} search the query\n\t\t * @param {Function} callback the callback to process the results with\n\t\t */\n\t\tasync autoComplete(search, callback) {\n\t\t\tconst results = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n\t\t\t\tparams: {\n\t\t\t\t\tsearch,\n\t\t\t\t\titemType: 'files',\n\t\t\t\t\titemId: this.ressourceId,\n\t\t\t\t\tsorter: 'commenters|share-recipients',\n\t\t\t\t\tlimit: loadState('comments', 'maxAutoCompleteResults'),\n\t\t\t\t},\n\t\t\t})\n\t\t\treturn callback(results.data.ocs.data)\n\t\t},\n\n\t\t/**\n\t\t * Add newly created comment to the list\n\t\t *\n\t\t * @param {object} comment the new comment\n\t\t */\n\t\tonNewComment(comment) {\n\t\t\tthis.comments.unshift(comment)\n\t\t},\n\n\t\t/**\n\t\t * Remove deleted comment from the list\n\t\t *\n\t\t * @param {number} id the deleted comment\n\t\t */\n\t\tonDelete(id) {\n\t\t\tconst index = this.comments.findIndex(comment => comment.props.id === id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.comments.splice(index, 1)\n\t\t\t} else {\n\t\t\t\tconsole.error('Could not find the deleted comment in the list', id)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.error = ''\n\t\t\tthis.loading = false\n\t\t\tthis.done = false\n\t\t\tthis.offset = 0\n\t\t\tthis.comments = []\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.comments {\n\t// Do not add emptycontent top margin\n\t&__empty,\n\t&__error {\n\t\tmargin-top: 0 !important;\n\t}\n\n\t&__retry {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__info {\n\t\theight: 60px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\ttext-align: center;\n\t\tline-height: 60px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=style&index=0&id=562a4c76&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=style&index=0&id=562a4c76&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comments.vue?vue&type=template&id=562a4c76&scoped=true&\"\nimport script from \"./Comments.vue?vue&type=script&lang=js&\"\nexport * from \"./Comments.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Comments.vue?vue&type=style&index=0&id=562a4c76&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"562a4c76\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"comments\",class:{ 'icon-loading': _vm.isFirstLoading }},[_c('Comment',_vm._b({staticClass:\"comments__writer\",attrs:{\"auto-complete\":_vm.autoComplete,\"editor\":true,\"ressource-id\":_vm.ressourceId},on:{\"new\":_vm.onNewComment}},'Comment',_vm.editorData,false)),_vm._v(\" \"),(!_vm.isFirstLoading)?[(!_vm.hasComments && _vm.done)?_c('NcEmptyContent',{staticClass:\"comments__empty\",attrs:{\"title\":_vm.t('comments', 'No comments yet, start the conversation!')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('MessageReplyTextIcon')]},proxy:true}],null,false,1033639148)}):_vm._l((_vm.comments),function(comment){return _c('Comment',_vm._b({key:comment.props.id,staticClass:\"comments__list\",attrs:{\"auto-complete\":_vm.autoComplete,\"message\":comment.props.message,\"ressource-id\":_vm.ressourceId,\"user-data\":_vm.genMentionsData(comment.props.mentions)},on:{\"update:message\":function($event){return _vm.$set(comment.props, \"message\", $event)},\"delete\":_vm.onDelete}},'Comment',comment.props,false))}),_vm._v(\" \"),(_vm.loading && !_vm.isFirstLoading)?_c('div',{staticClass:\"comments__info icon-loading\"}):(_vm.hasComments && _vm.done)?_c('div',{staticClass:\"comments__info\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('comments', 'No more messages'))+\"\\n\\t\\t\")]):(_vm.error)?[_c('NcEmptyContent',{staticClass:\"comments__error\",attrs:{\"title\":_vm.error},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AlertCircleOutlineIcon')]},proxy:true}],null,false,66050004)}),_vm._v(\" \"),_c('NcButton',{staticClass:\"comments__retry\",on:{\"click\":_vm.getComments},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('RefreshIcon')]},proxy:true}],null,false,3924573781)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Retry'))+\"\\n\\t\\t\\t\")])]:_vm._e()]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport CommentsApp from '../views/Comments'\nimport Vue from 'vue'\n\nconst logger = getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n\n// Add translates functions\nVue.mixin({\n\tdata() {\n\t\treturn {\n\t\t\tlogger,\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\nexport default class CommentInstance {\n\n\t/**\n\t * Initialize a new Comments instance for the desired type\n\t *\n\t * @param {string} commentsType the comments endpoint type\n\t * @param {object} options the vue options (propsData, parent, el...)\n\t */\n\tconstructor(commentsType = 'files', options) {\n\t\t// Add comments type as a global mixin\n\t\tVue.mixin({\n\t\t\tdata() {\n\t\t\t\treturn {\n\t\t\t\t\tcommentsType,\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\n\t\t// Init Comments component\n\t\tconst View = Vue.extend(CommentsApp)\n\t\treturn new View(options)\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport CommentsInstance from './services/CommentsInstance'\n\n// Init Comments\nif (window.OCA && !window.OCA.Comments) {\n\tObject.assign(window.OCA, { Comments: {} })\n}\n\n// Init Comments App view\nObject.assign(window.OCA.Comments, { View: CommentsInstance })\nconsole.debug('OCA.Comments.View initialized')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".comment[data-v-d797e6e4]{position:relative;padding:10px 0 15px}.comment__header[data-v-d797e6e4]{display:flex;align-items:center;min-height:44px;padding:5px 0}.comment__author[data-v-d797e6e4],.comment__actions[data-v-d797e6e4]{margin-left:10px !important}.comment__author[data-v-d797e6e4]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-d797e6e4],.comment__timestamp[data-v-d797e6e4]{margin-left:auto;color:var(--color-text-maxcontrast)}.comment__editor[data-v-d797e6e4],.comment__message[data-v-d797e6e4]{position:relative;padding-left:42px}.comment__submit[data-v-d797e6e4]{position:absolute !important;right:0;bottom:0;margin:1px}.comment__message[data-v-d797e6e4]{white-space:pre-wrap;word-break:break-word;max-height:70px;overflow:hidden}.comment__message--expanded[data-v-d797e6e4]{max-height:none;overflow:visible}.rich-contenteditable__input[data-v-d797e6e4]{min-height:44px;margin:0;padding:10px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/components/Comment.vue\"],\"names\":[],\"mappings\":\"AAkQA,0BACC,iBAAA,CACA,mBAAA,CAEA,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,qEAEC,2BAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,gBAAA,CACA,mCAAA,CAGD,qEAEC,iBAAA,CAEA,iBAAA,CAGD,kCACC,4BAAA,CACA,OAAA,CACA,QAAA,CAEA,UAAA,CAGD,mCACC,oBAAA,CACA,qBAAA,CACA,eAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YA7DiB\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@use \\\"sass:math\\\";\\n\\n$comment-padding: 10px;\\n\\n.comment {\\n\\tposition: relative;\\n\\tpadding: $comment-padding 0 $comment-padding * 1.5;\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmin-height: 44px;\\n\\t\\tpadding: math.div($comment-padding, 2) 0;\\n\\t}\\n\\n\\t&__author,\\n\\t&__actions {\\n\\t\\tmargin-left: $comment-padding !important;\\n\\t}\\n\\n\\t&__author {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&_loading,\\n\\t&__timestamp {\\n\\t\\tmargin-left: auto;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__editor,\\n\\t&__message {\\n\\t\\tposition: relative;\\n\\t\\t// Avatar size, align with author name\\n\\t\\tpadding-left: 32px + $comment-padding;\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tposition: absolute !important;\\n\\t\\tright: 0;\\n\\t\\tbottom: 0;\\n\\t\\t// Align with input border\\n\\t\\tmargin: 1px;\\n\\t}\\n\\n\\t&__message {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tword-break: break-word;\\n\\t\\tmax-height: 70px;\\n\\t\\toverflow: hidden;\\n\\t\\t&--expanded {\\n\\t\\t\\tmax-height: none;\\n\\t\\t\\toverflow: visible;\\n\\t\\t}\\n\\t}\\n}\\n\\n.rich-contenteditable__input {\\n\\tmin-height: 44px;\\n\\tmargin: 0;\\n\\tpadding: $comment-padding;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".comments__empty[data-v-562a4c76],.comments__error[data-v-562a4c76]{margin-top:0 !important}.comments__retry[data-v-562a4c76]{margin:0 auto}.comments__info[data-v-562a4c76]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/views/Comments.vue\"],\"names\":[],\"mappings\":\"AAwSC,oEAEC,uBAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.comments {\\n\\t// Do not add emptycontent top margin\\n\\t&__empty,\\n\\t&__error {\\n\\t\\tmargin-top: 0 !important;\\n\\t}\\n\\n\\t&__retry {\\n\\t\\tmargin: 0 auto;\\n\\t}\\n\\n\\t&__info {\\n\\t\\theight: 60px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\ttext-align: center;\\n\\t\\tline-height: 60px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 6335;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t6335: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(71669); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","_vm","this","_h","$createElement","_self","_c","staticClass","attrs","timestamp","title","_v","_s","formatted","getRootPath","generateRemoteUrl","axios","getPatcher","patch","createClient","commentsType","ressourceId","message","ressourcePath","join","actorDisplayName","getCurrentUser","displayName","actorId","uid","actorType","creationDateTime","Date","toUTCString","objectType","verb","response","commentId","parseInt","headers","split","pop","commentPath","client","details","comment","data","Object","assign","method","props","id","type","Number","default","String","required","deleted","editing","loading","methods","onEdit","onEditCancel","updateLocalMessage","onEditComment","EditComment","logger","debug","$emit","showError","t","console","error","onDeleteWithUndo","timeOutDelete","setTimeout","onDelete","TOAST_UNDO_TIMEOUT","showUndo","clearTimeout","DeleteComment","onNewComment","NewComment","newComment","localMessage","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","directives","name","rawName","value","expression","class","isOwnComment","on","_e","editor","ref","autoComplete","onSubmit","isEmptyMessage","scopedSlots","_u","key","fn","proxy","expanded","domProps","renderedContent","onExpand","DEFAULT_LIMIT","offset","then","res","parseXML","xml","processMultistatus","comments","processResponsePayload","result","isDetailed","responseItems","multistatus","map","item","propstat","prop","decodedProps","decodeHtmlEntities","prepareFileFromProps","toString","passes","parser","DOMParser","decoded","i","parseFromString","documentElement","textContent","request","cancelToken","fetch","url","token","cancel","isFirstLoading","_b","editorData","hasComments","done","_l","genMentionsData","mentions","$event","$set","getComments","getLoggerBuilder","setApp","detectUser","build","Vue","n","CommentInstance","View","CommentsApp","window","OCA","Comments","CommentsInstance","___CSS_LOADER_EXPORT___","push","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","length","fulfilled","j","every","splice","r","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"file":"comments-comments-app.js?v=613ba784da14683d4b7f","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/comments/src/components/Moment.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/comments/src/components/Moment.vue","webpack://nextcloud/./apps/comments/src/components/Moment.vue?9b20","webpack:///nextcloud/apps/comments/src/components/Moment.vue?vue&type=template&id=57999be6&","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/apps/comments/src/utils/decodeHtmlEntities.js","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/apps/comments/src/services/NewComment.js","webpack:///nextcloud/apps/comments/src/services/DeleteComment.js","webpack:///nextcloud/apps/comments/src/services/EditComment.js","webpack:///nextcloud/apps/comments/src/mixins/CommentMixin.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/comments/src/components/Comment.vue","webpack://nextcloud/./apps/comments/src/components/Comment.vue?5716","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7f26","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=template&id=d797e6e4&scoped=true&","webpack:///nextcloud/apps/comments/src/services/GetComments.js","webpack:///nextcloud/apps/comments/src/utils/cancelableRequest.js","webpack:///nextcloud/apps/comments/src/views/Comments.vue","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/comments/src/views/Comments.vue?a4a3","webpack://nextcloud/./apps/comments/src/views/Comments.vue?f45b","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=template&id=562a4c76&scoped=true&","webpack:///nextcloud/apps/comments/src/services/CommentsInstance.js","webpack:///nextcloud/apps/comments/src/comments-app.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=style&index=0&id=d797e6e4&lang=scss&scoped=true&","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=style&index=0&id=562a4c76&lang=scss&scoped=true&","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Moment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Moment.vue?vue&type=script&lang=js&\"","<!-- TODO: Move to vue components -->\n\n<template>\n\t<span class=\"live-relative-timestamp\" :data-timestamp=\"timestamp * 1000\" :title=\"title\">{{ formatted }}</span>\n</template>\n\n<script>\nimport moment from '@nextcloud/moment'\n\nexport default {\n\tname: 'Moment',\n\tprops: {\n\t\ttimestamp: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\tformat: {\n\t\t\ttype: String,\n\t\t\tdefault: 'LLL',\n\t\t},\n\t},\n\tcomputed: {\n\t\ttitle() {\n\t\t\treturn moment.unix(this.timestamp).format(this.format)\n\t\t},\n\t\tformatted() {\n\t\t\treturn moment.unix(this.timestamp).fromNow()\n\t\t},\n\t},\n}\n</script>\n","import { render, staticRenderFns } from \"./Moment.vue?vue&type=template&id=57999be6&\"\nimport script from \"./Moment.vue?vue&type=script&lang=js&\"\nexport * from \"./Moment.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"live-relative-timestamp\",attrs:{\"data-timestamp\":_vm.timestamp * 1000,\"title\":_vm.title}},[_vm._v(_vm._s(_vm.formatted))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\nconst getRootPath = function() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/**\n * @copyright Copyright (c) 2021 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * @param {any} value -\n * @param {any} passes -\n */\nexport function decodeHtmlEntities(value, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","/**\n * @copyright Copyright (c) 2021 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { createClient, getPatcher } from 'webdav'\nimport axios from '@nextcloud/axios'\n\nimport { getRootPath } from '../utils/davUtils'\n\n// Add this so the server knows it is an request from the browser\naxios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'\n\n// force our axios\nconst patcher = getPatcher()\npatcher.patch('request', axios)\n\n// init webdav client\nconst client = createClient(getRootPath())\n\nexport default client\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getRootPath } from '../utils/davUtils'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities'\nimport axios from '@nextcloud/axios'\nimport client from './DavClient'\n\n/**\n * Retrieve the comments list\n *\n * @param {string} commentsType the ressource type\n * @param {number} ressourceId the ressource ID\n * @param {string} message the message\n * @return {object} the new comment\n */\nexport default async function(commentsType, ressourceId, message) {\n\tconst ressourcePath = ['', commentsType, ressourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + ressourcePath, {\n\t\tactorDisplayName: getCurrentUser().displayName,\n\t\tactorId: getCurrentUser().uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: 'files',\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from ressource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = ressourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\tconst props = comment.data.props\n\t// Decode twice to handle potentially double-encoded entities\n\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306\n\t// is resolved\n\tprops.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)\n\tprops.message = decodeHtmlEntities(props.message, 2)\n\n\treturn comment.data\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport client from './DavClient'\n\n/**\n * Delete a comment\n *\n * @param {string} commentsType the ressource type\n * @param {number} ressourceId the ressource ID\n * @param {number} commentId the comment iD\n */\nexport default async function(commentsType, ressourceId, commentId) {\n\tconst commentPath = ['', commentsType, ressourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport client from './DavClient'\n\n/**\n * Edit an existing comment\n *\n * @param {string} commentsType the ressource type\n * @param {number} ressourceId the ressource ID\n * @param {number} commentId the comment iD\n * @param {string} message the message content\n */\nexport default async function(commentsType, ressourceId, commentId, message) {\n\tconst commentPath = ['', commentsType, ressourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, Object.assign({\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<d:propertyupdate\n\t\t\t\txmlns:d=\"DAV:\"\n\t\t\t\txmlns:oc=\"http://owncloud.org/ns\">\n\t\t\t<d:set>\n\t\t\t\t<d:prop>\n\t\t\t\t\t<oc:message>${message}</oc:message>\n\t\t\t\t</d:prop>\n\t\t\t</d:set>\n\t\t\t</d:propertyupdate>`,\n\t}))\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport NewComment from '../services/NewComment'\nimport DeleteComment from '../services/DeleteComment'\nimport EditComment from '../services/EditComment'\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tressourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.commentsType, this.ressourceId, this.id, message)\n\t\t\t\tthis.logger.debug('Comment edited', { commentsType: this.commentsType, ressourceId: this.ressourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.deleted = true\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.commentsType, this.ressourceId, this.id)\n\t\t\t\tthis.logger.debug('Comment deleted', { commentsType: this.commentsType, ressourceId: this.ressourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tconsole.error(error)\n\t\t\t\tthis.deleted = false\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.commentsType, this.ressourceId, message)\n\t\t\t\tthis.logger.debug('New comment posted', { commentsType: this.commentsType, ressourceId: this.ressourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tconsole.error(error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div v-show=\"!deleted\"\n\t\t:class=\"{'comment--loading': loading}\"\n\t\tclass=\"comment\">\n\t\t<!-- Comment header toolbar -->\n\t\t<div class=\"comment__header\">\n\t\t\t<!-- Author -->\n\t\t\t<NcAvatar class=\"comment__avatar\"\n\t\t\t\t:display-name=\"actorDisplayName\"\n\t\t\t\t:user=\"actorId\"\n\t\t\t\t:size=\"32\" />\n\t\t\t<span class=\"comment__author\">{{ actorDisplayName }}</span>\n\n\t\t\t<!-- Comment actions,\n\t\t\t\tshow if we have a message id and current user is author -->\n\t\t\t<NcActions v-if=\"isOwnComment && id && !loading\" class=\"comment__actions\">\n\t\t\t\t<template v-if=\"!editing\">\n\t\t\t\t\t<NcActionButton :close-after-click=\"true\"\n\t\t\t\t\t\ticon=\"icon-rename\"\n\t\t\t\t\t\t@click=\"onEdit\">\n\t\t\t\t\t\t{{ t('comments', 'Edit comment') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<NcActionSeparator />\n\t\t\t\t\t<NcActionButton :close-after-click=\"true\"\n\t\t\t\t\t\ticon=\"icon-delete\"\n\t\t\t\t\t\t@click=\"onDeleteWithUndo\">\n\t\t\t\t\t\t{{ t('comments', 'Delete comment') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</template>\n\n\t\t\t\t<NcActionButton v-else\n\t\t\t\t\ticon=\"icon-close\"\n\t\t\t\t\t@click=\"onEditCancel\">\n\t\t\t\t\t{{ t('comments', 'Cancel edit') }}\n\t\t\t\t</NcActionButton>\n\t\t\t</NcActions>\n\n\t\t\t<!-- Show loading if we're editing or deleting, not on new ones -->\n\t\t\t<div v-if=\"id && loading\" class=\"comment_loading icon-loading-small\" />\n\n\t\t\t<!-- Relative time to the comment creation -->\n\t\t\t<Moment v-else-if=\"creationDateTime\" class=\"comment__timestamp\" :timestamp=\"timestamp\" />\n\t\t</div>\n\n\t\t<!-- Message editor -->\n\t\t<div v-if=\"editor || editing\" class=\"comment__editor \">\n\t\t\t<NcRichContenteditable ref=\"editor\"\n\t\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t\t:contenteditable=\"!loading\"\n\t\t\t\t:value=\"localMessage\"\n\t\t\t\t@update:value=\"updateLocalMessage\"\n\t\t\t\t@submit=\"onSubmit\" />\n\t\t\t<NcButton class=\"comment__submit\"\n\t\t\t\ttype=\"tertiary-no-background\"\n\t\t\t\tnative-type=\"submit\"\n\t\t\t\t:aria-label=\"t('comments', 'Post comment')\"\n\t\t\t\t:disabled=\"isEmptyMessage\"\n\t\t\t\t@click=\"onSubmit\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<span v-if=\"loading\" class=\"icon-loading-small\" />\n\t\t\t\t\t<ArrowRight v-else :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t</div>\n\n\t\t<!-- Message content -->\n\t\t<!-- The html is escaped and sanitized before rendering -->\n\t\t<!-- eslint-disable-next-line vue/no-v-html-->\n\t\t<div v-else\n\t\t\t:class=\"{'comment__message--expanded': expanded}\"\n\t\t\tclass=\"comment__message\"\n\t\t\t@click=\"onExpand\"\n\t\t\tv-html=\"renderedContent\" />\n\t</div>\n</template>\n\n<script>\nimport { getCurrentUser } from '@nextcloud/auth'\nimport moment from '@nextcloud/moment'\n\nimport NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton'\nimport NcActions from '@nextcloud/vue/dist/Components/NcActions'\nimport NcActionSeparator from '@nextcloud/vue/dist/Components/NcActionSeparator'\nimport NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\nimport NcRichContenteditable from '@nextcloud/vue/dist/Components/NcRichContenteditable'\nimport RichEditorMixin from '@nextcloud/vue/dist/Mixins/richEditor'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight'\n\nimport Moment from './Moment'\nimport CommentMixin from '../mixins/CommentMixin'\n\nexport default {\n\tname: 'Comment',\n\n\tcomponents: {\n\t\tNcActionButton,\n\t\tNcActions,\n\t\tNcActionSeparator,\n\t\tArrowRight,\n\t\tNcAvatar,\n\t\tNcButton,\n\t\tMoment,\n\t\tNcRichContenteditable,\n\t},\n\tmixins: [RichEditorMixin, CommentMixin],\n\n\tinheritAttrs: false,\n\n\tprops: {\n\t\tactorDisplayName: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tactorId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tcreationDateTime: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Force the editor display\n\t\t */\n\t\teditor: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Provide the autocompletion data\n\t\t */\n\t\tautoComplete: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\texpanded: false,\n\t\t\t// Only change data locally and update the original\n\t\t\t// parent data when the request is sent and resolved\n\t\t\tlocalMessage: '',\n\t\t}\n\t},\n\n\tcomputed: {\n\n\t\t/**\n\t\t * Is the current user the author of this comment\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisOwnComment() {\n\t\t\treturn getCurrentUser().uid === this.actorId\n\t\t},\n\n\t\t/**\n\t\t * Rendered content as html string\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\trenderedContent() {\n\t\t\tif (this.isEmptyMessage) {\n\t\t\t\treturn ''\n\t\t\t}\n\t\t\treturn this.renderContent(this.localMessage)\n\t\t},\n\n\t\tisEmptyMessage() {\n\t\t\treturn !this.localMessage || this.localMessage.trim() === ''\n\t\t},\n\n\t\ttimestamp() {\n\t\t\t// seconds, not milliseconds\n\t\t\treturn parseInt(moment(this.creationDateTime).format('x'), 10) / 1000\n\t\t},\n\t},\n\n\twatch: {\n\t\t// If the data change, update the local value\n\t\tmessage(message) {\n\t\t\tthis.updateLocalMessage(message)\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\t// Init localMessage\n\t\tthis.updateLocalMessage(this.message)\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update local Message on outer change\n\t\t *\n\t\t * @param {string} message the message to set\n\t\t */\n\t\tupdateLocalMessage(message) {\n\t\t\tthis.localMessage = message.toString()\n\t\t},\n\n\t\t/**\n\t\t * Dispatch message between edit and create\n\t\t */\n\t\tonSubmit() {\n\t\t\t// Do not submit if message is empty\n\t\t\tif (this.localMessage.trim() === '') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.editor) {\n\t\t\t\tthis.onNewComment(this.localMessage.trim())\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t// Focus the editor again\n\t\t\t\t\tthis.$refs.editor.$el.focus()\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.onEditComment(this.localMessage.trim())\n\t\t},\n\n\t\tonExpand() {\n\t\t\tthis.expanded = true\n\t\t},\n\t},\n\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@use \"sass:math\";\n\n$comment-padding: 10px;\n\n.comment {\n\tposition: relative;\n\tpadding: $comment-padding 0 $comment-padding * 1.5;\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmin-height: 44px;\n\t\tpadding: math.div($comment-padding, 2) 0;\n\t}\n\n\t&__author,\n\t&__actions {\n\t\tmargin-left: $comment-padding !important;\n\t}\n\n\t&__author {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&_loading,\n\t&__timestamp {\n\t\tmargin-left: auto;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__editor,\n\t&__message {\n\t\tposition: relative;\n\t\t// Avatar size, align with author name\n\t\tpadding-left: 32px + $comment-padding;\n\t}\n\n\t&__submit {\n\t\tposition: absolute !important;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\t// Align with input border\n\t\tmargin: 1px;\n\t}\n\n\t&__message {\n\t\twhite-space: pre-wrap;\n\t\tword-break: break-word;\n\t\tmax-height: 70px;\n\t\toverflow: hidden;\n\t\t&--expanded {\n\t\t\tmax-height: none;\n\t\t\toverflow: visible;\n\t\t}\n\t}\n}\n\n.rich-contenteditable__input {\n\tmin-height: 44px;\n\tmargin: 0;\n\tpadding: $comment-padding;\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=style&index=0&id=d797e6e4&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=style&index=0&id=d797e6e4&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comment.vue?vue&type=template&id=d797e6e4&scoped=true&\"\nimport script from \"./Comment.vue?vue&type=script&lang=js&\"\nexport * from \"./Comment.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Comment.vue?vue&type=style&index=0&id=d797e6e4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d797e6e4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.deleted),expression:\"!deleted\"}],staticClass:\"comment\",class:{'comment--loading': _vm.loading}},[_c('div',{staticClass:\"comment__header\"},[_c('NcAvatar',{staticClass:\"comment__avatar\",attrs:{\"display-name\":_vm.actorDisplayName,\"user\":_vm.actorId,\"size\":32}}),_vm._v(\" \"),_c('span',{staticClass:\"comment__author\"},[_vm._v(_vm._s(_vm.actorDisplayName))]),_vm._v(\" \"),(_vm.isOwnComment && _vm.id && !_vm.loading)?_c('NcActions',{staticClass:\"comment__actions\"},[(!_vm.editing)?[_c('NcActionButton',{attrs:{\"close-after-click\":true,\"icon\":\"icon-rename\"},on:{\"click\":_vm.onEdit}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Edit comment'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":true,\"icon\":\"icon-delete\"},on:{\"click\":_vm.onDeleteWithUndo}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Delete comment'))+\"\\n\\t\\t\\t\\t\")])]:_c('NcActionButton',{attrs:{\"icon\":\"icon-close\"},on:{\"click\":_vm.onEditCancel}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Cancel edit'))+\"\\n\\t\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),(_vm.id && _vm.loading)?_c('div',{staticClass:\"comment_loading icon-loading-small\"}):(_vm.creationDateTime)?_c('Moment',{staticClass:\"comment__timestamp\",attrs:{\"timestamp\":_vm.timestamp}}):_vm._e()],1),_vm._v(\" \"),(_vm.editor || _vm.editing)?_c('div',{staticClass:\"comment__editor\"},[_c('NcRichContenteditable',{ref:\"editor\",attrs:{\"auto-complete\":_vm.autoComplete,\"contenteditable\":!_vm.loading,\"value\":_vm.localMessage},on:{\"update:value\":_vm.updateLocalMessage,\"submit\":_vm.onSubmit}}),_vm._v(\" \"),_c('NcButton',{staticClass:\"comment__submit\",attrs:{\"type\":\"tertiary-no-background\",\"native-type\":\"submit\",\"aria-label\":_vm.t('comments', 'Post comment'),\"disabled\":_vm.isEmptyMessage},on:{\"click\":_vm.onSubmit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('span',{staticClass:\"icon-loading-small\"}):_c('ArrowRight',{attrs:{\"size\":20}})]},proxy:true}],null,false,2357784758)})],1):_c('div',{staticClass:\"comment__message\",class:{'comment__message--expanded': _vm.expanded},domProps:{\"innerHTML\":_vm._s(_vm.renderedContent)},on:{\"click\":_vm.onExpand}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { parseXML, prepareFileFromProps } from 'webdav/dist/node/tools/dav'\nimport { processResponsePayload } from 'webdav/dist/node/response'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities'\nimport client from './DavClient'\n\nexport const DEFAULT_LIMIT = 20\n/**\n * Retrieve the comments list\n *\n * @param {object} data destructuring object\n * @param {string} data.commentsType the ressource type\n * @param {number} data.ressourceId the ressource ID\n * @param {object} [options] optional options for axios\n * @return {object[]} the comments list\n */\nexport default async function({ commentsType, ressourceId }, options = {}) {\n\tlet response = null\n\tconst ressourcePath = ['', commentsType, ressourceId].join('/')\n\n\treturn await client.customRequest(ressourcePath, Object.assign({\n\t\tmethod: 'REPORT',\n\t\tdata: `<?xml version=\"1.0\"?>\n\t\t\t<oc:filter-comments\n\t\t\t\txmlns:d=\"DAV:\"\n\t\t\t\txmlns:oc=\"http://owncloud.org/ns\"\n\t\t\t\txmlns:nc=\"http://nextcloud.org/ns\"\n\t\t\t\txmlns:ocs=\"http://open-collaboration-services.org/ns\">\n\t\t\t\t<oc:limit>${DEFAULT_LIMIT}</oc:limit>\n\t\t\t\t<oc:offset>${options.offset || 0}</oc:offset>\n\t\t\t</oc:filter-comments>`,\n\t}, options))\n\t\t// See example on how it's done normally\n\t\t// https://github.com/perry-mitchell/webdav-client/blob/9de2da4a2599e06bd86c2778145b7ade39fe0b3c/source/interface/stat.js#L19\n\t\t// Waiting for proper REPORT integration https://github.com/perry-mitchell/webdav-client/issues/207\n\t\t.then(res => {\n\t\t\tresponse = res\n\t\t\treturn res.data\n\t\t})\n\t\t.then(parseXML)\n\t\t.then(xml => processMultistatus(xml, true))\n\t\t.then(comments => processResponsePayload(response, comments, true))\n\t\t.then(response => response.data)\n}\n\n// https://github.com/perry-mitchell/webdav-client/blob/9de2da4a2599e06bd86c2778145b7ade39fe0b3c/source/interface/directoryContents.js#L32\n/**\n * @param {any} result -\n * @param {any} isDetailed -\n */\nfunction processMultistatus(result, isDetailed = false) {\n\t// Extract the response items (directory contents)\n\tconst {\n\t\tmultistatus: { response: responseItems },\n\t} = result\n\treturn responseItems.map(item => {\n\t\t// Each item should contain a stat object\n\t\tconst {\n\t\t\tpropstat: { prop: props },\n\t\t} = item\n\t\t// Decode HTML entities\n\t\tconst decodedProps = {\n\t\t\t...props,\n\t\t\t// Decode twice to handle potentially double-encoded entities\n\t\t\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306 is resolved\n\t\t\tactorDisplayName: decodeHtmlEntities(props.actorDisplayName, 2),\n\t\t\tmessage: decodeHtmlEntities(props.message, 2),\n\t\t}\n\t\treturn prepareFileFromProps(decodedProps, decodedProps.id.toString(), isDetailed)\n\t})\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport axios from '@nextcloud/axios'\n\n/**\n * Create a cancel token\n *\n * @return {import('axios').CancelTokenSource}\n */\nconst createCancelToken = () => axios.CancelToken.source()\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nconst cancelableRequest = function(request) {\n\t/**\n\t * Generate an axios cancel token\n\t */\n\tconst cancelToken = createCancelToken()\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\treturn request(\n\t\t\turl,\n\t\t\tObject.assign({ cancelToken: cancelToken.token }, options)\n\t\t)\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tcancel: cancelToken.cancel,\n\t}\n}\n\nexport default cancelableRequest\n","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n - @author Richard Steinmetz <richard@steinmetz.cloud>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"comments\" :class=\"{ 'icon-loading': isFirstLoading }\">\n\t\t<!-- Editor -->\n\t\t<Comment v-bind=\"editorData\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:editor=\"true\"\n\t\t\t:ressource-id=\"ressourceId\"\n\t\t\tclass=\"comments__writer\"\n\t\t\t@new=\"onNewComment\" />\n\n\t\t<template v-if=\"!isFirstLoading\">\n\t\t\t<NcEmptyContent v-if=\"!hasComments && done\"\n\t\t\t\tclass=\"comments__empty\"\n\t\t\t\t:title=\"t('comments', 'No comments yet, start the conversation!')\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<MessageReplyTextIcon />\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\n\t\t\t<!-- Comments -->\n\t\t\t<Comment v-for=\"comment in comments\"\n\t\t\t\tv-else\n\t\t\t\t:key=\"comment.props.id\"\n\t\t\t\tv-bind=\"comment.props\"\n\t\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t\t:message.sync=\"comment.props.message\"\n\t\t\t\t:ressource-id=\"ressourceId\"\n\t\t\t\t:user-data=\"genMentionsData(comment.props.mentions)\"\n\t\t\t\tclass=\"comments__list\"\n\t\t\t\t@delete=\"onDelete\" />\n\n\t\t\t<!-- Loading more message -->\n\t\t\t<div v-if=\"loading && !isFirstLoading\" class=\"comments__info icon-loading\" />\n\n\t\t\t<div v-else-if=\"hasComments && done\" class=\"comments__info\">\n\t\t\t\t{{ t('comments', 'No more messages') }}\n\t\t\t</div>\n\n\t\t\t<!-- Error message -->\n\t\t\t<template v-else-if=\"error\">\n\t\t\t\t<NcEmptyContent class=\"comments__error\" :title=\"error\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<AlertCircleOutlineIcon />\n\t\t\t\t\t</template>\n\t\t\t\t</NcEmptyContent>\n\t\t\t\t<NcButton class=\"comments__retry\" @click=\"getComments\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<RefreshIcon />\n\t\t\t\t\t</template>\n\t\t\t\t\t{{ t('comments', 'Retry') }}\n\t\t\t\t</NcButton>\n\t\t\t</template>\n\t\t</template>\n\t</div>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport VTooltip from 'v-tooltip'\nimport Vue from 'vue'\n\nimport NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton'\nimport RefreshIcon from 'vue-material-design-icons/Refresh'\nimport MessageReplyTextIcon from 'vue-material-design-icons/MessageReplyText'\nimport AlertCircleOutlineIcon from 'vue-material-design-icons/AlertCircleOutline'\n\nimport Comment from '../components/Comment'\nimport getComments, { DEFAULT_LIMIT } from '../services/GetComments'\nimport cancelableRequest from '../utils/cancelableRequest'\n\nVue.use(VTooltip)\n\nexport default {\n\tname: 'Comments',\n\n\tcomponents: {\n\t\t// Avatar,\n\t\tComment,\n\t\tNcEmptyContent,\n\t\tNcButton,\n\t\tRefreshIcon,\n\t\tMessageReplyTextIcon,\n\t\tAlertCircleOutlineIcon,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\terror: '',\n\t\t\tloading: false,\n\t\t\tdone: false,\n\n\t\t\tressourceId: null,\n\t\t\toffset: 0,\n\t\t\tcomments: [],\n\n\t\t\tcancelRequest: () => {},\n\n\t\t\teditorData: {\n\t\t\t\tactorDisplayName: getCurrentUser().displayName,\n\t\t\t\tactorId: getCurrentUser().uid,\n\t\t\t\tkey: 'editor',\n\t\t\t},\n\n\t\t\tComment,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\thasComments() {\n\t\t\treturn this.comments.length > 0\n\t\t},\n\t\tisFirstLoading() {\n\t\t\treturn this.loading && this.offset === 0\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Update current ressourceId and fetch new data\n\t\t *\n\t\t * @param {number} ressourceId the current ressourceId (fileId...)\n\t\t */\n\t\tasync update(ressourceId) {\n\t\t\tthis.ressourceId = ressourceId\n\t\t\tthis.resetState()\n\t\t\tthis.getComments()\n\t\t},\n\n\t\t/**\n\t\t * Ran when the bottom of the tab is reached\n\t\t */\n\t\tonScrollBottomReached() {\n\t\t\t/**\n\t\t\t * Do not fetch more if we:\n\t\t\t * - are showing an error\n\t\t\t * - already fetched everything\n\t\t\t * - are currently loading\n\t\t\t */\n\t\t\tif (this.error || this.done || this.loading) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.getComments()\n\t\t},\n\n\t\t/**\n\t\t * Make sure we have all mentions as Array of objects\n\t\t *\n\t\t * @param {Array} mentions the mentions list\n\t\t * @return {object[]}\n\t\t */\n\t\tgenMentionsData(mentions) {\n\t\t\tconst list = Object.values(mentions).flat()\n\t\t\treturn list.reduce((mentions, mention) => {\n\t\t\t\tmentions[mention.mentionId] = {\n\t\t\t\t\t// TODO: support groups\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: mention.mentionId,\n\t\t\t\t\tlabel: mention.mentionDisplayName,\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tprimary: getCurrentUser().uid === mention.mentionId,\n\t\t\t\t}\n\t\t\t\treturn mentions\n\t\t\t}, {})\n\t\t},\n\n\t\t/**\n\t\t * Get the existing shares infos\n\t\t */\n\t\tasync getComments() {\n\t\t\t// Cancel any ongoing request\n\t\t\tthis.cancelRequest('cancel')\n\n\t\t\ttry {\n\t\t\t\tthis.loading = true\n\t\t\t\tthis.error = ''\n\n\t\t\t\t// Init cancellable request\n\t\t\t\tconst { request, cancel } = cancelableRequest(getComments)\n\t\t\t\tthis.cancelRequest = cancel\n\n\t\t\t\t// Fetch comments\n\t\t\t\tconst comments = await request({\n\t\t\t\t\tcommentsType: this.commentsType,\n\t\t\t\t\tressourceId: this.ressourceId,\n\t\t\t\t}, { offset: this.offset })\n\n\t\t\t\tthis.logger.debug(`Processed ${comments.length} comments`, { comments })\n\n\t\t\t\t// We received less than the requested amount,\n\t\t\t\t// we're done fetching comments\n\t\t\t\tif (comments.length < DEFAULT_LIMIT) {\n\t\t\t\t\tthis.done = true\n\t\t\t\t}\n\n\t\t\t\t// Insert results\n\t\t\t\tthis.comments.push(...comments)\n\n\t\t\t\t// Increase offset for next fetch\n\t\t\t\tthis.offset += DEFAULT_LIMIT\n\t\t\t} catch (error) {\n\t\t\t\tif (error.message === 'cancel') {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.error = t('comments', 'Unable to load the comments list')\n\t\t\t\tconsole.error('Error loading the comments list', error)\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Autocomplete @mentions\n\t\t *\n\t\t * @param {string} search the query\n\t\t * @param {Function} callback the callback to process the results with\n\t\t */\n\t\tasync autoComplete(search, callback) {\n\t\t\tconst results = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n\t\t\t\tparams: {\n\t\t\t\t\tsearch,\n\t\t\t\t\titemType: 'files',\n\t\t\t\t\titemId: this.ressourceId,\n\t\t\t\t\tsorter: 'commenters|share-recipients',\n\t\t\t\t\tlimit: loadState('comments', 'maxAutoCompleteResults'),\n\t\t\t\t},\n\t\t\t})\n\t\t\treturn callback(results.data.ocs.data)\n\t\t},\n\n\t\t/**\n\t\t * Add newly created comment to the list\n\t\t *\n\t\t * @param {object} comment the new comment\n\t\t */\n\t\tonNewComment(comment) {\n\t\t\tthis.comments.unshift(comment)\n\t\t},\n\n\t\t/**\n\t\t * Remove deleted comment from the list\n\t\t *\n\t\t * @param {number} id the deleted comment\n\t\t */\n\t\tonDelete(id) {\n\t\t\tconst index = this.comments.findIndex(comment => comment.props.id === id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.comments.splice(index, 1)\n\t\t\t} else {\n\t\t\t\tconsole.error('Could not find the deleted comment in the list', id)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Reset the current view to its default state\n\t\t */\n\t\tresetState() {\n\t\t\tthis.error = ''\n\t\t\tthis.loading = false\n\t\t\tthis.done = false\n\t\t\tthis.offset = 0\n\t\t\tthis.comments = []\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.comments {\n\t// Do not add emptycontent top margin\n\t&__empty,\n\t&__error {\n\t\tmargin-top: 0 !important;\n\t}\n\n\t&__retry {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__info {\n\t\theight: 60px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\ttext-align: center;\n\t\tline-height: 60px;\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=style&index=0&id=562a4c76&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=style&index=0&id=562a4c76&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comments.vue?vue&type=template&id=562a4c76&scoped=true&\"\nimport script from \"./Comments.vue?vue&type=script&lang=js&\"\nexport * from \"./Comments.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Comments.vue?vue&type=style&index=0&id=562a4c76&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"562a4c76\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"comments\",class:{ 'icon-loading': _vm.isFirstLoading }},[_c('Comment',_vm._b({staticClass:\"comments__writer\",attrs:{\"auto-complete\":_vm.autoComplete,\"editor\":true,\"ressource-id\":_vm.ressourceId},on:{\"new\":_vm.onNewComment}},'Comment',_vm.editorData,false)),_vm._v(\" \"),(!_vm.isFirstLoading)?[(!_vm.hasComments && _vm.done)?_c('NcEmptyContent',{staticClass:\"comments__empty\",attrs:{\"title\":_vm.t('comments', 'No comments yet, start the conversation!')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('MessageReplyTextIcon')]},proxy:true}],null,false,1033639148)}):_vm._l((_vm.comments),function(comment){return _c('Comment',_vm._b({key:comment.props.id,staticClass:\"comments__list\",attrs:{\"auto-complete\":_vm.autoComplete,\"message\":comment.props.message,\"ressource-id\":_vm.ressourceId,\"user-data\":_vm.genMentionsData(comment.props.mentions)},on:{\"update:message\":function($event){return _vm.$set(comment.props, \"message\", $event)},\"delete\":_vm.onDelete}},'Comment',comment.props,false))}),_vm._v(\" \"),(_vm.loading && !_vm.isFirstLoading)?_c('div',{staticClass:\"comments__info icon-loading\"}):(_vm.hasComments && _vm.done)?_c('div',{staticClass:\"comments__info\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('comments', 'No more messages'))+\"\\n\\t\\t\")]):(_vm.error)?[_c('NcEmptyContent',{staticClass:\"comments__error\",attrs:{\"title\":_vm.error},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('AlertCircleOutlineIcon')]},proxy:true}],null,false,66050004)}),_vm._v(\" \"),_c('NcButton',{staticClass:\"comments__retry\",on:{\"click\":_vm.getComments},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('RefreshIcon')]},proxy:true}],null,false,3924573781)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Retry'))+\"\\n\\t\\t\\t\")])]:_vm._e()]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\nimport { translate as t, translatePlural as n } from '@nextcloud/l10n'\nimport CommentsApp from '../views/Comments'\nimport Vue from 'vue'\n\nconst logger = getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n\n// Add translates functions\nVue.mixin({\n\tdata() {\n\t\treturn {\n\t\t\tlogger,\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\nexport default class CommentInstance {\n\n\t/**\n\t * Initialize a new Comments instance for the desired type\n\t *\n\t * @param {string} commentsType the comments endpoint type\n\t * @param {object} options the vue options (propsData, parent, el...)\n\t */\n\tconstructor(commentsType = 'files', options) {\n\t\t// Add comments type as a global mixin\n\t\tVue.mixin({\n\t\t\tdata() {\n\t\t\t\treturn {\n\t\t\t\t\tcommentsType,\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\n\t\t// Init Comments component\n\t\tconst View = Vue.extend(CommentsApp)\n\t\treturn new View(options)\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport CommentsInstance from './services/CommentsInstance'\n\n// Init Comments\nif (window.OCA && !window.OCA.Comments) {\n\tObject.assign(window.OCA, { Comments: {} })\n}\n\n// Init Comments App view\nObject.assign(window.OCA.Comments, { View: CommentsInstance })\nconsole.debug('OCA.Comments.View initialized')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".comment[data-v-d797e6e4]{position:relative;padding:10px 0 15px}.comment__header[data-v-d797e6e4]{display:flex;align-items:center;min-height:44px;padding:5px 0}.comment__author[data-v-d797e6e4],.comment__actions[data-v-d797e6e4]{margin-left:10px !important}.comment__author[data-v-d797e6e4]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-d797e6e4],.comment__timestamp[data-v-d797e6e4]{margin-left:auto;color:var(--color-text-maxcontrast)}.comment__editor[data-v-d797e6e4],.comment__message[data-v-d797e6e4]{position:relative;padding-left:42px}.comment__submit[data-v-d797e6e4]{position:absolute !important;right:0;bottom:0;margin:1px}.comment__message[data-v-d797e6e4]{white-space:pre-wrap;word-break:break-word;max-height:70px;overflow:hidden}.comment__message--expanded[data-v-d797e6e4]{max-height:none;overflow:visible}.rich-contenteditable__input[data-v-d797e6e4]{min-height:44px;margin:0;padding:10px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/components/Comment.vue\"],\"names\":[],\"mappings\":\"AAkQA,0BACC,iBAAA,CACA,mBAAA,CAEA,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CACA,aAAA,CAGD,qEAEC,2BAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,gBAAA,CACA,mCAAA,CAGD,qEAEC,iBAAA,CAEA,iBAAA,CAGD,kCACC,4BAAA,CACA,OAAA,CACA,QAAA,CAEA,UAAA,CAGD,mCACC,oBAAA,CACA,qBAAA,CACA,eAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YA7DiB\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n@use \\\"sass:math\\\";\\n\\n$comment-padding: 10px;\\n\\n.comment {\\n\\tposition: relative;\\n\\tpadding: $comment-padding 0 $comment-padding * 1.5;\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmin-height: 44px;\\n\\t\\tpadding: math.div($comment-padding, 2) 0;\\n\\t}\\n\\n\\t&__author,\\n\\t&__actions {\\n\\t\\tmargin-left: $comment-padding !important;\\n\\t}\\n\\n\\t&__author {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&_loading,\\n\\t&__timestamp {\\n\\t\\tmargin-left: auto;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__editor,\\n\\t&__message {\\n\\t\\tposition: relative;\\n\\t\\t// Avatar size, align with author name\\n\\t\\tpadding-left: 32px + $comment-padding;\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tposition: absolute !important;\\n\\t\\tright: 0;\\n\\t\\tbottom: 0;\\n\\t\\t// Align with input border\\n\\t\\tmargin: 1px;\\n\\t}\\n\\n\\t&__message {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tword-break: break-word;\\n\\t\\tmax-height: 70px;\\n\\t\\toverflow: hidden;\\n\\t\\t&--expanded {\\n\\t\\t\\tmax-height: none;\\n\\t\\t\\toverflow: visible;\\n\\t\\t}\\n\\t}\\n}\\n\\n.rich-contenteditable__input {\\n\\tmin-height: 44px;\\n\\tmargin: 0;\\n\\tpadding: $comment-padding;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".comments__empty[data-v-562a4c76],.comments__error[data-v-562a4c76]{margin-top:0 !important}.comments__retry[data-v-562a4c76]{margin:0 auto}.comments__info[data-v-562a4c76]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/views/Comments.vue\"],\"names\":[],\"mappings\":\"AAwSC,oEAEC,uBAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.comments {\\n\\t// Do not add emptycontent top margin\\n\\t&__empty,\\n\\t&__error {\\n\\t\\tmargin-top: 0 !important;\\n\\t}\\n\\n\\t&__retry {\\n\\t\\tmargin: 0 auto;\\n\\t}\\n\\n\\t&__info {\\n\\t\\theight: 60px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\ttext-align: center;\\n\\t\\tline-height: 60px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 6335;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t6335: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(79252); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","_vm","this","_h","$createElement","_self","_c","staticClass","attrs","timestamp","title","_v","_s","formatted","getRootPath","generateRemoteUrl","decodeHtmlEntities","value","passes","parser","DOMParser","decoded","i","parseFromString","documentElement","textContent","axios","getPatcher","patch","createClient","commentsType","ressourceId","message","ressourcePath","join","actorDisplayName","getCurrentUser","displayName","actorId","uid","actorType","creationDateTime","Date","toUTCString","objectType","verb","response","commentId","parseInt","headers","split","pop","commentPath","client","details","comment","props","data","Object","assign","method","id","type","Number","default","String","required","deleted","editing","loading","methods","onEdit","onEditCancel","updateLocalMessage","onEditComment","EditComment","logger","debug","$emit","showError","t","console","error","onDeleteWithUndo","timeOutDelete","setTimeout","onDelete","TOAST_UNDO_TIMEOUT","showUndo","clearTimeout","DeleteComment","onNewComment","NewComment","newComment","localMessage","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","directives","name","rawName","expression","class","isOwnComment","on","_e","editor","ref","autoComplete","onSubmit","isEmptyMessage","scopedSlots","_u","key","fn","proxy","expanded","domProps","renderedContent","onExpand","DEFAULT_LIMIT","offset","then","res","parseXML","xml","processMultistatus","comments","processResponsePayload","result","isDetailed","responseItems","multistatus","map","item","propstat","prop","decodedProps","prepareFileFromProps","toString","request","cancelToken","fetch","url","token","cancel","isFirstLoading","_b","editorData","hasComments","done","_l","genMentionsData","mentions","$event","$set","getComments","getLoggerBuilder","setApp","detectUser","build","Vue","n","CommentInstance","View","CommentsApp","window","OCA","Comments","CommentsInstance","___CSS_LOADER_EXPORT___","push","module","webpackContext","req","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","resolve","exports","__webpack_module_cache__","moduleId","cachedModule","undefined","loaded","__webpack_modules__","call","m","amdD","amdO","O","chunkIds","priority","notFulfilled","Infinity","length","fulfilled","j","every","splice","r","getter","__esModule","d","a","definition","defineProperty","enumerable","get","g","globalThis","Function","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file
diff --git a/lib/l10n/bg.js b/lib/l10n/bg.js
index e02d36b8921..b4b564e0ef2 100644
--- a/lib/l10n/bg.js
+++ b/lib/l10n/bg.js
@@ -152,7 +152,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s сподели »%2$s« с вас.",
"Click the button below to open it." : "Щракнете върху бутона по-долу, за да го отворите.",
"The requested share does not exist anymore" : "Исканото споделяне вече не съществува",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Потребителският лимит е достигнат и потребителят не е създаден. Проверете вашите известия, за да научите повече.",
"Could not find category \"%s\"" : "Невъзможно откриване на категорията \"%s\".",
"Sunday" : "неделя",
"Monday" : "понеделник",
@@ -286,6 +285,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Вашата директория с данни може да се чете от други потребители",
"Your data directory must be an absolute path" : "Вашата директория с данни трябва да е абсолютен път",
"Check the value of \"datadirectory\" in your configuration" : "Проверете стойността на \"datadirectory\" във вашата конфигурация",
- "Your data directory is invalid" : "Вашата директория с данни е невалидна"
+ "Your data directory is invalid" : "Вашата директория с данни е невалидна",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Потребителският лимит е достигнат и потребителят не е създаден. Проверете вашите известия, за да научите повече."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/bg.json b/lib/l10n/bg.json
index 564486afd93..0e05525ae66 100644
--- a/lib/l10n/bg.json
+++ b/lib/l10n/bg.json
@@ -150,7 +150,6 @@
"%1$s shared »%2$s« with you." : "%1$s сподели »%2$s« с вас.",
"Click the button below to open it." : "Щракнете върху бутона по-долу, за да го отворите.",
"The requested share does not exist anymore" : "Исканото споделяне вече не съществува",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Потребителският лимит е достигнат и потребителят не е създаден. Проверете вашите известия, за да научите повече.",
"Could not find category \"%s\"" : "Невъзможно откриване на категорията \"%s\".",
"Sunday" : "неделя",
"Monday" : "понеделник",
@@ -284,6 +283,7 @@
"Your data directory is readable by other users" : "Вашата директория с данни може да се чете от други потребители",
"Your data directory must be an absolute path" : "Вашата директория с данни трябва да е абсолютен път",
"Check the value of \"datadirectory\" in your configuration" : "Проверете стойността на \"datadirectory\" във вашата конфигурация",
- "Your data directory is invalid" : "Вашата директория с данни е невалидна"
+ "Your data directory is invalid" : "Вашата директория с данни е невалидна",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Потребителският лимит е достигнат и потребителят не е създаден. Проверете вашите известия, за да научите повече."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/cs.js b/lib/l10n/cs.js
index 1ed9b3ac932..e1d2f5fa4d1 100644
--- a/lib/l10n/cs.js
+++ b/lib/l10n/cs.js
@@ -152,7 +152,7 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s vám nasdílel(a) „%2$s“.",
"Click the button below to open it." : "Pro otevření klikněte na tlačítko níže.",
"The requested share does not exist anymore" : "Požadované sdílení už neexistuje",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bylo dosaženo limitu počtu uživatelů a uživatel proto nebyl vytvořen. Podrobnosti viz upozornění pro vás.",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Uživatel nebyl vytvořen protože bylo dosaženo limitu počtu uživatelů. Více se dozvíte v upozorněních.",
"Could not find category \"%s\"" : "Nedaří se nalézt kategorii „%s“",
"Sunday" : "neděle",
"Monday" : "pondělí",
@@ -286,6 +286,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Váš adresář data je čitelný ostatním uživatelům",
"Your data directory must be an absolute path" : "Je třeba, aby váš adresář data byl zadán jako úplný popis umístění",
"Check the value of \"datadirectory\" in your configuration" : "Zkontrolujte hodnotu „datadirectory“ ve svém nastavení",
- "Your data directory is invalid" : "Váš adresář data není plantý"
+ "Your data directory is invalid" : "Váš adresář data není plantý",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bylo dosaženo limitu počtu uživatelů a uživatel proto nebyl vytvořen. Podrobnosti viz upozornění pro vás."
},
"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/lib/l10n/cs.json b/lib/l10n/cs.json
index 18d3f7dcafe..b07dc3a209c 100644
--- a/lib/l10n/cs.json
+++ b/lib/l10n/cs.json
@@ -150,7 +150,7 @@
"%1$s shared »%2$s« with you." : "%1$s vám nasdílel(a) „%2$s“.",
"Click the button below to open it." : "Pro otevření klikněte na tlačítko níže.",
"The requested share does not exist anymore" : "Požadované sdílení už neexistuje",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bylo dosaženo limitu počtu uživatelů a uživatel proto nebyl vytvořen. Podrobnosti viz upozornění pro vás.",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Uživatel nebyl vytvořen protože bylo dosaženo limitu počtu uživatelů. Více se dozvíte v upozorněních.",
"Could not find category \"%s\"" : "Nedaří se nalézt kategorii „%s“",
"Sunday" : "neděle",
"Monday" : "pondělí",
@@ -284,6 +284,7 @@
"Your data directory is readable by other users" : "Váš adresář data je čitelný ostatním uživatelům",
"Your data directory must be an absolute path" : "Je třeba, aby váš adresář data byl zadán jako úplný popis umístění",
"Check the value of \"datadirectory\" in your configuration" : "Zkontrolujte hodnotu „datadirectory“ ve svém nastavení",
- "Your data directory is invalid" : "Váš adresář data není plantý"
+ "Your data directory is invalid" : "Váš adresář data není plantý",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bylo dosaženo limitu počtu uživatelů a uživatel proto nebyl vytvořen. Podrobnosti viz upozornění pro vás."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
} \ No newline at end of file
diff --git a/lib/l10n/da.js b/lib/l10n/da.js
index ad420d24304..c55a5f3efb7 100644
--- a/lib/l10n/da.js
+++ b/lib/l10n/da.js
@@ -150,7 +150,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s delte »%2$s« med dig",
"Click the button below to open it." : "Klik på knappen nedenunder for at åbne.",
"The requested share does not exist anymore" : "Det delte emne eksisterer ikke længere",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Grænsen for brugere er nået, og den nye bruger er ikke blevet oprettet. Læs dine notifikationer for at lære mere.",
"Could not find category \"%s\"" : "Kunne ikke finde kategorien \"%s\"",
"Sunday" : "Søndag",
"Monday" : "Mandag",
@@ -284,6 +283,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Datamappen kan læses af andre brugere",
"Your data directory must be an absolute path" : "Datamappen skal have en absolut sti",
"Check the value of \"datadirectory\" in your configuration" : "Tjek værdien for \"databibliotek\" i din konfiguration",
- "Your data directory is invalid" : "Datamappen er ugyldig"
+ "Your data directory is invalid" : "Datamappen er ugyldig",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Grænsen for brugere er nået, og den nye bruger er ikke blevet oprettet. Læs dine notifikationer for at lære mere."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/da.json b/lib/l10n/da.json
index c642a808ed4..0309caa55ab 100644
--- a/lib/l10n/da.json
+++ b/lib/l10n/da.json
@@ -148,7 +148,6 @@
"%1$s shared »%2$s« with you." : "%1$s delte »%2$s« med dig",
"Click the button below to open it." : "Klik på knappen nedenunder for at åbne.",
"The requested share does not exist anymore" : "Det delte emne eksisterer ikke længere",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Grænsen for brugere er nået, og den nye bruger er ikke blevet oprettet. Læs dine notifikationer for at lære mere.",
"Could not find category \"%s\"" : "Kunne ikke finde kategorien \"%s\"",
"Sunday" : "Søndag",
"Monday" : "Mandag",
@@ -282,6 +281,7 @@
"Your data directory is readable by other users" : "Datamappen kan læses af andre brugere",
"Your data directory must be an absolute path" : "Datamappen skal have en absolut sti",
"Check the value of \"datadirectory\" in your configuration" : "Tjek værdien for \"databibliotek\" i din konfiguration",
- "Your data directory is invalid" : "Datamappen er ugyldig"
+ "Your data directory is invalid" : "Datamappen er ugyldig",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Grænsen for brugere er nået, og den nye bruger er ikke blevet oprettet. Læs dine notifikationer for at lære mere."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/de.js b/lib/l10n/de.js
index 8163fae632d..c40cfd1d928 100644
--- a/lib/l10n/de.js
+++ b/lib/l10n/de.js
@@ -148,7 +148,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit dir geteilt.",
"Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche.",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfe deine Benachrichtigungen, um mehr zu erfahren.",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
"Sunday" : "Sonntag",
"Monday" : "Montag",
@@ -282,6 +281,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Dein Datenverzeichnis kann von anderen Benutzern gelesen werden",
"Your data directory must be an absolute path" : "Dein Datenverzeichnis muss einen eindeutigen Pfad haben",
"Check the value of \"datadirectory\" in your configuration" : "Überprüfe bitte die Angabe unter „datadirectory“ in deiner Konfiguration",
- "Your data directory is invalid" : "Dein Datenverzeichnis ist ungültig"
+ "Your data directory is invalid" : "Dein Datenverzeichnis ist ungültig",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfe deine Benachrichtigungen, um mehr zu erfahren."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/de.json b/lib/l10n/de.json
index 33b693cef8d..c1f371a1201 100644
--- a/lib/l10n/de.json
+++ b/lib/l10n/de.json
@@ -146,7 +146,6 @@
"%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit dir geteilt.",
"Click the button below to open it." : "Klicke zum Öffnen auf die untere Schaltfläche.",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfe deine Benachrichtigungen, um mehr zu erfahren.",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
"Sunday" : "Sonntag",
"Monday" : "Montag",
@@ -280,6 +279,7 @@
"Your data directory is readable by other users" : "Dein Datenverzeichnis kann von anderen Benutzern gelesen werden",
"Your data directory must be an absolute path" : "Dein Datenverzeichnis muss einen eindeutigen Pfad haben",
"Check the value of \"datadirectory\" in your configuration" : "Überprüfe bitte die Angabe unter „datadirectory“ in deiner Konfiguration",
- "Your data directory is invalid" : "Dein Datenverzeichnis ist ungültig"
+ "Your data directory is invalid" : "Dein Datenverzeichnis ist ungültig",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfe deine Benachrichtigungen, um mehr zu erfahren."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/de_DE.js b/lib/l10n/de_DE.js
index c20aa5212a8..d5b28fee8cd 100644
--- a/lib/l10n/de_DE.js
+++ b/lib/l10n/de_DE.js
@@ -152,7 +152,7 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Ihnen geteilt.",
"Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche.",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfen Sie Ihre Benachrichtigungen, um mehr zu erfahren.",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Der Benutzer wurde nicht erstellt, da das Benutzerlimit erreicht wurde. Überprüfen Sie Ihre Benachrichtigungen, um mehr zu erfahren.",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
"Sunday" : "Sonntag",
"Monday" : "Montag",
@@ -286,6 +286,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Ihr Datenverzeichnis kann von anderen Benutzern gelesen werden",
"Your data directory must be an absolute path" : "Ihr Datenverzeichnis muss einen eindeutigen Pfad haben",
"Check the value of \"datadirectory\" in your configuration" : "Überprüfen Sie bitte die Angabe unter „datadirectory“ in Ihrer Konfiguration",
- "Your data directory is invalid" : "Ihr Datenverzeichnis ist ungültig."
+ "Your data directory is invalid" : "Ihr Datenverzeichnis ist ungültig.",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfen Sie Ihre Benachrichtigungen, um mehr zu erfahren."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/de_DE.json b/lib/l10n/de_DE.json
index 15600a481f8..da37bbb4ca0 100644
--- a/lib/l10n/de_DE.json
+++ b/lib/l10n/de_DE.json
@@ -150,7 +150,7 @@
"%1$s shared »%2$s« with you." : "%1$s hat »%2$s« mit Ihnen geteilt.",
"Click the button below to open it." : "Klicken Sie zum Öffnen auf die untere Schaltfläche.",
"The requested share does not exist anymore" : "Die angeforderte Freigabe existiert nicht mehr",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfen Sie Ihre Benachrichtigungen, um mehr zu erfahren.",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Der Benutzer wurde nicht erstellt, da das Benutzerlimit erreicht wurde. Überprüfen Sie Ihre Benachrichtigungen, um mehr zu erfahren.",
"Could not find category \"%s\"" : "Die Kategorie \"%s“ konnte nicht gefunden werden",
"Sunday" : "Sonntag",
"Monday" : "Montag",
@@ -284,6 +284,7 @@
"Your data directory is readable by other users" : "Ihr Datenverzeichnis kann von anderen Benutzern gelesen werden",
"Your data directory must be an absolute path" : "Ihr Datenverzeichnis muss einen eindeutigen Pfad haben",
"Check the value of \"datadirectory\" in your configuration" : "Überprüfen Sie bitte die Angabe unter „datadirectory“ in Ihrer Konfiguration",
- "Your data directory is invalid" : "Ihr Datenverzeichnis ist ungültig."
+ "Your data directory is invalid" : "Ihr Datenverzeichnis ist ungültig.",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Das Benutzerlimit wurde erreicht und der Benutzer wurde nicht erstellt. Überprüfen Sie Ihre Benachrichtigungen, um mehr zu erfahren."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/es.js b/lib/l10n/es.js
index 1e078b3b6ac..1550c9455b0 100644
--- a/lib/l10n/es.js
+++ b/lib/l10n/es.js
@@ -152,7 +152,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s ha compartido «%2$s» contigo.",
"Click the button below to open it." : "Haz clic en el botón de abajo para abrirlo.",
"The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "El límite de usuarios fue alcanzado y el usuario no fue creado. Compruebe sus notificaciones para aprender más.",
"Could not find category \"%s\"" : "No puede encontrar la categoría \"%s\"",
"Sunday" : "Domingo",
"Monday" : "Lunes",
@@ -286,6 +285,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Tu directorio de datos puede ser leído por otros usuarios",
"Your data directory must be an absolute path" : "Su directorio data debe ser una ruta absoluta",
"Check the value of \"datadirectory\" in your configuration" : "Compruebe el valor de \"datadirectory\" en su configuración.",
- "Your data directory is invalid" : "Tu directorio de datos es inválido"
+ "Your data directory is invalid" : "Tu directorio de datos es inválido",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "El límite de usuarios fue alcanzado y el usuario no fue creado. Compruebe sus notificaciones para aprender más."
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/lib/l10n/es.json b/lib/l10n/es.json
index 2bcb6b0f644..25b40df6d2f 100644
--- a/lib/l10n/es.json
+++ b/lib/l10n/es.json
@@ -150,7 +150,6 @@
"%1$s shared »%2$s« with you." : "%1$s ha compartido «%2$s» contigo.",
"Click the button below to open it." : "Haz clic en el botón de abajo para abrirlo.",
"The requested share does not exist anymore" : "El recurso compartido solicitado ya no existe",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "El límite de usuarios fue alcanzado y el usuario no fue creado. Compruebe sus notificaciones para aprender más.",
"Could not find category \"%s\"" : "No puede encontrar la categoría \"%s\"",
"Sunday" : "Domingo",
"Monday" : "Lunes",
@@ -284,6 +283,7 @@
"Your data directory is readable by other users" : "Tu directorio de datos puede ser leído por otros usuarios",
"Your data directory must be an absolute path" : "Su directorio data debe ser una ruta absoluta",
"Check the value of \"datadirectory\" in your configuration" : "Compruebe el valor de \"datadirectory\" en su configuración.",
- "Your data directory is invalid" : "Tu directorio de datos es inválido"
+ "Your data directory is invalid" : "Tu directorio de datos es inválido",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "El límite de usuarios fue alcanzado y el usuario no fue creado. Compruebe sus notificaciones para aprender más."
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/lib/l10n/fr.js b/lib/l10n/fr.js
index a1e1884ea0f..313b2eeb95a 100644
--- a/lib/l10n/fr.js
+++ b/lib/l10n/fr.js
@@ -150,7 +150,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s a partagé « %2$s » avec vous.",
"Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir",
"The requested share does not exist anymore" : "Le partage demandé n'existe plus",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "La limite d'utilisateurs à été atteinte et cet utilisateur n'a pas été créé. Consultez vos notifications pour en savoir plus.",
"Could not find category \"%s\"" : "Impossible de trouver la catégorie \"%s\"",
"Sunday" : "Dimanche",
"Monday" : "Lundi",
@@ -284,6 +283,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Votre répertoire est lisible par les autres utilisateurs",
"Your data directory must be an absolute path" : "Le chemin de votre répertoire doit être un lien absolu",
"Check the value of \"datadirectory\" in your configuration" : "Verifiez la valeur de \"datadirectory\" dans votre configuration",
- "Your data directory is invalid" : "Votre répertoire n'est pas valide"
+ "Your data directory is invalid" : "Votre répertoire n'est pas valide",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "La limite d'utilisateurs à été atteinte et cet utilisateur n'a pas été créé. Consultez vos notifications pour en savoir plus."
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/lib/l10n/fr.json b/lib/l10n/fr.json
index 19925c8f066..28d290daf5e 100644
--- a/lib/l10n/fr.json
+++ b/lib/l10n/fr.json
@@ -148,7 +148,6 @@
"%1$s shared »%2$s« with you." : "%1$s a partagé « %2$s » avec vous.",
"Click the button below to open it." : "Cliquez sur le bouton ci-dessous pour l'ouvrir",
"The requested share does not exist anymore" : "Le partage demandé n'existe plus",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "La limite d'utilisateurs à été atteinte et cet utilisateur n'a pas été créé. Consultez vos notifications pour en savoir plus.",
"Could not find category \"%s\"" : "Impossible de trouver la catégorie \"%s\"",
"Sunday" : "Dimanche",
"Monday" : "Lundi",
@@ -282,6 +281,7 @@
"Your data directory is readable by other users" : "Votre répertoire est lisible par les autres utilisateurs",
"Your data directory must be an absolute path" : "Le chemin de votre répertoire doit être un lien absolu",
"Check the value of \"datadirectory\" in your configuration" : "Verifiez la valeur de \"datadirectory\" dans votre configuration",
- "Your data directory is invalid" : "Votre répertoire n'est pas valide"
+ "Your data directory is invalid" : "Votre répertoire n'est pas valide",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "La limite d'utilisateurs à été atteinte et cet utilisateur n'a pas été créé. Consultez vos notifications pour en savoir plus."
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/lib/l10n/hu.js b/lib/l10n/hu.js
index 917013fc6f6..99ebbbe04ad 100644
--- a/lib/l10n/hu.js
+++ b/lib/l10n/hu.js
@@ -8,6 +8,8 @@ OC.L10N.register(
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "A(z) %1$s alkalmazás fájljait helytelenül cserélték le. Ellenőrizze, hogy a verzió kompatibilis-e a kiszolgálóval.",
"Sample configuration detected" : "Példabeállítások észlelve",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Úgy tűnik, hogy a példakonfigurációt másolta le. Ez működésképtelenné teheti a telepítést, és nem támogatott. Olvassa el a dokumentációt, mielőtt módosításokat véget a config.php fájlban.",
+ "404" : "404",
+ "The page could not be found on the server." : "Az oldal nem található a kiszolgálón.",
"%s email verification" : "%s e-mail ellenőrzés",
"Email verification" : "E-mail ellenőrzés",
"Click the following button to confirm your email." : "Kattintson a következő gombra, hogy megerősítse az e-mail-címét.",
@@ -114,6 +116,10 @@ OC.L10N.register(
"Role" : "Szerepkör",
"Unknown user" : "Ismeretlen felhasználó",
"Additional settings" : "További beállítások",
+ "Enter the database username and name for %s" : "Adja meg a %s adatbázisának nevét és a hozzá tartozó felhasználónevet",
+ "Enter the database username for %s" : "Adja meg a %s adatbázisához tartozó felhasználónevet",
+ "Enter the database name for %s" : "Adja meg a %s adatbázisának nevét",
+ "You cannot use dots in the database name %s" : "A(z) %s adatbázisnév nem tartalmazhat pontot",
"MySQL username and/or password not valid" : "A MySQL felhasználónév vagy jelszó érvénytelen",
"You need to enter details of an existing account." : "Egy már létező fiók adatait kell megadnia.",
"Oracle connection could not be established" : "Az Oracle kapcsolat nem hozható létre",
@@ -121,6 +127,8 @@ OC.L10N.register(
"PostgreSQL username and/or password not valid" : "A PostgreSQL felhasználói név vagy jelszó érvénytelen",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "A Mac OS X nem támogatott, és a %s nem lesz teljesen működőképes. Csak saját felelősségre használja.",
"For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux kiszolgálót használni.",
+ "It seems that this %s instance is running on a 32-bit PHP environment. 64-bit is required for 26 and higher." : "Úgy tűnik, hogy ez a %s példány 32 bites PHP környezeten fut. A 26-es és újabb verziókhoz 64 bites szükséges.",
+ "Please switch to 64-bit PHP." : "Váltson 64 bites PHP-ra.",
"Set an admin username." : "Állítson be egy rendszergazdai felhasználónevet.",
"Set an admin password." : "Állítson be egy rendszergazdai jelszót.",
"Cannot create or write into the data directory %s" : "Nem létre létrehozni vagy beleírni a(z) %s adatkönyvtárba",
@@ -277,6 +285,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Az adatkönyvtára más felhasználók által is olvasható",
"Your data directory must be an absolute path" : "Az adatkönyvtárnak abszolút útvonalnak kell lennie",
"Check the value of \"datadirectory\" in your configuration" : "Ellenőrizze a „datadirectory” értékét a konfigurációban",
- "Your data directory is invalid" : "Az adatkönyvtár érvénytelen"
+ "Your data directory is invalid" : "Az adatkönyvtár érvénytelen",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Elérte a felhasználókorlátot, és a felhasználó nem jött létre. Nézze meg az értesítéseit, hogy többet tudjon meg."
},
"nplurals=2; plural=(n != 1);");
diff --git a/lib/l10n/hu.json b/lib/l10n/hu.json
index bec2c5bc0cd..de0e5ad1201 100644
--- a/lib/l10n/hu.json
+++ b/lib/l10n/hu.json
@@ -6,6 +6,8 @@
"The files of the app %1$s were not replaced correctly. Make sure it is a version compatible with the server." : "A(z) %1$s alkalmazás fájljait helytelenül cserélték le. Ellenőrizze, hogy a verzió kompatibilis-e a kiszolgálóval.",
"Sample configuration detected" : "Példabeállítások észlelve",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Úgy tűnik, hogy a példakonfigurációt másolta le. Ez működésképtelenné teheti a telepítést, és nem támogatott. Olvassa el a dokumentációt, mielőtt módosításokat véget a config.php fájlban.",
+ "404" : "404",
+ "The page could not be found on the server." : "Az oldal nem található a kiszolgálón.",
"%s email verification" : "%s e-mail ellenőrzés",
"Email verification" : "E-mail ellenőrzés",
"Click the following button to confirm your email." : "Kattintson a következő gombra, hogy megerősítse az e-mail-címét.",
@@ -112,6 +114,10 @@
"Role" : "Szerepkör",
"Unknown user" : "Ismeretlen felhasználó",
"Additional settings" : "További beállítások",
+ "Enter the database username and name for %s" : "Adja meg a %s adatbázisának nevét és a hozzá tartozó felhasználónevet",
+ "Enter the database username for %s" : "Adja meg a %s adatbázisához tartozó felhasználónevet",
+ "Enter the database name for %s" : "Adja meg a %s adatbázisának nevét",
+ "You cannot use dots in the database name %s" : "A(z) %s adatbázisnév nem tartalmazhat pontot",
"MySQL username and/or password not valid" : "A MySQL felhasználónév vagy jelszó érvénytelen",
"You need to enter details of an existing account." : "Egy már létező fiók adatait kell megadnia.",
"Oracle connection could not be established" : "Az Oracle kapcsolat nem hozható létre",
@@ -119,6 +125,8 @@
"PostgreSQL username and/or password not valid" : "A PostgreSQL felhasználói név vagy jelszó érvénytelen",
"Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "A Mac OS X nem támogatott, és a %s nem lesz teljesen működőképes. Csak saját felelősségre használja.",
"For the best results, please consider using a GNU/Linux server instead." : "A legjobb eredmény érdekében érdemes GNU/Linux kiszolgálót használni.",
+ "It seems that this %s instance is running on a 32-bit PHP environment. 64-bit is required for 26 and higher." : "Úgy tűnik, hogy ez a %s példány 32 bites PHP környezeten fut. A 26-es és újabb verziókhoz 64 bites szükséges.",
+ "Please switch to 64-bit PHP." : "Váltson 64 bites PHP-ra.",
"Set an admin username." : "Állítson be egy rendszergazdai felhasználónevet.",
"Set an admin password." : "Állítson be egy rendszergazdai jelszót.",
"Cannot create or write into the data directory %s" : "Nem létre létrehozni vagy beleírni a(z) %s adatkönyvtárba",
@@ -275,6 +283,7 @@
"Your data directory is readable by other users" : "Az adatkönyvtára más felhasználók által is olvasható",
"Your data directory must be an absolute path" : "Az adatkönyvtárnak abszolút útvonalnak kell lennie",
"Check the value of \"datadirectory\" in your configuration" : "Ellenőrizze a „datadirectory” értékét a konfigurációban",
- "Your data directory is invalid" : "Az adatkönyvtár érvénytelen"
+ "Your data directory is invalid" : "Az adatkönyvtár érvénytelen",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Elérte a felhasználókorlátot, és a felhasználó nem jött létre. Nézze meg az értesítéseit, hogy többet tudjon meg."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
} \ No newline at end of file
diff --git a/lib/l10n/ja.js b/lib/l10n/ja.js
index 68ecd585fd8..c0b20ed3455 100644
--- a/lib/l10n/ja.js
+++ b/lib/l10n/ja.js
@@ -150,7 +150,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$sが あなたと »%2$s« を共有しました。",
"Click the button below to open it." : "開くには下のボタンをクリック",
"The requested share does not exist anymore" : "この共有はもう存在しません。",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "ユーザー制限に達したため、ユーザーは作成されませんでした。詳細については、通知を確認してください。",
"Could not find category \"%s\"" : "カテゴリ \"%s\" が見つかりませんでした",
"Sunday" : "日曜日",
"Monday" : "月曜日",
@@ -284,6 +283,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "データディレクトリは、他のユーザーから読み取り専用です",
"Your data directory must be an absolute path" : "データディレクトリは、絶対パスにする必要があります",
"Check the value of \"datadirectory\" in your configuration" : "設定ファイル内の \"datadirectory\" の値を確認してください。",
- "Your data directory is invalid" : "データディレクトリが無効です"
+ "Your data directory is invalid" : "データディレクトリが無効です",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "ユーザー制限に達したため、ユーザーは作成されませんでした。詳細については、通知を確認してください。"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/ja.json b/lib/l10n/ja.json
index 059554ebfaa..910b4717e4b 100644
--- a/lib/l10n/ja.json
+++ b/lib/l10n/ja.json
@@ -148,7 +148,6 @@
"%1$s shared »%2$s« with you." : "%1$sが あなたと »%2$s« を共有しました。",
"Click the button below to open it." : "開くには下のボタンをクリック",
"The requested share does not exist anymore" : "この共有はもう存在しません。",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "ユーザー制限に達したため、ユーザーは作成されませんでした。詳細については、通知を確認してください。",
"Could not find category \"%s\"" : "カテゴリ \"%s\" が見つかりませんでした",
"Sunday" : "日曜日",
"Monday" : "月曜日",
@@ -282,6 +281,7 @@
"Your data directory is readable by other users" : "データディレクトリは、他のユーザーから読み取り専用です",
"Your data directory must be an absolute path" : "データディレクトリは、絶対パスにする必要があります",
"Check the value of \"datadirectory\" in your configuration" : "設定ファイル内の \"datadirectory\" の値を確認してください。",
- "Your data directory is invalid" : "データディレクトリが無効です"
+ "Your data directory is invalid" : "データディレクトリが無効です",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "ユーザー制限に達したため、ユーザーは作成されませんでした。詳細については、通知を確認してください。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/lv.js b/lib/l10n/lv.js
index 8ca9eae8786..481146c3378 100644
--- a/lib/l10n/lv.js
+++ b/lib/l10n/lv.js
@@ -6,6 +6,10 @@ OC.L10N.register(
"Sample configuration detected" : "Atrasta konfigurācijas paraugs",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Konstatēts, ka paraug konfigurācija ir nokopēta. Tas var izjaukt jūsu instalāciju un nav atbalstīts. Lūdzu, izlasiet dokumentāciju, pirms veicat izmaiņas config.php",
"404" : "404",
+ "%s email verification" : "%s e-pasta pārbaude",
+ "Email verification" : "E-pasta pārbaude",
+ "Click the following button to confirm your email." : "Noklikšķiniet uz šīs pogas, lai apstiprinātu savu e-pastu.",
+ "Confirm your email" : "Apstipriniet savu e-pastu",
"%1$s and %2$s" : "%1$s un %2$s",
"%1$s, %2$s and %3$s" : "%1$s, %2$s un %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s un %4$s",
@@ -41,6 +45,7 @@ OC.L10N.register(
"Appearance and accessibility" : "Izskats un pieejamība",
"Apps" : "Lietotnes",
"Personal settings" : "Personiskie iestatījumi",
+ "Administration settings" : "Administrēšanas iestatījumi",
"Settings" : "Iestatījumi",
"Log out" : "Izrakstīties",
"Users" : "Lietotāji",
@@ -61,6 +66,7 @@ OC.L10N.register(
"Set an admin username." : "Iestatiet administratora lietotājvārdu.",
"Set an admin password." : "Iestatiet administratora paroli.",
"Open »%s«" : "Atvērt »%s«",
+ "You are not allowed to share %s" : "Jums nav atļauts dalīties %s",
"Could not find category \"%s\"" : "Nevarēja atrast kategoriju “%s”",
"Sunday" : "Svētdiena",
"Monday" : "Pirmdiena",
diff --git a/lib/l10n/lv.json b/lib/l10n/lv.json
index 7669b59eb0b..79ae90f6fbb 100644
--- a/lib/l10n/lv.json
+++ b/lib/l10n/lv.json
@@ -4,6 +4,10 @@
"Sample configuration detected" : "Atrasta konfigurācijas paraugs",
"It has been detected that the sample configuration has been copied. This can break your installation and is unsupported. Please read the documentation before performing changes on config.php" : "Konstatēts, ka paraug konfigurācija ir nokopēta. Tas var izjaukt jūsu instalāciju un nav atbalstīts. Lūdzu, izlasiet dokumentāciju, pirms veicat izmaiņas config.php",
"404" : "404",
+ "%s email verification" : "%s e-pasta pārbaude",
+ "Email verification" : "E-pasta pārbaude",
+ "Click the following button to confirm your email." : "Noklikšķiniet uz šīs pogas, lai apstiprinātu savu e-pastu.",
+ "Confirm your email" : "Apstipriniet savu e-pastu",
"%1$s and %2$s" : "%1$s un %2$s",
"%1$s, %2$s and %3$s" : "%1$s, %2$s un %3$s",
"%1$s, %2$s, %3$s and %4$s" : "%1$s, %2$s, %3$s un %4$s",
@@ -39,6 +43,7 @@
"Appearance and accessibility" : "Izskats un pieejamība",
"Apps" : "Lietotnes",
"Personal settings" : "Personiskie iestatījumi",
+ "Administration settings" : "Administrēšanas iestatījumi",
"Settings" : "Iestatījumi",
"Log out" : "Izrakstīties",
"Users" : "Lietotāji",
@@ -59,6 +64,7 @@
"Set an admin username." : "Iestatiet administratora lietotājvārdu.",
"Set an admin password." : "Iestatiet administratora paroli.",
"Open »%s«" : "Atvērt »%s«",
+ "You are not allowed to share %s" : "Jums nav atļauts dalīties %s",
"Could not find category \"%s\"" : "Nevarēja atrast kategoriju “%s”",
"Sunday" : "Svētdiena",
"Monday" : "Pirmdiena",
diff --git a/lib/l10n/pl.js b/lib/l10n/pl.js
index bab9d6c8c42..1a3f24d56b0 100644
--- a/lib/l10n/pl.js
+++ b/lib/l10n/pl.js
@@ -152,7 +152,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s udostępnił Tobie »%2$s«.",
"Click the button below to open it." : "Kliknij przycisk poniżej, aby otworzyć.",
"The requested share does not exist anymore" : "Żądane udostępnienie już nie istnieje",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Osiągnięto limit użytkowników i użytkownik nie został utworzony. Sprawdź swoje powiadomienia, aby dowiedzieć się więcej.",
"Could not find category \"%s\"" : "Nie można znaleźć kategorii \"%s\"",
"Sunday" : "Niedziela",
"Monday" : "Poniedziałek",
@@ -286,6 +285,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Twój katalog danych jest widoczny dla innych użytkowników",
"Your data directory must be an absolute path" : "Katalog danych musi mieć ścieżkę absolutną",
"Check the value of \"datadirectory\" in your configuration" : "Sprawdź wartość \"datadirectory\" w swojej konfiguracji",
- "Your data directory is invalid" : "Katalog danych jest nieprawidłowy"
+ "Your data directory is invalid" : "Katalog danych jest nieprawidłowy",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Osiągnięto limit użytkowników i użytkownik nie został utworzony. Sprawdź swoje powiadomienia, aby dowiedzieć się więcej."
},
"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/lib/l10n/pl.json b/lib/l10n/pl.json
index f1db02fde82..8420a5edc5f 100644
--- a/lib/l10n/pl.json
+++ b/lib/l10n/pl.json
@@ -150,7 +150,6 @@
"%1$s shared »%2$s« with you." : "%1$s udostępnił Tobie »%2$s«.",
"Click the button below to open it." : "Kliknij przycisk poniżej, aby otworzyć.",
"The requested share does not exist anymore" : "Żądane udostępnienie już nie istnieje",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Osiągnięto limit użytkowników i użytkownik nie został utworzony. Sprawdź swoje powiadomienia, aby dowiedzieć się więcej.",
"Could not find category \"%s\"" : "Nie można znaleźć kategorii \"%s\"",
"Sunday" : "Niedziela",
"Monday" : "Poniedziałek",
@@ -284,6 +283,7 @@
"Your data directory is readable by other users" : "Twój katalog danych jest widoczny dla innych użytkowników",
"Your data directory must be an absolute path" : "Katalog danych musi mieć ścieżkę absolutną",
"Check the value of \"datadirectory\" in your configuration" : "Sprawdź wartość \"datadirectory\" w swojej konfiguracji",
- "Your data directory is invalid" : "Katalog danych jest nieprawidłowy"
+ "Your data directory is invalid" : "Katalog danych jest nieprawidłowy",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Osiągnięto limit użytkowników i użytkownik nie został utworzony. Sprawdź swoje powiadomienia, aby dowiedzieć się więcej."
},"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);"
} \ No newline at end of file
diff --git a/lib/l10n/pt_BR.js b/lib/l10n/pt_BR.js
index 3a2c200a04e..f695f626212 100644
--- a/lib/l10n/pt_BR.js
+++ b/lib/l10n/pt_BR.js
@@ -150,7 +150,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s compartilhou »%2$s« com você.",
"Click the button below to open it." : "Clique no botão abaixo para abri-lo.",
"The requested share does not exist anymore" : "O compartilhamento solicitado não existe mais",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "O limite de usuários foi atingido e o usuário não foi criado. Verifique suas notificações para saber mais.",
"Could not find category \"%s\"" : "Impossível localizar a categoria \"%s\"",
"Sunday" : "Domingo",
"Monday" : "Segunda-feira",
@@ -284,6 +283,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "O diretório de dados está legível para outros usuários",
"Your data directory must be an absolute path" : "O diretório de dados deve ser um caminho absoluto",
"Check the value of \"datadirectory\" in your configuration" : "Verifique o valor do \"datadirectory\" na sua configuração",
- "Your data directory is invalid" : "Seu diretório de dados é inválido"
+ "Your data directory is invalid" : "Seu diretório de dados é inválido",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "O limite de usuários foi atingido e o usuário não foi criado. Verifique suas notificações para saber mais."
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
diff --git a/lib/l10n/pt_BR.json b/lib/l10n/pt_BR.json
index 10d7a9c44cd..71ead0227cc 100644
--- a/lib/l10n/pt_BR.json
+++ b/lib/l10n/pt_BR.json
@@ -148,7 +148,6 @@
"%1$s shared »%2$s« with you." : "%1$s compartilhou »%2$s« com você.",
"Click the button below to open it." : "Clique no botão abaixo para abri-lo.",
"The requested share does not exist anymore" : "O compartilhamento solicitado não existe mais",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "O limite de usuários foi atingido e o usuário não foi criado. Verifique suas notificações para saber mais.",
"Could not find category \"%s\"" : "Impossível localizar a categoria \"%s\"",
"Sunday" : "Domingo",
"Monday" : "Segunda-feira",
@@ -282,6 +281,7 @@
"Your data directory is readable by other users" : "O diretório de dados está legível para outros usuários",
"Your data directory must be an absolute path" : "O diretório de dados deve ser um caminho absoluto",
"Check the value of \"datadirectory\" in your configuration" : "Verifique o valor do \"datadirectory\" na sua configuração",
- "Your data directory is invalid" : "Seu diretório de dados é inválido"
+ "Your data directory is invalid" : "Seu diretório de dados é inválido",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "O limite de usuários foi atingido e o usuário não foi criado. Verifique suas notificações para saber mais."
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
} \ No newline at end of file
diff --git a/lib/l10n/sk.js b/lib/l10n/sk.js
index 1a6d482b42b..2dd56c8ce5f 100644
--- a/lib/l10n/sk.js
+++ b/lib/l10n/sk.js
@@ -152,7 +152,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s vám sprístupnil »%2$s«.",
"Click the button below to open it." : "Pre otvorenie klienta kliknite na tlačítko nižšie.",
"The requested share does not exist anymore" : "Požadované sprístupnenie už neexistuje",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bol dosiahnutý limit používateľov a používateľ nebol vytvorený. Pozrite sa do upozornení pre viac informácií.",
"Could not find category \"%s\"" : "Nemožno nájsť danú kategóriu \"%s\"",
"Sunday" : "Nedeľa",
"Monday" : "Pondelok",
@@ -286,6 +285,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Váš priečinok s dátami je prístupný na čítanie ostatným používateľom",
"Your data directory must be an absolute path" : "Priečinok s dátami musí byť zadaný ako absolútna cesta",
"Check the value of \"datadirectory\" in your configuration" : "Skontrolujte hodnotu \"datadirectory\" vo vašej konfigurácii",
- "Your data directory is invalid" : "Priečinok s dátami je neplatný"
+ "Your data directory is invalid" : "Priečinok s dátami je neplatný",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bol dosiahnutý limit používateľov a používateľ nebol vytvorený. Pozrite sa do upozornení pre viac informácií."
},
"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/lib/l10n/sk.json b/lib/l10n/sk.json
index 6d317dec501..15ce14a15cc 100644
--- a/lib/l10n/sk.json
+++ b/lib/l10n/sk.json
@@ -150,7 +150,6 @@
"%1$s shared »%2$s« with you." : "%1$s vám sprístupnil »%2$s«.",
"Click the button below to open it." : "Pre otvorenie klienta kliknite na tlačítko nižšie.",
"The requested share does not exist anymore" : "Požadované sprístupnenie už neexistuje",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bol dosiahnutý limit používateľov a používateľ nebol vytvorený. Pozrite sa do upozornení pre viac informácií.",
"Could not find category \"%s\"" : "Nemožno nájsť danú kategóriu \"%s\"",
"Sunday" : "Nedeľa",
"Monday" : "Pondelok",
@@ -284,6 +283,7 @@
"Your data directory is readable by other users" : "Váš priečinok s dátami je prístupný na čítanie ostatným používateľom",
"Your data directory must be an absolute path" : "Priečinok s dátami musí byť zadaný ako absolútna cesta",
"Check the value of \"datadirectory\" in your configuration" : "Skontrolujte hodnotu \"datadirectory\" vo vašej konfigurácii",
- "Your data directory is invalid" : "Priečinok s dátami je neplatný"
+ "Your data directory is invalid" : "Priečinok s dátami je neplatný",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Bol dosiahnutý limit používateľov a používateľ nebol vytvorený. Pozrite sa do upozornení pre viac informácií."
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"
} \ No newline at end of file
diff --git a/lib/l10n/tr.js b/lib/l10n/tr.js
index 3f58613c2ad..8253c6538c0 100644
--- a/lib/l10n/tr.js
+++ b/lib/l10n/tr.js
@@ -152,7 +152,7 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s, sizinle »%2$s« ögesini paylaştı.",
"Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.",
"The requested share does not exist anymore" : "Erişilmek istenilen paylaşım artık yok",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Kullanıcı sayısı sınırına ulaşıldığından kullanıcı eklenemedi. Ayrıntılı bilgi almak için bildirimlerinize bakın.",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Kullanıcı sayısı sınırına ulaşıldığından kullanıcı eklenemedi. Ayrıntılı bilgi almak için bildirimlerinize bakın.",
"Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı",
"Sunday" : "Pazar",
"Monday" : "Pazartesi",
@@ -286,6 +286,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "Veri klasörünüz diğer kullanıcılar tarafından okunabilir",
"Your data directory must be an absolute path" : "Veri klasörünüz mutlak bir yol olmalıdır",
"Check the value of \"datadirectory\" in your configuration" : "Yapılandırmanızdaki \"datadirectory\" seçeneğini denetleyin",
- "Your data directory is invalid" : "Veri klasörünüz geçersiz"
+ "Your data directory is invalid" : "Veri klasörünüz geçersiz",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Kullanıcı sayısı sınırına ulaşıldığından kullanıcı eklenemedi. Ayrıntılı bilgi almak için bildirimlerinize bakın."
},
"nplurals=2; plural=(n > 1);");
diff --git a/lib/l10n/tr.json b/lib/l10n/tr.json
index 112235de5df..dba23731405 100644
--- a/lib/l10n/tr.json
+++ b/lib/l10n/tr.json
@@ -150,7 +150,7 @@
"%1$s shared »%2$s« with you." : "%1$s, sizinle »%2$s« ögesini paylaştı.",
"Click the button below to open it." : "Açmak için aşağıdaki düğmeye tıklayın.",
"The requested share does not exist anymore" : "Erişilmek istenilen paylaşım artık yok",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Kullanıcı sayısı sınırına ulaşıldığından kullanıcı eklenemedi. Ayrıntılı bilgi almak için bildirimlerinize bakın.",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "Kullanıcı sayısı sınırına ulaşıldığından kullanıcı eklenemedi. Ayrıntılı bilgi almak için bildirimlerinize bakın.",
"Could not find category \"%s\"" : "\"%s\" kategorisi bulunamadı",
"Sunday" : "Pazar",
"Monday" : "Pazartesi",
@@ -284,6 +284,7 @@
"Your data directory is readable by other users" : "Veri klasörünüz diğer kullanıcılar tarafından okunabilir",
"Your data directory must be an absolute path" : "Veri klasörünüz mutlak bir yol olmalıdır",
"Check the value of \"datadirectory\" in your configuration" : "Yapılandırmanızdaki \"datadirectory\" seçeneğini denetleyin",
- "Your data directory is invalid" : "Veri klasörünüz geçersiz"
+ "Your data directory is invalid" : "Veri klasörünüz geçersiz",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "Kullanıcı sayısı sınırına ulaşıldığından kullanıcı eklenemedi. Ayrıntılı bilgi almak için bildirimlerinize bakın."
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/lib/l10n/zh_CN.js b/lib/l10n/zh_CN.js
index fb4c1ce044d..43ea59c7558 100644
--- a/lib/l10n/zh_CN.js
+++ b/lib/l10n/zh_CN.js
@@ -150,7 +150,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s 对您共享了 »%2$s«。",
"Click the button below to open it." : "点击下方按钮可打开它。",
"The requested share does not exist anymore" : "当前请求的共享已经不存在",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已达到用户上限,未创建该用户。请检查您的通知以了解更多。",
"Could not find category \"%s\"" : "无法找到分类 \"%s\"",
"Sunday" : "星期日",
"Monday" : "星期一",
@@ -284,6 +283,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "您的数据目录可被其他用户读取",
"Your data directory must be an absolute path" : "您的数据目录必须是绝对路径",
"Check the value of \"datadirectory\" in your configuration" : "请检查配置文件中 \"datadirectory\" 的值",
- "Your data directory is invalid" : "您的数据目录无效"
+ "Your data directory is invalid" : "您的数据目录无效",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已达到用户上限,未创建该用户。请检查您的通知以了解更多。"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_CN.json b/lib/l10n/zh_CN.json
index 0c315739503..14652728147 100644
--- a/lib/l10n/zh_CN.json
+++ b/lib/l10n/zh_CN.json
@@ -148,7 +148,6 @@
"%1$s shared »%2$s« with you." : "%1$s 对您共享了 »%2$s«。",
"Click the button below to open it." : "点击下方按钮可打开它。",
"The requested share does not exist anymore" : "当前请求的共享已经不存在",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已达到用户上限,未创建该用户。请检查您的通知以了解更多。",
"Could not find category \"%s\"" : "无法找到分类 \"%s\"",
"Sunday" : "星期日",
"Monday" : "星期一",
@@ -282,6 +281,7 @@
"Your data directory is readable by other users" : "您的数据目录可被其他用户读取",
"Your data directory must be an absolute path" : "您的数据目录必须是绝对路径",
"Check the value of \"datadirectory\" in your configuration" : "请检查配置文件中 \"datadirectory\" 的值",
- "Your data directory is invalid" : "您的数据目录无效"
+ "Your data directory is invalid" : "您的数据目录无效",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已达到用户上限,未创建该用户。请检查您的通知以了解更多。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/zh_HK.js b/lib/l10n/zh_HK.js
index 4796f361fae..80e0944f2ad 100644
--- a/lib/l10n/zh_HK.js
+++ b/lib/l10n/zh_HK.js
@@ -152,7 +152,7 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s 與您分享了 %2$s",
"Click the button below to open it." : "點下方連結開啟",
"The requested share does not exist anymore" : "該分享已經不存在",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "用戶數量已達上限,無法創建新用戶。請查看您的通知以獲取更多資料。",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "未創建用戶因為已達到用戶上限。請查看您的通知以了解更多信息。",
"Could not find category \"%s\"" : "找不到分類:\"%s\"",
"Sunday" : "星期日",
"Monday" : "星期一",
@@ -286,6 +286,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "您的資料目錄可以被其他用戶讀取",
"Your data directory must be an absolute path" : "您的資料目錄必須為絕對路徑",
"Check the value of \"datadirectory\" in your configuration" : "請檢查您的設定檔中 \"datadirectory\" 的值",
- "Your data directory is invalid" : "您的資料目錄無效"
+ "Your data directory is invalid" : "您的資料目錄無效",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "用戶數量已達上限,無法創建新用戶。請查看您的通知以獲取更多資料。"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_HK.json b/lib/l10n/zh_HK.json
index 592c1a94f89..d962baded59 100644
--- a/lib/l10n/zh_HK.json
+++ b/lib/l10n/zh_HK.json
@@ -150,7 +150,7 @@
"%1$s shared »%2$s« with you." : "%1$s 與您分享了 %2$s",
"Click the button below to open it." : "點下方連結開啟",
"The requested share does not exist anymore" : "該分享已經不存在",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "用戶數量已達上限,無法創建新用戶。請查看您的通知以獲取更多資料。",
+ "The user was not created because the user limit has been reached. Check your notifications to learn more." : "未創建用戶因為已達到用戶上限。請查看您的通知以了解更多信息。",
"Could not find category \"%s\"" : "找不到分類:\"%s\"",
"Sunday" : "星期日",
"Monday" : "星期一",
@@ -284,6 +284,7 @@
"Your data directory is readable by other users" : "您的資料目錄可以被其他用戶讀取",
"Your data directory must be an absolute path" : "您的資料目錄必須為絕對路徑",
"Check the value of \"datadirectory\" in your configuration" : "請檢查您的設定檔中 \"datadirectory\" 的值",
- "Your data directory is invalid" : "您的資料目錄無效"
+ "Your data directory is invalid" : "您的資料目錄無效",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "用戶數量已達上限,無法創建新用戶。請查看您的通知以獲取更多資料。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/l10n/zh_TW.js b/lib/l10n/zh_TW.js
index e125172a3b9..b79d70d2d5d 100644
--- a/lib/l10n/zh_TW.js
+++ b/lib/l10n/zh_TW.js
@@ -152,7 +152,6 @@ OC.L10N.register(
"%1$s shared »%2$s« with you." : "%1$s 與您分享了 %2$s",
"Click the button below to open it." : "點下方連結開啟",
"The requested share does not exist anymore" : "該分享已經不存在",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已達使用者限制,所以未建立使用者。請檢查您的通知以取得更多資訊。",
"Could not find category \"%s\"" : "找不到分類:\"%s\"",
"Sunday" : "週日",
"Monday" : "週一",
@@ -286,6 +285,7 @@ OC.L10N.register(
"Your data directory is readable by other users" : "您的資料目錄可以被其他使用者讀取",
"Your data directory must be an absolute path" : "您的資料目錄必須為絕對路徑",
"Check the value of \"datadirectory\" in your configuration" : "請檢查您的設定檔中 \"datadirectory\" 的值",
- "Your data directory is invalid" : "您的資料目錄無效"
+ "Your data directory is invalid" : "您的資料目錄無效",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已達使用者限制,所以未建立使用者。請檢查您的通知以取得更多資訊。"
},
"nplurals=1; plural=0;");
diff --git a/lib/l10n/zh_TW.json b/lib/l10n/zh_TW.json
index 501fd0f4321..8fa88140ec1 100644
--- a/lib/l10n/zh_TW.json
+++ b/lib/l10n/zh_TW.json
@@ -150,7 +150,6 @@
"%1$s shared »%2$s« with you." : "%1$s 與您分享了 %2$s",
"Click the button below to open it." : "點下方連結開啟",
"The requested share does not exist anymore" : "該分享已經不存在",
- "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已達使用者限制,所以未建立使用者。請檢查您的通知以取得更多資訊。",
"Could not find category \"%s\"" : "找不到分類:\"%s\"",
"Sunday" : "週日",
"Monday" : "週一",
@@ -284,6 +283,7 @@
"Your data directory is readable by other users" : "您的資料目錄可以被其他使用者讀取",
"Your data directory must be an absolute path" : "您的資料目錄必須為絕對路徑",
"Check the value of \"datadirectory\" in your configuration" : "請檢查您的設定檔中 \"datadirectory\" 的值",
- "Your data directory is invalid" : "您的資料目錄無效"
+ "Your data directory is invalid" : "您的資料目錄無效",
+ "The user limit has been reached and the user was not created. Check your notifications to learn more." : "已達使用者限制,所以未建立使用者。請檢查您的通知以取得更多資訊。"
},"pluralForm" :"nplurals=1; plural=0;"
} \ No newline at end of file
diff --git a/lib/private/AppConfig.php b/lib/private/AppConfig.php
index 00e5dddc1f9..708b31b3136 100644
--- a/lib/private/AppConfig.php
+++ b/lib/private/AppConfig.php
@@ -46,6 +46,7 @@ class AppConfig implements IAppConfig {
/** @var array[] */
protected $sensitiveValues = [
'circles' => [
+ '/^key_pairs$/',
'/^local_gskey$/',
],
'external' => [
@@ -132,6 +133,9 @@ class AppConfig implements IAppConfig {
'user_ldap' => [
'/^(s..)?ldap_agent_password$/',
],
+ 'user_saml' => [
+ '/^idp-x509cert$/',
+ ],
];
/** @var Connection */
diff --git a/lib/private/Files/Node/Folder.php b/lib/private/Files/Node/Folder.php
index 268c1d8dd06..bf9ae3c148d 100644
--- a/lib/private/Files/Node/Folder.php
+++ b/lib/private/Files/Node/Folder.php
@@ -66,10 +66,11 @@ class Folder extends Node implements \OCP\Files\Folder {
* @throws \OCP\Files\NotPermittedException
*/
public function getFullPath($path) {
+ $path = $this->normalizePath($path);
if (!$this->isValidPath($path)) {
throw new NotPermittedException('Invalid path');
}
- return $this->path . $this->normalizePath($path);
+ return $this->path . $path;
}
/**
@@ -371,12 +372,12 @@ class Folder extends Node implements \OCP\Files\Folder {
return [$this->root->createNode(
$absolutePath, new \OC\Files\FileInfo(
- $absolutePath,
- $mount->getStorage(),
- $cacheEntry->getPath(),
- $cacheEntry,
- $mount
- ))];
+ $absolutePath,
+ $mount->getStorage(),
+ $cacheEntry->getPath(),
+ $cacheEntry,
+ $mount
+ ))];
}
public function getFreeSpace() {
diff --git a/lib/private/Files/Node/Node.php b/lib/private/Files/Node/Node.php
index bfa4d6861ea..8a752ff281d 100644
--- a/lib/private/Files/Node/Node.php
+++ b/lib/private/Files/Node/Node.php
@@ -99,10 +99,10 @@ class Node implements \OCP\Files\Node {
* @throws NotFoundException
*/
public function getFileInfo() {
- if (!Filesystem::isValidPath($this->path)) {
- throw new InvalidPathException();
- }
if (!$this->fileInfo) {
+ if (!Filesystem::isValidPath($this->path)) {
+ throw new InvalidPathException();
+ }
$fileInfo = $this->view->getFileInfo($this->path);
if ($fileInfo instanceof FileInfo) {
$this->fileInfo = $fileInfo;
diff --git a/lib/private/Preview/Imaginary.php b/lib/private/Preview/Imaginary.php
index 4da88f1ab26..a9883a1dd9c 100644
--- a/lib/private/Preview/Imaginary.php
+++ b/lib/private/Preview/Imaginary.php
@@ -27,6 +27,7 @@ use OCP\Files\File;
use OCP\Http\Client\IClientService;
use OCP\IConfig;
use OCP\IImage;
+use OCP\Image;
use OC\StreamImage;
use Psr\Log\LoggerInterface;
@@ -126,12 +127,21 @@ class Imaginary extends ProviderV2 {
return null;
}
- if ($response->getHeader('X-Image-Width') && $response->getHeader('X-Image-Height')) {
- $maxX = (int)$response->getHeader('X-Image-Width');
- $maxY = (int)$response->getHeader('X-Image-Height');
+ // This is not optimal but previews are distorted if the wrong width and height values are
+ // used. Both dimension headers are only sent when passing the option "-return-size" to
+ // Imaginary.
+ if ($response->getHeader('Image-Width') && $response->getHeader('Image-Height')) {
+ $image = new StreamImage(
+ $response->getBody(),
+ $response->getHeader('Content-Type'),
+ (int)$response->getHeader('Image-Width'),
+ (int)$response->getHeader('Image-Height'),
+ );
+ } else {
+ $image = new Image();
+ $image->loadFromFileHandle($response->getBody());
}
- $image = new StreamImage($response->getBody(), $response->getHeader('Content-Type'), $maxX, $maxY);
return $image->valid() ? $image : null;
}
diff --git a/lib/private/Setup/PostgreSQL.php b/lib/private/Setup/PostgreSQL.php
index bc24909dc3d..af816c7ad04 100644
--- a/lib/private/Setup/PostgreSQL.php
+++ b/lib/private/Setup/PostgreSQL.php
@@ -62,6 +62,7 @@ class PostgreSQL extends AbstractDatabase {
}
if ($canCreateRoles) {
+ $connectionMainDatabase = $this->connect();
//use the admin login data for the new database user
//add prefix to the postgresql user name to prevent collisions
@@ -70,6 +71,16 @@ class PostgreSQL extends AbstractDatabase {
$this->dbPassword = \OC::$server->getSecureRandom()->generate(30, ISecureRandom::CHAR_ALPHANUMERIC);
$this->createDBUser($connection);
+
+ // Go to the main database and grant create on the public schema
+ // The code below is implemented to make installing possible with PostgreSQL version 15:
+ // https://www.postgresql.org/docs/release/15.0/
+ // From the release notes: For new databases having no need to defend against insider threats, granting CREATE permission will yield the behavior of prior releases
+ // Therefore we assume that the database is only used by one user/service which is Nextcloud
+ // Additional services should get installed in a separate database in order to stay secure
+ // Also see https://www.postgresql.org/docs/15/ddl-schemas.html#DDL-SCHEMAS-PATTERNS
+ $connectionMainDatabase->executeQuery('GRANT CREATE ON SCHEMA public TO ' . addslashes($this->dbUser));
+ $connectionMainDatabase->close();
}
$this->config->setValues([
diff --git a/lib/private/Support/Subscription/Assertion.php b/lib/private/Support/Subscription/Assertion.php
index 9b77e875944..451afe83bd3 100644
--- a/lib/private/Support/Subscription/Assertion.php
+++ b/lib/private/Support/Subscription/Assertion.php
@@ -49,7 +49,7 @@ class Assertion implements IAssertion {
public function createUserIsLegit(): void {
if ($this->registry->delegateIsHardUserLimitReached($this->notificationManager)) {
$l = $this->l10nFactory->get('lib');
- throw new HintException($l->t('The user limit has been reached and the user was not created. Check your notifications to learn more.'));
+ throw new HintException($l->t('The user was not created because the user limit has been reached. Check your notifications to learn more.'));
}
}
}
diff --git a/lib/private/SystemConfig.php b/lib/private/SystemConfig.php
index 0bc6154fbc4..6cd0e4376c5 100644
--- a/lib/private/SystemConfig.php
+++ b/lib/private/SystemConfig.php
@@ -72,6 +72,10 @@ class SystemConfig {
'host' => true,
'password' => true,
],
+ 'redis.cluster' => [
+ 'seeds' => true,
+ 'password' => true,
+ ],
'objectstore' => [
'arguments' => [
// Legacy Swift (https://github.com/nextcloud/server/pull/17696#discussion_r341302207)
diff --git a/resources/codesigning/root.crl b/resources/codesigning/root.crl
index fec2a211be7..bd3abd04914 100644
--- a/resources/codesigning/root.crl
+++ b/resources/codesigning/root.crl
@@ -1,43 +1,44 @@
-----BEGIN X509 CRL-----
-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
+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
-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
+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
-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
+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
+0lgQkIofBsCJkTCW8w==
-----END X509 CRL-----
diff --git a/tests/drone-run-integration-tests.sh b/tests/drone-run-integration-tests.sh
index af3c7a895c8..a341f363b86 100755
--- a/tests/drone-run-integration-tests.sh
+++ b/tests/drone-run-integration-tests.sh
@@ -20,4 +20,6 @@ echo "========================="
[[ $(git diff --name-only origin/$DRONE_TARGET_BRANCH...$DRONE_COMMIT_SHA | grep -c "^build/integration/") -gt 0 ]] && echo "Integration test files are modified" && exit 0
+[[ $(git diff --name-only origin/$DRONE_TARGET_BRANCH...$DRONE_COMMIT_SHA | grep -c "3rdparty") -gt 0 ]] && echo "3rdparty is modified" && exit 0
+
exit 1
diff --git a/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php b/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php
index ce739a74bb8..d6e8dba31be 100644
--- a/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php
+++ b/tests/lib/Authentication/Token/PublicKeyTokenProviderTest.php
@@ -36,6 +36,7 @@ use OC\Authentication\Token\PublicKeyTokenProvider;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
+use OCP\IDBConnection;
use OCP\Security\ICrypto;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
@@ -50,7 +51,7 @@ class PublicKeyTokenProviderTest extends TestCase {
private $crypto;
/** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
private $config;
- /** @var IDBConnection|IDBConnection|MockObject */
+ /** @var IDBConnection|MockObject */
private IDBConnection $db;
/** @var LoggerInterface|\PHPUnit\Framework\MockObject\MockObject */
private $logger;
@@ -73,9 +74,6 @@ class PublicKeyTokenProviderTest extends TestCase {
['openssl', [], []],
]);
$this->db = $this->createMock(IDBConnection::class);
- $this->db->method('atomic')->willReturnCallback(function ($cb) {
- return $cb();
- });
$this->logger = $this->createMock(LoggerInterface::class);
$this->timeFactory = $this->createMock(ITimeFactory::class);
$this->time = 1313131;