Web UI: Accept/Decline this and all future recurrences
Steps to reproduce
- From the web interface, user A creates a recurring event (e.g. weekly), with a schedule, and invites user B to participate.
- User B goes to his "Calendar" in the web interface and goes to one of the occurrences, for example the first one, and accepts it.
- When going on to subsequent occurrences, even after refreshing the page, user B finds that the other occurrences have not been accepted (both buttons "accept" and "decline" are displayed), even though they are the same (recurring) event.
Easily tested on 2 test servers (Nextcloud 28 and 29) and a production server (Nextcloud 28).
Expected behavior
When one of the occurrences of the recurring event is accepted, all the others should be accepted.
Actual behaviour
Only one of the occurrences is marked as accepted, unlike the others.
Calendar app version
4.7.10 (and previous like 4.7.6)
CalDAV-clients used
Thunderbird and Tbsync
Browser
126.0.2
Client operating system
Ubuntu 22.04 LTS
Server operating system
CentOS
Web server
Nginx
Database engine version
MariaDB
PHP engine version
PHP 8.1
Nextcloud version
29.0.1 (and 28.0.5)
Updated from an older installed version or fresh install
Updated from an older version
List of activated apps
{
"passwordsalt": "***REMOVED SENSITIVE VALUE***",
"secret": "***REMOVED SENSITIVE VALUE***",
"trusted_domains": [
"nc29.test.mydomain.fr"
],
"datadirectory": "***REMOVED SENSITIVE VALUE***",
"dbtype": "mysql",
"version": "29.0.1.1",
"overwrite.cli.url": "https:\/\/nc29.test.mydomain.fr",
"dbname": "***REMOVED SENSITIVE VALUE***",
"dbhost": "***REMOVED SENSITIVE VALUE***",
"dbport": "",
"dbtableprefix": "oc_",
"mysql.utf8mb4": true,
"dbuser": "***REMOVED SENSITIVE VALUE***",
"dbpassword": "***REMOVED SENSITIVE VALUE***",
"installed": true,
"instanceid": "***REMOVED SENSITIVE VALUE***",
"log_type": "file",
"logfile": "\/var\/log\/nextcloud\/nc29.test.mydomain.fr\/nextcloud.log",
"redis": {
"host": "***REMOVED SENSITIVE VALUE***",
"password": "***REMOVED SENSITIVE VALUE***",
"port": 6379,
"dbindex": 2,
"timeout": 0
},
"skeletondirectory": "",
"logtimezone": "Europe\/Paris",
"updater.release.channel": "beta",
"mail_smtpmode": "smtp",
"mail_smtpsecure": "ssl",
"mail_from_address": "***REMOVED SENSITIVE VALUE***",
"mail_domain": "***REMOVED SENSITIVE VALUE***",
"mail_smtpname": "***REMOVED SENSITIVE VALUE***",
"mail_smtppassword": "***REMOVED SENSITIVE VALUE***",
"mail_smtphost": "***REMOVED SENSITIVE VALUE***",
"mail_smtpauthtype": "PLAIN",
"default_language": "fr",
"default_phone_region": "FR",
"defaultapp": "",
"trashbin_retention_obligation": "20,40",
"versions_retention_obligation": "auto,40",
"appstoreurl": "https:\/\/apps.nextcloud.com\/api\/v1",
"quota_include_external_storage": false,
"cron_log": true,
"has_internet_connection": true,
"updatechecker": true,
"appstoreenabled": true,
"filelocking.enabled": true,
"session_keepalive": true,
"knowledgebaseenabled": true,
"allow_user_to_change_display_name": true,
"enable_previews": true,
"enable_avatars": true,
"auth.bruteforce.protection.enabled": true,
"loglevel": 2,
"log_rotate_size": 104857600,
"mail_smtpauth": 1,
"mail_smtpport": 465,
"session_lifetime": 86400,
"remember_login_cookie_lifetime": 1296000,
"preview_max_filesize_image": 50,
"activity_expire_days": 120,
"memcache.local": "\\OC\\Memcache\\APCu",
"memcache.locking": "\\OC\\Memcache\\Redis",
"memcache.distributed": "\\OC\\Memcache\\Redis",
"app_install_overwrite": [
"admin_audit",
"user_ldap",
"onlyoffice",
"groupfolders"
],
"ldapProviderFactory": "OCA\\User_LDAP\\LDAPProviderFactory",
"maintenance_window_start": 1,
"maintenance": false
}
Nextcloud configuration
Enabled:
- activity: 2.21.1
- admin_audit: 1.19.0
- assistant: 1.0.9
- calendar: 4.7.10
- call_summary_bot: 1.1.0
- circles: 29.0.0-dev
- cloud_federation_api: 1.12.0
- collectives: 2.10.1
- comments: 1.19.0
- contacts: 6.0.0
- contactsinteraction: 1.10.0
- context_chat: 2.1.2
- dashboard: 7.9.0
- dav: 1.30.1
- deck: 1.13.0
- federatedfilesharing: 1.19.0
- federation: 1.19.0
- files: 2.1.0
- files_downloadlimit: 2.0.0
- files_pdfviewer: 2.10.0
- files_reminders: 1.2.0
- files_sharing: 1.21.0
- files_trashbin: 1.19.0
- files_versions: 1.22.0
- firstrunwizard: 2.18.0
- forms: 4.2.3
- groupfolders: 17.0.1
- impersonate: 1.16.0
- integration_openai: 2.0.1
- integration_replicate: 3.0.0
- logreader: 2.14.0
- lookup_server_connector: 1.17.0
- mail: 3.6.0
- nextcloud_announcements: 1.18.0
- notifications: 2.17.0
- oauth2: 1.17.0
- onlyoffice: 9.2.0
- password_policy: 1.19.0
- photos: 2.5.0
- privacy: 1.13.0
- provisioning_api: 1.19.0
- recommendations: 2.1.0
- related_resources: 1.4.0
- richdocuments: 8.4.2
- serverinfo: 1.19.0
- settings: 1.12.0
- sharebymail: 1.19.0
- spreed: 19.0.0
- support: 1.12.0
- systemtags: 1.19.0
- tables: 0.7.2
- text: 3.10.0
- theming: 2.4.0
- twofactor_backupcodes: 1.18.0
- updatenotification: 1.19.1
- user_ldap: 1.20.0
- user_status: 1.9.0
- viewer: 2.3.0
- weather_status: 1.9.0
- workflowengine: 2.11.0
- workspace: 3.2.0
Disabled:
- app_api: 2.6.0
- bruteforcesettings
- encryption
- files_external
- survey_client: 1.17.0
- suspicious_login
- twofactor_totp
Web server error log
Can be provided if necesary
Log file
Can be provided if necesary
Browser log
Can be provided if necesary
Additional info
Can be provided if necesary
This is in fact by design. We thought about this when implementing the feature and mimicked what other calendaring clients do. E.g. Thunderbird accepts/declines a single recurrence by default and has a (somewhat hidden) button to accept all recurrences.
This is more of a feature request than a bug report.
https://github.com/nextcloud/calendar/blob/bf56092c18cb55d4469a3d08ba22c51aec0078cf/src/components/Editor/InvitationResponseButtons.vue#L139-L140
This is in fact by design. We thought about this when implementing the feature and mimicked what other calendaring clients do. E.g. Thunderbird accepts/declines a single recurrence by default and has a (somewhat hidden) button to accept all recurrences.
This is more of a feature request than a bug report.
https://github.com/nextcloud/calendar/blob/bf56092c18cb55d4469a3d08ba22c51aec0078cf/src/components/Editor/InvitationResponseButtons.vue#L139-L140
@st3iny thanks for your answer, but how can you explain that when clicking in invitation e-mails on the accept button (the Nextcloud styled HTML button in e-mail body), it accepts all recurrences at once ?
The invitation response buttons in the email actually use a completely different backend. They call a custom REST API made just for that purpose hence the behavior might be different.
But that is actually an interesting find. So there is a functional difference between both methods of accepting events which should not be the case.
@st3iny any news about this ? Thanks