| blib/lib/HTML/ListToTree/DTree.pm | |||
|---|---|---|---|
| Criterion | Covered | Total | % |
| statement | 46 | 46 | 100.0 |
| branch | 10 | 14 | 71.4 |
| condition | 7 | 13 | 53.8 |
| subroutine | 12 | 12 | 100.0 |
| pod | 0 | 9 | 0.0 |
| total | 75 | 94 | 79.7 |
| line | stmt | bran | cond | sub | pod | time | code | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | =pod | |||||||||||||
| 2 | ||||||||||||||
| 3 | =begin classdoc | |||||||||||||
| 4 | ||||||||||||||
| 5 | Implements the HTML::ListToTree widget using the dtree software. | |||||||||||||
| 6 | Contains the dtree software, stylesheet, and icons.
|
|||||||||||||
| 7 | ||||||||||||||
| 8 | The dtree widget software and components included in this | |||||||||||||
| 9 | package are distributed in accordance | |||||||||||||
| 10 | with the following license and copyright: | |||||||||||||
| 11 | |
|||||||||||||
| 12 | /*--------------------------------------------------| | |||||||||||||
| 13 | | dTree 2.05| www.destroydrop.com/javascripts/tree/ | | |||||||||||||
| 14 | |---------------------------------------------------| | |||||||||||||
| 15 | | Copyright (c) 2002-2003 Geir Landrö | | |||||||||||||
| 16 | | | | |||||||||||||
| 17 | | This script can be used freely as long as all | | |||||||||||||
| 18 | | copyright messages are intact. | | |||||||||||||
| 19 | | | | |||||||||||||
| 20 | | Updated: 17.04.2003 | | |||||||||||||
| 21 | |--------------------------------------------------*/ | |||||||||||||
| 22 | ||||||||||||||
| 23 | ||||||||||||||
| 24 | @author Dean Arnold | |||||||||||||
| 25 | @since 2007-Jun-10 | |||||||||||||
| 26 | @self $self | |||||||||||||
| 27 | ||||||||||||||
| 28 | =end classdoc | |||||||||||||
| 29 | ||||||||||||||
| 30 | =cut | |||||||||||||
| 31 | ||||||||||||||
| 32 | package HTML::ListToTree::DTree; | |||||||||||||
| 33 | ||||||||||||||
| 34 | 1 | 1 | 7 | use MIME::Base64; | ||||||||||
| 1 | 2 | |||||||||||||
| 1 | 70 | |||||||||||||
| 35 | ||||||||||||||
| 36 | 1 | 1 | 11 | use strict; | ||||||||||
| 1 | 2 | |||||||||||||
| 1 | 35 | |||||||||||||
| 37 | 1 | 1 | 5 | use warnings; | ||||||||||
| 1 | 2 | |||||||||||||
| 1 | 1236 | |||||||||||||
| 38 | ||||||||||||||
| 39 | our $VERSION = '1.01'; | |||||||||||||
| 40 | ||||||||||||||
| 41 | our %dtree_images = ( | |||||||||||||
| 42 | 'base.gif' => | |||||||||||||
| 43 | 'R0lGODlhFQASAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/ | |||||||||||||
| 44 | /////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 45 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm | |||||||||||||
| 46 | AABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/ | |||||||||||||
| 47 | MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm | |||||||||||||
| 48 | ZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/ | |||||||||||||
| 49 | mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm | |||||||||||||
| 50 | zGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/ | |||||||||||||
| 51 | /5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ | |||||||||||||
| 52 | AJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA | |||||||||||||
| 53 | M8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ | |||||||||||||
| 54 | ZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A | |||||||||||||
| 55 | mf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z | |||||||||||||
| 56 | zP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///ywAAAAAFQASAAAInAAfCBxI | |||||||||||||
| 57 | sKDBgqMOKiSICpaohQoBzHkwrRDBP6hQLQRgSaDGB6gePvizUY5AaqJIClwwCgCAgwAuDQQw7cEC | |||||||||||||
| 58 | jw8uvSwocaazgQtIztlJMOZMWDYFWhxqkONMakAJPWDK06RAmkkfJLREdKaliQ8A/BQoqqacrjPn | |||||||||||||
| 59 | yMQ6itBYrhFNAijkp+ZAqjDnyLn0da/asxBdCh7sEqLhw4cDAgA7 | |||||||||||||
| 60 | ', | |||||||||||||
| 61 | 'closedbook.gif' => | |||||||||||||
| 62 | 'R0lGODlhFgAUAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/ | |||||||||||||
| 63 | /////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 64 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm | |||||||||||||
| 65 | AABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/ | |||||||||||||
| 66 | MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm | |||||||||||||
| 67 | ZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/ | |||||||||||||
| 68 | mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm | |||||||||||||
| 69 | zGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/ | |||||||||||||
| 70 | /5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ | |||||||||||||
| 71 | AJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA | |||||||||||||
| 72 | M8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ | |||||||||||||
| 73 | ZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A | |||||||||||||
| 74 | mf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z | |||||||||||||
| 75 | zP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///yH5BAEAABAALAAAAAAWABQA | |||||||||||||
| 76 | AAiVAP8JHEiwoMGDCBMiRIFC4UIUl+Q0dDiQoaWIlixNVMhwjpw5luaI1MgR1qWLITOCnLPRIApL | |||||||||||||
| 77 | 1D6CvLSSZkuCKOZcmgbyoxyMIG8KzBmS2smTM+VoFJrzpxxqHn+KZIhqYcpLRiMyJPTPT8KcEedM | |||||||||||||
| 78 | 2+rsnzOGX39q9Fp2rNCCTRvC+oeWIt1LKFDVtTt0L9+/gANTDAgAOw== | |||||||||||||
| 79 | ', | |||||||||||||
| 80 | 'empty.gif' => | |||||||||||||
| 81 | 'R0lGODlhEgASAJEAAAAAAP///4CAgP///yH5BAEAAAMALAAAAAASABIAAAIPnI+py+0Po5y02ouz | |||||||||||||
| 82 | 3pwXADs= | |||||||||||||
| 83 | ', | |||||||||||||
| 84 | 'folder.gif' => | |||||||||||||
| 85 | 'R0lGODlhEgASANUAAPv7++/v79u3UsyZNOTk5MHBwaNxC8KPKre3t55sBrqHIpxqBMmWMb2KJbOB | |||||||||||||
| 86 | G5lnAdu3cbWCHaBuCMuYM///urB+GMWSLad1D8eUL6ampqVzDbeEH6t5E8iVMMCNKMbGxq58Fppo | |||||||||||||
| 87 | Aqh2EKx6FP/Ub//4k+vr6///nP/bdf/kf//viba2tv//////mQAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 88 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAC4ALAAAAAASABIAAAaRQJdw | |||||||||||||
| 89 | SCwaj8ik0jUYTBidAEA5YFkplANhehxABGAwpKHYRByVwHBibbvbo8+Q0TrZ7/jWBTHEtP6AgX8G | |||||||||||||
| 90 | K0MWLSWJiostEoVCBy0qk5SVLQmPLh4tKZ2eny0LmQ0tKKanqC0hmQotJK+wsS0PfEIBZxUgHCIa | |||||||||||||
| 91 | BhIJCw8ZBUMABAUrycrLBQREAAEm0tPUUktKQQA7 | |||||||||||||
| 92 | ', | |||||||||||||
| 93 | 'folderopen.gif' => | |||||||||||||
| 94 | 'R0lGODlhEgASANUAAO/v76VzDfv7+8yZNMHBweTk5JpoAqBuCMuYM8mWMZ5sBpxqBPr7/Le3t/// | |||||||||||||
| 95 | pcaaGvDker2KJc+iJqd1D7B+GOKzQ8KPKqJwCrOBG7WCHbeEH9e4QNq/bP/rhJlnAffwiaampuLB | |||||||||||||
| 96 | UMmgIf3VcKRyDP/XhLqHIqNxC8iVMMbGxqx6FP/kf//bdf/vievr67a2tv/4k8aaGf//nP//mf// | |||||||||||||
| 97 | /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADUALAAAAAASABIAAAaVwJpw | |||||||||||||
| 98 | SCwaj8ikUjgYIBIogEA5oFkZDEtheqzKvl9axKTJYCiAIYIGblutqtQwQYPZ73jZpCGM+f+AfiEd | |||||||||||||
| 99 | Jy99M21tMxwxJQeGNTGIeHcyHzEjCpAAki2en54OIhULkAKSMiuqqysOGxIGkDWcMyy2t7YQDx58 | |||||||||||||
| 100 | QqcBwMAkFwcKCwYgBEQFBC/Oz9AEBUUALtbX2FJLSUEAOw== | |||||||||||||
| 101 | ', | |||||||||||||
| 102 | 'globe.gif' => | |||||||||||||
| 103 | 'R0lGODlhEwASAPcAAPr7/AFyAQFCpwGD6jy3/wE9on7N0AE+pAFjyMLI0AE2mwF94wGP9QFpzgU3 | |||||||||||||
| 104 | nISSopWgrmJsfTNLfgFHqAFuBilNiTp4sLnGzwWb/0xYb/P09mRygGl0hRlnMgR12V2Pr6e4xF9p | |||||||||||||
| 105 | eS2Cyh5FpBdSfgF84YmisdPa30hjvw+foQFYvlWj4HWIlkWb5gk5n/b4+gw+kgFMscXb6ylmieDj | |||||||||||||
| 106 | 5ju2pylTsniElgqd/u/x8wGW/O7v8SVMsUq+JSSJXQFiwfv+/AFqvB9ntobZeKbc/9vt+B+YmW2r | |||||||||||||
| 107 | vKruzQGPkm3PPrjmxQFIklrFLVbD4QGMYaXkoIPD13LC+nGw5AGFQHG66gF2eBaJxket9sLf84HI | |||||||||||||
| 108 | +wF7axBdbg2c0CR+1QFsEIfJ7yqoUIbH41tldgF+KzVTjn3QfitZgTJZkaDR8gKDsXeWrE+zogE3 | |||||||||||||
| 109 | nCeKzQFtJ0tknjdnbQGB6EJgxQFqAcLJ0WC//yKm/wE+o7vI0ARozEOz/4/g/4KToyaX4/D09pCp | |||||||||||||
| 110 | uNHV24HA6gw7oAF/AXWKnEVSb5TI6VzDTrPprxBQts7e6FNdcBA9oySd9RRjPAhnD2NvgIydrF+6 | |||||||||||||
| 111 | wdLo9v7//2K+twKSdDmKyeD56wGCyHq12VnF+ZXXsARdTjZWthShoo7gtilDlAFw1RCXvF+z6p/R | |||||||||||||
| 112 | 8kqZzAF0Oj5jjFuJqgFoAkRgxtzr9YmcrJKsugFlylfBgxJGhjJIeFnFuhmi/+bo65ipt8Hn+UhV | |||||||||||||
| 113 | co7B5SZowAGBKoaZqAGGAVHBUwF8Qq7Y819qe4DEoVyYwrnb8QGN9GCy6QFTuHB9jgGY/gFRtuTu | |||||||||||||
| 114 | 9ZOhr150iwFbwTFiwFus4h9mYt/y+kWZ35vM7hGfccz43Xy/6m3BuS1GiYveqDRfwnbUV4rdu/// | |||||||||||||
| 115 | /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 116 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAN8ALAAAAAATABIA | |||||||||||||
| 117 | AAj/AL8JHEiwVTVspar8ITiwiJhswyaBibJJUq9Trxh+S2OAVihvSzqRcoTpmy5ADIPFqrHtGpBE | |||||||||||||
| 118 | TbrIuXJEBgiGbHoogTItExJOoAbw8rHmAkFTC8KYwTWkGx8COp4AozAjD8Epo4wQQfTLCQEcxqig | |||||||||||||
| 119 | oiONBUFqerRYspYCgzIGmgi98cRlA8EVLaR4UJPk0oASVgKs6kAiBMFDdrzAarDFF5kgCJA9ilNB | |||||||||||||
| 120 | GMFjWAQse/YjwBcVMfCcgTMr2UBKe0QIaHNgAiQmBRS4+CSKEYSBWe44E6JoEAxZDhrxmDPCEAca | |||||||||||||
| 121 | A4vVinTCwi5uKFhBs6EtQ4QEOQYy8+NGUDRiqdCUJJGQa8yNQDsADHyxSNUHE4Vc3erzoFkdWxoA | |||||||||||||
| 122 | VNLIv7///98EBAA7 | |||||||||||||
| 123 | ', | |||||||||||||
| 124 | 'join.gif' => | |||||||||||||
| 125 | 'R0lGODlhEgASAIABAICAgP///yH5BAEAAAEALAAAAAASABIAAAIcjB+Ay+2rnpwo0uss3kf5BGoc | |||||||||||||
| 126 | NJZiSZ2opK5BAQA7 | |||||||||||||
| 127 | ', | |||||||||||||
| 128 | 'joinbottom.gif' => | |||||||||||||
| 129 | 'R0lGODlhEgASAIABAICAgP///yH5BAEAAAEALAAAAAASABIAAAIZjB+Ay+2rnpwo0uss3kf5BGrc | |||||||||||||
| 130 | SJbmiaZGAQA7 | |||||||||||||
| 131 | ', | |||||||||||||
| 132 | 'line.gif' => | |||||||||||||
| 133 | 'R0lGODlhEgASAIABAICAgP///yH5BAEAAAEALAAAAAASABIAAAIZjB+Ay+2rnpwo0uss3kfz7X1X | |||||||||||||
| 134 | KE5k+ZxoAQA7 | |||||||||||||
| 135 | ', | |||||||||||||
| 136 | 'minus.gif' => | |||||||||||||
| 137 | 'R0lGODlhEgASAJEDAIKCgoCAgAAAAP///yH5BAEAAAMALAAAAAASABIAAAInnD+By+2rnpyhWvsi | |||||||||||||
| 138 | zE0zf4CIIpRlgiqaiDosa7zZdU22A9y6u98FADs= | |||||||||||||
| 139 | ', | |||||||||||||
| 140 | 'minusbottom.gif' => | |||||||||||||
| 141 | 'R0lGODlhEgASAJECAICAgAAAAP///wAAACH5BAEAAAIALAAAAAASABIAAAImlC+Ay+2rnpygWvsi | |||||||||||||
| 142 | zE0zf4CIEpRlgiqaiDosa7zZdU32jed6XgAAOw== | |||||||||||||
| 143 | ', | |||||||||||||
| 144 | 'nolines_minus.gif' => | |||||||||||||
| 145 | 'R0lGODlhEgASAPcDAIKCgoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 146 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 147 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 148 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 149 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 150 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 151 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 152 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 153 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 154 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 155 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 156 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 157 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 158 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAMALAAAAAASABIA | |||||||||||||
| 159 | AAg6AAcIHEiwoMGDCBMqXJgwgMOHDxseDCDRIEWEFwtmtDjgn0ePAzZqnFhxJEaSGCFCZMiypcuX | |||||||||||||
| 160 | MBMGBAA7 | |||||||||||||
| 161 | ', | |||||||||||||
| 162 | 'nolines_plus.gif' => | |||||||||||||
| 163 | 'R0lGODlhEgASAPcDAIKCgoCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 164 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 165 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 166 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 167 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 168 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 169 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 170 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 171 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 172 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 173 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 174 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 175 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 176 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAMALAAAAAASABIA | |||||||||||||
| 177 | AAhDAAcIHEiwoMGDCBMqXJgwgMOHDxseDCBR4L+BFBFmHHBR4EaDFP+JFDngY8GNHUtW5IhxJUGT | |||||||||||||
| 178 | LyFCZEizps2bOBMGBAA7 | |||||||||||||
| 179 | ', | |||||||||||||
| 180 | 'openbook.gif' => | |||||||||||||
| 181 | 'R0lGODlhFQASAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgICAgMDAwP8AAAD/AP//AAAA//8A/wD/ | |||||||||||||
| 182 | /////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 183 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAZgAAmQAAzAAA/wAzAAAzMwAzZgAzmQAzzAAz/wBm | |||||||||||||
| 184 | AABmMwBmZgBmmQBmzABm/wCZAACZMwCZZgCZmQCZzACZ/wDMAADMMwDMZgDMmQDMzADM/wD/AAD/ | |||||||||||||
| 185 | MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMzADMzMzMzZjMzmTMzzDMz/zNmADNmMzNm | |||||||||||||
| 186 | ZjNmmTNmzDNm/zOZADOZMzOZZjOZmTOZzDOZ/zPMADPMMzPMZjPMmTPMzDPM/zP/ADP/MzP/ZjP/ | |||||||||||||
| 187 | mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YzAGYzM2YzZmYzmWYzzGYz/2ZmAGZmM2ZmZmZmmWZm | |||||||||||||
| 188 | zGZm/2aZAGaZM2aZZmaZmWaZzGaZ/2bMAGbMM2bMZmbMmWbMzGbM/2b/AGb/M2b/Zmb/mWb/zGb/ | |||||||||||||
| 189 | /5kAAJkAM5kAZpkAmZkAzJkA/5kzAJkzM5kzZpkzmZkzzJkz/5lmAJlmM5lmZplmmZlmzJlm/5mZ | |||||||||||||
| 190 | AJmZM5mZZpmZmZmZzJmZ/5nMAJnMM5nMZpnMmZnMzJnM/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwA | |||||||||||||
| 191 | M8wAZswAmcwAzMwA/8wzAMwzM8wzZswzmcwzzMwz/8xmAMxmM8xmZsxmmcxmzMxm/8yZAMyZM8yZ | |||||||||||||
| 192 | ZsyZmcyZzMyZ/8zMAMzMM8zMZszMmczMzMzM/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8A | |||||||||||||
| 193 | mf8AzP8A//8zAP8zM/8zZv8zmf8zzP8z//9mAP9mM/9mZv9mmf9mzP9m//+ZAP+ZM/+ZZv+Zmf+Z | |||||||||||||
| 194 | zP+Z///MAP/MM//MZv/Mmf/MzP/M////AP//M///Zv//mf//zP///ywAAAAAFQASAAAInAAfCBxI | |||||||||||||
| 195 | sKDBgqMOKiSICpaohQoBzHkwrRDBP6hQLQRgSaDGB6gePvizUY5AaqJIClwwCgCAgwAuDQQw7cEC | |||||||||||||
| 196 | jw8uvSwocaazgQtIztlJMOZMWDYFWhxqkONMakAJPWDK06RAmkkfJLREdKaliQ8A/BQoqqacrjPn | |||||||||||||
| 197 | yMQ6itBYrhFNAijkp+ZAqjDnyLn0da/asxBdCh7sEqLhw4cDAgA7 | |||||||||||||
| 198 | ', | |||||||||||||
| 199 | 'page.gif' => | |||||||||||||
| 200 | 'R0lGODlhEgASAOYAAPv7++/v7/j7/+32/8HBweTk5P39/djr/8Df//7///P5/8Ph//T09fn5+YGV | |||||||||||||
| 201 | w2t0pc7n/15hkFWn7ZOq0nqDsMDA/9nh7YSbyoqo2eTx/5G46pK873N+sPX6//f395Cjy83m/7rd | |||||||||||||
| 202 | /9jl9m13qGVqmoeh0n+OvI+z5Yyu387T//b6/2dtnvz9/32JtpS/8sbGxv7+/tvn92lwom96rHJ8 | |||||||||||||
| 203 | rnSAsoep3NHp/8nk/7e3t+vr67a2tun1/3V4o+Hw/9vt/////wAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 204 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 205 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 206 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5 | |||||||||||||
| 207 | BAEAAEEALAAAAAASABIAAAejgEGCg4SFhoeILjaLjDY1AQCHG0AGAA0eDBY1E5CGGjBAoQkCMTUS | |||||||||||||
| 208 | HwGGJwaiAh0iNbEvhiihAgIDPDwpFRw5hhgsuLk8Pz8HNL+FJSoKuT4+xzczyoQXzjzQxjcgI9WD | |||||||||||||
| 209 | DrraPzc4OA/fgibZ0eTmCzLpQS0Z7TflCwgr8hT2EOYIQpCQ16OgwYMRCBgqQGCHw4cOCRQwBCCA | |||||||||||||
| 210 | josYL3ZCxNFQIAA7 | |||||||||||||
| 211 | ', | |||||||||||||
| 212 | 'plus.gif' => | |||||||||||||
| 213 | 'R0lGODlhEgASAJECAICAgAAAAP///wAAACH5BAEAAAIALAAAAAASABIAAAIqlC+Ay+2rnpygWvsi | |||||||||||||
| 214 | zCcczWieAW7BeSaqookfZ4yqU5LZdU06vfe8rysAADs= | |||||||||||||
| 215 | ', | |||||||||||||
| 216 | 'plusbottom.gif' => | |||||||||||||
| 217 | 'R0lGODlhEgASAJECAICAgAAAAP///wAAACH5BAEAAAIALAAAAAASABIAAAIplC+Ay+2rnpygWvsi | |||||||||||||
| 218 | zCcczWieAW7BeSaqookfZ4yqU5LZdU36zvd+XwAAOw== | |||||||||||||
| 219 | ', | |||||||||||||
| 220 | 'question.gif' => | |||||||||||||
| 221 | 'R0lGODlhEgASAPelAOP0//7//9bs//n///j//9Ls/8Pn//r//6rB1t3f5crO2N7g5k1livT4+7PW | |||||||||||||
| 222 | 9dXt/+v4/+Xl5LHW9Ov6/+j1/6CyxrfCz9rd5Nzj6un1/Z6ouwcvj8HBzO7+/+3//+Ln7BUuXNHv | |||||||||||||
| 223 | /6K4y+/9/wEBZvX08snn/19qhufs8fP7/87n/+/t7czr/5q1yk55q97v/3Cfztnu//z//+X6/ypI | |||||||||||||
| 224 | dMHY7rPc/7fX9cbl/9/h52WHr2yKrd/0/9fw/4KTs9rm75Svzb2+ya690pu92mWJrcT3//H//+Dv | |||||||||||||
| 225 | /Xym35S216Ouwsvt/3N/mMnZ5gEBcMnq/wEBXs/o/wEBetzw/zdYpTdZpsvP2ClGml2N3b3H0Nzu | |||||||||||||
| 226 | /2Z2lF1ricrl/93w/97h6JqluktojM/u/+/z9g8pVff4+ebu9q+1xa6/zzdFaIiXr5Wyz0xslrTK | |||||||||||||
| 227 | 4uL//2uIp11rh8Xj/NXn+Oz2/9bf6bG2xAEBePP//1xwkK/K5Nbr/8fp/2OBtG53kai3ykVCYwEB | |||||||||||||
| 228 | de/6/7O4xabI+fD//+by/x8+jDhZpM/q/6jK58nO19ny/7jV7ZO42NHr/9H4/2ZwimSV6VBxwMDX | |||||||||||||
| 229 | 7Nvf5hYwX5m20sfb6Ieqyk9Yjr/k/cPM2NDp/+/098Tl9yQ9jLfW+Mne8sjU30JklP///wAAAAAA | |||||||||||||
| 230 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 231 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 232 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 233 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | |||||||||||||
| 234 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAKUALAAAAAASABIA | |||||||||||||
| 235 | AAjxAEsJHEiwoMEyGMaQWthg0xeDAlGUWKjoz5mFAegY/LBiIalMUK54JCWEoJkIpA6kSDmoAykK | |||||||||||||
| 236 | gRaqGSiq04A5A5r4AKOEAAAtE2S0USAwSwYIhUb8METiUwAvemLMCMVEoIUjAF5MIYXAThUCDzgV | |||||||||||||
| 237 | WDQJjkA0cngIEHAHCCAqRqJ0QeQoDxeBFS71KKDCwxonhwiZwPEkzo4+AimJqBFCjBs+UjZ4WmLg | |||||||||||||
| 238 | xhAQVgb6acGIBShJkbAgMSAhCQ1IBTW8sZRI055HDhoRqXQCYo4tDMJgsqGDTJo6EAlyYFNkVJDg | |||||||||||||
| 239 | BgXBcJEAucEFeC44n04wIAA7 | |||||||||||||
| 240 | ', | |||||||||||||
| 241 | ); | |||||||||||||
| 242 | ||||||||||||||
| 243 | =pod | |||||||||||||
| 244 | ||||||||||||||
| 245 | =begin classdoc | |||||||||||||
| 246 | ||||||||||||||
| 247 | Return the dtree Javascript. | |||||||||||||
| 248 | ||||||||||||||
| 249 | @return the dtree Javascript as a string. | |||||||||||||
| 250 | ||||||||||||||
| 251 | =end classdoc | |||||||||||||
| 252 | ||||||||||||||
| 253 | =cut | |||||||||||||
| 254 | ||||||||||||||
| 255 | sub getJavascript { | |||||||||||||
| 256 | 2 | 2 | 0 | 13 | return <<'EOJS'; | |||||||||
| 257 | /*--------------------------------------------------| | |||||||||||||
| 258 | | dTree 2.05| www.destroydrop.com/javascripts/tree/ | | |||||||||||||
| 259 | |---------------------------------------------------| | |||||||||||||
| 260 | | Copyright (c) 2002-2003 Geir Landrö | | |||||||||||||
| 261 | | | | |||||||||||||
| 262 | | This script can be used freely as long as all | | |||||||||||||
| 263 | | copyright messages are intact. | | |||||||||||||
| 264 | | | | |||||||||||||
| 265 | | Updated: 17.04.2003 | | |||||||||||||
| 266 | |--------------------------------------------------*/ | |||||||||||||
| 267 | /* | |||||||||||||
| 268 | * Add'l update 2007-08-14 D. Arnold: | |||||||||||||
| 269 | * Added imgPath parameter to constructor | |||||||||||||
| 270 | * Added addWithIcons method | |||||||||||||
| 271 | * Added closeIcon, openIcon default config icons | |||||||||||||
| 272 | */ | |||||||||||||
| 273 | // Node object | |||||||||||||
| 274 | function Node(id, pid, name, url, title, target, icon, iconOpen, open) { | |||||||||||||
| 275 | this.id = id; | |||||||||||||
| 276 | this.pid = pid; | |||||||||||||
| 277 | this.name = name; | |||||||||||||
| 278 | this.url = url; | |||||||||||||
| 279 | this.title = title; | |||||||||||||
| 280 | this.target = target; | |||||||||||||
| 281 | this.icon = icon; | |||||||||||||
| 282 | this.iconOpen = iconOpen; | |||||||||||||
| 283 | this._io = open || false; | |||||||||||||
| 284 | this._is = false; | |||||||||||||
| 285 | this._ls = false; | |||||||||||||
| 286 | this._hc = false; | |||||||||||||
| 287 | this._ai = 0; | |||||||||||||
| 288 | this._p; | |||||||||||||
| 289 | }; | |||||||||||||
| 290 | ||||||||||||||
| 291 | // Tree object | |||||||||||||
| 292 | function dTree(objName, imgPath) { | |||||||||||||
| 293 | this.config = { | |||||||||||||
| 294 | target : null, | |||||||||||||
| 295 | folderLinks : true, | |||||||||||||
| 296 | useSelection : true, | |||||||||||||
| 297 | useCookies : true, | |||||||||||||
| 298 | useLines : true, | |||||||||||||
| 299 | useIcons : true, | |||||||||||||
| 300 | useStatusText : false, | |||||||||||||
| 301 | closeSameLevel : false, | |||||||||||||
| 302 | inOrder : false, | |||||||||||||
| 303 | closeIcon : imgPath + '/folder.gif', | |||||||||||||
| 304 | openIcon : imgPath + '/folderopen.gif' | |||||||||||||
| 305 | } | |||||||||||||
| 306 | this.icon = { | |||||||||||||
| 307 | root : imgPath + '/base.gif', | |||||||||||||
| 308 | folder : imgPath + '/folder.gif', | |||||||||||||
| 309 | folderOpen : imgPath + '/folderopen.gif', | |||||||||||||
| 310 | node : imgPath + '/page.gif', | |||||||||||||
| 311 | empty : imgPath + '/empty.gif', | |||||||||||||
| 312 | line : imgPath + '/line.gif', | |||||||||||||
| 313 | join : imgPath + '/join.gif', | |||||||||||||
| 314 | joinBottom : imgPath + '/joinbottom.gif', | |||||||||||||
| 315 | plus : imgPath + '/plus.gif', | |||||||||||||
| 316 | plusBottom : imgPath + '/plusbottom.gif', | |||||||||||||
| 317 | minus : imgPath + '/minus.gif', | |||||||||||||
| 318 | minusBottom : imgPath + '/minusbottom.gif', | |||||||||||||
| 319 | nlPlus : imgPath + '/nolines_plus.gif', | |||||||||||||
| 320 | nlMinus : imgPath + '/nolines_minus.gif' | |||||||||||||
| 321 | }; | |||||||||||||
| 322 | this.obj = objName; | |||||||||||||
| 323 | this.aNodes = []; | |||||||||||||
| 324 | this.aIndent = []; | |||||||||||||
| 325 | this.root = new Node(-1); | |||||||||||||
| 326 | this.selectedNode = null; | |||||||||||||
| 327 | this.selectedFound = false; | |||||||||||||
| 328 | this.completed = false; | |||||||||||||
| 329 | }; | |||||||||||||
| 330 | ||||||||||||||
| 331 | // Adds a new node to the node array | |||||||||||||
| 332 | dTree.prototype.add = function(id, pid, name, url, title, target, icon, iconOpen, open) { | |||||||||||||
| 333 | this.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, icon, iconOpen, open); | |||||||||||||
| 334 | }; | |||||||||||||
| 335 | ||||||||||||||
| 336 | // Adds a new node to the node array using default open/close icons | |||||||||||||
| 337 | dTree.prototype.addWithIcons = function(id, pid, name, url, title, target, open) { | |||||||||||||
| 338 | this.aNodes[this.aNodes.length] = new Node(id, pid, name, url, title, target, this.config.closeIcon, this.config.openIcon, open); | |||||||||||||
| 339 | }; | |||||||||||||
| 340 | ||||||||||||||
| 341 | // Open/close all nodes | |||||||||||||
| 342 | dTree.prototype.openAll = function() { | |||||||||||||
| 343 | this.oAll(true); | |||||||||||||
| 344 | }; | |||||||||||||
| 345 | dTree.prototype.closeAll = function() { | |||||||||||||
| 346 | this.oAll(false); | |||||||||||||
| 347 | }; | |||||||||||||
| 348 | ||||||||||||||
| 349 | // Outputs the tree to the page | |||||||||||||
| 350 | dTree.prototype.toString = function() { | |||||||||||||
| 351 | var str = ' \n'; |
|||||||||||||
| 352 | if (document.getElementById) { | |||||||||||||
| 353 | if (this.config.useCookies) this.selectedNode = this.getSelected(); | |||||||||||||
| 354 | str += this.addNode(this.root); | |||||||||||||
| 355 | } else str += 'Browser not supported.'; | |||||||||||||
| 356 | str += ''; | |||||||||||||
| 357 | if (!this.selectedFound) this.selectedNode = null; | |||||||||||||
| 358 | this.completed = true; | |||||||||||||
| 359 | return str; | |||||||||||||
| 360 | }; | |||||||||||||
| 361 | ||||||||||||||
| 362 | // Creates the tree structure | |||||||||||||
| 363 | dTree.prototype.addNode = function(pNode) { | |||||||||||||
| 364 | var str = ''; | |||||||||||||
| 365 | var n=0; | |||||||||||||
| 366 | if (this.config.inOrder) n = pNode._ai; | |||||||||||||
| 367 | for (n; n | |||||||||||||
| 368 | if (this.aNodes[n].pid == pNode.id) { | |||||||||||||
| 369 | var cn = this.aNodes[n]; | |||||||||||||
| 370 | cn._p = pNode; | |||||||||||||
| 371 | cn._ai = n; | |||||||||||||
| 372 | this.setCS(cn); | |||||||||||||
| 373 | if (!cn.target && this.config.target) cn.target = this.config.target; | |||||||||||||
| 374 | if (cn._hc && !cn._io && this.config.useCookies) cn._io = this.isOpen(cn.id); | |||||||||||||
| 375 | if (!this.config.folderLinks && cn._hc) cn.url = null; | |||||||||||||
| 376 | if (this.config.useSelection && cn.id == this.selectedNode && !this.selectedFound) { | |||||||||||||
| 377 | cn._is = true; | |||||||||||||
| 378 | this.selectedNode = n; | |||||||||||||
| 379 | this.selectedFound = true; | |||||||||||||
| 380 | } | |||||||||||||
| 381 | str += this.node(cn, n); | |||||||||||||
| 382 | if (cn._ls) break; | |||||||||||||
| 383 | } | |||||||||||||
| 384 | } | |||||||||||||
| 385 | return str; | |||||||||||||
| 386 | }; | |||||||||||||
| 387 | ||||||||||||||
| 388 | // Creates the node icon, url and text | |||||||||||||
| 389 | dTree.prototype.node = function(node, nodeId) { | |||||||||||||
| 390 | var str = ' ' + this.indent(node, nodeId); |
|||||||||||||
| 391 | if (this.config.useIcons) { | |||||||||||||
| 392 | if (!node.icon) node.icon = (this.root.id == node.pid) ? this.icon.root : ((node._hc) ? this.icon.folder : this.icon.node); | |||||||||||||
| 393 | if (!node.iconOpen) node.iconOpen = (node._hc) ? this.icon.folderOpen : this.icon.node; | |||||||||||||
| 394 | if (this.root.id == node.pid) { | |||||||||||||
| 395 | node.icon = this.icon.root; | |||||||||||||
| 396 | node.iconOpen = this.icon.root; | |||||||||||||
| 397 | } | |||||||||||||
| 398 | str += ' |
|||||||||||||
| 399 | } | |||||||||||||
| 400 | if (node.url) { | |||||||||||||
| 401 | str += ' | |||||||||||||
| 402 | if (node.title) str += ' title="' + node.title + '"'; | |||||||||||||
| 403 | if (node.target) str += ' target="' + node.target + '"'; | |||||||||||||
| 404 | if (this.config.useStatusText) str += ' onmouseover="window.status=\'' + node.name + '\';return true;" onmouseout="window.status=\'\';return true;" '; | |||||||||||||
| 405 | if (this.config.useSelection && ((node._hc && this.config.folderLinks) || !node._hc)) | |||||||||||||
| 406 | str += ' onclick="javascript: ' + this.obj + '.s(' + nodeId + ');"'; | |||||||||||||
| 407 | str += '>'; | |||||||||||||
| 408 | } | |||||||||||||
| 409 | else if ((!this.config.folderLinks || !node.url) && node._hc && node.pid != this.root.id) | |||||||||||||
| 410 | str += ''; | |||||||||||||
| 411 | str += node.name; | |||||||||||||
| 412 | if (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += ''; | |||||||||||||
| 413 | str += ''; | |||||||||||||
| 414 | if (node._hc) { | |||||||||||||
| 415 | str += ' '; |
|||||||||||||
| 416 | str += this.addNode(node); | |||||||||||||
| 417 | str += ''; | |||||||||||||
| 418 | } | |||||||||||||
| 419 | this.aIndent.pop(); | |||||||||||||
| 420 | return str; | |||||||||||||
| 421 | }; | |||||||||||||
| 422 | ||||||||||||||
| 423 | // Adds the empty and line icons | |||||||||||||
| 424 | dTree.prototype.indent = function(node, nodeId) { | |||||||||||||
| 425 | var str = ''; | |||||||||||||
| 426 | if (this.root.id != node.pid) { | |||||||||||||
| 427 | for (var n=0; n | |||||||||||||
| 428 | str += ' |
|||||||||||||
| 429 | (node._ls) ? this.aIndent.push(0) : this.aIndent.push(1); | |||||||||||||
| 430 | if (node._hc) { | |||||||||||||
| 431 | str += ' |
if (!this.config.useLines) str += (node._io) ? this.icon.nlMinus : this.icon.nlPlus; | ||||||||||||
| 433 | else str += ( (node._io) ? ((node._ls && this.config.useLines) ? this.icon.minusBottom : this.icon.minus) : ((node._ls && this.config.useLines) ? this.icon.plusBottom : this.icon.plus ) ); | |||||||||||||
| 434 | str += '" alt="" />'; | |||||||||||||
| 435 | } else str += ' |
|||||||||||||
| 436 | } | |||||||||||||
| 437 | return str; | |||||||||||||
| 438 | }; | |||||||||||||
| 439 | ||||||||||||||
| 440 | // Checks if a node has any children and if it is the last sibling | |||||||||||||
| 441 | dTree.prototype.setCS = function(node) { | |||||||||||||
| 442 | var lastId; | |||||||||||||
| 443 | for (var n=0; n | |||||||||||||
| 444 | if (this.aNodes[n].pid == node.id) node._hc = true; | |||||||||||||
| 445 | if (this.aNodes[n].pid == node.pid) lastId = this.aNodes[n].id; | |||||||||||||
| 446 | } | |||||||||||||
| 447 | if (lastId==node.id) node._ls = true; | |||||||||||||
| 448 | }; | |||||||||||||
| 449 | ||||||||||||||
| 450 | // Returns the selected node | |||||||||||||
| 451 | dTree.prototype.getSelected = function() { | |||||||||||||
| 452 | var sn = this.getCookie('cs' + this.obj); | |||||||||||||
| 453 | return (sn) ? sn : null; | |||||||||||||
| 454 | }; | |||||||||||||
| 455 | ||||||||||||||
| 456 | // Highlights the selected node | |||||||||||||
| 457 | dTree.prototype.s = function(id) { | |||||||||||||
| 458 | if (!this.config.useSelection) return; | |||||||||||||
| 459 | var cn = this.aNodes[id]; | |||||||||||||
| 460 | if (cn._hc && !this.config.folderLinks) return; | |||||||||||||
| 461 | if (this.selectedNode != id) { | |||||||||||||
| 462 | if (this.selectedNode || this.selectedNode==0) { | |||||||||||||
| 463 | eOld = document.getElementById("s" + this.obj + this.selectedNode); | |||||||||||||
| 464 | eOld.className = "node"; | |||||||||||||
| 465 | } | |||||||||||||
| 466 | eNew = document.getElementById("s" + this.obj + id); | |||||||||||||
| 467 | eNew.className = "nodeSel"; | |||||||||||||
| 468 | this.selectedNode = id; | |||||||||||||
| 469 | if (this.config.useCookies) this.setCookie('cs' + this.obj, cn.id); | |||||||||||||
| 470 | } | |||||||||||||
| 471 | }; | |||||||||||||
| 472 | ||||||||||||||
| 473 | // Toggle Open or close | |||||||||||||
| 474 | dTree.prototype.o = function(id) { | |||||||||||||
| 475 | var cn = this.aNodes[id]; | |||||||||||||
| 476 | this.nodeStatus(!cn._io, id, cn._ls); | |||||||||||||
| 477 | cn._io = !cn._io; | |||||||||||||
| 478 | if (this.config.closeSameLevel) this.closeLevel(cn); | |||||||||||||
| 479 | if (this.config.useCookies) this.updateCookie(); | |||||||||||||
| 480 | }; | |||||||||||||
| 481 | ||||||||||||||
| 482 | // Open or close all nodes | |||||||||||||
| 483 | dTree.prototype.oAll = function(status) { | |||||||||||||
| 484 | for (var n=0; n | |||||||||||||
| 485 | if (this.aNodes[n]._hc && this.aNodes[n].pid != this.root.id) { | |||||||||||||
| 486 | this.nodeStatus(status, n, this.aNodes[n]._ls) | |||||||||||||
| 487 | this.aNodes[n]._io = status; | |||||||||||||
| 488 | } | |||||||||||||
| 489 | } | |||||||||||||
| 490 | if (this.config.useCookies) this.updateCookie(); | |||||||||||||
| 491 | }; | |||||||||||||
| 492 | ||||||||||||||
| 493 | // Opens the tree to a specific node | |||||||||||||
| 494 | dTree.prototype.openTo = function(nId, bSelect, bFirst) { | |||||||||||||
| 495 | if (!bFirst) { | |||||||||||||
| 496 | for (var n=0; n | |||||||||||||
| 497 | if (this.aNodes[n].id == nId) { | |||||||||||||
| 498 | nId=n; | |||||||||||||
| 499 | break; | |||||||||||||
| 500 | } | |||||||||||||
| 501 | } | |||||||||||||
| 502 | } | |||||||||||||
| 503 | var cn=this.aNodes[nId]; | |||||||||||||
| 504 | if (cn.pid==this.root.id || !cn._p) return; | |||||||||||||
| 505 | cn._io = true; | |||||||||||||
| 506 | cn._is = bSelect; | |||||||||||||
| 507 | if (this.completed && cn._hc) this.nodeStatus(true, cn._ai, cn._ls); | |||||||||||||
| 508 | if (this.completed && bSelect) this.s(cn._ai); | |||||||||||||
| 509 | else if (bSelect) this._sn=cn._ai; | |||||||||||||
| 510 | this.openTo(cn._p._ai, false, true); | |||||||||||||
| 511 | }; | |||||||||||||
| 512 | ||||||||||||||
| 513 | // Closes all nodes on the same level as certain node | |||||||||||||
| 514 | dTree.prototype.closeLevel = function(node) { | |||||||||||||
| 515 | for (var n=0; n | |||||||||||||
| 516 | if (this.aNodes[n].pid == node.pid && this.aNodes[n].id != node.id && this.aNodes[n]._hc) { | |||||||||||||
| 517 | this.nodeStatus(false, n, this.aNodes[n]._ls); | |||||||||||||
| 518 | this.aNodes[n]._io = false; | |||||||||||||
| 519 | this.closeAllChildren(this.aNodes[n]); | |||||||||||||
| 520 | } | |||||||||||||
| 521 | } | |||||||||||||
| 522 | } | |||||||||||||
| 523 | ||||||||||||||
| 524 | // Closes all children of a node | |||||||||||||
| 525 | dTree.prototype.closeAllChildren = function(node) { | |||||||||||||
| 526 | for (var n=0; n | |||||||||||||
| 527 | if (this.aNodes[n].pid == node.id && this.aNodes[n]._hc) { | |||||||||||||
| 528 | if (this.aNodes[n]._io) this.nodeStatus(false, n, this.aNodes[n]._ls); | |||||||||||||
| 529 | this.aNodes[n]._io = false; | |||||||||||||
| 530 | this.closeAllChildren(this.aNodes[n]); | |||||||||||||
| 531 | } | |||||||||||||
| 532 | } | |||||||||||||
| 533 | } | |||||||||||||
| 534 | ||||||||||||||
| 535 | // Change the status of a node(open or closed) | |||||||||||||
| 536 | dTree.prototype.nodeStatus = function(status, id, bottom) { | |||||||||||||
| 537 | eDiv = document.getElementById('d' + this.obj + id); | |||||||||||||
| 538 | eJoin = document.getElementById('j' + this.obj + id); | |||||||||||||
| 539 | if (this.config.useIcons) { | |||||||||||||
| 540 | eIcon = document.getElementById('i' + this.obj + id); | |||||||||||||
| 541 | eIcon.src = (status) ? this.aNodes[id].iconOpen : this.aNodes[id].icon; | |||||||||||||
| 542 | } | |||||||||||||
| 543 | eJoin.src = (this.config.useLines)? | |||||||||||||
| 544 | ((status)?((bottom)?this.icon.minusBottom:this.icon.minus):((bottom)?this.icon.plusBottom:this.icon.plus)): | |||||||||||||
| 545 | ((status)?this.icon.nlMinus:this.icon.nlPlus); | |||||||||||||
| 546 | eDiv.style.display = (status) ? 'block': 'none'; | |||||||||||||
| 547 | }; | |||||||||||||
| 548 | ||||||||||||||
| 549 | ||||||||||||||
| 550 | // [Cookie] Clears a cookie | |||||||||||||
| 551 | dTree.prototype.clearCookie = function() { | |||||||||||||
| 552 | var now = new Date(); | |||||||||||||
| 553 | var yesterday = new Date(now.getTime() - 1000 * 60 * 60 * 24); | |||||||||||||
| 554 | this.setCookie('co'+this.obj, 'cookieValue', yesterday); | |||||||||||||
| 555 | this.setCookie('cs'+this.obj, 'cookieValue', yesterday); | |||||||||||||
| 556 | }; | |||||||||||||
| 557 | ||||||||||||||
| 558 | // [Cookie] Sets value in a cookie | |||||||||||||
| 559 | dTree.prototype.setCookie = function(cookieName, cookieValue, expires, path, domain, secure) { | |||||||||||||
| 560 | document.cookie = | |||||||||||||
| 561 | escape(cookieName) + '=' + escape(cookieValue) | |||||||||||||
| 562 | + (expires ? '; expires=' + expires.toGMTString() : '') | |||||||||||||
| 563 | + (path ? '; path=' + path : '') | |||||||||||||
| 564 | + (domain ? '; domain=' + domain : '') | |||||||||||||
| 565 | + (secure ? '; secure' : ''); | |||||||||||||
| 566 | }; | |||||||||||||
| 567 | ||||||||||||||
| 568 | // [Cookie] Gets a value from a cookie | |||||||||||||
| 569 | dTree.prototype.getCookie = function(cookieName) { | |||||||||||||
| 570 | var cookieValue = ''; | |||||||||||||
| 571 | var posName = document.cookie.indexOf(escape(cookieName) + '='); | |||||||||||||
| 572 | if (posName != -1) { | |||||||||||||
| 573 | var posValue = posName + (escape(cookieName) + '=').length; | |||||||||||||
| 574 | var endPos = document.cookie.indexOf(';', posValue); | |||||||||||||
| 575 | if (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos)); | |||||||||||||
| 576 | else cookieValue = unescape(document.cookie.substring(posValue)); | |||||||||||||
| 577 | } | |||||||||||||
| 578 | return (cookieValue); | |||||||||||||
| 579 | }; | |||||||||||||
| 580 | ||||||||||||||
| 581 | // [Cookie] Returns ids of open nodes as a string | |||||||||||||
| 582 | dTree.prototype.updateCookie = function() { | |||||||||||||
| 583 | var str = ''; | |||||||||||||
| 584 | for (var n=0; n | |||||||||||||
| 585 | if (this.aNodes[n]._io && this.aNodes[n].pid != this.root.id) { | |||||||||||||
| 586 | if (str) str += '.'; | |||||||||||||
| 587 | str += this.aNodes[n].id; | |||||||||||||
| 588 | } | |||||||||||||
| 589 | } | |||||||||||||
| 590 | this.setCookie('co' + this.obj, str); | |||||||||||||
| 591 | }; | |||||||||||||
| 592 | ||||||||||||||
| 593 | // [Cookie] Checks if a node id is in a cookie | |||||||||||||
| 594 | dTree.prototype.isOpen = function(id) { | |||||||||||||
| 595 | var aOpen = this.getCookie('co' + this.obj).split('.'); | |||||||||||||
| 596 | for (var n=0; n | |||||||||||||
| 597 | if (aOpen[n] == id) return true; | |||||||||||||
| 598 | return false; | |||||||||||||
| 599 | }; | |||||||||||||
| 600 | ||||||||||||||
| 601 | // If Push and pop is not implemented by the browser | |||||||||||||
| 602 | if (!Array.prototype.push) { | |||||||||||||
| 603 | Array.prototype.push = function array_push() { | |||||||||||||
| 604 | for(var i=0;i | |||||||||||||
| 605 | this[this.length]=arguments[i]; | |||||||||||||
| 606 | return this.length; | |||||||||||||
| 607 | } | |||||||||||||
| 608 | }; | |||||||||||||
| 609 | if (!Array.prototype.pop) { | |||||||||||||
| 610 | Array.prototype.pop = function array_pop() { | |||||||||||||
| 611 | lastElement = this[this.length-1]; | |||||||||||||
| 612 | this.length = Math.max(this.length-1,0); | |||||||||||||
| 613 | return lastElement; | |||||||||||||
| 614 | } | |||||||||||||
| 615 | }; | |||||||||||||
| 616 | EOJS | |||||||||||||
| 617 | } | |||||||||||||
| 618 | ||||||||||||||
| 619 | =pod | |||||||||||||
| 620 | ||||||||||||||
| 621 | =begin classdoc | |||||||||||||
| 622 | ||||||||||||||
| 623 | Return the dtree CSS stylesheet. | |||||||||||||
| 624 | ||||||||||||||
| 625 | @return the dtree CSS stylesheet as a string. | |||||||||||||
| 626 | ||||||||||||||
| 627 | =end classdoc | |||||||||||||
| 628 | ||||||||||||||
| 629 | =cut | |||||||||||||
| 630 | ||||||||||||||
| 631 | sub getCSS { | |||||||||||||
| 632 | 2 | 2 | 0 | 19 | return <<'EOCSS'; | |||||||||
| 633 | /*--------------------------------------------------| | |||||||||||||
| 634 | | dTree 2.05 | www.destroydrop.com/javascript/tree/ | | |||||||||||||
| 635 | |---------------------------------------------------| | |||||||||||||
| 636 | | Copyright (c) 2002-2003 Geir Landrö | | |||||||||||||
| 637 | |--------------------------------------------------*/ | |||||||||||||
| 638 | ||||||||||||||
| 639 | .dtree { | |||||||||||||
| 640 | font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; | |||||||||||||
| 641 | font-size: 11px; | |||||||||||||
| 642 | color: #666; | |||||||||||||
| 643 | white-space: nowrap; | |||||||||||||
| 644 | } | |||||||||||||
| 645 | .dtree img { | |||||||||||||
| 646 | border: 0px; | |||||||||||||
| 647 | vertical-align: middle; | |||||||||||||
| 648 | } | |||||||||||||
| 649 | .dtree a { | |||||||||||||
| 650 | color: #333; | |||||||||||||
| 651 | text-decoration: none; | |||||||||||||
| 652 | } | |||||||||||||
| 653 | .dtree a.node, .dtree a.nodeSel { | |||||||||||||
| 654 | white-space: nowrap; | |||||||||||||
| 655 | padding: 1px 2px 1px 2px; | |||||||||||||
| 656 | } | |||||||||||||
| 657 | .dtree a.node:hover, .dtree a.nodeSel:hover { | |||||||||||||
| 658 | color: #333; | |||||||||||||
| 659 | text-decoration: underline; | |||||||||||||
| 660 | } | |||||||||||||
| 661 | .dtree a.nodeSel { | |||||||||||||
| 662 | background-color: #c0d2ec; | |||||||||||||
| 663 | } | |||||||||||||
| 664 | .dtree .clip { | |||||||||||||
| 665 | overflow: hidden; | |||||||||||||
| 666 | } | |||||||||||||
| 667 | ||||||||||||||
| 668 | .dtree a.rootnode { | |||||||||||||
| 669 | white-space: nowrap; | |||||||||||||
| 670 | padding: 1px 2px 1px 2px; | |||||||||||||
| 671 | color: #000; | |||||||||||||
| 672 | font-weight: bold; | |||||||||||||
| 673 | } | |||||||||||||
| 674 | EOCSS | |||||||||||||
| 675 | } | |||||||||||||
| 676 | ||||||||||||||
| 677 | =pod | |||||||||||||
| 678 | ||||||||||||||
| 679 | =begin classdoc | |||||||||||||
| 680 | ||||||||||||||
| 681 | Return the specified dtree icon image data. | |||||||||||||
| 682 | ||||||||||||||
| 683 | @return the dtree icon image data. | |||||||||||||
| 684 | ||||||||||||||
| 685 | =end classdoc | |||||||||||||
| 686 | ||||||||||||||
| 687 | =cut | |||||||||||||
| 688 | ||||||||||||||
| 689 | sub getIcon { | |||||||||||||
| 690 | 2 | 2 | 0 | 5 | my ($self, $image) = @_; | |||||||||
| 691 | 2 | 33 | 7 | $image ||= $self; # if called as expoerted method | ||||||||||
| 692 | 2 | 25 | return decode_base64($dtree_images{$image}); | |||||||||||
| 693 | } | |||||||||||||
| 694 | ||||||||||||||
| 695 | =pod | |||||||||||||
| 696 | ||||||||||||||
| 697 | =begin classdoc | |||||||||||||
| 698 | ||||||||||||||
| 699 | Return the dtree icon images. | |||||||||||||
| 700 | ||||||||||||||
| 701 | @returnlist the dtree icon images as a hash mapping icon file names to the image data | |||||||||||||
| 702 | ||||||||||||||
| 703 | =end classdoc | |||||||||||||
| 704 | ||||||||||||||
| 705 | =cut | |||||||||||||
| 706 | ||||||||||||||
| 707 | sub getIcons { | |||||||||||||
| 708 | 2 | 2 | 0 | 5 | my %icons = (); | |||||||||
| 709 | 2 | 3 | my ($k, $v); | |||||||||||
| 710 | 2 | 170 | $icons{$k} = decode_base64($v) | |||||||||||
| 711 | while (($k, $v) = each %dtree_images); | |||||||||||||
| 712 | 2 | 50 | return %icons; | |||||||||||
| 713 | } | |||||||||||||
| 714 | ||||||||||||||
| 715 | ||||||||||||||
| 716 | =pod | |||||||||||||
| 717 | ||||||||||||||
| 718 | =begin classdoc | |||||||||||||
| 719 | ||||||||||||||
| 720 | @constructor | |||||||||||||
| 721 | ||||||||||||||
| 722 | Create a new dtree widget object. | |||||||||||||
| 723 | ||||||||||||||
| 724 | @return the created widget object. | |||||||||||||
| 725 | ||||||||||||||
| 726 | =end classdoc | |||||||||||||
| 727 | ||||||||||||||
| 728 | =cut | |||||||||||||
| 729 | ||||||||||||||
| 730 | 52 | 52 | 0 | 175 | sub new { return bless {}, $_[0]; } | |||||||||
| 731 | ||||||||||||||
| 732 | =pod | |||||||||||||
| 733 | ||||||||||||||
| 734 | =begin classdoc | |||||||||||||
| 735 | ||||||||||||||
| 736 | Start the widget rendering. | |||||||||||||
| 737 | ||||||||||||||
| 738 | @param RootText text for root node of tree | |||||||||||||
| 739 | @optional CSSPath full path to the stylesheet; default './css/dtree.css' | |||||||||||||
| 740 | @optional JSPath full path to the Javascript document; default './js/dtree.js' | |||||||||||||
| 741 | @optional UseIcons if true, widget includes open/close icons; default false | |||||||||||||
| 742 | @optional RootIcon icon used for root node of tree; default none | |||||||||||||
| 743 | @optional RootLink URL of root node of tree; default none | |||||||||||||
| 744 | @optional Target name of target frem for tree links; default 'mainframe' | |||||||||||||
| 745 | @optional CloseIcon icon used for closed nodes; default |
|||||||||||||
| 746 | @optional OpenIcon icon used for open node; default |
|||||||||||||
| 747 | @optional IconPath path to the icon image directory | |||||||||||||
| 748 | ||||||||||||||
| 749 | @return this widget object | |||||||||||||
| 750 | ||||||||||||||
| 751 | =end classdoc | |||||||||||||
| 752 | ||||||||||||||
| 753 | =cut | |||||||||||||
| 754 | ||||||||||||||
| 755 | sub start { | |||||||||||||
| 756 | 3 | 3 | 0 | 4 | my $self = shift; | |||||||||
| 757 | 3 | 19 | my %args = @_; | |||||||||||
| 758 | 3 | 50 | 8 | $args{IconPath} ||= './img'; | ||||||||||
| 759 | 3 | 50 | 7 | $args{CSSPath} ||= './css/dtree.css'; | ||||||||||
| 760 | 3 | 50 | 6 | $args{JSPath} ||= './js/dtree.js'; | ||||||||||
| 761 | 3 | 50 | 10 | $args{Target} = $args{Target} ? "'$args{Target}'" : "'mainframe'"; | ||||||||||
| 762 | 3 | 50 | 9 | $args{RootLink} = $args{RootLink} ? "'$args{RootLink}'" : 'null'; | ||||||||||
| 763 | 3 | 100 | 10 | $args{RootIcon} = $args{RootIcon} ? "'$args{RootIcon}'" : 'null'; | ||||||||||
| 764 | 3 | 100 | 9 | $args{OpenIcon} = $args{OpenIcon} ? "'$args{OpenIcon}'" : "'$args{IconPath}/folderopen.gif'"; | ||||||||||
| 765 | 3 | 100 | 11 | $args{CloseIcon} = $args{CloseIcon} ? "'$args{CloseIcon}'" : "'$args{IconPath}/folder.gif'"; | ||||||||||
| 766 | 3 | 50 | 11 | $args{RootText} ||= ''; | ||||||||||
| 767 | 3 | 25 | $self->{_jstree} = " | |||||||||||
| 768 | ||||||||||||||
| 769 | ||||||||||||||
| 770 | ||||||||||||||
| 771 | ||||||||||||||
| 772 | ||||||||||||||
| 773 | ||||||||||||||
| 774 | ||||||||||||||
| 775 | |
|||||||||||||
| 776 | ||||||||||||||
| 777 | ||||||||||||||
| 869 | ||||||||||||||
| 870 | ||||||||||||||
| 871 |
|
|||||||||||||
| 872 | $adds | |||||||||||||
| 873 | ||||||||||||||
| 874 | ||||||||||||||
| 875 | "; | |||||||||||||
| 876 | } | |||||||||||||
| 877 | ||||||||||||||
| 878 | 1; |