Changeset 1548

Show
Ignore:
Timestamp:
05/13/2009 03:13:14 AM (10 months ago)
Author:
kurtwiersma
Message:

- Implemented support for using expressions in redirectEvent and redirectRoute methods. closes[t:285]

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • framework/1-8-0/trunk/framework/EventContext.cfc

    r1480 r1548  
    172172                <cfset var event = getCurrentEvent() /> 
    173173                <cfset var argsToPersist = StructNew() /> 
     174                <cfset var expEvaluator = getAppManager().getExpressionEvaluator() /> 
    174175                 
    175176                <!--- Check for an event-mapping. ---> 
     
    183184                        <!--- Resolve args to place in the URL ---> 
    184185                        <cfloop list="#arguments.args#" index="arg"> 
    185                                 <cfset eventArgs[arg] = event.getArg(arg) /> 
     186                                <cfif ListLen(arg, "=") eq 2 AND expEvaluator.isExpression(ListGetAt(arg, 2, "="))> 
     187                                        <cfset eventArgs[ListGetAt(arg, 1, "=")] =  
     188                                                expEvaluator.evaluateExpression(ListGetAt(arg, 2, "="), event, getAppManager().getPropertyManager()) /> 
     189                                <cfelse> 
     190                                        <cfset eventArgs[arg] = event.getArg(arg) /> 
     191                                </cfif> 
    186192                        </cfloop> 
    187193                <cfelse> 
     
    193199                        <cfif ListLen(arguments.persistArgs) gt 0> 
    194200                                <cfloop list="#arguments.persistArgs#" index="arg"> 
    195                                         <cfset argsToPersist[arg] = event.getArg(arg) /> 
     201                                        <cfif ListLen(arg, "=") eq 2 AND expEvaluator.isExpression(ListGetAt(arg, 2, "="))> 
     202                                                <cfset argsToPersist[ListGetAt(arg, 1, "=")] =  
     203                                                        expEvaluator.evaluateExpression(ListGetAt(arg, 2, "="), event, getAppManager().getPropertyManager()) /> 
     204                                        <cfelse> 
     205                                                <cfset argsToPersist[arg] = event.getArg(arg) /> 
     206                                        </cfif> 
    196207                                </cfloop> 
    197208                        <cfelseif arguments.persist> 
     
    227238                <cfset var event = getCurrentEvent() /> 
    228239                <cfset var argsToPersist = StructNew() /> 
     240                <cfset var expEvaluator = getAppManager().getExpressionEvaluator() /> 
    229241                 
    230242                <cfif NOT IsStruct(arguments.routeArgs)> 
    231243                        <!--- Resolve args to place in the URL ---> 
    232244                        <cfloop list="#arguments.routeArgs#" index="arg"> 
    233                                 <cfset eventArgs[arg] = event.getArg(arg) /> 
     245                                <cfif ListLen(arg, "=") eq 2 AND expEvaluator.isExpression(ListGetAt(arg, 2, "="))> 
     246                                        <cfset eventArgs[ListGetAt(arg, 1, "=")] =  
     247                                                expEvaluator.evaluateExpression(ListGetAt(arg, 2, "="), event, getAppManager().getPropertyManager()) /> 
     248                                <cfelse> 
     249                                        <cfset eventArgs[arg] = event.getArg(arg) /> 
     250                                </cfif> 
    234251                        </cfloop> 
    235252                <cfelse> 
     
    240257                        <!--- Resolve args to persist ---> 
    241258                        <cfloop list="#arguments.persistArgs#" index="arg"> 
    242                                 <cfset argsToPersist[arg] = event.getArg(arg) /> 
     259                                <cfif ListLen(arg, "=") eq 2 AND expEvaluator.isExpression(ListGetAt(arg, 2, "="))> 
     260                                        <cfset argsToPersist[ListGetAt(arg, 1, "=")] =  
     261                                                expEvaluator.evaluateExpression(ListGetAt(arg, 2, "="), event, getAppManager().getPropertyManager()) /> 
     262                                <cfelse> 
     263                                        <cfset argsToPersist[arg] = event.getArg(arg) /> 
     264                                </cfif> 
    243265                        </cfloop> 
    244266                <cfelse>