| Package: MachII.framework.commands |
| Inherits from: framework.Command |
| An Command for redirecting. |
<!--- License: Copyright 2008 GreatBizTools, LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Copyright: GreatBizTools, LLC Author: Ben Edwards (ben@ben-edwards.com) $Id: RedirectCommand.cfc 1124 2008-10-26 22:59:28Z peterfarrell $ Created version: 1.1.0 Updated version: 1.5.0 Notes: ---> |
| Method Summary | |
|---|---|
| public RedirectCommand |
init(string eventName, string eventParameter, string redirectPersistParameter, [string moduleName=""], [string url=""], [string args=""], [boolean persist="false"], [string persistArgs=""], [string statusType="temporary"], [string persistArgsIgnore=""])
Used by the framework for initialization. |
| public boolean |
execute(Event event, EventContext eventContext)
Executes the command. |
| private string | getArgs() |
| private string | getEventName() |
| private string | getEventParameter() |
| private string | getModuleName() |
| private boolean | getPersist() |
| private string | getPersistArgs() |
| private string | getPersistArgsIgnore() |
| private string | getRedirectPersistParameter() |
| private string | getStatusType() |
| private string | getUrl() |
| private string |
makeRedirectUrl(Event event, EventContext eventContext)
Assembles the redirect url. |
| private void |
savePersistEventData(Event event, EventContext eventContext)
Saves persisted event data and returns the persistId. |
| private void | setArgs(string args) |
| private void | setEventName(string eventName) |
| private void | setEventParameter(string eventParameter) |
| private void | setModuleName(string moduleName) |
| private void | setPersist(boolean persist) |
| private void | setPersistArgs(string persistArgs) |
| private void | setPersistArgsIgnore(string persistArgsIgnore) |
| private void | setRedirectPersistParameter(string redirectPersistParameter) |
| private void | setStatusType(string statusType) |
| private void | setUrl(string url) |
| Methods inherited from framework.Command: getLog , setParameter , getPropertyManager , setParameters , setLog , setExpressionEvaluator , getExpressionEvaluator , getParameter , setPropertyManager |
|---|
| Method Detail |
|---|
| execute |
|---|
public boolean execute( Event event, EventContext eventContext )
Executes the command.
Parameters:
| Event event |
| EventContext eventContext |
Code:
<cffunction name="execute" access="public" returntype="boolean" output="false"
hint="Executes the command.">
<cfargument name="event" type="MachII.framework.Event" required="true" />
<cfargument name="eventContext" type="MachII.framework.EventContext" required="true" />
<cfset var redirectUrl = "" />
<cfset var statusType = getStatusType() />
<cfset var log = getLog() />
<cfif getPersist()>
<cfset savePersistEventData(arguments.event, arguments.eventContext) />
</cfif>
<cfset redirectUrl = makeRedirectUrl(arguments.event, arguments.eventContext) />
<cfset arguments.eventContext.clearEventQueue() />
<cfif log.isInfoEnabled()>
<cfset log.info("Redirecting to url '#redirectUrl#' with '#statusType#' status code (persist='#getPersist()#').") />
</cfif>
<cfif statusType EQ "permanent">
<cfheader statuscode="301" statustext="Moved Permanently" />
<cfheader name="Location" value="#redirectUrl#" />
<cfabort />
<cfelseif statusType EQ "prg">
<cfheader statuscode="303" statustext="See Other" />
<cfheader name="Location" value="#redirectUrl#" />
<cfabort />
<cfelse>
<cflocation url="#redirectUrl#" addtoken="no" />
</cfif>
<cfreturn false />
</cffunction>
| getArgs |
|---|
private string getArgs( )
Parameters:
Code:
<cffunction name="getArgs" access="private" returntype="string" output="false"> <cfreturn variables.args /> </cffunction>
| getEventName |
|---|
private string getEventName( )
Parameters:
Code:
<cffunction name="getEventName" access="private" returntype="string" output="false"> <cfreturn variables.eventName /> </cffunction>
| getEventParameter |
|---|
private string getEventParameter( )
Parameters:
Code:
<cffunction name="getEventParameter" access="private" returntype="string" output="false"> <cfreturn variables.eventParameter /> </cffunction>
| getModuleName |
|---|
private string getModuleName( )
Parameters:
Code:
<cffunction name="getModuleName" access="private" returntype="string" output="false"> <cfreturn variables.moduleName /> </cffunction>
| getPersist |
|---|
private boolean getPersist( )
Parameters:
Code:
<cffunction name="getPersist" access="private" returntype="boolean" output="false"> <cfreturn variables.persist /> </cffunction>
| getPersistArgs |
|---|
private string getPersistArgs( )
Parameters:
Code:
<cffunction name="getPersistArgs" access="private" returntype="string" output="false"> <cfreturn variables.persistArgs /> </cffunction>
| getPersistArgsIgnore |
|---|
private string getPersistArgsIgnore( )
Parameters:
Code:
<cffunction name="getPersistArgsIgnore" access="private" returntype="string" output="false"> <cfreturn variables.persistArgsIgnore /> </cffunction>
| getRedirectPersistParameter |
|---|
private string getRedirectPersistParameter( )
Parameters:
Code:
<cffunction name="getRedirectPersistParameter" access="private" returntype="string" output="false"> <cfreturn variables.redirectPersistParameter /> </cffunction>
| getStatusType |
|---|
private string getStatusType( )
Parameters:
Code:
<cffunction name="getStatusType" access="private" returntype="string" output="false"> <cfreturn variables.statusType /> </cffunction>
| getUrl |
|---|
private string getUrl( )
Parameters:
Code:
<cffunction name="getUrl" access="private" returntype="string" output="false"> <cfreturn variables.url /> </cffunction>
| init |
|---|
public RedirectCommand init( string eventName, string eventParameter, string redirectPersistParameter, [string moduleName=""], [string url=""], [string args=""], [boolean persist="false"], [string persistArgs=""], [string statusType="temporary"], [string persistArgsIgnore=""] )
Used by the framework for initialization.
Parameters:
| string eventName |
| string eventParameter |
| string redirectPersistParameter |
| [string moduleName=""] |
| [string url=""] |
| [string args=""] |
| [boolean persist="false"] |
| [string persistArgs=""] |
| [string statusType="temporary"] |
| [string persistArgsIgnore=""] |
Code:
<cffunction name="init" access="public" returntype="RedirectCommand" output="false" hint="Used by the framework for initialization."> <cfargument name="eventName" type="string" required="true" /> <cfargument name="eventParameter" type="string" required="true" /> <cfargument name="redirectPersistParameter" type="string" required="true" /> <cfargument name="moduleName" type="string" required="false" default="" /> <cfargument name="url" type="string" required="false" default="" /> <cfargument name="args" type="string" required="false" default="" /> <cfargument name="persist" type="boolean" required="false" default="false" /> <cfargument name="persistArgs" type="string" required="false" default="" /> <cfargument name="statusType" type="string" required="false" default="temporary" /> <cfargument name="persistArgsIgnore" type="string" required="false" default="" /> <cfset setEventName(arguments.eventName) /> <cfset setEventParameter(arguments.eventParameter) /> <cfset setRedirectPersistParameter(arguments.redirectPersistParameter) /> <cfset setModuleName(arguments.moduleName) /> <cfset setUrl(arguments.url) /> <cfset setArgs(arguments.args) /> <cfset setPersist(arguments.persist) /> <cfset setPersistArgs(arguments.persistArgs) /> <cfset setStatusType(arguments.statusType) /> <cfset setPersistArgsIgnore(arguments.persistArgsIgnore) /> <cfif getPersist()> <cfset setArgs(ListAppend(getArgs(), getRedirectPersistParameter())) /> </cfif> <cfreturn this /> </cffunction>
| makeRedirectUrl |
|---|
private string makeRedirectUrl( Event event, EventContext eventContext )
Assembles the redirect url.
Parameters:
| Event event |
| EventContext eventContext |
Code:
<cffunction name="makeRedirectUrl" access="private" returntype="string" output="false" hint="Assembles the redirect url."> <cfargument name="event" type="MachII.framework.Event" required="true" /> <cfargument name="eventContext" type="MachII.framework.EventContext" required="true" /> <cfset var redirectUrl = "" /> <cfset var params = StructNew() /> <cfset var args = getArgs() /> <cfset var i = "" /> <cfloop list="#args#" index="i" delimiters=","> <cfif arguments.event.isArgDefined(i) AND IsSimpleValue(arguments.event.getArg(i))> <cfset params[i] = arguments.event.getArg(i) /> </cfif> </cfloop> <cfset redirectUrl = arguments.eventContext.getAppManager().getRequestManager().buildUrl(getModuleName(), getEventName(), params, getUrl()) /> <cfreturn redirectUrl /> </cffunction>
| savePersistEventData |
|---|
private void savePersistEventData( Event event, EventContext eventContext )
Saves persisted event data and returns the persistId.
Parameters:
| Event event |
| EventContext eventContext |
Code:
<cffunction name="savePersistEventData" access="private" returntype="void" output="false" hint="Saves persisted event data and returns the persistId."> <cfargument name="event" type="MachII.framework.Event" required="true" /> <cfargument name="eventContext" type="MachII.framework.EventContext" required="true" /> <cfset var args = StructNew() /> <cfset var persistArgs = getPersistArgs() /> <cfset var persistArgsIgnore = getPersistArgsIgnore() /> <cfset var persistId = "" /> <cfset var i = "" /> <cfif NOT ListLen(persistArgs)> <cfset args = arguments.event.getArgs() /> <cfloop list="#persistArgsIgnore#" index="i" delimiters=","> <cfset StructDelete(args, i, FALSE) /> </cfloop> <cfelse> <cfloop list="#persistArgs#" index="i" delimiters=","> <cfif arguments.event.isArgDefined(i)> <cfset args[i] = arguments.event.getArg(i) /> </cfif> </cfloop> </cfif> <cfset StructDelete(args, getEventParameter(), FALSE) /> <cfset persistId = arguments.eventContext.getAppManager().getRequestManager().savePersistEventData(args) /> <cfset arguments.event.setArg(getRedirectPersistParameter(), persistId) /> </cffunction>
| setArgs |
|---|
private void setArgs( string args )
Parameters:
| string args |
Code:
<cffunction name="setArgs" access="private" returntype="void" output="false"> <cfargument name="args" type="string" required="true" /> <cfset variables.args = arguments.args /> </cffunction>
| setEventName |
|---|
private void setEventName( string eventName )
Parameters:
| string eventName |
Code:
<cffunction name="setEventName" access="private" returntype="void" output="false"> <cfargument name="eventName" type="string" required="true" /> <cfset variables.eventName = arguments.eventName /> </cffunction>
| setEventParameter |
|---|
private void setEventParameter( string eventParameter )
Parameters:
| string eventParameter |
Code:
<cffunction name="setEventParameter" access="private" returntype="void" output="false"> <cfargument name="eventParameter" type="string" required="true" /> <cfset variables.eventParameter = arguments.eventParameter /> </cffunction>
| setModuleName |
|---|
private void setModuleName( string moduleName )
Parameters:
| string moduleName |
Code:
<cffunction name="setModuleName" access="private" returntype="void" output="false"> <cfargument name="moduleName" type="string" required="true" /> <cfset variables.moduleName = arguments.moduleName /> </cffunction>
| setPersist |
|---|
private void setPersist( boolean persist )
Parameters:
| boolean persist |
Code:
<cffunction name="setPersist" access="private" returntype="void" output="false"> <cfargument name="persist" type="boolean" required="true" /> <cfset variables.persist = arguments.persist /> </cffunction>
| setPersistArgs |
|---|
private void setPersistArgs( string persistArgs )
Parameters:
| string persistArgs |
Code:
<cffunction name="setPersistArgs" access="private" returntype="void" output="false"> <cfargument name="persistArgs" type="string" required="true" /> <cfset variables.persistArgs = arguments.persistArgs /> </cffunction>
| setPersistArgsIgnore |
|---|
private void setPersistArgsIgnore( string persistArgsIgnore )
Parameters:
| string persistArgsIgnore |
Code:
<cffunction name="setPersistArgsIgnore" access="private" returntype="void" output="false"> <cfargument name="persistArgsIgnore" type="string" required="true" /> <cfset variables.persistArgsIgnore = arguments.persistArgsIgnore /> </cffunction>
| setRedirectPersistParameter |
|---|
private void setRedirectPersistParameter( string redirectPersistParameter )
Parameters:
| string redirectPersistParameter |
Code:
<cffunction name="setRedirectPersistParameter" access="private" returntype="void" output="false"> <cfargument name="redirectPersistParameter" type="string" required="true" /> <cfset variables.redirectPersistParameter = arguments.redirectPersistParameter /> </cffunction>
| setStatusType |
|---|
private void setStatusType( string statusType )
Parameters:
| string statusType |
Code:
<cffunction name="setStatusType" access="private" returntype="void" output="false"> <cfargument name="statusType" type="string" required="true" /> <cfset variables.statusType = arguments.statusType /> </cffunction>
| setUrl |
|---|
private void setUrl( string url )
Parameters:
| string url |
Code:
<cffunction name="setUrl" access="private" returntype="void" output="false"> <cfargument name="url" type="string" required="true" /> <cfset variables.url = arguments.url /> </cffunction>