2008-01-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+ * SoObjects/SOGo/SOGoCache.m ([SOGoCache
+ -registerObject:objectwithName:nameinContainer:container]):
+ register the object and its parents too.
+
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
+userWithLogin:newLoginroles:newRoles]): try to retrieve the
specified user from the SOGoCache.
0.9.0-2008MMDD (1.0 rc4)
------------------------
- improved the attendees window;
+- added the attendees pulldown menu in the event editor (like in Lightning);
+- added the recurrence window;
+- a message can be composed to multiple recipients from an address book or
+ from an event attendees menu;
+- many bugfixes in the Calendar module;
0.9.0-20071217 (1.0 rc3)
------------------------
2008-01-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+ * GCSFolderManager.m ([GCSFolderManager -baseTableNameWithUID:]):
+ generate an id that is guaranteed to be unique in more than
+ 1000000 cases (from unit testing).
+
* GCSFolder.m: fetch the content, version and dates at the same
time per record, to avoid multiple queries.
02111-1307, USA.
*/
-#include "GCSFolderManager.h"
-#include "GCSChannelManager.h"
-#include "GCSFolderType.h"
-#include "GCSFolder.h"
-#include "NSURL+GCS.h"
-#include "EOAdaptorChannel+GCS.h"
-#include "common.h"
-#include <GDLAccess/EOAdaptorChannel.h>
-#include <NGExtensions/NGResourceLocator.h>
-#include <unistd.h>
+#import <Foundation/NSProcessInfo.h>
+
+#import "GCSFolderManager.h"
+#import "GCSChannelManager.h"
+#import "GCSFolderType.h"
+#import "GCSFolder.h"
+#import "NSURL+GCS.h"
+#import "EOAdaptorChannel+GCS.h"
+#import "common.h"
+#import <GDLAccess/EOAdaptorChannel.h>
+#import <NGExtensions/NGResourceLocator.h>
+#import <unistd.h>
/*
Required database schema:
static BOOL debugSQLGen = NO;
static BOOL debugPathTraversal = NO;
static int quickPathCount = 4;
+static int randInc = 0;
static NSArray *emptyArray = nil;
#if 0
static NSString *GCSPathColumnName = @"c_path";
static const char *GCSPathColumnPattern = "c_path%i";
static NSCharacterSet *asciiAlphaNumericCS = nil;
-+ (void)initialize {
++ (void) initialize
+{
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
-
+ int seed;
+
+ seed = ([[NSDate date] timeIntervalSince1970]
+ + [[NSProcessInfo processInfo] processIdentifier]);
+ srand (seed);
+
debugOn = [ud boolForKey:@"GCSFolderManagerDebugEnabled"];
debugSQLGen = [ud boolForKey:@"GCSFolderManagerSQLDebugEnabled"];
emptyArray = [[NSArray alloc] init];
}
- (NSString *)baseTableNameWithUID:(NSString *)_uid {
- NSDate *now;
unichar currentChar;
unsigned int count, max, done;
NSMutableString *newUID;
newUID = [NSMutableString stringWithString: @"sogo"];
- now = [NSDate date];
max = [_uid length];
done = 0;
}
count++;
}
+ randInc++;
- return [NSString stringWithFormat: @"%@%u",
- newUID, (unsigned int) [now timeIntervalSince1970]];
+ return [NSString stringWithFormat: @"%@%.8x%.8x",
+ newUID, randInc, (unsigned int) rand()];
}
- (NSException *)createFolderOfType:(NSString *)_type
if (this.parentNode.chosenNode)
this.parentNode.chosenNode.removeClassName("_chosen");
this.addClassName("_chosen");
- this.parentNode.chosenNode = this;
+
+ if (this.parentNode.chosenNode != this) {
+ searchValue.lastSearch = null;
+ this.parentNode.chosenNode = this;
+ onSearchFormSubmit();
+ }
}
function checkSearchValue(event) {