2008-03-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+ * SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry
+ -isFolderish]): new overriden method.
+
* SoObjects/Appointments/SOGoAppointmentFolder.m
([SOGoAppointmentFolder
-appendObject:objectproperties:propertieswithBaseURL:baseURLtoComplexResponse:r]):
0.9.0-2008xxxx (1.0 rc6)
+------------------------
- retrieving the freebusy DAV object was causing SOGo to crash
- converted to use the gnustep-make 2 build framework
- added custom DAV methods for managing user permissions from the SOGo Integrator
return vcard;
}
+- (BOOL) isFolderish
+{
+ return NO;
+}
+
- (NSString *) davEntityTag
{
unsigned int hash;
return ma;
}
-- (BOOL) isValidAttachmentName: (NSString *) _name
+- (BOOL) isValidAttachmentName: (NSString *) filename
{
static NSString *sescape[] = { @"/", @"..", @"~", @"\"", @"'", nil };
- unsigned i;
+ unsigned int i;
NSRange r;
+ BOOL result;
- if (![_name isNotNull]) return NO;
- if ([_name length] == 0) return NO;
- if ([_name hasPrefix: @"."]) return NO;
-
- for (i = 0; sescape[i] != nil; i++) {
- r = [_name rangeOfString:sescape[i]];
- if (r.length > 0) return NO;
- }
- return YES;
+ result = ([filename length] && ![filename hasPrefix: @"."]);
+ i = 0;
+ while (result && sescape[i])
+ {
+ r = [filename rangeOfString: sescape[i]];
+ if (r.length > 0)
+ result = NO;
+ else
+ i++;
+ }
+
+ return result;
}
- (NSString *) pathToAttachmentWithName: (NSString *) _name
co = [self clientObject];
allKeys = [[request formValueKeys] objectEnumerator];
- key = [allKeys nextObject];
- while (key && success)
- {
- if ([key hasPrefix: @"attachment"])
- success
- = (![co saveAttachment: (NSData *) [request formValueForKey: key]
- withMetadata: [filenames objectForKey: key]]);
- key = [allKeys nextObject];
- }
+ while ((key = [allKeys nextObject]) && success)
+ if ([key hasPrefix: @"attachment"])
+ success
+ = (![co saveAttachment: (NSData *) [request formValueForKey: key]
+ withMetadata: [filenames objectForKey: key]]);
return success;
}
"Browse URL" = "Visiter l'URL";
-"newAttendee" = "Nouvel invité";
+"newAttendee" = "Ajouter un participant";
/* calendar modes */
var initialValues = null;
if (selector) {
- var selectorId = selector.getAttribute("id");
- selectorList = opener.window.document.getElementById('uixselector-'
- + selectorId
- + '-uidList');
- initialValues = selectorList.value;
+ var selectorId = selector.getAttribute("id");
+ selectorList = opener.window.document.getElementById('uixselector-'
+ + selectorId
+ + '-uidList');
+ initialValues = selectorList.value;
}
var contactsList = $("contactsList");
function configureAbToolbar() {
var toolbar = $("abToolbar");
- var links = toolbar.childNodesWithTag("a");
- Event.observe(links[0], "click", onAddressBookNew, false);
- Event.observe(links[1], "click", onAddressBookAdd, false);
- Event.observe(links[2], "click", onAddressBookRemove, false);
+ if (toolbar) {
+ var links = toolbar.childNodesWithTag("a");
+ $(links[0]).observe("click", onAddressBookNew);
+ $(links[1]).observe("click", onAddressBookAdd);
+ $(links[2]).observe("click", onAddressBookRemove);
+ }
}
function configureContactFolders() {
}
function configureSelectionButtons() {
- var container = $("contactSelectionButtons");
- if (container) {
- var buttons = container.childNodesWithTag("input");
- for (var i = 0; i < buttons.length; i++)
- Event.observe(buttons[i], "click",
- onConfirmContactSelection.bindAsEventListener(buttons[i]));
- }
+ var container = $("contactSelectionButtons");
+ if (container) {
+ var buttons = container.childNodesWithTag("input");
+ for (var i = 0; i < buttons.length; i++)
+ $(buttons[i]).observe("click",
+ onConfirmContactSelection);
+ }
}
function initContacts(event) {
if (document.body.hasClassName("popup"))
- configureSelectionButtons();
+ configureSelectionButtons();
configureAbToolbar();
configureContactFolders();
// initDnd();
dateTuples[j][c.start] < dateTuples[i][c.end] ||
dateTuples[j][c.start] == dateTuples[i][c.start] &&
- dateTuples[j][c.end] < dateTuples[i][c.end] ){
+ dateTuples[j][c.end] < dateTuples[i][c.end] ||
+
+ dateTuples[j][c.start] == dateTuples[i][c.start] &&
+ dateTuples[j][c.end] == dateTuples[i][c.end] &&
+ i < j) {
// Same period
if (dateTuples[j][c.siblingsCount] > maxCount)
maxCount = dateTuples[j][c.siblingsCount];