]> err.no Git - sope/commitdiff
improved WODisplayGroup
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 3 Oct 2005 21:29:02 +0000 (21:29 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 3 Oct 2005 21:29:02 +0000 (21:29 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@1150 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/NGObjWeb/ChangeLog
sope-appserver/NGObjWeb/Version
sope-appserver/NGObjWeb/WODirectActionRequestHandler.m
sope-appserver/NGObjWeb/WODisplayGroup.m

index df658e8b59e0ac809128b6bfd48cfe4a9d98f6c4..af6c14302e6bd073070c38e6c830f2866d67df4b 100644 (file)
@@ -1,3 +1,9 @@
+2005-10-03  Helge Hess  <helge.hess@opengroupware.org>
+
+       * WODisplayGroup.m: added -qualifyDataSourceAndReturnDisplayCount
+         method to support qualification via .wod, make use of -isNotEmpty
+         (v4.5.204)
+
 2005-09-29  Marcus Mueller  <znek@mulle-kybernetik.com>
 
        * DynamicElements/_WOComplexHyperlink.m: changed
index 8f2506ecdec8c35ff8502d89980ff33b556eca3d..46ce5de7f64c105fb7f06c4d0aa226171ee844ff 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=203
+SUBMINOR_VERSION:=204
 
 # v4.5.122 requires libNGExtensions v4.5.153
 # v4.5.91  requires libNGExtensions v4.5.134
index e9b1e930c8a9cdbc25c0c7174142636831066837..94b29305b0568ecd1d20adb706a7a0d339a87fdf 100644 (file)
@@ -110,7 +110,6 @@ static Class NSDateClass = Nil;
                   inContext:context];
   [context setPage:(id)component];
   
-  /* TODO: why was that commented out? */
   if ([component shouldTakeValuesFromRequest:[context request]
                 inContext:context])
     [app takeValuesFromRequest:[context request] inContext:context];
index 31f7710eb5ab598ce8d7b47a2e5e7f2aac83c490..ae3e58ef406217d1613da8b395c84f83217298b1 100644 (file)
@@ -324,10 +324,10 @@ static NSArray  *uint0Array = nil;
 - (id)selectNext {
   unsigned int idx;
   
-  if ([self->displayObjects count] == 0)
+  if (![self->displayObjects isNotEmpty])
     return nil;
   
-  if ([self->selectionIndexes count] == 0) {
+  if (![self->selectionIndexes isNotEmpty]) {
     [self setSelectionIndexes:uint0Array];
     return nil;
   }
@@ -348,10 +348,10 @@ static NSArray  *uint0Array = nil;
 - (id)selectPrevious {
   unsigned int idx;
   
-  if ([self->displayObjects count] == 0)
+  if (![self->displayObjects isNotEmpty])
     return nil;
   
-  if ([self->selectionIndexes count] == 0) {
+  if (![self->selectionIndexes isNotEmpty]) {
     [self setSelectionIndexes:uint0Array];
     return nil;
   }
@@ -511,9 +511,8 @@ static NSArray  *uint0Array = nil;
   
   /* should try to restore selection */
   [self clearSelection];
-  if ([_objects count] > 0 && [self selectsFirstObjectAfterFetch]) {
+  if ([_objects isNotEmpty] && [self selectsFirstObjectAfterFetch])
     [self setSelectionIndexes:uint0Array];
-  }
 }
  
 - (NSArray *)allObjects {
@@ -543,11 +542,11 @@ static NSArray  *uint0Array = nil;
   }
 
   [self updateDisplayedObjects];
-
+  
   if ([self selectsFirstObjectAfterFetch]) {
     [self clearSelection];
     
-    if ([objs count] > 0)
+    if ([objs isNotEmpty])
       [self setSelectedObject:[objs objectAtIndex:0]];
   }
   
@@ -700,7 +699,7 @@ static NSArray  *uint0Array = nil;
     [q release];
   }
 
-  if ([quals count] == 0)
+  if (![quals isNotEmpty])
     return nil;
   if ([quals count] == 1)
     return [quals objectAtIndex:0];
@@ -809,36 +808,64 @@ static NSArray  *uint0Array = nil;
 - (void)qualifyDataSource {
   EODataSource *ds;
   EOQualifier  *q;
+  NSDictionary *bindings;
 
-  ds = [self dataSource];
+  if ((ds = [self dataSource]) == nil)
+    [self warnWithFormat:@"no datasource set: %@", NSStringFromSelector(_cmd)];
+
+  /* build qualifier */
   
   if ((q = [self qualifierFromQueryValues]) != nil)
     [self setQualifier:q];
   
-  if ([ds respondsToSelector:@selector(setAuxiliaryQualifier:)])
+  /* set qualifier in datasource */
+  
+  if ([ds respondsToSelector:@selector(setAuxiliaryQualifier:)]) {
     [ds setAuxiliaryQualifier:[self qualifier]];
+    //[self logWithFormat:@"set aux qualifier in %@: %@", ds,[self qualifier]];
+  }
   else if ([ds respondsToSelector:@selector(setQualifier:)])
     [ds setQualifier:[self qualifier]];
   else {
     /* could not qualify ds */
+    [self warnWithFormat:@"could not qualify datasource: %@", ds];
   }
   
-  if ([ds respondsToSelector:@selector(setQualifierBindings:)])
-    [ds setQualifierBindings:[self queryBindings]];
+  /* set bindings in datasource */
+
+  if ([(bindings = [self queryBindings]) isNotEmpty]) {
+    if ([ds respondsToSelector:@selector(setQualifierBindings:)])
+      [ds setQualifierBindings:bindings];
+    else {
+      [self warnWithFormat:@"could not set bindings in datasource %@: %@", 
+             ds, bindings];
+    }
+  }
+  
+  /* perform fetch */
   
+  /* action method, returns 'nil' to stay on page */
   [self fetch];
   
   if ([self inQueryMode])
     [self setInQueryMode:NO];
 }
 
+- (id)qualifyDataSourceAndReturnDisplayCount {
+  /* 
+     This is a 'hack' created because we can't bind (and therefore 'call')
+     'void' methods in .wod files.
+  */
+  [self qualifyDataSource];
+  return [NSNumber numberWithUnsignedInt:[[self displayedObjects] count]];
+}
 
 /* object creation */
 
 - (id)insert {
   unsigned idx;
 
-  idx = [self->selectionIndexes count] > 0
+  idx = [self->selectionIndexes isNotEmpty]
     ? ([[self->selectionIndexes objectAtIndex:0] unsignedIntValue] + 1)
     : [self->objects count];