Code.GeekInterview.com
  I am new, Sign me up!
 
Code Samples Java Script
 

Java Script for getting directory file structure


Code ResourceAuthor: iamdvr  

Difficulty Level:

Published: 7th Nov 2006   Read: 1863 times  

Filed in: Java Script
Add Comment


 


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 Comment


Members Please Login

Name:  Email: (Optional. Used for Notification)

Title:
 
Comment:
Validation Code: <=>  (Enter this code in text box)





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. srinivasaraobora5402
2. Durga Prasad3858
3. chowsys2580
4. iamdvr1864

Active Coders

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

Refined Tags

 

Sponsored Links

 
About Us -  Privacy Policy -  Terms and Conditions -  Contact  

Copyright © 2005 - 2009 GeekInterview.com. All Rights Reserved

Page copy protected against web site content infringement by Copyscape