]> err.no Git - sope/commitdiff
changes to DA request handling
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Sun, 13 Nov 2005 19:05:10 +0000 (19:05 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Sun, 13 Nov 2005 19:05:10 +0000 (19:05 +0000)
added radio-button issue comments

git-svn-id: http://svn.opengroupware.org/SOPE/trunk@1174 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/NGObjWeb/ChangeLog
sope-appserver/NGObjWeb/DynamicElements/WORadioButton.m
sope-appserver/NGObjWeb/Version
sope-appserver/NGObjWeb/WOApplication.m
sope-appserver/NGObjWeb/WOSession.m

index 5a91c5d146be4f43bea3f7659f9176198284b529..a3f44cf48bbd35283d96409634eaa4d891870f5a 100644 (file)
@@ -1,3 +1,14 @@
+2005-11-13  Helge Hess  <helge.hess@opengroupware.org>
+
+       * DynamicElements/WORadioButton.m: added some comments and a warning
+         about issues wrt request handling (v4.5.211)
+
+2005-11-01  Helge Hess  <helge.hess@opengroupware.org>
+
+       * WOSession.m ([WOSession -takeValuesFromRequest:inContext:]): changed
+         handling of -takeValues in combination with directaction components
+         (v4.5.210)
+
 2005-10-16  Jean-Alexis Montignies  <ja@sente.ch>
 
        * DynamicElements/WOSwitchComponent.m: properly consume element-id
index c1e22ec9a9170346e9ca1664060c2c26f5cf4066..a514d2bf4d56cad8a9d86a007c19638f635ed300 100644 (file)
   // TODO: this seems to have issues
   
   formValue = [_req formValueForKey:OWFormElementName(self, _ctx)];
-
-  if (self->checked) {
+  
+#warning FIXME, radio button form handling
+  
+  if (self->checked != nil) {
     // TODO: check needs element-ids?
     if ([self->checked isValueSettable]) {
+      // TODO: this only checks element-IDs! In case a value is assigned, it
+      //       must check the value
       [self->checked setBoolValue:[formValue isEqual:[_ctx elementID]]
                      inComponent:sComponent];
     }
   }
   
+  /*
+    TODO
+    
+    This needs to check the value and compare it with the value of the form,
+    otherwise all radio elements will push the value, multiple times because
+    radio buttons always have the same name!
+
+    Note that the actual result is usually OK, because all elements push the
+    _same_ value, the one from the form, not their own.
+  */
   if ([self->selection isValueSettable])
     [self->selection setValue:formValue inComponent:sComponent];
 }
index b80e40c673743226d5d4e130382b8ba51a353023..09f51d761d15abfe0737c8dced4bba08c2d99868 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=209
+SUBMINOR_VERSION:=211
 
 # v4.5.122 requires libNGExtensions v4.5.153
 # v4.5.91  requires libNGExtensions v4.5.134
index 28b1ffbc751f7dbde9cedc90852e62301054df09..b71baa1d95b2f701be698b2c4c3da2d4dbdfeffb 100644 (file)
@@ -910,7 +910,7 @@ nbuckets, nindices, narrays, idxsize);
   else {
     WOComponent *page;
     
-    if ((page = [_ctx page])) {
+    if ((page = [_ctx page]) != nil) {
       WOContext_enterComponent(_ctx, page, nil);
       [page takeValuesFromRequest:_req inContext:_ctx];
       WOContext_leaveComponent(_ctx, page);
index 8c17d610fd1b3c101f34980fe1ffef8a5487d604..f0e8f745f83438da1a0ec42aa99176ee85b877ea 100644 (file)
@@ -391,17 +391,48 @@ static Class NSDateClass = Nil;
 
   senderID = [_ctx senderID];
 
-  if ([senderID length] == 0)
+  if ([senderID length] == 0) {
     /* no element URL is available */
+    WOComponent *page;
+
+    if ((page = [_ctx page]) != nil) {
+      /* 
+        But we do have a page set in the context. This usually means that the
+        -takeValues got triggered by the WODirectActionRequestHandler in
+        combination with a WOComponent being the DirectAction object.
+      */
+      NSTimeInterval st = 0.0;
+      
+      WOContext_enterComponent(_ctx, page, nil);
+      
+      if (profileComponents)
+        st = [[NSDateClass date] timeIntervalSince1970];
+      
+      [page takeValuesFromRequest:_request inContext:_ctx];
+      
+      if (profileComponents) {
+        NSTimeInterval diff;
+        
+        diff = [[NSDateClass date] timeIntervalSince1970] - st;
+        printf("prof[%s %s]: %0.3fs\n",
+               [[(WOComponent *)page name] cString], sel_get_name(_cmd), diff);
+      }
+      
+      WOContext_leaveComponent(_ctx, page);
+    }
+    
     return;
+  }
 
   if ([[_request method] isEqualToString:@"GET"]) {
     NSRange r;
     
     r = [[_request uri] rangeOfString:@"?"];
-    if (r.length == 0)
+    if (r.length == 0) {
       /* no form content to apply */
+      // TODO: we should run the takeValues nevertheless to clear values?
       return;
+    }
   }
 
   if ((reqCtxId = [_ctx currentElementID]) == nil)
@@ -411,7 +442,7 @@ static Class NSDateClass = Nil;
   {
     WOComponent *page;
 
-    if ((page = [_ctx page])) {
+    if ((page = [_ctx page]) != nil) {
       NSTimeInterval st = 0.0;
       
       WOContext_enterComponent(_ctx, page, nil);