]> err.no Git - sope/commitdiff
more SoActionInvocation fixes
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 11 Oct 2004 13:58:23 +0000 (13:58 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 11 Oct 2004 13:58:23 +0000 (13:58 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@245 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/NGObjWeb/ChangeLog
sope-appserver/NGObjWeb/SoObjects/SoActionInvocation.m
sope-appserver/NGObjWeb/SoObjects/SoPageInvocation.m
sope-appserver/NGObjWeb/SoObjects/SoProductClassInfo.m
sope-appserver/NGObjWeb/SoObjects/WODirectAction+SoObjects.m
sope-appserver/NGObjWeb/SoObjects/product.plist
sope-appserver/NGObjWeb/Version
sope-appserver/NGObjWeb/WODirectActionRequestHandler.m

index d0a4a6811cd9d4d4de930876077d451ec798a5c3..edce86be5258c1c2e960383ee1b18ffd4aab1c43 100644 (file)
@@ -1,5 +1,12 @@
 2004-10-11  Helge Hess  <helge.hess@opengroupware.org>
 
+       * v4.3.61
+
+       * SoObjects/product.plist: properly export SoActionInvocation
+
+       * SoObjects/SoProductClassInfo.m: fixed product.plist class name entry
+         for action invocations
+
        * SoObjects/SoPageInvocation.h: fixed header file (install include and
          compile include differ :-|) (v4.3.60)
 
index e16d7a2ca7afa35197e5e46e62de614724facb45..6a4a231da856940234adc894ab0aefbed33de55a 100644 (file)
@@ -186,13 +186,30 @@ static int debugOn = 0;
 }
 
 - (void)_prepareContext:(id)_ctx withMethodObject:(id)_method {
-  /* for subclasses */
+  /* for subclasses (set page in context in page invocation) */
+}
+- (void)_prepareMethod:(id)_method inContext:(id)_ctx {
+  /* for subclasses (triggers takeValues phase in page invocation) */
 }
 
-- (id)callOnObject:(id)_client inContext:(id)_ctx {
+- (void)_applyArgumentsOnMethod:(id)_method inContext:(id)_ctx {
   NSDictionary *argspec;
-  id        method;
-  WORequest *rq;
+  NSDictionary *args;
+  
+  argspec = [self->argumentSpecifications objectForKey:[_ctx soRequestType]];
+  if (argspec == nil)
+    return;
+    
+  args = [self extractArgumentsFromContext:_ctx
+              forRequestType:[_ctx soRequestType]
+              specification:argspec];
+  if (debugOn) [self debugWithFormat:@"extracted args %@", args];
+  
+  if (args != nil) [_method takeValuesFromDictionary:args];
+}
+
+- (id)callOnObject:(id)_client inContext:(id)_ctx {
+  id method;
   
   if (self->object != _client) {
     /* rebind */
@@ -218,28 +235,9 @@ static int debugOn = 0;
   if ([method respondsToSelector:@selector(setClientObject:)])
     [method setClientObject:_client];
   
-  /* apply request parameters */
-  
-  rq = [(id <WOPageGenerationContext>)_ctx request];
-  
-  if ([method shouldTakeValuesFromRequest:rq inContext:_ctx]) {
-    [[_ctx application] takeValuesFromRequest:rq
-                       inContext:_ctx];
-  }
-  
-  /* apply extracted parameters (TODO: what should be done first?) */
-
-  argspec = [self->argumentSpecifications objectForKey:[_ctx soRequestType]];
-  if (argspec != nil) {
-    NSDictionary *args;
-    
-    args = [self extractArgumentsFromContext:_ctx
-                forRequestType:[_ctx soRequestType]
-                specification:argspec];
-    if (debugOn) [self debugWithFormat:@"extracted args %@", args];
-    
-    if (args != nil) [method takeValuesFromDictionary:args];
-  }
+  /* TODO: what should be done first?, take values or args? */
+  [self _prepareMethod:method          inContext:_ctx];
+  [self _applyArgumentsOnMethod:method inContext:_ctx];
   
   /* call action */
   
index e16743e186f9f33425b14e80aef4564696678659..a78cec8455b7fdc528d10b08d65201aaeafab07d 100644 (file)
@@ -100,6 +100,17 @@ static int debugOn = 0;
   [_ctx setPage:_method];
 }
 
+- (void)_prepareMethod:(id)_method inContext:(id)_ctx {
+  /* apply request parameters */
+  WORequest *rq;
+  
+  rq = [(id <WOPageGenerationContext>)_ctx request];
+  if ([_method shouldTakeValuesFromRequest:rq inContext:_ctx]) {
+    [[_ctx application] takeValuesFromRequest:rq
+                       inContext:_ctx];
+  }
+}
+
 /* page construction */
 
 - (WOComponent *)instantiatePageInContext:(id)_ctx {
index f9ec9ada9f5566bfb60a1d78cdf9e91efe5f5f40..3a168e3cc71c5701ae306f2f3be25f15cd76b511 100644 (file)
@@ -333,7 +333,7 @@ static int loadDebugOn = 0;
   NSString     *actionClass, *actionName;
   NSDictionary *argspecs;
   
-  actionClass = [_m objectForKey:@"className"];
+  actionClass = [_m objectForKey:@"actionClass"];
   argspecs    = [_m objectForKey:@"arguments"];
   
   if ((actionName = [_m objectForKey:@"directActionName"]) == nil)
index 3c877d20ddc28b5fe9334c44bedbf62be75dca5c..01d2ed12a74fc1d235a8e285b9e1c7da542ba6da 100644 (file)
 #include "SoObject.h"
 #include "common.h"
 
+/*
+  WODirectActionPubInvocation
+  
+  This invocation is used if you have a direct action in the lookup path, this
+  can be configured by setting a WODirectAction subclass as a 'slot' of a
+  class.
+*/
+
 @interface WODirectActionPubInvocation : NSObject
 {
 @public
index 3bc7d845006888d1bfdfc7a5712be527c98131e6..0853bbddc5c5f5dad25d97f4609187fc96305707 100644 (file)
@@ -1,5 +1,5 @@
 {
-  CVSID = "$Id$";
+  CVSID = "$Id: product.plist 4 2004-08-20 17:04:31Z helge $";
 
   classes = {
     
         };
       };
     };
+    SoActionInvocation = {
+      protectedBy   = "<public>";
+      defaultAccess = "allow";
+    };
     SoPageInvocation = {
-      protectedBy = "<public>";
+      superclass    = "SoActionInvocation";
+      protectedBy   = "<public>";
       defaultAccess = "allow";
     };
     SoProduct = {
index 6ac86bcca69f739c90193fd260509637fb13ca67..ca7d1576fde41a7b58eed2ca497eb0d35f424157 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=60
+SUBMINOR_VERSION:=61
 
 # v4.3.42  requires libNGExtensions v4.3.116
 # v4.3.40  requires libNGExtensions v4.3.115
index e536df7356b0cf27253378073b68a1609f1f41a3..30ccbd862a6e8077e405976c30f7749ea6b0cc82 100644 (file)
@@ -1,7 +1,7 @@
 /*
-  Copyright (C) 2000-2003 SKYRIX Software AG
+  Copyright (C) 2000-2004 SKYRIX Software AG
 
-  This file is part of OGo
+  This file is part of OpenGroupware.org.
 
   OGo is free software; you can redistribute it and/or modify it under
   the terms of the GNU Lesser General Public License as published by the
@@ -18,7 +18,6 @@
   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.
 */
-// $Id$
 
 #include "WODirectActionRequestHandler.h"
 #include "WORequestHandler+private.h"