nextcloud / server

☁️ Nextcloud server, a safe home for all your data
https://nextcloud.com
GNU Affero General Public License v3.0
27.42k stars 4.07k forks source link

Allow calendars to be shared without adding the (creator) label to the name. #20945

Open foozmeat opened 4 years ago

foozmeat commented 4 years ago

Is your feature request related to a problem? Please describe. My users have been confused by the naming convention of shared calendars. If I say, create a calendar called Attendance and share it with a group, my users will see a calendar called Attendance (James) in their client. Many users don't understand that the name of the calendar is unique to them because it goes against their experience of shared resources so they don't attempt to rename it for fear that it will affect everyone.

Describe the solution you'd like I would like the option for the calendar name to be unchanged from what I choose when I share it.

Describe alternatives you've considered Allowing a "share name" pre-populated with the current behavior but editable by the sharer would be an alternative. This would be a one-time option at the point of creation so it might create confusion for sharers.

tcitworld commented 4 years ago

The Nextcloud calendar app now shows the avatar of the person that shared the calendar, but most 3rd-party CalDAV apps don't have this kind of behavior anyway, therefore the (Sharer) part was added in #936

I feel like an option would be too much work. What should be worked on is how to tell users the calendar properties can be editable on their side without affecting everyone.

Thoughts @georgehrke?

georgehrke commented 4 years ago

so they don't attempt to rename it for fear that it will affect everyone.

Properties like color and display name are user-based. It will default to the values of the calendar-owner, but you can just set your own value without affecting other users.

What should be worked on is how to tell users the calendar properties can be editable on their side without affecting everyone.

Hm. I'm not really sure how we should do that. If the calendar is shared with the user viewing it, we could show a tooltip on the "Edit name" and "Edit color" saying "If you rename the calendar, only you can see the new name". But I don't see anything we could do to improve discoverability of that behavior in other clients.

tcitworld commented 4 years ago

Yeah, that's what I thought as well on the NC Calendar side only.

foozmeat commented 4 years ago

Let me add that I think the discoverability problem is lessened if the user doesn't feel the need to rename the calendar in the first place. Our previous calendar solution (baikal) didn't support per client calendar names and colors and it was a constant problem where they were unintentionally changed so our users have been trained to fear changing them.

Most users aren't hip to the intricacies of calendar servers so reducing the number of "technical" decisions they have to make is key when convincing people to switch to Nextcloud. If a user who's new to NC suddenly sees Attendance (James) in their calendar list I wouldn't blame them for thinking they were looking at my calendar and be confused. Then I turn around and say "oh just rename it" and they say "can't you change it for everyone?". I don't blame them for thinking this.

Anyway, thanks for responding quickly to my issue, I appreciate it.

szaimen commented 3 years ago

cc @nextcloud/designers Maybe it should be decided if we just don't append the name by default when sharing a calender because the avatar is already shown by default directly next to the calendar name if it is shared with you. What do you think?

ghost commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity and seems to be missing some essential information. It will be closed if no further activity occurs. Thank you for your contributions.

juliusknorr commented 3 years ago

I think it makes sense to hide it, ideally we could of course add it if there is a personal calendar with the same name.

pjrobertson commented 3 years ago

I agree that there should be an option to hide the (user) tag. Perhaps another solution would be to have a checkbox when setting up a calendar called something like "Append username to calendar when sharing". Some pseudo code would then be to just wrap the existing code that appends the (user) tag in something like this:

if (calendar's "append username to calendar when sharing" == true) {
// do existing code that appends (user)
}
nimishavijay commented 3 years ago

I think it makes sense to hide it too, since the avatar is being shown. Alternatively we could show the name in brackets in a lighter colour.

As a quick fix for the calendar name/colour problem we could add a subline under "Edit name" and "Edit colour" that says "Changes visible to only you" or something to that effect, what do you think?

flortsch commented 1 year ago

If you know what you are doing, you can work around this issue by inserting values yourself into the database to rename shared calendars (which can be automated for many users).

The information is stored in the oc_properties table. Picking up the example in the first post, the following SQL statement inserts a property, such that it renames an attendance calendar of a user james that is shared with a user john from Attendance (James) to Attendance:

insert into oc_properties (userid, propertypath, propertyname, propertyvalue) values ("john", "calendars/john/attendance_shared_by_james", "{DAV:}displayname", "Attendance");

These properties have to be inserted for all users the calendar is shared with.

jancborchardt commented 1 year ago

It seems to be a pretty simple fix to just remove the appended name, as previously mentioned? @ChristophWurst

As a step 2, we could only show it on the client-side when there is already a calendar with the same name shared with you – if needed?

ChristophWurst commented 1 year ago

It's possible to change this, yes. Beware that the sharing state is only obvious for our Calendar app as outlined earlier in https://github.com/nextcloud/server/issues/20945#issuecomment-627800777. No other app will allow you to see any difference between your Personal calendar and your coworkers Personal calendar shared with you. They will be indistinguishable on any connected devices. Sharing personal calendar is quite common, we see it with a lot of our colleagues.

tcitworld commented 1 year ago

For reference, this is related to the https://github.com/nextcloud/server/issues/20096 (kinda) mess.

If other players in the CalDAV world would be interesting in persuing https://datatracker.ietf.org/doc/html/draft-pot-caldav-sharing-01 efforts, this wouldn't be an issue.

ChristophWurst commented 1 year ago

What we can do is keep the current display name so sharing is clear on any connected client but try to detect the format in our Calendar app (calendar has sharing properties and the (sharer) suffix) and remove the suffix or render it differently.

tcitworld commented 1 year ago

Another possibility, is feasible, is to try to add the display name at a different place than CalDAVBackend.php (through a Sabre plugin), then add it only on clients that do not provide some X-NC-Calendar header.