From b132fcc1028d37d60da4d1d46774a072ccde5f1e Mon Sep 17 00:00:00 2001 From: Jonas Heinrich Date: Fri, 18 Aug 2023 18:20:27 +0200 Subject: [PATCH] feat: Ability to render groups as attendees Implement ability to render groups and group members as attendees of an calendar event. This is implemented by reading and interpreting the CUTYPE and MEMBER parameter of the iCal ATTENDEE attribute. For example attendee "user1" belongs to a group identified with the uri mygroup@localhost: "ATTENDEE;MEMBER="mailto:mygroup@localhost";CN=user1;[...]". The group entity is also a ATTENDEE entry but with "CUTYPE=GROUP" and with the corresponding uri mygroup@localhost: "ATTENDEE;CN=MyGroup;CUTYPE=GROUP;[...]:mailto:mygroup@localhost". In the frontend, groups will be displayed as a collapsible list whereas members of the group will be displayed with the same functionality as normal attendees. In case the group entry gets deleted, all of its members will get removed too. Empty groups with no members might be present in the iCal file but won't get rendered. According to the iCal specifications, groups can have more than one uri and attendees could have multiple membership addresses in one attribute. This is neither covered yet in calendar-js nor in this PR. Signed-off-by: Jonas Heinrich --- .../Editor/AvatarParticipationStatus.vue | 211 ++++++++++-------- .../Editor/Invitees/InviteesList.vue | 56 ++++- .../Editor/Invitees/InviteesListItem.vue | 113 +++++++++- src/models/attendee.js | 7 + src/store/calendarObjectInstance.js | 13 ++ 5 files changed, 296 insertions(+), 104 deletions(-) diff --git a/src/components/Editor/AvatarParticipationStatus.vue b/src/components/Editor/AvatarParticipationStatus.vue index fbcb58dbd0..f599791638 100644 --- a/src/components/Editor/AvatarParticipationStatus.vue +++ b/src/components/Editor/AvatarParticipationStatus.vue @@ -1,7 +1,10 @@