-
Notifications
You must be signed in to change notification settings - Fork 274
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deck calendars cannot be shared #3293
Comments
This is something to debug. I suspect that either permissions are not sufficient or there are other props necessary to make a calendar shareable. https://github.com/nextcloud/deck/tree/7b647d34c593615b418434705e9528b11c3b43c1/lib/DAV handles the Deck part of the Calendars if you want to check it yourself. |
@ChristophWurst AFAIK, the Deck calendar entries are "automatically" created and added by the system itself when a new deck board is created. The user has nothing to do with it, at least directly. Do you think it could be a deck App related problem (deck creates calendars with wrong/insufficient permissions)? or a Calendar App issue that cannot access properly to this new entry? I am not much a programmer, but I will try to take a look. Any help will be appreciated :) UPDATE => I have made some tests and "Deck: Board_name" Calendars are not present in the oc_calendars table (or any other related table). Maybe this is the reason.... I could not find any table (oc_deck_XX or oc_calendar_YY) where the Deck calendars are stored, but they exist and are available through the calendar tab. I could not find how the Deck calendars are retrieved and showed.... I will check your link for any tips in the code. Thank you! |
This is not a surprise. Deck creates the calendars on the fly, with the code that I linked to. |
We can move this to Deck. |
@tcitworld Thank you!!! If you need any more info/whatever, let me know. |
On server version 22, deck 1.5.1, calendar 2.3.3: Even it is impossible to me to publicly share any other calendar with Deck enabled:
If I just disable the Deck app with the very same link I can see my public calendar. (public link is working if I'm logged in:) Edit: |
FYI. Still cannot be shared under latest upgrade: -NC: 21.0.5 Thank you. |
The CalDAV implementation is currently implemented for read only access. Sharing is an enhancement that is related to write access which is tracked in #2399 |
@juliushaertl OK, thank you for the update and the tracking! |
Is there any way we could get a quick access to iCal read-only implementation? My use case is I'd like to see the deadlines on Deck tasks in my google calendar that syncs to the phone. Currently it's impossible, unless this gets done or I fix something up using the API on my own. #2399 seems stuck. Edit: Oh, and also - Google Calendar doesn't support authentication, so the only wait it'd work is with a public iCal link, same way the Calendar app allows us to use. |
AFAIK this issue is not about to have a read-only deck related calendar. The problem is that NextCloud-Deck-Calendar does not provide a public share link for a deck-calendar, regardless r/o, r/w or anything. That means you cannot add your deck calendar (iCal url link) to any third-party service (Google calendar, Apple Cal...whatever) so it cannot be checked outside Nextcloud platform. The read-only feature only means that you cannot update events from outside NextCloud Platform, but that's OK if at least can be added to a external service that manages all your calendars. At this time, only non-deck calendars provide a public URL to be seen from outside. Thank you! |
Hi. Is there any update on this? It seems that CalDavSynchronizer is not able to get the deck calendar, too. |
Here's a workaround for getting a read-only calendar subscription working for eg. google calendar
You can get the VTODOS using http basic auth from the url: Most calendars do not support VTODOS, so they need to be converted to VEVENTS // example typescript
function vTodoToVevent(icalString: string) {
const [start, ...events] = icalString.split('\nBEGIN:VTODO');
return [
start,
events
// Remove the DESCRIPTION field from the VTODO
.map((event) => event.split('\nDESCRIPTION:')[0])
// Filter out events that don't have a DUE date
.filter((event) => event?.includes('\nDUE'))
.map((event) =>
[
'\nBEGIN:VEVENT',
event
? event
// VTODO uses DUE, VEVENT uses DTSTART
.replace('DUE:', 'DTSTART:')
.split('\n')
// Remove STATUS and CATEGORIES fields, they are not supported in VEVENT
.filter(
(line) =>
!line.startsWith('STATUS') && !line.startsWith('CATEGORIES')
)
.join('\n')
: '',
'\nEND:VEVENT',
].join('')
).join(''),
'\nEND:VCALENDAR',
].join('');
} You could of course extend this to return a single calendar subscription link for multiple boards. |
Steps to reproduce
Expected behaviour
Any new deck board add a calendar entry with other "regular" Calendars (personal, birthday...). All deck calendars have the same default name:
Deck: <Board_name>
All existing calendars must have the "share" propierty in order to allow this calendar to be reachable outside nextcloud environment (iCal URL).
Actual behaviour
Deck calendars cannot be shared. The share icon is not showed like regular calendars.
Calendar app
Calendar app version: 2.3.3 (latest)
Thank you!
The text was updated successfully, but these errors were encountered: