Monotone-Parent: a4b72920f072cccd72e189b05519b57436eb9471

Monotone-Revision: 71372fb23c7baec6da2c9bd612ed5a65db22f208

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-04-21T14:35:58
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2010-04-21 14:35:58 +00:00
parent 28911e16dd
commit f51c2b0f5b
25 changed files with 281 additions and 249 deletions

View File

@ -1,3 +1,8 @@
2010-04-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* Main/SOGo+DAV.m: commented out incomplete code for handling
DAV:principal-property-search
2010-04-20 Wolfgang Sourdeau <wsourdeau@inverse.ca> 2010-04-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* SoObjects/SOGo/SOGoUser.m (-mailAccounts): use the user's first * SoObjects/SOGo/SOGoUser.m (-mailAccounts): use the user's first

View File

@ -31,7 +31,7 @@
@interface SOGo (SOGoWebDAVExtensions) @interface SOGo (SOGoWebDAVExtensions)
- (WOResponse *) davPrincipalMatch: (WOContext *) localContext; - (WOResponse *) davPrincipalMatch: (WOContext *) localContext;
- (WOResponse *) davPrincipalPropertySearch: (WOContext *) localContext; // - (WOResponse *) davPrincipalPropertySearch: (WOContext *) localContext;
- (WOResponse *) davPrincipalSearchPropertySet: (WOContext *) localContext; - (WOResponse *) davPrincipalSearchPropertySet: (WOContext *) localContext;
@end @end

View File

@ -21,9 +21,11 @@
*/ */
#import <Foundation/NSDictionary.h> #import <Foundation/NSDictionary.h>
#import <Foundation/NSEnumerator.h>
#import <NGObjWeb/NSException+HTTP.h> #import <NGObjWeb/NSException+HTTP.h>
#import <NGObjWeb/WOContext+SoObjects.h> #import <NGObjWeb/WOContext+SoObjects.h>
#import <NGObjWeb/WORequest.h>
#import <NGExtensions/NSObject+Logs.h> #import <NGExtensions/NSObject+Logs.h>
#import <DOM/DOMDocument.h> #import <DOM/DOMDocument.h>
@ -38,6 +40,7 @@
#import <SOGo/WOResponse+SOGo.h> #import <SOGo/WOResponse+SOGo.h>
#import <SOGo/SOGoPermissions.h> #import <SOGo/SOGoPermissions.h>
#import <SOGo/SOGoUser.h> #import <SOGo/SOGoUser.h>
#import <SOGo/SOGoUserFolder.h>
#import "SOGo+DAV.h" #import "SOGo+DAV.h"
@ -235,165 +238,165 @@
return r; return r;
} }
- (void) _fillMatches: (NSMutableDictionary *) matches // - (void) _fillMatches: (NSMutableDictionary *) matches
fromElement: (NSObject <DOMElement> *) searchElement // fromElement: (NSObject <DOMElement> *) searchElement
{ // {
NSObject <DOMNodeList> *list; // NSObject <DOMNodeList> *list;
NSObject <DOMNode> *valueNode; // NSObject <DOMNode> *valueNode;
NSArray *elements; // NSArray *elements;
NSString *property, *match; // NSString *property, *match;
list = [searchElement getElementsByTagName: @"prop"]; // list = [searchElement getElementsByTagName: @"prop"];
if ([list length]) // if ([list length])
{ // {
elements = [self domNode: [list objectAtIndex: 0] // elements = [self domNode: [list objectAtIndex: 0]
getChildNodesByType: DOM_ELEMENT_NODE]; // getChildNodesByType: DOM_ELEMENT_NODE];
if ([elements count]) // if ([elements count])
{ // {
valueNode = [elements objectAtIndex: 0]; // valueNode = [elements objectAtIndex: 0];
property = [NSString stringWithFormat: @"{%@}%@", // property = [NSString stringWithFormat: @"{%@}%@",
[valueNode namespaceURI], // [valueNode namespaceURI],
[valueNode nodeName]]; // [valueNode nodeName]];
} // }
} // }
list = [searchElement getElementsByTagName: @"match"]; // list = [searchElement getElementsByTagName: @"match"];
if ([list length]) // if ([list length])
{ // {
valueNode = [[list objectAtIndex: 0] firstChild]; // valueNode = [[list objectAtIndex: 0] firstChild];
match = [valueNode nodeValue]; // match = [valueNode nodeValue];
} // }
[matches setObject: match forKey: property]; // [matches setObject: match forKey: property];
} // }
- (void) _fillProperties: (NSMutableArray *) properties // - (void) _fillProperties: (NSMutableArray *) properties
fromElement: (NSObject <DOMElement> *) propElement // fromElement: (NSObject <DOMElement> *) propElement
{ // {
NSEnumerator *elements; // NSEnumerator *elements;
NSObject <DOMElement> *propNode; // NSObject <DOMElement> *propNode;
NSString *property; // NSString *property;
elements = [[self domNode: propElement // elements = [[self domNode: propElement
getChildNodesByType: DOM_ELEMENT_NODE] // getChildNodesByType: DOM_ELEMENT_NODE]
objectEnumerator]; // objectEnumerator];
while ((propNode = [elements nextObject])) // while ((propNode = [elements nextObject]))
{ // {
property = [NSString stringWithFormat: @"{%@}%@", // property = [NSString stringWithFormat: @"{%@}%@",
[propNode namespaceURI], // [propNode namespaceURI],
[propNode nodeName]]; // [propNode nodeName]];
[properties addObject: property]; // [properties addObject: property];
} // }
} // }
- (void) _fillPrincipalMatches: (NSMutableDictionary *) matches // - (void) _fillPrincipalMatches: (NSMutableDictionary *) matches
andProperties: (NSMutableArray *) properties // andProperties: (NSMutableArray *) properties
fromElement: (NSObject <DOMElement> *) documentElement // fromElement: (NSObject <DOMElement> *) documentElement
{ // {
NSEnumerator *children; // NSEnumerator *children;
NSObject <DOMElement> *currentElement; // NSObject <DOMElement> *currentElement;
NSString *tag; // NSString *tag;
children = [[self domNode: documentElement // children = [[self domNode: documentElement
getChildNodesByType: DOM_ELEMENT_NODE] // getChildNodesByType: DOM_ELEMENT_NODE]
objectEnumerator]; // objectEnumerator];
while ((currentElement = [children nextObject])) // while ((currentElement = [children nextObject]))
{ // {
tag = [currentElement tagName]; // tag = [currentElement tagName];
if ([tag isEqualToString: @"property-search"]) // if ([tag isEqualToString: @"property-search"])
[self _fillMatches: matches fromElement: currentElement]; // [self _fillMatches: matches fromElement: currentElement];
else if ([tag isEqualToString: @"prop"]) // else if ([tag isEqualToString: @"prop"])
[self _fillProperties: properties fromElement: currentElement]; // [self _fillProperties: properties fromElement: currentElement];
else // else
[self errorWithFormat: @"principal-property-search: unknown tag '%@'", // [self errorWithFormat: @"principal-property-search: unknown tag '%@'",
tag]; // tag];
} // }
} // }
#warning this is a bit ugly, as usual #warning this is a bit ugly, as usual
- (void) _fillCollections: (NSMutableArray *) collections // - (void) _fillCollections: (NSMutableArray *) collections
withCalendarHomeSetMatching: (NSString *) value // withCalendarHomeSetMatching: (NSString *) value
inContext: (WOContext *) localContext // inContext: (WOContext *) localContext
{ // {
SOGoUserFolder *collection; // SOGoUserFolder *collection;
NSRange substringRange; // NSRange substringRange;
substringRange = [value rangeOfString: @"/SOGo/dav/"]; // substringRange = [value rangeOfString: @"/SOGo/dav/"];
value = [value substringFromIndex: NSMaxRange (substringRange)]; // value = [value substringFromIndex: NSMaxRange (substringRange)];
substringRange = [value rangeOfString: @"/Calendar"]; // substringRange = [value rangeOfString: @"/Calendar"];
value = [value substringToIndex: substringRange.location]; // value = [value substringToIndex: substringRange.location];
collection = [[SOGoUser userWithLogin: value] // collection = [[SOGoUser userWithLogin: value]
homeFolderInContext: localContext]; // homeFolderInContext: localContext];
if (collection) // if (collection)
[collections addObject: collection]; // [collections addObject: collection];
} // }
- (NSMutableArray *) _firstPrincipalCollectionsWhere: (NSString *) key // - (NSMutableArray *) _firstPrincipalCollectionsWhere: (NSString *) key
matches: (NSString *) value // matches: (NSString *) value
inContext: (WOContext *) localContext // inContext: (WOContext *) localContext
{ // {
NSMutableArray *collections; // NSMutableArray *collections;
collections = [NSMutableArray array]; // collections = [NSMutableArray array];
if ([key // if ([key
isEqualToString: @"{urn:ietf:params:xml:ns:caldav}calendar-home-set"]) // isEqualToString: @"{urn:ietf:params:xml:ns:caldav}calendar-home-set"])
[self _fillCollections: collections withCalendarHomeSetMatching: value // [self _fillCollections: collections withCalendarHomeSetMatching: value
inContext: localContext]; // inContext: localContext];
else // else
[self errorWithFormat: @"principal-property-search: unhandled key '%@'", // [self errorWithFormat: @"principal-property-search: unhandled key '%@'",
key]; // key];
return collections; // return collections;
} // }
#warning unused stub // #warning unused stub
- (BOOL) collectionDavKey: (NSString *) key // - (BOOL) collectionDavKey: (NSString *) key
matches: (NSString *) value // matches: (NSString *) value
{ // {
return YES; // return YES;
} // }
- (void) _principalCollections: (NSMutableArray **) baseCollections // - (void) _principalCollections: (NSMutableArray **) baseCollections
where: (NSString *) key // where: (NSString *) key
matches: (NSString *) value // matches: (NSString *) value
inContext: (WOContext *) localContext // inContext: (WOContext *) localContext
{ // {
SOGoUserFolder *currentCollection; // SOGoUserFolder *currentCollection;
unsigned int count, max; // unsigned int count, max;
if (!*baseCollections) // if (!*baseCollections)
*baseCollections = [self _firstPrincipalCollectionsWhere: key // *baseCollections = [self _firstPrincipalCollectionsWhere: key
matches: value // matches: value
inContext: localContext]; // inContext: localContext];
else // else
{ // {
max = [*baseCollections count]; // max = [*baseCollections count];
for (count = max; count > 0; count--) // for (count = max; count > 0; count--)
{ // {
currentCollection = [*baseCollections objectAtIndex: count - 1]; // currentCollection = [*baseCollections objectAtIndex: count - 1];
if (![currentCollection collectionDavKey: key matches: value]) // if (![currentCollection collectionDavKey: key matches: value])
[*baseCollections removeObjectAtIndex: count - 1]; // [*baseCollections removeObjectAtIndex: count - 1];
} // }
} // }
} // }
- (NSArray *) _principalCollectionsMatching: (NSDictionary *) matches // - (NSArray *) _principalCollectionsMatching: (NSDictionary *) matches
inContext: (WOContext *) localContext // inContext: (WOContext *) localContext
{ // {
NSMutableArray *collections; // NSMutableArray *collections;
NSEnumerator *allKeys; // NSEnumerator *allKeys;
NSString *currentKey; // NSString *currentKey;
collections = nil; // collections = nil;
allKeys = [[matches allKeys] objectEnumerator]; // allKeys = [[matches allKeys] objectEnumerator];
while ((currentKey = [allKeys nextObject])) // while ((currentKey = [allKeys nextObject]))
[self _principalCollections: &collections // [self _principalCollections: &collections
where: currentKey // where: currentKey
matches: [matches objectForKey: currentKey] // matches: [matches objectForKey: currentKey]
inContext: localContext]; // inContext: localContext];
return collections; // return collections;
} // }
/* <D:principal-property-search xmlns:D="DAV:"> /* <D:principal-property-search xmlns:D="DAV:">
<D:property-search> <D:property-search>
@ -417,97 +420,96 @@
</D:prop> </D:prop>
</D:principal-property-search> */ </D:principal-property-search> */
- (void) _appendProperties: (NSArray *) properties // - (void) _appendProperties: (NSArray *) properties
ofCollection: (SOGoUserFolder *) collection // ofCollection: (SOGoUserFolder *) collection
toResponses: (NSMutableArray *) responses // toResponses: (NSMutableArray *) responses
{ // {
unsigned int count, max; // unsigned int count, max;
SEL methodSel; // SEL methodSel;
NSString *currentProperty; // NSString *currentProperty;
id currentValue; // id currentValue;
NSMutableArray *response, *props; // NSMutableArray *response, *props;
NSDictionary *keyTuple; // NSDictionary *keyTuple;
response = [NSMutableArray array]; // response = [NSMutableArray array];
[response addObject: davElementWithContent (@"href", XMLNS_WEBDAV, // [response addObject: davElementWithContent (@"href", XMLNS_WEBDAV,
[collection davURLAsString])]; // [collection davURLAsString])];
props = [NSMutableArray array]; // props = [NSMutableArray array];
max = [properties count]; // max = [properties count];
for (count = 0; count < max; count++) // for (count = 0; count < max; count++)
{ // {
currentProperty = [properties objectAtIndex: count]; // currentProperty = [properties objectAtIndex: count];
methodSel = SOGoSelectorForPropertyGetter (currentProperty); // methodSel = SOGoSelectorForPropertyGetter (currentProperty);
if (methodSel && [collection respondsToSelector: methodSel]) // if (methodSel && [collection respondsToSelector: methodSel])
{ // {
currentValue = [collection performSelector: methodSel]; // currentValue = [collection performSelector: methodSel];
#warning evil eVIL EVIl! // #warning evil eVIL EVIl!
if ([currentValue isKindOfClass: [NSArray class]]) // if ([currentValue isKindOfClass: [NSArray class]])
{ // {
currentValue = [currentValue objectAtIndex: 0]; // currentValue = [currentValue objectAtIndex: 0];
currentValue // currentValue
= davElementWithContent ([currentValue objectAtIndex: 0], // = davElementWithContent ([currentValue objectAtIndex: 0],
[currentValue objectAtIndex: 1], // [currentValue objectAtIndex: 1],
[currentValue objectAtIndex: 3]); // [currentValue objectAtIndex: 3]);
} // }
keyTuple = [currentProperty asWebDAVTuple]; // keyTuple = [currentProperty asWebDAVTuple];
[props addObject: davElementWithContent ([keyTuple objectForKey: @"method"], // [props addObject: davElementWithContent ([keyTuple objectForKey: @"method"],
[keyTuple objectForKey: @"ns"], // [keyTuple objectForKey: @"ns"],
currentValue)]; // currentValue)];
} // }
} // }
[response addObject: davElementWithContent (@"propstat", XMLNS_WEBDAV, // [response addObject: davElementWithContent (@"propstat", XMLNS_WEBDAV,
davElementWithContent // davElementWithContent
(@"prop", XMLNS_WEBDAV, // (@"prop", XMLNS_WEBDAV,
props))]; // props))];
[responses addObject: davElementWithContent (@"response", XMLNS_WEBDAV, // [responses addObject: davElementWithContent (@"response", XMLNS_WEBDAV,
response)]; // response)];
} // }
- (void) _appendProperties: (NSArray *) properties // - (void) _appendProperties: (NSArray *) properties
ofCollections: (NSArray *) collections // ofCollections: (NSArray *) collections
toResponse: (WOResponse *) response // toResponse: (WOResponse *) response
{ // {
NSDictionary *mStatus; // NSDictionary *mStatus;
NSMutableArray *responses; // NSMutableArray *responses;
unsigned int count, max; // unsigned int count, max;
max = [collections count]; // max = [collections count];
responses = [NSMutableArray arrayWithCapacity: max]; // responses = [NSMutableArray arrayWithCapacity: max];
for (count = 0; count < max; count++) // for (count = 0; count < max; count++)
[self _appendProperties: properties // [self _appendProperties: properties
ofCollection: [collections objectAtIndex: count] // ofCollection: [collections objectAtIndex: count]
toResponses: responses]; // toResponses: responses];
mStatus = davElementWithContent (@"multistatus", XMLNS_WEBDAV, responses); // mStatus = davElementWithContent (@"multistatus", XMLNS_WEBDAV, responses);
[response appendContentString: [mStatus asWebDavStringWithNamespaces: nil]]; // [response appendContentString: [mStatus asWebDavStringWithNamespaces: nil]];
} // }
/* rfc3744, should be moved into SOGoUserFolder */ /* rfc3744, should be moved into SOGoUserFolder */
- (WOResponse *) davPrincipalPropertySearch: (WOContext *) localContext
{
NSObject <DOMDocument> *document;
NSObject <DOMElement> *documentElement;
NSArray *collections;
NSMutableDictionary *matches;
NSMutableArray *properties;
WOResponse *r;
document = [[localContext request] contentAsDOMDocument]; // - (WOResponse *) davPrincipalPropertySearch: (WOContext *) localContext
documentElement = [document documentElement]; // {
// NSObject <DOMDocument> *document;
// NSObject <DOMElement> *documentElement;
// NSArray *collections;
// NSMutableDictionary *matches;
// NSMutableArray *properties;
// WOResponse *r;
matches = [NSMutableDictionary dictionary]; // document = [[localContext request] contentAsDOMDocument];
properties = [NSMutableArray array]; // documentElement = [document documentElement];
[self _fillPrincipalMatches: matches andProperties: properties
fromElement: documentElement];
collections = [self _principalCollectionsMatching: matches
inContext: localContext];
r = [localContext response];
[r prepareDAVResponse];
[self _appendProperties: properties ofCollections: collections
toResponse: r];
return r;
}
// matches = [NSMutableDictionary dictionary];
// properties = [NSMutableArray array];
// [self _fillPrincipalMatches: matches andProperties: properties
// fromElement: documentElement];
// collections = [self _principalCollectionsMatching: matches
// inContext: localContext];
// r = [localContext response];
// [r prepareDAVResponse];
// [self _appendProperties: properties ofCollections: collections
// toResponse: r];
// return r;
// }
@end @end

View File

@ -69,7 +69,7 @@
#import <SOGo/WORequest+SOGo.h> #import <SOGo/WORequest+SOGo.h>
#import <SOGo/WOResponse+SOGo.h> #import <SOGo/WOResponse+SOGo.h>
#import "iCalEntityObject+SOGo.h" #import "iCalRepeatableEntityObject+SOGo.h"
#import "iCalPerson+SOGo.h" #import "iCalPerson+SOGo.h"
#import "SOGoAppointmentObject.h" #import "SOGoAppointmentObject.h"
#import "SOGoAppointmentFolders.h" #import "SOGoAppointmentFolders.h"

View File

@ -21,6 +21,7 @@
*/ */
#import <Foundation/NSArray.h> #import <Foundation/NSArray.h>
#import <Foundation/NSEnumerator.h>
#import <Foundation/NSException.h> #import <Foundation/NSException.h>
#import <Foundation/NSString.h> #import <Foundation/NSString.h>
#import <SaxObjC/XMLNamespaces.h> #import <SaxObjC/XMLNamespaces.h>

View File

@ -24,6 +24,7 @@
#import <Foundation/NSDictionary.h> #import <Foundation/NSDictionary.h>
#import <Foundation/NSEnumerator.h> #import <Foundation/NSEnumerator.h>
#import <Foundation/NSTimeZone.h> #import <Foundation/NSTimeZone.h>
#import <Foundation/NSValue.h>
#import <NGObjWeb/NSException+HTTP.h> #import <NGObjWeb/NSException+HTTP.h>
#import <NGObjWeb/WOContext+SoObjects.h> #import <NGObjWeb/WOContext+SoObjects.h>

