Connect to subcalendar

Registered by Probot

Possibility to connect to a Sub-Calendar and not only to the main calendar:

Eg:
The following structure (in Outlook):
Main Folder
| - Email
| - .....
| -Calendar
             |- Work

Calendar is the main Calendar, Work is a Sub-Calendar of Calendar.

Show in Lightning the main Calendar and the Work calendar.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Sprints

Whiteboard

I think to look at subcalendars or shared calendars, the folder we search in needs to be changed. That's in soapout.js:makeFindItem.

I see two items here:

- find out how to locate the shared calendar (name? uid?)
- add GUI elements to specify the calendar

------

I (<email address hidden>) was able to manually edit soapout.js:makeFindItem to load a shared calendar,

    req.m::ParentFolderIds.t::DistinguishedFolderId.@Id = folder;
    req.m::ParentFolderIds.t::DistinguishedFolderId.content = <>
      <t:Mailbox xmlns:t={t}>
          <t:EmailAddress xmlns:t={t}><email address hidden></t:EmailAddress>
      </t:Mailbox>
      </>;

In this case the shared calendar is owned by <email address hidden>. When I put my own address in there I got, as expected, my own calendar. Putting in the shared address worked as expected, and I was able to add and edit events!

------

This is a big deal for me - the only reason I want to access Exchange calendars is to see calendars shared by my colleagues.

I (Heath Raftery, <email address hidden>) have just finished making changes to allow opening of shared calendars by their FolderID. For folders that don't have a "WellKnown" name (which pretty much means everything other than each user's main Calendar), this seems like the most reliable way of finding the calendar. The changes are limited to calExchange.js and soapout.js. What's the best way to get them submitted for review/merge/whatever?

There are a few outstanding bugs:

* All existing events appear with a slightly ugly dotted border. According to this <http://forums.mozillazine.org/viewtopic.php?f=46&t=1730795> that's because they're not marked "I will attend". Haven't looked into the rhyme or reason.
* The calendar ID is not persisted or entered separately. Instead the location is suffixed with ?calendarID. This was the best way I could find to easily enter the data; not have the server choke on the URL; and still have individual calendars pass the uniqueness test.
* I didn't even look at invitations - they probably don't work perfectly.
* Since auto discovery doesn't work here, I only tested with a manually supplied Exchange URL.
* I only made changes to the functions that retrieve a calendar and add an event to a calendar. I didn't look particularly hard at the rest of the interface, so there's bound to be functionality missing. Modifying an event comes to mind.
* This is my first look at the code, and in fact at any XUL/js based project in any great detail. My style is likely to be less than perfect.

There are some caveats:

* The calendar ID is supplied by suffixing it to the "Location" in the "New Calendar" wizard. Separate the Exchange URL (typically ends with EWS/Exchange.amsx) and the calendar ID with a question mark "?".
* The calendar ID must be in "EwsId" format, documented here <http://msdn.microsoft.com/en-us/library/exchangewebservices.idformattype(v=exchg.140).aspx>
* This is a big one. Invitations to shared calendars sent by users of Outlook do not include the calendar ID in plain text. Instead, the "x-sharing-remote-uid:" header contains a "HexEntryId" format version of the ID. It must be converted to an EwsId before it can be used. I wrote a small C# program that sends a request to my Exchange server to do this. Note that you need an Exchange server to do this, because for one it also requires the mailbox of the sender of the invitation.

Looking forward to making this available to others that need this feature. Please advise how to proceed!

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.