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