View File

@ -34,6 +34,7 @@
#import <SOGo/SOGoUserManager.h> #import <SOGo/SOGoUserManager.h>
#import <SOGo/SOGoDateFormatter.h> #import <SOGo/SOGoDateFormatter.h>
#import <SOGo/SOGoUser.h> #import <SOGo/SOGoUser.h>
#import <SOGo/SOGoUserDefaults.h>
#import "SOGoAptMailReceipt.h" #import "SOGoAptMailReceipt.h"

View File

@ -25,6 +25,7 @@
#import <GDLContentStore/GCSFolder.h> #import <GDLContentStore/GCSFolder.h>
#import <NGObjWeb/WOContext+SoObjects.h> #import <NGObjWeb/WOContext+SoObjects.h>
#import <SoObjects/SOGo/SOGoUser.h> #import <SoObjects/SOGo/SOGoUser.h>
#import <SoObjects/SOGo/SOGoUserSettings.h>
#import "SOGoWebAppointmentFolder.h" #import "SOGoWebAppointmentFolder.h"

View File

@ -32,12 +32,14 @@
#import <SOGo/NSObject+DAV.h> #import <SOGo/NSObject+DAV.h>
#import <SOGo/NSString+DAV.h> #import <SOGo/NSString+DAV.h>
#import "SOGoContactFolders.h"
#import "SOGoUserFolder+Contacts.h" #import "SOGoUserFolder+Contacts.h"
@interface SOGoUserFolder (private) @interface SOGoUserFolder (private)
- (SOGoAppointmentFolders *) privateContacts: (NSString *) key - (SOGoContactFolders *) privateContacts: (NSString *) key
inContext: (WOContext *) localContext; inContext: (WOContext *) localContext;
@end @end
@ -47,7 +49,7 @@
- (NSArray *) davAddressbookHomeSet - (NSArray *) davAddressbookHomeSet
{ {
NSArray *tag; NSArray *tag;
SOGoAppointmentFolders *parent; SOGoContactFolders *parent;
parent = [self privateContacts: @"Contacts" inContext: context]; parent = [self privateContacts: @"Contacts" inContext: context];
tag = [NSArray arrayWithObjects: @"href", @"DAV:", @"D", tag = [NSArray arrayWithObjects: @"href", @"DAV:", @"D",

View File

@ -19,6 +19,7 @@
02111-1307, USA. 02111-1307, USA.
*/ */
#import <Foundation/NSData.h>
#import <Foundation/NSDictionary.h> #import <Foundation/NSDictionary.h>
#import <Foundation/NSEnumerator.h> #import <Foundation/NSEnumerator.h>
#import <Foundation/NSURL.h> #import <Foundation/NSURL.h>

View File

@ -20,6 +20,8 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
#import <Foundation/NSDictionary.h>
#import <NGObjWeb/WOContext+SoObjects.h> #import <NGObjWeb/WOContext+SoObjects.h>
#import <NGExtensions/NSString+misc.h> #import <NGExtensions/NSString+misc.h>
@ -89,7 +91,8 @@
NSString *rc; NSString *rc;
if (htmlComposition) if (htmlComposition)
rc = [[[sourceMail mailHeaders] objectForKey: @"from"] stringByEscapingHTMLString]; rc = [[[sourceMail mailHeaders] objectForKey: @"from"]
stringByEscapingHTMLString];
else else
rc = [[sourceMail mailHeaders] objectForKey: @"from"]; rc = [[sourceMail mailHeaders] objectForKey: @"from"];

View File

@ -30,6 +30,7 @@
#import <NGObjWeb/WOContext.h> #import <NGObjWeb/WOContext.h>
#import <NGObjWeb/WOContext+SoObjects.h> #import <NGObjWeb/WOContext+SoObjects.h>
#import <NGObjWeb/WORequest.h>
#import <NGObjWeb/WOResponse.h> #import <NGObjWeb/WOResponse.h>
#import <NGObjWeb/NSException+HTTP.h> #import <NGObjWeb/NSException+HTTP.h>
#import <NGExtensions/NGHashMap.h> #import <NGExtensions/NGHashMap.h>

View File

@ -429,6 +429,8 @@ static NSDictionary *methodRequirements = nil;
*flag, *mailbox; *flag, *mailbox;
SOGoDomainDefaults *dd; SOGoDomainDefaults *dd;
sieveAction = nil;
method = [action objectForKey: @"method"]; method = [action objectForKey: @"method"];
if (method) if (method)
{ {
@ -484,10 +486,7 @@ static NSDictionary *methodRequirements = nil;
} }
} }
else else
{ scriptError = @"Action missing 'method' parameter";
scriptError = @"Action missing 'method' parameter";
sieveAction = nil;
}
return sieveAction; return sieveAction;
} }

