Coldfusion 11 - Global Variables - Application.cfc or Application.cfm

I am working on an application made in Coldfusion 9. I need to port it to CF11 and I would like to improve the code. The current application in CF9 runs as follows:

Application.cfm

<cfapplication  name="MyApp"
            clientManagement="yes"
            clientStorage="registry"
            setClientCookies="yes"
            sessionManagement="yes"
            sessionTimeout="#CreateTimeSpan(0,1,0,0)#"
            applicationTimeout="#CreateTimeSpan(0,0,2,0)#" 
/>  

<cfset application.datasource   = "MyApp"/>
<cfset application.name         = "MyApp"/>
<cfset application.access       = "App"/>
<cfset application.version      = "1.1"/>
<cfset application.title        = "My Application"/>

<cfset application.inc_path     = "includes"/>
<cfset application.com_path     = "components"/>
<cfset application.scripts_path = "scripts"/>
<cfset application.styles_path      = "styles"/>

<cfset application.email = "firstname.lastnane@myapplication.com" />
<cfset application.YEAR  = 2016/>

<cfif Not IsDefined("session.language_cd")>
    <cfset session.language_cd = "ENG">
</cfif>

<cfset session.email_support_team = "support@myapplication.com" />

<cfinclude template="ui_lib.cfm">

Inside the ui_lib.cfm file, there are many variables defined and used in all other .cfm files:

<cfswitch expression="#session.ui_lng_cd#">  
    <cfcase value="FRA">
        <cfset ui_lib_abbrev                    = "Abbr&eacute;viation" />
        <cfset ui_lib_acces                     = "Acc&egrave;s" />
        <cfset ui_lib_active_sans_accent        = "Actif" />
   </cfcase>
    <cfcase value="ENG">
        <cfset ui_lib_abbrev                    = "Abbreviation" />
        <cfset ui_lib_acces                     = "Access" />
        <cfset ui_lib_active_sans_accent        = "Active" />
  </cfcase>
</cfswitch>

For example, in menu.cfm :

<div id="menu">
    <h5><cfoutput>#session.user#</cfoutput></h5>
    <ul>
    <li><cfoutput>#ui_lib_abbrev#</cfoutput></li>
    <li><cfoutput>#ui_lib_acces#</cfoutput></li>
    <li><cfoutput>#ui_lib_active_sans_accent#</cfoutput></li>
    </ul>
</div>

I tried to create Application.cfc to replace application.cfm :

<cfcomponent displayname="MyApp">
    <cfset This.name = "MyApp">

    <cfset This.sessionManagement="yes">
    <cfset This.clientManagement="no">
    <cfset This.loginStorage="session">
    <cfset This.sessionTimeout = CreateTimeSpan(0,0,0,1)>
    <cfset This.applicationTimeout = CreateTimeSpan(0,0,2,0) >
    <cfset This.setClientCookies="no">
    <cfset This.domainCookies="yes">
    <cfset This.scriptProtect = "All">

    <cffunction name="onApplicationStart">        

        <cfscript>
            Application.homePage    = "/index.cfm";
            Application.datasource  = "MyApp";
            Application.name            = "MyApp";
            Application.access      = "App";
            Application.version         = "1.1";
            Application.title       = "My Application";

            Application.inc_path        = "includes";
            Application.com_path        = "components";
            Application.scripts_path    = "scripts";
            Application.styles_path     = "styles";
            Application.email = "firstname.lastnane@myapplication.com"
            Application.YEAR  = 2016;          

        </cfscript>

        <cfinclude template="ui_lib.cfm">

    </cffunction>

    <cffunction name="onSessionStart">
         <cfif Not IsDefined("session.language_cd")>
              <cfset session.language_cd = "ENG">
         </cfif>

        <cfif Not IsDefined("session.g_exercice")>
            <cfset todayDate = Now()>
            <cfset SESSION.g_exercice = #DateFormat(todayDate, "yyyy")#>
        </cfif>          

        <cfif Not IsDefined("session.sec_first_pass")>
            <cfset SESSION.sec_first_pass = 0>
        </cfif> 

        <cfset session.email_support_team = "support@myapplication.com" />

    </cffunction>

</cfcomponent>
  • application.cfc application.cfm . , Coldfusion , ui_lib.cfm. , . , ?

  • , Application.cfc Application.cfm?

.

+4
2

cfm cfc, . , .

, session.ui_lng_cd , , , , OnRequestStart. , , , .

:

, OnSessionStart, , - .

, , , , , , . , .

, application.cfc OnApplicationStart :

application.languageStrings = {};
application.languageStrings["ENG"] = {};
application.languageStrings["ENG"]["ui_lib_abbrev"] = "Abbreviation";
application.languageStrings["ENG"]["ui_lib_acces"] = "Access";
application.languageStrings["ENG"]["ui_lib_active_sans_accent"] = "Active";
application.languageStrings["FRA"] = {};
application.languageStrings["FRA"]["ui_lib_abbrev"] = "Abbr&eacute;viatio";
application.languageStrings["FRA"]["ui_lib_acces"] = "Acc&egrave;s";
application.languageStrings["FRA"]["ui_lib_active_sans_accent"] = "Actif";

:

#application.languageStrings[session.language_cd]["ui_lib_active_sans_accent"]#
+2

, UDF, variables, , UDF onApplicationStart(), , . , variables.

, application, , .

application.ui = {
    "ENG" = {
        "abbrev" = "Abbreviation"
        , "acces" = "Access"
        , "active_sans_accent" = "Active"
    }
    , "FRA" = {
        "abbrev" = "Abbréviation"
        , "acces" = "Accès"
        , "active_sans_accent" = "Actif"
    }
};

: #application.ui[session.ui_lng_cd].abbrev#.

, .

+1

Source: https://habr.com/ru/post/1650543/


All Articles