diff --git a/GSWeb.framework/GSWHTMLDynamicElement.h b/GSWeb.framework/GSWHTMLDynamicElement.h index 172cae0..38e7845 100644 --- a/GSWeb.framework/GSWHTMLDynamicElement.h +++ b/GSWeb.framework/GSWHTMLDynamicElement.h @@ -120,10 +120,38 @@ attributeAssociations:(NSDictionary*)attributeAssociations directActionNameAssociation:(GSWAssociation*)directActionName otherPathQueryAssociations:(NSDictionary*)otherPathQueryAssociations inContext:(GSWContext*)context; +-(NSString*)computeActionStringWithActionClassAssociation:(GSWAssociation*)actionClass + directActionNameAssociation:(GSWAssociation*)directActionName + pathQueryDictionaryAssociation:(GSWAssociation*)pathQueryDictionaryAssociation + otherPathQueryAssociations:(NSDictionary*)otherPathQueryAssociations + inContext:(GSWContext*)context; -(NSDictionary*)computeQueryDictionaryWithActionClassAssociation:(GSWAssociation*)actionClass directActionNameAssociation:(GSWAssociation*)directActionName queryDictionaryAssociation:(GSWAssociation*)queryDictionary otherQueryAssociations:(NSDictionary*)otherQueryAssociations inContext:(GSWContext*)context; @end + +//==================================================================== +@interface GSWHTMLDynamicElement (GSWHTMLDynamicElementCID) + +-(NSString*)addCIDElement:(NSDictionary*)cidElement + forKey:(NSString*)cidKeyValue + forCIDStoreAssociation:(GSWAssociation*)cidStore + inContext:(GSWContext*)aContext; + +-(NSString*)addURL:(NSString*)url +forCIDKeyAssociation:(GSWAssociation*)cidKey +CIDStoreAssociation:(GSWAssociation*)cidStore + inContext:(GSWContext*)aContext; + +-(NSString*)addURLValuedElementData:(GSWURLValuedElementData*)data + forCIDKeyAssociation:(GSWAssociation*)cidKey + CIDStoreAssociation:(GSWAssociation*)cidStore + inContext:(GSWContext*)aContext; +-(NSString*)addPath:(NSString*)path +forCIDKeyAssociation:(GSWAssociation*)cidKey +CIDStoreAssociation:(GSWAssociation*)cidStore + inContext:(GSWContext*)aContext; +@end #endif diff --git a/GSWeb.framework/GSWHTMLDynamicElement.m b/GSWeb.framework/GSWHTMLDynamicElement.m index 5d8898b..53b74b2 100644 --- a/GSWeb.framework/GSWHTMLDynamicElement.m +++ b/GSWeb.framework/GSWHTMLDynamicElement.m @@ -765,11 +765,26 @@ attributeAssociations:(NSDictionary*)attributeAssociations otherPathQueryAssociations:nil inContext:context]; }; + //-------------------------------------------------------------------- -(NSString*)computeActionStringWithActionClassAssociation:(GSWAssociation*)actionClass directActionNameAssociation:(GSWAssociation*)directActionName otherPathQueryAssociations:(NSDictionary*)otherPathQueryAssociations inContext:(GSWContext*)context +{ + return [self computeActionStringWithActionClassAssociation:actionClass + directActionNameAssociation:directActionName + pathQueryDictionaryAssociation:nil + otherPathQueryAssociations:nil + inContext:context]; +}; + +//-------------------------------------------------------------------- +-(NSString*)computeActionStringWithActionClassAssociation:(GSWAssociation*)actionClass + directActionNameAssociation:(GSWAssociation*)directActionName + pathQueryDictionaryAssociation:(GSWAssociation*)pathQueryDictionaryAssociation + otherPathQueryAssociations:(NSDictionary*)otherPathQueryAssociations + inContext:(GSWContext*)context { //OK GSWComponent* component=nil; @@ -801,26 +816,63 @@ attributeAssociations:(NSDictionary*)attributeAssociations directActionName); }; - if (tmpDirectActionString && [otherPathQueryAssociations count]>0) + if (tmpDirectActionString) { - // We sort keys so URL are always the same for same parameters - NSArray* keys=[[otherPathQueryAssociations allKeys]sortedArrayUsingSelector:@selector(compare:)]; - int count=[keys count]; - int i=0; - NSDebugMLLog(@"gswdync",@"otherPathQueryAssociations=%@",otherPathQueryAssociations); - for(i=0;i0 || [otherPathQueryAssociations count]>0) + { + NSMutableDictionary* pathKV=nil; + if ([otherPathQueryAssociations count]>0) + { + NSEnumerator* enumerator = [otherPathQueryAssociations keyEnumerator]; + id key=nil; + pathKV=(NSMutableDictionary*)[NSMutableDictionary dictionary]; + while ((key = [enumerator nextObject])) + { + id association = [otherPathQueryAssociations valueForKey:key]; + id associationValue=[association valueInComponent:component]; + NSDebugMLLog(@"gswdync",@"key=%@",key); + NSDebugMLLog(@"gswdync",@"association=%@",association); + NSDebugMLLog(@"gswdync",@"associationValue=%@",associationValue); + if (!associationValue) + associationValue=[NSString string]; + [pathKV setObject:associationValue + forKey:key]; + }; + if ([pathQueryDictionary count]>0) + [pathKV addEntriesFromDictionary:pathQueryDictionary]; + } + else + pathKV=(NSMutableDictionary*)pathQueryDictionary; + + NSDebugMLLog(@"gswdync",@"pathKV=%@",pathKV); + + // We sort keys so URL are always the same for same parameters + NSArray* keys=[[pathKV allKeys]sortedArrayUsingSelector:@selector(compare:)]; + int count=[keys count]; + int i=0; + NSDebugMLLog(@"gswdync",@"pathKV=%@",pathKV); + for(i=0;i