spec/lib/dispatch_detail.cfm
2025-06-06 06:03:11 +03:00

59 lines
2.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<cfsilent><!--- dispatch --->
<cfimport prefix="m" taglib="../lib"/>
<cfimport prefix="c" taglib="../lib/controls"/>
<cfparam name="ATTRIBUTES.usePRG" type="boolean" default="Yes"/>
<cfparam name="ATTRIBUTES.pageInfo" type="struct"/>
<cfparam name="ATTRIBUTES.status" type="struct"/>
<cfif structKeyExists(ATTRIBUTES,"id")>
<cfset id=#ATTRIBUTES.id#/><!--- for composite key you can set ATTRIBUTES.id to "" and use ATTRIBUTES.queryString --->
<cfelse>
<cfparam name="ATTRIBUTES.data" type="struct"/>
<cfset id=#ATTRIBUTES.data[ATTRIBUTES.pageInfo.entity &"_id"]#/><!--- так себе идея --->
</cfif>
<cfparam name="ATTRIBUTES.defaultBackUrl" type="string" default="#ATTRIBUTES.pageInfo.entity#_ls.cfm"/>
<cfparam name="ATTRIBUTES.queryString" type="string" default="#ATTRIBUTES.pageInfo.key#=#id#"/><!---works only for entities with simple integer primary key--->
<cfparam name="ATTRIBUTES.trackOut" type="string" default=""/>
<cfparam name="ATTRIBUTES.idAttributesOut" type="string" default=""/><!--- cfqueryparam attribute collection, works only for entities with simple integer primary key--->
<m:track
thisURL="#request.thisPage#?#ATTRIBUTES.queryString#"
defaultBackUrl="#ATTRIBUTES.defaultBackUrl#"
output="tr"
/>
<!--- route --->
<cfif ATTRIBUTES.usePRG AND !ATTRIBUTES.status.errorState>
<!--- PRG pattern--->
<cfif structKeyExists(CALLER, "save")><!--- *** такое через атрибуты передать сложно, поэтому так неопрятно (кривое решение тянет за собой другие) --->
<m:location url="#tr.selfUrl#"/>
</cfif>
</cfif>
<cfif structKeyExists(CALLER, "saveAndClose") AND !ATTRIBUTES.status.errorState>
<m:location url="#tr.backUrl#"/>
</cfif>
<cfif structKeyExists(CALLER, "saveAndNew") AND !ATTRIBUTES.status.errorState>
<m:location url="#tr.selfUrl#&doClone"/><!--- должен содержать Query String, чтобы указать ключ, иначе смысла нет--->
</cfif>
<!---/route --->
<cfset ATTRIBUTES.pageInfo.track=#tr#/>
<cfset ATTRIBUTES.pageInfo.status=#ATTRIBUTES.status#/><!---Передаем статус в pageInfo--->
<cfif len(ATTRIBUTES.trackOut)>
<cfset "CALLER.#ATTRIBUTES.trackOut#"=#tr#/>
</cfif>
<cfif len(ATTRIBUTES.idAttributesOut)>
<cfset "CALLER.#ATTRIBUTES.idAttributesOut#.cfsqltype"="cf_sql_integer"/>
<cfset "CALLER.#ATTRIBUTES.idAttributesOut#.value"=#id#/>
<cfset "CALLER.#ATTRIBUTES.idAttributesOut#.null"=#!isNumeric(id)#/>
</cfif>
<cfexit method="exittag"/>
</cfsilent>