Compare commits

...

574 Commits

Author SHA1 Message Date
blizzz e4e9c87eec Merge pull request #35623 from nextcloud/release/25.0.2_rc3
25.0.2 RC3
2022-12-06 15:27:56 +01:00
Arthur Schiwon 7b601a3759 25.0.2 RC3
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-12-06 15:08:11 +01:00
Vincent Petry 5bc2154bf0 Merge pull request #35616 from nextcloud/backport/fix/empty-secret-migration-files-external
[stable25] Fix migration to non-empty secret
2022-12-06 15:04:25 +01:00
Carl Schwan 1c558d2f15 Add comments
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
(cherry picked from commit 5e31ed4f52)
2022-12-06 09:00:45 +01:00
Carl Schwan 40f01de456 Fix migration to non-empty secret
Add a fallback for empty keys

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
(cherry picked from commit 754cb58b12)
2022-12-06 09:00:45 +01:00
Nextcloud bot 987b59b006 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-06 02:26:14 +00:00
Vincent Petry 9eb99ecbab Merge pull request #35605 from nextcloud/backport/stable25/31499
[stable25]  Add fallback routines for empty secret cases
2022-12-05 20:02:00 +01:00
Carl Schwan 7416f44dbc Mark method as deprecated
Co-authored-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
(cherry picked from commit ef31396727)
2022-12-05 16:10:55 +00:00
Carl Schwan 1d33d37bf2 Fix unit tests
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
(cherry picked from commit 01e2a26749)
2022-12-05 16:10:55 +00:00
Julius Härtl 0f7260de03 Fix decryption fallback after adding a secret
Signed-off-by: Julius Härtl <jus@bitgrid.net>
(cherry picked from commit a6796b4247)
2022-12-05 16:10:55 +00:00
Julius Härtl 3ebf7b818b Rotate token after fallback
Signed-off-by: Julius Härtl <jus@bitgrid.net>
(cherry picked from commit 553cb499b2)
2022-12-05 16:10:55 +00:00
Julius Härtl e4735ea580 Add fallback routines for empty secret cases
Signed-off-by: Julius Härtl <jus@bitgrid.net>
(cherry picked from commit 81f8719cc0)
2022-12-05 16:10:55 +00:00
Simon L c779928143 Merge pull request #35606 from nextcloud/backport/35580/stable25
[stable25] downgrade ubuntu in order to fix CI
2022-12-05 16:52:34 +01:00
Simon L d9226608b4 downgrade ubuntu in order to fix CI
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-12-05 15:23:07 +01:00
Nextcloud bot ad7ddbdec5 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-05 02:15:33 +00:00
Nextcloud bot 9205e01f69 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-04 02:14:58 +00:00
Nextcloud bot 9d68520524 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-03 02:15:15 +00:00
Nextcloud bot 06cc4a0778 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-02 02:15:31 +00:00
blizzz 0f57aba5f6 Merge pull request #35487 from nextcloud/release/25.0.2_rc2
25.0.2 RC2
2022-12-01 10:07:34 +01:00
Nextcloud bot 7bb579d650 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-12-01 02:15:30 +00:00
Nextcloud bot 5936991827 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-30 02:15:41 +00:00
Arthur Schiwon d76b7fb7fe 25.0.2 RC2
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-11-29 13:54:11 +01:00
Vincent Petry d3e0d989af Merge pull request #35478 from nextcloud/backport/35471/stable25
[stable25] Allow upgrading from ownCloud 10.11
2022-11-29 11:34:11 +01:00
Vincent Petry 96814dec10 Remove ownCloud 10.5 upgrade path
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-11-29 08:57:31 +00:00
Vincent Petry aeefd41b87 Allow upgrading from ownCloud 10.11
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-11-29 08:57:31 +00:00
Nextcloud bot 720c7e4881 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-29 02:14:35 +00:00
Pytal 3c207d9932 Merge pull request #35453 from nextcloud/backport/35434/stable25
[stable25] fix update for 32-bit
2022-11-28 10:42:40 -08:00
Pytal 233ae5a58b Merge pull request #35454 from nextcloud/revert-35346-backport/35315/stable25
[stable25] Revert "[stable25] Fix border color contrast"
2022-11-28 09:54:52 -08:00
Simon L 5137af7293 Revert "[stable25] Fix theming tests"
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-28 11:26:18 +01:00
Simon L 5cfeec8f5d Revert "[stable25] Fix border color contrast"
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-28 11:24:05 +01:00
Simon L f13ffc2a64 fix update for 32-bit
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-28 08:47:43 +00:00
Nextcloud bot 723278da5c [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-28 02:19:35 +00:00
Nextcloud bot 2b7ad44c99 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-27 02:18:34 +00:00
Nextcloud bot e7810fd8cf [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-26 02:18:25 +00:00
blizzz 19833e8b0e Merge pull request #35305 from nextcloud/release/25.0.2_rc1
25.0.2 RC1
2022-11-25 09:50:21 +01:00
blizzz e07b8e01af Merge pull request #35412 from nextcloud/fix/fix-33741-h1_should_instead_be_in_the_app_content-stable25
[stable25] Place ```<h1>``` into main content
2022-11-25 09:47:51 +01:00
Vincent Petry e58cf22ed6 Merge pull request #35415 from nextcloud/fix/35346/stable25
[stable25] Fix theming tests
2022-11-25 08:58:23 +01:00
Simon L 8480f5ac7a Merge pull request #35414 from nextcloud/backport/35399/stable25
[stable25] Fix share admin page
2022-11-25 08:49:44 +01:00
Nextcloud bot 3f255ab9ae [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-25 02:19:39 +00:00
Christopher Ng 143e603d4e [stable25] Fix theming tests
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-11-25 00:52:49 +00:00
Simon L c2b482693d Merge pull request #35390 from nextcloud/backport/35370/stable25
[stable25] Fix UX of renaming token
2022-11-25 00:03:08 +01:00
Carl Schwan 0cab937222 Fix share admin page
arrow function don't work that well with jquery

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-24 22:11:48 +01:00
Simon L 38a1c2938b Merge pull request #35411 from nextcloud/backport/35027/stable25
[stable25] fix missing share icon
2022-11-24 22:06:31 +01:00
Simon L afba77caee Merge pull request #35404 from nextcloud/backport/34642/stable25
[stable25] Revert minimum length for tags
2022-11-24 18:56:58 +01:00
julia.kirschenheuter c739fae390 Place ``<h1>`` into main content
Signed-off-by: julia.kirschenheuter <julia.kirschenheuter@nextcloud.com>
2022-11-24 18:55:02 +01:00
Simon L 4a3b259baf Merge pull request #35408 from nextcloud/backport/35398/stable25
[stable25] Do not check quota for non Node
2022-11-24 18:23:34 +01:00
Simon L 90a288c6ea address review
Signed-off-by: Simon L <szaimen@e.mail.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-24 17:08:52 +00:00
Simon L 53629b93bc fix missing share icon
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-24 17:08:52 +00:00
Vincent Petry 4bdfbe1a1f Merge pull request #35394 from nextcloud/stable25-audit-fix
[stable25] Update some deps
2022-11-24 16:19:17 +01:00
Louis Chemineau 796c57121d Do not check quota for non Node
Signed-off-by: Louis Chemineau <louis@chmn.me>
2022-11-24 15:17:07 +00:00
Daniel Kesselberg 6cd11638d5 Compile core-systemtags.js and systemtags-systemtags.js
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2022-11-24 11:24:28 +00:00
Daniel Kesselberg 3c66e7caac Revert "Add minimumInputLength for tags select"
This reverts commit e1d9b0bae2.

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2022-11-24 11:24:28 +00:00
Vincent Petry 00712bd8f1 Compile
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-11-24 10:49:40 +01:00
Simon L 0d7ba732b7 Merge pull request #35377 from nextcloud/backport/35368/stable25
[stable25] Add repair job that will ensure that secret and passwordsalt are set
2022-11-24 10:46:07 +01:00
blizzz 4c99ba4ad3 Merge pull request #35335 from nextcloud/stable25-revert-34032-fix-quota-32bit
Revert "[stable25] Fix quota type to int"
2022-11-24 10:25:57 +01:00
Vincent Petry f9b0f6d601 Update some deps
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-11-24 10:16:53 +01:00
Simon L c1857ef203 Merge pull request #35375 from nextcloud/backport/35350/stable25
[stable25] Fix user settings layout
2022-11-24 09:57:15 +01:00
Carl Schwan ba9eb1308d Fix UX of renaming token
Now this get's instant applied and escaping will reset to the previous
state

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-11-24 08:46:11 +00:00
Arthur Schiwon 471369ca2b remove superfluous use statement
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-11-24 09:34:31 +01:00
root 81a4810203 update vue to v7.1.0-beta.2
Signed-off-by: Simon L <szaimen@e.mail.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-24 08:28:16 +00:00
blizzz 8d2459656d Merge pull request #35382 from nextcloud/backport/35272/stable25
[stable25] Add label to sharing search field
2022-11-24 09:08:52 +01:00
blizzz d3fae80d0c Merge pull request #35085 from nextcloud/backport/35054/stable25
[stable25] Fix HTML entities not decoded in comment just added
2022-11-24 09:02:27 +01:00
Julius Härtl 6769550a11 Merge pull request #35166 from nextcloud/backport/35091/stable25
[stable25] Allow single character search by default
2022-11-24 08:24:50 +01:00
Nextcloud bot d7c88ece4e [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-24 02:17:45 +00:00
nextcloud-command aca699c263 Compile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-24 01:22:46 +00:00
Daniel Calviño Sánchez 8a25e2dbcb Fix HTML entities not decoded in comment just added
The XML data received from the comments endpoint has an inconsistent
encoding; some entities are encoded once and others are encoded twice.
When the comment list is loaded the comments are fetched using
GetComments, which handles all that, and therefore shows the messages
and author names as expected.

However, when a new comment is posted the list is not got again; instead
the new comment is loaded from the comment data returned after posting
it. This is done in NewComment, which did not decode the messages nor
the author names, and therefore showed, for example, "&amp;" instead of
"&".

To solve that now the same decoding logic used in GetComments is applied
too in NewComment.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-11-24 01:19:05 +00:00
Daniel Calviño Sánchez 4b6b40b5b1 Extract "decodeHtmlEntities" function to its own file
This will make possible to use it from files other than
"GetComments.js".

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-11-24 01:19:05 +00:00
Christopher Ng 54296f5567 Allow single character search by default
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-24 01:17:26 +00:00
Christopher Ng d596900410 Add label to sharing search field
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-11-24 01:01:21 +00:00
Simon L fea3eed909 fix remaining user settings issues
Signed-off-by: Simon L <szaimen@e.mail.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-23 23:51:17 +00:00
John Molakvoæ 24c908ff11 scroll if too much groups
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-23 20:44:04 +00:00
Carl Schwan c050ca9db4 Add repair job that will ensure that secret and passwordsalt are set
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-11-23 20:11:01 +00:00
John Molakvoæ 717fdad70d Fix user settings layout
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-11-23 20:01:59 +00:00
blizzz 222b8942af Merge pull request #35366 from nextcloud/backport/35353/stable25
[stable25] Update cache when file size === 0
2022-11-23 20:47:34 +01:00
Vincent Petry 7bcd4193b8 Float the quota
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-11-23 20:43:08 +01:00
Vincent Petry d524329ec3 Revert "Fix quota type to int"
This reverts commit d61efdff6c.

Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-11-23 20:43:08 +01:00
blizzz 1a1a810cf2 Merge pull request #34955 from nextcloud/backport/34934/stable25
[stable25] Read encrypted session data again on reopen
2022-11-23 20:42:30 +01:00
blizzz 695ceba17c Merge pull request #35322 from nextcloud/backport/stable25/35187
[stable25] Fix mentions rendering in comment editor
2022-11-23 17:59:29 +01:00
Louis Chemineau cb99a5795d Update cache when file size === 0
The conditions were false when $result === 0.
$results here contains the number of written bits.
The correct way of checking for operation success is to check if $result === false

Signed-off-by: Louis Chemineau <louis@chmn.me>
2022-11-23 14:57:32 +00:00
Joas Schilling 6d566367a9 Merge pull request #35354 from nextcloud/backport/35206/stable25
[stable25] Fix forwarding the object id when searching comments
2022-11-23 14:26:57 +01:00
Louis Chemineau 19042c4d91 Fix mentions rendering in comment editor
NcRichContentEditable needs an index of users to properly display them. This commit adds a caching logic and provides it to NcRichContentEditable.

Signed-off-by: Louis Chemineau <louis@chmn.me>
2022-11-23 13:47:24 +01:00
Vincent Petry 6e4d50b914 Merge pull request #35340 from nextcloud/backport/35299/stable25
[stable25] Prevents the selection of encrypted folders when clicking on the "Select all" checkbox
2022-11-23 12:51:45 +01:00
Joas Schilling 3b3048e403 Fix forwarding the object id when searching comments
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-11-23 10:12:45 +00:00
blizzz 5efabd1fa9 Merge pull request #35346 from nextcloud/backport/35315/stable25
[stable25] Fix border color contrast
2022-11-23 10:46:34 +01:00
blizzz a574e1f3c7 Merge pull request #35327 from nextcloud/backport/34528/stable25
[stable25] Handle badly named version files more gracefully and log information
2022-11-23 10:43:56 +01:00
blizzz 4a4ee4fccd Merge pull request #35326 from nextcloud/fix/34602/background-image-migration/stable25
[stable25] optimize background image migration job
2022-11-23 10:41:38 +01:00
blizzz 166f07649f Merge pull request #35034 from nextcloud/backport/32211/stable25
[stable25] Add repair command to fix wrong share ownership
2022-11-23 10:37:28 +01:00
John Molakvoæ 5cd1e77dbd Merge pull request #34928 from nextcloud/backport/34868/stable25
[stable25] Update @nextcloud/dialogs and fix toasts styling
2022-11-23 10:21:20 +01:00
Nextcloud bot 9a0270ace4 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-23 02:18:19 +00:00
Christopher Ng 5a8fca96cb Fix border color contrast
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-11-22 23:27:20 +00:00
John Molakvoæ 05af366fa5 Merge pull request #35338 from nextcloud/backposkjnldsv/35325/stable25
[stable25] Fix navigation order
2022-11-22 21:12:33 +01:00
Pytal a84b70a45a Merge pull request #35330 from nextcloud/backport/35309/stable25
[stable25] Help pages: set window title for sidebar sections
2022-11-22 10:19:08 -08:00
kavita.sonawane@t-systems.com f9a2410ccb CSS compiled files for deactivates the possiblility to checkmark or click on the encrypted folders
Signed-off-by: kavita.sonawane@t-systems.com <kavita.sonawane@t-systems.com>
2022-11-22 17:35:43 +00:00
kavita.sonawane@t-systems.com 895d068ab9 Prevent selection of encrypted folders
Signed-off-by: kavita.sonawane@t-systems.com <kavita.sonawane@t-systems.com>
2022-11-22 17:35:42 +00:00
kavita.sonawane@t-systems.com a448205308 Prevents the selection of encrypted folder on next page load
Signed-off-by: kavita.sonawane@t-systems.com <kavita.sonawane@t-systems.com>
2022-11-22 17:35:42 +00:00
kavita.sonawane@t-systems.com 1b2441b90e Prevents the selection of encrypted folder on scroll page
Signed-off-by: kavita.sonawane@t-systems.com <kavita.sonawane@t-systems.com>
2022-11-22 17:35:42 +00:00
kavita.sonawane@t-systems.com eb756d8ca5 Deactivates the possiblility to checkmark or click on the encrypted folder
Signed-off-by: kavita.sonawane@t-systems.com <kavita.sonawane@t-systems.com>
2022-11-22 17:35:42 +00:00
kavita.sonawane@t-systems.com a96877a5ff Add comments for prevents the selection of encrypted folders
Signed-off-by: kavita.sonawane@t-systems.com <kavita.sonawane@t-systems.com>
2022-11-22 17:35:42 +00:00
kavita.sonawane@t-systems.com cfa0dab8f1 Filelist:-Deselecting all files checkboxes within cells of encrypted folder
Signed-off-by: kavita.sonawane@t-systems.com <kavita.sonawane@t-systems.com>
2022-11-22 17:35:41 +00:00
John Molakvoæ 2c33a04f07 Fix navigation order
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-11-22 17:22:55 +01:00
julia.kirschenheuter fdf74b0f53 Help pages: set window title for sidebar sections
Signed-off-by: julia.kirschenheuter <julia.kirschenheuter@nextcloud.com>
2022-11-22 13:32:34 +00:00
Côme Chilliet 8aa6c10382 Merge pull request #35174 from nextcloud/fix/bump-swiftmailer/swiftmailer-to-6.3.0-in-stable25
Bump swiftmailer/swiftmailer to 6.3.0 in stable25
2022-11-22 14:09:36 +01:00
Côme Chilliet 5f26c549bd Handle badly named version files more gracefully and log information
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-22 13:52:11 +01:00
Arthur Schiwon 6916a311e7 rename placeholder
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-11-22 13:51:28 +01:00
Arthur Schiwon 2f8ff76061 fix const visibility
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-11-22 13:51:24 +01:00
blizzz 5eb5d39d9f use const
Co-authored-by: Pytal <24800714+Pytal@users.noreply.github.com>
Signed-off-by: blizzz <blizzz@arthur-schiwon.de>
2022-11-22 13:51:21 +01:00
blizzz 8992ba85c7 use const
Co-authored-by: Pytal <24800714+Pytal@users.noreply.github.com>
Signed-off-by: blizzz <blizzz@arthur-schiwon.de>
2022-11-22 13:51:18 +01:00
blizzz 300148b21d use .json extentions
Co-authored-by: Pytal <24800714+Pytal@users.noreply.github.com>
Signed-off-by: blizzz <blizzz@arthur-schiwon.de>
2022-11-22 13:51:13 +01:00
Arthur Schiwon 854bfcc38d do not store state in appconfig
- and use count over isset for better understanding

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-11-22 13:51:09 +01:00
Arthur Schiwon 266426f5e4 remove dashboard check, as fallback did not consider it either
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-11-22 13:51:00 +01:00
Arthur Schiwon 20859a3f3f optimize background image migration job
- separate in two stages: to prepare, and to actually migrate
- in step one, prepare a list of users to be migrated, and store it
  compressed as app config
  - gzcompress can be used, because we already require zlib
- upon the next calls (step two), slice off the first 5000 users
  and migrate them. Re-add job if necessary to repeat.
- downside is that an app config value will in the beginning use the
  RAM with any request, until it thins out. Examples: 2m UUIDs (75 MiB)
  result in ~40 MiB compressed data, while 0.2Mib for 10 000 UUIDs,
  0.4MiB for 20 000 and 4.1 MiB for 200 000. Acceptable.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-11-22 13:50:54 +01:00
Simon L b27f584dd3 Update @nextcloud/dialogs@ and fix toasts styling
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Signed-off-by: Simon L <szaimen@e.mail.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-22 12:01:24 +00:00
Simon L 30b2b86115 Merge pull request #35312 from nextcloud/stable25-user-mgmt-quota-no-cache
[stable25] Don't use quota cache through user management
2022-11-22 10:46:04 +01:00
Côme Chilliet daba112247 Merge pull request #35161 from nextcloud/backport/35157/stable25
[stable25] Make sure to not pass null to DateTime::createFromFormat
2022-11-22 10:09:35 +01:00
Côme Chilliet 345a216502 Align 3rdparty with stable25
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-22 09:53:53 +01:00
Nextcloud bot a5961d1977 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-22 02:19:29 +00:00
Vincent Petry 5ed9925883 Don't use quota cache through user management
When querying the free space through user management APIs, don't use the
cached quota value. The latter is only there to accelerate PROPFINDs.

Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-11-21 23:46:02 +01:00
blizzz e93300deb4 Merge pull request #35118 from nextcloud/backport/34485/stable25
[stable25] Fix hasBigIntConversionPendingColumns missing files_trash
2022-11-21 18:03:56 +01:00
blizzz 5a9eb9f519 Merge pull request #34944 from nextcloud/backport/32565/stable25
[stable25] Fix deprecations logged as errors
2022-11-21 17:58:18 +01:00
Joas Schilling 249cd4c7d7 Merge pull request #35298 from nextcloud/backport/35251/stable25
[stable25] Increase the fair-use push limit to 1.000 users
2022-11-21 15:41:22 +01:00
Joas Schilling 8d30564b82 Merge pull request #35183 from nextcloud/nickvergessen-patch-1
[stable25] Update CODEOWNERS
2022-11-21 15:40:46 +01:00
Arthur Schiwon a7fd34015c 25.0.2 RC1
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-11-21 15:36:00 +01:00
Côme Chilliet ba4e859ff0 Merge pull request #35232 from nextcloud/backport/35009/stable25
[stable25] Check quota on file copy
2022-11-21 14:15:38 +01:00
Joas Schilling 30e72fe180 Increase the fair-use push limit to 1.000 users
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-11-21 10:07:25 +00:00
Vincent Petry b4bccf1ea3 Merge pull request #35291 from nextcloud/backport/35185/stable25
[stable25] Hide warning about missing apps for when shipped in the next version
2022-11-21 09:32:38 +01:00
Joas Schilling 9b652c787f Hide warning about missing apps for when shipped in the next version
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-11-21 07:06:36 +00:00
Nextcloud bot f4ae66dce1 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-21 02:15:38 +00:00
Nextcloud bot 460277eef2 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-20 02:15:58 +00:00
Nextcloud bot f7183b7f79 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-19 02:17:46 +00:00
Simon L 7339e49105 Merge pull request #35261 from nextcloud/backport/35182/stable25
[stable25] generate user themed icons
2022-11-19 00:46:05 +01:00
Simon L d84d75dc3a Merge pull request #35265 from nextcloud/backport/35259/stable25
[stable25] Also cancel XHR when cancelling uploads
2022-11-18 20:56:19 +01:00
Pytal f03b33d3b1 Merge pull request #35256 from nextcloud/fix/theming-admin
[stable25] Fix default theming variables
2022-11-18 10:37:29 -08:00
Vincent Petry 259af058b0 Also cancel XHR when cancelling uploads
Fixes issue when cancelling a long list of uploads.

Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-11-18 17:14:47 +00:00
Simon L 1d753c83bf Merge pull request #35255 from nextcloud/backport/35218/stable25
[stable25] delay updating setup providers untill we register the mounts
2022-11-18 17:41:50 +01:00
John Molakvoæ 49a4aa4089 Fix default theming variables
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-11-18 17:06:26 +01:00
Simon L c36511dc23 generate user themed icons
Signed-off-by: Simon L <szaimen@e.mail.de>
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Co-Authored-By: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
2022-11-18 15:15:12 +00:00
Robin Appelman 326eba8c2c delay updating setup providers untill we register the mounts
otherwise the fallback to a full setup for a missing cached mount provider will lead to a race condition

Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-11-18 14:32:02 +00:00
Christoph Wurst 0467731dae Merge pull request #35237 from nextcloud/backport/35186/stable25
[stable25] Fix missing native submit type from OAuth client add button
2022-11-18 11:24:20 +01:00
Nextcloud bot 663feb76b9 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-18 02:13:38 +00:00
Simon L ca8bbbd6f0 Merge pull request #35235 from nextcloud/backport/35227/stable25
[stable25] Limit toggle grid view button scope
2022-11-17 23:06:45 +01:00
Pytal 7e7991bd66 Merge pull request #35233 from nextcloud/backport/35090/stable25
[stable25] Close global search menu when keyboard focus leaves
2022-11-17 11:45:02 -08:00
Christoph Wurst 4916139dcc Fix missing native submit type from OAuth client add button
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-17 17:33:52 +00:00
Vincent Petry 8d0c5cc66a Limit toggle grid view button scope
Limit the button action scope to the file picker dialog so that it
doesn't touch the file list present in the page.

Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-17 17:24:55 +00:00
Christopher Ng e68be69dc9 Close global search menu when focus leaves
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-17 17:18:32 +00:00
Côme Chilliet 5369d752d7 Apply the same fix as on beforeCopy on beforeMove
Let’s be safe

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-17 15:01:27 +00:00
Robin Appelman 4e6b51224a fix dirname usage
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-11-17 15:01:26 +00:00
Côme Chilliet 512f458ac0 Fix psalm issues
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-17 15:01:26 +00:00
Côme Chilliet b36de92fde Check quota on file copy
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-17 15:01:26 +00:00
Joas Schilling e58eb4650d Merge pull request #35199 from nextcloud/backport/35096/stable25
[stable25] Mark more config values as sensitive
2022-11-17 12:05:55 +01:00
Pytal 468951a814 Merge pull request #35220 from nextcloud/backport/35207/stable25
[stable25] Fix sharing expiration date handling and saving
2022-11-16 18:32:37 -08:00
Nextcloud bot b003cae1b8 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-17 02:14:37 +00:00
John Molakvoæ a994472e47 Fix date handling and saving
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-16 22:41:08 +00:00
Simon L 3cc71b834c Merge pull request #35216 from nextcloud/backport/34615/stable25
[stable25] fix logo not correctly inverted
2022-11-16 23:35:40 +01:00
Simon L 42140fe8e1 Merge pull request #35214 from nextcloud/backport/35210/stable25
[stable25] Fix settings for setting default expiration date
2022-11-16 17:51:59 +01:00
John Molakvoæ 23b188f61c Fix logo invert
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-16 15:47:14 +00:00
Vincent Petry 660b309243 Fix settings for setting default expiration date
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-11-16 14:47:45 +00:00
Joas Schilling 3b48c251fa Mark more config values as sensitive
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-11-16 10:06:36 +01:00
Pytal 3881c021e2 Merge pull request #35191 from nextcloud/backport/35029/stable25
[stable25] Fix AppMenu icons for firefox
2022-11-15 19:02:23 -08:00
Pytal de2290b8f6 Merge pull request #35190 from nextcloud/backport/35033/stable25 2022-11-15 19:01:01 -08:00
Nextcloud bot e390a6eb20 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-16 02:14:49 +00:00
nextcloud-command a7e3e9ae65 Compile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-16 02:01:05 +00:00
Simon L 17a2e832a1 Fix AppMenu icons for firefox
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-16 01:47:38 +00:00
nextcloud-command 1eafe4b32f Compile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-16 01:37:27 +00:00
Simon L 88cc6297d3 fix dashboard scrolling
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-16 01:37:25 +00:00
John Molakvoæ ff84ff4c42 Merge pull request #35188 from nextcloud/backport/35179/stable25
[stable25] Bump @nextcloud/vue to 7.1.0-beta0
2022-11-15 22:21:41 +01:00
John Molakvoæ 1b71b84110 Fix CalDavSettings spec
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
(cherry picked from commit d78fa59f37)
2022-11-15 19:28:02 +00:00
John Molakvoæ 59d20bf78b Bump @nextcloud/vue to 7.1.0-beta0
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
(cherry picked from commit 7cc6f63e57)
2022-11-15 19:27:53 +00:00
Julius Härtl 6971771ce1 Merge pull request #35180 from nextcloud/backport/33631/stable25 2022-11-15 19:20:12 +01:00
Joas Schilling f63b3c8d0f [stable25] Update CODEOWNERS
Signed-off-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
2022-11-15 17:18:25 +01:00
Simon L d29070e7bd use the updated mariadb10.6 container in drone
Signed-off-by: Simon L <szaimen@e.mail.de>
2022-11-15 15:16:34 +01:00
Simon L 0ba09ac1db Merge pull request #35172 from nextcloud/backport/35014/stable25
[stable25] Fix rendering of login headline
2022-11-15 13:44:42 +01:00
Simon L 2fe48763dd Merge pull request #35117 from nextcloud/backport/35105/stable25
[stable25] Fix distorted previews when using imaginary
2022-11-15 11:47:36 +01:00
nextcloud-command 4665fa2e1e Compile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-15 10:47:18 +00:00
Simon L 316dad1618 Merge pull request #35164 from nextcloud/backport/35024/stable25
[stable25] Deprecate PHP7.4
2022-11-15 11:42:08 +01:00
Côme Chilliet 76272f5889 Bump swiftmailer/swiftmailer to 6.3.0 in stable25
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-15 11:33:52 +01:00
Côme Chilliet 058bf13482 Make sure to not pass null to DateTime::createFromFormat
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-15 10:27:47 +00:00
Christopher Ng caceb9d0a8 Fix rendering of login headline
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-11-15 08:35:07 +00:00
Nextcloud bot d207d6ec82 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-15 02:15:40 +00:00
Simon L 9d0296fef8 Merge pull request #35135 from nextcloud/backport/34645/stable25
[stable25] 🐘 Support postgres15
2022-11-15 00:40:47 +01:00
Christoph Wurst b7fdadbe1a Deprecate PHP7.4
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2022-11-14 19:41:37 +00:00
Côme Chilliet 8ecba9d32d Merge pull request #35137 from nextcloud/fix/bump-aws/aws-sdk-php-to-3.240-in-stable25
Bump aws/aws-sdk-php to 3.240 in stable25
2022-11-14 17:21:30 +01:00
Vincent Petry 1a75cc19c8 Merge pull request #35048 from nextcloud/backport/34834/stable25
[stable25] Fix size calculation on copying the skeleton files
2022-11-14 16:40:40 +01:00
Côme Chilliet ba29002024 Bump 3rdparty to stable25
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-14 14:43:51 +01:00
Côme Chilliet 236a16670b Bump aws/aws-sdk-php to 3.240 in stable25
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-14 11:02:34 +01:00
Côme Chilliet f9459b0e2d Merge pull request #35082 from nextcloud/fix/bump-microsoft/azure-storage-blob-to-1.5.4-in-stable25
Bump microsoft/azure-storage-blob to 1.5.4 in stable25
2022-11-14 11:00:16 +01:00
Côme Chilliet f98bc65d6e Align 3rdparty with stable25
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-14 10:48:24 +01:00
Simon L 7ce07a5029 Merge pull request #35133 from nextcloud/backport/35093/stable25
[stable25] Run integration tests on 3rdparty bump
2022-11-14 10:43:10 +01:00
Simon L 58b5ce9952 Merge pull request #35130 from nextcloud/backport/35070/stable25
[stable25] [LDAP] always create instance of own user manager
2022-11-14 10:42:30 +01:00
Vitor Mattos 51bce70f77 Bugfix to support postgres15
Signed-off-by: Vitor Mattos <vitor@php.rio>
Signed-off-by: Simon L <szaimen@e.mail.de>
Co-Authored-By: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
2022-11-14 09:08:09 +00:00
Joas Schilling 3b427a09f0 Run integration tests on 3rdparty bump
Signed-off-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
2022-11-14 08:52:51 +00:00
Nextcloud bot 00ffe6f658 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-14 02:15:38 +00:00
Arthur Schiwon 80ba0f2a64 [LDAP] always create instance of own user manager
- it is config specific and cannot be shared
- because the Access instance is bound later, it is not obvious from the
  constructor

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-11-13 22:19:08 +00:00
Nextcloud bot 43a52fc20e [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-13 02:14:39 +00:00
Nextcloud bot f56e6c8c11 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-12 02:15:02 +00:00
Michael Kuhn 2278bee890 Fix hasBigIntConversionPendingColumns missing files_trash
The two tables seem to have gone out of sync, causing the web interface
to miss `files_trash.auto_id` not being a bigint.

Signed-off-by: Michael Kuhn <github@ikkoku.de>
2022-11-12 01:13:11 +00:00
Richard Steinmetz 8424e506c4 Fix distorted previews when using imaginary
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2022-11-11 22:02:05 +00:00
Joas Schilling 70414b15f9 Merge pull request #35086 from nextcloud/backport/35074/stable25
[stable25] Make sure that path is normalized and then checked,
2022-11-11 15:54:41 +01:00
Joas Schilling 1e489f7ec0 Merge pull request #35099 from nextcloud/backport/35077/stable25
[stable25] Fix PublicKeyTokenProviderTest import and mock
2022-11-11 15:52:11 +01:00
Christoph Wurst f2cc09fef1 Fix PublicKeyTokenProviderTest import and mock
* IDBConnection import missing
* Atomic doesn't need a mock

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2022-11-11 09:34:59 +00:00
Nextcloud bot 4f489a6694 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-11 02:14:10 +00:00
Côme Chilliet bc908b044a Make sure that path is normalized and then checked,
and not the other way around

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-10 17:55:12 +00:00
Pytal 1cce67e18d Merge pull request #35058 from nextcloud/backport/35042/stable25
[stable25] Add description for calendar uri
2022-11-10 09:30:29 -08:00
Côme Chilliet 819deced0a Bump microsoft/azure-storage-blob to 1.5.4 in stable25
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-10 16:51:11 +00:00
Côme Chilliet 5aad1247eb Merge pull request #35078 from nextcloud/backport/34802/stable25
[stable25] Add pre-commit configuration
2022-11-10 17:02:30 +01:00
Côme Chilliet 4cf7304932 add .pre-commit-config.yaml to expected files in checker
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-10 15:02:38 +00:00
Côme Chilliet 3a3e092705 Backport pre-commit config from master
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-10 15:02:38 +00:00
Pytal 1cae227951 Merge pull request #35064 from nextcloud/backport/35063/stable25
[stable25] Fix top margin in empty versions list
2022-11-09 18:53:23 -08:00
Nextcloud bot d6e6b8b7c5 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-10 02:15:33 +00:00
Pytal f19c6dab44 Merge pull request #35060 from nextcloud/backport/35052/stable25 2022-11-09 16:07:43 -08:00
Richard Steinmetz 09d315566d Fix top margin in empty versions list
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2022-11-10 00:03:57 +00:00
Daniel Calviño Sánchez 66d58d6eeb Fix sidebar not automatically hidden in Files app
Although the Files app creates the legacy sidebar (details view) it is
then replaced with the newer Vue app sidebar. Due to this ".detailsView"
no longer finds an element and therefore nothing was hidden when
"hideAppSidebar($('.detailsView'))" was called (for example, when
changing to another section).

However, "OC.Apps.hideAppSidebar()" does not properly work either with
the Vue sidebar used in the Files app (once hidden the sidebar is not
shown again). For simplicity, and to avoid any possible side effect in
other apps from changing "OC.Apps.hideAppSidebar", now
"OC.Files.Sidebar.close()" is used instead.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2022-11-09 19:10:46 +00:00
Christopher Ng 52575d9309 Add description for calendar uri
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-11-09 18:21:16 +00:00
Julius Härtl d485db32bc Use proper storage method for writing skeleton files
otherwise the filecache will have a wrong size for skeleton files

Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-11-09 13:10:39 +01:00
Simon L b5b7a41948 Merge pull request #35035 from nextcloud/backport/34613/stable25
[stable25] fix checkmark for theme settings in dark mode
2022-11-09 09:41:06 +01:00
Nextcloud bot 952a4aba5b [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-09 02:14:39 +00:00
nextcloud-command e7f993de71 Compile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-08 18:36:09 +00:00
szaimen 78bf1b987d fix checkmark for theme settings in dark mode
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-11-08 18:25:47 +00:00
Robin Appelman b70ba23029 update autoloader
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-11-08 18:20:08 +00:00
Robin Appelman 6d049e6a13 fix repairing non user shares when repairing all shares
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-11-08 18:20:08 +00:00
Robin Appelman 4c3bfd20b3 remove no longer needed code
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-11-08 18:20:08 +00:00
Robin Appelman c457ebfabe split repairing into two stages to prevent long open transaction
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-11-08 18:20:08 +00:00
Robin Appelman ab011363a9 update shares directly in db
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-11-08 18:20:07 +00:00
Vincent Petry 8b1d8c3722 More verbose output for repair share ownership cmd
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-11-08 18:20:07 +00:00
Robin Appelman c781121a16 move share owner repair to occ command
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-11-08 18:20:07 +00:00
Louis Chemineau 76270a9a2f Add repair step to fix wrong share ownership
Signed-off-by: Louis Chemineau <louis@chmn.me>
2022-11-08 18:20:07 +00:00
Simon L 83d85bd045 Merge pull request #35023 from nextcloud/backport/32838/stable25
[stable25] Cast to int
2022-11-08 14:27:33 +01:00
Markus Zeller cffa3673f1 Cast to int #32837
Signed-off-by: Markus Zeller <git@markuszeller.com>
2022-11-08 10:08:23 +00:00
Simon L 18515f6332 Merge pull request #35011 from nextcloud/backport/35007/stable25
[stable25] Fix unsuccessful token login logged as error
2022-11-08 10:50:10 +01:00
Simon L 6880f3ba6d Merge pull request #34978 from nextcloud/backport/34909/stable25
[stable25] Fix duplicate event email notifications
2022-11-08 10:49:19 +01:00
Simon L 6ceb64b384 Merge pull request #35010 from nextcloud/backport/35000/stable25
[stable25] Fix cron warning with time insensitive jobs
2022-11-08 10:48:31 +01:00
Nextcloud bot 4f26225df6 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-08 02:14:25 +00:00
nextcloud-command 48d06714dc Compile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-11-07 16:53:02 +00:00
Simon L 1b9866fa45 Merge pull request #34998 from nextcloud/backport/34937/stable25
[stable25] Avoid a crash when a PHP extension has no version
2022-11-07 17:47:22 +01:00
Christoph Wurst 88cf98b13d Fix unsuccessful token login logged as error
The condition of a non-existent login token can happen for concurrent
requests. Admins can not do anything about this. So this is to be
expected to happen occasionally. This event is only bad if none of the
requests is able to re-acquire a session. Luckily this happens rarely.

If a login loop persists an admin can still lower the log level to find
this info. But a default error log level will no longer write those
infos about the failed cookie login of one request.

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2022-11-07 16:32:46 +00:00
Joas Schilling c6ccd39b05 Increase the "bad waiting time" for cron mode to 24h to account for "time insensitive" jobs
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-11-07 16:31:45 +00:00
Joas Schilling a93f8b6945 Show the correct warning for system cron vs. webcron/ajax
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-11-07 16:31:45 +00:00
Côme Chilliet 9403110854 Suppress false-positives from psalm, waiting for fix upstream
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-07 10:13:28 +00:00
Côme Chilliet 2b2ec5e7f7 Avoid a crash when a PHP extension has no version
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-07 10:13:28 +00:00
Nextcloud bot c587979785 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-07 02:14:18 +00:00
Nextcloud bot f55ac66ad1 [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-06 02:12:48 +00:00
Nextcloud bot 8b995d7eed [tx-robot] updated from transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2022-11-05 02:15:14 +00:00
Richard Steinmetz 28b2ba9a69 Fix duplicate event email notifications
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2022-11-04 17:11:32 +00:00
Vincent Petry 0cb14bdcb4 Merge pull request #34862 from nextcloud/backport/34785/stable25
[stable25] Fix disabled federated scope
2022-11-04 17:20:14 +01:00
Vincent Petry 3289739110 Merge pull request #34925 from nextcloud/backport/34871/stable25
[stable25] Fix visibility of internal expire date
2022-11-04 17:15:35 +01:00
Vincent Petry 4127f33f4e Merge pull request #34946 from nextcloud/backport/34804/stable25
[stable25] Skip general login with email for non-valid addresses and LDAP
2022-11-04 17:13:06 +01:00
Vincent Petry de6012d100 Merge pull request #34953 from nextcloud/backport/34379/stable25
[stable25] Run session token renewals in a database transaction
2022-11-04 17:10:42 +01:00
Joas Schilling 05acb130ce Merge pull request #34964 from nextcloud/backport/34963/stable25
[stable25] Fix invalid date in security.txt
2022-11-04 12:05:10 +01:00
Joas Schilling 18e8433b32 Fix invalid date in security.txt
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-11-04 10:11:05 +00:00
Julius Härtl c6b2d08e67 Do not remove complete encrypted session key when just a key should be removed
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-11-03 16:34:25 +00:00
Julius Härtl fc74415e68 Read encrypted session data again on reopen
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-11-03 16:34:25 +00:00
Christoph Wurst b8ad0752fa Run session token renewals in a database transaction
The session token renewal does
1) Read the old token
2) Write a new token
3) Delete the old token

If two processes succeed to read the old token there can be two new tokens because
the queries were not run in a transaction. This is particularly problematic on
clustered DBs where 1) would go to a read node and 2) and 3) go to a write node.

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2022-11-03 15:25:34 +00:00
Julius Härtl 9151960af0 Skip general login with email for non-valid addresses and LDAP
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-11-03 15:38:39 +01:00
Christoph Wurst 808e604eb3 Log all deprecations with debug level
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2022-11-03 14:06:57 +00:00
Côme Chilliet ac0630788d Merge pull request #34577 from nextcloud/backport/34523/stable25
[stable25] Avoid double ldap_unbind in Wizard.php
2022-11-03 14:08:08 +01:00
Simon L 975ebc1248 Merge pull request #34922 from nextcloud/backport/34908/stable25
[stable25] disable upgrades to 26 for 32-bit
2022-11-03 12:57:12 +01:00
Simon L 09a089ad57 Merge pull request #34921 from nextcloud/backport/34906/stable25
[stable25] update 64-bit check wording
2022-11-03 12:56:52 +01:00
Simon L d6eaaf3fe0 Merge pull request #34905 from nextcloud/enh/34674/stable25
[stable25] fix NC25 for 32-bit
2022-11-03 12:56:37 +01:00
Côme Chilliet 07155246d3 Avoid double ldap_unbind in Wizard.php
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-03 11:10:16 +00:00
Côme Chilliet 29be674b5d Fix code style with codesniffer
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-11-03 11:10:16 +00:00
blizzz 8896b40164 Merge pull request #34913 from nextcloud/release/25.0.1
25.0.1
2022-11-03 10:57:09 +01:00
Vincent Petry 413ac2dc50 Fix visibility of internal expire date
Fixed visibility of the expiration date field for internal shares by
aligning the logic with the one from the public link shares.

Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-11-02 12:12:45 +00:00
szaimen 2084fbad3a disable upgrades to 26 for 32-bit
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-11-02 10:47:43 +00:00
szaimen c26832233f update 64-bit check wording
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-11-02 09:48:15 +00:00
Arthur Schiwon 7c6d99e8ea 25.0.1
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-11-01 20:10:14 +01:00
szaimen c124456881 fix NC25 for 32-bit
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-11-01 13:44:17 +01:00
Christopher Ng adc106a197 Fix disabled federated scope
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-28 19:50:40 +00:00
John Molakvoæ 7170b141ba Merge pull request #34860 from nextcloud/backport/34683/stable25
[stable25] Display invalid input message
2022-10-28 10:08:51 +02:00
Christopher Ng 39b47e1a78 Display invalid input message
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-27 22:49:11 +00:00
John Molakvoæ 7508e5d5be Merge pull request #34854 from nextcloud/backport/34799/stable25
[stable25] Emit typed event when preview is requested
2022-10-27 18:00:46 +02:00
Julius Härtl 677451427e Emit typed event when preview is requested
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-27 13:51:28 +00:00
John Molakvoæ aab74bea40 Merge pull request #34837 from nextcloud/release/25.0.1_rc1
25.0.1 RC1
2022-10-27 15:37:52 +02:00
John Molakvoæ 4e635933c0 Merge pull request #34848 from nextcloud/backport/34736/stable25
[stable25] Fix autotest creating PostgreSQL database before install
2022-10-27 15:24:43 +02:00
John Molakvoæ f30b8df317 Merge pull request #34657 from nextcloud/backport/34625/stable25
[stable25] Fix icon of encrypted folders in filepicker
2022-10-27 14:26:18 +02:00
John Molakvoæ b45848d91e Merge pull request #34658 from nextcloud/backport/34632/stable25
[stable25] Add rate limiting on lost password emails
2022-10-27 14:26:06 +02:00
Vitor Mattos 31694ca314 Create database to autotest
Followed:
https://github.com/docker-library/docs/blob/master/postgres/README.md#postgres_db

Signed-off-by: Vitor Mattos <vitor@php.rio>
2022-10-27 11:55:49 +00:00
John Molakvoæ c4e4aff418 Merge pull request #34725 from nextcloud/backport/34579/stable25
[stable25] fix null error in getUnencryptedSize
2022-10-27 12:07:35 +02:00
John Molakvoæ 7ca983750b Merge pull request #34721 from nextcloud/backport/34508/stable25
[stable25] WebDAV - use file/folder name for dav:displayname
2022-10-27 12:06:39 +02:00
Simon L 76f60d04d8 Merge pull request #34827 from nextcloud/backport/34825/stable25
[stable25] Fix empty content regressions in comments app
2022-10-27 11:58:12 +02:00
Simon L 592739dd97 Merge pull request #34597 from nextcloud/backport/34595/stable25
[stable25] Fix file creation issue if no action are registered
2022-10-27 11:57:14 +02:00
Simon L a3263fb329 Merge pull request #34649 from nextcloud/backport/34636/stable25
[stable25] Fix vertical alignment of user status icon
2022-10-27 11:55:49 +02:00
Carl Schwan 2887ee0518 Fix icon of encrypted folders in filepicker
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-27 09:36:30 +00:00
Côme Chilliet 5fa94ae9af Fix LostController test
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-10-27 09:21:41 +00:00
Côme Chilliet 36d3ef1c7c Add rate limiting on lost password emails
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-10-27 09:21:40 +00:00
Vincent Petry 883bda7be4 Merge pull request #34726 from nextcloud/backport/34136/stable25
[stable25] on installation save channel to config.php if not stable
2022-10-27 11:01:02 +02:00
Vincent Petry c1c502ba4a Merge pull request #34704 from nextcloud/backport/34502/stable25
[stable25] Propagate attributes when resharing
2022-10-27 10:44:07 +02:00
nextcloud-command 794bbd36f3 Compile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-27 10:39:32 +02:00
Joas Schilling a2b5ed52da Recompile
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-27 10:34:41 +02:00
Carl Schwan 4bb481cbb3 Make css rule important
Co-authored-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-27 10:31:55 +02:00
Carl Schwan 826f0aeae0 Fix vertical alignment of user status icon
Now it is properly centered even if the font size is bigger (when using
the dislexia font)

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-10-27 10:31:55 +02:00
John Molakvoæ a2d29eddf4 Fix file creation issue if no action are registered
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-27 10:30:59 +02:00
Vincent Petry 4a448f31b2 Merge pull request #34581 from nextcloud/backport/34438/stable25
[stable25] return proper error code when reporting exception fails in remote.php
2022-10-27 10:26:08 +02:00
John Molakvoæ 44233f7c23 25.0.1 RC1
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-27 10:16:33 +02:00
Richard Steinmetz 98977247da Fix empty content regressions in comments app
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-26 21:50:48 +00:00
Louis 62e5313cda Merge pull request #34821 from nextcloud/backport/34809/stable25
[stable25] Fix getMetadata return type
2022-10-26 16:50:18 +02:00
Julius Härtl fa570bd0e4 Merge pull request #34823 from nextcloud/backport/34788/stable25
[stable25] Check share attributes on preview endpoints
2022-10-26 16:48:49 +02:00
Julius Härtl 2117736e34 Check share attributes on preview endpoints
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-26 13:20:46 +00:00
Louis Chemineau 9cf71f2b5a Fix getMetadata return type
Signed-off-by: Louis Chemineau <louis@chmn.me>
2022-10-26 12:38:16 +00:00
Julien Veyssier eb785ec9b6 Merge pull request #34601 from nextcloud/backport/34135/stable25
[stable25] Fix "email changed" activity email check
2022-10-26 12:33:43 +02:00
Simon L 9df81090f1 Merge pull request #34648 from nextcloud/backport/34634/stable25
[stable25] Fix unnecessary highlighting of selected element
2022-10-26 01:06:34 +02:00
Simon L 429c512ab7 Merge pull request #34779 from nextcloud/backport/34706/stable25
[stable25] update notifications for one-click instances
2022-10-25 18:09:01 +02:00
Côme Chilliet dba67aa021 Merge pull request #34796 from nextcloud/backport/34774/stable25
[stable25] Expose mapped user count from LDAP and use that for user limit check
2022-10-25 17:22:20 +02:00
Julien Veyssier df583faba3 check disable_activity.email_address_changed_by_admin when email is changed by admin via the OCS API
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-10-25 16:13:03 +02:00
Côme Chilliet d49c7a3bdc Merge pull request #34791 from nextcloud/backport/32859/stable25
[stable25] Fix Uninitialized string offset 0 at GenerateMimetypeFileBuilder.php#39
2022-10-25 14:10:09 +02:00
Côme Chilliet afeaf93bdb Fix autoloaders
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-10-25 10:14:04 +00:00
Côme Chilliet ef1957d42e Update lib/public/User/Backend/ICountMappedUsersBackend.php
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
2022-10-25 10:14:04 +00:00
Côme Chilliet f8f357aa1b Add missing file
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-10-25 10:14:03 +00:00
Côme Chilliet e9d1c4afdb Expose mapped user count from LDAP and use that for user limit check
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-10-25 10:14:03 +00:00
Daniel Kesselberg 487759652b Fix Uninitialized string offset 0 at GenerateMimetypeFileBuilder.php#39
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2022-10-25 07:42:33 +00:00
Louis 05c9f0acb6 Merge pull request #34764 from nextcloud/backport/34740/stable25
[stable25] Add ico image/x-icon
2022-10-24 20:40:48 +02:00
szaimen f9d40847f1 update notifications for one-click instances
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-24 18:01:55 +00:00
Simon L dc2fe31250 Merge pull request #34728 from nextcloud/backport/33945/stable25
[stable25] LDAP to not register new users when outside of fair use or over limits
2022-10-24 10:42:47 +02:00
John Molakvoæ 415fe8d8fe Sort alphabetically
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-24 08:35:12 +00:00
John Molakvoæ 0dc2ed24f1 Add ico image/x-icon
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-24 08:35:12 +00:00
blizzz 611a6c6751 extended hint message
Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: blizzz <blizzz@arthur-schiwon.de>
2022-10-21 16:58:13 +00:00
Arthur Schiwon 625d6d4d0c improve admin notification experience
- do not stack notifications, replace them
- and replace them once a day only
- with LDAP it might end in total spam terror (also push) otherwise

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-10-21 16:58:12 +00:00
Arthur Schiwon 6a3f2ff022 [LDAP] throw exception only against prov api
- unbreaks functionality for end users when on demand mapping takes
  place

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-10-21 16:58:12 +00:00
Arthur Schiwon 0fd9d8b132 LDAP to no register new users when outside of fair use or over limits
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-10-21 16:58:12 +00:00
Simon L be1ef4296f Merge pull request #34712 from nextcloud/backport/34688/stable25
[stable25] Don't crash with outdated share provider on update with the web updater
2022-10-21 18:54:13 +02:00
Arthur Schiwon 102093b1a2 silence psalm
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-10-21 15:19:03 +00:00
Arthur Schiwon a0930d01b1 on installation save channel to config.php if not stable
- the default channel to the NC server is what is provided in /version.php
  unless it is overridden in config.php
- the default channel to the NC Updater however is 'stable'
- this resultant in inconsistent results and confusing admin experience
- therefore "stable" is considered default and other channels are being
  written to config.php now upon installation

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-10-21 15:19:03 +00:00
Robin Appelman 5733fccdd1 fix null error in getUnencryptedSize
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-10-21 14:59:40 +00:00
Simon L d2333d1081 Merge pull request #34718 from nextcloud/backport/34714/stable25
[stable25] Fix more icon color
2022-10-21 16:27:14 +02:00
Dariusz Olszewski 71511ddd37 WebDAV - use file/folder name for dav:displayname
Signed-off-by: Dariusz Olszewski <starypatyk@users.noreply.github.com>
2022-10-21 13:49:07 +00:00
Vincent Petry 1d9d6c63bc Merge pull request #34610 from nextcloud/backport/34471/stable25
[stable25] Reduce number of database queries during WebDAV propfind request
2022-10-21 15:40:08 +02:00
John Molakvoæ c9b20c0b23 Merge pull request #34705 from nextcloud/backport/34685/stable25 2022-10-21 10:43:50 +02:00
Christopher Ng b772dbd416 Fix more icon color
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-21 08:35:07 +00:00
Simon L 5bb1d81c71 Merge pull request #34686 from nextcloud/backport/34665/stable25
[stable25] Invert header icons on bright preset backgrounds
2022-10-21 00:10:03 +02:00
Joas Schilling 707fc6599f Fix PHP CS
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-20 21:55:07 +00:00
Joas Schilling b851446c6a Also catch in getProvider
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-20 21:55:07 +00:00
Joas Schilling 9a5a80438a Don't crash with outdated share provider
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-20 21:55:07 +00:00
Joas Schilling 9429ba0e9a Merge pull request #34709 from nextcloud/backport/34703/stable25
[stable25] Use vue lib multiselect tags component
2022-10-20 21:54:37 +02:00
Joas Schilling 893078cebf Recompile
Signed-off-by: Joas Schilling <coding@schilljs.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-20 17:26:15 +00:00
Joas Schilling 0484885d38 Use @nextcloud/vue MultiselectTags component
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-20 17:18:59 +00:00
Pytal 271ceb0e6c Merge pull request #34647 from nextcloud/backport/34620/stable25
[stable25] Add a repair step to cleanup old theming cache
2022-10-20 10:04:35 -07:00
zorn-v c6dea6e609 Fix alternative logins custom css class
In NC 25 login page was changed, and alternative login css class get from `class` prop but not `style`. 
It is correct change in my opinion, so just add backend fix.

Signed-off-by: zorn-v <zorn7@yandex.ru>
2022-10-20 15:19:42 +00:00
Simon L 0da59de01d Merge pull request #34699 from nextcloud/backport/34622/stable25
[stable25] Bump jquery-ui-dist from 1.13.1 to 1.13.2
2022-10-20 17:15:52 +02:00
Carl Schwan a318699f6d More fixes
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-10-20 15:08:33 +00:00
Carl Schwan 26dac925b3 Small progress with fixing unit tests
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-10-20 15:08:33 +00:00
Carl Schwan 49ddbb3655 Propagate attributes when resharing
When updating a share, load the node from the initiator instead of the
owner similar to how this is done when creating the share.

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-10-20 15:08:33 +00:00
Joas Schilling 69c6229b0b Recompile
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-20 15:27:43 +02:00
Joas Schilling 263108c889 Bump jquery-ui-dist from 1.13.1 to 1.13.2
Bumps [jquery-ui-dist](https://github.com/jquery/jquery-ui) from 1.13.1 to 1.13.2.
- [Release notes](https://github.com/jquery/jquery-ui/releases)
- [Commits](jquery/jquery-ui@1.13.1...1.13.2)

---
updated-dependencies:
- dependency-name: jquery-ui-dist
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-20 15:25:51 +02:00
Louis a94cc32f1e Merge pull request #34535 from nextcloud/backport/33511/stable25
[stable25] Extract GPS data from EXIF
2022-10-20 15:25:20 +02:00
Carl Schwan 7b001abd08 Allow scanning for metadata with occ scan:file --generate-metadata
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Louis Chemineau <louis@chmn.me>
2022-10-20 11:56:02 +00:00
Louis Chemineau f5d5f019fa Extract GPS data from EXIF
Signed-off-by: Louis Chemineau <louis@chmn.me>
2022-10-20 11:56:02 +00:00
Christopher Ng 4fc531bd03 Invert header icons on bright preset backgrounds
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-20 06:47:29 +00:00
Simon L 5437573914 Merge pull request #34681 from nextcloud/backport/34576/stable25
[stable25] Add admin user customization kill switch
2022-10-20 08:03:33 +02:00
Christopher Ng cdf6e03215 Add a repair step to cleanup old theming cache
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-10-20 00:18:33 +00:00
John Molakvoæ 7a96c80afb Simplify variable names
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-19 23:47:58 +00:00
John Molakvoæ 3c6da41c8a Fix tests
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-19 23:36:44 +00:00
John Molakvoæ 40e2b11a68 Add admin user customization kill switch
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-19 23:36:44 +00:00
John Molakvoæ 69eafb3bc0 Adjust testing
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-19 23:36:44 +00:00
Pytal 372db926e9 Merge pull request #34590 from nextcloud/backport/34541/stable25 2022-10-19 11:35:07 -07:00
Christopher Ng adbaff71de Fix empty password string being submitted to server
- Fix reveal password not working

Signed-off-by: Christopher Ng <chrng8@gmail.com>
(cherry picked from commit dbaf8f3b89)
2022-10-19 17:20:00 +00:00
Christopher Ng 6fe73aee37 Bump @nextcloud/password-confirmation from 4.0.1 to 4.0.2
Signed-off-by: Christopher Ng <chrng8@gmail.com>
(cherry picked from commit 4d306fc647)
2022-10-19 17:18:31 +00:00
Joas Schilling c63f61d62e Merge pull request #34669 from nextcloud/bugfix/noid/npm-audit
[stable25] Run npm audit
2022-10-19 14:07:00 +02:00
Joas Schilling 73e278a8af Recompile
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-19 12:15:46 +02:00
Joas Schilling 414a8d7de7 Run npm audit on stable25
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-19 12:13:00 +02:00
Joas Schilling b568587783 Merge pull request #34594 from nextcloud/backport/34450/stable25
[stable25] Fix reference preview when no server-side cache configured
2022-10-19 12:08:47 +02:00
Joas Schilling 7a38af2d28 Merge pull request #34667 from nextcloud/backport/34664/stable25
[stable25] Update OCI workflow of server
2022-10-19 11:48:08 +02:00
blizzz f5fa046ed9 Merge pull request #34616 from nextcloud/backport/34188/stable25
[stable25] Expose clearing the profiles and fix it
2022-10-19 11:18:11 +02:00
blizzz c7a9514aa6 Merge pull request #34646 from nextcloud/backport/34609/stable25
[stable25] set theming app to alwaysEnabled
2022-10-19 11:17:32 +02:00
blizzz 05e320a034 Merge pull request #34661 from nextcloud/backport/34614/stable25
[stable25] Fix regexp for unified searching in apps
2022-10-19 11:14:26 +02:00
Joas Schilling a24edd5587 Update OCI workflow of server
* Only on pull requests
* Concurrency group
* Bump used actions
* Add summary

Signed-off-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
2022-10-19 07:52:42 +00:00
Joas Schilling 433f8011a8 Merge pull request #34663 from nextcloud/backport/34650/stable25
[stable25] Fix rebuild navigation
2022-10-19 05:37:18 +02:00
nextcloud-command bf526631fa Compile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-18 20:48:57 +00:00
Joas Schilling 6b1901f0e7 🧭 Fix rebuilding the navigation
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-18 20:36:28 +00:00
Carl Schwan fda3af7915 Expose clearing the profiles and fix it
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-10-18 18:58:04 +00:00
Julien Veyssier 53458967b3 fix reference preview endpoint when no server-side cache configured
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-10-18 17:56:35 +00:00
Vincent Petry 08adbbd7ef Fix regexp for unified searching in apps
Use the correct match for operators.

Prevent the dropdown to close itself when selecting an app to filter by.

Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-10-18 17:49:06 +00:00
Carl Schwan 8052cd9d08 Fix unnecessary highlighting of selected element
Use focus-visible to only show focus ring on keyboard navigation

Fix #34589

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-10-18 08:59:30 +00:00
szaimen f5e5d47fd9 set theming app to alwaysEnabled
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-18 08:21:56 +00:00
blizzz 20ea9a2535 Merge pull request #34627 from nextcloud/release/25.0.0
25.0.0
2022-10-18 10:06:07 +02:00
Arthur Schiwon 6827b6c232 25.0.0
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-10-17 09:55:52 +02:00
blizzz 0368c65e05 Merge pull request #34603 from nextcloud/release/25.0.0_rc5
25.0.0 RC5
2022-10-14 18:03:03 +02:00
Vincent Petry e487d822ee Merge pull request #34612 from nextcloud/stable25-fix-background-appdata-scrope
[stable25] Scope the appdata theming storage for global and users
2022-10-14 18:01:02 +02:00
Vincent Petry b99e478840 Merge pull request #34608 from nextcloud/backport/34569/stable25
[stable25] Filter out backup user status (those beginning with _ as userId)
2022-10-14 17:04:22 +02:00
Vincent Petry d094884057 Improve cache buster for user backgrounds
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-10-14 16:19:44 +02:00
John Molakvoæ 3b076350d1 Fix tests
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-14 16:19:41 +02:00
John Molakvoæ 98a95fb986 Fix migration
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-14 16:19:38 +02:00
John Molakvoæ 6690df39dc Properly use user background cachebuster
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-14 16:19:34 +02:00
John Molakvoæ f4a14cfe69 Scope the appdata theming storage for global and users
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-14 16:19:32 +02:00
Dariusz Olszewski 52a5d0cea6 Review comment - remove redundant empty() call
Signed-off-by: Dariusz Olszewski <starypatyk@users.noreply.github.com>
2022-10-14 13:38:39 +00:00
Dariusz Olszewski 6119604f71 Read notes from share already loaded into memory
Signed-off-by: Dariusz Olszewski <starypatyk@users.noreply.github.com>
2022-10-14 13:38:39 +00:00
Carl Schwan 25efb43ac4 Properly escape underscore in db query
Co-authored-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-10-14 12:59:03 +00:00
Carl Schwan 446bb96ba8 Do the filtering on the DB instead
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-10-14 12:59:03 +00:00
tobiasKaminsky 726d857690 Filter out backup user status (those beginning with _ as userId) 2022-10-14 12:59:03 +00:00
Arthur Schiwon 373ba3ecee 25.0.0 RC5
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-10-14 12:15:31 +02:00
blizzz 684bd274b8 Merge pull request #34468 from nextcloud/release/25.0.0_rc4
25.0.0 RC4
2022-10-13 20:51:47 +02:00
Pytal 7f498d0fa0 Merge pull request #34587 from nextcloud/backport/34461/stable25
[stable25] Fix missing background on upgrade
2022-10-13 11:26:44 -07:00
John Molakvoæ 7c4a5b0dd1 Merge pull request #34588 from nextcloud/stable25-theming-default-system-value
[stable25]  Use default system primary
2022-10-13 20:16:56 +02:00
John Molakvoæ 08227ca28d Adjust testing
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-13 18:04:01 +02:00
Arthur Schiwon 1309459fee graceful background image handling
- fallback to background image from old location
- migrate background images to new location as insensitive job

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-10-13 18:01:48 +02:00
Joas Schilling 37cca49630 Fix migration parameter handling
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-13 18:01:43 +02:00
Arthur Schiwon 982534349a fix querybuilder instance recuse
...and execute delete query

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-10-13 18:01:38 +02:00
Christopher Ng 61d2937bf4 Delete theming background preferences
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-10-13 18:01:34 +02:00
Joas Schilling 5c7613fd67 New code being new
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-13 18:01:28 +02:00
Joas Schilling 10cf013e19 Fix SQL errors
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-13 18:01:15 +02:00
Christopher Ng df218bc4db Fix missing background on upgrade
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-10-13 18:01:05 +02:00
John Molakvoæ f17f24ffad Fix primary and debounce to avoid infinite loop
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-10-13 18:00:01 +02:00
John Molakvoæ (skjnldsv) b3832bcd05 Allow to pick custom colour
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2022-10-13 17:59:57 +02:00
John Molakvoæ (skjnldsv) a7211e6ab0 Use default system primary
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2022-10-13 17:59:48 +02:00
Robin Appelman b695d2f107 return proper error code when reporting exception fails in remote.php
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-10-13 14:54:00 +00:00
Simon L faab6c8072 Merge pull request #34573 from nextcloud/backport/34571/stable25
[stable25] Fix avatar menu icons in darkmode
2022-10-13 14:28:54 +02:00
Julius Härtl ae6a8d5cf5 Merge pull request #34568 from nextcloud/backport/34544/stable25
[stable25] More flexible date validation
2022-10-13 11:47:33 +02:00
Joas Schilling 6c47b26102 Fix avatar menu icons in darkmode
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-13 09:24:04 +00:00
blizzz 2a42dd4f4e Merge pull request #34564 from nextcloud/backport/34559/stable25
[stable25] Require token for local editing
2022-10-13 10:07:05 +02:00
Vincent Petry 1fb7567294 Merge pull request #34566 from nextcloud/backport/34558/stable25
[stable25] fix reading updater token for web updater
2022-10-13 09:21:26 +02:00
Simon L 1360771be8 Merge pull request #34567 from nextcloud/backport/34545/stable25
[stable25] Disable translucency on high contrast themes
2022-10-13 08:02:23 +02:00
Joas Schilling 7da871437b Bump version
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-13 07:45:15 +02:00
Carl Schwan 1dd634c0e6 More flexible date validation
Fix #34542

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-10-12 23:14:24 +00:00
szaimen 5e2c5e5fb6 fix color-main-background-rgb
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-12 23:02:01 +00:00
Carl Schwan c2510a481e Disable translucency on high contrast themes
Fix #34514

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2022-10-12 23:02:01 +00:00
blizzz 39938297ee Merge pull request #34459 from nextcloud/backport/31947/stable25
[stable25] Fix Error: Undefined index: redirect_url
2022-10-12 23:02:20 +02:00
Arthur Schiwon 267f3896ae fix reading updater token for web updater
the previously called endpoint returns exactly one value, no JSON
structure

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-10-12 20:34:22 +00:00
Joas Schilling be005877ff Also throttle on expiration
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-12 17:52:13 +00:00
Joas Schilling c48b15fb70 Fix psalm error on migration
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-12 17:52:13 +00:00
Joas Schilling ec230f9290 Add a background job to delete expired tokens
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-12 17:52:13 +00:00
Joas Schilling 1db6d96e94 Also remove token when we successfully validated
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-12 17:52:13 +00:00
Joas Schilling 1d02efdd8b Require a token for "Edit locally"
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-12 17:52:13 +00:00
Vincent Petry 8e89c281a5 Merge pull request #34551 from nextcloud/backport/34537/stable25
[stable25] Avoid allocating too much memory for the buffer on s3 uploads
2022-10-12 14:49:35 +02:00
Vincent Petry ad0405a18b Merge pull request #34547 from nextcloud/backport/34299/stable25
[stable25] Add color variables for text on blurred background
2022-10-12 12:49:16 +02:00
Julius Härtl 775e4e023d Avoid allocating too much memory for the buffer
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-12 08:30:58 +00:00
Simon L be7b7f5d13 Merge pull request #34543 from nextcloud/backport/34473/stable25
[stable25] Fix excessive increase of cachebuster value
2022-10-12 07:54:14 +02:00
Christopher Ng 8caffb784f Add color variables for text on blurred background
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-10-12 01:50:17 +00:00
blizzz ce7bfc6b33 Merge pull request #34531 from nextcloud/backport/34500/stable25
[stable25] Fix password length limitation
2022-10-11 23:31:44 +02:00
blizzz c98334fdac Merge pull request #34446 from nextcloud/backport/34401/stable25
[stable25] File reference: fallback icon to file type if no preview
2022-10-11 23:30:37 +02:00
Christopher Ng f477a22404 Fix excessive increase of cachebuster value
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-10-11 19:13:55 +00:00
Joas Schilling cecd778c2b Fix password length limitation
Signed-off-by: Joas Schilling <coding@schilljs.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-11 16:55:20 +00:00
Simon L b9b201cc9a Merge pull request #34524 from nextcloud/backport/34513/stable25
[stable25] do not show editlocally on mobile
2022-10-11 16:19:33 +02:00
Joas Schilling b885e44dde Merge pull request #34526 from nextcloud/backport/34522/stable25
[stable25] Update security.txt expires field
2022-10-11 15:06:58 +02:00
Joas Schilling 4beffc4209 Merge pull request #34525 from nextcloud/backport/34517/stable25
[stable25] Update ca-cert bundle
2022-10-11 12:52:42 +02:00
Joas Schilling 4cbfeec38e Update security.txt expires field
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-11 08:07:39 +00:00
nextcloud-command 66b1cf3a19 Update CA certificate bundle
Signed-off-by: GitHub <noreply@github.com>
2022-10-11 08:07:37 +00:00
szaimen 873ba714ae do not show editlocally on mobile
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-11 08:04:49 +00:00
blizzz 9068bf5788 Merge pull request #34505 from nextcloud/backport/30608/stable25
[stable25] Harden disk_free_space check in CheckSetupController
2022-10-10 23:28:46 +02:00
blizzz 0644eab947 Merge pull request #34453 from nextcloud/backport/33737/stable25
[stable25] Makes untrusted domain error on info
2022-10-10 23:28:01 +02:00
Simon L 116897fc90 Merge pull request #34494 from nextcloud/backport/33915/stable25
[stable25] Replace vue2-datepicker with native date picker for share expiration dates
2022-10-10 22:39:10 +02:00
acsfer 061833b83d Harden some PHP functions
To avoid things like https://github.com/nextcloud/server/issues/26034

Signed-off-by: Louis Chemineau <louis@chmn.me>
2022-10-10 18:44:52 +00:00
julia.kirschenheuter e50f95eab6 Replace moment.js date with Date Object.
Replace vue2-datepicker with native date picker for expiration date.

Signed-off-by: julia.kirschenheuter <julia.kirschenheuter@nextcloud.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-10 07:37:15 +00:00
Arthur Schiwon 8fcb1c1d76 25.0.0 RC4
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-10-07 12:44:57 +02:00
Andy Xheli 263e3e829e Fix Error: Undefined index: redirect_url
Signed-off-by: Andy Xheli <axheli@axtsolutions.com>

Should fix Undefined index: redirect_url at core/templates/twofactorsetupselection.php #21968
2022-10-06 21:57:24 +00:00
Andy Xheli 1921685e4e Makes untrusted domain error on info
Signed-off-by: Andy Xheli <axheli@axtsolutions.com>

Since https://github.com/nextcloud/server/commit/e6d9ef2e38daffcab808eaa41b18ab16c6253b97 was applied logs get filled up with Trusted domain error. "X.X.X.X tried to access using "X.X.X.X" as host alot of users missed important errors do tohttps://github.com/nextcloud/server/commit/e6d9ef2e38daffcab808eaa41b18ab16c6253b97   please see https://github.com/nextcloud/server/issues/32599

This should fix. 
https://github.com/nextcloud/server/issues/32599#event-7281164903


Signed-off-by: Andy Xheli <axheli@axtsolutions.com>
2022-10-06 16:28:30 +00:00
blizzz 402143d4e8 Merge pull request #34394 from nextcloud/release/25.0.0_rc3
25.0.0 RC3
2022-10-06 14:11:40 +02:00
Julien Veyssier 4807c23e09 File reference: use the file type icon as fallback when no preview provider for this type
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-10-06 04:33:51 +00:00
Simon L 0c6b5cde95 Merge pull request #34432 from nextcloud/backport/34298/stable25
[stable25] Use color preset of shipped background as primary color
2022-10-05 13:18:41 +02:00
blizzz ab959249d3 Merge pull request #34434 from nextcloud/backport/32635/stable25
[stable25] Fix User profile picture when performing the search
2022-10-05 13:10:55 +02:00
blizzz c4a6f5c7b2 Merge pull request #34370 from nextcloud/backport/34364/stable25
[stable25] also use updatedir for cleanup of backups
2022-10-05 13:08:46 +02:00
blizzz 0612e008d4 Merge pull request #34405 from nextcloud/backport/34302/stable25
[stable25] Fix: Prevent deadlocks during mtime/size/etag propagation
2022-10-05 12:52:29 +02:00
Andy Xheli 47e950dbee Update ContactsStoreTest.php
Signed-off-by: Andy Xheli <axheli@axtsolutions.com>
2022-10-05 08:42:09 +00:00
Andy Xheli 36473a3f63 Update lib/private/Contacts/ContactsMenu/ContactsStore.php
Signed-off-by: Andy Xheli <axheli@axtsolutions.com>

Tested no issues.

Co-authored-by: Pytal <24800714+Pytal@users.noreply.github.com>
Signed-off-by: Andy Xheli <axheli@axtsolutions.com>
2022-10-05 08:42:09 +00:00
Andy Xheli f4fc7daf73 Update ContactsStore.php
Signed-off-by: Andy Xheli <axheli@axtsolutions.com>
2022-10-05 08:42:08 +00:00
Andy Xheli 31e5e102c1 Apply suggestions from code review
Signed-off-by: Andy Xheli <axheli@axtsolutions.com>

Co-authored-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Andy Xheli <axheli@axtsolutions.com>
2022-10-05 08:42:08 +00:00
Andy Xheli 511ade9497 Fix User profile picture when performing the search
Signed-off-by: Andy Xheli <axheli@axtsolutions.com>

Before 
![image](https://user-images.githubusercontent.com/59488153/140980158-b9108161-57ab-48b4-ae6f-98ec4e72775a.png)

After




Fix for #31065
2022-10-05 08:42:07 +00:00
Christopher Ng d1dc38dc1f Use brand color for background only and keep accessible color as color primary
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-10-05 08:03:16 +00:00
Christopher Ng fad56d683c Use color preset of shipped background as primary color
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-10-05 08:03:16 +00:00
blizzz c765dac633 Merge pull request #34409 from nextcloud/backport/33566/stable25
[stable25] trigger a rescan when trying to fopen a file that exists in cache but not on disk
2022-10-04 12:43:10 +02:00
blizzz bbd972b2ca Merge pull request #34413 from nextcloud/backport/34350/stable25
[stable25] Add a capability for the reference API and expose the regex to clients
2022-10-03 21:28:08 +02:00
Julius Härtl a4bfea7f37 Merge pull request #34408 from nextcloud/backport/34396/stable25
[stable25] Fix positioning of the public page footer
2022-10-03 21:22:35 +02:00
Joas Schilling 7b841c060d Add a capability for the reference API and expose the regex to clients
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-03 16:27:05 +00:00
Robin Appelman 0a2744a998 trigger a rescan when trying to fopen a file that exists in cache but not on disk
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-10-03 15:28:30 +00:00
Robin Appelman c26e17104c add test for trying to fopen a file which no longer exists on disk
Signed-off-by: Robin Appelman <robin@icewind.nl>
2022-10-03 15:28:29 +00:00
szaimen 1f0245e68f fix footer
Signed-off-by: szaimen <szaimen@e.mail.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-03 15:12:33 +00:00
Julius Härtl a3febe2a40 Fix positioning of the public page footer
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-10-03 15:12:33 +00:00
raul 7ed5679f2c Fix unencrypted size calculation for files created before the Encryption storage is enabled
Signed-off-by: raul <raul@nextcloud.com>
2022-10-03 14:29:01 +00:00
raul 380aaef96e Fix: Prevent deadlocks during mtime/size/etag propagation
Signed-off-by: raul <raul@nextcloud.com>
2022-10-03 14:29:01 +00:00
blizzz 1b4c82156d Merge pull request #34382 from nextcloud/backport/34339/stable25
[stable25] Fix URLs on reference resolving
2022-10-03 11:18:26 +02:00
blizzz 07ac47812b Merge pull request #34380 from nextcloud/backport/34289/stable25
[stable25] Url encode the web dav url for copying
2022-10-03 11:18:03 +02:00
blizzz 46180dd9f3 Merge pull request #34374 from nextcloud/backport/34219/stable25
[stable25] Add fallback options for contacts array
2022-10-03 11:17:38 +02:00
blizzz d847a89436 Merge pull request #34371 from nextcloud/backport/34343/stable25
[stable25] Fix missing maintenance mode header for OCS request
2022-10-03 11:16:50 +02:00
blizzz eafcc4e3a1 Merge pull request #34357 from nextcloud/backport/34353/stable25
[stable25] Reference url can always fallback to the link itself
2022-10-03 11:15:39 +02:00
Arthur Schiwon 51c249d9ab 25.0.0 RC3
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-10-03 11:07:20 +02:00
Anna Larch b1617bca39 Add fallback options for contacts array
when the UID or FN is null, the email address / dsiplay name will be used instead

Signed-off-by: Anna Larch <anna@nextcloud.com>
2022-10-02 12:44:04 +00:00
Joas Schilling 14a59c461b Fix URLs on reference resolving
The vue-richtext app currently sends leading spaces if they are in the text.

Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-02 12:43:22 +00:00
Anna Larch a2d8bd4c11 Url encode the web dav url for copying
Signed-off-by: Anna Larch <anna@nextcloud.com>
2022-10-02 12:32:25 +00:00
Simon L 115058720a Merge pull request #34373 from nextcloud/backport/34331/stable25
[stable25] fix public view
2022-10-02 11:17:09 +02:00
nextcloud-command 65144258d2 Compile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-10-01 22:24:53 +00:00
szaimen 7b2f226ce6 fix public view - attempt 2
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-10-01 22:24:53 +00:00
Christoph Wurst ac5ec1af7d Fix missing maintenance mode header for OCS request
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2022-10-01 19:46:34 +00:00
blizzz 34ca126b37 Merge pull request #34365 from nextcloud/backport/34363/stable25
[stable25] Update OpenDyslexia to v0.91.12
2022-10-01 21:39:23 +02:00
blizzz 02d07e14b3 Merge pull request #34354 from nextcloud/backport/34348/stable25
[stable25] Fix renaming in shared with you file list
2022-10-01 20:08:40 +02:00
Arthur Schiwon 61def5e276 also use updatedir for cleanup of backups
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-10-01 17:29:44 +00:00
John Molakvoæ ffecfc6441 Merge pull request #34367 from nextcloud/backport/34323/stable25
[stable25] Update theming screenshots
2022-10-01 18:22:24 +02:00
Simon L 94b86b22ce Merge pull request #34356 from nextcloud/backport/34333/stable25
[stable25] fix the tertiary button text
2022-10-01 18:15:55 +02:00
John Molakvoæ (skjnldsv) cfd01baf04 Update theming screenshots
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2022-10-01 15:47:36 +00:00
Simon L 036af3556c Merge pull request #34332 from nextcloud/backport/34327/stable25
[stable25] Fix starred favourite icon
2022-10-01 17:45:13 +02:00
Joas Schilling a3b96282ed Update opendyslexia
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-10-01 15:24:55 +00:00
Julien Veyssier 56abd79050 reference url can always fallback to the link itself
Signed-off-by: Julien Veyssier <eneiluj@posteo.net>
2022-09-30 22:47:07 +00:00
szaimen 5267da34b1 fix test
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-30 18:37:17 +00:00
szaimen 446e495c59 fix the tertiary button text
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-30 18:37:17 +00:00
Vincent Petry cae61e00f6 Fix renaming in shared with you file list
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-09-30 17:56:21 +00:00
blizzz 5660589ca9 Merge pull request #34340 from nextcloud/backport/34328/stable25
[stable25] Correctly handle Redis::keys returning false
2022-09-30 12:55:30 +02:00
Côme Chilliet 8aed08e058 Correctly handle Redis::keys returning false
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-09-30 08:19:15 +00:00
Simon L f2d7d13579 Merge pull request #34335 from nextcloud/backport/34321/stable25
[stable25] Fix invisible status
2022-09-30 09:18:11 +02:00
Joas Schilling 4dea095a76 Merge pull request #34337 from nextcloud/backport/34322/stable25
[stable25] Only match http(s) URLs for references
2022-09-30 09:13:09 +02:00
Joas Schilling 2ea723d1e1 Adjust tests
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-09-30 06:11:46 +00:00
Joas Schilling 019ffa2ec0 Only match http(s) URLs for references
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-09-30 06:11:45 +00:00
nextcloud-command 885b55b7af Compile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-09-29 21:09:21 +00:00
John Molakvoæ (skjnldsv) 467a0eaee2 Fix invisible status
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2022-09-29 21:09:21 +00:00
John Molakvoæ (skjnldsv) 77da30a906 Fix starred favourite icon
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2022-09-29 14:23:25 +00:00
blizzz ce1dddcc64 Merge pull request #34276 from nextcloud/release/25.0.0_rc2
25.0.0 RC2
2022-09-29 15:20:44 +02:00
blizzz b84eb26f72 Merge pull request #34325 from nextcloud/backport/34313/stable25
[stable25] unbundle files_videoplayer and clean up a little
2022-09-29 15:19:30 +02:00
blizzz b6fd615bf7 Merge pull request #34320 from nextcloud/backport/34308/stable25
[stable25] Fix user status emoji picking
2022-09-29 13:49:26 +02:00
Arthur Schiwon 68284b87f2 unbundle files_videoplayer and clean up a little
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-09-29 11:27:33 +00:00
blizzz 904ac63310 Merge pull request #34316 from nextcloud/backport/34215/stable25
[stable25] Add cache header for image endpoint if link previews
2022-09-29 12:16:56 +02:00
blizzz 1f27bd153b Merge pull request #34310 from nextcloud/backport/34306/stable25
[stable25] fix default value for updatedirectory setting
2022-09-29 12:13:36 +02:00
nextcloud-command 92a4ce9f3b Compile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-09-28 23:25:51 +00:00
John Molakvoæ (skjnldsv) 729b78708f Fix user status emoji picking
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2022-09-28 23:25:50 +00:00
Simon L 8b34878771 Merge pull request #34319 from nextcloud/backport/34311/stable25
[stable25] Remove unwanted settings button background
2022-09-29 01:21:41 +02:00
John Molakvoæ (skjnldsv) a5c5740e84 Remove unwanted settings button background
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-09-28 22:38:22 +00:00
blizzz ab51e4ef24 Merge pull request #34317 from nextcloud/backport/34287/stable25
[stable25] fix highcontrast theme
2022-09-28 21:53:04 +02:00
blizzz d442a3c1be Merge pull request #34315 from nextcloud/backport/34204/stable25
[stable25] Fix various theming bugs
2022-09-28 21:52:27 +02:00
szaimen 6ac50c26ef fix highcontrast theme icons
Signed-off-by: szaimen <szaimen@e.mail.de>
2022-09-28 18:38:24 +00:00
Julius Härtl 4aeb701b87 Add cache header for image endpoint if link previews
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-09-28 18:29:45 +00:00
Christopher Ng 9c073fd760 Fix various theming bugs
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-09-28 18:01:41 +00:00
Arthur Schiwon 413610ede4 fix default value for updatedirectory setting
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-09-28 13:56:48 +00:00
blizzz c12f26867d Merge pull request #34285 from nextcloud/backport/34263/stable25
[stable25] Add endpoint to fetch a cachable reference data
2022-09-28 10:23:37 +02:00
blizzz 847535ee88 Merge pull request #34295 from nextcloud/backport/34288/stable25
[stable25] Fix focussing to internal link after copy
2022-09-27 23:20:22 +02:00
blizzz d9c07af32a Merge pull request #34294 from nextcloud/backport/34292/stable25
[stable25] Fix grid view button in public page
2022-09-27 23:19:01 +02:00
blizzz e85870afa7 Merge pull request #34293 from nextcloud/backport/34272/stable25
[stable25] Add primary color presets for shipped backgrounds
2022-09-27 23:18:28 +02:00
blizzz 7bdaa9fa04 Merge pull request #34286 from nextcloud/backport/34134/stable25
[stable25] l10n: Fix text string
2022-09-27 23:17:49 +02:00
blizzz 9c21bda303 Merge pull request #34221 from nextcloud/backport/34212/stable25
[stable25] Fix loading custom background
2022-09-27 23:08:13 +02:00
Vincent Petry 3bb4d01a7c Update apps/files_sharing/src/components/SharingEntryInternal.vue
Co-authored-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-09-27 17:11:17 +00:00
Vincent Petry 99cb56cda2 Fix focussing to internal link after copy
Since a recent change to NcActions it's not possible to add a "ref"
attribute on a NcAction* component.

As a workaround, a ref was added on the NcActions parent component
instead.

Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-09-27 17:11:16 +00:00
Vincent Petry a85d1cad6a Fix grid view button in public page
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-09-27 17:07:09 +00:00
Christopher Ng 6965d4b4af Add preset primary colors for shipped backgrounds
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2022-09-27 16:24:52 +00:00
Joas Schilling 4441416245 Merge pull request #34213 from nextcloud/backport/34191/stable25
[stable25] DashBoard : Allow up to 5 widgets side by side
2022-09-27 17:10:29 +02:00
blizzz 96423a1172 Merge pull request #34251 from nextcloud/backport/34222/stable25
[stable25] Fix install page
2022-09-27 16:58:17 +02:00
Joas Schilling 2d86948c34 Merge pull request #34270 from nextcloud/backport/34260/stable25
[stable25] Remove unneeded and problematic vue-cli-plugin-unit-test
2022-09-27 12:34:59 +02:00
Valdnet dbc421580e l10n: Correct text string
Signed-off-by: Valdnet <47037905+Valdnet@users.noreply.github.com>
2022-09-27 09:58:44 +00:00
Julius Härtl 89f8179e64 Add endpoint to fetch a cachable reference data
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-09-27 09:58:13 +00:00
Vincent Petry bc9f3d3d4c Remove unneeded and problematic vue-cli-plugin-unit-test
It was causing issues during dependency upgrades and wasn't really used
except for its preset definition.

Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-09-27 10:45:00 +02:00
Vincent Petry 9fe747f2c5 Fix loading custom background
Fix the route for loading the custom background.
Because the controller is UserThemeController, so the route path is
not "theming" but "userTheme".

Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-09-27 08:24:41 +00:00
Vincent Petry 6f8b3916ad Merge pull request #34257 from nextcloud/backport/34247/stable25
[stable25] Bump nth-check and @vue/cli-service
2022-09-27 09:14:32 +02:00
Arthur Schiwon 82e9af439e 25.0.0 RC2
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-09-27 08:25:00 +02:00
Vincent Petry c471c8d6de Merge pull request #34268 from nextcloud/dependabot/npm_and_yarn/stable25/moment-2.29.4
[stable25] Bump moment from 2.29.3 to 2.29.4
2022-09-26 21:28:26 +02:00
Vincent Petry 42ca267d83 Fix install page
- Use normal labels instead of hiding them
- Fix position of the eye button (this is still very hacky)
- Define width on the box and not on the text fields

This really needs to be ported to vue

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-09-26 19:01:35 +00:00
Joas Schilling 981da3d49f Recompile
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-09-26 19:32:19 +02:00
Joas Schilling 7083596dc1 Bump moment from 2.29.3 to 2.29.4
Bumps [moment](https://github.com/moment/moment) from 2.29.3 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](moment/moment@2.29.3...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-09-26 19:31:55 +02:00
Joas Schilling ac2e94f121 Merge pull request #34258 from nextcloud/backport/33887/stable25
[stable25] Bump moment-timezone from 0.5.34 to 0.5.37
2022-09-26 19:22:40 +02:00
Joas Schilling de295ba8dd Recompile
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-09-26 15:21:20 +02:00
Joas Schilling 5d078383b6 Merge pull request #34237 from nextcloud/backport/34220/stable25
[stable25] Make phpcs happy and remove unused setup thing
2022-09-26 15:07:48 +02:00
Joas Schilling e938bbec19 Merge pull request #34253 from nextcloud/backport/34249/stable25
[stable25] Move Reference class to public namespace
2022-09-26 15:07:32 +02:00
Joas Schilling 1f0f227b43 Bump moment-timezone from 0.5.34 to 0.5.37
Bumps [moment-timezone](https://github.com/moment/moment-timezone) from 0.5.34 to 0.5.37.
- [Release notes](https://github.com/moment/moment-timezone/releases)
- [Changelog](https://github.com/moment/moment-timezone/blob/develop/changelog.md)
- [Commits](https://github.com/moment/moment-timezone/compare/0.5.34...0.5.37)

---
updated-dependencies:
- dependency-name: moment-timezone
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-09-26 12:42:41 +00:00
dependabot[bot] b2fa292ee8 Bump nth-check and @vue/cli-service
Bumps [nth-check](https://github.com/fb55/nth-check) and [@vue/cli-service](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-service). These dependencies needed to be updated together.

Updates `nth-check` from 1.0.2 to 2.1.1
- [Release notes](https://github.com/fb55/nth-check/releases)
- [Commits](https://github.com/fb55/nth-check/compare/v1.0.2...v2.1.1)

Updates `@vue/cli-service` from 4.5.17 to 5.0.8
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v5.0.8/packages/@vue/cli-service)

---
updated-dependencies:
- dependency-name: nth-check
  dependency-type: indirect
- dependency-name: "@vue/cli-service"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-26 12:40:09 +00:00
Joas Schilling cc6b12a166 Add since
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-09-26 10:44:24 +00:00
Julius Härtl b45d342654 Move Reference class to public namespace
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2022-09-26 10:44:24 +00:00
Jérôme Herbinet e43814f74d DashBoard : Allow up to 5 widgets side by side
Signed-off-by: Jérôme Herbinet <j.herbinet@protonmail.ch>

Signed-off-by: Jérôme Herbinet <33763786+Jerome-Herbinet@users.noreply.github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2022-09-26 06:07:05 +00:00
Joas Schilling 611b920e3d Merge pull request #34236 from nextcloud/backport/34210/stable25
[stable25] Fixing missing theming variables
2022-09-26 06:38:47 +02:00
Joas Schilling c25d61c7b8 Fix CS completely
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-09-26 06:38:01 +02:00
Joas Schilling 4be6d23d00 Merge pull request #34187 from nextcloud/bugfix/noid/fix-talk-testing
[stable25] Fix Talk checkout in video verification test
2022-09-26 06:13:03 +02:00
Vincent Petry f2bd15229a Make phpcs happy and remove unused setup thing
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
2022-09-24 05:57:45 +00:00
John Molakvoæ a703818ee7 Refactor primary computation and fix a few missing theme parity variables
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-09-24 05:38:47 +00:00
John Molakvoæ 5ee61a5fc6 Disable background blur on highcontrast
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-09-24 05:38:47 +00:00
John Molakvoæ 019e85d92c Fixing dark primary element variables
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
2022-09-24 05:38:47 +00:00
blizzz 1fae3ae4ae Merge pull request #34185 from nextcloud/release/25.0.0_rc_1
25.0.0 RC 1
2022-09-22 18:12:42 +02:00
blizzz c6c4328e2a Merge pull request #34196 from nextcloud/backport/34190/stable25
[stable25] remove CoreBundle as we now ship the lat app that was referenced there
2022-09-22 18:12:26 +02:00
Arthur Schiwon aff9302638 update autoloader
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-09-22 17:36:13 +02:00
Arthur Schiwon 1115199ae3 remove getDefaultInstallationBundle
- because all apps are shipped now it was returning an empty result

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-09-22 17:36:09 +02:00
Arthur Schiwon 86b787d21e remove InstallCoreBundle repair step
- core bundle was empty and thus removed
- all former apps installed this way are shipped

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-09-22 17:36:05 +02:00
Arthur Schiwon 359a37fd10 remove Core Bundle
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-09-22 17:36:00 +02:00
blizzz 079a8c0e0f Merge pull request #34192 from nextcloud/move-background-clearing-stable25
[stable25] Move avatar clearing in the background
2022-09-22 17:33:43 +02:00
Vincent Petry 42bc4a0b2a Merge pull request #34195 from nextcloud/backport/34160/stable25
[stable25] Detect weird local ips
2022-09-22 17:32:22 +02:00
Côme Chilliet 205760a3aa Fix idn_to_utf8 stub signature
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-09-22 16:39:58 +02:00
Côme Chilliet 2948697257 Update 3rdparty to master
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-09-22 16:39:50 +02:00
Côme Chilliet 3c47caf08b Fix tests for nested v4 in v6
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-09-22 16:39:42 +02:00
Côme Chilliet 515e05cf16 Use new dependency to normalize IPs
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-09-22 16:39:34 +02:00
Côme Chilliet 060230eec7 Add mlocati/ip-lib dependency
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-09-22 16:39:22 +02:00
Côme Chilliet b2a893abad Add missing urldecode and idn_to_utf8 calls to local address checker
The call to idn_to_utf8 call is actually to apply normalization

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-09-22 16:39:14 +02:00
Côme Chilliet 95dcc610fc Harden tests for local IP detection in URLs
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2022-09-22 16:38:57 +02:00
Carl Schwan a5a8f4e9ef Move avatar clearing in the background
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
(cherry picked from commit e21e53670c60b74ca2c49c01bf510ccdc5115b0d)
2022-09-22 15:42:13 +02:00
blizzz 9366ec0fb8 Merge pull request #34184 from nextcloud/backport/34183/stable25
[stable25] Bumped shipped apps list
2022-09-22 12:56:07 +02:00
Joas Schilling bfaa31af61 Fix Talk checkout in video verification test
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-09-22 11:49:28 +02:00
Arthur Schiwon 063aac8ebc 25.0.0 RC 1
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2022-09-22 11:21:54 +02:00
Joas Schilling 773826f9e1 Bumped shipped apps list
Signed-off-by: Joas Schilling <coding@schilljs.com>
2022-09-22 11:21:09 +02:00
1959 changed files with 29559 additions and 42962 deletions
+41 -5
View File
@@ -374,7 +374,7 @@ services:
- name: cache
image: ghcr.io/nextcloud/continuous-integration-redis:latest
- name: mariadb
image: ghcr.io/nextcloud/continuous-integration-mariadb-10.6continuous-integration-mariadb-10.6:10.6
image: ghcr.io/nextcloud/continuous-integration-mariadb-10.6:latest
environment:
MYSQL_ROOT_PASSWORD: owncloud
MYSQL_USER: oc_autotest
@@ -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
@@ -1214,7 +1250,7 @@ steps:
commands:
# JavaScript files are not used in integration tests so it is not needed to
# build them.
- git clone --depth 1 https://github.com/nextcloud/spreed apps/spreed
- git clone --depth 1 --branch stable25 https://github.com/nextcloud/spreed apps/spreed
- name: integration-sharing-v1-video-verification
image: ghcr.io/nextcloud/continuous-integration-integration-php7.4:latest
commands:
+1 -1
View File
@@ -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
+29 -22
View File
@@ -1,46 +1,39 @@
name: PHPUnit
on:
pull_request:
push:
branches:
- master
- stable*
on: pull_request
permissions:
contents: read
concurrency:
group: phpunit-oci-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
phpunit-oci8:
phpunit-oci:
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
php-versions: [ '7.4', '8.0', '8.1']
databases: [ 'oci' ]
name: php${{ matrix.php-versions }}-${{ matrix.databases }}
services:
oracle:
image: deepdiver/docker-oracle-xe-11g # "wnameless/oracle-xe-11g-r2"
image: deepdiver/docker-oracle-xe-11g # 'wnameless/oracle-xe-11g-r2'
ports:
- "1521:1521"
- 1521:1521/tcp
steps:
- name: Checkout server
uses: actions/checkout@v2
- name: Checkout submodules
shell: bash
run: |
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
uses: actions/checkout@v3
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,oci8,openssl,pdo_sqlite,posix,sqlite,xml,zip
extensions: ctype, curl, dom, fileinfo, gd, imagick, intl, json, mbstring, oci8, openssl, pdo_sqlite, posix, sqlite, xml, zip
tools: phpunit:9
coverage: none
@@ -53,3 +46,17 @@ jobs:
- name: PHPUnit
working-directory: tests
run: phpunit --configuration phpunit-autotest.xml --group DB,SLOWDB
summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: phpunit-oci
if: always()
name: phpunit-oci-summary
steps:
- name: Summary status
run: if ${{ needs.phpunit-oci.result != 'success' }}; then exit 1; fi
+1 -1
View File
@@ -8,7 +8,7 @@ on:
jobs:
s3-primary-tests-minio:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
strategy:
# do not stop on another job's failure
+17
View File
@@ -0,0 +1,17 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
hooks:
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/nextcloud/pre-commit-php.git
rev: 1.5.1
hooks:
- id: php-lint
- id: php-cs-fixer
files: \.(php)$
exclude: ^(config|data|composer)
args: []
+2 -2
View File
@@ -1,7 +1,7 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Audit / journalisation",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fournit des capacités de journalisation pour Nextcloud telles que l'enregistrement des accès aux fichiers ou d'autres actions sensibles."
"Auditing / Logging" : "Vérification / Connexion",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fournit des capacités de traçage pour NextCloud tels que l'accès au fichier de connexions ou d'autres actions sensibles."
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
+2 -2
View File
@@ -1,5 +1,5 @@
{ "translations": {
"Auditing / Logging" : "Audit / journalisation",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fournit des capacités de journalisation pour Nextcloud telles que l'enregistrement des accès aux fichiers ou d'autres actions sensibles."
"Auditing / Logging" : "Vérification / Connexion",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fournit des capacités de traçage pour NextCloud tels que l'accès au fichier de connexions ou d'autres actions sensibles."
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}
+6
View File
@@ -0,0 +1,6 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Ревизија / Евиденција"
},
"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;");
+4
View File
@@ -0,0 +1,4 @@
{ "translations": {
"Auditing / Logging" : "Ревизија / Евиденција"
},"pluralForm" :"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;"
}
+3 -3
View File
@@ -1,8 +1,8 @@
OC.L10N.register(
"cloud_federation_api",
{
"Cloud Federation API" : "API de la Federació cloud",
"Enable clouds to communicate with each other and exchange data" : "Permetre que els núvols es comuniquin entre si i intercanviar dades",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "L'API de la Federació cloud permet que diverses instàncies Nextcloud es comuniquin entre si i intercanviin dades."
"Cloud Federation API" : "API de federació de núvols",
"Enable clouds to communicate with each other and exchange data" : "Permeteu que els núvols es comuniquin entre si i intercanviïn dades",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "L'API de federació de núvols permet que diverses instàncies del Nextcloud es comuniquin entre si i intercanviïn dades."
},
"nplurals=2; plural=(n != 1);");
+3 -3
View File
@@ -1,6 +1,6 @@
{ "translations": {
"Cloud Federation API" : "API de la Federació cloud",
"Enable clouds to communicate with each other and exchange data" : "Permetre que els núvols es comuniquin entre si i intercanviar dades",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "L'API de la Federació cloud permet que diverses instàncies Nextcloud es comuniquin entre si i intercanviin dades."
"Cloud Federation API" : "API de federació de núvols",
"Enable clouds to communicate with each other and exchange data" : "Permeteu que els núvols es comuniquin entre si i intercanviïn dades",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "L'API de federació de núvols permet que diverses instàncies del Nextcloud es comuniquin entre si i intercanviïn dades."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -2
View File
@@ -1,8 +1,8 @@
OC.L10N.register(
"cloud_federation_api",
{
"Cloud Federation API" : "API pro federování cloudu",
"Cloud Federation API" : "API pro federovaný cloud",
"Enable clouds to communicate with each other and exchange data" : "Umožňuje cloudům navzájem komunikovat a vyměňovat si data",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "API pro federování cloudů umožňuje různým instancím Nextcloud vzájemně komunikovat a vyměňovat si data."
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "API pro federovaný cloud umožňuje různým instancím Nextcloud vzájemně komunikovat a vyměňovat si data."
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
+2 -2
View File
@@ -1,6 +1,6 @@
{ "translations": {
"Cloud Federation API" : "API pro federování cloudu",
"Cloud Federation API" : "API pro federovaný cloud",
"Enable clouds to communicate with each other and exchange data" : "Umožňuje cloudům navzájem komunikovat a vyměňovat si data",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "API pro federování cloudů umožňuje různým instancím Nextcloud vzájemně komunikovat a vyměňovat si data."
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "API pro federovaný cloud umožňuje různým instancím Nextcloud vzájemně komunikovat a vyměňovat si data."
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
}
+12 -3
View File
@@ -10,16 +10,25 @@ OC.L10N.register(
"%1$s commented on %2$s" : "%1$s ha comentat a %2$s",
"{author} commented on {file}" : "{author} ha comentat a {file}",
"<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per fitxers",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Se t'ha esmentat a \"{file}\" en un comentari d'un usuari que s'ha suprimit des de llavors",
"{user} mentioned you in a comment on \"{file}\"" : "{user} t'ha mencionat en un comentari a \"{file}\"",
"Files app plugin to add comments to files" : "Connexió de laplicació de fitxers per afegir comentaris als fitxers",
"Edit comment" : "Edita comentari",
"Edit comment" : "Edició comentari",
"Delete comment" : "Suprimeix comentari",
"Cancel edit" : "Cancel·la l'edició",
"Post comment" : "Enviar comentari",
"No comments yet, start the conversation!" : "Encara no hi ha comentaris. Enceteu la conversa!",
"Retry" : "Torna a intentar",
"No more messages" : "No hi ha més missatges",
"Retry" : "Reintent",
"Unable to load the comments list" : "No es pot carregar la llista de comentaris",
"_%n unread comment_::_%n unread comments_" : ["%n comentari no llegit","%n comentaris no llegits"],
"_1 new comment_::_{unread} new comments_" : ["1 comentari nou","{unread} comentaris nous"],
"Comment" : "Comentari",
"An error occurred while trying to edit the comment" : "S'ha produït un error en intentar editar el comentari",
"Comment deleted" : "Comentari suprimit",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Heu estat esmentats a \"{file}\" en un comentari d'un usuari que ja no existeix",
"An error occurred while trying to delete the comment" : "S'ha produït un error en intentar suprimir el comentari",
"An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Heu estat esmentats a \"{file}\" en un comentari d'un usuari que ja s'ha suprimit",
"{user} mentioned you in a comment on “{file}”" : "{user} us ha esmentat en un comentari de “{file}”"
},
"nplurals=2; plural=(n != 1);");
+12 -3
View File
@@ -8,16 +8,25 @@
"%1$s commented on %2$s" : "%1$s ha comentat a %2$s",
"{author} commented on {file}" : "{author} ha comentat a {file}",
"<strong>Comments</strong> for files" : "<strong>Comentaris</strong> per fitxers",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Se t'ha esmentat a \"{file}\" en un comentari d'un usuari que s'ha suprimit des de llavors",
"{user} mentioned you in a comment on \"{file}\"" : "{user} t'ha mencionat en un comentari a \"{file}\"",
"Files app plugin to add comments to files" : "Connexió de laplicació de fitxers per afegir comentaris als fitxers",
"Edit comment" : "Edita comentari",
"Edit comment" : "Edició comentari",
"Delete comment" : "Suprimeix comentari",
"Cancel edit" : "Cancel·la l'edició",
"Post comment" : "Enviar comentari",
"No comments yet, start the conversation!" : "Encara no hi ha comentaris. Enceteu la conversa!",
"Retry" : "Torna a intentar",
"No more messages" : "No hi ha més missatges",
"Retry" : "Reintent",
"Unable to load the comments list" : "No es pot carregar la llista de comentaris",
"_%n unread comment_::_%n unread comments_" : ["%n comentari no llegit","%n comentaris no llegits"],
"_1 new comment_::_{unread} new comments_" : ["1 comentari nou","{unread} comentaris nous"],
"Comment" : "Comentari",
"An error occurred while trying to edit the comment" : "S'ha produït un error en intentar editar el comentari",
"Comment deleted" : "Comentari suprimit",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Heu estat esmentats a \"{file}\" en un comentari d'un usuari que ja no existeix",
"An error occurred while trying to delete the comment" : "S'ha produït un error en intentar suprimir el comentari",
"An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Heu estat esmentats a \"{file}\" en un comentari d'un usuari que ja s'ha suprimit",
"{user} mentioned you in a comment on “{file}”" : "{user} us ha esmentat en un comentari de “{file}”"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+3 -3
View File
@@ -3,14 +3,14 @@ OC.L10N.register(
{
"Comments" : "Komentáře",
"You commented" : "Okomentovali jste",
"%1$s commented" : "%1$s okomentován",
"%1$s commented" : "%1$s okomentováno",
"{author} commented" : "{author} okomentoval(a)",
"You commented on %1$s" : "Okomentovali jste %1$s",
"You commented on {file}" : "Okomentovali jste {file}",
"%1$s commented on %2$s" : "%1$s okomentoval(a) %2$s",
"{author} commented on {file}" : "{author} okomentoval(a) {file}",
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> k souborům",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru „{file}“, v komentáři od uživatele, který byl později smazán",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán",
"{user} mentioned you in a comment on \"{file}\"" : "{user} vás zmínil(a) v komentáři u „{file}“",
"Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
"Edit comment" : "Upravit komentář",
@@ -28,7 +28,7 @@ OC.L10N.register(
"Comment deleted" : "Komentář smazán",
"An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře",
"An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru „{file}“, v komentáři od uživatele, který byl později smazán",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán",
"{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil(a) v komentáři u „{file}“"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
+3 -3
View File
@@ -1,14 +1,14 @@
{ "translations": {
"Comments" : "Komentáře",
"You commented" : "Okomentovali jste",
"%1$s commented" : "%1$s okomentován",
"%1$s commented" : "%1$s okomentováno",
"{author} commented" : "{author} okomentoval(a)",
"You commented on %1$s" : "Okomentovali jste %1$s",
"You commented on {file}" : "Okomentovali jste {file}",
"%1$s commented on %2$s" : "%1$s okomentoval(a) %2$s",
"{author} commented on {file}" : "{author} okomentoval(a) {file}",
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> k souborům",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru „{file}“, v komentáři od uživatele, který byl později smazán",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán",
"{user} mentioned you in a comment on \"{file}\"" : "{user} vás zmínil(a) v komentáři u „{file}“",
"Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
"Edit comment" : "Upravit komentář",
@@ -26,7 +26,7 @@
"Comment deleted" : "Komentář smazán",
"An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře",
"An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru „{file}“, v komentáři od uživatele, který byl později smazán",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán",
"{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil(a) v komentáři u „{file}“"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
}
+10
View File
@@ -10,14 +10,24 @@ OC.L10N.register(
"%1$s commented on %2$s" : "%1$s commented on %2$s",
"{author} commented on {file}" : "{author} commented on {file}",
"<strong>Comments</strong> for files" : "<strong>Comments</strong> for files",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "You were mentioned on \"{file}\", in a comment by a user that has since been deleted",
"{user} mentioned you in a comment on \"{file}\"" : "{user} mentioned you in a comment on \"{file}\"",
"Files app plugin to add comments to files" : "Files app plugin to add comments to files",
"Edit comment" : "Edit comment",
"Delete comment" : "Delete comment",
"Cancel edit" : "Cancel edit",
"Post comment" : "Post comment",
"No comments yet, start the conversation!" : "No comments yet, start the conversation!",
"No more messages" : "No more messages",
"Retry" : "Retry",
"Unable to load the comments list" : "Unable to load the comments list",
"_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"],
"_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} new comments"],
"Comment" : "Comment",
"An error occurred while trying to edit the comment" : "An error occurred while trying to edit the comment",
"Comment deleted" : "Comment deleted",
"An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment",
"An error occurred while trying to create the comment" : "An error occurred while trying to create the comment",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "You were mentioned on “{file}”, in a comment by a user that has since been deleted",
"{user} mentioned you in a comment on “{file}”" : "{user} mentioned you in a comment on “{file}”"
},
+10
View File
@@ -8,14 +8,24 @@
"%1$s commented on %2$s" : "%1$s commented on %2$s",
"{author} commented on {file}" : "{author} commented on {file}",
"<strong>Comments</strong> for files" : "<strong>Comments</strong> for files",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "You were mentioned on \"{file}\", in a comment by a user that has since been deleted",
"{user} mentioned you in a comment on \"{file}\"" : "{user} mentioned you in a comment on \"{file}\"",
"Files app plugin to add comments to files" : "Files app plugin to add comments to files",
"Edit comment" : "Edit comment",
"Delete comment" : "Delete comment",
"Cancel edit" : "Cancel edit",
"Post comment" : "Post comment",
"No comments yet, start the conversation!" : "No comments yet, start the conversation!",
"No more messages" : "No more messages",
"Retry" : "Retry",
"Unable to load the comments list" : "Unable to load the comments list",
"_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"],
"_1 new comment_::_{unread} new comments_" : ["1 new comment","{unread} new comments"],
"Comment" : "Comment",
"An error occurred while trying to edit the comment" : "An error occurred while trying to edit the comment",
"Comment deleted" : "Comment deleted",
"An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment",
"An error occurred while trying to create the comment" : "An error occurred while trying to create the comment",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "You were mentioned on “{file}”, in a comment by a user that has since been deleted",
"{user} mentioned you in a comment on “{file}”" : "{user} mentioned you in a comment on “{file}”"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
+2
View File
@@ -10,6 +10,8 @@ OC.L10N.register(
"%1$s commented on %2$s" : "התקבלו תגובות %1$s ב- %2$s ",
"{author} commented on {file}" : "נוספה תגובה על {file} מאת {author}",
"<strong>Comments</strong> for files" : "<strong>תגובות</strong> על קבצים",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "אוזכרת בקובץ „{file}”, בהערה על ידי משתמש שנמחק מאז",
"{user} mentioned you in a comment on \"{file}\"" : "אוזכרת על ידי {user} בהערה בתוך „{file}”",
"Files app plugin to add comments to files" : "תוסף ליישומון הקבצים כדי להוסיף הערות על קבצים",
"Edit comment" : "עריכת תגובה",
"Delete comment" : "מחיקת תגובה",
+2
View File
@@ -8,6 +8,8 @@
"%1$s commented on %2$s" : "התקבלו תגובות %1$s ב- %2$s ",
"{author} commented on {file}" : "נוספה תגובה על {file} מאת {author}",
"<strong>Comments</strong> for files" : "<strong>תגובות</strong> על קבצים",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "אוזכרת בקובץ „{file}”, בהערה על ידי משתמש שנמחק מאז",
"{user} mentioned you in a comment on \"{file}\"" : "אוזכרת על ידי {user} בהערה בתוך „{file}”",
"Files app plugin to add comments to files" : "תוסף ליישומון הקבצים כדי להוסיף הערות על קבצים",
"Edit comment" : "עריכת תגובה",
"Delete comment" : "מחיקת תגובה",
+2 -1
View File
@@ -11,6 +11,7 @@ OC.L10N.register(
"{author} commented on {file}" : "{author} reageerde op {file}",
"<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Je werd vermeld op \"{file}\" in een reactie door een sindsdien verwijderde gebruiker",
"{user} mentioned you in a comment on \"{file}\"" : "{user} noemde jou in een reactie op \"{file}\"",
"Files app plugin to add comments to files" : "Bestanden app plugin om reacties aan bestanden toe te voegen",
"Edit comment" : "Bewerk reactie",
"Delete comment" : "Verwijder reactie",
@@ -27,7 +28,7 @@ OC.L10N.register(
"Comment deleted" : "Reactie verwijderd",
"An error occurred while trying to delete the comment" : "Er trad een fout op bij het verwijderen van de reactie",
"An error occurred while trying to create the comment" : "Er trad een fout op bij het creëren van de reactie",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Je werd vermeld op \"{file}\" in een reactie door een sindsdien verwijderde gebruiker",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Je werd vermeld in een reactie op \"{file}\" door een sindsdien verwijderde gebruiker",
"{user} mentioned you in a comment on “{file}”" : "{user} heeft je vermeld in een reactie op “{file}\""
},
"nplurals=2; plural=(n != 1);");
+2 -1
View File
@@ -9,6 +9,7 @@
"{author} commented on {file}" : "{author} reageerde op {file}",
"<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Je werd vermeld op \"{file}\" in een reactie door een sindsdien verwijderde gebruiker",
"{user} mentioned you in a comment on \"{file}\"" : "{user} noemde jou in een reactie op \"{file}\"",
"Files app plugin to add comments to files" : "Bestanden app plugin om reacties aan bestanden toe te voegen",
"Edit comment" : "Bewerk reactie",
"Delete comment" : "Verwijder reactie",
@@ -25,7 +26,7 @@
"Comment deleted" : "Reactie verwijderd",
"An error occurred while trying to delete the comment" : "Er trad een fout op bij het verwijderen van de reactie",
"An error occurred while trying to create the comment" : "Er trad een fout op bij het creëren van de reactie",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Je werd vermeld op \"{file}\" in een reactie door een sindsdien verwijderde gebruiker",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Je werd vermeld in een reactie op \"{file}\" door een sindsdien verwijderde gebruiker",
"{user} mentioned you in a comment on “{file}”" : "{user} heeft je vermeld in een reactie op “{file}\""
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+11 -2
View File
@@ -10,15 +10,24 @@ OC.L10N.register(
"%1$s commented on %2$s" : "%1$s прокоментовано у %2$s",
"{author} commented on {file}" : "{author} прокоментував {file}",
"<strong>Comments</strong> for files" : "<strong>Коментів</strong> для файлів",
"Files app plugin to add comments to files" : "Додаток до застосунку Файли (Files) для коментування файлів",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Вас згадали в \"{file}\" у коментарі користувача, який згодом було видалено",
"{user} mentioned you in a comment on \"{file}\"" : "{user} згадав вас у коментарі до \"{file}\"",
"Files app plugin to add comments to files" : "Плаґін до застосунку и\"Файли\" для додавання коментарів до файлів",
"Edit comment" : "Редагувати коментар",
"Delete comment" : "Вилучити коментар",
"No comments yet, start the conversation!" : "Коментарі відсутні, почніть бесіду!",
"Cancel edit" : "Скасувати редагування",
"Post comment" : "Опублікувати коментар",
"No comments yet, start the conversation!" : "Тут можна додати коментарі",
"No more messages" : "Більше жодних повідомлень",
"Retry" : "Ще раз",
"Unable to load the comments list" : "Не вдалося завантажити список коментарів",
"_%n unread comment_::_%n unread comments_" : ["%n непрочитаний коментар","%n непрочитаних коментарів","%n непрочитаних коментарів","%n непрочитаних коментарів"],
"_1 new comment_::_{unread} new comments_" : ["{unread} новий коментар","{unread} нових коментарів","{unread} нових коментарів","{unread} нових коментарів"],
"Comment" : "Коментар",
"An error occurred while trying to edit the comment" : "Під час редагування коментаря сталася помилка",
"Comment deleted" : "Коментар вилучено",
"An error occurred while trying to delete the comment" : "Під час спроби видалити коментар сталася помилка",
"An error occurred while trying to create the comment" : "Під час створення коментаря сталася помилка",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Вас було згадано у “{file}” у коментарі користувача, якого було пізніше вилучено",
"{user} mentioned you in a comment on “{file}”" : "{user} згадав Вас у коментарі про “{file}”"
},
+11 -2
View File
@@ -8,15 +8,24 @@
"%1$s commented on %2$s" : "%1$s прокоментовано у %2$s",
"{author} commented on {file}" : "{author} прокоментував {file}",
"<strong>Comments</strong> for files" : "<strong>Коментів</strong> для файлів",
"Files app plugin to add comments to files" : "Додаток до застосунку Файли (Files) для коментування файлів",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Вас згадали в \"{file}\" у коментарі користувача, який згодом було видалено",
"{user} mentioned you in a comment on \"{file}\"" : "{user} згадав вас у коментарі до \"{file}\"",
"Files app plugin to add comments to files" : "Плаґін до застосунку и\"Файли\" для додавання коментарів до файлів",
"Edit comment" : "Редагувати коментар",
"Delete comment" : "Вилучити коментар",
"No comments yet, start the conversation!" : "Коментарі відсутні, почніть бесіду!",
"Cancel edit" : "Скасувати редагування",
"Post comment" : "Опублікувати коментар",
"No comments yet, start the conversation!" : "Тут можна додати коментарі",
"No more messages" : "Більше жодних повідомлень",
"Retry" : "Ще раз",
"Unable to load the comments list" : "Не вдалося завантажити список коментарів",
"_%n unread comment_::_%n unread comments_" : ["%n непрочитаний коментар","%n непрочитаних коментарів","%n непрочитаних коментарів","%n непрочитаних коментарів"],
"_1 new comment_::_{unread} new comments_" : ["{unread} новий коментар","{unread} нових коментарів","{unread} нових коментарів","{unread} нових коментарів"],
"Comment" : "Коментар",
"An error occurred while trying to edit the comment" : "Під час редагування коментаря сталася помилка",
"Comment deleted" : "Коментар вилучено",
"An error occurred while trying to delete the comment" : "Під час спроби видалити коментар сталася помилка",
"An error occurred while trying to create the comment" : "Під час створення коментаря сталася помилка",
"You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Вас було згадано у “{file}” у коментарі користувача, якого було пізніше вилучено",
"{user} mentioned you in a comment on “{file}”" : "{user} згадав Вас у коментарі про “{file}”"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
+1
View File
@@ -69,6 +69,7 @@
:auto-complete="autoComplete"
:contenteditable="!loading"
:value="localMessage"
:user-data="userData"
@update:value="updateLocalMessage"
@submit="onSubmit" />
<NcButton class="comment__submit"
+1 -13
View File
@@ -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
}
+8
View File
@@ -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
}
@@ -1,7 +1,7 @@
/**
* @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>
* @copyright Copyright (c) 2021 Christopher Ng <chrng8@gmail.com>
*
* @author Julius Härtl <jus@bitgrid.net>
* @author Christopher Ng <chrng8@gmail.com>
*
* @license AGPL-3.0-or-later
*
@@ -20,6 +20,15 @@
*
*/
import { generateFilePath } from '@nextcloud/router'
export const prefixWithBaseUrl = (url) => generateFilePath('theming', '', 'img/background/') + url
/**
* @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
}
+57 -29
View File
@@ -2,6 +2,7 @@
- @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>
-
- @author John Molakvoæ <skjnldsv@protonmail.com>
- @author Richard Steinmetz <richard@steinmetz.cloud>
-
- @license GNU AGPL version 3 or any later version
-
@@ -25,14 +26,19 @@
<!-- Editor -->
<Comment v-bind="editorData"
:auto-complete="autoComplete"
:user-data="userData"
:editor="true"
:ressource-id="ressourceId"
class="comments__writer"
@new="onNewComment" />
<template v-if="!isFirstLoading">
<NcEmptyContent v-if="!hasComments && done" icon="icon-comment">
{{ t('comments', 'No comments yet, start the conversation!') }}
<NcEmptyContent v-if="!hasComments && done"
class="comments__empty"
:title="t('comments', 'No comments yet, start the conversation!')">
<template #icon>
<MessageReplyTextIcon />
</template>
</NcEmptyContent>
<!-- Comments -->
@@ -55,14 +61,19 @@
</div>
<!-- Error message -->
<NcEmptyContent v-else-if="error" class="comments__error" icon="icon-error">
{{ error }}
<template #desc>
<button icon="icon-history" @click="getComments">
{{ t('comments', 'Retry') }}
</button>
</template>
</NcEmptyContent>
<template v-else-if="error">
<NcEmptyContent class="comments__error" :title="error">
<template #icon>
<AlertCircleOutlineIcon />
</template>
</NcEmptyContent>
<NcButton class="comments__retry" @click="getComments">
<template #icon>
<RefreshIcon />
</template>
{{ t('comments', 'Retry') }}
</NcButton>
</template>
</template>
</div>
</template>
@@ -76,10 +87,14 @@ import VTooltip from 'v-tooltip'
import Vue from 'vue'
import NcEmptyContent from '@nextcloud/vue/dist/Components/NcEmptyContent'
import NcButton from '@nextcloud/vue/dist/Components/NcButton'
import RefreshIcon from 'vue-material-design-icons/Refresh'
import MessageReplyTextIcon from 'vue-material-design-icons/MessageReplyText'
import AlertCircleOutlineIcon from 'vue-material-design-icons/AlertCircleOutline'
import Comment from '../components/Comment'
import getComments, { DEFAULT_LIMIT } from '../services/GetComments'
import cancelableRequest from '../utils/cancelableRequest'
import Comment from '../components/Comment.vue'
import getComments, { DEFAULT_LIMIT } from '../services/GetComments.js'
import cancelableRequest from '../utils/cancelableRequest.js'
Vue.use(VTooltip)
@@ -90,6 +105,10 @@ export default {
// Avatar,
Comment,
NcEmptyContent,
NcButton,
RefreshIcon,
MessageReplyTextIcon,
AlertCircleOutlineIcon,
},
data() {
@@ -111,6 +130,7 @@ export default {
},
Comment,
userData: {},
}
},
@@ -155,21 +175,22 @@ export default {
* Make sure we have all mentions as Array of objects
*
* @param {Array} mentions the mentions list
* @return {object[]}
* @return {Object<string, object>}
*/
genMentionsData(mentions) {
const list = Object.values(mentions).flat()
return list.reduce((mentions, mention) => {
mentions[mention.mentionId] = {
// TODO: support groups
icon: 'icon-user',
id: mention.mentionId,
label: mention.mentionDisplayName,
source: 'users',
primary: getCurrentUser().uid === mention.mentionId,
}
return mentions
}, {})
Object.values(mentions)
.flat()
.forEach(mention => {
this.userData[mention.mentionId] = {
// TODO: support groups
icon: 'icon-user',
id: mention.mentionId,
label: mention.mentionDisplayName,
source: 'users',
primary: getCurrentUser().uid === mention.mentionId,
}
})
return this.userData
},
/**
@@ -233,7 +254,9 @@ export default {
limit: loadState('comments', 'maxAutoCompleteResults'),
},
})
return callback(results.data.ocs.data)
// Save user data so it can be used by the editor to replace mentions
results.data.ocs.data.forEach(user => { this.userData[user.id] = user })
return callback(Object.values(this.userData))
},
/**
@@ -276,8 +299,13 @@ export default {
<style lang="scss" scoped>
.comments {
// Do not add emptycontent top margin
&__error{
margin-top: 0;
&__empty,
&__error {
margin-top: 0 !important;
}
&__retry {
margin: 0 auto;
}
&__info {
+2 -2
View File
@@ -2,8 +2,8 @@ OC.L10N.register(
"contactsinteraction",
{
"Recently contacted" : "Nedávno kontaktovaní",
"Contacts Interaction" : "Napojení na kontakty",
"Contacts Interaction" : "Napojení na Kontakty",
"Manages interaction between users and contacts" : "Spravuje interakci mezi uživateli a kontakty",
"Collect data about user and contacts interactions and provide an address book for the data" : "Shromáždit údaje o uživateli a interakci s kontakty a poskytnout adresář kontaktů pro data"
"Collect data about user and contacts interactions and provide an address book for the data" : "Shromažďuje data o interakcích mezi uživatelem a kontakty a poskytuje pro tato data adresář kontaktů"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
+2 -2
View File
@@ -1,7 +1,7 @@
{ "translations": {
"Recently contacted" : "Nedávno kontaktovaní",
"Contacts Interaction" : "Napojení na kontakty",
"Contacts Interaction" : "Napojení na Kontakty",
"Manages interaction between users and contacts" : "Spravuje interakci mezi uživateli a kontakty",
"Collect data about user and contacts interactions and provide an address book for the data" : "Shromáždit údaje o uživateli a interakci s kontakty a poskytnout adresář kontaktů pro data"
"Collect data about user and contacts interactions and provide an address book for the data" : "Shromažďuje data o interakcích mezi uživatelem a kontakty a poskytuje pro tato data adresář kontaktů"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
}
+9
View File
@@ -0,0 +1,9 @@
OC.L10N.register(
"contactsinteraction",
{
"Recently contacted" : "Nylig kontaktet",
"Contacts Interaction" : "Interaksjon med kontakter",
"Manages interaction between users and contacts" : "Administrerer interaksjon mellom brukere og kontakter",
"Collect data about user and contacts interactions and provide an address book for the data" : "Samle inn data om bruker- og kontaktinteraksjoner og oppgi en adressebok for dataene"
},
"nplurals=2; plural=(n != 1);");
+7
View File
@@ -0,0 +1,7 @@
{ "translations": {
"Recently contacted" : "Nylig kontaktet",
"Contacts Interaction" : "Interaksjon med kontakter",
"Manages interaction between users and contacts" : "Administrerer interaksjon mellom brukere og kontakter",
"Collect data about user and contacts interactions and provide an address book for the data" : "Samle inn data om bruker- og kontaktinteraksjoner og oppgi en adressebok for dataene"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+3 -3
View File
@@ -8,7 +8,7 @@ OC.L10N.register(
"Edit widgets" : "Edita els ginys",
"Get more widgets from the App Store" : "Aconseguiu més widgets de la botiga d'aplicacions",
"Weather service" : "Servei meteorològic",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Per a la seva privacitat, les dades meteorològiques les sol·licita el seu servidor Nextcloud en el seu lloc perquè el servei meteorològic no rebi cap informació personal.",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Per a la seva privadesa, les dades meteorològiques les sol·licita el seu servidor Nextcloud en el seu lloc perquè el servei meteorològic no rebi cap informació personal.",
"Weather data from Met.no" : "Dades meteorològiques de Met.no",
"geocoding with Nominatim" : "codis geogràfics amb Nominatim",
"elevation data from OpenTopoData" : "dades d'altitud d'OpenTopoData",
@@ -16,7 +16,7 @@ OC.L10N.register(
"Status" : "Estat",
"Good morning" : "Bon dia",
"Good morning, {name}" : "Bon dia, {name}",
"Good afternoon" : "Salutació",
"Good afternoon" : "Bona tarda",
"Good afternoon, {name}" : "Bona tarda, {name}",
"Good evening" : "Bona tarda",
"Good evening, {name}" : "Bona nit, {name}",
@@ -25,7 +25,7 @@ OC.L10N.register(
"Show something" : "Mostra alguna cosa",
"Change background image" : "Canvia la imatge de fons",
"Pick from Files" : "Trieu dels fitxers",
"Default images" : "Imatges predeterminades",
"Default images" : "Imatges per defecte",
"Plain background" : "Fons senzill",
"Insert from {productName}" : "Insereix des de {productName}"
},
+3 -3
View File
@@ -6,7 +6,7 @@
"Edit widgets" : "Edita els ginys",
"Get more widgets from the App Store" : "Aconseguiu més widgets de la botiga d'aplicacions",
"Weather service" : "Servei meteorològic",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Per a la seva privacitat, les dades meteorològiques les sol·licita el seu servidor Nextcloud en el seu lloc perquè el servei meteorològic no rebi cap informació personal.",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Per a la seva privadesa, les dades meteorològiques les sol·licita el seu servidor Nextcloud en el seu lloc perquè el servei meteorològic no rebi cap informació personal.",
"Weather data from Met.no" : "Dades meteorològiques de Met.no",
"geocoding with Nominatim" : "codis geogràfics amb Nominatim",
"elevation data from OpenTopoData" : "dades d'altitud d'OpenTopoData",
@@ -14,7 +14,7 @@
"Status" : "Estat",
"Good morning" : "Bon dia",
"Good morning, {name}" : "Bon dia, {name}",
"Good afternoon" : "Salutació",
"Good afternoon" : "Bona tarda",
"Good afternoon, {name}" : "Bona tarda, {name}",
"Good evening" : "Bona tarda",
"Good evening, {name}" : "Bona nit, {name}",
@@ -23,7 +23,7 @@
"Show something" : "Mostra alguna cosa",
"Change background image" : "Canvia la imatge de fons",
"Pick from Files" : "Trieu dels fitxers",
"Default images" : "Imatges predeterminades",
"Default images" : "Imatges per defecte",
"Plain background" : "Fons senzill",
"Insert from {productName}" : "Insereix des de {productName}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
+32
View File
@@ -0,0 +1,32 @@
OC.L10N.register(
"dashboard",
{
"Dashboard" : "Dashboard",
"Dashboard app" : "Dashboard app",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking.",
"Customize" : "Customise",
"Edit widgets" : "Edit widgets",
"Get more widgets from the App Store" : "Get more widgets from the App Store",
"Weather service" : "Weather service",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.",
"Weather data from Met.no" : "Weather data from Met.no",
"geocoding with Nominatim" : "geocoding with Nominatim",
"elevation data from OpenTopoData" : "elevation data from OpenTopoData",
"Weather" : "Weather",
"Status" : "Status",
"Good morning" : "Good morning",
"Good morning, {name}" : "Good morning, {name}",
"Good afternoon" : "Good afternoon",
"Good afternoon, {name}" : "Good afternoon, {name}",
"Good evening" : "Good evening",
"Good evening, {name}" : "Good evening, {name}",
"Hello" : "Hello",
"Hello, {name}" : "Hello, {name}",
"Show something" : "Show something",
"Change background image" : "Change background image",
"Pick from Files" : "Pick from Files",
"Default images" : "Default images",
"Plain background" : "Plain background",
"Insert from {productName}" : "Insert from {productName}"
},
"nplurals=2; plural=(n != 1);");
+30
View File
@@ -0,0 +1,30 @@
{ "translations": {
"Dashboard" : "Dashboard",
"Dashboard app" : "Dashboard app",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking.",
"Customize" : "Customise",
"Edit widgets" : "Edit widgets",
"Get more widgets from the App Store" : "Get more widgets from the App Store",
"Weather service" : "Weather service",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information.",
"Weather data from Met.no" : "Weather data from Met.no",
"geocoding with Nominatim" : "geocoding with Nominatim",
"elevation data from OpenTopoData" : "elevation data from OpenTopoData",
"Weather" : "Weather",
"Status" : "Status",
"Good morning" : "Good morning",
"Good morning, {name}" : "Good morning, {name}",
"Good afternoon" : "Good afternoon",
"Good afternoon, {name}" : "Good afternoon, {name}",
"Good evening" : "Good evening",
"Good evening, {name}" : "Good evening, {name}",
"Hello" : "Hello",
"Hello, {name}" : "Hello, {name}",
"Show something" : "Show something",
"Change background image" : "Change background image",
"Pick from Files" : "Pick from Files",
"Default images" : "Default images",
"Plain background" : "Plain background",
"Insert from {productName}" : "Insert from {productName}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -1
View File
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Dashboard" : "Tableau de bord",
"Dashboard app" : "App Tableau de bord",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Commencez votre journée en étant informé\n\nLe tableau de bord Nextcloud est votre point de départ de la journée, vous donnant un\naperçu de vos rendez-vous à venir, des e-mails urgents, des messages de tchat,\ndes tickets entrants, des derniers tweets et bien plus encore ! Les utilisateurs peuvent ajouter les widgets\nqu'ils souhaitent et modifier l'arrière-plan à leur guise.",
"Customize" : "Personnaliser",
"Edit widgets" : "Modifier les widgets",
"Get more widgets from the App Store" : "Obtenez plus de widgets depuis la Boutique d'applications",
@@ -24,7 +25,7 @@ OC.L10N.register(
"Show something" : "Afficher quelque chose",
"Change background image" : "Changer limage d'arrière-plan",
"Pick from Files" : "Mes images",
"Default images" : "Images par défaut",
"Default images" : "Image par défaut",
"Plain background" : "Arrière-plan uni",
"Insert from {productName}" : "Sélectionnez une image de {productName}"
},
+2 -1
View File
@@ -1,6 +1,7 @@
{ "translations": {
"Dashboard" : "Tableau de bord",
"Dashboard app" : "App Tableau de bord",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Commencez votre journée en étant informé\n\nLe tableau de bord Nextcloud est votre point de départ de la journée, vous donnant un\naperçu de vos rendez-vous à venir, des e-mails urgents, des messages de tchat,\ndes tickets entrants, des derniers tweets et bien plus encore ! Les utilisateurs peuvent ajouter les widgets\nqu'ils souhaitent et modifier l'arrière-plan à leur guise.",
"Customize" : "Personnaliser",
"Edit widgets" : "Modifier les widgets",
"Get more widgets from the App Store" : "Obtenez plus de widgets depuis la Boutique d'applications",
@@ -22,7 +23,7 @@
"Show something" : "Afficher quelque chose",
"Change background image" : "Changer limage d'arrière-plan",
"Pick from Files" : "Mes images",
"Default images" : "Images par défaut",
"Default images" : "Image par défaut",
"Plain background" : "Arrière-plan uni",
"Insert from {productName}" : "Sélectionnez une image de {productName}"
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
+1 -1
View File
@@ -27,6 +27,6 @@ OC.L10N.register(
"Pick from Files" : "Választás a fájlok közül",
"Default images" : "Alapértelmezett képek",
"Plain background" : "Egyszerű háttér",
"Insert from {productName}" : "Beillesztés innen: {productName}-"
"Insert from {productName}" : "Beillesztés innen: {productName}"
},
"nplurals=2; plural=(n != 1);");
+1 -1
View File
@@ -25,6 +25,6 @@
"Pick from Files" : "Választás a fájlok közül",
"Default images" : "Alapértelmezett képek",
"Plain background" : "Egyszerű háttér",
"Insert from {productName}" : "Beillesztés innen: {productName}-"
"Insert from {productName}" : "Beillesztés innen: {productName}"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+1
View File
@@ -3,6 +3,7 @@ OC.L10N.register(
{
"Dashboard" : "Dasbor",
"Dashboard app" : "Aplikasi dasbor",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Mulai harimu sama berita\n\nDasbor Nextcloud memberi kamu ikhtisar janji temumu yang akan datang, email mendesak, pesan obrolan, tiket masuk, tweet terbaru, dan lebih banyak! Pengguna bisa tambahkan widget-widget yang mereka suka dan berubah mereka dapat mengubah latar belakang sesuai keinginan mereka.",
"Customize" : "Sesuaikan",
"Edit widgets" : "Edit widget",
"Get more widgets from the App Store" : "Dapatkan lebih banyak widget dari App Store",
+1
View File
@@ -1,6 +1,7 @@
{ "translations": {
"Dashboard" : "Dasbor",
"Dashboard app" : "Aplikasi dasbor",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Mulai harimu sama berita\n\nDasbor Nextcloud memberi kamu ikhtisar janji temumu yang akan datang, email mendesak, pesan obrolan, tiket masuk, tweet terbaru, dan lebih banyak! Pengguna bisa tambahkan widget-widget yang mereka suka dan berubah mereka dapat mengubah latar belakang sesuai keinginan mereka.",
"Customize" : "Sesuaikan",
"Edit widgets" : "Edit widget",
"Get more widgets from the App Store" : "Dapatkan lebih banyak widget dari App Store",
+11 -2
View File
@@ -2,11 +2,16 @@ OC.L10N.register(
"dashboard",
{
"Dashboard" : "Майстерня",
"Dashboard app" : "Застосунок з панеллю віджетів ",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Почніть свій день інформовано \nІнформаційна панель Nextcloud — це ваша початкова точка дня, яка дає вам змогу огляд ваших майбутніх зустрічей, термінових електронних листів, повідомлень чату, вхідні квитки, останні твіти та багато іншого! Користувачі можуть додавати віджети вони люблять і змінюють фон на свій смак.",
"Customize" : "Редагувати",
"Edit widgets" : "Редагувати віджети",
"Get more widgets from the App Store" : "Більше віджетів у магазині додатків",
"Get more widgets from the App Store" : "Більше віджетів у каталозі застосунків",
"Weather service" : "Погода",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Для забезпечення вашої конфіденційності дані про погоду запитуються вашим сервером Nextcloud від вашого імені, тому служба погоди не отримує особисту інформацію.",
"Weather data from Met.no" : "Дані про погоду з Met.no",
"geocoding with Nominatim" : "геокодування за допомогою Nominatim",
"elevation data from OpenTopoData" : "дані про висоту з OpenTopoData",
"Weather" : "Погода",
"Status" : "Статус",
"Good morning" : "Доброго ранку",
@@ -18,6 +23,10 @@ OC.L10N.register(
"Hello" : "Привіт",
"Hello, {name}" : "Привіт, {name}",
"Show something" : "Показати щось",
"Change background image" : "Змінити фонову світлину"
"Change background image" : "Змінити фонову світлину",
"Pick from Files" : "Виберіть із файлів",
"Default images" : "Типові зображення",
"Plain background" : "Рівний фон",
"Insert from {productName}" : "Вставка з {productName}"
},
"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);");
+11 -2
View File
@@ -1,10 +1,15 @@
{ "translations": {
"Dashboard" : "Майстерня",
"Dashboard app" : "Застосунок з панеллю віджетів ",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Почніть свій день інформовано \nІнформаційна панель Nextcloud — це ваша початкова точка дня, яка дає вам змогу огляд ваших майбутніх зустрічей, термінових електронних листів, повідомлень чату, вхідні квитки, останні твіти та багато іншого! Користувачі можуть додавати віджети вони люблять і змінюють фон на свій смак.",
"Customize" : "Редагувати",
"Edit widgets" : "Редагувати віджети",
"Get more widgets from the App Store" : "Більше віджетів у магазині додатків",
"Get more widgets from the App Store" : "Більше віджетів у каталозі застосунків",
"Weather service" : "Погода",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Для забезпечення вашої конфіденційності дані про погоду запитуються вашим сервером Nextcloud від вашого імені, тому служба погоди не отримує особисту інформацію.",
"Weather data from Met.no" : "Дані про погоду з Met.no",
"geocoding with Nominatim" : "геокодування за допомогою Nominatim",
"elevation data from OpenTopoData" : "дані про висоту з OpenTopoData",
"Weather" : "Погода",
"Status" : "Статус",
"Good morning" : "Доброго ранку",
@@ -16,6 +21,10 @@
"Hello" : "Привіт",
"Hello, {name}" : "Привіт, {name}",
"Show something" : "Показати щось",
"Change background image" : "Змінити фонову світлину"
"Change background image" : "Змінити фонову світлину",
"Pick from Files" : "Виберіть із файлів",
"Default images" : "Типові зображення",
"Plain background" : "Рівний фон",
"Insert from {productName}" : "Вставка з {productName}"
},"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"
}
+2 -51
View File
@@ -88,7 +88,7 @@
</template>
<script>
import { generateUrl, imagePath } from '@nextcloud/router'
import { generateUrl } from '@nextcloud/router'
import { getCurrentUser } from '@nextcloud/auth'
import { loadState } from '@nextcloud/initial-state'
import axios from '@nextcloud/axios'
@@ -99,16 +99,10 @@ import Pencil from 'vue-material-design-icons/Pencil.vue'
import Vue from 'vue'
import isMobile from './mixins/isMobile.js'
import { getBackgroundUrl } from './helpers/getBackgroundUrl.js'
const panels = loadState('dashboard', 'panels')
const firstRun = loadState('dashboard', 'firstRun')
const background = loadState('theming', 'background')
const backgroundVersion = loadState('theming', 'backgroundVersion')
const themingDefaultBackground = loadState('theming', 'themingDefaultBackground')
const shippedBackgroundList = loadState('theming', 'shippedBackgrounds')
const statusInfo = {
weather: {
text: t('dashboard', 'Weather'),
@@ -150,24 +144,9 @@ export default {
modal: false,
appStoreUrl: generateUrl('/settings/apps/dashboard'),
statuses: {},
background,
themingDefaultBackground,
}
},
computed: {
backgroundImage() {
return getBackgroundUrl(this.background, backgroundVersion, this.themingDefaultBackground)
},
backgroundStyle() {
if ((this.background === 'default' && this.themingDefaultBackground === 'backgroundColor')
|| this.background.match(/#[0-9A-Fa-f]{6}/g)) {
return null
}
return {
backgroundImage: this.background === 'default' ? 'var(--image-main-background)' : `url('${this.backgroundImage}')`,
}
},
greeting() {
const time = this.timer.getHours()
@@ -255,7 +234,6 @@ export default {
},
mounted() {
this.updateGlobalStyles()
this.updateSkipLink()
window.addEventListener('scroll', this.handleScroll)
@@ -272,32 +250,6 @@ export default {
},
methods: {
updateGlobalStyles() {
// Override primary-invert-if-bright and color-primary-text if background is set
const isBackgroundBright = shippedBackgroundList[this.background]?.theming === 'dark'
if (isBackgroundBright) {
document.querySelector('#header').style.setProperty('--primary-invert-if-bright', 'invert(100%)')
document.querySelector('#header').style.setProperty('--color-primary-text', '#000000')
// document.body.removeAttribute('data-theme-dark')
// document.body.setAttribute('data-theme-light', 'true')
} else {
document.querySelector('#header').style.setProperty('--primary-invert-if-bright', 'no')
document.querySelector('#header').style.setProperty('--color-primary-text', '#ffffff')
// document.body.removeAttribute('data-theme-light')
// document.body.setAttribute('data-theme-dark', 'true')
}
const themeElements = [document.documentElement, document.querySelector('#header'), document.querySelector('body')]
for (const element of themeElements) {
if (this.background === 'default') {
element.style.setProperty('--image-main-background', `url('${imagePath('core', 'app-background.jpg')}')`)
} else if (this.background.match(/#[0-9A-Fa-f]{6}/g)) {
element.style.setProperty('--image-main-background', undefined)
} else {
element.style.setProperty('--image-main-background', this.backgroundStyle.backgroundImage)
}
}
},
/**
* Method to register panels that will be called by the integrating apps
*
@@ -441,7 +393,7 @@ export default {
.panels {
width: auto;
margin: auto;
max-width: 1500px;
max-width: 1800px;
display: flex;
justify-content: center;
flex-direction: row;
@@ -686,6 +638,5 @@ html, body {
#content {
overflow: auto;
position: static !important;;
}
</style>
@@ -1,49 +0,0 @@
/**
* @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>
*
* @author Avior <florian.bouillon@delta-wings.net>
* @author Julien Veyssier <eneiluj@posteo.net>
* @author Julius Härtl <jus@bitgrid.net>
*
* @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/>.
*
*/
import { generateUrl } from '@nextcloud/router'
import { prefixWithBaseUrl } from './prefixWithBaseUrl.js'
export const getBackgroundUrl = (background, time = 0, themingDefaultBackground = '') => {
const enabledThemes = window.OCA?.Theming?.enabledThemes || []
const isDarkTheme = (enabledThemes.length === 0 || enabledThemes[0] === 'default')
? window.matchMedia('(prefers-color-scheme: dark)').matches
: enabledThemes.join('').indexOf('dark') !== -1
if (background === 'default') {
if (themingDefaultBackground && themingDefaultBackground !== 'backgroundColor') {
return generateUrl('/apps/theming/image/background') + '?v=' + window.OCA.Theming.cacheBuster
}
if (isDarkTheme) {
return prefixWithBaseUrl('eduardo-neves-pedra-azul.jpg')
}
return prefixWithBaseUrl('kamil-porembinski-clouds.jpg')
} else if (background === 'custom') {
return generateUrl('/apps/theming/background') + '?v=' + time
}
return prefixWithBaseUrl(background)
}
+83 -3
View File
@@ -2,6 +2,7 @@ OC.L10N.register(
"dav",
{
"Calendar" : "Calendari",
"To-dos" : "Tasques pendents",
"Personal" : "Personal",
"{actor} created calendar {calendar}" : "{actor} ha creat el calendari {calendar}",
"You created calendar {calendar}" : "Heu creat el calendari {calendar}",
@@ -9,6 +10,8 @@ OC.L10N.register(
"You deleted calendar {calendar}" : "Heu suprimit el calendari {calendar}",
"{actor} updated calendar {calendar}" : "{actor} ha actualitzat el calendari {calendar}",
"You updated calendar {calendar}" : "Heu actualitzat el calendari {calendar}",
"{actor} restored calendar {calendar}" : "{actor} ha restaurat el calendari {calendar}",
"You restored calendar {calendar}" : "Heu restaurat el calendari {calendar}",
"You shared calendar {calendar} as public link" : "Heu compartit el calendari {calendar} amb un enllaç públic",
"You removed public link for calendar {calendar}" : "Heu eliminat l'enllaç públic del calendari {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} ha compartit el calendari {calendar} amb vós",
@@ -29,9 +32,27 @@ OC.L10N.register(
"You deleted event {event} from calendar {calendar}" : "Heu suprimit l'esdeveniment {event} del calendari {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} esdeveniment actualitzat {esdeveniment} al calendari {calendar}",
"You updated event {event} in calendar {calendar}" : "Heu actualitzat l'esdeveniment {event} al calendari {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} ha mogut l'esdeveniment {event} del calendari {sourceCalendar} al calendari {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Heu mogut l'esdeveniment {event} del calendari {sourceCalendar} al calendari {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} esdeveniment restaurat {event} del calendari {calendar}",
"You restored event {event} of calendar {calendar}" : "Heu restaurat l'esdeveniment {event} del calendari {calendar}",
"Busy" : "Ocupat",
"{actor} created to-do {todo} in list {calendar}" : "{actor} ha creat la tasca pendent {todo} a la llista {calendar}",
"You created to-do {todo} in list {calendar}" : "Heu creat la tasca pendent {todo} a la llista {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} ha suprimit tasques pendents {todo} de la llista {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Heu suprimit la tasca pendent {todo} de la llista {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} ha actualitzat tasques pendents {todo} a la llista {calendar}",
"You updated to-do {todo} in list {calendar}" : "Heu actualitzat la tasca pendent {todo} a la llista {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} ha resolt la tasca pendent {todo} a la llista {calendar}",
"You solved to-do {todo} in list {calendar}" : "Heu resolt la tasca pendent {todo} a la llista {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} va reobrir tasques pendents {todo} a la llista {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Heu reobert les tasques pendents {todo} a la llista {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} ha mogut la tasca pendent {todo} de la llista {sourceCalendar} a la llista {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Heu mogut la tasca pendent {todo} de la llista {sourceCalendar} a la llista {targetCalendar}",
"Calendar, contacts and tasks" : "Calendari, contactes i tasques",
"A <strong>calendar</strong> was modified" : "El <strong>calendari</strong> has estat modificat",
"A calendar <strong>event</strong> was modified" : "S'ha modificat un <strong> esdeveniment </strong> del calendari",
"A calendar <strong>to-do</strong> was modified" : "S'ha modificat una <strong>tasca pendent</strong> del calendari",
"Contact birthdays" : "Aniversaris dels contactes",
"Death of %s" : "Mort de %s",
"Calendar:" : "Calendari:",
@@ -50,8 +71,11 @@ OC.L10N.register(
"Description: %s" : "Descripció: %s",
"Where: %s" : "On: %s",
"%1$s via %2$s" : "%1$s mitjançant %2$s",
"Cancelled: %1$s" : "Cancel·lat: %1$s",
"Invitation canceled" : "Invitació cancel·lada",
"Re: %1$s" : "Re: %1$s",
"Invitation updated" : "Invitació actualitzada",
"Invitation: %1$s" : "Invitació: %1$s",
"Invitation" : "Invitació",
"Title:" : "Títol:",
"Time:" : "Hora:",
@@ -60,10 +84,52 @@ OC.L10N.register(
"Organizer:" : "Organitzador:",
"Attendees:" : "Assistents:",
"Accept" : "Accepta",
"Decline" : "Rebutja",
"Decline" : "Declina",
"More options …" : "Més opcions …",
"More options at %s" : "Més opcions a %s",
"Contacts" : "Contactes",
"{actor} created address book {addressbook}" : "{actor} ha creat la llibreta d'adreces {addressbook}",
"You created address book {addressbook}" : "Heu creat la llibreta d'adreces {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} llibreta d'adreces suprimida {addressbook}",
"You deleted address book {addressbook}" : "Heu suprimit la llibreta d'adreces {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} llibreta d'adreces actualitzada {addressbook}",
"You updated address book {addressbook}" : "Heu actualitzat la llibreta d'adreces {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb vostè",
"You shared address book {addressbook} with {user}" : "Heu compartit la llibreta d'adreces {addressbook} amb {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} amb vostè",
"You unshared address book {addressbook} from {user}" : "Heu deixat de compartir la llibreta d'adreces {addressbook} de {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} de {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} d'ells mateixos",
"You shared address book {addressbook} with group {group}" : "Heu compartit la llibreta d'adreces {addressbook} amb el grup {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb el grup {group}",
"You unshared address book {addressbook} from group {group}" : "Heu deixat de compartir la llibreta d'adreces {addressbook} del grup {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} del grup {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} ha creat el contacte {card} a la llibreta d'adreces {addressbook}",
"You created contact {card} in address book {addressbook}" : "Heu creat el contacte {card} a la llibreta d'adreces {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} ha suprimit el contacte {card} de la llibreta d'adreces {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "Heu suprimit el contacte {card} de la llibreta d'adreces {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} ha actualitzat el contacte {card} a la llibreta d'adreces {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Heu actualitzat el contacte {card} a la llibreta d'adreces {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "S'ha modificat un <strong>contacte</strong> o una <strong>llibreta d'adreces</strong>",
"File is not updatable: %1$s" : "El fitxer no es pot actualitzar: %1$s",
"Could not write to final file, canceled by hook" : "No s'ha pogut escriure al fitxer final, cancel·lat per ganxo",
"Could not write file contents" : "No s'ha pogut escriure el contingut del fitxer",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error en copiar el fitxer a la ubicació de destí (copiat: %1$s, mida esperada del fitxer: %2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "S'esperava una mida de fitxer de %1$s però llegit (des del client Nextcloud) i escrit (a l'emmagatzematge de Nextcloud) %2$s. Pot ser un problema de xarxa al costat d'enviament o un problema d'escriptura a l'emmagatzematge del costat del servidor.",
"Could not rename part file to final file, canceled by hook" : "No s'ha pogut canviar el nom del fitxer de la part al fitxer final, cancel·lat per ganxo",
"Could not rename part file to final file" : "No s'ha pogut canviar el nom del fitxer de part al fitxer final",
"Failed to check file size: %1$s" : "No s'ha pogut comprovar la mida del fitxer: %1$s",
"Could not open file" : "No sha pogut obrir el fitxer",
"Encryption not ready: %1$s" : "El xifratge no està preparat: %1$s",
"Failed to open file: %1$s" : "No s'ha pogut obrir el fitxer: %1$s",
"Failed to unlink: %1$s" : "No s'ha pogut desenllaçar: %1$s",
"Invalid chunk name" : "Nom del fragment no vàlid",
"Could not rename part file assembled from chunks" : "No s'ha pogut canviar el nom del fitxer de peces muntat a partir de fragments",
"Failed to write file contents: %1$s" : "No s'ha pogut escriure el contingut del fitxer: %1$s",
"File not found: %1$s" : "No s'ha trobat el fitxer: %1$s",
"System is in maintenance mode." : "Sistema en mode de manteniment.",
"Upgrade needed" : "Fa falta l'actualització",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "El vostre %s cal configurar-se per utilitzar HTTPS per poder fer servir CalDAV i CardDAV amb iOS/macOS.",
"Configures a CalDAV account" : "Configura un compte CalDAV",
@@ -74,11 +140,18 @@ OC.L10N.register(
"Completed on %s" : "Completat a %s",
"Due on %s by %s" : "Venciment a %s per %s",
"Due on %s" : "Venç en %s",
"Migrated calendar (%1$s)" : "Calendari migrat (%1$s)",
"Calendars including events, details and attendees" : "Calendaris que inclouen esdeveniments, detalls i assistents",
"Contacts and groups" : "Contactes i grups",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Punt final de WebDAV",
"Availability" : "Disponibilitat",
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Si configureu el vostre horari laboral, els altres usuaris veuran quan sou fora de l'oficina quan reserven una reunió.",
"Time zone:" : "Zona horària:",
"to" : "a",
"Delete slot" : "Suprimeix unitat temporal",
"Delete slot" : "Suprimeix forat",
"No working hours set" : "Sense horari de treball establert",
"Add slot" : "Afegeix una forat",
"Monday" : "Dilluns",
"Tuesday" : "Dimarts",
"Wednesday" : "Dimecres",
@@ -86,14 +159,20 @@ OC.L10N.register(
"Friday" : "Divendres",
"Saturday" : "Dissabte",
"Sunday" : "Diumenge",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Estableix automàticament l'estat de l'usuari a \"No molestar\" fora de la disponibilitat per silenciar totes les notificacions.",
"Save" : "Desa",
"Failed to load availability" : "No s'ha pogut carregar la disponibilitat",
"Saved availability" : "Disponibilitat guardada",
"Failed to save availability" : "No s'ha pogut desar la disponibilitat",
"Calendar server" : "Servidor de calendari",
"Send invitations to attendees" : "Envia invitacions als assistents",
"Automatically generate a birthday calendar" : "Genera automàticament un calendari daniversari",
"Birthday calendars will be generated by a background job." : "Els calendaris d'aniversari es generaran per un procés en segon pla..",
"Hence they will not be available immediately after enabling but will show up after some time." : "Per tant, no estaran disponibles immediatament després d'habilitar-los, però apareixeran d'aquí una estona.",
"Send notifications for events" : "Envia notificacions per als esdeveniments",
"Notifications are sent via background jobs, so these must occur often enough." : "Les notificacions s'envien per tasques funcionant en segon pla, així que això ha de succeir bastant sovint.",
"Notifications are sent via background jobs, so these must occur often enough." : "Les notificacions s'envien per feines en segon pla, així que això ha de succeir bastant sovint.",
"Send reminder notifications to calendar sharees as well" : "També envieu notificacions de recordatoris als recursos compartits del calendari",
"Reminders are always sent to organizers and attendees." : "Sempre s'envien recordatoris als organitzadors i als assistents.",
"Enable notifications for events via push" : "Habiliteu les notificacions per a esdeveniments mitjançant lempenyiment",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instal·leu també {calendarappstoreopen}laplicació de Calendari{linkclose} o {calendardocopen}connecteu el vostre escriptori i el mòbil per sincronitzar ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Si us plau, assegureu-vos de configurar correctament {emailopen}el servidor de correu electrònic{linkclose}.",
@@ -101,6 +180,7 @@ OC.L10N.register(
"Please contact the organizer directly." : "Si us plau contacteu amb l'organitzador directament.",
"Are you accepting the invitation?" : "Accepteu la invitació?",
"Tentative" : "Provisional",
"Number of guests" : "Nombre d'hostes",
"Comment" : "Comentari",
"Your attendance was updated successfully." : "La vostra assistència ha estat actualitzada correctament.",
"Todos" : "Tasques",
+83 -3
View File
@@ -1,5 +1,6 @@
{ "translations": {
"Calendar" : "Calendari",
"To-dos" : "Tasques pendents",
"Personal" : "Personal",
"{actor} created calendar {calendar}" : "{actor} ha creat el calendari {calendar}",
"You created calendar {calendar}" : "Heu creat el calendari {calendar}",
@@ -7,6 +8,8 @@
"You deleted calendar {calendar}" : "Heu suprimit el calendari {calendar}",
"{actor} updated calendar {calendar}" : "{actor} ha actualitzat el calendari {calendar}",
"You updated calendar {calendar}" : "Heu actualitzat el calendari {calendar}",
"{actor} restored calendar {calendar}" : "{actor} ha restaurat el calendari {calendar}",
"You restored calendar {calendar}" : "Heu restaurat el calendari {calendar}",
"You shared calendar {calendar} as public link" : "Heu compartit el calendari {calendar} amb un enllaç públic",
"You removed public link for calendar {calendar}" : "Heu eliminat l'enllaç públic del calendari {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} ha compartit el calendari {calendar} amb vós",
@@ -27,9 +30,27 @@
"You deleted event {event} from calendar {calendar}" : "Heu suprimit l'esdeveniment {event} del calendari {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} esdeveniment actualitzat {esdeveniment} al calendari {calendar}",
"You updated event {event} in calendar {calendar}" : "Heu actualitzat l'esdeveniment {event} al calendari {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} ha mogut l'esdeveniment {event} del calendari {sourceCalendar} al calendari {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Heu mogut l'esdeveniment {event} del calendari {sourceCalendar} al calendari {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} esdeveniment restaurat {event} del calendari {calendar}",
"You restored event {event} of calendar {calendar}" : "Heu restaurat l'esdeveniment {event} del calendari {calendar}",
"Busy" : "Ocupat",
"{actor} created to-do {todo} in list {calendar}" : "{actor} ha creat la tasca pendent {todo} a la llista {calendar}",
"You created to-do {todo} in list {calendar}" : "Heu creat la tasca pendent {todo} a la llista {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} ha suprimit tasques pendents {todo} de la llista {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Heu suprimit la tasca pendent {todo} de la llista {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} ha actualitzat tasques pendents {todo} a la llista {calendar}",
"You updated to-do {todo} in list {calendar}" : "Heu actualitzat la tasca pendent {todo} a la llista {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} ha resolt la tasca pendent {todo} a la llista {calendar}",
"You solved to-do {todo} in list {calendar}" : "Heu resolt la tasca pendent {todo} a la llista {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} va reobrir tasques pendents {todo} a la llista {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Heu reobert les tasques pendents {todo} a la llista {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} ha mogut la tasca pendent {todo} de la llista {sourceCalendar} a la llista {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Heu mogut la tasca pendent {todo} de la llista {sourceCalendar} a la llista {targetCalendar}",
"Calendar, contacts and tasks" : "Calendari, contactes i tasques",
"A <strong>calendar</strong> was modified" : "El <strong>calendari</strong> has estat modificat",
"A calendar <strong>event</strong> was modified" : "S'ha modificat un <strong> esdeveniment </strong> del calendari",
"A calendar <strong>to-do</strong> was modified" : "S'ha modificat una <strong>tasca pendent</strong> del calendari",
"Contact birthdays" : "Aniversaris dels contactes",
"Death of %s" : "Mort de %s",
"Calendar:" : "Calendari:",
@@ -48,8 +69,11 @@
"Description: %s" : "Descripció: %s",
"Where: %s" : "On: %s",
"%1$s via %2$s" : "%1$s mitjançant %2$s",
"Cancelled: %1$s" : "Cancel·lat: %1$s",
"Invitation canceled" : "Invitació cancel·lada",
"Re: %1$s" : "Re: %1$s",
"Invitation updated" : "Invitació actualitzada",
"Invitation: %1$s" : "Invitació: %1$s",
"Invitation" : "Invitació",
"Title:" : "Títol:",
"Time:" : "Hora:",
@@ -58,10 +82,52 @@
"Organizer:" : "Organitzador:",
"Attendees:" : "Assistents:",
"Accept" : "Accepta",
"Decline" : "Rebutja",
"Decline" : "Declina",
"More options …" : "Més opcions …",
"More options at %s" : "Més opcions a %s",
"Contacts" : "Contactes",
"{actor} created address book {addressbook}" : "{actor} ha creat la llibreta d'adreces {addressbook}",
"You created address book {addressbook}" : "Heu creat la llibreta d'adreces {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} llibreta d'adreces suprimida {addressbook}",
"You deleted address book {addressbook}" : "Heu suprimit la llibreta d'adreces {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} llibreta d'adreces actualitzada {addressbook}",
"You updated address book {addressbook}" : "Heu actualitzat la llibreta d'adreces {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb vostè",
"You shared address book {addressbook} with {user}" : "Heu compartit la llibreta d'adreces {addressbook} amb {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} amb vostè",
"You unshared address book {addressbook} from {user}" : "Heu deixat de compartir la llibreta d'adreces {addressbook} de {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} de {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} d'ells mateixos",
"You shared address book {addressbook} with group {group}" : "Heu compartit la llibreta d'adreces {addressbook} amb el grup {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} ha compartit la llibreta d'adreces {addressbook} amb el grup {group}",
"You unshared address book {addressbook} from group {group}" : "Heu deixat de compartir la llibreta d'adreces {addressbook} del grup {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} ha deixat de compartir la llibreta d'adreces {addressbook} del grup {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} ha creat el contacte {card} a la llibreta d'adreces {addressbook}",
"You created contact {card} in address book {addressbook}" : "Heu creat el contacte {card} a la llibreta d'adreces {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} ha suprimit el contacte {card} de la llibreta d'adreces {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "Heu suprimit el contacte {card} de la llibreta d'adreces {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} ha actualitzat el contacte {card} a la llibreta d'adreces {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Heu actualitzat el contacte {card} a la llibreta d'adreces {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "S'ha modificat un <strong>contacte</strong> o una <strong>llibreta d'adreces</strong>",
"File is not updatable: %1$s" : "El fitxer no es pot actualitzar: %1$s",
"Could not write to final file, canceled by hook" : "No s'ha pogut escriure al fitxer final, cancel·lat per ganxo",
"Could not write file contents" : "No s'ha pogut escriure el contingut del fitxer",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error en copiar el fitxer a la ubicació de destí (copiat: %1$s, mida esperada del fitxer: %2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "S'esperava una mida de fitxer de %1$s però llegit (des del client Nextcloud) i escrit (a l'emmagatzematge de Nextcloud) %2$s. Pot ser un problema de xarxa al costat d'enviament o un problema d'escriptura a l'emmagatzematge del costat del servidor.",
"Could not rename part file to final file, canceled by hook" : "No s'ha pogut canviar el nom del fitxer de la part al fitxer final, cancel·lat per ganxo",
"Could not rename part file to final file" : "No s'ha pogut canviar el nom del fitxer de part al fitxer final",
"Failed to check file size: %1$s" : "No s'ha pogut comprovar la mida del fitxer: %1$s",
"Could not open file" : "No sha pogut obrir el fitxer",
"Encryption not ready: %1$s" : "El xifratge no està preparat: %1$s",
"Failed to open file: %1$s" : "No s'ha pogut obrir el fitxer: %1$s",
"Failed to unlink: %1$s" : "No s'ha pogut desenllaçar: %1$s",
"Invalid chunk name" : "Nom del fragment no vàlid",
"Could not rename part file assembled from chunks" : "No s'ha pogut canviar el nom del fitxer de peces muntat a partir de fragments",
"Failed to write file contents: %1$s" : "No s'ha pogut escriure el contingut del fitxer: %1$s",
"File not found: %1$s" : "No s'ha trobat el fitxer: %1$s",
"System is in maintenance mode." : "Sistema en mode de manteniment.",
"Upgrade needed" : "Fa falta l'actualització",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "El vostre %s cal configurar-se per utilitzar HTTPS per poder fer servir CalDAV i CardDAV amb iOS/macOS.",
"Configures a CalDAV account" : "Configura un compte CalDAV",
@@ -72,11 +138,18 @@
"Completed on %s" : "Completat a %s",
"Due on %s by %s" : "Venciment a %s per %s",
"Due on %s" : "Venç en %s",
"Migrated calendar (%1$s)" : "Calendari migrat (%1$s)",
"Calendars including events, details and attendees" : "Calendaris que inclouen esdeveniments, detalls i assistents",
"Contacts and groups" : "Contactes i grups",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Punt final de WebDAV",
"Availability" : "Disponibilitat",
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Si configureu el vostre horari laboral, els altres usuaris veuran quan sou fora de l'oficina quan reserven una reunió.",
"Time zone:" : "Zona horària:",
"to" : "a",
"Delete slot" : "Suprimeix unitat temporal",
"Delete slot" : "Suprimeix forat",
"No working hours set" : "Sense horari de treball establert",
"Add slot" : "Afegeix una forat",
"Monday" : "Dilluns",
"Tuesday" : "Dimarts",
"Wednesday" : "Dimecres",
@@ -84,14 +157,20 @@
"Friday" : "Divendres",
"Saturday" : "Dissabte",
"Sunday" : "Diumenge",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Estableix automàticament l'estat de l'usuari a \"No molestar\" fora de la disponibilitat per silenciar totes les notificacions.",
"Save" : "Desa",
"Failed to load availability" : "No s'ha pogut carregar la disponibilitat",
"Saved availability" : "Disponibilitat guardada",
"Failed to save availability" : "No s'ha pogut desar la disponibilitat",
"Calendar server" : "Servidor de calendari",
"Send invitations to attendees" : "Envia invitacions als assistents",
"Automatically generate a birthday calendar" : "Genera automàticament un calendari daniversari",
"Birthday calendars will be generated by a background job." : "Els calendaris d'aniversari es generaran per un procés en segon pla..",
"Hence they will not be available immediately after enabling but will show up after some time." : "Per tant, no estaran disponibles immediatament després d'habilitar-los, però apareixeran d'aquí una estona.",
"Send notifications for events" : "Envia notificacions per als esdeveniments",
"Notifications are sent via background jobs, so these must occur often enough." : "Les notificacions s'envien per tasques funcionant en segon pla, així que això ha de succeir bastant sovint.",
"Notifications are sent via background jobs, so these must occur often enough." : "Les notificacions s'envien per feines en segon pla, així que això ha de succeir bastant sovint.",
"Send reminder notifications to calendar sharees as well" : "També envieu notificacions de recordatoris als recursos compartits del calendari",
"Reminders are always sent to organizers and attendees." : "Sempre s'envien recordatoris als organitzadors i als assistents.",
"Enable notifications for events via push" : "Habiliteu les notificacions per a esdeveniments mitjançant lempenyiment",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instal·leu també {calendarappstoreopen}laplicació de Calendari{linkclose} o {calendardocopen}connecteu el vostre escriptori i el mòbil per sincronitzar ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Si us plau, assegureu-vos de configurar correctament {emailopen}el servidor de correu electrònic{linkclose}.",
@@ -99,6 +178,7 @@
"Please contact the organizer directly." : "Si us plau contacteu amb l'organitzador directament.",
"Are you accepting the invitation?" : "Accepteu la invitació?",
"Tentative" : "Provisional",
"Number of guests" : "Nombre d'hostes",
"Comment" : "Comentari",
"Your attendance was updated successfully." : "La vostra assistència ha estat actualitzada correctament.",
"Todos" : "Tasques",
+1
View File
@@ -75,6 +75,7 @@ OC.L10N.register(
"Contacts and groups" : "Kontakter og grupper",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
"Availability" : "tilgængelighed",
"to" : "til",
"Delete slot" : "Slet slot",
"Monday" : "Mandag",
+1
View File
@@ -73,6 +73,7 @@
"Contacts and groups" : "Kontakter og grupper",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
"Availability" : "tilgængelighed",
"to" : "til",
"Delete slot" : "Slet slot",
"Monday" : "Mandag",
+1
View File
@@ -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" : "Γενέθλια επαφών",
+1
View File
@@ -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" : "Γενέθλια επαφών",
+156 -26
View File
@@ -2,7 +2,7 @@ OC.L10N.register(
"dav",
{
"Calendar" : "Calendar",
"Todos" : "Todos",
"To-dos" : "To-dos",
"Personal" : "Personal",
"{actor} created calendar {calendar}" : "{actor} created calendar {calendar}",
"You created calendar {calendar}" : "You created calendar {calendar}",
@@ -10,6 +10,8 @@ OC.L10N.register(
"You deleted calendar {calendar}" : "You deleted calendar {calendar}",
"{actor} updated calendar {calendar}" : "{actor} updated calendar {calendar}",
"You updated calendar {calendar}" : "You updated calendar {calendar}",
"{actor} restored calendar {calendar}" : "{actor} restored calendar {calendar}",
"You restored calendar {calendar}" : "You restored calendar {calendar}",
"You shared calendar {calendar} as public link" : "You shared calendar {calendar} as public link",
"You removed public link for calendar {calendar}" : "You removed public link for calendar {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} shared calendar {calendar} with you",
@@ -23,13 +25,165 @@ OC.L10N.register(
"{actor} shared calendar {calendar} with group {group}" : "{actor} shared calendar {calendar} with group {group}",
"You unshared calendar {calendar} from group {group}" : "You unshared calendar {calendar} from group {group}",
"{actor} unshared calendar {calendar} from group {group}" : "{actor} unshared calendar {calendar} from group {group}",
"Untitled event" : "Untitled event",
"{actor} created event {event} in calendar {calendar}" : "{actor} created event {event} in calendar {calendar}",
"You created event {event} in calendar {calendar}" : "You created event {event} in calendar {calendar}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} deleted event {event} from calendar {calendar}",
"You deleted event {event} from calendar {calendar}" : "You deleted event {event} from calendar {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} updated event {event} in calendar {calendar}",
"You updated event {event} in calendar {calendar}" : "You updated event {event} in calendar {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} restored event {event} of calendar {calendar}",
"You restored event {event} of calendar {calendar}" : "You restored event {event} of calendar {calendar}",
"Busy" : "Busy",
"{actor} created to-do {todo} in list {calendar}" : "{actor} created to-do {todo} in list {calendar}",
"You created to-do {todo} in list {calendar}" : "You created to-do {todo} in list {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} deleted to-do {todo} from list {calendar}",
"You deleted to-do {todo} from list {calendar}" : "You deleted to-do {todo} from list {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} updated to-do {todo} in list {calendar}",
"You updated to-do {todo} in list {calendar}" : "You updated to-do {todo} in list {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} solved to-do {todo} in list {calendar}",
"You solved to-do {todo} in list {calendar}" : "You solved to-do {todo} in list {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} reopened to-do {todo} in list {calendar}",
"You reopened to-do {todo} in list {calendar}" : "You reopened to-do {todo} in list {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}",
"Calendar, contacts and tasks" : "Calendar, contacts and tasks",
"A <strong>calendar</strong> was modified" : "A <strong>calendar</strong> was modified",
"A calendar <strong>event</strong> was modified" : "A calendar <strong>event</strong> was modified",
"A calendar <strong>to-do</strong> was modified" : "A calendar <strong>to-do</strong> was modified",
"Contact birthdays" : "Contact birthdays",
"Death of %s" : "Death of %s",
"Calendar:" : "Calendar:",
"Date:" : "Date:",
"Where:" : "Where:",
"Description:" : "Description:",
"_%n year_::_%n years_" : ["%n year","%n years"],
"_%n month_::_%n months_" : ["%n month","%n months"],
"_%n day_::_%n days_" : ["%n day","%n days"],
"_%n hour_::_%n hours_" : ["%n hour","%n hours"],
"_%n minute_::_%n minutes_" : ["%n minute","%n minutes"],
"%s (in %s)" : "%s (in %s)",
"%s (%s ago)" : "%s (%s ago)",
"Calendar: %s" : "Calendar: %s",
"Date: %s" : "Date: %s",
"Description: %s" : "Description: %s",
"Where: %s" : "Where: %s",
"%1$s via %2$s" : "%1$s via %2$s",
"Cancelled: %1$s" : "Cancelled: %1$s",
"Invitation canceled" : "Invitation canceled",
"Re: %1$s" : "Re: %1$s",
"Invitation updated" : "Invitation updated",
"Invitation: %1$s" : "Invitation: %1$s",
"Invitation" : "Invitation",
"Title:" : "Title:",
"Time:" : "Time:",
"Location:" : "Location:",
"Link:" : "Link:",
"Organizer:" : "Organizer:",
"Attendees:" : "Attendees:",
"Accept" : "Accept",
"Decline" : "Decline",
"More options …" : "More options …",
"More options at %s" : "More options at %s",
"Contacts" : "Contacts",
"{actor} created address book {addressbook}" : "{actor} created address book {addressbook}",
"You created address book {addressbook}" : "You created address book {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} deleted address book {addressbook}",
"You deleted address book {addressbook}" : "You deleted address book {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} updated address book {addressbook}",
"You updated address book {addressbook}" : "You updated address book {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} shared address book {addressbook} with you",
"You shared address book {addressbook} with {user}" : "You shared address book {addressbook} with {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} shared address book {addressbook} with {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} unshared address book {addressbook} from you",
"You unshared address book {addressbook} from {user}" : "You unshared address book {addressbook} from {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} unshared address book {addressbook} from {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} unshared address book {addressbook} from themselves",
"You shared address book {addressbook} with group {group}" : "You shared address book {addressbook} with group {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} shared address book {addressbook} with group {group}",
"You unshared address book {addressbook} from group {group}" : "You unshared address book {addressbook} from group {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} unshared address book {addressbook} from group {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} created contact {card} in address book {addressbook}",
"You created contact {card} in address book {addressbook}" : "You created contact {card} in address book {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} deleted contact {card} from address book {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "You deleted contact {card} from address book {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} updated contact {card} in address book {addressbook}",
"You updated contact {card} in address book {addressbook}" : "You updated contact {card} in address book {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "A <strong>contact</strong> or <strong>address book</strong> was modified",
"File is not updatable: %1$s" : "File is not updatable: %1$s",
"Could not write to final file, canceled by hook" : "Could not write to final file, canceled by hook",
"Could not write file contents" : "Could not write file contents",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side.",
"Could not rename part file to final file, canceled by hook" : "Could not rename part file to final file, canceled by hook",
"Could not rename part file to final file" : "Could not rename part file to final file",
"Failed to check file size: %1$s" : "Failed to check file size: %1$s",
"Could not open file" : "Could not open file",
"Encryption not ready: %1$s" : "Encryption not ready: %1$s",
"Failed to open file: %1$s" : "Failed to open file: %1$s",
"Failed to unlink: %1$s" : "Failed to unlink: %1$s",
"Invalid chunk name" : "Invalid chunk name",
"Could not rename part file assembled from chunks" : "Could not rename part file assembled from chunks",
"Failed to write file contents: %1$s" : "Failed to write file contents: %1$s",
"File not found: %1$s" : "File not found: %1$s",
"System is in maintenance mode." : "System is in maintenance mode.",
"Upgrade needed" : "Upgrade needed",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS.",
"Configures a CalDAV account" : "Configures a CalDAV account",
"Configures a CardDAV account" : "Configures a CardDAV account",
"Events" : "Events",
"Tasks" : "Tasks",
"Untitled task" : "Untitled task",
"Completed on %s" : "Completed on %s",
"Due on %s by %s" : "Due on %s by %s",
"Due on %s" : "Due on %s",
"Migrated calendar (%1$s)" : "Migrated calendar (%1$s)",
"Calendars including events, details and attendees" : "Calendars including events, details and attendees",
"Contacts and groups" : "Contacts and groups",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
"Availability" : "Availability",
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "If you configure your working hours, other users will see when you are out of office when they book a meeting.",
"Time zone:" : "Time zone:",
"to" : "to",
"Delete slot" : "Delete slot",
"No working hours set" : "No working hours set",
"Add slot" : "Add slot",
"Monday" : "Monday",
"Tuesday" : "Tuesday",
"Wednesday" : "Wednesday",
"Thursday" : "Thursday",
"Friday" : "Friday",
"Saturday" : "Saturday",
"Sunday" : "Sunday",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications.",
"Save" : "Save",
"Failed to load availability" : "Failed to load availability",
"Saved availability" : "Saved availability",
"Failed to save availability" : "Failed to save availability",
"Calendar server" : "Calendar server",
"Send invitations to attendees" : "Send invitations to attendees",
"Automatically generate a birthday calendar" : "Automatically generate a birthday calendar",
"Birthday calendars will be generated by a background job." : "Birthday calendars will be generated by a background job.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Hence they will not be available immediately after enabling but will show up after some time.",
"Send notifications for events" : "Send notifications for events",
"Notifications are sent via background jobs, so these must occur often enough." : "Notifications are sent via background jobs, so these must occur often enough.",
"Send reminder notifications to calendar sharees as well" : "Send reminder notifications to calendar sharees as well",
"Reminders are always sent to organizers and attendees." : "Reminders are always sent to organizers and attendees.",
"Enable notifications for events via push" : "Enable notifications for events via push",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Please make sure to properly set up {emailopen}the email server{linkclose}.",
"There was an error updating your attendance status." : "There was an error updating your attendance status.",
"Please contact the organizer directly." : "Please contact the organizer directly.",
"Are you accepting the invitation?" : "Are you accepting the invitation?",
"Tentative" : "Tentative",
"Number of guests" : "Number of guests",
"Comment" : "Comment",
"Your attendance was updated successfully." : "Your attendance was updated successfully.",
"Todos" : "Todos",
"{actor} created todo {todo} in list {calendar}" : "{actor} created todo {todo} in list {calendar}",
"You created todo {todo} in list {calendar}" : "You created todo {todo} in list {calendar}",
"{actor} deleted todo {todo} from list {calendar}" : "{actor} deleted todo {todo} from list {calendar}",
@@ -40,30 +194,6 @@ OC.L10N.register(
"You solved todo {todo} in list {calendar}" : "You solved todo {todo} in list {calendar}",
"{actor} reopened todo {todo} in list {calendar}" : "{actor} reopened todo {todo} in list {calendar}",
"You reopened todo {todo} in list {calendar}" : "You reopened todo {todo} in list {calendar}",
"A <strong>calendar</strong> was modified" : "A <strong>calendar</strong> was modified",
"A calendar <strong>event</strong> was modified" : "A calendar <strong>event</strong> was modified",
"A calendar <strong>todo</strong> was modified" : "A calendar <strong>todo</strong> was modified",
"Contact birthdays" : "Contact birthdays",
"Where:" : "Where:",
"Description:" : "Description:",
"%1$s via %2$s" : "%1$s via %2$s",
"Invitation canceled" : "Invitation canceled",
"Invitation updated" : "Invitation updated",
"Location:" : "Location:",
"Link:" : "Link:",
"Accept" : "Accept",
"Decline" : "Decline",
"Contacts" : "Contacts",
"Tasks" : "Tasks",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
"Tentative" : "Tentative",
"Save" : "Save",
"Send invitations to attendees" : "Send invitations to attendees",
"Automatically generate a birthday calendar" : "Automatically generate a birthday calendar",
"Birthday calendars will be generated by a background job." : "Birthday calendars will be generated by a background job.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Hence they will not be available immediately after enabling but will show up after some time.",
"Hello %s," : "Hello %s,",
"When:" : "When:"
"A calendar <strong>todo</strong> was modified" : "A calendar <strong>todo</strong> was modified"
},
"nplurals=2; plural=(n != 1);");
+156 -26
View File
@@ -1,6 +1,6 @@
{ "translations": {
"Calendar" : "Calendar",
"Todos" : "Todos",
"To-dos" : "To-dos",
"Personal" : "Personal",
"{actor} created calendar {calendar}" : "{actor} created calendar {calendar}",
"You created calendar {calendar}" : "You created calendar {calendar}",
@@ -8,6 +8,8 @@
"You deleted calendar {calendar}" : "You deleted calendar {calendar}",
"{actor} updated calendar {calendar}" : "{actor} updated calendar {calendar}",
"You updated calendar {calendar}" : "You updated calendar {calendar}",
"{actor} restored calendar {calendar}" : "{actor} restored calendar {calendar}",
"You restored calendar {calendar}" : "You restored calendar {calendar}",
"You shared calendar {calendar} as public link" : "You shared calendar {calendar} as public link",
"You removed public link for calendar {calendar}" : "You removed public link for calendar {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} shared calendar {calendar} with you",
@@ -21,13 +23,165 @@
"{actor} shared calendar {calendar} with group {group}" : "{actor} shared calendar {calendar} with group {group}",
"You unshared calendar {calendar} from group {group}" : "You unshared calendar {calendar} from group {group}",
"{actor} unshared calendar {calendar} from group {group}" : "{actor} unshared calendar {calendar} from group {group}",
"Untitled event" : "Untitled event",
"{actor} created event {event} in calendar {calendar}" : "{actor} created event {event} in calendar {calendar}",
"You created event {event} in calendar {calendar}" : "You created event {event} in calendar {calendar}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} deleted event {event} from calendar {calendar}",
"You deleted event {event} from calendar {calendar}" : "You deleted event {event} from calendar {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} updated event {event} in calendar {calendar}",
"You updated event {event} in calendar {calendar}" : "You updated event {event} in calendar {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} restored event {event} of calendar {calendar}",
"You restored event {event} of calendar {calendar}" : "You restored event {event} of calendar {calendar}",
"Busy" : "Busy",
"{actor} created to-do {todo} in list {calendar}" : "{actor} created to-do {todo} in list {calendar}",
"You created to-do {todo} in list {calendar}" : "You created to-do {todo} in list {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} deleted to-do {todo} from list {calendar}",
"You deleted to-do {todo} from list {calendar}" : "You deleted to-do {todo} from list {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} updated to-do {todo} in list {calendar}",
"You updated to-do {todo} in list {calendar}" : "You updated to-do {todo} in list {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} solved to-do {todo} in list {calendar}",
"You solved to-do {todo} in list {calendar}" : "You solved to-do {todo} in list {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} reopened to-do {todo} in list {calendar}",
"You reopened to-do {todo} in list {calendar}" : "You reopened to-do {todo} in list {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}",
"Calendar, contacts and tasks" : "Calendar, contacts and tasks",
"A <strong>calendar</strong> was modified" : "A <strong>calendar</strong> was modified",
"A calendar <strong>event</strong> was modified" : "A calendar <strong>event</strong> was modified",
"A calendar <strong>to-do</strong> was modified" : "A calendar <strong>to-do</strong> was modified",
"Contact birthdays" : "Contact birthdays",
"Death of %s" : "Death of %s",
"Calendar:" : "Calendar:",
"Date:" : "Date:",
"Where:" : "Where:",
"Description:" : "Description:",
"_%n year_::_%n years_" : ["%n year","%n years"],
"_%n month_::_%n months_" : ["%n month","%n months"],
"_%n day_::_%n days_" : ["%n day","%n days"],
"_%n hour_::_%n hours_" : ["%n hour","%n hours"],
"_%n minute_::_%n minutes_" : ["%n minute","%n minutes"],
"%s (in %s)" : "%s (in %s)",
"%s (%s ago)" : "%s (%s ago)",
"Calendar: %s" : "Calendar: %s",
"Date: %s" : "Date: %s",
"Description: %s" : "Description: %s",
"Where: %s" : "Where: %s",
"%1$s via %2$s" : "%1$s via %2$s",
"Cancelled: %1$s" : "Cancelled: %1$s",
"Invitation canceled" : "Invitation canceled",
"Re: %1$s" : "Re: %1$s",
"Invitation updated" : "Invitation updated",
"Invitation: %1$s" : "Invitation: %1$s",
"Invitation" : "Invitation",
"Title:" : "Title:",
"Time:" : "Time:",
"Location:" : "Location:",
"Link:" : "Link:",
"Organizer:" : "Organizer:",
"Attendees:" : "Attendees:",
"Accept" : "Accept",
"Decline" : "Decline",
"More options …" : "More options …",
"More options at %s" : "More options at %s",
"Contacts" : "Contacts",
"{actor} created address book {addressbook}" : "{actor} created address book {addressbook}",
"You created address book {addressbook}" : "You created address book {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} deleted address book {addressbook}",
"You deleted address book {addressbook}" : "You deleted address book {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} updated address book {addressbook}",
"You updated address book {addressbook}" : "You updated address book {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} shared address book {addressbook} with you",
"You shared address book {addressbook} with {user}" : "You shared address book {addressbook} with {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} shared address book {addressbook} with {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} unshared address book {addressbook} from you",
"You unshared address book {addressbook} from {user}" : "You unshared address book {addressbook} from {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} unshared address book {addressbook} from {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} unshared address book {addressbook} from themselves",
"You shared address book {addressbook} with group {group}" : "You shared address book {addressbook} with group {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} shared address book {addressbook} with group {group}",
"You unshared address book {addressbook} from group {group}" : "You unshared address book {addressbook} from group {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} unshared address book {addressbook} from group {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} created contact {card} in address book {addressbook}",
"You created contact {card} in address book {addressbook}" : "You created contact {card} in address book {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} deleted contact {card} from address book {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "You deleted contact {card} from address book {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} updated contact {card} in address book {addressbook}",
"You updated contact {card} in address book {addressbook}" : "You updated contact {card} in address book {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "A <strong>contact</strong> or <strong>address book</strong> was modified",
"File is not updatable: %1$s" : "File is not updatable: %1$s",
"Could not write to final file, canceled by hook" : "Could not write to final file, canceled by hook",
"Could not write file contents" : "Could not write file contents",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Error while copying file to target location (copied: %1$s, expected filesize: %2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side.",
"Could not rename part file to final file, canceled by hook" : "Could not rename part file to final file, canceled by hook",
"Could not rename part file to final file" : "Could not rename part file to final file",
"Failed to check file size: %1$s" : "Failed to check file size: %1$s",
"Could not open file" : "Could not open file",
"Encryption not ready: %1$s" : "Encryption not ready: %1$s",
"Failed to open file: %1$s" : "Failed to open file: %1$s",
"Failed to unlink: %1$s" : "Failed to unlink: %1$s",
"Invalid chunk name" : "Invalid chunk name",
"Could not rename part file assembled from chunks" : "Could not rename part file assembled from chunks",
"Failed to write file contents: %1$s" : "Failed to write file contents: %1$s",
"File not found: %1$s" : "File not found: %1$s",
"System is in maintenance mode." : "System is in maintenance mode.",
"Upgrade needed" : "Upgrade needed",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS.",
"Configures a CalDAV account" : "Configures a CalDAV account",
"Configures a CardDAV account" : "Configures a CardDAV account",
"Events" : "Events",
"Tasks" : "Tasks",
"Untitled task" : "Untitled task",
"Completed on %s" : "Completed on %s",
"Due on %s by %s" : "Due on %s by %s",
"Due on %s" : "Due on %s",
"Migrated calendar (%1$s)" : "Migrated calendar (%1$s)",
"Calendars including events, details and attendees" : "Calendars including events, details and attendees",
"Contacts and groups" : "Contacts and groups",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
"Availability" : "Availability",
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "If you configure your working hours, other users will see when you are out of office when they book a meeting.",
"Time zone:" : "Time zone:",
"to" : "to",
"Delete slot" : "Delete slot",
"No working hours set" : "No working hours set",
"Add slot" : "Add slot",
"Monday" : "Monday",
"Tuesday" : "Tuesday",
"Wednesday" : "Wednesday",
"Thursday" : "Thursday",
"Friday" : "Friday",
"Saturday" : "Saturday",
"Sunday" : "Sunday",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications.",
"Save" : "Save",
"Failed to load availability" : "Failed to load availability",
"Saved availability" : "Saved availability",
"Failed to save availability" : "Failed to save availability",
"Calendar server" : "Calendar server",
"Send invitations to attendees" : "Send invitations to attendees",
"Automatically generate a birthday calendar" : "Automatically generate a birthday calendar",
"Birthday calendars will be generated by a background job." : "Birthday calendars will be generated by a background job.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Hence they will not be available immediately after enabling but will show up after some time.",
"Send notifications for events" : "Send notifications for events",
"Notifications are sent via background jobs, so these must occur often enough." : "Notifications are sent via background jobs, so these must occur often enough.",
"Send reminder notifications to calendar sharees as well" : "Send reminder notifications to calendar sharees as well",
"Reminders are always sent to organizers and attendees." : "Reminders are always sent to organizers and attendees.",
"Enable notifications for events via push" : "Enable notifications for events via push",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Please make sure to properly set up {emailopen}the email server{linkclose}.",
"There was an error updating your attendance status." : "There was an error updating your attendance status.",
"Please contact the organizer directly." : "Please contact the organizer directly.",
"Are you accepting the invitation?" : "Are you accepting the invitation?",
"Tentative" : "Tentative",
"Number of guests" : "Number of guests",
"Comment" : "Comment",
"Your attendance was updated successfully." : "Your attendance was updated successfully.",
"Todos" : "Todos",
"{actor} created todo {todo} in list {calendar}" : "{actor} created todo {todo} in list {calendar}",
"You created todo {todo} in list {calendar}" : "You created todo {todo} in list {calendar}",
"{actor} deleted todo {todo} from list {calendar}" : "{actor} deleted todo {todo} from list {calendar}",
@@ -38,30 +192,6 @@
"You solved todo {todo} in list {calendar}" : "You solved todo {todo} in list {calendar}",
"{actor} reopened todo {todo} in list {calendar}" : "{actor} reopened todo {todo} in list {calendar}",
"You reopened todo {todo} in list {calendar}" : "You reopened todo {todo} in list {calendar}",
"A <strong>calendar</strong> was modified" : "A <strong>calendar</strong> was modified",
"A calendar <strong>event</strong> was modified" : "A calendar <strong>event</strong> was modified",
"A calendar <strong>todo</strong> was modified" : "A calendar <strong>todo</strong> was modified",
"Contact birthdays" : "Contact birthdays",
"Where:" : "Where:",
"Description:" : "Description:",
"%1$s via %2$s" : "%1$s via %2$s",
"Invitation canceled" : "Invitation canceled",
"Invitation updated" : "Invitation updated",
"Location:" : "Location:",
"Link:" : "Link:",
"Accept" : "Accept",
"Decline" : "Decline",
"Contacts" : "Contacts",
"Tasks" : "Tasks",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV endpoint",
"Tentative" : "Tentative",
"Save" : "Save",
"Send invitations to attendees" : "Send invitations to attendees",
"Automatically generate a birthday calendar" : "Automatically generate a birthday calendar",
"Birthday calendars will be generated by a background job." : "Birthday calendars will be generated by a background job.",
"Hence they will not be available immediately after enabling but will show up after some time." : "Hence they will not be available immediately after enabling but will show up after some time.",
"Hello %s," : "Hello %s,",
"When:" : "When:"
"A calendar <strong>todo</strong> was modified" : "A calendar <strong>todo</strong> was modified"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+7
View File
@@ -31,6 +31,7 @@ OC.L10N.register(
"You deleted event {event} from calendar {calendar}" : "Poistit tapahtuman {event} kalenterista {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} päivitti tapahtuman {event} kalenteriin {calendar}",
"You updated event {event} in calendar {calendar}" : "Päivitit tapahtuman {event} kalenteriin {calendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Siirsit tapahtuman {event} kalenterista {sourceCalendar} kalenteriin {targetCalendar}",
"Busy" : "Varattu",
"Calendar, contacts and tasks" : "Kalenteri, yhteystiedot ja tehtävät",
"A <strong>calendar</strong> was modified" : "<strong>Kalenteria</strong> on muokattu",
@@ -77,8 +78,13 @@ OC.L10N.register(
"{actor} shared address book {addressbook} with you" : "{actor} jakoi osoitekirjan {addressbook} kanssasi",
"You shared address book {addressbook} with {user}" : "Jaoit osoitekirjan {addressbook} käyttäjän {user} kanssa",
"{actor} shared address book {addressbook} with {user}" : "{actor} jakoi osoitekirjan {addressbook} käyttäjän {user} kanssa",
"{actor} unshared address book {addressbook} from you" : "{actor} lopetti osoitekirjan {addressbook} jakamisen kanssasi",
"You unshared address book {addressbook} from {user}" : "Lopetit osoitekirjan {addressbook} jakamisen käyttäjän {user} kanssa",
"{actor} unshared address book {addressbook} from {user}" : "{actor} lopetti osoitekirjan {addressbook} jakamisen käyttäjän {user} kanssa",
"You shared address book {addressbook} with group {group}" : "Jaoit osoitekirjan {addressbook} ryhmän {group} kanssa",
"{actor} shared address book {addressbook} with group {group}" : "{actor} jakoi osoitekirjan {addressbook} ryhmän {group} kanssa",
"You unshared address book {addressbook} from group {group}" : "Lopetit osoitekirjan {addressbook} jakamisen ryhmän {group} kanssa",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} lopetti osoitekirjan {addressbook} jakamisen ryhmän {group} kanssa",
"{actor} created contact {card} in address book {addressbook}" : "{actor} loi yhteystiedon {card} osoitekirjaan {addressbook}",
"You created contact {card} in address book {addressbook}" : "Loit yhteystiedon {card} osoitekirjaan {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} poisti yhteystiedon {card} osoitekirjasta {addressbook}",
@@ -88,6 +94,7 @@ OC.L10N.register(
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Yhteystietoa</strong> tai <strong>osoitekirjaa</strong> muokattiin",
"File is not updatable: %1$s" : "Tiedosto ei ole päivitettävissä: %1$s",
"_%n byte_::_%n bytes_" : ["%n tavu","%n tavua"],
"Failed to check file size: %1$s" : "Tiedoston koon tarkistaminen epäonnistui: %1$s",
"Could not open file" : "Tiedoston avaaminen ei onnistunut",
"Encryption not ready: %1$s" : "Salaus ei ole valmis: %1$s",
"Failed to open file: %1$s" : "Tiedoston avaaminen epäonnistui: %1$s",
+7
View File
@@ -29,6 +29,7 @@
"You deleted event {event} from calendar {calendar}" : "Poistit tapahtuman {event} kalenterista {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} päivitti tapahtuman {event} kalenteriin {calendar}",
"You updated event {event} in calendar {calendar}" : "Päivitit tapahtuman {event} kalenteriin {calendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Siirsit tapahtuman {event} kalenterista {sourceCalendar} kalenteriin {targetCalendar}",
"Busy" : "Varattu",
"Calendar, contacts and tasks" : "Kalenteri, yhteystiedot ja tehtävät",
"A <strong>calendar</strong> was modified" : "<strong>Kalenteria</strong> on muokattu",
@@ -75,8 +76,13 @@
"{actor} shared address book {addressbook} with you" : "{actor} jakoi osoitekirjan {addressbook} kanssasi",
"You shared address book {addressbook} with {user}" : "Jaoit osoitekirjan {addressbook} käyttäjän {user} kanssa",
"{actor} shared address book {addressbook} with {user}" : "{actor} jakoi osoitekirjan {addressbook} käyttäjän {user} kanssa",
"{actor} unshared address book {addressbook} from you" : "{actor} lopetti osoitekirjan {addressbook} jakamisen kanssasi",
"You unshared address book {addressbook} from {user}" : "Lopetit osoitekirjan {addressbook} jakamisen käyttäjän {user} kanssa",
"{actor} unshared address book {addressbook} from {user}" : "{actor} lopetti osoitekirjan {addressbook} jakamisen käyttäjän {user} kanssa",
"You shared address book {addressbook} with group {group}" : "Jaoit osoitekirjan {addressbook} ryhmän {group} kanssa",
"{actor} shared address book {addressbook} with group {group}" : "{actor} jakoi osoitekirjan {addressbook} ryhmän {group} kanssa",
"You unshared address book {addressbook} from group {group}" : "Lopetit osoitekirjan {addressbook} jakamisen ryhmän {group} kanssa",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} lopetti osoitekirjan {addressbook} jakamisen ryhmän {group} kanssa",
"{actor} created contact {card} in address book {addressbook}" : "{actor} loi yhteystiedon {card} osoitekirjaan {addressbook}",
"You created contact {card} in address book {addressbook}" : "Loit yhteystiedon {card} osoitekirjaan {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} poisti yhteystiedon {card} osoitekirjasta {addressbook}",
@@ -86,6 +92,7 @@
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Yhteystietoa</strong> tai <strong>osoitekirjaa</strong> muokattiin",
"File is not updatable: %1$s" : "Tiedosto ei ole päivitettävissä: %1$s",
"_%n byte_::_%n bytes_" : ["%n tavu","%n tavua"],
"Failed to check file size: %1$s" : "Tiedoston koon tarkistaminen epäonnistui: %1$s",
"Could not open file" : "Tiedoston avaaminen ei onnistunut",
"Encryption not ready: %1$s" : "Salaus ei ole valmis: %1$s",
"Failed to open file: %1$s" : "Tiedoston avaaminen epäonnistui: %1$s",
+21 -1
View File
@@ -2,6 +2,7 @@ OC.L10N.register(
"dav",
{
"Calendar" : "Agenda",
"To-dos" : "Pense-bêtes",
"Personal" : "Personnel",
"{actor} created calendar {calendar}" : "{actor} a créé l'agenda {calendar}",
"You created calendar {calendar}" : "Vous avez créé l'agenda {calendar}",
@@ -31,12 +32,27 @@ OC.L10N.register(
"You deleted event {event} from calendar {calendar}" : "Vous avez supprimé l'évènement {event} de l'agenda {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} a mis à jour l'évènement {event} dans l'agenda {calendar}",
"You updated event {event} in calendar {calendar}" : "Vous avez mis à jour l'évènement {event} dans l'agenda {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} a déplacé l'événement {event} du calendrier {sourceCalendar} au calendrier {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Vous avez déplacé l'événement {event} du calendrier {sourceCalendar} au calendrier {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} a restauré l'événement {event} dans l'agenda {calendar}",
"You restored event {event} of calendar {calendar}" : "Vous avez restauré l'événement {event} dans l'agenda {calendar}",
"Busy" : "Occupé",
"{actor} created to-do {todo} in list {calendar}" : "{actor} a créé le pense-bête {todo} dans la liste {calendar}",
"You created to-do {todo} in list {calendar}" : "Vous avez créé un pense-bête {todo} dans la liste {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} a supprimé un pense-bête {todo} de la liste {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Vous avez supprimé le pense-bête {todo} de la liste {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} a mis à jour le pense-bête {todo} dans la liste {calendar}",
"You updated to-do {todo} in list {calendar}" : "Vous avez mis à jour le pense-bête {todo} dans la liste {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} a résolu le pense-bête {todo} dans la liste {calendar}",
"You solved to-do {todo} in list {calendar}" : "Vous avez résolu le pense-bête {todo} dans la liste {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} a réouvert le pense-bête {todo} dans la liste {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Vous avez réouvert le pense-bête {todo} dans la liste {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} a déplacé le pense-bête {todo} de la liste {sourceCalendar} à la liste {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Vous avez déplacé le pense-bête {todo} de la liste {sourceCalendar} à la liste {targetCalendar}",
"Calendar, contacts and tasks" : "Agenda, contacts et tâches",
"A <strong>calendar</strong> was modified" : "Un <strong>agenda</strong> a été modifié",
"A calendar <strong>event</strong> was modified" : "Un <strong>événement</strong> de l'agenda a été modifié",
"A calendar <strong>to-do</strong> was modified" : "Un calendrier <strong>de tâches</strong> a été modifié",
"Contact birthdays" : "Anniversaires des contacts",
"Death of %s" : "Mort de %s",
"Calendar:" : "Agenda:",
@@ -143,7 +159,11 @@ OC.L10N.register(
"Friday" : "Vendredi",
"Saturday" : "Samedi",
"Sunday" : "Dimanche",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Définir automatiquement le statut \"Ne pas déranger\" en dehors des heures de disponibilité pour désactiver toutes les notifications.",
"Save" : "Enregistrer",
"Failed to load availability" : "Impossible de charger la disponibilité",
"Saved availability" : "Disponibilité sauvegardée",
"Failed to save availability" : "Impossible de sauvegarder la disponibilité",
"Calendar server" : "Serveur de calendrier",
"Send invitations to attendees" : "Envoyer des invitations aux participants",
"Automatically generate a birthday calendar" : "Générer automatiquement un agenda d'anniversaire",
@@ -155,7 +175,7 @@ OC.L10N.register(
"Reminders are always sent to organizers and attendees." : "Des rappels sont toujours envoyés aux organisateurs et aux participants.",
"Enable notifications for events via push" : "Activer les notifications push pour les évènements",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installer aussi {calendarappstoreopen}l'application Calendrier{linkclose}, ou {calendardocopen}connecter à votre PC & téléphone pour synchroniser ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Merci de vérifier d'avoir correctement configuré {emailopen}le serveur de courriel{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Merci de vérifier d'avoir correctement configuré {emailopen}le serveur de messagerie{linkclose}.",
"There was an error updating your attendance status." : "Une erreur s'est produite lors de la mise à jour de votre statut de présence.",
"Please contact the organizer directly." : "Merci de contacter l'organisateur directement.",
"Are you accepting the invitation?" : "Acceptez-vous l'invitation ?",
+21 -1
View File
@@ -1,5 +1,6 @@
{ "translations": {
"Calendar" : "Agenda",
"To-dos" : "Pense-bêtes",
"Personal" : "Personnel",
"{actor} created calendar {calendar}" : "{actor} a créé l'agenda {calendar}",
"You created calendar {calendar}" : "Vous avez créé l'agenda {calendar}",
@@ -29,12 +30,27 @@
"You deleted event {event} from calendar {calendar}" : "Vous avez supprimé l'évènement {event} de l'agenda {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} a mis à jour l'évènement {event} dans l'agenda {calendar}",
"You updated event {event} in calendar {calendar}" : "Vous avez mis à jour l'évènement {event} dans l'agenda {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} a déplacé l'événement {event} du calendrier {sourceCalendar} au calendrier {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Vous avez déplacé l'événement {event} du calendrier {sourceCalendar} au calendrier {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} a restauré l'événement {event} dans l'agenda {calendar}",
"You restored event {event} of calendar {calendar}" : "Vous avez restauré l'événement {event} dans l'agenda {calendar}",
"Busy" : "Occupé",
"{actor} created to-do {todo} in list {calendar}" : "{actor} a créé le pense-bête {todo} dans la liste {calendar}",
"You created to-do {todo} in list {calendar}" : "Vous avez créé un pense-bête {todo} dans la liste {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} a supprimé un pense-bête {todo} de la liste {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Vous avez supprimé le pense-bête {todo} de la liste {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} a mis à jour le pense-bête {todo} dans la liste {calendar}",
"You updated to-do {todo} in list {calendar}" : "Vous avez mis à jour le pense-bête {todo} dans la liste {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} a résolu le pense-bête {todo} dans la liste {calendar}",
"You solved to-do {todo} in list {calendar}" : "Vous avez résolu le pense-bête {todo} dans la liste {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} a réouvert le pense-bête {todo} dans la liste {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Vous avez réouvert le pense-bête {todo} dans la liste {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} a déplacé le pense-bête {todo} de la liste {sourceCalendar} à la liste {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Vous avez déplacé le pense-bête {todo} de la liste {sourceCalendar} à la liste {targetCalendar}",
"Calendar, contacts and tasks" : "Agenda, contacts et tâches",
"A <strong>calendar</strong> was modified" : "Un <strong>agenda</strong> a été modifié",
"A calendar <strong>event</strong> was modified" : "Un <strong>événement</strong> de l'agenda a été modifié",
"A calendar <strong>to-do</strong> was modified" : "Un calendrier <strong>de tâches</strong> a été modifié",
"Contact birthdays" : "Anniversaires des contacts",
"Death of %s" : "Mort de %s",
"Calendar:" : "Agenda:",
@@ -141,7 +157,11 @@
"Friday" : "Vendredi",
"Saturday" : "Samedi",
"Sunday" : "Dimanche",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Définir automatiquement le statut \"Ne pas déranger\" en dehors des heures de disponibilité pour désactiver toutes les notifications.",
"Save" : "Enregistrer",
"Failed to load availability" : "Impossible de charger la disponibilité",
"Saved availability" : "Disponibilité sauvegardée",
"Failed to save availability" : "Impossible de sauvegarder la disponibilité",
"Calendar server" : "Serveur de calendrier",
"Send invitations to attendees" : "Envoyer des invitations aux participants",
"Automatically generate a birthday calendar" : "Générer automatiquement un agenda d'anniversaire",
@@ -153,7 +173,7 @@
"Reminders are always sent to organizers and attendees." : "Des rappels sont toujours envoyés aux organisateurs et aux participants.",
"Enable notifications for events via push" : "Activer les notifications push pour les évènements",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installer aussi {calendarappstoreopen}l'application Calendrier{linkclose}, ou {calendardocopen}connecter à votre PC & téléphone pour synchroniser ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Merci de vérifier d'avoir correctement configuré {emailopen}le serveur de courriel{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Merci de vérifier d'avoir correctement configuré {emailopen}le serveur de messagerie{linkclose}.",
"There was an error updating your attendance status." : "Une erreur s'est produite lors de la mise à jour de votre statut de présence.",
"Please contact the organizer directly." : "Merci de contacter l'organisateur directement.",
"Are you accepting the invitation?" : "Acceptez-vous l'invitation ?",
+1
View File
@@ -77,6 +77,7 @@ OC.L10N.register(
"Contacts and groups" : "Contactos e grupos",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Terminación WebDAV",
"Availability" : "Dispoñibilidade",
"to" : "para",
"Monday" : "luns",
"Tuesday" : "martes",
+1
View File
@@ -75,6 +75,7 @@
"Contacts and groups" : "Contactos e grupos",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Terminación WebDAV",
"Availability" : "Dispoñibilidade",
"to" : "para",
"Monday" : "luns",
"Tuesday" : "martes",
+1
View File
@@ -2,6 +2,7 @@ OC.L10N.register(
"dav",
{
"Calendar" : "カレンダー",
"To-dos" : "To-dos",
"Personal" : "個人",
"{actor} created calendar {calendar}" : "{actor}はカレンダー {calendar} を作成しました",
"You created calendar {calendar}" : "カレンダー {calendar} を作成しました",
+1
View File
@@ -1,5 +1,6 @@
{ "translations": {
"Calendar" : "カレンダー",
"To-dos" : "To-dos",
"Personal" : "個人",
"{actor} created calendar {calendar}" : "{actor}はカレンダー {calendar} を作成しました",
"You created calendar {calendar}" : "カレンダー {calendar} を作成しました",
+3
View File
@@ -100,8 +100,11 @@ OC.L10N.register(
"You unshared address book {addressbook} from {user}" : "Не го споделиувате адресар {addressbook} со {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} не го споделува адресар {addressbook} со {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} не го споделува адресар {addressbook} со себе",
"You shared address book {addressbook} with group {group}" : "Споделивте адресар {addressbook} со група {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} сподели адресар {addressbook} со група {group}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Контракт</strong> или <strong>адресар</strong> е променет",
"_%n byte_::_%n bytes_" : ["%n бајт","%n бајти"],
"Could not open file" : "Неможе да се отвори датотеката",
"File not found: %1$s" : "Датотеката не е пронајдена: %1$s",
"System is in maintenance mode." : "Системот е во мод за одржување.",
"Upgrade needed" : "Потребна е надградба",
+3
View File
@@ -98,8 +98,11 @@
"You unshared address book {addressbook} from {user}" : "Не го споделиувате адресар {addressbook} со {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} не го споделува адресар {addressbook} со {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} не го споделува адресар {addressbook} со себе",
"You shared address book {addressbook} with group {group}" : "Споделивте адресар {addressbook} со група {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} сподели адресар {addressbook} со група {group}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Контракт</strong> или <strong>адресар</strong> е променет",
"_%n byte_::_%n bytes_" : ["%n бајт","%n бајти"],
"Could not open file" : "Неможе да се отвори датотеката",
"File not found: %1$s" : "Датотеката не е пронајдена: %1$s",
"System is in maintenance mode." : "Системот е во мод за одржување.",
"Upgrade needed" : "Потребна е надградба",
+17
View File
@@ -2,6 +2,7 @@ OC.L10N.register(
"dav",
{
"Calendar" : "Kalendár",
"To-dos" : "Úlohy",
"Personal" : "Osobné",
"{actor} created calendar {calendar}" : "[actor] vytvoril kalendár [calendar]",
"You created calendar {calendar}" : "Vytvorili ste kalendár {calendar}",
@@ -31,12 +32,27 @@ OC.L10N.register(
"You deleted event {event} from calendar {calendar}" : "Zmazali ste udalosť {event} z kalendára {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} aktualizoval udalosť {event} v kalendári {calendar}",
"You updated event {event} in calendar {calendar}" : "Aktualizovali ste udalosť {event} v kalendári {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} presunul udalosť {event} z kalendára {sourceCalendar} do kalendára {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Presunuli ste udalosť {event} z kalendára {sourceCalendar} do kalendára {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} obnovil udalosť {event} v kalendári {calendar}",
"You restored event {event} of calendar {calendar}" : "Obnovili ste udalosť {event} v kalendári {calendar}",
"Busy" : "Zaneprázdnený",
"{actor} created to-do {todo} in list {calendar}" : "{actor} vytvoril úlohu {todo} v zozname {calendar}",
"You created to-do {todo} in list {calendar}" : "Vytvorili ste úlohu {todo} v zozname {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} zmazal úlohu {todo} zo zoznamu {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Zmazali ste úlohu {todo} zo zoznamu {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} upravil úlohu {todo} v zozname {calendar}",
"You updated to-do {todo} in list {calendar}" : "Upravili ste úlohu {todo} v zozname {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} vyriešil úlohu {todo} v zozname {calendar}",
"You solved to-do {todo} in list {calendar}" : "Vyriešili ste úlohu {todo} v zozname {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} znovu otvoril úlohu {todo} v zozname {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Otvorili ste znovu úlohu {todo} v zozname {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} presunul udalosť {event} zo zoznamu {sourceCalendar} do zoznamu {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Presunuli ste udalosť {event} zo zoznamu {sourceCalendar} do zoznamu {targetCalendar}",
"Calendar, contacts and tasks" : "Kalendár, kontakty a úlohy",
"A <strong>calendar</strong> was modified" : "<strong>kalendár</strong> bol upravený",
"A calendar <strong>event</strong> was modified" : "<strong>Udalosť</strong> v kalendári bola upravená",
"A calendar <strong>to-do</strong> was modified" : "Kalendár <strong>úloh</strong> bol upravený",
"Contact birthdays" : "Narodeniny kontaktu",
"Death of %s" : "Dátum úmrtia %s",
"Calendar:" : "Kalendár:",
@@ -143,6 +159,7 @@ OC.L10N.register(
"Friday" : "Piatok",
"Saturday" : "Sobota",
"Sunday" : "Nedeľa",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automaticky nastaviť stav používateľa na „Nerušiť“ ak nie ste dostupný, pre stlmenie všetkých upozornení.",
"Save" : "Uložiť",
"Failed to load availability" : "Nepodarilo sa načítať dostupnosť",
"Saved availability" : "Dostupnosť bola uložená",
+17
View File
@@ -1,5 +1,6 @@
{ "translations": {
"Calendar" : "Kalendár",
"To-dos" : "Úlohy",
"Personal" : "Osobné",
"{actor} created calendar {calendar}" : "[actor] vytvoril kalendár [calendar]",
"You created calendar {calendar}" : "Vytvorili ste kalendár {calendar}",
@@ -29,12 +30,27 @@
"You deleted event {event} from calendar {calendar}" : "Zmazali ste udalosť {event} z kalendára {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} aktualizoval udalosť {event} v kalendári {calendar}",
"You updated event {event} in calendar {calendar}" : "Aktualizovali ste udalosť {event} v kalendári {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} presunul udalosť {event} z kalendára {sourceCalendar} do kalendára {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Presunuli ste udalosť {event} z kalendára {sourceCalendar} do kalendára {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} obnovil udalosť {event} v kalendári {calendar}",
"You restored event {event} of calendar {calendar}" : "Obnovili ste udalosť {event} v kalendári {calendar}",
"Busy" : "Zaneprázdnený",
"{actor} created to-do {todo} in list {calendar}" : "{actor} vytvoril úlohu {todo} v zozname {calendar}",
"You created to-do {todo} in list {calendar}" : "Vytvorili ste úlohu {todo} v zozname {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} zmazal úlohu {todo} zo zoznamu {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Zmazali ste úlohu {todo} zo zoznamu {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} upravil úlohu {todo} v zozname {calendar}",
"You updated to-do {todo} in list {calendar}" : "Upravili ste úlohu {todo} v zozname {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} vyriešil úlohu {todo} v zozname {calendar}",
"You solved to-do {todo} in list {calendar}" : "Vyriešili ste úlohu {todo} v zozname {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} znovu otvoril úlohu {todo} v zozname {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Otvorili ste znovu úlohu {todo} v zozname {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} presunul udalosť {event} zo zoznamu {sourceCalendar} do zoznamu {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Presunuli ste udalosť {event} zo zoznamu {sourceCalendar} do zoznamu {targetCalendar}",
"Calendar, contacts and tasks" : "Kalendár, kontakty a úlohy",
"A <strong>calendar</strong> was modified" : "<strong>kalendár</strong> bol upravený",
"A calendar <strong>event</strong> was modified" : "<strong>Udalosť</strong> v kalendári bola upravená",
"A calendar <strong>to-do</strong> was modified" : "Kalendár <strong>úloh</strong> bol upravený",
"Contact birthdays" : "Narodeniny kontaktu",
"Death of %s" : "Dátum úmrtia %s",
"Calendar:" : "Kalendár:",
@@ -141,6 +157,7 @@
"Friday" : "Piatok",
"Saturday" : "Sobota",
"Sunday" : "Nedeľa",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automaticky nastaviť stav používateľa na „Nerušiť“ ak nie ste dostupný, pre stlmenie všetkých upozornení.",
"Save" : "Uložiť",
"Failed to load availability" : "Nepodarilo sa načítať dostupnosť",
"Saved availability" : "Dostupnosť bola uložená",
+1
View File
@@ -114,6 +114,7 @@ OC.L10N.register(
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Om du konfigurerar dina arbetstimmar kan andra användare se när du inte är på jobbet när de bokar ett möte.",
"Time zone:" : "Tidszon:",
"to" : "till",
"Delete slot" : "Radera lucka",
"No working hours set" : "Inga arbetstimmar satta",
"Monday" : "Måndag",
"Tuesday" : "Tisdag",
+1
View File
@@ -112,6 +112,7 @@
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Om du konfigurerar dina arbetstimmar kan andra användare se när du inte är på jobbet när de bokar ett möte.",
"Time zone:" : "Tidszon:",
"to" : "till",
"Delete slot" : "Radera lucka",
"No working hours set" : "Inga arbetstimmar satta",
"Monday" : "Måndag",
"Tuesday" : "Tisdag",
+2 -2
View File
@@ -25,7 +25,7 @@ OC.L10N.register(
"{actor} shared calendar {calendar} with group {group}" : "{actor}, {calendar} takvimini {group} grubu ile paylaştı",
"You unshared calendar {calendar} from group {group}" : "{calendar} takviminin {group} grubu ile paylaşımını kaldırdınız",
"{actor} unshared calendar {calendar} from group {group}" : "{actor}, {calendar} takviminin {group} grubu ile paylaşımını kaldırdı",
"Untitled event" : "Adsız etkinlik",
"Untitled event" : "Adlandırılmamış etkinlik",
"{actor} created event {event} in calendar {calendar}" : "{actor}, {calendar} takvimine {event} etkinliğini ekledi",
"You created event {event} in calendar {calendar}" : "{calendar} takvimine {event} etkinliğini eklediniz",
"{actor} deleted event {event} from calendar {calendar}" : "{actor}, {calendar} takviminden {event} etkinliğini sildi",
@@ -136,7 +136,7 @@ OC.L10N.register(
"Configures a CardDAV account" : "Bir CardDAV hesabı yapılandırır",
"Events" : "Etkinlikler",
"Tasks" : "Görevler",
"Untitled task" : "Adsız görev",
"Untitled task" : "Adlandırılmamış görev",
"Completed on %s" : "%s tarihinde tamamlandı",
"Due on %s by %s" : "%s tarihine kadar %s tarafından",
"Due on %s" : "%s tarihine kadar",
+2 -2
View File
@@ -23,7 +23,7 @@
"{actor} shared calendar {calendar} with group {group}" : "{actor}, {calendar} takvimini {group} grubu ile paylaştı",
"You unshared calendar {calendar} from group {group}" : "{calendar} takviminin {group} grubu ile paylaşımını kaldırdınız",
"{actor} unshared calendar {calendar} from group {group}" : "{actor}, {calendar} takviminin {group} grubu ile paylaşımını kaldırdı",
"Untitled event" : "Adsız etkinlik",
"Untitled event" : "Adlandırılmamış etkinlik",
"{actor} created event {event} in calendar {calendar}" : "{actor}, {calendar} takvimine {event} etkinliğini ekledi",
"You created event {event} in calendar {calendar}" : "{calendar} takvimine {event} etkinliğini eklediniz",
"{actor} deleted event {event} from calendar {calendar}" : "{actor}, {calendar} takviminden {event} etkinliğini sildi",
@@ -134,7 +134,7 @@
"Configures a CardDAV account" : "Bir CardDAV hesabı yapılandırır",
"Events" : "Etkinlikler",
"Tasks" : "Görevler",
"Untitled task" : "Adsız görev",
"Untitled task" : "Adlandırılmamış görev",
"Completed on %s" : "%s tarihinde tamamlandı",
"Due on %s by %s" : "%s tarihine kadar %s tarafından",
"Due on %s" : "%s tarihine kadar",
+92 -1
View File
@@ -2,6 +2,7 @@ OC.L10N.register(
"dav",
{
"Calendar" : "Календар",
"To-dos" : "Справи",
"Personal" : "Особисте",
"{actor} created calendar {calendar}" : "{actor} створив календар {calendar}",
"You created calendar {calendar}" : "Ви створили календар {calendar}",
@@ -9,6 +10,8 @@ OC.L10N.register(
"You deleted calendar {calendar}" : "Ви вилучили календар {calendar}",
"{actor} updated calendar {calendar}" : "{actor} оновив календар {calendar}",
"You updated calendar {calendar}" : "Ви оновили календар {calendar}",
"{actor} restored calendar {calendar}" : "{actor} відновив календар {calendar}",
"You restored calendar {calendar}" : "Ви відновили календар {calendar}",
"You shared calendar {calendar} as public link" : "Ви поширили календар {calendar} як публічне посилання",
"You removed public link for calendar {calendar}" : "Ви вилучили публічне посилання на календар {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} поширив календар {calendar} з вами",
@@ -29,9 +32,27 @@ OC.L10N.register(
"You deleted event {event} from calendar {calendar}" : "Ви вилучили подію {event} з календаря {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} оновив подію {event} у календарі {calendar}",
"You updated event {event} in calendar {calendar}" : "Ви оновили подію {event} у календарі {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} перемістив подію {event} з календаря {sourceCalendar} до календаря {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Ви перемістили подію {event} з календаря {sourceCalendar} до календаря {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} відновив подію {event} календаря {calendar}",
"You restored event {event} of calendar {calendar}" : "Ви відновили подію {event} календаря {calendar}",
"Busy" : "Зайнято",
"{actor} created to-do {todo} in list {calendar}" : "{actor} створив завдання {todo} у списку {calendar}",
"You created to-do {todo} in list {calendar}" : "Ви створили завдання {todo} у списку {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} видалив справу {todo} зі списку {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Ви видалили завдання {todo} зі списку {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} оновив завдання {todo} у списку {calendar}",
"You updated to-do {todo} in list {calendar}" : "Ви оновили завдання {todo} у списку {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} вирішив завдання {todo} у списку {calendar}",
"You solved to-do {todo} in list {calendar}" : "Ви вирішили завдання {todo} у списку {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} знову відкрив справу {todo} у списку {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Ви знову відкрили справу {todo} у списку {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} перемістив завдання {todo} зі списку {sourceCalendar} до списку {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Ви перемістили завдання {todo} зі списку {sourceCalendar} до списку {targetCalendar}",
"Calendar, contacts and tasks" : "Календар, контакти та завдання",
"A <strong>calendar</strong> was modified" : "<strong>Календар</strong> був змінений",
"A calendar <strong>event</strong> was modified" : "Календарна <strong>подія</strong> була змінена",
"A calendar <strong>to-do</strong> was modified" : "<strong>Завдання</strong> в календарі змінено",
"Contact birthdays" : "Дні народження контактів",
"Death of %s" : "Смерть %s",
"Calendar:" : "Календар:",
@@ -50,24 +71,87 @@ OC.L10N.register(
"Description: %s" : "Опис: %s",
"Where: %s" : "Місце: %s",
"%1$s via %2$s" : "%1$s через %2$s",
"Cancelled: %1$s" : "Скасовано: %1$s",
"Invitation canceled" : "Запрошення скасоване",
"Re: %1$s" : "Re: %1$s",
"Invitation updated" : "Запрошення оновлене",
"Invitation: %1$s" : "Запрошення: %1$s",
"Invitation" : "Запрошення",
"Title:" : "Назва:",
"Time:" : "Час:",
"Location:" : "Місцевість:",
"Link:" : "Посилання:",
"Organizer:" : "Організатор:",
"Attendees:" : "Учасники:",
"Accept" : "Прийняти",
"Decline" : "Відхилити",
"More options …" : "Більше варіантів …",
"More options at %s" : "Більше варіантів на %s",
"Contacts" : "Контакти",
"{actor} created address book {addressbook}" : "{actor} створив адресну книгу {addressbook}",
"You created address book {addressbook}" : "Ви створили адресну книгу {addressbook}",
"{actor} deleted address book {addressbook}" : "адресна книга{actor} видалив адресну книгу {addressbook}",
"You deleted address book {addressbook}" : "Ви видалили адресну книгу {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} оновив адресну книгу {addressbook}",
"You updated address book {addressbook}" : "Ви оновили адресну книгу {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} поділився з вами адресною книгою {addressbook}",
"You shared address book {addressbook} with {user}" : "Ви надали доступ до адресної книги {addresbook} користувачу {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} поділився адресною книгою {addressbook} з {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} не надіслана адресна книга {addressbook} від вас",
"You unshared address book {addressbook} from {user}" : "Ви скасували спільний доступ до адресної книги {addresbook} від користувача {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} не має спільного доступу до адресної книги {addressbook} від {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} не поділився адресною книгою {addressbook} від себе",
"You shared address book {addressbook} with group {group}" : "Ви надали спільний доступ до адресної книги {addressbook} групі {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} поділився адресною книгою {addresbook} із групою {group}",
"You unshared address book {addressbook} from group {group}" : "Ви скасували спільний доступ до адресної книги {addressbook} із групи {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} не має спільного доступу до адресної книги {addresbook} із групи {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} створив контакт {card} в адресній книзі {addressbook}",
"You created contact {card} in address book {addressbook}" : "Ви створили контакт {card} в адресній книзі {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} видалив контакт {card} з адресної книги {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "Ви видалили контакт {card} з адресної книги {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} оновив контакт {card} в адресній книзі {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Ви оновили контакт {card} в адресній книзі {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Контактну</strong> або <strong>адресну книгу</strong> було змінено",
"File is not updatable: %1$s" : "Файл не оновлюється: %1$s",
"Could not write to final file, canceled by hook" : "Не вдалося записати в остаточний файл, скасовано перехопленням",
"Could not write file contents" : "Не вдалося записати вміст файлу",
"_%n byte_::_%n bytes_" : ["%n байт","%n байтів","%n байтів","%n байтів"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Помилка під час копіювання файлу в цільове розташування (скопійовано: %1$s, очікуваний розмір файлу: %2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Очікуваний розмір файлу %1$s, але читання (з клієнта Nextcloud) і запис (до сховища Nextcloud) %2$s. Це може бути проблема мережі на стороні надсилання або проблема запису в сховище на стороні сервера.",
"Could not rename part file to final file, canceled by hook" : "Не вдалося перейменувати файл частини на остаточний файл, скасовано підхопленням",
"Could not rename part file to final file" : "Не вдалося перейменувати файл частини на остаточний файл",
"Failed to check file size: %1$s" : "Не вдалося перевірити розмір файлу: %1$s",
"Could not open file" : "Не вдалося відкрити файл",
"Encryption not ready: %1$s" : "Шифрування не готове: %1$s",
"Failed to open file: %1$s" : "Не вдалося відкрити файл: %1$s",
"Failed to unlink: %1$s" : "Не вдалося від’єднати: %1$s",
"Invalid chunk name" : "Недійсна назва блоку",
"Could not rename part file assembled from chunks" : "Не вдалося перейменувати файл частини, зібраний із фрагментів",
"Failed to write file contents: %1$s" : "Не вдалося записати вміст файлу: %1$s",
"File not found: %1$s" : "Файл не знайдено: %1$s",
"System is in maintenance mode." : "Система в режимі обслуговування.",
"Upgrade needed" : "Потрібно оновитися",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Ваш %s мусить бути налаштований на використання HTTPS для надання доступу до CalDAV і CardDAV з iOS/macOS.",
"Configures a CalDAV account" : "Налаштовує обліковий запис CalDAV",
"Configures a CardDAV account" : "Налаштовує обліковий запис CardDAV",
"Events" : "Події",
"Tasks" : "Завдання",
"Untitled task" : "Завдання без назви",
"Completed on %s" : "Завершено %s",
"Due on %s by %s" : "Термін погашення %s до %s",
"Due on %s" : "Термін погашення %s",
"Migrated calendar (%1$s)" : "Перенесений календар (%1$s)",
"Calendars including events, details and attendees" : "Календарі, включаючи події, деталі та відвідувачів",
"Contacts and groups" : "Контакти та групи",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Точка доступу WebDAV",
"Availability" : "Доступність",
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Якщо ви налаштуєте свій робочий час, інші користувачі побачать, коли вас немає на місці, коли вони бронюють зустріч.",
"Time zone:" : "Часовий пояс:",
"to" : "до",
"Delete slot" : "Видалити слот",
"No working hours set" : "Робочий час не встановлено",
"Add slot" : "Додати слот",
"Monday" : "понеділок",
"Tuesday" : "Вівторок",
"Wednesday" : "Середа",
@@ -75,7 +159,11 @@ OC.L10N.register(
"Friday" : "П'ятниця",
"Saturday" : "Субота",
"Sunday" : "Неділя",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Автоматично встановлюйте статус користувача на \"Не турбувати\" поза доступністю, щоб вимкнути всі сповіщення.",
"Save" : "Зберегти",
"Failed to load availability" : "Не вдалося завантажити доступність",
"Saved availability" : "Збережена наявність",
"Failed to save availability" : "Не вдалося зберегти наявність",
"Calendar server" : "Сервер календаря",
"Send invitations to attendees" : "Надіслати запрошення учасникам",
"Automatically generate a birthday calendar" : "Автоматично згенерувати календар днів народження",
@@ -83,6 +171,8 @@ OC.L10N.register(
"Hence they will not be available immediately after enabling but will show up after some time." : "Отже вони не будуть доступні одразу після увімкнення, але з'являться згодом.",
"Send notifications for events" : "Відправити сповіщення для подій",
"Notifications are sent via background jobs, so these must occur often enough." : "Сповіщення надсилаються у фонових завданнях, тож вони мають запускатися достатньо часто.",
"Send reminder notifications to calendar sharees as well" : "Також надсилайте сповіщення про нагадування користувачам спільного календаря",
"Reminders are always sent to organizers and attendees." : "Нагадування завжди надсилаються організаторам і учасникам.",
"Enable notifications for events via push" : "Увімкнути push-сповіщення для подій",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Встановіть також {calendarappstoreopen}застосунок Календар{linkclose}, або {calendardocopen}з'єднайте ваш декстоп і мобільний для синхронізації ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Будь-ласка переконайтеся у коректності налаштувань {emailopen}поштового сервера{linkclose}.",
@@ -90,9 +180,10 @@ OC.L10N.register(
"Please contact the organizer directly." : "Будь-ласка повідомте організатора.",
"Are you accepting the invitation?" : "Чи приймаєте ви запрошення?",
"Tentative" : "Попередній",
"Number of guests" : "Кількість гостей",
"Comment" : "Коментар",
"Your attendance was updated successfully." : "Ваша участь успішно оновлена.",
"Todos" : "До роботи",
"Todos" : "Завдання",
"{actor} created todo {todo} in list {calendar}" : "{actor} створив завдання {todo} у списку {calendar}",
"You created todo {todo} in list {calendar}" : "Ви створили завдання {todo} у списку {calendar}",
"{actor} deleted todo {todo} from list {calendar}" : "{actor} вилучили завдання {todo} зі списку {calendar}",
+92 -1
View File
@@ -1,5 +1,6 @@
{ "translations": {
"Calendar" : "Календар",
"To-dos" : "Справи",
"Personal" : "Особисте",
"{actor} created calendar {calendar}" : "{actor} створив календар {calendar}",
"You created calendar {calendar}" : "Ви створили календар {calendar}",
@@ -7,6 +8,8 @@
"You deleted calendar {calendar}" : "Ви вилучили календар {calendar}",
"{actor} updated calendar {calendar}" : "{actor} оновив календар {calendar}",
"You updated calendar {calendar}" : "Ви оновили календар {calendar}",
"{actor} restored calendar {calendar}" : "{actor} відновив календар {calendar}",
"You restored calendar {calendar}" : "Ви відновили календар {calendar}",
"You shared calendar {calendar} as public link" : "Ви поширили календар {calendar} як публічне посилання",
"You removed public link for calendar {calendar}" : "Ви вилучили публічне посилання на календар {calendar}",
"{actor} shared calendar {calendar} with you" : "{actor} поширив календар {calendar} з вами",
@@ -27,9 +30,27 @@
"You deleted event {event} from calendar {calendar}" : "Ви вилучили подію {event} з календаря {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} оновив подію {event} у календарі {calendar}",
"You updated event {event} in calendar {calendar}" : "Ви оновили подію {event} у календарі {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} перемістив подію {event} з календаря {sourceCalendar} до календаря {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Ви перемістили подію {event} з календаря {sourceCalendar} до календаря {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} відновив подію {event} календаря {calendar}",
"You restored event {event} of calendar {calendar}" : "Ви відновили подію {event} календаря {calendar}",
"Busy" : "Зайнято",
"{actor} created to-do {todo} in list {calendar}" : "{actor} створив завдання {todo} у списку {calendar}",
"You created to-do {todo} in list {calendar}" : "Ви створили завдання {todo} у списку {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} видалив справу {todo} зі списку {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Ви видалили завдання {todo} зі списку {calendar}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} оновив завдання {todo} у списку {calendar}",
"You updated to-do {todo} in list {calendar}" : "Ви оновили завдання {todo} у списку {calendar}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} вирішив завдання {todo} у списку {calendar}",
"You solved to-do {todo} in list {calendar}" : "Ви вирішили завдання {todo} у списку {calendar}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} знову відкрив справу {todo} у списку {calendar}",
"You reopened to-do {todo} in list {calendar}" : "Ви знову відкрили справу {todo} у списку {calendar}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} перемістив завдання {todo} зі списку {sourceCalendar} до списку {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Ви перемістили завдання {todo} зі списку {sourceCalendar} до списку {targetCalendar}",
"Calendar, contacts and tasks" : "Календар, контакти та завдання",
"A <strong>calendar</strong> was modified" : "<strong>Календар</strong> був змінений",
"A calendar <strong>event</strong> was modified" : "Календарна <strong>подія</strong> була змінена",
"A calendar <strong>to-do</strong> was modified" : "<strong>Завдання</strong> в календарі змінено",
"Contact birthdays" : "Дні народження контактів",
"Death of %s" : "Смерть %s",
"Calendar:" : "Календар:",
@@ -48,24 +69,87 @@
"Description: %s" : "Опис: %s",
"Where: %s" : "Місце: %s",
"%1$s via %2$s" : "%1$s через %2$s",
"Cancelled: %1$s" : "Скасовано: %1$s",
"Invitation canceled" : "Запрошення скасоване",
"Re: %1$s" : "Re: %1$s",
"Invitation updated" : "Запрошення оновлене",
"Invitation: %1$s" : "Запрошення: %1$s",
"Invitation" : "Запрошення",
"Title:" : "Назва:",
"Time:" : "Час:",
"Location:" : "Місцевість:",
"Link:" : "Посилання:",
"Organizer:" : "Організатор:",
"Attendees:" : "Учасники:",
"Accept" : "Прийняти",
"Decline" : "Відхилити",
"More options …" : "Більше варіантів …",
"More options at %s" : "Більше варіантів на %s",
"Contacts" : "Контакти",
"{actor} created address book {addressbook}" : "{actor} створив адресну книгу {addressbook}",
"You created address book {addressbook}" : "Ви створили адресну книгу {addressbook}",
"{actor} deleted address book {addressbook}" : "адресна книга{actor} видалив адресну книгу {addressbook}",
"You deleted address book {addressbook}" : "Ви видалили адресну книгу {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} оновив адресну книгу {addressbook}",
"You updated address book {addressbook}" : "Ви оновили адресну книгу {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} поділився з вами адресною книгою {addressbook}",
"You shared address book {addressbook} with {user}" : "Ви надали доступ до адресної книги {addresbook} користувачу {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} поділився адресною книгою {addressbook} з {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} не надіслана адресна книга {addressbook} від вас",
"You unshared address book {addressbook} from {user}" : "Ви скасували спільний доступ до адресної книги {addresbook} від користувача {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} не має спільного доступу до адресної книги {addressbook} від {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} не поділився адресною книгою {addressbook} від себе",
"You shared address book {addressbook} with group {group}" : "Ви надали спільний доступ до адресної книги {addressbook} групі {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} поділився адресною книгою {addresbook} із групою {group}",
"You unshared address book {addressbook} from group {group}" : "Ви скасували спільний доступ до адресної книги {addressbook} із групи {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} не має спільного доступу до адресної книги {addresbook} із групи {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} створив контакт {card} в адресній книзі {addressbook}",
"You created contact {card} in address book {addressbook}" : "Ви створили контакт {card} в адресній книзі {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} видалив контакт {card} з адресної книги {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "Ви видалили контакт {card} з адресної книги {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} оновив контакт {card} в адресній книзі {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Ви оновили контакт {card} в адресній книзі {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Контактну</strong> або <strong>адресну книгу</strong> було змінено",
"File is not updatable: %1$s" : "Файл не оновлюється: %1$s",
"Could not write to final file, canceled by hook" : "Не вдалося записати в остаточний файл, скасовано перехопленням",
"Could not write file contents" : "Не вдалося записати вміст файлу",
"_%n byte_::_%n bytes_" : ["%n байт","%n байтів","%n байтів","%n байтів"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Помилка під час копіювання файлу в цільове розташування (скопійовано: %1$s, очікуваний розмір файлу: %2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Очікуваний розмір файлу %1$s, але читання (з клієнта Nextcloud) і запис (до сховища Nextcloud) %2$s. Це може бути проблема мережі на стороні надсилання або проблема запису в сховище на стороні сервера.",
"Could not rename part file to final file, canceled by hook" : "Не вдалося перейменувати файл частини на остаточний файл, скасовано підхопленням",
"Could not rename part file to final file" : "Не вдалося перейменувати файл частини на остаточний файл",
"Failed to check file size: %1$s" : "Не вдалося перевірити розмір файлу: %1$s",
"Could not open file" : "Не вдалося відкрити файл",
"Encryption not ready: %1$s" : "Шифрування не готове: %1$s",
"Failed to open file: %1$s" : "Не вдалося відкрити файл: %1$s",
"Failed to unlink: %1$s" : "Не вдалося від’єднати: %1$s",
"Invalid chunk name" : "Недійсна назва блоку",
"Could not rename part file assembled from chunks" : "Не вдалося перейменувати файл частини, зібраний із фрагментів",
"Failed to write file contents: %1$s" : "Не вдалося записати вміст файлу: %1$s",
"File not found: %1$s" : "Файл не знайдено: %1$s",
"System is in maintenance mode." : "Система в режимі обслуговування.",
"Upgrade needed" : "Потрібно оновитися",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Ваш %s мусить бути налаштований на використання HTTPS для надання доступу до CalDAV і CardDAV з iOS/macOS.",
"Configures a CalDAV account" : "Налаштовує обліковий запис CalDAV",
"Configures a CardDAV account" : "Налаштовує обліковий запис CardDAV",
"Events" : "Події",
"Tasks" : "Завдання",
"Untitled task" : "Завдання без назви",
"Completed on %s" : "Завершено %s",
"Due on %s by %s" : "Термін погашення %s до %s",
"Due on %s" : "Термін погашення %s",
"Migrated calendar (%1$s)" : "Перенесений календар (%1$s)",
"Calendars including events, details and attendees" : "Календарі, включаючи події, деталі та відвідувачів",
"Contacts and groups" : "Контакти та групи",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "Точка доступу WebDAV",
"Availability" : "Доступність",
"If you configure your working hours, other users will see when you are out of office when they book a meeting." : "Якщо ви налаштуєте свій робочий час, інші користувачі побачать, коли вас немає на місці, коли вони бронюють зустріч.",
"Time zone:" : "Часовий пояс:",
"to" : "до",
"Delete slot" : "Видалити слот",
"No working hours set" : "Робочий час не встановлено",
"Add slot" : "Додати слот",
"Monday" : "понеділок",
"Tuesday" : "Вівторок",
"Wednesday" : "Середа",
@@ -73,7 +157,11 @@
"Friday" : "П'ятниця",
"Saturday" : "Субота",
"Sunday" : "Неділя",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Автоматично встановлюйте статус користувача на \"Не турбувати\" поза доступністю, щоб вимкнути всі сповіщення.",
"Save" : "Зберегти",
"Failed to load availability" : "Не вдалося завантажити доступність",
"Saved availability" : "Збережена наявність",
"Failed to save availability" : "Не вдалося зберегти наявність",
"Calendar server" : "Сервер календаря",
"Send invitations to attendees" : "Надіслати запрошення учасникам",
"Automatically generate a birthday calendar" : "Автоматично згенерувати календар днів народження",
@@ -81,6 +169,8 @@
"Hence they will not be available immediately after enabling but will show up after some time." : "Отже вони не будуть доступні одразу після увімкнення, але з'являться згодом.",
"Send notifications for events" : "Відправити сповіщення для подій",
"Notifications are sent via background jobs, so these must occur often enough." : "Сповіщення надсилаються у фонових завданнях, тож вони мають запускатися достатньо часто.",
"Send reminder notifications to calendar sharees as well" : "Також надсилайте сповіщення про нагадування користувачам спільного календаря",
"Reminders are always sent to organizers and attendees." : "Нагадування завжди надсилаються організаторам і учасникам.",
"Enable notifications for events via push" : "Увімкнути push-сповіщення для подій",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Встановіть також {calendarappstoreopen}застосунок Календар{linkclose}, або {calendardocopen}з'єднайте ваш декстоп і мобільний для синхронізації ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Будь-ласка переконайтеся у коректності налаштувань {emailopen}поштового сервера{linkclose}.",
@@ -88,9 +178,10 @@
"Please contact the organizer directly." : "Будь-ласка повідомте організатора.",
"Are you accepting the invitation?" : "Чи приймаєте ви запрошення?",
"Tentative" : "Попередній",
"Number of guests" : "Кількість гостей",
"Comment" : "Коментар",
"Your attendance was updated successfully." : "Ваша участь успішно оновлена.",
"Todos" : "До роботи",
"Todos" : "Завдання",
"{actor} created todo {todo} in list {calendar}" : "{actor} створив завдання {todo} у списку {calendar}",
"You created todo {todo} in list {calendar}" : "Ви створили завдання {todo} у списку {calendar}",
"{actor} deleted todo {todo} from list {calendar}" : "{actor} вилучили завдання {todo} зі списку {calendar}",
+39
View File
@@ -2,6 +2,7 @@ OC.L10N.register(
"dav",
{
"Calendar" : "日历",
"To-dos" : "代办事项",
"Personal" : "个人",
"{actor} created calendar {calendar}" : "{actor} 创建了日历 {calendar}",
"You created calendar {calendar}" : "您创建的日历 {calendar}",
@@ -31,12 +32,27 @@ OC.L10N.register(
"You deleted event {event} from calendar {calendar}" : "您在日历 {calendar} 中删除了事件 {event}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} 在日历 {calendar} 中更新了事件 {event}",
"You updated event {event} in calendar {calendar}" : "您在日历 {calendar} 中更新了事件 {event}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} 将事件 {event} 从日历 {sourceCalendar} 移动至日历 {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "您已将事件 {event} 从日历 {sourceCalendar} 移动至日历 {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} 还原了事件 {event},它位于日历 {calendar}",
"You restored event {event} of calendar {calendar}" : "你还原了事件 {event},它位于日历 {calendar}",
"Busy" : "忙碌",
"{actor} created to-do {todo} in list {calendar}" : "{actor} 在清单 {calendar} 中创建了代办事项 {todo}",
"You created to-do {todo} in list {calendar}" : "您已在清单 {calendar} 中创建了代办事项 {todo}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} 从列表 {calendar} 中删除了待办事项 {todo}",
"You deleted to-do {todo} from list {calendar}" : "你从列表 {calendar} 中删除了待办事项 {todo}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} 更新了列表 {calendar} 中的待办事项 {todo}",
"You updated to-do {todo} in list {calendar}" : "你更新了列表 {calendar} 中的待办事项 {todo}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} 解决了列表 {calendar} 中的待办事项 {todo}",
"You solved to-do {todo} in list {calendar}" : "你解决了列表 {calendar} 中的待办事项 {todo}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} 重新开启了列表 {calendar} 中的待办事项 {todo}",
"You reopened to-do {todo} in list {calendar}" : "你重新开启了列表 {calendar} 中的待办事项 {todo}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} 将待办事项 {todo} 从列表 {sourceCalendar} 移动到列表 {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "你将待办事项 {todo} 从列表 {sourceCalendar} 移动到列表 {targetCalendar}",
"Calendar, contacts and tasks" : "日历、联系人和任务",
"A <strong>calendar</strong> was modified" : "<strong>日历</strong>已经修改",
"A calendar <strong>event</strong> was modified" : "日历中<strong>事件</strong>已经修改",
"A calendar <strong>to-do</strong> was modified" : "日历中的<strong>待办事项</strong>已修改",
"Contact birthdays" : "联系人生日",
"Death of %s" : "%s 的忌日",
"Calendar:" : "日历:",
@@ -96,6 +112,23 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} 更新了通讯录 {addressbook} 中的联系人 {card} ",
"You updated contact {card} in address book {addressbook}" : "你更新了通讯录 {addressbook} 中的联系人 {card} ",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "一名 <strong>联系人</strong>或一个<strong>通讯录</strong>被更改了",
"File is not updatable: %1$s" : "无法更新文件:%1$s",
"Could not write to final file, canceled by hook" : "无法写入最终文件,操作被插件取消",
"Could not write file contents" : "无法写入文件内容",
"_%n byte_::_%n bytes_" : ["%n字节"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "将文件复制到目标位置时发生错误(已复制:%1$s,预期大小:%2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "预期文件大小为 %1$s,实际从 Nextcloud 客户端读入并写入 Nextcloud 存储空间的大小为 %2$s。可能是发送端发生了网络问题,或者是服务器写入存储设备时发生错误。",
"Could not rename part file to final file, canceled by hook" : "无法将部分文件重命名为最终文件,操作被插件取消",
"Could not rename part file to final file" : "无法将部分文件重命名为最终文件",
"Failed to check file size: %1$s" : "检查文件大小失败:%1$s",
"Could not open file" : "无法打开文件",
"Encryption not ready: %1$s" : "加密不可用:%1$s",
"Failed to open file: %1$s" : "打开文件失败:%1$s",
"Failed to unlink: %1$s" : "解除链接失败:%1$s",
"Invalid chunk name" : "分片名称无效",
"Could not rename part file assembled from chunks" : "无法重命名从分片组合的部分文件",
"Failed to write file contents: %1$s" : "写入文件内容失败:%1$s",
"File not found: %1$s" : "找不到文件:%1$s",
"System is in maintenance mode." : "系统处于维护模式 ",
"Upgrade needed" : "需要升级",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "您的%s 需要配置使用HTTPS以在iOS/macOS中使用CalDAV和CardDAV。",
@@ -107,6 +140,8 @@ OC.L10N.register(
"Completed on %s" : "已完成 %s",
"Due on %s by %s" : "到期于%s ,在%s之前",
"Due on %s" : "到期于%s",
"Migrated calendar (%1$s)" : "迁移的日历(%1$s",
"Calendars including events, details and attendees" : "日历包含活动、参与人和事件详情",
"Contacts and groups" : "联系人和群组",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV端点",
@@ -124,7 +159,11 @@ OC.L10N.register(
"Friday" : "周五",
"Saturday" : "周六",
"Sunday" : "周日",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "不在可用时间内时,自动将用户状态设置为“请勿打扰”并静音所有通知。",
"Save" : "保存",
"Failed to load availability" : "可用时间段加载失败",
"Saved availability" : "可用时间已保存",
"Failed to save availability" : "可用时间保存失败",
"Calendar server" : "日历服务器",
"Send invitations to attendees" : "向与会者发送邀请",
"Automatically generate a birthday calendar" : "自动生成生日日历",
+39
View File
@@ -1,5 +1,6 @@
{ "translations": {
"Calendar" : "日历",
"To-dos" : "代办事项",
"Personal" : "个人",
"{actor} created calendar {calendar}" : "{actor} 创建了日历 {calendar}",
"You created calendar {calendar}" : "您创建的日历 {calendar}",
@@ -29,12 +30,27 @@
"You deleted event {event} from calendar {calendar}" : "您在日历 {calendar} 中删除了事件 {event}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} 在日历 {calendar} 中更新了事件 {event}",
"You updated event {event} in calendar {calendar}" : "您在日历 {calendar} 中更新了事件 {event}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} 将事件 {event} 从日历 {sourceCalendar} 移动至日历 {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "您已将事件 {event} 从日历 {sourceCalendar} 移动至日历 {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} 还原了事件 {event},它位于日历 {calendar}",
"You restored event {event} of calendar {calendar}" : "你还原了事件 {event},它位于日历 {calendar}",
"Busy" : "忙碌",
"{actor} created to-do {todo} in list {calendar}" : "{actor} 在清单 {calendar} 中创建了代办事项 {todo}",
"You created to-do {todo} in list {calendar}" : "您已在清单 {calendar} 中创建了代办事项 {todo}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} 从列表 {calendar} 中删除了待办事项 {todo}",
"You deleted to-do {todo} from list {calendar}" : "你从列表 {calendar} 中删除了待办事项 {todo}",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} 更新了列表 {calendar} 中的待办事项 {todo}",
"You updated to-do {todo} in list {calendar}" : "你更新了列表 {calendar} 中的待办事项 {todo}",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} 解决了列表 {calendar} 中的待办事项 {todo}",
"You solved to-do {todo} in list {calendar}" : "你解决了列表 {calendar} 中的待办事项 {todo}",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} 重新开启了列表 {calendar} 中的待办事项 {todo}",
"You reopened to-do {todo} in list {calendar}" : "你重新开启了列表 {calendar} 中的待办事项 {todo}",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} 将待办事项 {todo} 从列表 {sourceCalendar} 移动到列表 {targetCalendar}",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "你将待办事项 {todo} 从列表 {sourceCalendar} 移动到列表 {targetCalendar}",
"Calendar, contacts and tasks" : "日历、联系人和任务",
"A <strong>calendar</strong> was modified" : "<strong>日历</strong>已经修改",
"A calendar <strong>event</strong> was modified" : "日历中<strong>事件</strong>已经修改",
"A calendar <strong>to-do</strong> was modified" : "日历中的<strong>待办事项</strong>已修改",
"Contact birthdays" : "联系人生日",
"Death of %s" : "%s 的忌日",
"Calendar:" : "日历:",
@@ -94,6 +110,23 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} 更新了通讯录 {addressbook} 中的联系人 {card} ",
"You updated contact {card} in address book {addressbook}" : "你更新了通讯录 {addressbook} 中的联系人 {card} ",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "一名 <strong>联系人</strong>或一个<strong>通讯录</strong>被更改了",
"File is not updatable: %1$s" : "无法更新文件:%1$s",
"Could not write to final file, canceled by hook" : "无法写入最终文件,操作被插件取消",
"Could not write file contents" : "无法写入文件内容",
"_%n byte_::_%n bytes_" : ["%n字节"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "将文件复制到目标位置时发生错误(已复制:%1$s,预期大小:%2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "预期文件大小为 %1$s,实际从 Nextcloud 客户端读入并写入 Nextcloud 存储空间的大小为 %2$s。可能是发送端发生了网络问题,或者是服务器写入存储设备时发生错误。",
"Could not rename part file to final file, canceled by hook" : "无法将部分文件重命名为最终文件,操作被插件取消",
"Could not rename part file to final file" : "无法将部分文件重命名为最终文件",
"Failed to check file size: %1$s" : "检查文件大小失败:%1$s",
"Could not open file" : "无法打开文件",
"Encryption not ready: %1$s" : "加密不可用:%1$s",
"Failed to open file: %1$s" : "打开文件失败:%1$s",
"Failed to unlink: %1$s" : "解除链接失败:%1$s",
"Invalid chunk name" : "分片名称无效",
"Could not rename part file assembled from chunks" : "无法重命名从分片组合的部分文件",
"Failed to write file contents: %1$s" : "写入文件内容失败:%1$s",
"File not found: %1$s" : "找不到文件:%1$s",
"System is in maintenance mode." : "系统处于维护模式 ",
"Upgrade needed" : "需要升级",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "您的%s 需要配置使用HTTPS以在iOS/macOS中使用CalDAV和CardDAV。",
@@ -105,6 +138,8 @@
"Completed on %s" : "已完成 %s",
"Due on %s by %s" : "到期于%s ,在%s之前",
"Due on %s" : "到期于%s",
"Migrated calendar (%1$s)" : "迁移的日历(%1$s",
"Calendars including events, details and attendees" : "日历包含活动、参与人和事件详情",
"Contacts and groups" : "联系人和群组",
"WebDAV" : "WebDAV",
"WebDAV endpoint" : "WebDAV端点",
@@ -122,7 +157,11 @@
"Friday" : "周五",
"Saturday" : "周六",
"Sunday" : "周日",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "不在可用时间内时,自动将用户状态设置为“请勿打扰”并静音所有通知。",
"Save" : "保存",
"Failed to load availability" : "可用时间段加载失败",
"Saved availability" : "可用时间已保存",
"Failed to save availability" : "可用时间保存失败",
"Calendar server" : "日历服务器",
"Send invitations to attendees" : "向与会者发送邀请",
"Automatically generate a birthday calendar" : "自动生成生日日历",
@@ -8,6 +8,7 @@ declare(strict_types=1);
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Richard Steinmetz <richard@steinmetz.cloud>
*
* @license GNU AGPL version 3 or any later version
*
@@ -42,10 +43,12 @@ interface INotificationProvider {
*
* @param VEvent $vevent
* @param string $calendarDisplayName
* @param string[] $principalEmailAddresses All email addresses associated to the principal owning the calendar object
* @param IUser[] $users
* @return void
*/
public function send(VEvent $vevent,
string $calendarDisplayName,
array $principalEmailAddresses,
array $users = []): void;
}
@@ -10,6 +10,7 @@ declare(strict_types=1);
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Richard Steinmetz <richard@steinmetz.cloud>
*
* @license GNU AGPL version 3 or any later version
*
@@ -82,11 +83,13 @@ abstract class AbstractProvider implements INotificationProvider {
*
* @param VEvent $vevent
* @param string $calendarDisplayName
* @param string[] $principalEmailAddresses
* @param IUser[] $users
* @return void
*/
abstract public function send(VEvent $vevent,
string $calendarDisplayName,
array $principalEmailAddresses,
array $users = []): void;
/**
@@ -71,16 +71,28 @@ class EmailProvider extends AbstractProvider {
*
* @param VEvent $vevent
* @param string $calendarDisplayName
* @param string[] $principalEmailAddresses
* @param array $users
* @throws \Exception
*/
public function send(VEvent $vevent,
string $calendarDisplayName,
array $principalEmailAddresses,
array $users = []):void {
$fallbackLanguage = $this->getFallbackLanguage();
$organizerEmailAddress = null;
if (isset($vevent->ORGANIZER)) {
$organizerEmailAddress = $this->getEMailAddressOfAttendee($vevent->ORGANIZER);
}
$emailAddressesOfSharees = $this->getEMailAddressesOfAllUsersWithWriteAccessToCalendar($users);
$emailAddressesOfAttendees = $this->getAllEMailAddressesFromEvent($vevent);
$emailAddressesOfAttendees = [];
if (count($principalEmailAddresses) === 0
|| ($organizerEmailAddress && in_array($organizerEmailAddress, $principalEmailAddresses, true))
) {
$emailAddressesOfAttendees = $this->getAllEMailAddressesFromEvent($vevent);
}
// Quote from php.net:
// If the input arrays have the same string keys, then the later value for that key will overwrite the previous one.
@@ -10,6 +10,7 @@ declare(strict_types=1);
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Citharel <nextcloud@tcit.fr>
* @author Richard Steinmetz <richard@steinmetz.cloud>
*
* @license GNU AGPL version 3 or any later version
*
@@ -73,11 +74,13 @@ class PushProvider extends AbstractProvider {
*
* @param VEvent $vevent
* @param string $calendarDisplayName
* @param string[] $principalEmailAddresses
* @param IUser[] $users
* @throws \Exception
*/
public function send(VEvent $vevent,
string $calendarDisplayName = null,
string $calendarDisplayName,
array $principalEmailAddresses,
array $users = []):void {
if ($this->config->getAppValue('dav', 'sendEventRemindersPush', 'no') !== 'yes') {
return;
@@ -11,6 +11,7 @@ declare(strict_types=1);
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Citharel <nextcloud@tcit.fr>
* @author Richard Steinmetz <richard@steinmetz.cloud>
*
* @license GNU AGPL version 3 or any later version
*
@@ -32,6 +33,7 @@ namespace OCA\DAV\CalDAV\Reminder;
use DateTimeImmutable;
use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\Connector\Sabre\Principal;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
use OCP\IGroup;
@@ -76,6 +78,9 @@ class ReminderService {
/** @var LoggerInterface */
private $logger;
/** @var Principal */
private $principalConnector;
public const REMINDER_TYPE_EMAIL = 'EMAIL';
public const REMINDER_TYPE_DISPLAY = 'DISPLAY';
public const REMINDER_TYPE_AUDIO = 'AUDIO';
@@ -98,7 +103,8 @@ class ReminderService {
CalDavBackend $caldavBackend,
ITimeFactory $timeFactory,
IConfig $config,
LoggerInterface $logger) {
LoggerInterface $logger,
Principal $principalConnector) {
$this->backend = $backend;
$this->notificationProviderManager = $notificationProviderManager;
$this->userManager = $userManager;
@@ -107,6 +113,7 @@ class ReminderService {
$this->timeFactory = $timeFactory;
$this->config = $config;
$this->logger = $logger;
$this->principalConnector = $principalConnector;
}
/**
@@ -175,12 +182,18 @@ class ReminderService {
$users[] = $user;
}
$userPrincipalEmailAddresses = [];
$userPrincipal = $this->principalConnector->getPrincipalByPath($reminder['principaluri']);
if ($userPrincipal) {
$userPrincipalEmailAddresses = $this->principalConnector->getEmailAddressesOfPrincipal($userPrincipal);
}
$this->logger->debug('Reminder {id} will be sent to {numUsers} users', [
'id' => $reminder['id'],
'numUsers' => count($users),
]);
$notificationProvider = $this->notificationProviderManager->getProvider($reminder['type']);
$notificationProvider->send($vevent, $reminder['displayname'], $users);
$notificationProvider->send($vevent, $reminder['displayname'], $userPrincipalEmailAddresses, $users);
$this->deleteOrProcessNext($reminder, $vevent);
}
+11 -9
View File
@@ -9,6 +9,7 @@
* @author Joas Schilling <coding@schilljs.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Citharel <nextcloud@tcit.fr>
* @author Richard Steinmetz <richard@steinmetz.cloud>
*
* @license GNU AGPL version 3 or any later version
*
@@ -46,6 +47,7 @@ use Sabre\VObject\Component;
use Sabre\VObject\Component\VCalendar;
use Sabre\VObject\Component\VEvent;
use Sabre\VObject\DateTimeParser;
use Sabre\VObject\Document;
use Sabre\VObject\FreeBusyGenerator;
use Sabre\VObject\ITip;
use Sabre\VObject\Parameter;
@@ -164,6 +166,14 @@ class Plugin extends \Sabre\CalDAV\Schedule\Plugin {
* @inheritDoc
*/
public function scheduleLocalDelivery(ITip\Message $iTipMessage):void {
/** @var Component|null $vevent */
$vevent = $iTipMessage->message->VEVENT ?? null;
// Strip VALARMs from incoming VEVENT
if ($vevent && isset($vevent->VALARM)) {
$vevent->remove('VALARM');
}
parent::scheduleLocalDelivery($iTipMessage);
// We only care when the message was successfully delivered locally
@@ -200,18 +210,10 @@ class Plugin extends \Sabre\CalDAV\Schedule\Plugin {
return;
}
if (!isset($iTipMessage->message)) {
if (!$vevent) {
return;
}
$vcalendar = $iTipMessage->message;
if (!isset($vcalendar->VEVENT)) {
return;
}
/** @var Component $vevent */
$vevent = $vcalendar->VEVENT;
// We don't support autoresponses for recurrencing events for now
if (isset($vevent->RRULE) || isset($vevent->RDATE)) {
return;
+18 -1
View File
@@ -71,6 +71,7 @@ class FilesPlugin extends ServerPlugin {
public const GETETAG_PROPERTYNAME = '{DAV:}getetag';
public const LASTMODIFIED_PROPERTYNAME = '{DAV:}lastmodified';
public const CREATIONDATE_PROPERTYNAME = '{DAV:}creationdate';
public const DISPLAYNAME_PROPERTYNAME = '{DAV:}displayname';
public const OWNER_ID_PROPERTYNAME = '{http://owncloud.org/ns}owner-id';
public const OWNER_DISPLAY_NAME_PROPERTYNAME = '{http://owncloud.org/ns}owner-display-name';
public const CHECKSUMS_PROPERTYNAME = '{http://owncloud.org/ns}checksums';
@@ -351,7 +352,7 @@ class FilesPlugin extends ServerPlugin {
$propFind->handle(self::HAS_PREVIEW_PROPERTYNAME, function () use ($node) {
return json_encode($this->previewManager->isAvailable($node->getFileInfo()));
});
$propFind->handle(self::SIZE_PROPERTYNAME, function () use ($node): ?int {
$propFind->handle(self::SIZE_PROPERTYNAME, function () use ($node) {
return $node->getSize();
});
$propFind->handle(self::MOUNT_TYPE_PROPERTYNAME, function () use ($node) {
@@ -379,6 +380,15 @@ class FilesPlugin extends ServerPlugin {
$propFind->handle(self::CREATION_TIME_PROPERTYNAME, function () use ($node) {
return $node->getFileInfo()->getCreationTime();
});
/**
* Return file/folder name as displayname. The primary reason to
* implement it this way is to avoid costly fallback to
* CustomPropertiesBackend (esp. visible when querying all files
* in a folder).
*/
$propFind->handle(self::DISPLAYNAME_PROPERTYNAME, function () use ($node) {
return $node->getName();
});
}
if ($node instanceof \OCA\DAV\Connector\Sabre\File) {
@@ -554,6 +564,13 @@ class FilesPlugin extends ServerPlugin {
$node->setCreationTime((int) $time);
return true;
});
/**
* Disable modification of the displayname property for files and
* folders via PROPPATCH. See PROPFIND for more information.
*/
$propPatch->handle(self::DISPLAYNAME_PROPERTYNAME, function ($displayName) {
return 403;
});
}
/**
+11 -15
View File
@@ -355,23 +355,19 @@ abstract class Node implements \Sabre\DAV\INode {
return '';
}
$types = [
IShare::TYPE_USER,
IShare::TYPE_GROUP,
IShare::TYPE_CIRCLE,
IShare::TYPE_ROOM
];
foreach ($types as $shareType) {
$shares = $this->shareManager->getSharedWith($user, $shareType, $this, -1);
foreach ($shares as $share) {
$note = $share->getNote();
if ($share->getShareOwner() !== $user && !empty($note)) {
return $note;
}
}
// Retrieve note from the share object already loaded into
// memory, to avoid additional database queries.
$storage = $this->getNode()->getStorage();
if (!$storage->instanceOfStorage(\OCA\Files_Sharing\SharedStorage::class)) {
return '';
}
/** @var \OCA\Files_Sharing\SharedStorage $storage */
$share = $storage->getShare();
$note = $share->getNote();
if ($share->getShareOwner() !== $user) {
return $note;
}
return '';
}
@@ -607,4 +607,44 @@ class Principal implements BackendInterface {
return [];
}
/**
* Get all email addresses associated to a principal.
*
* @param array $principal Data from getPrincipal*()
* @return string[] All email addresses without the mailto: prefix
*/
public function getEmailAddressesOfPrincipal(array $principal): array {
$emailAddresses = [];
if (($primaryAddress = $principal['{http://sabredav.org/ns}email-address'])) {
$emailAddresses[] = $primaryAddress;
}
if (isset($principal['{DAV:}alternate-URI-set'])) {
foreach ($principal['{DAV:}alternate-URI-set'] as $address) {
if (str_starts_with($address, 'mailto:')) {
$emailAddresses[] = substr($address, 7);
}
}
}
if (isset($principal['{urn:ietf:params:xml:ns:caldav}calendar-user-address-set'])) {
foreach ($principal['{urn:ietf:params:xml:ns:caldav}calendar-user-address-set'] as $address) {
if (str_starts_with($address, 'mailto:')) {
$emailAddresses[] = substr($address, 7);
}
}
}
if (isset($principal['{http://calendarserver.org/ns/}email-address-set'])) {
foreach ($principal['{http://calendarserver.org/ns/}email-address-set'] as $address) {
if (str_starts_with($address, 'mailto:')) {
$emailAddresses[] = substr($address, 7);
}
}
}
return array_values(array_unique($emailAddresses));
}
}
+37 -2
View File
@@ -44,7 +44,6 @@ use Sabre\DAV\INode;
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
*/
class QuotaPlugin extends \Sabre\DAV\ServerPlugin {
/** @var \OC\Files\View */
private $view;
@@ -79,6 +78,7 @@ class QuotaPlugin extends \Sabre\DAV\ServerPlugin {
$server->on('beforeWriteContent', [$this, 'beforeWriteContent'], 10);
$server->on('beforeCreateFile', [$this, 'beforeCreateFile'], 10);
$server->on('beforeMove', [$this, 'beforeMove'], 10);
$server->on('beforeCopy', [$this, 'beforeCopy'], 10);
}
/**
@@ -131,7 +131,42 @@ class QuotaPlugin extends \Sabre\DAV\ServerPlugin {
$destinationNode = $this->server->tree->getNodeForPath($destination);
$path = $destinationNode->getPath();
} else {
$parentNode = $this->server->tree->getNodeForPath(dirname($destination));
$parent = dirname($destination);
if ($parent === '.') {
$parent = '';
}
$parentNode = $this->server->tree->getNodeForPath($parent);
$path = $parentNode->getPath();
}
return $this->checkQuota($path, $sourceNode->getSize());
}
/**
* Check quota on the target destination before a copy.
*/
public function beforeCopy(string $sourcePath, string $destinationPath): bool {
$sourceNode = $this->server->tree->getNodeForPath($sourcePath);
if (!$sourceNode instanceof Node) {
return true;
}
// get target node for proper path conversion
if ($this->server->tree->nodeExists($destinationPath)) {
$destinationNode = $this->server->tree->getNodeForPath($destinationPath);
if (!$destinationNode instanceof Node) {
return true;
}
$path = $destinationNode->getPath();
} else {
$parent = dirname($destinationPath);
if ($parent === '.') {
$parent = '';
}
$parentNode = $this->server->tree->getNodeForPath($parent);
if (!$parentNode instanceof Node) {
return true;
}
$path = $parentNode->getPath();
}
+2 -2
View File
@@ -55,7 +55,7 @@ use SearchDAV\Query\Order;
use SearchDAV\Query\Query;
class FileSearchBackend implements ISearchBackend {
const OPERATOR_LIMIT = 100;
public const OPERATOR_LIMIT = 100;
/** @var CachingTree */
private $tree;
@@ -432,7 +432,7 @@ class FileSearchBackend implements ISearchBackend {
if (is_numeric($value)) {
return max(0, 0 + $value);
}
$date = \DateTime::createFromFormat(\DateTimeInterface::ATOM, $value);
$date = \DateTime::createFromFormat(\DateTimeInterface::ATOM, (string)$value);
return ($date instanceof \DateTime && $date->getTimestamp() !== false) ? $date->getTimestamp() : 0;
default:
return $value;
@@ -72,18 +72,18 @@ exports[`CalDavSettings interactions 1`] = `
>
<span
class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
data-v-2b31639e=""
data-v-751c6bad=""
data-v-d423551e=""
style="--icon-size: 36px;"
>
<label
class="checkbox-radio-switch__label"
data-v-2b31639e=""
data-v-d423551e=""
for="caldavSendInvitations"
>
<input
class="checkbox-radio-switch__input"
data-v-2b31639e=""
data-v-d423551e=""
id="caldavSendInvitations"
type="checkbox"
value=""
@@ -92,7 +92,7 @@ exports[`CalDavSettings interactions 1`] = `
<span
aria-hidden="true"
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
data-v-2b31639e=""
data-v-d423551e=""
role="img"
>
<svg
@@ -133,18 +133,18 @@ exports[`CalDavSettings interactions 1`] = `
>
<span
class="checkbox-radio-switch checkbox checkbox-radio-switch-switch checkbox-radio-switch--checked"
data-v-2b31639e=""
data-v-751c6bad=""
data-v-d423551e=""
style="--icon-size: 36px;"
>
<label
class="checkbox-radio-switch__label"
data-v-2b31639e=""
data-v-d423551e=""
for="caldavGenerateBirthdayCalendar"
>
<input
class="checkbox-radio-switch__input"
data-v-2b31639e=""
data-v-d423551e=""
id="caldavGenerateBirthdayCalendar"
type="checkbox"
value=""
@@ -153,7 +153,7 @@ exports[`CalDavSettings interactions 1`] = `
<span
aria-hidden="true"
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
data-v-2b31639e=""
data-v-d423551e=""
role="img"
>
<svg
@@ -202,18 +202,18 @@ exports[`CalDavSettings interactions 1`] = `
>
<span
class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
data-v-2b31639e=""
data-v-751c6bad=""
data-v-d423551e=""
style="--icon-size: 36px;"
>
<label
class="checkbox-radio-switch__label"
data-v-2b31639e=""
data-v-d423551e=""
for="caldavSendEventReminders"
>
<input
class="checkbox-radio-switch__input"
data-v-2b31639e=""
data-v-d423551e=""
id="caldavSendEventReminders"
type="checkbox"
value=""
@@ -222,7 +222,7 @@ exports[`CalDavSettings interactions 1`] = `
<span
aria-hidden="true"
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
data-v-2b31639e=""
data-v-d423551e=""
role="img"
>
<svg
@@ -276,18 +276,18 @@ exports[`CalDavSettings interactions 1`] = `
>
<span
class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
data-v-2b31639e=""
data-v-751c6bad=""
data-v-d423551e=""
style="--icon-size: 36px;"
>
<label
class="checkbox-radio-switch__label"
data-v-2b31639e=""
data-v-d423551e=""
for="caldavSendEventRemindersToSharedGroupMembers"
>
<input
class="checkbox-radio-switch__input"
data-v-2b31639e=""
data-v-d423551e=""
id="caldavSendEventRemindersToSharedGroupMembers"
type="checkbox"
value=""
@@ -296,7 +296,7 @@ exports[`CalDavSettings interactions 1`] = `
<span
aria-hidden="true"
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
data-v-2b31639e=""
data-v-d423551e=""
role="img"
>
<svg
@@ -334,18 +334,18 @@ exports[`CalDavSettings interactions 1`] = `
>
<span
class="checkbox-radio-switch checkbox-radio-switch-switch checkbox-radio-switch--checked"
data-v-2b31639e=""
data-v-751c6bad=""
data-v-d423551e=""
style="--icon-size: 36px;"
>
<label
class="checkbox-radio-switch__label"
data-v-2b31639e=""
data-v-d423551e=""
for="caldavSendEventRemindersPush"
>
<input
class="checkbox-radio-switch__input"
data-v-2b31639e=""
data-v-d423551e=""
id="caldavSendEventRemindersPush"
type="checkbox"
value=""
@@ -354,7 +354,7 @@ exports[`CalDavSettings interactions 1`] = `
<span
aria-hidden="true"
class="material-design-icon toggle-switch-icon checkbox-radio-switch__icon"
data-v-2b31639e=""
data-v-d423551e=""
role="img"
>
<svg
@@ -65,6 +65,7 @@ class EmailProviderTest extends AbstractNotificationProviderTest {
public function testSendWithoutAttendees():void {
[$user1, $user2, $user3, , $user5] = $users = $this->getUsers();
$principalEmailAddresses = [$user1->getEmailAddress()];
$enL10N = $this->createMock(IL10N::class);
$enL10N->method('t')
@@ -170,11 +171,12 @@ class EmailProviderTest extends AbstractNotificationProviderTest {
$this->setupURLGeneratorMock(2);
$vcalendar = $this->getNoAttendeeVCalendar();
$this->provider->send($vcalendar->VEVENT, $this->calendarDisplayName, $users);
$this->provider->send($vcalendar->VEVENT, $this->calendarDisplayName, $principalEmailAddresses, $users);
}
public function testSendWithAttendees(): void {
public function testSendWithAttendeesWhenOwnerIsOrganizer(): void {
[$user1, $user2, $user3, , $user5] = $users = $this->getUsers();
$principalEmailAddresses = [$user1->getEmailAddress()];
$enL10N = $this->createMock(IL10N::class);
$enL10N->method('t')
@@ -266,7 +268,81 @@ class EmailProviderTest extends AbstractNotificationProviderTest {
$this->setupURLGeneratorMock(2);
$vcalendar = $this->getAttendeeVCalendar();
$this->provider->send($vcalendar->VEVENT, $this->calendarDisplayName, $users);
$this->provider->send($vcalendar->VEVENT, $this->calendarDisplayName, $principalEmailAddresses, $users);
}
public function testSendWithAttendeesWhenOwnerIsAttendee(): void {
[$user1, $user2, $user3] = $this->getUsers();
$users = [$user2, $user3];
$principalEmailAddresses = [$user2->getEmailAddress()];
$deL10N = $this->createMock(IL10N::class);
$deL10N->method('t')
->willReturnArgument(0);
$deL10N->method('l')
->willReturnArgument(0);
$this->l10nFactory
->method('getUserLanguage')
->willReturnMap([
[$user2, 'de'],
[$user3, 'de'],
]);
$this->l10nFactory
->method('findGenericLanguage')
->willReturn('en');
$this->l10nFactory
->method('languageExists')
->willReturnMap([
['dav', 'de', true],
]);
$this->l10nFactory
->method('get')
->willReturnMap([
['dav', 'de', null, $deL10N],
]);
$template1 = $this->getTemplateMock();
$message12 = $this->getMessageMock('uid2@example.com', $template1);
$message13 = $this->getMessageMock('uid3@example.com', $template1);
$this->mailer->expects(self::once())
->method('createEMailTemplate')
->with('dav.calendarReminder')
->willReturnOnConsecutiveCalls(
$template1,
);
$this->mailer->expects($this->atLeastOnce())
->method('validateMailAddress')
->willReturnMap([
['foo1@example.org', true],
['foo3@example.org', true],
['foo4@example.org', true],
['uid1@example.com', true],
['uid2@example.com', true],
['uid3@example.com', true],
['invalid', false],
]);
$this->mailer->expects($this->exactly(2))
->method('createMessage')
->with()
->willReturnOnConsecutiveCalls(
$message12,
$message13,
);
$this->mailer->expects($this->exactly(2))
->method('send')
->withConsecutive(
[$message12],
[$message13],
)->willReturn([]);
$this->setupURLGeneratorMock(1);
$vcalendar = $this->getAttendeeVCalendar();
$this->provider->send($vcalendar->VEVENT, $this->calendarDisplayName, $principalEmailAddresses, $users);
}
/**
@@ -376,6 +452,14 @@ class EmailProviderTest extends AbstractNotificationProviderTest {
'DESCRIPTION' => 'DESCRIPTION 456',
]);
$vcalendar->VEVENT->add(
'ORGANIZER',
'mailto:uid1@example.com',
[
'LANG' => 'en'
]
);
$vcalendar->VEVENT->add(
'ATTENDEE',
'mailto:foo1@example.org',
@@ -10,6 +10,7 @@ declare(strict_types=1);
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Citharel <nextcloud@tcit.fr>
* @author Richard Steinmetz <richard@steinmetz.cloud>
*
* @license GNU AGPL version 3 or any later version
*
@@ -90,7 +91,7 @@ class PushProviderTest extends AbstractNotificationProviderTest {
$users = [$user1, $user2, $user3];
$this->provider->send($this->vcalendar->VEVENT, $this->calendarDisplayName, $users);
$this->provider->send($this->vcalendar->VEVENT, $this->calendarDisplayName, [], $users);
}
public function testSend(): void {
@@ -143,7 +144,7 @@ class PushProviderTest extends AbstractNotificationProviderTest {
->method('notify')
->with($notification3);
$this->provider->send($this->vcalendar->VEVENT, $this->calendarDisplayName, $users);
$this->provider->send($this->vcalendar->VEVENT, $this->calendarDisplayName, [], $users);
}
/**
@@ -9,6 +9,7 @@ declare(strict_types=1);
* @author Georg Ehrke <oc.list@georgehrke.com>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Citharel <nextcloud@tcit.fr>
* @author Richard Steinmetz <richard@steinmetz.cloud>
*
* @license GNU AGPL version 3 or any later version
*
@@ -33,6 +34,7 @@ use OCA\DAV\CalDAV\Reminder\Backend;
use OCA\DAV\CalDAV\Reminder\INotificationProvider;
use OCA\DAV\CalDAV\Reminder\NotificationProviderManager;
use OCA\DAV\CalDAV\Reminder\ReminderService;
use OCA\DAV\Connector\Sabre\Principal;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
use OCP\IGroupManager;
@@ -202,6 +204,7 @@ EOD;
$this->timeFactory = $this->createMock(ITimeFactory::class);
$this->config = $this->createMock(IConfig::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->principalConnector = $this->createMock(Principal::class);
$this->caldavBackend->method('getShares')->willReturn([]);
@@ -214,6 +217,7 @@ EOD;
$this->timeFactory,
$this->config,
$this->logger,
$this->principalConnector,
);
}
@@ -1151,7 +1151,7 @@ class FileTest extends TestCase {
$info = new \OC\Files\FileInfo('/test.txt', $this->getMockStorage(), null, [
'permissions' => \OCP\Constants::PERMISSION_ALL,
'type' => FileInfo::TYPE_FOLDER,
'type' => FileInfo::TYPE_FILE,
], null);
$file = new \OCA\DAV\Connector\Sabre\File($view, $info);
@@ -1172,7 +1172,7 @@ class FileTest extends TestCase {
$info = new \OC\Files\FileInfo('/test.txt', $this->getMockStorage(), null, [
'permissions' => \OCP\Constants::PERMISSION_ALL,
'type' => FileInfo::TYPE_FOLDER,
'type' => FileInfo::TYPE_FILE,
], null);
$file = new \OCA\DAV\Connector\Sabre\File($view, $info);
@@ -11,6 +11,7 @@
* @author Morris Jobke <hey@morrisjobke.de>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Richard Steinmetz <richard@steinmetz.cloud>
*
* @license AGPL-3.0
*
@@ -974,4 +975,34 @@ class PrincipalTest extends TestCase {
['mailto:user3@foo.bar', 'user3@foo.bar', 'principals/users/user3'],
];
}
public function testGetEmailAddressesOfPrincipal(): void {
$principal = [
'{http://sabredav.org/ns}email-address' => 'bar@company.org',
'{DAV:}alternate-URI-set' => [
'/some/url',
'mailto:foo@bar.com',
'mailto:duplicate@example.com',
],
'{urn:ietf:params:xml:ns:caldav}calendar-user-address-set' => [
'mailto:bernard@example.com',
'mailto:bernard.desruisseaux@example.com',
],
'{http://calendarserver.org/ns/}email-address-set' => [
'mailto:duplicate@example.com',
'mailto:user@some.org',
],
];
$expected = [
'bar@company.org',
'foo@bar.com',
'duplicate@example.com',
'bernard@example.com',
'bernard.desruisseaux@example.com',
'user@some.org',
];
$actual = $this->connector->getEmailAddressesOfPrincipal($principal);
$this->assertEquals($expected, $actual);
}
}
+26 -21
View File
@@ -4,40 +4,44 @@ OC.L10N.register(
"Missing recovery key password" : "Falta la clau de recuperació de contrasenya",
"Please repeat the recovery key password" : "Si us plau, repetiu la clau de recuperació de contrasenya",
"Repeated recovery key password does not match the provided recovery key password" : "La contrasenya de la clau de recuperació repetida no coincideix amb la contrasenya de clau de recuperació proporcionada",
"Recovery key successfully enabled" : "La clau de recuperació s'ha activat",
"Could not enable recovery key. Please check your recovery key password!" : "No s'ha pogut activar la clau de recuperació. Comproveu contrasenya de la clau de recuperació!",
"Recovery key successfully disabled" : "La clau de recuperació s'ha descativat",
"Could not disable recovery key. Please check your recovery key password!" : "No s'ha pogut desactivar la clau de recuperació. Comproveu la contrasenya de la clau de recuperació!",
"Recovery key successfully enabled" : "La clau de recuperació s'ha habilitat",
"Could not enable recovery key. Please check your recovery key password!" : "No s'ha pogut habilitar la clau de recuperació. Comproveu contrasenya de la clau de recuperació!",
"Recovery key successfully disabled" : "La clau de recuperació s'ha inhabilitat",
"Could not disable recovery key. Please check your recovery key password!" : "No s'ha pogut inhabilitar la clau de recuperació. Comproveu la contrasenya de la clau de recuperació!",
"Missing parameters" : "Falten paràmetres",
"Please provide the old recovery password" : "Si us plau, proporcioneu la contrasenya de recuperació antiga",
"Please provide a new recovery password" : "Si us plau, proporcioneu una nova contrasenya de recuperació",
"Please repeat the new recovery password" : "Si us plau, repetiu la nova contrasenya de recuperació",
"Password successfully changed." : "La contrasenya s'ha canviat.",
"Could not change the password. Maybe the old password was not correct." : "No s'ha pogut canviar la contrasenya. Potser la contrasenya anterior no era correcta.",
"Recovery Key disabled" : "Clau de recuperació desactivada",
"Recovery Key enabled" : "Clau de recuperació activada",
"Could not enable the recovery key, please try again or contact your administrator" : "No es pot activar la clau de recuperació, torneu-ho a intentar o poseu-vos en contacte amb l'administrador",
"Recovery Key disabled" : "Clau de recuperació inhabilitada",
"Recovery Key enabled" : "Clau de recuperació habilitada",
"Could not enable the recovery key, please try again or contact your administrator" : "No es pot habilitar la clau de recuperació, torneu-ho a provar o poseu-vos en contacte amb l'administrador",
"Could not update the private key password." : "No s'ha pogut actualitzar la contrasenya de la clau privada.",
"The old password was not correct, please try again." : "La contrasenya antiga no és correcta, si us plau torneu-ho a provar.",
"The current log-in password was not correct, please try again." : "La contrasenya d'inici de sessió actual no era correcta, si us plau torneu-ho a provar.",
"Private key password successfully updated." : "La contrasenya de la clau privada s'ha actualitzat.",
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clau privada no és vàlida per a l'aplicació de xifrat. Si us plau, actualitzeu la contrasenya de la clau privada a la vostra configuració personal per recuperar l'accés als vostres fitxers xifrats.",
"Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'aplicació de xifrat està activada, però les vostres claus no s'han inicialitzat. Si us plau, tanqueu la sessió i torneu a iniciar la sessió.",
"Please enable server side encryption in the admin settings in order to use the encryption module." : "Si us plau, activeu el xifratge del servidor a la configuració de l'administrador per poder fer servir el mòdul de xifratge.",
"Encryption app is enabled and ready" : "L'aplicació de xifratge està activada i preparada",
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clau privada no és vàlida per a l'aplicació de xifratge. Si us plau, actualitzeu la contrasenya de la clau privada als vostrses paràmetres personalz per recuperar l'accés als vostres fitxers xifrats.",
"Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'aplicació de xifratge està habilitada, però les vostres claus no s'han inicialitzat. Si us plau, tanqueu la sessió i torneu a iniciar la sessió.",
"Please enable server side encryption in the admin settings in order to use the encryption module." : "Si us plau, activeu el xifratge del servidor als paràmetres de l'administrador per poder fer servir el mòdul de xifratge.",
"Encryption app is enabled and ready" : "L'aplicació de xifratge està habilitada i preparada",
"Bad Signature" : "Signatura incorrecta",
"Missing Signature" : "Falta Signatura",
"one-time password for server-side-encryption" : "contrasenya única per al xifrat de la banda del servidor",
"Default encryption module" : "Mòdul de xifrat per defecte",
"one-time password for server-side-encryption" : "contrasenya única per al xifratge en el servidor",
"Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot desxifrar aquest fitxer, probablement és un fitxer compartit. Demaneu al propietari del fitxer que torni a compartir el fitxer amb vosaltres.",
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot llegir aquest fitxer, probablement aquest sigui un fitxer compartit. Demana al propietari del fitxer que torni a compartir el fitxer amb tu.",
"Default encryption module" : "Mòdul de xifratge per defecte",
"Default encryption module for server-side encryption" : "Mòdul criptogràfic per defecte per a xifratge de servidor",
"In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Per fer servir aquest mòdul criptogràfic sha de permetre encriptació\n\t\tal servidor a la configuració de l'administrador. Un cop activat, aquest mòdul xifrarà\n\t\ttots els vostres fitxers de forma transparent. L'encriptació està basada en claus de AES 256.\n\t\tEl mòdul no tocarà fitxers existents, només s'encriptaran els nous un cop s'hagi activat\n\t\tl'encriptació des del servidor. Tampoc no és possible desactivar\n\t\tl'encriptació i tornar a un sistema sense encriptació.\n\t\tSi us plau llegiu la documentació per saber totes les implicacions abans de decidir\n\t\tactivar lencriptació des del servidor.",
"The share will expire on %s." : "La compartició venç el %s.",
"In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Per fer servir aquest mòdul criptogràfic sha de habilitar xifratge en el servidor\n\t\tals paràmetres de l'administrador. Un cop habilitat, aquest mòdul xifrarà\n\t\ttots els vostres fitxers de forma transparent. El xifratge està basada en claus de AES 256.\n\t\tEl mòdul no tocarà fitxers existents, només es xifraràn els nous un cop s'hagi activat\n\t\tel xifratge en el servidor. Tampoc no és possible inhabilitar\n\t\tel xifratge i tornar a un sistema no xifrat.\n\t\tSi us plau llegiu la documentació per saber totes les implicacions abans de decidir\n\t\tactivar el xifratge en el servidor.",
"Hey there,\n\nThe administration enabled server-side-encryption. Your files were encrypted using the password \"%s\".\n\nPlease login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.\n\n" : "Hola,\n\nL'administració ha habilitat el xifratge en el servidor. Els vostres fitxers s'han xifrat amb la contrasenya \"%s\".\n\nInicieu sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la vostra contrasenya de xifratge introduint aquesta contrasenya al camp \"Contrasenya d'inici de sessió antiga\" i la vostra contrasenya d'inici de sessió actual.\n\n",
"The share will expire on %s." : "La compartició caduca el %s.",
"Cheers!" : "Salut!",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, tanqueu la sessió i inicieu-ne una de nova.",
"Hey there,<br><br>The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.<br><br>" : "Hola,<br><br> L'administració ha habilitat el xifratge en el servidor. Els vostres fitxers s'han xifrat amb la contrasenya <strong>%s</strong>.<br><br>Si us plau, inicieu sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la vostra contrasenya de xifratge introduint aquesta contrasenya al camp \"Contrasenya d'inici de sessió antiga\" i la vostra contrasenya d'inici de sessió actual.<br><br>",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació de xifratge està activada però les claus no estan inicialitzades, tanqueu la sessió i inicieu-ne una de nova.",
"Encrypt the home storage" : "Xifra l'emmagatzematge de casa",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Si activeu aquesta opció, es xifraran tots els fitxers emmagatzemats a lemmagatzematge principal; en cas contrari, només es xifraran els fitxers demmagatzematge extern",
"Enable recovery key" : "Habilita la clau de recuperació",
"Disable recovery key" : "Desactiva la clau de recuperació",
"Disable recovery key" : "Inhabilita la clau de recuperació",
"The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La clau de recuperació és una clau de xifratge addicional que s'utilitza per xifrar fitxers. Permet la recuperació dels fitxers d'un usuari si l'usuari oblida de la seva contrasenya.",
"Recovery key password" : "Clau de recuperació de la contrasenya",
"Repeat recovery key password" : "Repetiu la contrasenya de la clau de recuperació",
@@ -46,17 +50,18 @@ OC.L10N.register(
"New recovery key password" : "Nova contrasenya de clau de recuperació",
"Repeat new recovery key password" : "Repetiu la contrasenya de la clau de recuperació nova",
"Change Password" : "Canvia la contrasenya",
"Basic encryption module" : "Mòdul bàsic d'encriptació",
"Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'accés:",
"Basic encryption module" : "Mòdul de xifratge bàsic",
"Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'inici de sessió:",
"Set your old private key password to your current log-in password:" : "Establiu la vostra antiga clau privada a l'actual contrasenya d'accés:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recordeu la contrasenya anterior podeu demanar a l'administrador que recuperi els vostres fitxers.",
"Old log-in password" : "Contrasenya antiga dinici de sessió",
"Current log-in password" : "Contrasenya actual dinici de sessió",
"Update Private Key Password" : "Actualitza la contrasenya de clau privada",
"Enable password recovery:" : "Activa la recuperació de contrasenya:",
"Enable password recovery:" : "Habilita la recuperació de contrasenya:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Si activeu aquesta opció, podreu accedir als vostres fitxers encriptats en cas de pèrdua de contrasenya",
"Enabled" : "Habilitat",
"Disabled" : "Inhabilitat",
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hola,<br><br>l'administrador ha activat l'encriptació des del servidor. Els vostres fitxers s'han encriptat fent servir la contrasenya <strong>%s</strong>. <br><br>Si us plau, inicieu la sessió a la interfície web, aneu a la secció \"mòdul bàsic dencriptació\" de la vostra configuració personal i actualitzeu la contrasenya de xifrat introduint-hi aquesta contrasenya al camp \"antiga contrasenya dinici de sessió\" i la vostra contrasenya actual.<br><br>"
"Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password \"%s\".\n\nPlease login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.\n\n" : "Hola,\n\nl'administrador ha habilitat el xifratge en el servidor. Els vostres fitxers s'han xifrat amb la contrasenya \"%s\".\n\nSi us plau, inicieu sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la vostra contrasenya de xifratge introduint aquesta contrasenya al camp \"antiga contrasenya d'inici de sessió\" i la vostra contrasenya d'inici de sessió actual.\n\n",
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hola,<br><br>l'administrador ha activat el xifratge en el servidor. Els vostres fitxers s'han encriptat fent servir la contrasenya <strong>%s</strong>. <br><br>Si us plau, inicieu la sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la contrasenya de xifrat introduint-hi aquesta contrasenya al camp \"antiga contrasenya dinici de sessió\" i la vostra contrasenya actual.<br><br>"
},
"nplurals=2; plural=(n != 1);");
+26 -21
View File
@@ -2,40 +2,44 @@
"Missing recovery key password" : "Falta la clau de recuperació de contrasenya",
"Please repeat the recovery key password" : "Si us plau, repetiu la clau de recuperació de contrasenya",
"Repeated recovery key password does not match the provided recovery key password" : "La contrasenya de la clau de recuperació repetida no coincideix amb la contrasenya de clau de recuperació proporcionada",
"Recovery key successfully enabled" : "La clau de recuperació s'ha activat",
"Could not enable recovery key. Please check your recovery key password!" : "No s'ha pogut activar la clau de recuperació. Comproveu contrasenya de la clau de recuperació!",
"Recovery key successfully disabled" : "La clau de recuperació s'ha descativat",
"Could not disable recovery key. Please check your recovery key password!" : "No s'ha pogut desactivar la clau de recuperació. Comproveu la contrasenya de la clau de recuperació!",
"Recovery key successfully enabled" : "La clau de recuperació s'ha habilitat",
"Could not enable recovery key. Please check your recovery key password!" : "No s'ha pogut habilitar la clau de recuperació. Comproveu contrasenya de la clau de recuperació!",
"Recovery key successfully disabled" : "La clau de recuperació s'ha inhabilitat",
"Could not disable recovery key. Please check your recovery key password!" : "No s'ha pogut inhabilitar la clau de recuperació. Comproveu la contrasenya de la clau de recuperació!",
"Missing parameters" : "Falten paràmetres",
"Please provide the old recovery password" : "Si us plau, proporcioneu la contrasenya de recuperació antiga",
"Please provide a new recovery password" : "Si us plau, proporcioneu una nova contrasenya de recuperació",
"Please repeat the new recovery password" : "Si us plau, repetiu la nova contrasenya de recuperació",
"Password successfully changed." : "La contrasenya s'ha canviat.",
"Could not change the password. Maybe the old password was not correct." : "No s'ha pogut canviar la contrasenya. Potser la contrasenya anterior no era correcta.",
"Recovery Key disabled" : "Clau de recuperació desactivada",
"Recovery Key enabled" : "Clau de recuperació activada",
"Could not enable the recovery key, please try again or contact your administrator" : "No es pot activar la clau de recuperació, torneu-ho a intentar o poseu-vos en contacte amb l'administrador",
"Recovery Key disabled" : "Clau de recuperació inhabilitada",
"Recovery Key enabled" : "Clau de recuperació habilitada",
"Could not enable the recovery key, please try again or contact your administrator" : "No es pot habilitar la clau de recuperació, torneu-ho a provar o poseu-vos en contacte amb l'administrador",
"Could not update the private key password." : "No s'ha pogut actualitzar la contrasenya de la clau privada.",
"The old password was not correct, please try again." : "La contrasenya antiga no és correcta, si us plau torneu-ho a provar.",
"The current log-in password was not correct, please try again." : "La contrasenya d'inici de sessió actual no era correcta, si us plau torneu-ho a provar.",
"Private key password successfully updated." : "La contrasenya de la clau privada s'ha actualitzat.",
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clau privada no és vàlida per a l'aplicació de xifrat. Si us plau, actualitzeu la contrasenya de la clau privada a la vostra configuració personal per recuperar l'accés als vostres fitxers xifrats.",
"Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'aplicació de xifrat està activada, però les vostres claus no s'han inicialitzat. Si us plau, tanqueu la sessió i torneu a iniciar la sessió.",
"Please enable server side encryption in the admin settings in order to use the encryption module." : "Si us plau, activeu el xifratge del servidor a la configuració de l'administrador per poder fer servir el mòdul de xifratge.",
"Encryption app is enabled and ready" : "L'aplicació de xifratge està activada i preparada",
"Invalid private key for encryption app. Please update your private key password in your personal settings to recover access to your encrypted files." : "Clau privada no és vàlida per a l'aplicació de xifratge. Si us plau, actualitzeu la contrasenya de la clau privada als vostrses paràmetres personalz per recuperar l'accés als vostres fitxers xifrats.",
"Encryption App is enabled, but your keys are not initialized. Please log-out and log-in again." : "L'aplicació de xifratge està habilitada, però les vostres claus no s'han inicialitzat. Si us plau, tanqueu la sessió i torneu a iniciar la sessió.",
"Please enable server side encryption in the admin settings in order to use the encryption module." : "Si us plau, activeu el xifratge del servidor als paràmetres de l'administrador per poder fer servir el mòdul de xifratge.",
"Encryption app is enabled and ready" : "L'aplicació de xifratge està habilitada i preparada",
"Bad Signature" : "Signatura incorrecta",
"Missing Signature" : "Falta Signatura",
"one-time password for server-side-encryption" : "contrasenya única per al xifrat de la banda del servidor",
"Default encryption module" : "Mòdul de xifrat per defecte",
"one-time password for server-side-encryption" : "contrasenya única per al xifratge en el servidor",
"Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot desxifrar aquest fitxer, probablement és un fitxer compartit. Demaneu al propietari del fitxer que torni a compartir el fitxer amb vosaltres.",
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "No es pot llegir aquest fitxer, probablement aquest sigui un fitxer compartit. Demana al propietari del fitxer que torni a compartir el fitxer amb tu.",
"Default encryption module" : "Mòdul de xifratge per defecte",
"Default encryption module for server-side encryption" : "Mòdul criptogràfic per defecte per a xifratge de servidor",
"In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Per fer servir aquest mòdul criptogràfic sha de permetre encriptació\n\t\tal servidor a la configuració de l'administrador. Un cop activat, aquest mòdul xifrarà\n\t\ttots els vostres fitxers de forma transparent. L'encriptació està basada en claus de AES 256.\n\t\tEl mòdul no tocarà fitxers existents, només s'encriptaran els nous un cop s'hagi activat\n\t\tl'encriptació des del servidor. Tampoc no és possible desactivar\n\t\tl'encriptació i tornar a un sistema sense encriptació.\n\t\tSi us plau llegiu la documentació per saber totes les implicacions abans de decidir\n\t\tactivar lencriptació des del servidor.",
"The share will expire on %s." : "La compartició venç el %s.",
"In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Per fer servir aquest mòdul criptogràfic sha de habilitar xifratge en el servidor\n\t\tals paràmetres de l'administrador. Un cop habilitat, aquest mòdul xifrarà\n\t\ttots els vostres fitxers de forma transparent. El xifratge està basada en claus de AES 256.\n\t\tEl mòdul no tocarà fitxers existents, només es xifraràn els nous un cop s'hagi activat\n\t\tel xifratge en el servidor. Tampoc no és possible inhabilitar\n\t\tel xifratge i tornar a un sistema no xifrat.\n\t\tSi us plau llegiu la documentació per saber totes les implicacions abans de decidir\n\t\tactivar el xifratge en el servidor.",
"Hey there,\n\nThe administration enabled server-side-encryption. Your files were encrypted using the password \"%s\".\n\nPlease login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.\n\n" : "Hola,\n\nL'administració ha habilitat el xifratge en el servidor. Els vostres fitxers s'han xifrat amb la contrasenya \"%s\".\n\nInicieu sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la vostra contrasenya de xifratge introduint aquesta contrasenya al camp \"Contrasenya d'inici de sessió antiga\" i la vostra contrasenya d'inici de sessió actual.\n\n",
"The share will expire on %s." : "La compartició caduca el %s.",
"Cheers!" : "Salut!",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació d'encriptació està activada però les claus no estan inicialitzades, tanqueu la sessió i inicieu-ne una de nova.",
"Hey there,<br><br>The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.<br><br>" : "Hola,<br><br> L'administració ha habilitat el xifratge en el servidor. Els vostres fitxers s'han xifrat amb la contrasenya <strong>%s</strong>.<br><br>Si us plau, inicieu sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la vostra contrasenya de xifratge introduint aquesta contrasenya al camp \"Contrasenya d'inici de sessió antiga\" i la vostra contrasenya d'inici de sessió actual.<br><br>",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'aplicació de xifratge està activada però les claus no estan inicialitzades, tanqueu la sessió i inicieu-ne una de nova.",
"Encrypt the home storage" : "Xifra l'emmagatzematge de casa",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Si activeu aquesta opció, es xifraran tots els fitxers emmagatzemats a lemmagatzematge principal; en cas contrari, només es xifraran els fitxers demmagatzematge extern",
"Enable recovery key" : "Habilita la clau de recuperació",
"Disable recovery key" : "Desactiva la clau de recuperació",
"Disable recovery key" : "Inhabilita la clau de recuperació",
"The recovery key is an extra encryption key that is used to encrypt files. It allows recovery of a user's files if the user forgets his or her password." : "La clau de recuperació és una clau de xifratge addicional que s'utilitza per xifrar fitxers. Permet la recuperació dels fitxers d'un usuari si l'usuari oblida de la seva contrasenya.",
"Recovery key password" : "Clau de recuperació de la contrasenya",
"Repeat recovery key password" : "Repetiu la contrasenya de la clau de recuperació",
@@ -44,17 +48,18 @@
"New recovery key password" : "Nova contrasenya de clau de recuperació",
"Repeat new recovery key password" : "Repetiu la contrasenya de la clau de recuperació nova",
"Change Password" : "Canvia la contrasenya",
"Basic encryption module" : "Mòdul bàsic d'encriptació",
"Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'accés:",
"Basic encryption module" : "Mòdul de xifratge bàsic",
"Your private key password no longer matches your log-in password." : "La clau privada ja no es correspon amb la contrasenya d'inici de sessió:",
"Set your old private key password to your current log-in password:" : "Establiu la vostra antiga clau privada a l'actual contrasenya d'accés:",
" If you don't remember your old password you can ask your administrator to recover your files." : "Si no recordeu la contrasenya anterior podeu demanar a l'administrador que recuperi els vostres fitxers.",
"Old log-in password" : "Contrasenya antiga dinici de sessió",
"Current log-in password" : "Contrasenya actual dinici de sessió",
"Update Private Key Password" : "Actualitza la contrasenya de clau privada",
"Enable password recovery:" : "Activa la recuperació de contrasenya:",
"Enable password recovery:" : "Habilita la recuperació de contrasenya:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Si activeu aquesta opció, podreu accedir als vostres fitxers encriptats en cas de pèrdua de contrasenya",
"Enabled" : "Habilitat",
"Disabled" : "Inhabilitat",
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hola,<br><br>l'administrador ha activat l'encriptació des del servidor. Els vostres fitxers s'han encriptat fent servir la contrasenya <strong>%s</strong>. <br><br>Si us plau, inicieu la sessió a la interfície web, aneu a la secció \"mòdul bàsic dencriptació\" de la vostra configuració personal i actualitzeu la contrasenya de xifrat introduint-hi aquesta contrasenya al camp \"antiga contrasenya dinici de sessió\" i la vostra contrasenya actual.<br><br>"
"Hey there,\n\nthe admin enabled server-side-encryption. Your files were encrypted using the password \"%s\".\n\nPlease login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.\n\n" : "Hola,\n\nl'administrador ha habilitat el xifratge en el servidor. Els vostres fitxers s'han xifrat amb la contrasenya \"%s\".\n\nSi us plau, inicieu sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la vostra contrasenya de xifratge introduint aquesta contrasenya al camp \"antiga contrasenya d'inici de sessió\" i la vostra contrasenya d'inici de sessió actual.\n\n",
"Hey there,<br><br>the admin enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"old log-in password\" field and your current login-password.<br><br>" : "Hola,<br><br>l'administrador ha activat el xifratge en el servidor. Els vostres fitxers s'han encriptat fent servir la contrasenya <strong>%s</strong>. <br><br>Si us plau, inicieu la sessió a la interfície web, aneu a la secció \"Mòdul de xifratge bàsic\" dels vostres paràmetres personals i actualitzeu la contrasenya de xifrat introduint-hi aquesta contrasenya al camp \"antiga contrasenya dinici de sessió\" i la vostra contrasenya actual.<br><br>"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -2
View File
@@ -54,8 +54,8 @@ OC.L10N.register(
"Your private key password no longer matches your log-in password." : "Dit private nøglekodeord stemmer ikke længere overens med dit login-kodeord.",
"Set your old private key password to your current log-in password:" : "Sæt dit gamle, private nøglekodeord til at være dit nuværende login-kodeord. ",
" If you don't remember your old password you can ask your administrator to recover your files." : "Hvis du ikke kan huske dit gamle kodeord kan du bede din administrator om at gendanne dine filer.",
"Old log-in password" : "Gammelt login kodeord",
"Current log-in password" : "Nuvrende login kodeord",
"Old log-in password" : "Gammel adgangskode",
"Current log-in password" : "Nuværende adgangskode",
"Update Private Key Password" : "Opdater Privat Nøgle Kodeord",
"Enable password recovery:" : "Aktiver kodeord gendannelse:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering af denne valgmulighed tillader dig at generhverve adgang til dine krypterede filer i tilfælde af tab af kodeord",
+2 -2
View File
@@ -52,8 +52,8 @@
"Your private key password no longer matches your log-in password." : "Dit private nøglekodeord stemmer ikke længere overens med dit login-kodeord.",
"Set your old private key password to your current log-in password:" : "Sæt dit gamle, private nøglekodeord til at være dit nuværende login-kodeord. ",
" If you don't remember your old password you can ask your administrator to recover your files." : "Hvis du ikke kan huske dit gamle kodeord kan du bede din administrator om at gendanne dine filer.",
"Old log-in password" : "Gammelt login kodeord",
"Current log-in password" : "Nuvrende login kodeord",
"Old log-in password" : "Gammel adgangskode",
"Current log-in password" : "Nuværende adgangskode",
"Update Private Key Password" : "Opdater Privat Nøgle Kodeord",
"Enable password recovery:" : "Aktiver kodeord gendannelse:",
"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" : "Aktivering af denne valgmulighed tillader dig at generhverve adgang til dine krypterede filer i tilfælde af tab af kodeord",
+2
View File
@@ -33,8 +33,10 @@ OC.L10N.register(
"Default encryption module" : "Module de chiffrement par défaut",
"Default encryption module for server-side encryption" : "Module de chiffrement par défaut pour le chiffrement côté serveur",
"In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Pour utiliser ce module de chiffrement, vous devez activer le chiffrement côté serveur dans les paramètres d'administration. Une fois activé, ce module chiffrera tous vos fichiers de manière transparente. Le chiffrement est basé sur des clés AES 256 bits.\nLe module ne touchera pas les fichiers existants, seuls les nouveaux fichiers seront chiffrés. Une fois le chiffrement côté serveur activé, il n'est pas possible de désactiver le chiffrement et de revenir à un système non chiffré.\n\t\tVeuillez lire la documentation pour connaître toutes les implications avant de vous décider à activer le chiffrement côté serveur.",
"Hey there,\n\nThe administration enabled server-side-encryption. Your files were encrypted using the password \"%s\".\n\nPlease login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.\n\n" : "Bonjour,\n\nL'administration a activé le chiffrement côté serveur. Vos fichiers ont été chiffrés avec le mot de passe \"%s\".\n\nVeuillez vous connecter à l'interface web, vous rendre à la section \"Module de chiffrement de base\" de vos paramètres personnels et mettre à jour votre mot de passe de chiffrement en insérant ce mot de passe dans le champ \"Ancien mot de passe de connexion\" ainsi que votre mot de passe actuel.\n\n",
"The share will expire on %s." : "Le partage expirera le %s.",
"Cheers!" : "À bientôt !",
"Hey there,<br><br>The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.<br><br>" : "Hé là, <br><br>L'administration a activé le chiffrement côté serveur. Vos fichiers ont été cryptés avec le mot de passe <strong>%s</strong>.<br><br>Veuillez-vous connecter à l'interface Web, vous rendre à la section \"Module de chiffrement de base\" de vos paramètres personnels et mettre à jour votre mot de passe en entrant celui fournit ci-dessus dans le champ \"Ancien mot de passe de connexion\", ainsi que votre mot de passe actuel.<br><br>",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'application de chiffrement est activée mais vos clefs ne sont pas initialisées. Veuillez vous déconnecter et ensuite vous reconnecter.",
"Encrypt the home storage" : "Chiffrer l'espace de stockage principal",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "L'activation de cette option chiffre tous les fichiers du stockage principal, sinon seuls les espaces de stockage externes seront chiffrés",
+2
View File
@@ -31,8 +31,10 @@
"Default encryption module" : "Module de chiffrement par défaut",
"Default encryption module for server-side encryption" : "Module de chiffrement par défaut pour le chiffrement côté serveur",
"In order to use this encryption module you need to enable server-side\n\t\tencryption in the admin settings. Once enabled this module will encrypt\n\t\tall your files transparently. The encryption is based on AES 256 keys.\n\t\tThe module won't touch existing files, only new files will be encrypted\n\t\tafter server-side encryption was enabled. It is also not possible to\n\t\tdisable the encryption again and switch back to a unencrypted system.\n\t\tPlease read the documentation to know all implications before you decide\n\t\tto enable server-side encryption." : "Pour utiliser ce module de chiffrement, vous devez activer le chiffrement côté serveur dans les paramètres d'administration. Une fois activé, ce module chiffrera tous vos fichiers de manière transparente. Le chiffrement est basé sur des clés AES 256 bits.\nLe module ne touchera pas les fichiers existants, seuls les nouveaux fichiers seront chiffrés. Une fois le chiffrement côté serveur activé, il n'est pas possible de désactiver le chiffrement et de revenir à un système non chiffré.\n\t\tVeuillez lire la documentation pour connaître toutes les implications avant de vous décider à activer le chiffrement côté serveur.",
"Hey there,\n\nThe administration enabled server-side-encryption. Your files were encrypted using the password \"%s\".\n\nPlease login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.\n\n" : "Bonjour,\n\nL'administration a activé le chiffrement côté serveur. Vos fichiers ont été chiffrés avec le mot de passe \"%s\".\n\nVeuillez vous connecter à l'interface web, vous rendre à la section \"Module de chiffrement de base\" de vos paramètres personnels et mettre à jour votre mot de passe de chiffrement en insérant ce mot de passe dans le champ \"Ancien mot de passe de connexion\" ainsi que votre mot de passe actuel.\n\n",
"The share will expire on %s." : "Le partage expirera le %s.",
"Cheers!" : "À bientôt !",
"Hey there,<br><br>The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>.<br><br>Please login to the web interface, go to the section \"Basic encryption module\" of your personal settings and update your encryption password by entering this password into the \"Old log-in password\" field and your current login-password.<br><br>" : "Hé là, <br><br>L'administration a activé le chiffrement côté serveur. Vos fichiers ont été cryptés avec le mot de passe <strong>%s</strong>.<br><br>Veuillez-vous connecter à l'interface Web, vous rendre à la section \"Module de chiffrement de base\" de vos paramètres personnels et mettre à jour votre mot de passe en entrant celui fournit ci-dessus dans le champ \"Ancien mot de passe de connexion\", ainsi que votre mot de passe actuel.<br><br>",
"Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "L'application de chiffrement est activée mais vos clefs ne sont pas initialisées. Veuillez vous déconnecter et ensuite vous reconnecter.",
"Encrypt the home storage" : "Chiffrer l'espace de stockage principal",
"Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "L'activation de cette option chiffre tous les fichiers du stockage principal, sinon seuls les espaces de stockage externes seront chiffrés",

Some files were not shown because too many files have changed in this diff Show More