1
0
mirror of https://github.com/moparisthebest/davmail synced 2024-08-13 16:53:51 -04:00

Caldav: allow direct access to task folder

git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1792 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
mguessan 2011-09-16 08:53:41 +00:00
parent d8bffe21f0
commit ca8234b246

View File

@ -297,7 +297,7 @@ public class CaldavConnection extends AbstractConnection {
ExchangeSession.Folder folder = session.getFolder(folderPath); ExchangeSession.Folder folder = session.getFolder(folderPath);
if (folder.isContact()) { if (folder.isContact()) {
sendHttpResponse(HttpStatus.SC_OK, buildEtagHeader(folder.etag), "text/vcard", (byte[]) null, true); sendHttpResponse(HttpStatus.SC_OK, buildEtagHeader(folder.etag), "text/vcard", (byte[]) null, true);
} else if (folder.isCalendar()) { } else if (folder.isCalendar() || folder.isTask()) {
List<ExchangeSession.Event> events = session.getAllEvents(folderPath); List<ExchangeSession.Event> events = session.getAllEvents(folderPath);
ChunkedResponse response = new ChunkedResponse(HttpStatus.SC_OK, "text/calendar;charset=UTF-8"); ChunkedResponse response = new ChunkedResponse(HttpStatus.SC_OK, "text/calendar;charset=UTF-8");
response.append("BEGIN:VCALENDAR\r\n"); response.append("BEGIN:VCALENDAR\r\n");
@ -429,7 +429,7 @@ public class CaldavConnection extends AbstractConnection {
if (folder.isContact()) { if (folder.isContact()) {
response.appendProperty("D:resourcetype", "<D:collection/>" + response.appendProperty("D:resourcetype", "<D:collection/>" +
"<E:addressbook/>"); "<E:addressbook/>");
} else if (folder.isCalendar()) { } else if (folder.isCalendar() || folder.isTask()) {
response.appendProperty("D:resourcetype", "<D:collection/>" + "<C:calendar/>"); response.appendProperty("D:resourcetype", "<D:collection/>" + "<C:calendar/>");
} else { } else {
response.appendProperty("D:resourcetype", "<D:collection/>"); response.appendProperty("D:resourcetype", "<D:collection/>");
@ -448,6 +448,8 @@ public class CaldavConnection extends AbstractConnection {
response.appendProperty("D:getcontenttype", "text/x-vcard"); response.appendProperty("D:getcontenttype", "text/x-vcard");
} else if (folder.isCalendar()) { } else if (folder.isCalendar()) {
response.appendProperty("D:getcontenttype", "text/calendar; component=vevent"); response.appendProperty("D:getcontenttype", "text/calendar; component=vevent");
} else if (folder.isTask()) {
response.appendProperty("D:getcontenttype", "text/calendar; component=vtodo");
} }
} }
if (request.hasProperty("getetag")) { if (request.hasProperty("getetag")) {
@ -472,8 +474,12 @@ public class CaldavConnection extends AbstractConnection {
if (request.hasProperty("calendar-description")) { if (request.hasProperty("calendar-description")) {
response.appendProperty("C:calendar-description", ""); response.appendProperty("C:calendar-description", "");
} }
if (request.hasProperty("supported-calendar-component-set") && folder.isCalendar()) { if (request.hasProperty("supported-calendar-component-set")) {
response.appendProperty("C:supported-calendar-component-set", "<C:comp name=\"VEVENT\"/><C:comp name=\"VTODO\"/>"); if (folder.isCalendar()) {
response.appendProperty("C:supported-calendar-component-set", "<C:comp name=\"VEVENT\"/><C:comp name=\"VTODO\"/>");
} else if (folder.isTask()) {
response.appendProperty("C:supported-calendar-component-set", "<C:comp name=\"VTODO\"/>");
}
} }
if (request.hasProperty("current-user-privilege-set")) { if (request.hasProperty("current-user-privilege-set")) {
@ -630,7 +636,7 @@ public class CaldavConnection extends AbstractConnection {
if (request.getDepth() == 1) { if (request.getDepth() == 1) {
if (folder.isContact()) { if (folder.isContact()) {
contacts = session.getAllContacts(folderPath); contacts = session.getAllContacts(folderPath);
} else if (folder.isCalendar()) { } else if (folder.isCalendar() || folder.isTask()) {
events = session.getAllEvents(folderPath); events = session.getAllEvents(folderPath);
if (!folderPath.startsWith("/public")) { if (!folderPath.startsWith("/public")) {
folderList = session.getSubCalendarFolders(folderPath, false); folderList = session.getSubCalendarFolders(folderPath, false);