View File

@ -46,7 +46,7 @@
andParameters: (NSDictionary *) parameters; andParameters: (NSDictionary *) parameters;
+ (SOGoCASSession *) CASSessionWithTicket: (NSString *) newTicket; + (SOGoCASSession *) CASSessionWithTicket: (NSString *) newTicket;
+ (SOGoCASSession *) CASSessionWithIdentifier: (NSString *) identifier; + (SOGoCASSession *) CASSessionWithIdentifier: (NSString *) newIdentifier;
- (NSString *) identifier; - (NSString *) identifier;

View File

@ -83,14 +83,14 @@
return newSession; return newSession;
} }
+ (SOGoCASSession *) CASSessionWithIdentifier: (NSString *) identifier + (SOGoCASSession *) CASSessionWithIdentifier: (NSString *) newIdentifier
{ {
SOGoCASSession *session; SOGoCASSession *session;
SOGoCache *cache; SOGoCache *cache;
NSString *casTicket; NSString *casTicket;
cache = [SOGoCache sharedCache]; cache = [SOGoCache sharedCache];
casTicket = [cache CASTicketFromIdentifier: identifier]; casTicket = [cache CASTicketFromIdentifier: newIdentifier];
session = [self CASSessionWithTicket: casTicket]; session = [self CASSessionWithTicket: casTicket];
return session; return session;

View File

@ -27,8 +27,9 @@
#import <NGObjWeb/WORequest.h> #import <NGObjWeb/WORequest.h>
#import <NGObjWeb/WOSession.h> #import <NGObjWeb/WOSession.h>
#import <SOGoUser.h> #import "SOGoDomainDefaults.h"
#import <SOGoUserDefaults.h> #import "SOGoUser.h"
#import "SOGoUserDefaults.h"
#import "WOContext+SOGo.h" #import "WOContext+SOGo.h"

View File

@ -41,6 +41,7 @@
#import <SOGo/SOGoUser.h> #import <SOGo/SOGoUser.h>
#import <SOGo/SOGoUserDefaults.h> #import <SOGo/SOGoUserDefaults.h>
#import <SOGo/SOGoUserManager.h> #import <SOGo/SOGoUserManager.h>
#import <SOGo/SOGoUserSettings.h>
#import <SOGo/NSArray+Utilities.h> #import <SOGo/NSArray+Utilities.h>
#import <SOGo/NSDictionary+Utilities.h> #import <SOGo/NSDictionary+Utilities.h>
#import <SOGo/NSString+Utilities.h> #import <SOGo/NSString+Utilities.h>

View File

@ -22,6 +22,7 @@
#import <Foundation/NSCalendarDate.h> #import <Foundation/NSCalendarDate.h>
#import <Foundation/NSEnumerator.h> #import <Foundation/NSEnumerator.h>
#import <Foundation/NSValue.h>
#import <NGObjWeb/NSException+HTTP.h> #import <NGObjWeb/NSException+HTTP.h>
#import <NGObjWeb/WOContext+SoObjects.h> #import <NGObjWeb/WOContext+SoObjects.h>
@ -39,15 +40,16 @@
#import <NGImap4/NGImap4EnvelopeAddress.h> #import <NGImap4/NGImap4EnvelopeAddress.h>
#import <SoObjects/Appointments/iCalEvent+SOGo.h> #import <Appointments/iCalEvent+SOGo.h>
#import <SoObjects/Appointments/iCalPerson+SOGo.h> #import <Appointments/iCalPerson+SOGo.h>
#import <SoObjects/Appointments/SOGoAppointmentObject.h> #import <Appointments/SOGoAppointmentObject.h>
#import <SoObjects/Appointments/SOGoAppointmentFolder.h> #import <Appointments/SOGoAppointmentFolder.h>
#import <SoObjects/Mailer/SOGoMailObject.h> #import <Appointments/SOGoAppointmentFolders.h>
#import <SoObjects/SOGo/SOGoParentFolder.h> #import <Mailer/SOGoMailObject.h>
#import <SoObjects/SOGo/SOGoUser.h> #import <SOGo/SOGoParentFolder.h>
#import <SoObjects/SOGo/iCalEntityObject+Utilities.h> #import <SOGo/SOGoUser.h>
#import <SoObjects/Mailer/SOGoMailBodyPart.h> #import <SOGo/iCalEntityObject+Utilities.h>
#import <Mailer/SOGoMailBodyPart.h>
#import "UIxMailPartICalActions.h" #import "UIxMailPartICalActions.h"

View File

@ -25,6 +25,8 @@
Show plain/calendar mail parts. Show plain/calendar mail parts.
*/ */
#import <Foundation/NSValue.h>
#import <NGObjWeb/WOResponse.h> #import <NGObjWeb/WOResponse.h>
#import <NGExtensions/NSCalendarDate+misc.h> #import <NGExtensions/NSCalendarDate+misc.h>
@ -39,6 +41,7 @@
#import <SOGo/SOGoDateFormatter.h> #import <SOGo/SOGoDateFormatter.h>
#import <SOGo/SOGoUser.h> #import <SOGo/SOGoUser.h>
#import <SOGo/SOGoUserFolder.h>
#import <SOGo/SOGoUserDefaults.h> #import <SOGo/SOGoUserDefaults.h>
#import <SOGo/iCalEntityObject+Utilities.h> #import <SOGo/iCalEntityObject+Utilities.h>
#import <Appointments/iCalEntityObject+SOGo.h> #import <Appointments/iCalEntityObject+SOGo.h>

View File

@ -25,6 +25,7 @@
#import <Foundation/NSKeyValueCoding.h> #import <Foundation/NSKeyValueCoding.h>
#import <Foundation/NSString.h> #import <Foundation/NSString.h>
#import <NGHttp/NGHttpRequest.h>
#import <NGObjWeb/NSException+HTTP.h> #import <NGObjWeb/NSException+HTTP.h>
#import <NGObjWeb/SoSubContext.h> #import <NGObjWeb/SoSubContext.h>
#define COMPILING_NGOBJWEB 1 /* we want httpRequest for parsing multi-part #define COMPILING_NGOBJWEB 1 /* we want httpRequest for parsing multi-part
@ -41,6 +42,7 @@
#import <NGMime/NGMimeBodyPart.h> #import <NGMime/NGMimeBodyPart.h>
#import <NGMime/NGMimeHeaderFields.h> #import <NGMime/NGMimeHeaderFields.h>
#import <NGMime/NGMimeMultipartBody.h> #import <NGMime/NGMimeMultipartBody.h>
#import <NGMime/NGMimeType.h>
#import <SoObjects/Mailer/SOGoDraftObject.h> #import <SoObjects/Mailer/SOGoDraftObject.h>
#import <SoObjects/Mailer/SOGoMailFolder.h> #import <SoObjects/Mailer/SOGoMailFolder.h>

View File

@ -39,6 +39,7 @@
#import <SOGo/NSObject+Utilities.h> #import <SOGo/NSObject+Utilities.h>
#import <SOGo/SOGoUser.h> #import <SOGo/SOGoUser.h>
#import <SOGo/SOGoUserDefaults.h> #import <SOGo/SOGoUserDefaults.h>
#import <SOGo/SOGoUserSettings.h>
#import <UI/Common/WODirectAction+SOGo.h> #import <UI/Common/WODirectAction+SOGo.h>

View File

@ -45,9 +45,11 @@
#import <SOGo/NSArray+Utilities.h> #import <SOGo/NSArray+Utilities.h>
#import <SOGo/NSString+Utilities.h> #import <SOGo/NSString+Utilities.h>
#import <SOGo/NSDictionary+Utilities.h> #import <SOGo/NSDictionary+Utilities.h>
#import <SOGo/SOGoDomainDefaults.h>
#import <SOGo/SOGoUser.h> #import <SOGo/SOGoUser.h>
#import <SOGo/SOGoUserDefaults.h> #import <SOGo/SOGoUserDefaults.h>
#import <SOGo/SOGoUserFolder.h> #import <SOGo/SOGoUserFolder.h>
#import <SOGo/SOGoUserSettings.h>
#import <SOGoUI/UIxComponent.h> #import <SOGoUI/UIxComponent.h>
#import "UIxMailMainFrame.h" #import "UIxMailMainFrame.h"

View File

@ -20,6 +20,7 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
#import <Foundation/NSDictionary.h>
#import <Foundation/NSURL.h> #import <Foundation/NSURL.h>
#import <NGObjWeb/WOResponse.h> #import <NGObjWeb/WOResponse.h>

View File

@ -20,6 +20,7 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
#import <Foundation/NSDictionary.h>
#import <Foundation/NSURL.h> #import <Foundation/NSURL.h>
#import <NGObjWeb/WOResponse.h> #import <NGObjWeb/WOResponse.h>

View File

@ -28,8 +28,9 @@
#import <NGExtensions/NSCalendarDate+misc.h> #import <NGExtensions/NSCalendarDate+misc.h>
#import <SoObjects/SOGo/SOGoUser.h> #import <SOGo/SOGoUser.h>
#import <SoObjects/SOGo/SOGoDateFormatter.h> #import <SOGo/SOGoUserDefaults.h>
#import <SOGo/SOGoDateFormatter.h>
#import "UIxCalMulticolumnDayView.h" #import "UIxCalMulticolumnDayView.h"