intermediate draft

This commit is contained in:
msyu
2025-06-06 06:03:11 +03:00
parent 529334d03b
commit 118012e17e
9 changed files with 394 additions and 107 deletions
+4 -4
View File
@@ -8,16 +8,16 @@
<cfif structKeyExists(ATTRIBUTES,"id")>
<cfset id=#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"]#/>
<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=""/><!---works only for entities with simple integer primary key--->
<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#"
@@ -28,7 +28,7 @@
<!--- route --->
<cfif ATTRIBUTES.usePRG AND !ATTRIBUTES.status.errorState>
<!--- PRG pattern--->
<cfif structKeyExists(CALLER, "save")>
<cfif structKeyExists(CALLER, "save")><!--- *** такое через атрибуты передать сложно, поэтому так неопрятно (кривое решение тянет за собой другие) --->
<m:location url="#tr.selfUrl#"/>
</cfif>
</cfif>
+2 -2
View File
@@ -1,6 +1,6 @@
<cfcomponent displayname="Generic Page Info" output="true">
<cfproperty name="entity" type="string"/>
<cfproperty name="key" type="string"/>
<cfproperty name="key" type="string"/><!--- 2025-06-05 06:31:27 разрешим ему быть списком через запятую или пустой строкой ---><!--- повсеместно используется в конструкции where e.#pageInfo.key#=<cfqueryparam attributeCollection=#id#/>, для составного ключа придется написать что-то более сложное --->
<cfproperty name="status" type="struct"/>
<cfproperty name="track" type="struct"/>
<cfproperty name="permission" type="integer"/>
@@ -11,7 +11,7 @@
<cffunction name="init" access="public">
<cfargument name="entity" type="string" required="true"/>
<cfargument name="key" type="string" default="#arguments.entity#_id"/>
<cfargument name="key" type="string" default="#arguments.entity#_id"/><!--- 2025-06-05 06:31:27 разрешим ему быть списком через запятую или пустой строкой, для составных ключей --->
<cfargument name="track" type="struct" required="true"/>
<cfset this.entity=arguments.entity/>
+7 -2
View File
@@ -1,4 +1,7 @@
<cfsilent></cfsilent><!--- prepare environment ---><!--- v02 17:35 28.06.2018---><!---14:55 29.06.2018 bug fixed--->
<cfsilent></cfsilent><!--- prepare environment --->
<!--- v02 17:35 28.06.2018--->
<!---14:55 29.06.2018 bug fixed--->
<!---v03 2025-06-05 06:25 added ATTRIBUTES.defaultBackUrl--->
<cfimport prefix="m" taglib="../lib"/>
<cfparam name="ATTRIBUTES.entity" type="string"/>
@@ -8,7 +11,9 @@
<cfparam name="ATTRIBUTES.formEncType" type="string" default=""/>
<cfparam name="ATTRIBUTES.trackOut" type="string" default="tr"/>
<cfparam name="ATTRIBUTES.defaultBackUrl" default="#ATTRIBUTES.entity#_ls.cfm"/>
<cfparam name="ATTRIBUTES.thisUrl" default=""/>
<!--- заново конструируем Url текущей страницы, без трека --->
<cfif len(ATTRIBUTES.thisUrl) EQ 0><!--- наугад используем типовое соглашение--->
<cfparam name="#ATTRIBUTES.key#" default="-1"/>
<cfset id=evaluate("#ATTRIBUTES.key#")/><!---*** неизящно, зато безопасно---><!--- *** как-то не слишком безопасно --->
@@ -18,7 +23,7 @@
<m:ac obj="#ATTRIBUTES.accessObject#" permissionOut="permission"/>
<cfset permission=2/><!--- *** --->
<m:track thisUrl="#ATTRIBUTES.thisUrl#" defaultBackUrl="#ATTRIBUTES.entity#_ls.cfm" output="track"/>
<m:track thisUrl="#ATTRIBUTES.thisUrl#" defaultBackUrl="#ATTRIBUTES.defaultBackUrl#" output="track"/>
<cfset pageInfo=CreateObject("component","detail_page_info").init("#ATTRIBUTES.entity#","#ATTRIBUTES.key#",#track#,"#permission#","frm",#request.thisPage#,"POST","#ATTRIBUTES.formEncType#")/>