Code.GeekInterview.com
 
Code Samples Java Script
 

Java Script for getting directory file structure


Code ResourceAuthor: iamdvr  

Difficulty Level:

Published: 7th Nov 2006   Read: 4269 times  

Filed in: Java Script
Add Comment


 

 

Sponsored Links


 

 

This shows the tree like structure which is very effective to use. Copy as html file format and see in browser.

 


Sample Code
  1.  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  3. <HTML>
  4. <HEAD>
  5. <TITLE> Tree structure </TITLE>
  6. <script type="text/javascript">
  7. var persisteduls = new Object()
  8. var ddtreemenu = new Object()
  9.  
  10. ddtreemenu.closefolder = "closed.gif" // set image path to "closed" folder image
  11. ddtreemenu.openfolder = "open.gif" // set image path to "open" folder image
  12.  
  13. ////////// No need to edit beyond here///////////////////////////
  14.  
  15. ddtreemenu.createTree = function(treeid, enablepersist, persistdays)
  16. {
  17.    var ultags = document.getElementById(treeid).getElementsByTagName("ul")
  18.    if (typeof persisteduls[treeid] == "undefined")
  19.    persisteduls[treeid] = (enablepersist == true && ddtreemenu.getCookie(treeid) != "") ? ddtreemenu.getCookie(treeid).split(",") : ""
  20.    for (var i = 0; i < ultags.length; i ++ )
  21.    ddtreemenu.buildSubTree(treeid, ultags[i], i)
  22.    if (enablepersist == true)
  23.    {
  24.       // if enable persist feature
  25.       var durationdays = (typeof persistdays == "undefined") ? 1 : parseInt(persistdays)
  26.       ddtreemenu.dotask(window, function()
  27.       {
  28.          ddtreemenu.rememberstate(treeid, durationdays)
  29.       }
  30.       , "unload") // save opened UL indexes on body unload
  31.    }
  32. }
  33.  
  34. ddtreemenu.buildSubTree = function(treeid, ulelement, index)
  35. {
  36.    ulelement.parentNode.className = "submenu"
  37.    if (typeof persisteduls[treeid] == "object")
  38.    {
  39.       // if cookie exists (persisteduls[treeid] is an array versus "" string)
  40.       if (ddtreemenu.searcharray(persisteduls[treeid], index))
  41.       {
  42.          ulelement.setAttribute("rel", "open")
  43.          ulelement.style.display = "block"
  44.          ulelement.parentNode.style.backgroundImage = "url(" + ddtreemenu.openfolder + ")"
  45.       }
  46.       else
  47.       ulelement.setAttribute("rel", "closed")
  48.    }
  49.    // end cookie persist code
  50.    else if (ulelement.getAttribute("rel") == null || ulelement.getAttribute("rel") == false) // if no cookie and UL has NO rel attribute explicted added by user
  51.    ulelement.setAttribute("rel", "closed")
  52.    else if (ulelement.getAttribute("rel") == "open") // else if no cookie and this UL has an explicit rel value of "open"
  53.    ddtreemenu.expandSubTree(treeid, ulelement) // expand this UL plus all parent ULs (so the most inner UL is revealed ! )
  54.    ulelement.parentNode.onclick = function(e)
  55.    {
  56.       var submenu = this.getElementsByTagName("ul")[0]
  57.       if (submenu.getAttribute("rel") == "closed")
  58.       {
  59.          submenu.style.display = "block"
  60.          submenu.setAttribute("rel", "open")
  61.          ulelement.parentNode.style.backgroundImage = "url(" + ddtreemenu.openfolder + ")"
  62.       }
  63.       else if (submenu.getAttribute("rel") == "open")
  64.       {
  65.          submenu.style.display = "none"
  66.          submenu.setAttribute("rel", "closed")
  67.          ulelement.parentNode.style.backgroundImage = "url(" + ddtreemenu.closefolder + ")"
  68.       }
  69.       ddtreemenu.preventpropagate(e)
  70.    }
  71.    ulelement.onclick = function(e)
  72.    {
  73.       ddtreemenu.preventpropagate(e)
  74.    }
  75. }
  76.  
  77. ddtreemenu.expandSubTree = function(treeid, ulelement)
  78. {
  79.    // expand a UL element and any of its parent ULs
  80.    var rootnode = document.getElementById(treeid)
  81.    var currentnode = ulelement
  82.    currentnode.style.display = "block"
  83.    currentnode.parentNode.style.backgroundImage = "url(" + ddtreemenu.openfolder + ")"
  84.    while (currentnode != rootnode)
  85.    {
  86.       if (currentnode.tagName == "UL")
  87.       {
  88.          // if parent node is a UL, expand it too
  89.          currentnode.style.display = "block"
  90.          currentnode.setAttribute("rel", "open") // indicate it's open
  91.          currentnode.parentNode.style.backgroundImage = "url(" + ddtreemenu.openfolder + ")"
  92.       }
  93.       currentnode = currentnode.parentNode
  94.    }
  95. }
  96.  
  97. ddtreemenu.flatten = function(treeid, action)
  98. {
  99.    // expand or contract all UL elements
  100.    var ultags = document.getElementById(treeid).getElementsByTagName("ul")
  101.    for (var i = 0; i < ultags.length; i ++ )
  102.    {
  103.       ultags[i].style.display = (action == "expand") ? "block" : "none"
  104.       var relvalue = (action == "expand") ? "open" : "closed"
  105.       ultags[i].setAttribute("rel", relvalue)
  106.       ultags[i].parentNode.style.backgroundImage = (action == "expand") ? "url(" + ddtreemenu.openfolder + ")" : "url(" + ddtreemenu.closefolder + ")"
  107.    }
  108. }
  109.  
  110. ddtreemenu.rememberstate = function(treeid, durationdays)
  111. {
  112.    // store index of opened ULs relative to other ULs in Tree into cookie
  113.    var ultags = document.getElementById(treeid).getElementsByTagName("ul")
  114.    var openuls = new Array()
  115.    for (var i = 0; i < ultags.length; i ++ )
  116.    {
  117.       if (ultags[i].getAttribute("rel") == "open")
  118.       openuls[openuls.length] = i // save the index of the opened UL (relative to the entire list of ULs) as an array element
  119.    }
  120.    if (openuls.length == 0) // if there are no opened ULs to save / persist
  121.    openuls[0] = "none open" // set array value to string to simply indicate all ULs should persist with state being closed
  122.    ddtreemenu.setCookie(treeid, openuls.join(","), durationdays) // populate cookie with value treeid = 1, 2, 3 etc (where 1, 2... are the indexes of the opened ULs)
  123. }
  124.  
  125. //// A few utility functions below//////////////////////
  126.  
  127. ddtreemenu.getCookie = function(Name)
  128. {
  129.    // get cookie value
  130.    var re = new RegExp(Name + "=[^;]+", "i");
  131.    // construct RE to search for target name / value pair
  132.    if (document.cookie.match(re)) // if cookie found
  133.    return document.cookie.match(re)[0].split("=")[1] // return its value
  134.    return ""
  135. }
  136.  
  137. ddtreemenu.setCookie = function(name, value, days)
  138. {
  139.    // set cookei value
  140.    var expireDate = new Date()
  141.    // set "expstring" to either future or past date, to set or delete cookie, respectively
  142.    var expstring = expireDate.setDate(expireDate.getDate() + parseInt(days))
  143.    document.cookie = name + "=" + value + "; expires=" + expireDate.toGMTString() + "; path=/";
  144. }
  145.  
  146. ddtreemenu.searcharray = function(thearray, value)
  147. {
  148.    // searches an array for the entered value. If found, delete value from array
  149.    var isfound = false
  150.    for (var i = 0; i < thearray.length; i ++ )
  151.    {
  152.       if (thearray[i] == value)
  153.       {
  154.          isfound = true
  155.          thearray.shift() // delete this element from array for efficiency sake
  156.          break
  157.       }
  158.    }
  159.    return isfound
  160. }
  161.  
  162. ddtreemenu.preventpropagate = function(e)
  163. {
  164.    // prevent action from bubbling upwards
  165.    if (typeof e != "undefined")
  166.    e.stopPropagation()
  167.    else
  168.    event.cancelBubble = true
  169. }
  170.  
  171. ddtreemenu.dotask = function(target, functionref, tasktype)
  172. {
  173.    // assign a function to execute to an event handler (ie : onunload)
  174.    var tasktype = (window.addEventListener) ? tasktype : "on" + tasktype
  175.    if (target.addEventListener)
  176.    target.addEventListener(tasktype, functionref, false)
  177.    else if (target.attachEvent)
  178.    target.attachEvent(tasktype, functionref)
  179. }
  180. </script>
  181. <!--link rel="stylesheet" type="text/css" href="simpletree.css" /-->
  182. <style type="text/css">
  183.  
  184. .treeview ul{ /*CSS for Simple Tree Menu*/
  185. margin: 0;
  186. padding: 0;
  187. }
  188.  
  189. .treeview li{ /*Style for LI elements in general (excludes an LI that contains sub lists)*/
  190. background: white url(list.gif) no-repeat left center;
  191. list-style-type: none;
  192. padding-left: 22px;
  193. margin-bottom: 3px;
  194. }
  195.  
  196. .treeview li.submenu{ /* Style for LI that contains sub lists (other ULs). */
  197. background: white url(closed.gif) no-repeat left 1px;
  198. cursor: hand !important;
  199. cursor: pointer !important;
  200. }
  201.  
  202.  
  203. .treeview li.submenu ul{ /*Style for ULs that are children of LIs (submenu) */
  204. display: none; /*Hide them by default. Don't delete. */
  205. }
  206.  
  207. .treeview .submenu ul li{ /*Style for LIs of ULs that are children of LIs (submenu) */
  208. cursor: default;
  209. }
  210.  
  211. </style>
  212.  
  213. </HEAD>
  214.  
  215. <BODY>
  216.  
  217. <a href="javascript:ddtreemenu.flatten('treemenu1', 'expand')">Expand All</a>
  218. |
  219. <a href="javascript:ddtreemenu.flatten('treemenu1', 'contact')">Contact All</a>
  220.  
  221. <ul id="treemenu1" class="treeview">
  222.         <li>Item 1</li>
  223.         <li>Item 2</li>
  224.         <li>Folder 1
  225.                 <ul>
  226.                         <li>Sub Item 1.1
  227.                                 <ul>
  228.                                         <li>false
  229.                         <ul>
  230.                             <li>aaa</li>
  231.                         </ul>
  232.                     </li>
  233.                                 </ul>
  234.                         </li>
  235.                         <li>Sub Item 1.2</li>
  236.                 </ul></li>
  237.         <li>Item 3</li>
  238.         <li>Folder 2
  239.                 <ul>
  240.                         <li>Sub Item 2.1</li>
  241.                         <li>Folder 2.1
  242.                                 <ul>
  243.                                         <li>Sub Item 2.1.1</li>
  244.                                         <li>Sub Item 2.1.2</li>
  245.                                 </ul>
  246.                         </li>
  247.                 </ul>
  248.         </li>
  249.         <li>Item 4</li>
  250. </ul>
  251. <script type="text/javascript">
  252. // ddtreemenu.createTree(treeid, enablepersist, opt_persist_in_days (default is 1))
  253. //ddtreemenu.createTree("treemenu1", true)
  254. </script>
  255.  
  256. </BODY>
  257. </HTML>
  258.  
Copyright GeekInterview.com


Next Article: Check for Special characters


 

Latest Code Samples

 

Popular Code Samples

 

Related Code Samples

 

Post Your Comment:

Members Please Login
Your Name:*
e-mail ID:(required for notification)*
Image Verification: 
 
 Subscribe    



Comments

Nice One
Superb
Comment posted by: dejina on 2007-06-07T07:51:58
Just you need is little animation
Comment posted by: dejina on 2007-06-07T07:51:59

Popular Coders

# Coder NameHits
1. srinivasaraobora17901
2. Durga Prasad12338
3. chowsys6221
4. iamdvr4270
5. Kalidasan3345

Active Coders

# Coder NameCodes
1. srinivasaraobora3
2. chowsys2
3. Durga Prasad1
4. iamdvr1
5. Kalidasan1

Refined Tags