Let's say you are on Web Maps page, the navigation should open Data Users then Search for pollutant Releases and highlight Web Maps.
I'm already creating the list with a 2 dimensional array and for loop. It creates it nicely except when it comes to opening a certain section of the ul.
CODE
<cfparam name="selected" default="" />
<cfparam name="visibility" default=' style="display: none;"' />
<cfparam name="lastlvl" default="" />
<cfparam name="navlist" default="" />
<cfset myNav = ArrayNew(2) />
<cfset myNav[1][1] = "Home" />
<cfset myNav[1][2] = "##" />
<cfset myNav[1][3] = "lvl1" />
<cfset myNav[2][1] = "Data Users" />
<cfset myNav[2][2] = "##" />
<cfset myNav[2][3] = "lvl1" />
<cfset myNav[3][1] = "Search for Pollutant Releases" />
<cfset myNav[3][2] = "##" />
<cfset myNav[3][3] = "lvl2" />
<cfset myNav[4][1] = "Web Maps" />
<cfset myNav[4][2] = "##" />
<cfset myNav[4][3] = "lvl3" />
<cfset myNav[5][1] = "NPRI Databases" />
<cfset myNav[5][2] = "##" />
<cfset myNav[5][3] = "lvl2" />
<cfset myNav[6][1] = "Criteria Air Contaminants (CAC)" />
<cfset myNav[6][2] = "##" />
<cfset myNav[6][3] = "lvl2" />
<cfset myNav[7][1] = "1990 - 2015 CAC Emission Summaries" />
<cfset myNav[7][2] = "##" />
<cfset myNav[7][3] = "lvl3" />
<cfset myNav[8][1] = "CAC Emission Outlook" />
<cfset myNav[8][2] = "##" />
<cfset myNav[8][3] = "lvl3" />
<cfset myNav[9][1] = "2000 CAC Emission Maps" />
<cfset myNav[9][2] = "##" />
<cfset myNav[9][3] = "lvl3" />
<cfset myNav[10][1] = "Data Analysis" />
<cfset myNav[10][2] = "##" />
<cfset myNav[10][3] = "lvl2" />
<cfset myNav[11][1] = "NPRI Lists of Substances" />
<cfset myNav[11][2] = "##" />
<cfset myNav[11][3] = "lvl2" />
<cfset myNav[12][1] = "NPRI List of Substances" />
<cfset myNav[12][2] = "##" />
<cfset myNav[12][3] = "lvl3" />
<cfset myNav[13][1] = "Toxic Substances (CEPA)" />
<cfset myNav[13][2] = "##" />
<cfset myNav[13][3] = "lvl3" />
<cfset myNav[14][1] = "Alternate Threshold Substances" />
<cfset myNav[14][2] = "##" />
<cfset myNav[14][3] = "lvl3" />
<cfset myNav[15][1] = "Criteria Air Contaminants" />
<cfset myNav[15][2] = "##" />
<cfset myNav[15][3] = "lvl3" />
<cfset myNav[16][1] = "Reporting Facilities" />
<cfset myNav[16][2] = "##" />
<cfset myNav[16][3] = "lvl1" />
<div id="sidenav">
<cfloop index="i" from="1" to="#ArrayLen(myNav)#">
<!--- Create list --->
<cfif i GT 1>
<!--- if same lvl --->
<cfif right(lastlvl,1) - right(myNav[i][3],1) EQ 0>
<cfset navlist = navlist & '</li>' />
<!--- if lower lvl --->
<cfelseif right(lastlvl,1) - right(myNav[i][3],1) EQ -1>
<!--- Make sublist visible --->
<cfif section EQ myNav[i-1][1]>
<cfset navlist = navlist & '<ul>' />
<cfelse>
<cfset navlist = navlist & '<ul style="display:none;">' />
</cfif>
<!--- if higher lvl by 1 --->
<cfelseif right(lastlvl,1) - right(myNav[i][3],1) EQ 1>
<cfset navlist = navlist & '</li></ul></li>' />
<!--- if higher lvl by 2 --->
<cfelseif right(lastlvl,1) - right(myNav[i][3],1) EQ 2>
<cfset navlist = navlist & '</li></ul></li></ul></li>' />
</cfif>
</cfif>
<!--- Add selected class --->
<cfif section EQ myNav[i][1]>
<cfset selected = ' class="selected"' />
</cfif>
<cfset navlist = navlist & '<li><a href="#myNav[i][2]#"#selected#>#myNav[i][1]#</a>' />
<cfset selected = "" />
<cfset lastlvl = myNav[i][3] />
</cfloop>
<cfset navlist = '<ul>' & navlist & '</li></ul>' />
<cfoutput>#navlist#</cfoutput>
</div>
<cfparam name="visibility" default=' style="display: none;"' />
<cfparam name="lastlvl" default="" />
<cfparam name="navlist" default="" />
<cfset myNav = ArrayNew(2) />
<cfset myNav[1][1] = "Home" />
<cfset myNav[1][2] = "##" />
<cfset myNav[1][3] = "lvl1" />
<cfset myNav[2][1] = "Data Users" />
<cfset myNav[2][2] = "##" />
<cfset myNav[2][3] = "lvl1" />
<cfset myNav[3][1] = "Search for Pollutant Releases" />
<cfset myNav[3][2] = "##" />
<cfset myNav[3][3] = "lvl2" />
<cfset myNav[4][1] = "Web Maps" />
<cfset myNav[4][2] = "##" />
<cfset myNav[4][3] = "lvl3" />
<cfset myNav[5][1] = "NPRI Databases" />
<cfset myNav[5][2] = "##" />
<cfset myNav[5][3] = "lvl2" />
<cfset myNav[6][1] = "Criteria Air Contaminants (CAC)" />
<cfset myNav[6][2] = "##" />
<cfset myNav[6][3] = "lvl2" />
<cfset myNav[7][1] = "1990 - 2015 CAC Emission Summaries" />
<cfset myNav[7][2] = "##" />
<cfset myNav[7][3] = "lvl3" />
<cfset myNav[8][1] = "CAC Emission Outlook" />
<cfset myNav[8][2] = "##" />
<cfset myNav[8][3] = "lvl3" />
<cfset myNav[9][1] = "2000 CAC Emission Maps" />
<cfset myNav[9][2] = "##" />
<cfset myNav[9][3] = "lvl3" />
<cfset myNav[10][1] = "Data Analysis" />
<cfset myNav[10][2] = "##" />
<cfset myNav[10][3] = "lvl2" />
<cfset myNav[11][1] = "NPRI Lists of Substances" />
<cfset myNav[11][2] = "##" />
<cfset myNav[11][3] = "lvl2" />
<cfset myNav[12][1] = "NPRI List of Substances" />
<cfset myNav[12][2] = "##" />
<cfset myNav[12][3] = "lvl3" />
<cfset myNav[13][1] = "Toxic Substances (CEPA)" />
<cfset myNav[13][2] = "##" />
<cfset myNav[13][3] = "lvl3" />
<cfset myNav[14][1] = "Alternate Threshold Substances" />
<cfset myNav[14][2] = "##" />
<cfset myNav[14][3] = "lvl3" />
<cfset myNav[15][1] = "Criteria Air Contaminants" />
<cfset myNav[15][2] = "##" />
<cfset myNav[15][3] = "lvl3" />
<cfset myNav[16][1] = "Reporting Facilities" />
<cfset myNav[16][2] = "##" />
<cfset myNav[16][3] = "lvl1" />
<div id="sidenav">
<cfloop index="i" from="1" to="#ArrayLen(myNav)#">
<!--- Create list --->
<cfif i GT 1>
<!--- if same lvl --->
<cfif right(lastlvl,1) - right(myNav[i][3],1) EQ 0>
<cfset navlist = navlist & '</li>' />
<!--- if lower lvl --->
<cfelseif right(lastlvl,1) - right(myNav[i][3],1) EQ -1>
<!--- Make sublist visible --->
<cfif section EQ myNav[i-1][1]>
<cfset navlist = navlist & '<ul>' />
<cfelse>
<cfset navlist = navlist & '<ul style="display:none;">' />
</cfif>
<!--- if higher lvl by 1 --->
<cfelseif right(lastlvl,1) - right(myNav[i][3],1) EQ 1>
<cfset navlist = navlist & '</li></ul></li>' />
<!--- if higher lvl by 2 --->
<cfelseif right(lastlvl,1) - right(myNav[i][3],1) EQ 2>
<cfset navlist = navlist & '</li></ul></li></ul></li>' />
</cfif>
</cfif>
<!--- Add selected class --->
<cfif section EQ myNav[i][1]>
<cfset selected = ' class="selected"' />
</cfif>
<cfset navlist = navlist & '<li><a href="#myNav[i][2]#"#selected#>#myNav[i][1]#</a>' />
<cfset selected = "" />
<cfset lastlvl = myNav[i][3] />
</cfloop>
<cfset navlist = '<ul>' & navlist & '</li></ul>' />
<cfoutput>#navlist#</cfoutput>
</div>
I was thinking of setting a variable on each page that tells my script to open the sublist but it's getting really complex. The problem with this is when it comes to adding a new sublist item or moving items around, it's kinda complicated for someone else.
This might not be the best way to display the list, if you know of a better way to create it and open only a specific section on certain pages let me know.
EDIT: Actually I found a way for it to work. I created 3 variables. 1 for lvl1, lvl2 and lvl3. Seems to work nicely. Only thing I don't like is the huge array...
