compass-jquery-plugin 0.2.6.0 → 0.3.0.beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1376) hide show
  1. data/.document +2 -4
  2. data/.loadpath +5 -5
  3. data/.project +17 -17
  4. data/README.textile +50 -47
  5. data/VERSION.yml +3 -3
  6. data/compass-jquery-plugin.gemspec +1181 -511
  7. data/gem_tasks/dynatree.rake +7 -7
  8. data/gem_tasks/jqgrid.rake +7 -7
  9. data/gem_tasks/jqtouch.rake +35 -18
  10. data/gem_tasks/jrails.rake +0 -327
  11. data/gem_tasks/jrails13.rake +234 -0
  12. data/gem_tasks/jrails14.rake +268 -0
  13. data/gem_tasks/ribbon.rake +78 -0
  14. data/gem_tasks/rubygems.rake +1 -1
  15. data/gem_tasks/secret_sauce.rake +4 -4
  16. data/lib/handle_attributes.rb +23 -0
  17. data/lib/jquery/gridify/assertions.rb +37 -0
  18. data/lib/jquery/gridify/grid.rb +147 -0
  19. data/lib/jquery/gridify/grid_column.rb +125 -0
  20. data/lib/jquery/gridify/grid_finder.rb +192 -0
  21. data/lib/jquery/gridify/grid_options.rb +273 -0
  22. data/lib/jquery/gridify/grid_view.rb +404 -0
  23. data/lib/jquery/gridify.rb +42 -0
  24. data/lib/jquery/jqgrid/jqgrid.rb +87 -37
  25. data/lib/jquery/jqgrid.rb +1 -1
  26. data/lib/jquery/jquery_auto_complete.rb +44 -0
  27. data/lib/jquery/jquery_selector_assertions.rb +78 -0
  28. data/lib/jquery/jrails.rb +22 -10
  29. data/lib/jquery/{calendar.rb → ribbon.rb} +0 -0
  30. data/lib/jquery/secret_sauce/helpers/ui_grid_helper.rb +10 -4
  31. data/lib/jquery/secret_sauce/model/find_for_grid.rb +1 -1
  32. data/lib/jquery/secret_sauce.rb +0 -1
  33. data/lib/jquery.ui.rb +144 -0
  34. data/templates/dynatree/jquery.dynatree.js +2036 -2018
  35. data/templates/dynatree/jquery.dynatree.min.js +59 -58
  36. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/cbChecked.png +0 -0
  37. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/cbChecked_hover.png +0 -0
  38. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/cbIntermediate.png +0 -0
  39. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/cbIntermediate_hover.png +0 -0
  40. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/cbUnchecked.png +0 -0
  41. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/cbUnchecked_hover.png +0 -0
  42. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/collapsed.png +0 -0
  43. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/collapsed_hover.png +0 -0
  44. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/customDoc1.png +0 -0
  45. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/customFolder1.png +0 -0
  46. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/doc_with_children.png +0 -0
  47. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/document.png +0 -0
  48. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/empty.png +0 -0
  49. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/expanded.png +0 -0
  50. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/expanded_hover.png +0 -0
  51. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/folder.png +0 -0
  52. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/folder_docs.png +0 -0
  53. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/folder_images.png +0 -0
  54. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/folder_page.png +0 -0
  55. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/ltDoc.png +0 -0
  56. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/ltError.png +0 -0
  57. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/ltWait.ani +0 -0
  58. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/ltWait.gif +0 -0
  59. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/rbChecked.png +0 -0
  60. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/rbChecked_hover.png +0 -0
  61. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/rbIntermediate.png +0 -0
  62. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/rbIntermediate_hover.png +0 -0
  63. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/rbUnchecked.png +0 -0
  64. data/templates/dynatree/jquery.ui/{dynatree.vista → dynatree.aero}/rbUnchecked_hover.png +0 -0
  65. data/templates/dynatree/jquery.ui/dynatree.aero.scss +144 -0
  66. data/templates/dynatree/jquery.ui/dynatree.aqua.scss +144 -0
  67. data/templates/dynatree/jquery.ui/dynatree.crystal.scss +144 -0
  68. data/templates/dynatree/jquery.ui/dynatree.xp/vline.png +0 -0
  69. data/templates/dynatree/jquery.ui/dynatree.xp.scss +239 -0
  70. data/templates/dynatree/manifest.rb +127 -128
  71. data/templates/jqgrid/config/initializers/jqgrid.rb +2 -3
  72. data/templates/jqgrid/i18n/jqgrid/locale-bg.min.js +15 -15
  73. data/templates/jqgrid/i18n/jqgrid/locale-bg1251.min.js +15 -15
  74. data/templates/jqgrid/i18n/jqgrid/locale-cat.min.js +7 -7
  75. data/templates/jqgrid/i18n/jqgrid/locale-cn.min.js +8 -8
  76. data/templates/jqgrid/i18n/jqgrid/locale-cs.min.js +8 -8
  77. data/templates/jqgrid/i18n/jqgrid/locale-de.min.js +7 -7
  78. data/templates/jqgrid/i18n/jqgrid/locale-dk.min.js +6 -6
  79. data/templates/jqgrid/i18n/jqgrid/locale-el.min.js +13 -13
  80. data/templates/jqgrid/i18n/jqgrid/locale-en.min.js +6 -6
  81. data/templates/jqgrid/i18n/jqgrid/locale-fa.min.js +12 -12
  82. data/templates/jqgrid/i18n/jqgrid/locale-fi.min.js +6 -6
  83. data/templates/jqgrid/i18n/jqgrid/locale-fr.js +126 -126
  84. data/templates/jqgrid/i18n/jqgrid/locale-fr.min.js +7 -7
  85. data/templates/jqgrid/i18n/jqgrid/locale-he.min.js +13 -13
  86. data/templates/jqgrid/i18n/jqgrid/locale-is.min.js +7 -7
  87. data/templates/jqgrid/i18n/jqgrid/locale-it.min.js +7 -7
  88. data/templates/jqgrid/i18n/jqgrid/locale-ja.min.js +10 -10
  89. data/templates/jqgrid/i18n/jqgrid/locale-nl.min.js +6 -6
  90. data/templates/jqgrid/i18n/jqgrid/locale-no.min.js +6 -6
  91. data/templates/jqgrid/i18n/jqgrid/locale-pl.min.js +7 -7
  92. data/templates/jqgrid/i18n/jqgrid/locale-pt-br.min.js +7 -7
  93. data/templates/jqgrid/i18n/jqgrid/locale-pt.min.js +7 -7
  94. data/templates/jqgrid/i18n/jqgrid/locale-ro.min.js +8 -8
  95. data/templates/jqgrid/i18n/jqgrid/locale-ru.min.js +16 -16
  96. data/templates/jqgrid/i18n/jqgrid/locale-sk.js +127 -0
  97. data/templates/jqgrid/i18n/jqgrid/locale-sk.min.js +8 -0
  98. data/templates/jqgrid/i18n/jqgrid/locale-sp.min.js +7 -7
  99. data/templates/jqgrid/i18n/jqgrid/locale-sv.min.js +7 -7
  100. data/templates/jqgrid/i18n/jqgrid/locale-tr.min.js +7 -7
  101. data/templates/jqgrid/i18n/jqgrid/locale-ua.min.js +16 -16
  102. data/templates/jqgrid/jquery.jqGrid.js +10471 -10255
  103. data/templates/jqgrid/jquery.jqGrid.min.js +430 -424
  104. data/templates/jqgrid/jquery.ui/jqGrid.scss +669 -0
  105. data/templates/jqgrid/manifest.rb +66 -64
  106. data/templates/jqtouch/jqtouch/apple/{blueButton.png → actionButton.png} +0 -0
  107. data/templates/jqtouch/jqtouch/apple/activeButton.png +0 -0
  108. data/templates/jqtouch/jqtouch/apple/greenButton.png +0 -0
  109. data/templates/jqtouch/jqtouch/apple/redButton.png +0 -0
  110. data/templates/jqtouch/jqtouch/iphone-emulator.scss +21 -0
  111. data/templates/jqtouch/jqtouch/iphone_fullsize.png +0 -0
  112. data/templates/jqtouch/jqtouch/jqt/activeButton.png +0 -0
  113. data/templates/jqtouch/jqtouch/jqt/blueButton.png +0 -0
  114. data/templates/jqtouch/jqtouch/jqt/greenButton.png +0 -0
  115. data/templates/jqtouch/jqtouch/jqt/redButton.png +0 -0
  116. data/templates/jqtouch/jqtouch/jqt.apple.scss +584 -0
  117. data/templates/jqtouch/jqtouch/jqt.jqt.scss +528 -0
  118. data/templates/jqtouch/jqtouch/jqt_startup.png +0 -0
  119. data/templates/jqtouch/jqtouch/jqtouch.png +0 -0
  120. data/templates/jqtouch/jqtouch/jqtouch.scss +310 -0
  121. data/templates/jqtouch/jquery.jqtouch.js +1026 -1006
  122. data/templates/jqtouch/jquery.jqtouch.min.js +26 -24
  123. data/templates/jqtouch/manifest.rb +52 -43
  124. data/templates/jrails-1.3/config/initializers/jrails.rb +29 -0
  125. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-ar.js +20 -0
  126. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-ar.min.js +4 -0
  127. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-bg.js +20 -0
  128. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-bg.min.js +4 -0
  129. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-ca.js +19 -0
  130. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-ca.min.js +2 -0
  131. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-cs.js +19 -0
  132. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-cs.min.js +2 -0
  133. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-da.js +19 -0
  134. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-da.min.js +2 -0
  135. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-de.js +19 -0
  136. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-de.min.js +2 -0
  137. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-el.js +19 -0
  138. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-el.min.js +4 -0
  139. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-eo.js +19 -0
  140. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-eo.min.js +2 -0
  141. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-es.js +19 -0
  142. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-es.min.js +2 -0
  143. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-fa.js +19 -0
  144. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-fa.min.js +3 -0
  145. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-fi.js +19 -0
  146. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-fi.min.js +2 -0
  147. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-fr.js +19 -0
  148. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-fr.min.js +2 -0
  149. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-he.js +19 -0
  150. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-he.min.js +3 -0
  151. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-hr.js +19 -0
  152. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-hr.min.js +2 -0
  153. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-hu.js +19 -0
  154. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-hu.min.js +2 -0
  155. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-hy.js +19 -0
  156. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-hy.min.js +4 -0
  157. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-id.js +19 -0
  158. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-id.min.js +2 -0
  159. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-is.js +19 -0
  160. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-is.min.js +2 -0
  161. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-it.js +19 -0
  162. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-it.min.js +2 -0
  163. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-ja.js +20 -0
  164. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-ja.min.js +2 -0
  165. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-ko.js +19 -0
  166. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-ko.min.js +2 -0
  167. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-lt.js +19 -0
  168. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-lt.min.js +2 -0
  169. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-lv.js +19 -0
  170. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-lv.min.js +2 -0
  171. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-ms.js +19 -0
  172. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-ms.min.js +2 -0
  173. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-nl.js +19 -0
  174. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-nl.min.js +2 -0
  175. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-no.js +19 -0
  176. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-no.min.js +2 -0
  177. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-pl.js +19 -0
  178. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-pl.min.js +2 -0
  179. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-pt-BR.js +19 -0
  180. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-pt-BR.min.js +2 -0
  181. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-ro.js +22 -0
  182. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-ro.min.js +2 -0
  183. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-ru.js +19 -0
  184. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-ru.min.js +4 -0
  185. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-sk.js +19 -0
  186. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-sk.min.js +2 -0
  187. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-sl.js +20 -0
  188. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-sl.min.js +2 -0
  189. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-sq.js +19 -0
  190. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-sq.min.js +2 -0
  191. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-sr-SR.js +19 -0
  192. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-sr-SR.min.js +2 -0
  193. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-sr.js +19 -0
  194. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-sr.min.js +3 -0
  195. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-sv.js +19 -0
  196. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-sv.min.js +2 -0
  197. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-th.js +19 -0
  198. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-th.min.js +4 -0
  199. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-tr.js +19 -0
  200. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-tr.min.js +2 -0
  201. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-uk.js +25 -0
  202. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-uk.min.js +4 -0
  203. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-zh-CN.js +19 -0
  204. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-zh-CN.min.js +2 -0
  205. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-zh-TW.js +19 -0
  206. data/templates/jrails-1.3/i18n/jquery.ui/datepicker-zh-TW.min.js +2 -0
  207. data/templates/jrails-1.3/jquery-1.3.2.js +7638 -0
  208. data/templates/jrails-1.3/jquery-1.3.2.min.js +178 -0
  209. data/templates/jrails-1.3/jquery-ui-1.7.2.js +18316 -0
  210. data/templates/jrails-1.3/jquery-ui-1.7.2.min.js +688 -0
  211. data/templates/jrails-1.3/jquery.contextMenu.js +211 -0
  212. data/templates/jrails-1.3/jquery.contextMenu.min.js +8 -0
  213. data/templates/jrails-1.3/jquery.haml.js +293 -0
  214. data/templates/jrails-1.3/jquery.haml.min.js +5 -0
  215. data/templates/jrails-1.3/jquery.pngFix.js +11 -0
  216. data/templates/jrails-1.3/jquery.pngFix.min.js +2 -0
  217. data/templates/jrails-1.3/jquery.themeswitchertool.js +190 -0
  218. data/templates/jrails-1.3/jquery.themeswitchertool.min.js +8 -0
  219. data/templates/jrails-1.3/jquery.ui/_theme.scss +1281 -0
  220. data/templates/{jrails → jrails-1.3}/jquery.ui/base/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  221. data/templates/{jrails → jrails-1.3}/jquery.ui/base/ui-bg_flat_75_ffffff_40x100.png +0 -0
  222. data/templates/{jrails → jrails-1.3}/jquery.ui/base/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  223. data/templates/{jrails → jrails-1.3}/jquery.ui/base/ui-bg_glass_65_ffffff_1x400.png +0 -0
  224. data/templates/{jrails → jrails-1.3}/jquery.ui/base/ui-bg_glass_75_dadada_1x400.png +0 -0
  225. data/templates/{jrails → jrails-1.3}/jquery.ui/base/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  226. data/templates/{jrails → jrails-1.3}/jquery.ui/base/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  227. data/templates/{jrails → jrails-1.3}/jquery.ui/base/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  228. data/templates/{jrails → jrails-1.3}/jquery.ui/base/ui-icons_222222_256x240.png +0 -0
  229. data/templates/{jrails → jrails-1.3}/jquery.ui/base/ui-icons_2e83ff_256x240.png +0 -0
  230. data/templates/{jrails → jrails-1.3}/jquery.ui/base/ui-icons_454545_256x240.png +0 -0
  231. data/templates/{jrails → jrails-1.3}/jquery.ui/base/ui-icons_888888_256x240.png +0 -0
  232. data/templates/{jrails → jrails-1.3}/jquery.ui/base/ui-icons_cd0a0a_256x240.png +0 -0
  233. data/templates/jrails-1.3/jquery.ui/base.scss +85 -0
  234. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-bg_diagonals-thick_8_333333_40x40.png +0 -0
  235. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-bg_flat_65_ffffff_40x100.png +0 -0
  236. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-bg_glass_40_111111_1x400.png +0 -0
  237. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-bg_glass_55_1c1c1c_1x400.png +0 -0
  238. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-bg_highlight-hard_100_f9f9f9_1x100.png +0 -0
  239. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-bg_highlight-hard_40_aaaaaa_1x100.png +0 -0
  240. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-bg_highlight-soft_50_aaaaaa_1x100.png +0 -0
  241. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-bg_inset-hard_45_cd0a0a_1x100.png +0 -0
  242. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-bg_inset-hard_55_ffeb80_1x100.png +0 -0
  243. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-icons_222222_256x240.png +0 -0
  244. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-icons_4ca300_256x240.png +0 -0
  245. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-icons_bbbbbb_256x240.png +0 -0
  246. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-icons_ededed_256x240.png +0 -0
  247. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-icons_ffcf29_256x240.png +0 -0
  248. data/templates/{jrails → jrails-1.3}/jquery.ui/black-tie/ui-icons_ffffff_256x240.png +0 -0
  249. data/templates/jrails-1.3/jquery.ui/black-tie.scss +85 -0
  250. data/templates/{jrails → jrails-1.3}/jquery.ui/blitzer/ui-bg_diagonals-thick_75_f3d8d8_40x40.png +0 -0
  251. data/templates/{jrails → jrails-1.3}/jquery.ui/blitzer/ui-bg_dots-small_65_a6a6a6_2x2.png +0 -0
  252. data/templates/{jrails → jrails-1.3}/jquery.ui/blitzer/ui-bg_flat_0_333333_40x100.png +0 -0
  253. data/templates/{jrails → jrails-1.3}/jquery.ui/blitzer/ui-bg_flat_65_ffffff_40x100.png +0 -0
  254. data/templates/{jrails → jrails-1.3}/jquery.ui/blitzer/ui-bg_flat_75_ffffff_40x100.png +0 -0
  255. data/templates/{jrails → jrails-1.3}/jquery.ui/blitzer/ui-bg_glass_55_fbf8ee_1x400.png +0 -0
  256. data/templates/{jrails → jrails-1.3}/jquery.ui/blitzer/ui-bg_highlight-hard_100_eeeeee_1x100.png +0 -0
  257. data/templates/{jrails → jrails-1.3}/jquery.ui/blitzer/ui-bg_highlight-hard_100_f6f6f6_1x100.png +0 -0
  258. data/templates/{jrails → jrails-1.3}/jquery.ui/blitzer/ui-bg_highlight-soft_15_cc0000_1x100.png +0 -0
  259. data/templates/{jrails → jrails-1.3}/jquery.ui/blitzer/ui-icons_004276_256x240.png +0 -0
  260. data/templates/{jrails → jrails-1.3}/jquery.ui/blitzer/ui-icons_cc0000_256x240.png +0 -0
  261. data/templates/{jrails → jrails-1.3}/jquery.ui/blitzer/ui-icons_ffffff_256x240.png +0 -0
  262. data/templates/jrails-1.3/jquery.ui/blitzer.scss +85 -0
  263. data/templates/jrails-1.3/jquery.ui/contextMenu/cut.png +0 -0
  264. data/templates/jrails-1.3/jquery.ui/contextMenu/door.png +0 -0
  265. data/templates/jrails-1.3/jquery.ui/contextMenu/page_white_copy.png +0 -0
  266. data/templates/jrails-1.3/jquery.ui/contextMenu/page_white_delete.png +0 -0
  267. data/templates/jrails-1.3/jquery.ui/contextMenu/page_white_edit.png +0 -0
  268. data/templates/jrails-1.3/jquery.ui/contextMenu/page_white_paste.png +0 -0
  269. data/templates/jrails-1.3/jquery.ui/contextMenu.scss +49 -0
  270. data/templates/{jrails → jrails-1.3}/jquery.ui/cupertino/ui-bg_diagonals-thick_90_eeeeee_40x40.png +0 -0
  271. data/templates/{jrails → jrails-1.3}/jquery.ui/cupertino/ui-bg_flat_15_cd0a0a_40x100.png +0 -0
  272. data/templates/{jrails → jrails-1.3}/jquery.ui/cupertino/ui-bg_glass_100_e4f1fb_1x400.png +0 -0
  273. data/templates/{jrails → jrails-1.3}/jquery.ui/cupertino/ui-bg_glass_50_3baae3_1x400.png +0 -0
  274. data/templates/{jrails → jrails-1.3}/jquery.ui/cupertino/ui-bg_glass_80_d7ebf9_1x400.png +0 -0
  275. data/templates/{jrails → jrails-1.3}/jquery.ui/cupertino/ui-bg_highlight-hard_100_f2f5f7_1x100.png +0 -0
  276. data/templates/{jrails → jrails-1.3}/jquery.ui/cupertino/ui-bg_highlight-hard_70_000000_1x100.png +0 -0
  277. data/templates/{jrails → jrails-1.3}/jquery.ui/cupertino/ui-bg_highlight-soft_100_deedf7_1x100.png +0 -0
  278. data/templates/{jrails → jrails-1.3}/jquery.ui/cupertino/ui-bg_highlight-soft_25_ffef8f_1x100.png +0 -0
  279. data/templates/{jrails → jrails-1.3}/jquery.ui/cupertino/ui-icons_2694e8_256x240.png +0 -0
  280. data/templates/{jrails → jrails-1.3}/jquery.ui/cupertino/ui-icons_2e83ff_256x240.png +0 -0
  281. data/templates/{jrails → jrails-1.3}/jquery.ui/cupertino/ui-icons_3d80b3_256x240.png +0 -0
  282. data/templates/{jrails → jrails-1.3}/jquery.ui/cupertino/ui-icons_72a7cf_256x240.png +0 -0
  283. data/templates/{jrails → jrails-1.3}/jquery.ui/cupertino/ui-icons_ffffff_256x240.png +0 -0
  284. data/templates/jrails-1.3/jquery.ui/cupertino.scss +85 -0
  285. data/templates/{jrails → jrails-1.3}/jquery.ui/dark-hive/ui-bg_flat_30_cccccc_40x100.png +0 -0
  286. data/templates/{jrails → jrails-1.3}/jquery.ui/dark-hive/ui-bg_flat_50_5c5c5c_40x100.png +0 -0
  287. data/templates/{jrails → jrails-1.3}/jquery.ui/dark-hive/ui-bg_glass_40_ffc73d_1x400.png +0 -0
  288. data/templates/{jrails → jrails-1.3}/jquery.ui/dark-hive/ui-bg_highlight-hard_20_0972a5_1x100.png +0 -0
  289. data/templates/{jrails → jrails-1.3}/jquery.ui/dark-hive/ui-bg_highlight-soft_33_003147_1x100.png +0 -0
  290. data/templates/{jrails → jrails-1.3}/jquery.ui/dark-hive/ui-bg_highlight-soft_35_222222_1x100.png +0 -0
  291. data/templates/{jrails → jrails-1.3}/jquery.ui/dark-hive/ui-bg_highlight-soft_44_444444_1x100.png +0 -0
  292. data/templates/{jrails → jrails-1.3}/jquery.ui/dark-hive/ui-bg_highlight-soft_80_eeeeee_1x100.png +0 -0
  293. data/templates/{jrails → jrails-1.3}/jquery.ui/dark-hive/ui-bg_loop_25_000000_21x21.png +0 -0
  294. data/templates/{jrails → jrails-1.3}/jquery.ui/dark-hive/ui-icons_222222_256x240.png +0 -0
  295. data/templates/{jrails → jrails-1.3}/jquery.ui/dark-hive/ui-icons_4b8e0b_256x240.png +0 -0
  296. data/templates/{jrails → jrails-1.3}/jquery.ui/dark-hive/ui-icons_a83300_256x240.png +0 -0
  297. data/templates/{jrails → jrails-1.3}/jquery.ui/dark-hive/ui-icons_cccccc_256x240.png +0 -0
  298. data/templates/{jrails → jrails-1.3}/jquery.ui/dark-hive/ui-icons_ffffff_256x240.png +0 -0
  299. data/templates/jrails-1.3/jquery.ui/dark-hive.scss +85 -0
  300. data/templates/{jrails → jrails-1.3}/jquery.ui/dot-luv/ui-bg_diagonals-thick_15_0b3e6f_40x40.png +0 -0
  301. data/templates/{jrails → jrails-1.3}/jquery.ui/dot-luv/ui-bg_dots-medium_30_0b58a2_4x4.png +0 -0
  302. data/templates/{jrails → jrails-1.3}/jquery.ui/dot-luv/ui-bg_dots-small_20_333333_2x2.png +0 -0
  303. data/templates/{jrails → jrails-1.3}/jquery.ui/dot-luv/ui-bg_dots-small_30_a32d00_2x2.png +0 -0
  304. data/templates/{jrails → jrails-1.3}/jquery.ui/dot-luv/ui-bg_dots-small_40_00498f_2x2.png +0 -0
  305. data/templates/{jrails → jrails-1.3}/jquery.ui/dot-luv/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  306. data/templates/{jrails → jrails-1.3}/jquery.ui/dot-luv/ui-bg_flat_40_292929_40x100.png +0 -0
  307. data/templates/{jrails → jrails-1.3}/jquery.ui/dot-luv/ui-bg_gloss-wave_20_111111_500x100.png +0 -0
  308. data/templates/{jrails → jrails-1.3}/jquery.ui/dot-luv/ui-icons_00498f_256x240.png +0 -0
  309. data/templates/{jrails → jrails-1.3}/jquery.ui/dot-luv/ui-icons_98d2fb_256x240.png +0 -0
  310. data/templates/{jrails → jrails-1.3}/jquery.ui/dot-luv/ui-icons_9ccdfc_256x240.png +0 -0
  311. data/templates/{jrails → jrails-1.3}/jquery.ui/dot-luv/ui-icons_ffffff_256x240.png +0 -0
  312. data/templates/jrails-1.3/jquery.ui/dot-luv.scss +85 -0
  313. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  314. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  315. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-bg_flat_55_994d53_40x100.png +0 -0
  316. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-bg_flat_55_fafafa_40x100.png +0 -0
  317. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-bg_gloss-wave_30_3d3644_500x100.png +0 -0
  318. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-bg_highlight-soft_100_dcd9de_1x100.png +0 -0
  319. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-bg_highlight-soft_100_eae6ea_1x100.png +0 -0
  320. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-bg_highlight-soft_25_30273a_1x100.png +0 -0
  321. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-bg_highlight-soft_45_5f5964_1x100.png +0 -0
  322. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-icons_454545_256x240.png +0 -0
  323. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-icons_734d99_256x240.png +0 -0
  324. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-icons_8d78a5_256x240.png +0 -0
  325. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-icons_a8a3ae_256x240.png +0 -0
  326. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-icons_ebccce_256x240.png +0 -0
  327. data/templates/{jrails → jrails-1.3}/jquery.ui/eggplant/ui-icons_ffffff_256x240.png +0 -0
  328. data/templates/jrails-1.3/jquery.ui/eggplant.scss +85 -0
  329. data/templates/{jrails → jrails-1.3}/jquery.ui/excite-bike/ui-bg_diagonals-small_25_c5ddfc_40x40.png +0 -0
  330. data/templates/{jrails → jrails-1.3}/jquery.ui/excite-bike/ui-bg_diagonals-thick_20_e69700_40x40.png +0 -0
  331. data/templates/{jrails → jrails-1.3}/jquery.ui/excite-bike/ui-bg_diagonals-thick_22_1484e6_40x40.png +0 -0
  332. data/templates/{jrails → jrails-1.3}/jquery.ui/excite-bike/ui-bg_diagonals-thick_26_2293f7_40x40.png +0 -0
  333. data/templates/{jrails → jrails-1.3}/jquery.ui/excite-bike/ui-bg_flat_0_e69700_40x100.png +0 -0
  334. data/templates/{jrails → jrails-1.3}/jquery.ui/excite-bike/ui-bg_flat_0_e6b900_40x100.png +0 -0
  335. data/templates/{jrails → jrails-1.3}/jquery.ui/excite-bike/ui-bg_highlight-soft_100_f9f9f9_1x100.png +0 -0
  336. data/templates/{jrails → jrails-1.3}/jquery.ui/excite-bike/ui-bg_inset-hard_100_eeeeee_1x100.png +0 -0
  337. data/templates/{jrails → jrails-1.3}/jquery.ui/excite-bike/ui-icons_0a82eb_256x240.png +0 -0
  338. data/templates/{jrails → jrails-1.3}/jquery.ui/excite-bike/ui-icons_0b54d5_256x240.png +0 -0
  339. data/templates/{jrails → jrails-1.3}/jquery.ui/excite-bike/ui-icons_5fa5e3_256x240.png +0 -0
  340. data/templates/{jrails → jrails-1.3}/jquery.ui/excite-bike/ui-icons_fcdd4a_256x240.png +0 -0
  341. data/templates/{jrails → jrails-1.3}/jquery.ui/excite-bike/ui-icons_ffffff_256x240.png +0 -0
  342. data/templates/jrails-1.3/jquery.ui/excite-bike.scss +85 -0
  343. data/templates/{jrails → jrails-1.3}/jquery.ui/flick/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  344. data/templates/{jrails → jrails-1.3}/jquery.ui/flick/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  345. data/templates/{jrails → jrails-1.3}/jquery.ui/flick/ui-bg_flat_55_ffffff_40x100.png +0 -0
  346. data/templates/{jrails → jrails-1.3}/jquery.ui/flick/ui-bg_flat_75_ffffff_40x100.png +0 -0
  347. data/templates/{jrails → jrails-1.3}/jquery.ui/flick/ui-bg_glass_65_ffffff_1x400.png +0 -0
  348. data/templates/{jrails → jrails-1.3}/jquery.ui/flick/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
  349. data/templates/{jrails → jrails-1.3}/jquery.ui/flick/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
  350. data/templates/{jrails → jrails-1.3}/jquery.ui/flick/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
  351. data/templates/{jrails → jrails-1.3}/jquery.ui/flick/ui-icons_0073ea_256x240.png +0 -0
  352. data/templates/{jrails → jrails-1.3}/jquery.ui/flick/ui-icons_454545_256x240.png +0 -0
  353. data/templates/{jrails → jrails-1.3}/jquery.ui/flick/ui-icons_666666_256x240.png +0 -0
  354. data/templates/{jrails → jrails-1.3}/jquery.ui/flick/ui-icons_ff0084_256x240.png +0 -0
  355. data/templates/{jrails → jrails-1.3}/jquery.ui/flick/ui-icons_ffffff_256x240.png +0 -0
  356. data/templates/jrails-1.3/jquery.ui/flick.scss +85 -0
  357. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-bg_diagonals-small_40_db4865_40x40.png +0 -0
  358. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-bg_diagonals-small_50_93c3cd_40x40.png +0 -0
  359. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-bg_diagonals-small_50_ff3853_40x40.png +0 -0
  360. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-bg_diagonals-small_75_ccd232_40x40.png +0 -0
  361. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-bg_dots-medium_80_ffff38_4x4.png +0 -0
  362. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-bg_dots-small_35_35414f_2x2.png +0 -0
  363. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-bg_flat_75_ba9217_40x100.png +0 -0
  364. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-bg_flat_75_ffffff_40x100.png +0 -0
  365. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-bg_white-lines_85_f7f7ba_40x100.png +0 -0
  366. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-icons_454545_256x240.png +0 -0
  367. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-icons_88a206_256x240.png +0 -0
  368. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-icons_c02669_256x240.png +0 -0
  369. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-icons_e1e463_256x240.png +0 -0
  370. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-icons_ffeb33_256x240.png +0 -0
  371. data/templates/{jrails → jrails-1.3}/jquery.ui/hot-sneaks/ui-icons_ffffff_256x240.png +0 -0
  372. data/templates/jrails-1.3/jquery.ui/hot-sneaks.scss +85 -0
  373. data/templates/{jrails → jrails-1.3}/jquery.ui/humanity/ui-bg_flat_75_aaaaaa_40x100.png +0 -0
  374. data/templates/{jrails → jrails-1.3}/jquery.ui/humanity/ui-bg_glass_100_f5f0e5_1x400.png +0 -0
  375. data/templates/{jrails → jrails-1.3}/jquery.ui/humanity/ui-bg_glass_25_cb842e_1x400.png +0 -0
  376. data/templates/{jrails → jrails-1.3}/jquery.ui/humanity/ui-bg_glass_70_ede4d4_1x400.png +0 -0
  377. data/templates/{jrails → jrails-1.3}/jquery.ui/humanity/ui-bg_highlight-hard_100_f4f0ec_1x100.png +0 -0
  378. data/templates/{jrails → jrails-1.3}/jquery.ui/humanity/ui-bg_highlight-hard_65_fee4bd_1x100.png +0 -0
  379. data/templates/{jrails → jrails-1.3}/jquery.ui/humanity/ui-bg_highlight-hard_75_f5f5b5_1x100.png +0 -0
  380. data/templates/{jrails → jrails-1.3}/jquery.ui/humanity/ui-bg_inset-soft_100_f4f0ec_1x100.png +0 -0
  381. data/templates/{jrails → jrails-1.3}/jquery.ui/humanity/ui-icons_c47a23_256x240.png +0 -0
  382. data/templates/{jrails → jrails-1.3}/jquery.ui/humanity/ui-icons_cb672b_256x240.png +0 -0
  383. data/templates/{jrails → jrails-1.3}/jquery.ui/humanity/ui-icons_f08000_256x240.png +0 -0
  384. data/templates/{jrails → jrails-1.3}/jquery.ui/humanity/ui-icons_f35f07_256x240.png +0 -0
  385. data/templates/{jrails → jrails-1.3}/jquery.ui/humanity/ui-icons_ff7519_256x240.png +0 -0
  386. data/templates/{jrails → jrails-1.3}/jquery.ui/humanity/ui-icons_ffffff_256x240.png +0 -0
  387. data/templates/jrails-1.3/jquery.ui/humanity.scss +85 -0
  388. data/templates/{jrails → jrails-1.3}/jquery.ui/le-frog/ui-bg_diagonals-small_0_aaaaaa_40x40.png +0 -0
  389. data/templates/{jrails → jrails-1.3}/jquery.ui/le-frog/ui-bg_diagonals-thick_15_444444_40x40.png +0 -0
  390. data/templates/{jrails → jrails-1.3}/jquery.ui/le-frog/ui-bg_diagonals-thick_95_ffdc2e_40x40.png +0 -0
  391. data/templates/{jrails → jrails-1.3}/jquery.ui/le-frog/ui-bg_glass_55_fbf5d0_1x400.png +0 -0
  392. data/templates/{jrails → jrails-1.3}/jquery.ui/le-frog/ui-bg_highlight-hard_30_285c00_1x100.png +0 -0
  393. data/templates/{jrails → jrails-1.3}/jquery.ui/le-frog/ui-bg_highlight-soft_33_3a8104_1x100.png +0 -0
  394. data/templates/{jrails → jrails-1.3}/jquery.ui/le-frog/ui-bg_highlight-soft_50_4eb305_1x100.png +0 -0
  395. data/templates/{jrails → jrails-1.3}/jquery.ui/le-frog/ui-bg_highlight-soft_60_4ca20b_1x100.png +0 -0
  396. data/templates/{jrails → jrails-1.3}/jquery.ui/le-frog/ui-bg_inset-soft_10_285c00_1x100.png +0 -0
  397. data/templates/{jrails → jrails-1.3}/jquery.ui/le-frog/ui-icons_4eb305_256x240.png +0 -0
  398. data/templates/{jrails → jrails-1.3}/jquery.ui/le-frog/ui-icons_72b42d_256x240.png +0 -0
  399. data/templates/{jrails → jrails-1.3}/jquery.ui/le-frog/ui-icons_cd0a0a_256x240.png +0 -0
  400. data/templates/{jrails → jrails-1.3}/jquery.ui/le-frog/ui-icons_ffffff_256x240.png +0 -0
  401. data/templates/jrails-1.3/jquery.ui/le-frog.scss +85 -0
  402. data/templates/{jrails → jrails-1.3}/jquery.ui/mint-choc/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  403. data/templates/{jrails → jrails-1.3}/jquery.ui/mint-choc/ui-bg_glass_15_5f391b_1x400.png +0 -0
  404. data/templates/{jrails → jrails-1.3}/jquery.ui/mint-choc/ui-bg_gloss-wave_20_1c160d_500x100.png +0 -0
  405. data/templates/{jrails → jrails-1.3}/jquery.ui/mint-choc/ui-bg_gloss-wave_25_453326_500x100.png +0 -0
  406. data/templates/{jrails → jrails-1.3}/jquery.ui/mint-choc/ui-bg_gloss-wave_30_44372c_500x100.png +0 -0
  407. data/templates/{jrails → jrails-1.3}/jquery.ui/mint-choc/ui-bg_highlight-soft_20_201913_1x100.png +0 -0
  408. data/templates/{jrails → jrails-1.3}/jquery.ui/mint-choc/ui-bg_highlight-soft_20_619226_1x100.png +0 -0
  409. data/templates/{jrails → jrails-1.3}/jquery.ui/mint-choc/ui-bg_inset-soft_10_201913_1x100.png +0 -0
  410. data/templates/{jrails → jrails-1.3}/jquery.ui/mint-choc/ui-icons_222222_256x240.png +0 -0
  411. data/templates/{jrails → jrails-1.3}/jquery.ui/mint-choc/ui-icons_9bcc60_256x240.png +0 -0
  412. data/templates/{jrails → jrails-1.3}/jquery.ui/mint-choc/ui-icons_add978_256x240.png +0 -0
  413. data/templates/{jrails → jrails-1.3}/jquery.ui/mint-choc/ui-icons_e3ddc9_256x240.png +0 -0
  414. data/templates/{jrails → jrails-1.3}/jquery.ui/mint-choc/ui-icons_f1fd86_256x240.png +0 -0
  415. data/templates/{jrails → jrails-1.3}/jquery.ui/mint-choc/ui-icons_ffffff_256x240.png +0 -0
  416. data/templates/jrails-1.3/jquery.ui/mint-choc.scss +85 -0
  417. data/templates/{jrails → jrails-1.3}/jquery.ui/overcast/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  418. data/templates/{jrails → jrails-1.3}/jquery.ui/overcast/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  419. data/templates/{jrails → jrails-1.3}/jquery.ui/overcast/ui-bg_flat_55_c0402a_40x100.png +0 -0
  420. data/templates/{jrails → jrails-1.3}/jquery.ui/overcast/ui-bg_flat_55_eeeeee_40x100.png +0 -0
  421. data/templates/{jrails → jrails-1.3}/jquery.ui/overcast/ui-bg_glass_100_f8f8f8_1x400.png +0 -0
  422. data/templates/{jrails → jrails-1.3}/jquery.ui/overcast/ui-bg_glass_35_dddddd_1x400.png +0 -0
  423. data/templates/{jrails → jrails-1.3}/jquery.ui/overcast/ui-bg_glass_60_eeeeee_1x400.png +0 -0
  424. data/templates/{jrails → jrails-1.3}/jquery.ui/overcast/ui-bg_inset-hard_75_999999_1x100.png +0 -0
  425. data/templates/{jrails → jrails-1.3}/jquery.ui/overcast/ui-bg_inset-soft_50_c9c9c9_1x100.png +0 -0
  426. data/templates/{jrails → jrails-1.3}/jquery.ui/overcast/ui-icons_3383bb_256x240.png +0 -0
  427. data/templates/{jrails → jrails-1.3}/jquery.ui/overcast/ui-icons_454545_256x240.png +0 -0
  428. data/templates/{jrails → jrails-1.3}/jquery.ui/overcast/ui-icons_70b2e1_256x240.png +0 -0
  429. data/templates/{jrails → jrails-1.3}/jquery.ui/overcast/ui-icons_999999_256x240.png +0 -0
  430. data/templates/{jrails → jrails-1.3}/jquery.ui/overcast/ui-icons_fbc856_256x240.png +0 -0
  431. data/templates/jrails-1.3/jquery.ui/overcast.scss +85 -0
  432. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-bg_diagonal-maze_20_6e4f1c_10x10.png +0 -0
  433. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-bg_diagonal-maze_40_000000_10x10.png +0 -0
  434. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-bg_fine-grain_10_eceadf_60x60.png +0 -0
  435. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-bg_fine-grain_10_f8f7f6_60x60.png +0 -0
  436. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-bg_fine-grain_15_eceadf_60x60.png +0 -0
  437. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-bg_fine-grain_15_f7f3de_60x60.png +0 -0
  438. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-bg_fine-grain_15_ffffff_60x60.png +0 -0
  439. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-bg_fine-grain_65_654b24_60x60.png +0 -0
  440. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-bg_fine-grain_68_b83400_60x60.png +0 -0
  441. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-icons_222222_256x240.png +0 -0
  442. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-icons_3572ac_256x240.png +0 -0
  443. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-icons_8c291d_256x240.png +0 -0
  444. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-icons_b83400_256x240.png +0 -0
  445. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-icons_fbdb93_256x240.png +0 -0
  446. data/templates/{jrails → jrails-1.3}/jquery.ui/pepper-grinder/ui-icons_ffffff_256x240.png +0 -0
  447. data/templates/jrails-1.3/jquery.ui/pepper-grinder.scss +85 -0
  448. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  449. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-bg_flat_55_fbec88_40x100.png +0 -0
  450. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  451. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  452. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  453. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  454. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  455. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  456. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-icons_217bc0_256x240.png +0 -0
  457. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-icons_2e83ff_256x240.png +0 -0
  458. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-icons_469bdd_256x240.png +0 -0
  459. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-icons_6da8d5_256x240.png +0 -0
  460. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-icons_cd0a0a_256x240.png +0 -0
  461. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-icons_d8e7f3_256x240.png +0 -0
  462. data/templates/{jrails → jrails-1.3}/jquery.ui/redmond/ui-icons_f9bd01_256x240.png +0 -0
  463. data/templates/jrails-1.3/jquery.ui/redmond.scss +85 -0
  464. data/templates/{jrails → jrails-1.3}/jquery.ui/smoothness/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  465. data/templates/{jrails → jrails-1.3}/jquery.ui/smoothness/ui-bg_flat_75_ffffff_40x100.png +0 -0
  466. data/templates/{jrails → jrails-1.3}/jquery.ui/smoothness/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  467. data/templates/{jrails → jrails-1.3}/jquery.ui/smoothness/ui-bg_glass_65_ffffff_1x400.png +0 -0
  468. data/templates/{jrails → jrails-1.3}/jquery.ui/smoothness/ui-bg_glass_75_dadada_1x400.png +0 -0
  469. data/templates/{jrails → jrails-1.3}/jquery.ui/smoothness/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  470. data/templates/{jrails → jrails-1.3}/jquery.ui/smoothness/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  471. data/templates/{jrails → jrails-1.3}/jquery.ui/smoothness/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  472. data/templates/{jrails → jrails-1.3}/jquery.ui/smoothness/ui-icons_222222_256x240.png +0 -0
  473. data/templates/{jrails → jrails-1.3}/jquery.ui/smoothness/ui-icons_2e83ff_256x240.png +0 -0
  474. data/templates/{jrails → jrails-1.3}/jquery.ui/smoothness/ui-icons_454545_256x240.png +0 -0
  475. data/templates/{jrails → jrails-1.3}/jquery.ui/smoothness/ui-icons_888888_256x240.png +0 -0
  476. data/templates/{jrails → jrails-1.3}/jquery.ui/smoothness/ui-icons_cd0a0a_256x240.png +0 -0
  477. data/templates/jrails-1.3/jquery.ui/smoothness.scss +85 -0
  478. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-bg_glass_55_fcf0ba_1x400.png +0 -0
  479. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-bg_gloss-wave_100_ece8da_500x100.png +0 -0
  480. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-bg_highlight-hard_100_f5f3e5_1x100.png +0 -0
  481. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-bg_highlight-hard_100_fafaf4_1x100.png +0 -0
  482. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-bg_highlight-hard_15_459e00_1x100.png +0 -0
  483. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-bg_highlight-hard_95_cccccc_1x100.png +0 -0
  484. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-bg_highlight-soft_25_67b021_1x100.png +0 -0
  485. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-bg_highlight-soft_95_ffedad_1x100.png +0 -0
  486. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-bg_inset-soft_15_2b2922_1x100.png +0 -0
  487. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-icons_808080_256x240.png +0 -0
  488. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-icons_847e71_256x240.png +0 -0
  489. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-icons_8DC262_256x240.png +0 -0
  490. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-icons_cd0a0a_256x240.png +0 -0
  491. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-icons_eeeeee_256x240.png +0 -0
  492. data/templates/{jrails → jrails-1.3}/jquery.ui/south-street/ui-icons_ffffff_256x240.png +0 -0
  493. data/templates/jrails-1.3/jquery.ui/south-street.scss +85 -0
  494. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-bg_diagonals-medium_20_d34d17_40x40.png +0 -0
  495. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-bg_flat_30_cccccc_40x100.png +0 -0
  496. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-bg_flat_50_5c5c5c_40x100.png +0 -0
  497. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-bg_gloss-wave_45_817865_500x100.png +0 -0
  498. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-bg_gloss-wave_60_fece2f_500x100.png +0 -0
  499. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-bg_gloss-wave_70_ffdd57_500x100.png +0 -0
  500. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-bg_gloss-wave_90_fff9e5_500x100.png +0 -0
  501. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-bg_highlight-soft_100_feeebd_1x100.png +0 -0
  502. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-bg_inset-soft_30_ffffff_1x100.png +0 -0
  503. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-icons_3d3d3d_256x240.png +0 -0
  504. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-icons_bd7b00_256x240.png +0 -0
  505. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-icons_d19405_256x240.png +0 -0
  506. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-icons_eb990f_256x240.png +0 -0
  507. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-icons_ed9f26_256x240.png +0 -0
  508. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-icons_fadc7a_256x240.png +0 -0
  509. data/templates/{jrails → jrails-1.3}/jquery.ui/sunny/ui-icons_ffe180_256x240.png +0 -0
  510. data/templates/jrails-1.3/jquery.ui/sunny.scss +85 -0
  511. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-bg_diamond_10_4f4221_10x8.png +0 -0
  512. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-bg_diamond_20_372806_10x8.png +0 -0
  513. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-bg_diamond_25_675423_10x8.png +0 -0
  514. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-bg_diamond_25_d5ac5d_10x8.png +0 -0
  515. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-bg_diamond_8_261803_10x8.png +0 -0
  516. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-bg_diamond_8_443113_10x8.png +0 -0
  517. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-bg_flat_75_ddd4b0_40x100.png +0 -0
  518. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-bg_highlight-hard_65_fee4bd_1x100.png +0 -0
  519. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-icons_070603_256x240.png +0 -0
  520. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-icons_e8e2b5_256x240.png +0 -0
  521. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-icons_e9cd86_256x240.png +0 -0
  522. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-icons_efec9f_256x240.png +0 -0
  523. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-icons_f2ec64_256x240.png +0 -0
  524. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-icons_f9f2bd_256x240.png +0 -0
  525. data/templates/{jrails → jrails-1.3}/jquery.ui/swanky-purse/ui-icons_ff7519_256x240.png +0 -0
  526. data/templates/jrails-1.3/jquery.ui/swanky-purse.scss +85 -0
  527. data/templates/jrails-1.3/jquery.ui/themeSwitcher/buttonbg.png +0 -0
  528. data/templates/jrails-1.3/jquery.ui/themeSwitcher/icon_color_arrow.gif +0 -0
  529. data/templates/jrails-1.3/jquery.ui/themeSwitcher/menuhoverbg.png +0 -0
  530. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_black_matte.png +0 -0
  531. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_black_tie.png +0 -0
  532. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_blitzer.png +0 -0
  533. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_cupertino.png +0 -0
  534. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_dark_hive.png +0 -0
  535. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_dot_luv.png +0 -0
  536. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_eggplant.png +0 -0
  537. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_excite_bike.png +0 -0
  538. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_flick.png +0 -0
  539. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_hot_sneaks.png +0 -0
  540. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_humanity.png +0 -0
  541. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_le_frog.png +0 -0
  542. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_mint_choco.png +0 -0
  543. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_overcast.png +0 -0
  544. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_pepper_grinder.png +0 -0
  545. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_smoothness.png +0 -0
  546. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_south_street.png +0 -0
  547. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_sunny.png +0 -0
  548. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_swanky_purse.png +0 -0
  549. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_trontastic.png +0 -0
  550. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_ui_dark.png +0 -0
  551. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_ui_light.png +0 -0
  552. data/templates/jrails-1.3/jquery.ui/themeSwitcher/theme_90_windoze.png +0 -0
  553. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-bg_diagonals-small_50_262626_40x40.png +0 -0
  554. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-bg_flat_0_303030_40x100.png +0 -0
  555. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-bg_flat_0_4c4c4c_40x100.png +0 -0
  556. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-bg_glass_40_0a0a0a_1x400.png +0 -0
  557. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-bg_glass_55_f1fbe5_1x400.png +0 -0
  558. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-bg_glass_60_000000_1x400.png +0 -0
  559. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-bg_gloss-wave_55_000000_500x100.png +0 -0
  560. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-bg_gloss-wave_85_9fda58_500x100.png +0 -0
  561. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-bg_gloss-wave_95_f6ecd5_500x100.png +0 -0
  562. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-icons_000000_256x240.png +0 -0
  563. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-icons_1f1f1f_256x240.png +0 -0
  564. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-icons_9fda58_256x240.png +0 -0
  565. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-icons_b8ec79_256x240.png +0 -0
  566. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-icons_cd0a0a_256x240.png +0 -0
  567. data/templates/{jrails → jrails-1.3}/jquery.ui/trontastic/ui-icons_ffffff_256x240.png +0 -0
  568. data/templates/jrails-1.3/jquery.ui/trontastic.scss +85 -0
  569. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-darkness/ui-bg_flat_30_cccccc_40x100.png +0 -0
  570. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-darkness/ui-bg_flat_50_5c5c5c_40x100.png +0 -0
  571. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-darkness/ui-bg_glass_20_555555_1x400.png +0 -0
  572. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-darkness/ui-bg_glass_40_0078a3_1x400.png +0 -0
  573. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-darkness/ui-bg_glass_40_ffc73d_1x400.png +0 -0
  574. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-darkness/ui-bg_gloss-wave_25_333333_500x100.png +0 -0
  575. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-darkness/ui-bg_highlight-soft_80_eeeeee_1x100.png +0 -0
  576. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-darkness/ui-bg_inset-soft_25_000000_1x100.png +0 -0
  577. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-darkness/ui-bg_inset-soft_30_f58400_1x100.png +0 -0
  578. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-darkness/ui-icons_222222_256x240.png +0 -0
  579. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-darkness/ui-icons_4b8e0b_256x240.png +0 -0
  580. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-darkness/ui-icons_a83300_256x240.png +0 -0
  581. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-darkness/ui-icons_cccccc_256x240.png +0 -0
  582. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-darkness/ui-icons_ffffff_256x240.png +0 -0
  583. data/templates/jrails-1.3/jquery.ui/ui-darkness.scss +85 -0
  584. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-lightness/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  585. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-lightness/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  586. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-lightness/ui-bg_flat_10_000000_40x100.png +0 -0
  587. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-lightness/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  588. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-lightness/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  589. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-lightness/ui-bg_glass_65_ffffff_1x400.png +0 -0
  590. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-lightness/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  591. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-lightness/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  592. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-lightness/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  593. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-lightness/ui-icons_222222_256x240.png +0 -0
  594. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-lightness/ui-icons_228ef1_256x240.png +0 -0
  595. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-lightness/ui-icons_ef8c08_256x240.png +0 -0
  596. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-lightness/ui-icons_ffd27a_256x240.png +0 -0
  597. data/templates/{jrails → jrails-1.3}/jquery.ui/ui-lightness/ui-icons_ffffff_256x240.png +0 -0
  598. data/templates/jrails-1.3/jquery.ui/ui-lightness.scss +85 -0
  599. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  600. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  601. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-bg_gloss-wave_16_121212_500x100.png +0 -0
  602. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-bg_highlight-hard_15_888888_1x100.png +0 -0
  603. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-bg_highlight-hard_55_555555_1x100.png +0 -0
  604. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-bg_highlight-soft_35_adadad_1x100.png +0 -0
  605. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-bg_highlight-soft_60_dddddd_1x100.png +0 -0
  606. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-bg_inset-soft_15_121212_1x100.png +0 -0
  607. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-icons_666666_256x240.png +0 -0
  608. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-icons_aaaaaa_256x240.png +0 -0
  609. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-icons_bbbbbb_256x240.png +0 -0
  610. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-icons_c98000_256x240.png +0 -0
  611. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-icons_cccccc_256x240.png +0 -0
  612. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-icons_cd0a0a_256x240.png +0 -0
  613. data/templates/{jrails → jrails-1.3}/jquery.ui/vader/ui-icons_f29a00_256x240.png +0 -0
  614. data/templates/jrails-1.3/jquery.ui/vader.scss +85 -0
  615. data/templates/jrails-1.3/jrails.js +197 -0
  616. data/templates/jrails-1.3/jrails.min.js +8 -0
  617. data/templates/jrails-1.3/manifest.rb +496 -0
  618. data/templates/jrails-1.4/config/initializers/jrails.rb +31 -0
  619. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-af.js +23 -0
  620. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-af.min.js +2 -0
  621. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ar.js +24 -0
  622. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ar.min.js +4 -0
  623. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-az.js +23 -0
  624. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-az.min.js +2 -0
  625. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-bg.js +24 -0
  626. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-bg.min.js +4 -0
  627. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-bs.js +23 -0
  628. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-bs.min.js +2 -0
  629. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ca.js +23 -0
  630. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ca.min.js +2 -0
  631. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-cs.js +23 -0
  632. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-cs.min.js +2 -0
  633. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-da.js +23 -0
  634. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-da.min.js +2 -0
  635. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-de.js +23 -0
  636. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-de.min.js +2 -0
  637. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-el.js +23 -0
  638. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-el.min.js +4 -0
  639. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-en-GB.js +23 -0
  640. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-en-GB.min.js +2 -0
  641. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-eo.js +23 -0
  642. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-eo.min.js +2 -0
  643. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-es.js +23 -0
  644. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-es.min.js +2 -0
  645. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-et.js +23 -0
  646. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-et.min.js +2 -0
  647. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-eu.js +23 -0
  648. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-eu.min.js +2 -0
  649. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-fa.js +23 -0
  650. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-fa.min.js +3 -0
  651. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-fi.js +23 -0
  652. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-fi.min.js +2 -0
  653. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-fo.js +23 -0
  654. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-fo.min.js +2 -0
  655. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-fr-CH.js +23 -0
  656. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-fr-CH.min.js +2 -0
  657. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-fr.js +23 -0
  658. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-fr.min.js +2 -0
  659. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-he.js +23 -0
  660. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-he.min.js +3 -0
  661. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-hr.js +23 -0
  662. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-hr.min.js +2 -0
  663. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-hu.js +23 -0
  664. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-hu.min.js +2 -0
  665. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-hy.js +23 -0
  666. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-hy.min.js +4 -0
  667. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-id.js +23 -0
  668. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-id.min.js +2 -0
  669. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-is.js +23 -0
  670. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-is.min.js +2 -0
  671. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-it.js +23 -0
  672. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-it.min.js +2 -0
  673. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ja.js +23 -0
  674. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ja.min.js +2 -0
  675. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ko.js +23 -0
  676. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ko.min.js +2 -0
  677. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-lt.js +23 -0
  678. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-lt.min.js +2 -0
  679. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-lv.js +23 -0
  680. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-lv.min.js +2 -0
  681. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ms.js +23 -0
  682. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ms.min.js +2 -0
  683. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-nl.js +23 -0
  684. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-nl.min.js +2 -0
  685. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-no.js +23 -0
  686. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-no.min.js +2 -0
  687. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-pl.js +23 -0
  688. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-pl.min.js +2 -0
  689. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-pt-BR.js +23 -0
  690. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-pt-BR.min.js +2 -0
  691. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ro.js +26 -0
  692. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ro.min.js +2 -0
  693. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ru.js +23 -0
  694. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ru.min.js +4 -0
  695. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-sk.js +23 -0
  696. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-sk.min.js +2 -0
  697. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-sl.js +24 -0
  698. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-sl.min.js +2 -0
  699. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-sq.js +23 -0
  700. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-sq.min.js +2 -0
  701. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-sr-SR.js +23 -0
  702. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-sr-SR.min.js +2 -0
  703. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-sr.js +23 -0
  704. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-sr.min.js +4 -0
  705. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-sv.js +23 -0
  706. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-sv.min.js +2 -0
  707. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ta.js +23 -0
  708. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-ta.min.js +4 -0
  709. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-th.js +23 -0
  710. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-th.min.js +4 -0
  711. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-tr.js +23 -0
  712. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-tr.min.js +2 -0
  713. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-uk.js +23 -0
  714. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-uk.min.js +4 -0
  715. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-vi.js +23 -0
  716. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-vi.min.js +2 -0
  717. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-zh-CN.js +23 -0
  718. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-zh-CN.min.js +2 -0
  719. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-zh-HK.js +23 -0
  720. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-zh-HK.min.js +2 -0
  721. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-zh-TW.js +23 -0
  722. data/templates/jrails-1.4/i18n/jquery.ui/datepicker-zh-TW.min.js +2 -0
  723. data/templates/jrails-1.4/jquery-1.4.2.js +9502 -0
  724. data/templates/jrails-1.4/jquery-1.4.2.min.js +210 -0
  725. data/templates/jrails-1.4/jquery-ui-1.8.js +21904 -0
  726. data/templates/jrails-1.4/jquery-ui-1.8.min.js +766 -0
  727. data/templates/jrails-1.4/jquery.bgiframe.js +10 -0
  728. data/templates/jrails-1.4/jquery.bgiframe.min.js +2 -0
  729. data/templates/jrails-1.4/jquery.compat-1.3.js +291 -0
  730. data/templates/jrails-1.4/jquery.compat-1.3.min.js +6 -0
  731. data/templates/jrails-1.4/jquery.contextMenu.js +211 -0
  732. data/templates/jrails-1.4/jquery.contextMenu.min.js +8 -0
  733. data/templates/jrails-1.4/jquery.haml.js +293 -0
  734. data/templates/jrails-1.4/jquery.haml.min.js +5 -0
  735. data/templates/jrails-1.4/jquery.metadata.js +122 -0
  736. data/templates/jrails-1.4/jquery.metadata.min.js +2 -0
  737. data/templates/jrails-1.4/jquery.pngFix.js +11 -0
  738. data/templates/jrails-1.4/jquery.pngFix.min.js +2 -0
  739. data/templates/jrails-1.4/jquery.themeswitchertool.js +190 -0
  740. data/templates/jrails-1.4/jquery.themeswitchertool.min.js +8 -0
  741. data/templates/jrails-1.4/jquery.ui/_theme.scss +1433 -0
  742. data/templates/jrails-1.4/jquery.ui/base/ui-anim_basic_16x16.gif +0 -0
  743. data/templates/jrails-1.4/jquery.ui/base/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  744. data/templates/jrails-1.4/jquery.ui/base/ui-bg_flat_75_ffffff_40x100.png +0 -0
  745. data/templates/jrails-1.4/jquery.ui/base/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  746. data/templates/jrails-1.4/jquery.ui/base/ui-bg_glass_65_ffffff_1x400.png +0 -0
  747. data/templates/jrails-1.4/jquery.ui/base/ui-bg_glass_75_dadada_1x400.png +0 -0
  748. data/templates/jrails-1.4/jquery.ui/base/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  749. data/templates/jrails-1.4/jquery.ui/base/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  750. data/templates/jrails-1.4/jquery.ui/base/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  751. data/templates/jrails-1.4/jquery.ui/base/ui-icons_222222_256x240.png +0 -0
  752. data/templates/jrails-1.4/jquery.ui/base/ui-icons_2e83ff_256x240.png +0 -0
  753. data/templates/jrails-1.4/jquery.ui/base/ui-icons_454545_256x240.png +0 -0
  754. data/templates/jrails-1.4/jquery.ui/base/ui-icons_888888_256x240.png +0 -0
  755. data/templates/jrails-1.4/jquery.ui/base/ui-icons_cd0a0a_256x240.png +0 -0
  756. data/templates/jrails-1.4/jquery.ui/base.scss +90 -0
  757. data/templates/jrails-1.4/jquery.ui/black-tie/ui-anim_basic_16x16.gif +0 -0
  758. data/templates/jrails-1.4/jquery.ui/black-tie/ui-bg_diagonals-thick_8_333333_40x40.png +0 -0
  759. data/templates/jrails-1.4/jquery.ui/black-tie/ui-bg_flat_65_ffffff_40x100.png +0 -0
  760. data/templates/jrails-1.4/jquery.ui/black-tie/ui-bg_glass_40_111111_1x400.png +0 -0
  761. data/templates/jrails-1.4/jquery.ui/black-tie/ui-bg_glass_55_1c1c1c_1x400.png +0 -0
  762. data/templates/jrails-1.4/jquery.ui/black-tie/ui-bg_highlight-hard_100_f9f9f9_1x100.png +0 -0
  763. data/templates/jrails-1.4/jquery.ui/black-tie/ui-bg_highlight-hard_40_aaaaaa_1x100.png +0 -0
  764. data/templates/jrails-1.4/jquery.ui/black-tie/ui-bg_highlight-soft_50_aaaaaa_1x100.png +0 -0
  765. data/templates/jrails-1.4/jquery.ui/black-tie/ui-bg_inset-hard_45_cd0a0a_1x100.png +0 -0
  766. data/templates/jrails-1.4/jquery.ui/black-tie/ui-bg_inset-hard_55_ffeb80_1x100.png +0 -0
  767. data/templates/jrails-1.4/jquery.ui/black-tie/ui-icons_222222_256x240.png +0 -0
  768. data/templates/jrails-1.4/jquery.ui/black-tie/ui-icons_4ca300_256x240.png +0 -0
  769. data/templates/jrails-1.4/jquery.ui/black-tie/ui-icons_bbbbbb_256x240.png +0 -0
  770. data/templates/jrails-1.4/jquery.ui/black-tie/ui-icons_ededed_256x240.png +0 -0
  771. data/templates/jrails-1.4/jquery.ui/black-tie/ui-icons_ffcf29_256x240.png +0 -0
  772. data/templates/jrails-1.4/jquery.ui/black-tie/ui-icons_ffffff_256x240.png +0 -0
  773. data/templates/jrails-1.4/jquery.ui/black-tie.scss +90 -0
  774. data/templates/jrails-1.4/jquery.ui/blitzer/ui-anim_basic_16x16.gif +0 -0
  775. data/templates/jrails-1.4/jquery.ui/blitzer/ui-bg_diagonals-thick_75_f3d8d8_40x40.png +0 -0
  776. data/templates/jrails-1.4/jquery.ui/blitzer/ui-bg_dots-small_65_a6a6a6_2x2.png +0 -0
  777. data/templates/jrails-1.4/jquery.ui/blitzer/ui-bg_flat_0_333333_40x100.png +0 -0
  778. data/templates/jrails-1.4/jquery.ui/blitzer/ui-bg_flat_65_ffffff_40x100.png +0 -0
  779. data/templates/jrails-1.4/jquery.ui/blitzer/ui-bg_flat_75_ffffff_40x100.png +0 -0
  780. data/templates/jrails-1.4/jquery.ui/blitzer/ui-bg_glass_55_fbf8ee_1x400.png +0 -0
  781. data/templates/jrails-1.4/jquery.ui/blitzer/ui-bg_highlight-hard_100_eeeeee_1x100.png +0 -0
  782. data/templates/jrails-1.4/jquery.ui/blitzer/ui-bg_highlight-hard_100_f6f6f6_1x100.png +0 -0
  783. data/templates/jrails-1.4/jquery.ui/blitzer/ui-bg_highlight-soft_15_cc0000_1x100.png +0 -0
  784. data/templates/jrails-1.4/jquery.ui/blitzer/ui-icons_004276_256x240.png +0 -0
  785. data/templates/jrails-1.4/jquery.ui/blitzer/ui-icons_cc0000_256x240.png +0 -0
  786. data/templates/jrails-1.4/jquery.ui/blitzer/ui-icons_ffffff_256x240.png +0 -0
  787. data/templates/jrails-1.4/jquery.ui/blitzer.scss +90 -0
  788. data/templates/jrails-1.4/jquery.ui/contextMenu/cut.png +0 -0
  789. data/templates/jrails-1.4/jquery.ui/contextMenu/door.png +0 -0
  790. data/templates/jrails-1.4/jquery.ui/contextMenu/page_white_copy.png +0 -0
  791. data/templates/jrails-1.4/jquery.ui/contextMenu/page_white_delete.png +0 -0
  792. data/templates/jrails-1.4/jquery.ui/contextMenu/page_white_edit.png +0 -0
  793. data/templates/jrails-1.4/jquery.ui/contextMenu/page_white_paste.png +0 -0
  794. data/templates/jrails-1.4/jquery.ui/contextMenu.scss +49 -0
  795. data/templates/jrails-1.4/jquery.ui/cupertino/ui-anim_basic_16x16.gif +0 -0
  796. data/templates/jrails-1.4/jquery.ui/cupertino/ui-bg_diagonals-thick_90_eeeeee_40x40.png +0 -0
  797. data/templates/jrails-1.4/jquery.ui/cupertino/ui-bg_flat_15_cd0a0a_40x100.png +0 -0
  798. data/templates/jrails-1.4/jquery.ui/cupertino/ui-bg_glass_100_e4f1fb_1x400.png +0 -0
  799. data/templates/jrails-1.4/jquery.ui/cupertino/ui-bg_glass_50_3baae3_1x400.png +0 -0
  800. data/templates/jrails-1.4/jquery.ui/cupertino/ui-bg_glass_80_d7ebf9_1x400.png +0 -0
  801. data/templates/jrails-1.4/jquery.ui/cupertino/ui-bg_highlight-hard_100_f2f5f7_1x100.png +0 -0
  802. data/templates/jrails-1.4/jquery.ui/cupertino/ui-bg_highlight-hard_70_000000_1x100.png +0 -0
  803. data/templates/jrails-1.4/jquery.ui/cupertino/ui-bg_highlight-soft_100_deedf7_1x100.png +0 -0
  804. data/templates/jrails-1.4/jquery.ui/cupertino/ui-bg_highlight-soft_25_ffef8f_1x100.png +0 -0
  805. data/templates/jrails-1.4/jquery.ui/cupertino/ui-icons_2694e8_256x240.png +0 -0
  806. data/templates/jrails-1.4/jquery.ui/cupertino/ui-icons_2e83ff_256x240.png +0 -0
  807. data/templates/jrails-1.4/jquery.ui/cupertino/ui-icons_3d80b3_256x240.png +0 -0
  808. data/templates/jrails-1.4/jquery.ui/cupertino/ui-icons_72a7cf_256x240.png +0 -0
  809. data/templates/jrails-1.4/jquery.ui/cupertino/ui-icons_ffffff_256x240.png +0 -0
  810. data/templates/jrails-1.4/jquery.ui/cupertino.scss +90 -0
  811. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-anim_basic_16x16.gif +0 -0
  812. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-bg_flat_30_cccccc_40x100.png +0 -0
  813. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-bg_flat_50_5c5c5c_40x100.png +0 -0
  814. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-bg_glass_40_ffc73d_1x400.png +0 -0
  815. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-bg_highlight-hard_20_0972a5_1x100.png +0 -0
  816. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-bg_highlight-soft_33_003147_1x100.png +0 -0
  817. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-bg_highlight-soft_35_222222_1x100.png +0 -0
  818. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-bg_highlight-soft_44_444444_1x100.png +0 -0
  819. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-bg_highlight-soft_80_eeeeee_1x100.png +0 -0
  820. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-bg_loop_25_000000_21x21.png +0 -0
  821. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-icons_222222_256x240.png +0 -0
  822. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-icons_4b8e0b_256x240.png +0 -0
  823. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-icons_a83300_256x240.png +0 -0
  824. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-icons_cccccc_256x240.png +0 -0
  825. data/templates/jrails-1.4/jquery.ui/dark-hive/ui-icons_ffffff_256x240.png +0 -0
  826. data/templates/jrails-1.4/jquery.ui/dark-hive.scss +90 -0
  827. data/templates/jrails-1.4/jquery.ui/dot-luv/ui-anim_basic_16x16.gif +0 -0
  828. data/templates/jrails-1.4/jquery.ui/dot-luv/ui-bg_diagonals-thick_15_0b3e6f_40x40.png +0 -0
  829. data/templates/jrails-1.4/jquery.ui/dot-luv/ui-bg_dots-medium_30_0b58a2_4x4.png +0 -0
  830. data/templates/jrails-1.4/jquery.ui/dot-luv/ui-bg_dots-small_20_333333_2x2.png +0 -0
  831. data/templates/jrails-1.4/jquery.ui/dot-luv/ui-bg_dots-small_30_a32d00_2x2.png +0 -0
  832. data/templates/jrails-1.4/jquery.ui/dot-luv/ui-bg_dots-small_40_00498f_2x2.png +0 -0
  833. data/templates/jrails-1.4/jquery.ui/dot-luv/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  834. data/templates/jrails-1.4/jquery.ui/dot-luv/ui-bg_flat_40_292929_40x100.png +0 -0
  835. data/templates/jrails-1.4/jquery.ui/dot-luv/ui-bg_gloss-wave_20_111111_500x100.png +0 -0
  836. data/templates/jrails-1.4/jquery.ui/dot-luv/ui-icons_00498f_256x240.png +0 -0
  837. data/templates/jrails-1.4/jquery.ui/dot-luv/ui-icons_98d2fb_256x240.png +0 -0
  838. data/templates/jrails-1.4/jquery.ui/dot-luv/ui-icons_9ccdfc_256x240.png +0 -0
  839. data/templates/jrails-1.4/jquery.ui/dot-luv/ui-icons_ffffff_256x240.png +0 -0
  840. data/templates/jrails-1.4/jquery.ui/dot-luv.scss +90 -0
  841. data/templates/jrails-1.4/jquery.ui/eggplant/ui-anim_basic_16x16.gif +0 -0
  842. data/templates/jrails-1.4/jquery.ui/eggplant/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  843. data/templates/jrails-1.4/jquery.ui/eggplant/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  844. data/templates/jrails-1.4/jquery.ui/eggplant/ui-bg_flat_55_994d53_40x100.png +0 -0
  845. data/templates/jrails-1.4/jquery.ui/eggplant/ui-bg_flat_55_fafafa_40x100.png +0 -0
  846. data/templates/jrails-1.4/jquery.ui/eggplant/ui-bg_gloss-wave_30_3d3644_500x100.png +0 -0
  847. data/templates/jrails-1.4/jquery.ui/eggplant/ui-bg_highlight-soft_100_dcd9de_1x100.png +0 -0
  848. data/templates/jrails-1.4/jquery.ui/eggplant/ui-bg_highlight-soft_100_eae6ea_1x100.png +0 -0
  849. data/templates/jrails-1.4/jquery.ui/eggplant/ui-bg_highlight-soft_25_30273a_1x100.png +0 -0
  850. data/templates/jrails-1.4/jquery.ui/eggplant/ui-bg_highlight-soft_45_5f5964_1x100.png +0 -0
  851. data/templates/jrails-1.4/jquery.ui/eggplant/ui-icons_454545_256x240.png +0 -0
  852. data/templates/jrails-1.4/jquery.ui/eggplant/ui-icons_734d99_256x240.png +0 -0
  853. data/templates/jrails-1.4/jquery.ui/eggplant/ui-icons_8d78a5_256x240.png +0 -0
  854. data/templates/jrails-1.4/jquery.ui/eggplant/ui-icons_a8a3ae_256x240.png +0 -0
  855. data/templates/jrails-1.4/jquery.ui/eggplant/ui-icons_ebccce_256x240.png +0 -0
  856. data/templates/jrails-1.4/jquery.ui/eggplant/ui-icons_ffffff_256x240.png +0 -0
  857. data/templates/jrails-1.4/jquery.ui/eggplant.scss +90 -0
  858. data/templates/jrails-1.4/jquery.ui/excite-bike/ui-anim_basic_16x16.gif +0 -0
  859. data/templates/jrails-1.4/jquery.ui/excite-bike/ui-bg_diagonals-small_25_c5ddfc_40x40.png +0 -0
  860. data/templates/jrails-1.4/jquery.ui/excite-bike/ui-bg_diagonals-thick_20_e69700_40x40.png +0 -0
  861. data/templates/jrails-1.4/jquery.ui/excite-bike/ui-bg_diagonals-thick_22_1484e6_40x40.png +0 -0
  862. data/templates/jrails-1.4/jquery.ui/excite-bike/ui-bg_diagonals-thick_26_2293f7_40x40.png +0 -0
  863. data/templates/jrails-1.4/jquery.ui/excite-bike/ui-bg_flat_0_e69700_40x100.png +0 -0
  864. data/templates/jrails-1.4/jquery.ui/excite-bike/ui-bg_flat_0_e6b900_40x100.png +0 -0
  865. data/templates/jrails-1.4/jquery.ui/excite-bike/ui-bg_highlight-soft_100_f9f9f9_1x100.png +0 -0
  866. data/templates/jrails-1.4/jquery.ui/excite-bike/ui-bg_inset-hard_100_eeeeee_1x100.png +0 -0
  867. data/templates/jrails-1.4/jquery.ui/excite-bike/ui-icons_0a82eb_256x240.png +0 -0
  868. data/templates/jrails-1.4/jquery.ui/excite-bike/ui-icons_0b54d5_256x240.png +0 -0
  869. data/templates/jrails-1.4/jquery.ui/excite-bike/ui-icons_5fa5e3_256x240.png +0 -0
  870. data/templates/jrails-1.4/jquery.ui/excite-bike/ui-icons_fcdd4a_256x240.png +0 -0
  871. data/templates/jrails-1.4/jquery.ui/excite-bike/ui-icons_ffffff_256x240.png +0 -0
  872. data/templates/jrails-1.4/jquery.ui/excite-bike.scss +90 -0
  873. data/templates/jrails-1.4/jquery.ui/flick/ui-anim_basic_16x16.gif +0 -0
  874. data/templates/jrails-1.4/jquery.ui/flick/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  875. data/templates/jrails-1.4/jquery.ui/flick/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  876. data/templates/jrails-1.4/jquery.ui/flick/ui-bg_flat_55_ffffff_40x100.png +0 -0
  877. data/templates/jrails-1.4/jquery.ui/flick/ui-bg_flat_75_ffffff_40x100.png +0 -0
  878. data/templates/jrails-1.4/jquery.ui/flick/ui-bg_glass_65_ffffff_1x400.png +0 -0
  879. data/templates/jrails-1.4/jquery.ui/flick/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
  880. data/templates/jrails-1.4/jquery.ui/flick/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
  881. data/templates/jrails-1.4/jquery.ui/flick/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
  882. data/templates/jrails-1.4/jquery.ui/flick/ui-icons_0073ea_256x240.png +0 -0
  883. data/templates/jrails-1.4/jquery.ui/flick/ui-icons_454545_256x240.png +0 -0
  884. data/templates/jrails-1.4/jquery.ui/flick/ui-icons_666666_256x240.png +0 -0
  885. data/templates/jrails-1.4/jquery.ui/flick/ui-icons_ff0084_256x240.png +0 -0
  886. data/templates/jrails-1.4/jquery.ui/flick/ui-icons_ffffff_256x240.png +0 -0
  887. data/templates/jrails-1.4/jquery.ui/flick.scss +90 -0
  888. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-anim_basic_16x16.gif +0 -0
  889. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-bg_diagonals-small_40_db4865_40x40.png +0 -0
  890. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-bg_diagonals-small_50_93c3cd_40x40.png +0 -0
  891. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-bg_diagonals-small_50_ff3853_40x40.png +0 -0
  892. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-bg_diagonals-small_75_ccd232_40x40.png +0 -0
  893. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-bg_dots-medium_80_ffff38_4x4.png +0 -0
  894. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-bg_dots-small_35_35414f_2x2.png +0 -0
  895. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-bg_flat_75_ba9217_40x100.png +0 -0
  896. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-bg_flat_75_ffffff_40x100.png +0 -0
  897. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-bg_white-lines_85_f7f7ba_40x100.png +0 -0
  898. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-icons_454545_256x240.png +0 -0
  899. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-icons_88a206_256x240.png +0 -0
  900. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-icons_c02669_256x240.png +0 -0
  901. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-icons_e1e463_256x240.png +0 -0
  902. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-icons_ffeb33_256x240.png +0 -0
  903. data/templates/jrails-1.4/jquery.ui/hot-sneaks/ui-icons_ffffff_256x240.png +0 -0
  904. data/templates/jrails-1.4/jquery.ui/hot-sneaks.scss +90 -0
  905. data/templates/jrails-1.4/jquery.ui/humanity/ui-anim_basic_16x16.gif +0 -0
  906. data/templates/jrails-1.4/jquery.ui/humanity/ui-bg_flat_75_aaaaaa_40x100.png +0 -0
  907. data/templates/jrails-1.4/jquery.ui/humanity/ui-bg_glass_100_f5f0e5_1x400.png +0 -0
  908. data/templates/jrails-1.4/jquery.ui/humanity/ui-bg_glass_25_cb842e_1x400.png +0 -0
  909. data/templates/jrails-1.4/jquery.ui/humanity/ui-bg_glass_70_ede4d4_1x400.png +0 -0
  910. data/templates/jrails-1.4/jquery.ui/humanity/ui-bg_highlight-hard_100_f4f0ec_1x100.png +0 -0
  911. data/templates/jrails-1.4/jquery.ui/humanity/ui-bg_highlight-hard_65_fee4bd_1x100.png +0 -0
  912. data/templates/jrails-1.4/jquery.ui/humanity/ui-bg_highlight-hard_75_f5f5b5_1x100.png +0 -0
  913. data/templates/jrails-1.4/jquery.ui/humanity/ui-bg_inset-soft_100_f4f0ec_1x100.png +0 -0
  914. data/templates/jrails-1.4/jquery.ui/humanity/ui-icons_c47a23_256x240.png +0 -0
  915. data/templates/jrails-1.4/jquery.ui/humanity/ui-icons_cb672b_256x240.png +0 -0
  916. data/templates/jrails-1.4/jquery.ui/humanity/ui-icons_f08000_256x240.png +0 -0
  917. data/templates/jrails-1.4/jquery.ui/humanity/ui-icons_f35f07_256x240.png +0 -0
  918. data/templates/jrails-1.4/jquery.ui/humanity/ui-icons_ff7519_256x240.png +0 -0
  919. data/templates/jrails-1.4/jquery.ui/humanity/ui-icons_ffffff_256x240.png +0 -0
  920. data/templates/jrails-1.4/jquery.ui/humanity.scss +90 -0
  921. data/templates/jrails-1.4/jquery.ui/le-frog/ui-anim_basic_16x16.gif +0 -0
  922. data/templates/jrails-1.4/jquery.ui/le-frog/ui-bg_diagonals-small_0_aaaaaa_40x40.png +0 -0
  923. data/templates/jrails-1.4/jquery.ui/le-frog/ui-bg_diagonals-thick_15_444444_40x40.png +0 -0
  924. data/templates/jrails-1.4/jquery.ui/le-frog/ui-bg_diagonals-thick_95_ffdc2e_40x40.png +0 -0
  925. data/templates/jrails-1.4/jquery.ui/le-frog/ui-bg_glass_55_fbf5d0_1x400.png +0 -0
  926. data/templates/jrails-1.4/jquery.ui/le-frog/ui-bg_highlight-hard_30_285c00_1x100.png +0 -0
  927. data/templates/jrails-1.4/jquery.ui/le-frog/ui-bg_highlight-soft_33_3a8104_1x100.png +0 -0
  928. data/templates/jrails-1.4/jquery.ui/le-frog/ui-bg_highlight-soft_50_4eb305_1x100.png +0 -0
  929. data/templates/jrails-1.4/jquery.ui/le-frog/ui-bg_highlight-soft_60_4ca20b_1x100.png +0 -0
  930. data/templates/jrails-1.4/jquery.ui/le-frog/ui-bg_inset-soft_10_285c00_1x100.png +0 -0
  931. data/templates/jrails-1.4/jquery.ui/le-frog/ui-icons_4eb305_256x240.png +0 -0
  932. data/templates/jrails-1.4/jquery.ui/le-frog/ui-icons_72b42d_256x240.png +0 -0
  933. data/templates/jrails-1.4/jquery.ui/le-frog/ui-icons_cd0a0a_256x240.png +0 -0
  934. data/templates/jrails-1.4/jquery.ui/le-frog/ui-icons_ffffff_256x240.png +0 -0
  935. data/templates/jrails-1.4/jquery.ui/le-frog.scss +90 -0
  936. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-anim_basic_16x16.gif +0 -0
  937. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  938. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-bg_glass_15_5f391b_1x400.png +0 -0
  939. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-bg_gloss-wave_20_1c160d_500x100.png +0 -0
  940. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-bg_gloss-wave_25_453326_500x100.png +0 -0
  941. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-bg_gloss-wave_30_44372c_500x100.png +0 -0
  942. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-bg_highlight-soft_20_201913_1x100.png +0 -0
  943. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-bg_highlight-soft_20_619226_1x100.png +0 -0
  944. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-bg_inset-soft_10_201913_1x100.png +0 -0
  945. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-icons_222222_256x240.png +0 -0
  946. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-icons_9bcc60_256x240.png +0 -0
  947. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-icons_add978_256x240.png +0 -0
  948. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-icons_e3ddc9_256x240.png +0 -0
  949. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-icons_f1fd86_256x240.png +0 -0
  950. data/templates/jrails-1.4/jquery.ui/mint-choc/ui-icons_ffffff_256x240.png +0 -0
  951. data/templates/jrails-1.4/jquery.ui/mint-choc.scss +90 -0
  952. data/templates/jrails-1.4/jquery.ui/overcast/ui-anim_basic_16x16.gif +0 -0
  953. data/templates/jrails-1.4/jquery.ui/overcast/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  954. data/templates/jrails-1.4/jquery.ui/overcast/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  955. data/templates/jrails-1.4/jquery.ui/overcast/ui-bg_flat_55_c0402a_40x100.png +0 -0
  956. data/templates/jrails-1.4/jquery.ui/overcast/ui-bg_flat_55_eeeeee_40x100.png +0 -0
  957. data/templates/jrails-1.4/jquery.ui/overcast/ui-bg_glass_100_f8f8f8_1x400.png +0 -0
  958. data/templates/jrails-1.4/jquery.ui/overcast/ui-bg_glass_35_dddddd_1x400.png +0 -0
  959. data/templates/jrails-1.4/jquery.ui/overcast/ui-bg_glass_60_eeeeee_1x400.png +0 -0
  960. data/templates/jrails-1.4/jquery.ui/overcast/ui-bg_inset-hard_75_999999_1x100.png +0 -0
  961. data/templates/jrails-1.4/jquery.ui/overcast/ui-bg_inset-soft_50_c9c9c9_1x100.png +0 -0
  962. data/templates/jrails-1.4/jquery.ui/overcast/ui-icons_3383bb_256x240.png +0 -0
  963. data/templates/jrails-1.4/jquery.ui/overcast/ui-icons_454545_256x240.png +0 -0
  964. data/templates/jrails-1.4/jquery.ui/overcast/ui-icons_70b2e1_256x240.png +0 -0
  965. data/templates/jrails-1.4/jquery.ui/overcast/ui-icons_999999_256x240.png +0 -0
  966. data/templates/jrails-1.4/jquery.ui/overcast/ui-icons_fbc856_256x240.png +0 -0
  967. data/templates/jrails-1.4/jquery.ui/overcast.scss +90 -0
  968. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-anim_basic_16x16.gif +0 -0
  969. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-bg_diagonal-maze_20_6e4f1c_10x10.png +0 -0
  970. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-bg_diagonal-maze_40_000000_10x10.png +0 -0
  971. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-bg_fine-grain_10_eceadf_60x60.png +0 -0
  972. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-bg_fine-grain_10_f8f7f6_60x60.png +0 -0
  973. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-bg_fine-grain_15_eceadf_60x60.png +0 -0
  974. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-bg_fine-grain_15_f7f3de_60x60.png +0 -0
  975. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-bg_fine-grain_15_ffffff_60x60.png +0 -0
  976. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-bg_fine-grain_65_654b24_60x60.png +0 -0
  977. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-bg_fine-grain_68_b83400_60x60.png +0 -0
  978. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-icons_222222_256x240.png +0 -0
  979. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-icons_3572ac_256x240.png +0 -0
  980. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-icons_8c291d_256x240.png +0 -0
  981. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-icons_b83400_256x240.png +0 -0
  982. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-icons_fbdb93_256x240.png +0 -0
  983. data/templates/jrails-1.4/jquery.ui/pepper-grinder/ui-icons_ffffff_256x240.png +0 -0
  984. data/templates/jrails-1.4/jquery.ui/pepper-grinder.scss +90 -0
  985. data/templates/jrails-1.4/jquery.ui/redmond/ui-anim_basic_16x16.gif +0 -0
  986. data/templates/jrails-1.4/jquery.ui/redmond/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  987. data/templates/jrails-1.4/jquery.ui/redmond/ui-bg_flat_55_fbec88_40x100.png +0 -0
  988. data/templates/jrails-1.4/jquery.ui/redmond/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  989. data/templates/jrails-1.4/jquery.ui/redmond/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  990. data/templates/jrails-1.4/jquery.ui/redmond/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  991. data/templates/jrails-1.4/jquery.ui/redmond/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  992. data/templates/jrails-1.4/jquery.ui/redmond/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  993. data/templates/jrails-1.4/jquery.ui/redmond/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  994. data/templates/jrails-1.4/jquery.ui/redmond/ui-icons_217bc0_256x240.png +0 -0
  995. data/templates/jrails-1.4/jquery.ui/redmond/ui-icons_2e83ff_256x240.png +0 -0
  996. data/templates/jrails-1.4/jquery.ui/redmond/ui-icons_469bdd_256x240.png +0 -0
  997. data/templates/jrails-1.4/jquery.ui/redmond/ui-icons_6da8d5_256x240.png +0 -0
  998. data/templates/jrails-1.4/jquery.ui/redmond/ui-icons_cd0a0a_256x240.png +0 -0
  999. data/templates/jrails-1.4/jquery.ui/redmond/ui-icons_d8e7f3_256x240.png +0 -0
  1000. data/templates/jrails-1.4/jquery.ui/redmond/ui-icons_f9bd01_256x240.png +0 -0
  1001. data/templates/jrails-1.4/jquery.ui/redmond.scss +90 -0
  1002. data/templates/jrails-1.4/jquery.ui/smoothness/ui-anim_basic_16x16.gif +0 -0
  1003. data/templates/jrails-1.4/jquery.ui/smoothness/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  1004. data/templates/jrails-1.4/jquery.ui/smoothness/ui-bg_flat_75_ffffff_40x100.png +0 -0
  1005. data/templates/jrails-1.4/jquery.ui/smoothness/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  1006. data/templates/jrails-1.4/jquery.ui/smoothness/ui-bg_glass_65_ffffff_1x400.png +0 -0
  1007. data/templates/jrails-1.4/jquery.ui/smoothness/ui-bg_glass_75_dadada_1x400.png +0 -0
  1008. data/templates/jrails-1.4/jquery.ui/smoothness/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  1009. data/templates/jrails-1.4/jquery.ui/smoothness/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  1010. data/templates/jrails-1.4/jquery.ui/smoothness/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  1011. data/templates/jrails-1.4/jquery.ui/smoothness/ui-icons_222222_256x240.png +0 -0
  1012. data/templates/jrails-1.4/jquery.ui/smoothness/ui-icons_2e83ff_256x240.png +0 -0
  1013. data/templates/jrails-1.4/jquery.ui/smoothness/ui-icons_454545_256x240.png +0 -0
  1014. data/templates/jrails-1.4/jquery.ui/smoothness/ui-icons_888888_256x240.png +0 -0
  1015. data/templates/jrails-1.4/jquery.ui/smoothness/ui-icons_cd0a0a_256x240.png +0 -0
  1016. data/templates/jrails-1.4/jquery.ui/smoothness.scss +90 -0
  1017. data/templates/jrails-1.4/jquery.ui/south-street/ui-anim_basic_16x16.gif +0 -0
  1018. data/templates/jrails-1.4/jquery.ui/south-street/ui-bg_glass_55_fcf0ba_1x400.png +0 -0
  1019. data/templates/jrails-1.4/jquery.ui/south-street/ui-bg_gloss-wave_100_ece8da_500x100.png +0 -0
  1020. data/templates/jrails-1.4/jquery.ui/south-street/ui-bg_highlight-hard_100_f5f3e5_1x100.png +0 -0
  1021. data/templates/jrails-1.4/jquery.ui/south-street/ui-bg_highlight-hard_100_fafaf4_1x100.png +0 -0
  1022. data/templates/jrails-1.4/jquery.ui/south-street/ui-bg_highlight-hard_15_459e00_1x100.png +0 -0
  1023. data/templates/jrails-1.4/jquery.ui/south-street/ui-bg_highlight-hard_95_cccccc_1x100.png +0 -0
  1024. data/templates/jrails-1.4/jquery.ui/south-street/ui-bg_highlight-soft_25_67b021_1x100.png +0 -0
  1025. data/templates/jrails-1.4/jquery.ui/south-street/ui-bg_highlight-soft_95_ffedad_1x100.png +0 -0
  1026. data/templates/jrails-1.4/jquery.ui/south-street/ui-bg_inset-soft_15_2b2922_1x100.png +0 -0
  1027. data/templates/jrails-1.4/jquery.ui/south-street/ui-icons_808080_256x240.png +0 -0
  1028. data/templates/jrails-1.4/jquery.ui/south-street/ui-icons_847e71_256x240.png +0 -0
  1029. data/templates/jrails-1.4/jquery.ui/south-street/ui-icons_8dc262_256x240.png +0 -0
  1030. data/templates/jrails-1.4/jquery.ui/south-street/ui-icons_cd0a0a_256x240.png +0 -0
  1031. data/templates/jrails-1.4/jquery.ui/south-street/ui-icons_eeeeee_256x240.png +0 -0
  1032. data/templates/jrails-1.4/jquery.ui/south-street/ui-icons_ffffff_256x240.png +0 -0
  1033. data/templates/jrails-1.4/jquery.ui/south-street.scss +90 -0
  1034. data/templates/jrails-1.4/jquery.ui/start/ui-anim_basic_16x16.gif +0 -0
  1035. data/templates/jrails-1.4/jquery.ui/start/ui-bg_flat_55_999999_40x100.png +0 -0
  1036. data/templates/jrails-1.4/jquery.ui/start/ui-bg_flat_75_aaaaaa_40x100.png +0 -0
  1037. data/templates/jrails-1.4/jquery.ui/start/ui-bg_glass_45_0078ae_1x400.png +0 -0
  1038. data/templates/jrails-1.4/jquery.ui/start/ui-bg_glass_55_f8da4e_1x400.png +0 -0
  1039. data/templates/jrails-1.4/jquery.ui/start/ui-bg_glass_75_79c9ec_1x400.png +0 -0
  1040. data/templates/jrails-1.4/jquery.ui/start/ui-bg_gloss-wave_45_e14f1c_500x100.png +0 -0
  1041. data/templates/jrails-1.4/jquery.ui/start/ui-bg_gloss-wave_50_6eac2c_500x100.png +0 -0
  1042. data/templates/jrails-1.4/jquery.ui/start/ui-bg_gloss-wave_75_2191c0_500x100.png +0 -0
  1043. data/templates/jrails-1.4/jquery.ui/start/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  1044. data/templates/jrails-1.4/jquery.ui/start/ui-icons_0078ae_256x240.png +0 -0
  1045. data/templates/jrails-1.4/jquery.ui/start/ui-icons_056b93_256x240.png +0 -0
  1046. data/templates/jrails-1.4/jquery.ui/start/ui-icons_d8e7f3_256x240.png +0 -0
  1047. data/templates/jrails-1.4/jquery.ui/start/ui-icons_e0fdff_256x240.png +0 -0
  1048. data/templates/jrails-1.4/jquery.ui/start/ui-icons_f5e175_256x240.png +0 -0
  1049. data/templates/jrails-1.4/jquery.ui/start/ui-icons_f7a50d_256x240.png +0 -0
  1050. data/templates/jrails-1.4/jquery.ui/start/ui-icons_fcd113_256x240.png +0 -0
  1051. data/templates/jrails-1.4/jquery.ui/start.scss +90 -0
  1052. data/templates/jrails-1.4/jquery.ui/sunny/ui-anim_basic_16x16.gif +0 -0
  1053. data/templates/jrails-1.4/jquery.ui/sunny/ui-bg_diagonals-medium_20_d34d17_40x40.png +0 -0
  1054. data/templates/jrails-1.4/jquery.ui/sunny/ui-bg_flat_30_cccccc_40x100.png +0 -0
  1055. data/templates/jrails-1.4/jquery.ui/sunny/ui-bg_flat_50_5c5c5c_40x100.png +0 -0
  1056. data/templates/jrails-1.4/jquery.ui/sunny/ui-bg_gloss-wave_45_817865_500x100.png +0 -0
  1057. data/templates/jrails-1.4/jquery.ui/sunny/ui-bg_gloss-wave_60_fece2f_500x100.png +0 -0
  1058. data/templates/jrails-1.4/jquery.ui/sunny/ui-bg_gloss-wave_70_ffdd57_500x100.png +0 -0
  1059. data/templates/jrails-1.4/jquery.ui/sunny/ui-bg_gloss-wave_90_fff9e5_500x100.png +0 -0
  1060. data/templates/jrails-1.4/jquery.ui/sunny/ui-bg_highlight-soft_100_feeebd_1x100.png +0 -0
  1061. data/templates/jrails-1.4/jquery.ui/sunny/ui-bg_inset-soft_30_ffffff_1x100.png +0 -0
  1062. data/templates/jrails-1.4/jquery.ui/sunny/ui-icons_3d3d3d_256x240.png +0 -0
  1063. data/templates/jrails-1.4/jquery.ui/sunny/ui-icons_bd7b00_256x240.png +0 -0
  1064. data/templates/jrails-1.4/jquery.ui/sunny/ui-icons_d19405_256x240.png +0 -0
  1065. data/templates/jrails-1.4/jquery.ui/sunny/ui-icons_eb990f_256x240.png +0 -0
  1066. data/templates/jrails-1.4/jquery.ui/sunny/ui-icons_ed9f26_256x240.png +0 -0
  1067. data/templates/jrails-1.4/jquery.ui/sunny/ui-icons_fadc7a_256x240.png +0 -0
  1068. data/templates/jrails-1.4/jquery.ui/sunny/ui-icons_ffe180_256x240.png +0 -0
  1069. data/templates/jrails-1.4/jquery.ui/sunny.scss +90 -0
  1070. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-anim_basic_16x16.gif +0 -0
  1071. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-bg_diamond_10_4f4221_10x8.png +0 -0
  1072. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-bg_diamond_20_372806_10x8.png +0 -0
  1073. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-bg_diamond_25_675423_10x8.png +0 -0
  1074. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-bg_diamond_25_d5ac5d_10x8.png +0 -0
  1075. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-bg_diamond_8_261803_10x8.png +0 -0
  1076. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-bg_diamond_8_443113_10x8.png +0 -0
  1077. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-bg_flat_75_ddd4b0_40x100.png +0 -0
  1078. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-bg_highlight-hard_65_fee4bd_1x100.png +0 -0
  1079. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-icons_070603_256x240.png +0 -0
  1080. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-icons_e8e2b5_256x240.png +0 -0
  1081. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-icons_e9cd86_256x240.png +0 -0
  1082. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-icons_efec9f_256x240.png +0 -0
  1083. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-icons_f2ec64_256x240.png +0 -0
  1084. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-icons_f9f2bd_256x240.png +0 -0
  1085. data/templates/jrails-1.4/jquery.ui/swanky-purse/ui-icons_ff7519_256x240.png +0 -0
  1086. data/templates/jrails-1.4/jquery.ui/swanky-purse.scss +90 -0
  1087. data/templates/jrails-1.4/jquery.ui/themeSwitcher/buttonbg.png +0 -0
  1088. data/templates/jrails-1.4/jquery.ui/themeSwitcher/icon_color_arrow.gif +0 -0
  1089. data/templates/jrails-1.4/jquery.ui/themeSwitcher/menuhoverbg.png +0 -0
  1090. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_black_matte.png +0 -0
  1091. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_black_tie.png +0 -0
  1092. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_blitzer.png +0 -0
  1093. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_cupertino.png +0 -0
  1094. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_dark_hive.png +0 -0
  1095. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_dot_luv.png +0 -0
  1096. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_eggplant.png +0 -0
  1097. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_excite_bike.png +0 -0
  1098. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_flick.png +0 -0
  1099. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_hot_sneaks.png +0 -0
  1100. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_humanity.png +0 -0
  1101. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_le_frog.png +0 -0
  1102. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_mint_choco.png +0 -0
  1103. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_overcast.png +0 -0
  1104. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_pepper_grinder.png +0 -0
  1105. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_smoothness.png +0 -0
  1106. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_south_street.png +0 -0
  1107. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_start_menu.png +0 -0
  1108. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_sunny.png +0 -0
  1109. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_swanky_purse.png +0 -0
  1110. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_trontastic.png +0 -0
  1111. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_ui_dark.png +0 -0
  1112. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_ui_light.png +0 -0
  1113. data/templates/jrails-1.4/jquery.ui/themeSwitcher/theme_90_windoze.png +0 -0
  1114. data/templates/jrails-1.4/jquery.ui/trontastic/ui-anim_basic_16x16.gif +0 -0
  1115. data/templates/jrails-1.4/jquery.ui/trontastic/ui-bg_diagonals-small_50_262626_40x40.png +0 -0
  1116. data/templates/jrails-1.4/jquery.ui/trontastic/ui-bg_flat_0_303030_40x100.png +0 -0
  1117. data/templates/jrails-1.4/jquery.ui/trontastic/ui-bg_flat_0_4c4c4c_40x100.png +0 -0
  1118. data/templates/jrails-1.4/jquery.ui/trontastic/ui-bg_glass_40_0a0a0a_1x400.png +0 -0
  1119. data/templates/jrails-1.4/jquery.ui/trontastic/ui-bg_glass_55_f1fbe5_1x400.png +0 -0
  1120. data/templates/jrails-1.4/jquery.ui/trontastic/ui-bg_glass_60_000000_1x400.png +0 -0
  1121. data/templates/jrails-1.4/jquery.ui/trontastic/ui-bg_gloss-wave_55_000000_500x100.png +0 -0
  1122. data/templates/jrails-1.4/jquery.ui/trontastic/ui-bg_gloss-wave_85_9fda58_500x100.png +0 -0
  1123. data/templates/jrails-1.4/jquery.ui/trontastic/ui-bg_gloss-wave_95_f6ecd5_500x100.png +0 -0
  1124. data/templates/jrails-1.4/jquery.ui/trontastic/ui-icons_000000_256x240.png +0 -0
  1125. data/templates/jrails-1.4/jquery.ui/trontastic/ui-icons_1f1f1f_256x240.png +0 -0
  1126. data/templates/jrails-1.4/jquery.ui/trontastic/ui-icons_9fda58_256x240.png +0 -0
  1127. data/templates/jrails-1.4/jquery.ui/trontastic/ui-icons_b8ec79_256x240.png +0 -0
  1128. data/templates/jrails-1.4/jquery.ui/trontastic/ui-icons_cd0a0a_256x240.png +0 -0
  1129. data/templates/jrails-1.4/jquery.ui/trontastic/ui-icons_ffffff_256x240.png +0 -0
  1130. data/templates/jrails-1.4/jquery.ui/trontastic.scss +90 -0
  1131. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-anim_basic_16x16.gif +0 -0
  1132. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-bg_flat_30_cccccc_40x100.png +0 -0
  1133. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-bg_flat_50_5c5c5c_40x100.png +0 -0
  1134. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-bg_glass_20_555555_1x400.png +0 -0
  1135. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-bg_glass_40_0078a3_1x400.png +0 -0
  1136. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-bg_glass_40_ffc73d_1x400.png +0 -0
  1137. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-bg_gloss-wave_25_333333_500x100.png +0 -0
  1138. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-bg_highlight-soft_80_eeeeee_1x100.png +0 -0
  1139. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-bg_inset-soft_25_000000_1x100.png +0 -0
  1140. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-bg_inset-soft_30_f58400_1x100.png +0 -0
  1141. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-icons_222222_256x240.png +0 -0
  1142. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-icons_4b8e0b_256x240.png +0 -0
  1143. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-icons_a83300_256x240.png +0 -0
  1144. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-icons_cccccc_256x240.png +0 -0
  1145. data/templates/jrails-1.4/jquery.ui/ui-darkness/ui-icons_ffffff_256x240.png +0 -0
  1146. data/templates/jrails-1.4/jquery.ui/ui-darkness.scss +90 -0
  1147. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-anim_basic_16x16.gif +0 -0
  1148. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  1149. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  1150. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-bg_flat_10_000000_40x100.png +0 -0
  1151. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  1152. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  1153. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-bg_glass_65_ffffff_1x400.png +0 -0
  1154. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  1155. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  1156. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  1157. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-icons_222222_256x240.png +0 -0
  1158. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-icons_228ef1_256x240.png +0 -0
  1159. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-icons_ef8c08_256x240.png +0 -0
  1160. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-icons_ffd27a_256x240.png +0 -0
  1161. data/templates/jrails-1.4/jquery.ui/ui-lightness/ui-icons_ffffff_256x240.png +0 -0
  1162. data/templates/jrails-1.4/jquery.ui/ui-lightness.scss +90 -0
  1163. data/templates/jrails-1.4/jquery.ui/vader/ui-anim_basic_16x16.gif +0 -0
  1164. data/templates/jrails-1.4/jquery.ui/vader/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  1165. data/templates/jrails-1.4/jquery.ui/vader/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  1166. data/templates/jrails-1.4/jquery.ui/vader/ui-bg_gloss-wave_16_121212_500x100.png +0 -0
  1167. data/templates/jrails-1.4/jquery.ui/vader/ui-bg_highlight-hard_15_888888_1x100.png +0 -0
  1168. data/templates/jrails-1.4/jquery.ui/vader/ui-bg_highlight-hard_55_555555_1x100.png +0 -0
  1169. data/templates/jrails-1.4/jquery.ui/vader/ui-bg_highlight-soft_35_adadad_1x100.png +0 -0
  1170. data/templates/jrails-1.4/jquery.ui/vader/ui-bg_highlight-soft_60_dddddd_1x100.png +0 -0
  1171. data/templates/jrails-1.4/jquery.ui/vader/ui-bg_inset-soft_15_121212_1x100.png +0 -0
  1172. data/templates/jrails-1.4/jquery.ui/vader/ui-icons_666666_256x240.png +0 -0
  1173. data/templates/jrails-1.4/jquery.ui/vader/ui-icons_aaaaaa_256x240.png +0 -0
  1174. data/templates/jrails-1.4/jquery.ui/vader/ui-icons_bbbbbb_256x240.png +0 -0
  1175. data/templates/jrails-1.4/jquery.ui/vader/ui-icons_c98000_256x240.png +0 -0
  1176. data/templates/jrails-1.4/jquery.ui/vader/ui-icons_cccccc_256x240.png +0 -0
  1177. data/templates/jrails-1.4/jquery.ui/vader/ui-icons_cd0a0a_256x240.png +0 -0
  1178. data/templates/jrails-1.4/jquery.ui/vader/ui-icons_f29a00_256x240.png +0 -0
  1179. data/templates/jrails-1.4/jquery.ui/vader.scss +90 -0
  1180. data/templates/jrails-1.4/jrails.js +197 -0
  1181. data/templates/jrails-1.4/jrails.min.js +8 -0
  1182. data/templates/jrails-1.4/manifest.rb +568 -0
  1183. data/templates/ribbon/config/initializers/ribbon.rb +3 -0
  1184. data/templates/ribbon/jquery.ribbon.js +226 -0
  1185. data/templates/ribbon/jquery.ribbon.min.js +14 -0
  1186. data/templates/ribbon/jquery.ui/ribbon.simple/arrow.png +0 -0
  1187. data/templates/ribbon/jquery.ui/ribbon.simple/arrow_down.png +0 -0
  1188. data/templates/ribbon/jquery.ui/ribbon.simple/bg.png +0 -0
  1189. data/templates/ribbon/jquery.ui/ribbon.simple/item_background.png +0 -0
  1190. data/templates/ribbon/jquery.ui/ribbon.simple/item_small_background.png +0 -0
  1191. data/templates/ribbon/jquery.ui/ribbon.simple/menu_background.png +0 -0
  1192. data/templates/ribbon/jquery.ui/ribbon.simple/menu_bottom.png +0 -0
  1193. data/templates/ribbon/jquery.ui/ribbon.simple/menu_dropdownitembg.png +0 -0
  1194. data/templates/ribbon/jquery.ui/ribbon.simple/menu_dropdownitembghover.png +0 -0
  1195. data/templates/ribbon/jquery.ui/ribbon.simple/menu_item_hover.png +0 -0
  1196. data/templates/ribbon/jquery.ui/ribbon.simple/menu_middle.png +0 -0
  1197. data/templates/ribbon/jquery.ui/ribbon.simple/menu_top.png +0 -0
  1198. data/templates/ribbon/jquery.ui/ribbon.simple/menuitem_background.png +0 -0
  1199. data/templates/ribbon/jquery.ui/ribbon.simple/orb.png +0 -0
  1200. data/templates/ribbon/jquery.ui/ribbon.simple/orb_hover.png +0 -0
  1201. data/templates/ribbon/jquery.ui/ribbon.simple/orb_submenu_item_hover.png +0 -0
  1202. data/templates/ribbon/jquery.ui/ribbon.simple/top_background.png +0 -0
  1203. data/templates/ribbon/jquery.ui/ribbon.simple.scss +271 -0
  1204. data/templates/ribbon/jquery.ui/ribbon.windows7/arrow.png +0 -0
  1205. data/templates/ribbon/jquery.ui/ribbon.windows7/arrow_down.png +0 -0
  1206. data/templates/ribbon/jquery.ui/ribbon.windows7/bg.png +0 -0
  1207. data/templates/ribbon/jquery.ui/ribbon.windows7/item_background.png +0 -0
  1208. data/templates/ribbon/jquery.ui/ribbon.windows7/item_small_background.png +0 -0
  1209. data/templates/ribbon/jquery.ui/ribbon.windows7/menu_background.png +0 -0
  1210. data/templates/ribbon/jquery.ui/ribbon.windows7/menu_bottom.png +0 -0
  1211. data/templates/ribbon/jquery.ui/ribbon.windows7/menu_dropdownitembg.png +0 -0
  1212. data/templates/ribbon/jquery.ui/ribbon.windows7/menu_dropdownitembghover.png +0 -0
  1213. data/templates/ribbon/jquery.ui/ribbon.windows7/menu_item_hover.png +0 -0
  1214. data/templates/ribbon/jquery.ui/ribbon.windows7/menu_middle.png +0 -0
  1215. data/templates/ribbon/jquery.ui/ribbon.windows7/menu_top.png +0 -0
  1216. data/templates/ribbon/jquery.ui/ribbon.windows7/menu_top_backstage.png +0 -0
  1217. data/templates/ribbon/jquery.ui/ribbon.windows7/menu_top_backstage2.png +0 -0
  1218. data/templates/ribbon/jquery.ui/ribbon.windows7/menuitem_background.png +0 -0
  1219. data/templates/ribbon/jquery.ui/ribbon.windows7/orb.png +0 -0
  1220. data/templates/ribbon/jquery.ui/ribbon.windows7/orb_hover.png +0 -0
  1221. data/templates/ribbon/jquery.ui/ribbon.windows7/orb_office.png +0 -0
  1222. data/templates/ribbon/jquery.ui/ribbon.windows7/orb_office_hover.png +0 -0
  1223. data/templates/ribbon/jquery.ui/ribbon.windows7/orb_submenu_item_hover.png +0 -0
  1224. data/templates/ribbon/jquery.ui/ribbon.windows7/ribbon-backstage-firstLevel-hover.png +0 -0
  1225. data/templates/ribbon/jquery.ui/ribbon.windows7/ribbon-backstage-rightColumn-wide.png +0 -0
  1226. data/templates/ribbon/jquery.ui/ribbon.windows7/ribbon-backstage-subMenu-item-hover.png +0 -0
  1227. data/templates/ribbon/jquery.ui/ribbon.windows7/ribbon-backstage-subMenu-item.png +0 -0
  1228. data/templates/ribbon/jquery.ui/ribbon.windows7/ribbon-backstage-subMenu-itemSquare-hover.png +0 -0
  1229. data/templates/ribbon/jquery.ui/ribbon.windows7/ribbon-backstage-subMenu-itemSquare.png +0 -0
  1230. data/templates/ribbon/jquery.ui/ribbon.windows7/top_background.png +0 -0
  1231. data/templates/ribbon/jquery.ui/ribbon.windows7.scss +454 -0
  1232. data/templates/ribbon/manifest.rb +52 -0
  1233. data/templates/secret_sauce/app/views/ui/_ui_grid_for_without_block.js.haml +144 -139
  1234. data/templates/secret_sauce/config/initializers/secret_sauce.rb +6 -7
  1235. data/templates/secret_sauce/jquery.ui/secret_sauce.scss +33 -0
  1236. data/templates/secret_sauce/manifest.rb +10 -10
  1237. data/templates/secret_sauce/secret_sauce.js +11 -11
  1238. data/templates/secret_sauce/secret_sauce.min.js +1 -1
  1239. metadata +1188 -522
  1240. data/gem_tasks/calendar.rake +0 -76
  1241. data/lib/jquery/jqgrid/jqgrid2xml.rb +0 -50
  1242. data/lib/jquery/secret_sauce/helpers/ui_theme_helper.rb +0 -16
  1243. data/templates/calendar/config/initializers/calendar.rb +0 -3
  1244. data/templates/calendar/jquery.calendar.js +0 -2047
  1245. data/templates/calendar/jquery.calendar.min.js +0 -11
  1246. data/templates/calendar/jquery.ui/calendar.sass +0 -288
  1247. data/templates/calendar/manifest.rb +0 -7
  1248. data/templates/dynatree/jquery.ui/dynatree.aqua.sass +0 -177
  1249. data/templates/dynatree/jquery.ui/dynatree.crystal/edit_add.png +0 -0
  1250. data/templates/dynatree/jquery.ui/dynatree.crystal.sass +0 -177
  1251. data/templates/dynatree/jquery.ui/dynatree.vista.sass +0 -177
  1252. data/templates/dynatree/jquery.ui/dynatree.xp/ui.dynatree.css +0 -287
  1253. data/templates/dynatree/jquery.ui/dynatree.xp.sass +0 -178
  1254. data/templates/jqgrid/jquery.ui/jqGrid.sass +0 -761
  1255. data/templates/jqtouch/jqtouch/apple.sass +0 -651
  1256. data/templates/jqtouch/jqtouch/iphone-emulator.sass +0 -17
  1257. data/templates/jqtouch/jqtouch/jqt.sass +0 -580
  1258. data/templates/jqtouch/jqtouch/jqtouch.sass +0 -75
  1259. data/templates/jrails/config/initializers/jrails.rb +0 -25
  1260. data/templates/jrails/i18n/jquery.ui/datepicker-ar.js +0 -20
  1261. data/templates/jrails/i18n/jquery.ui/datepicker-ar.min.js +0 -4
  1262. data/templates/jrails/i18n/jquery.ui/datepicker-bg.js +0 -20
  1263. data/templates/jrails/i18n/jquery.ui/datepicker-bg.min.js +0 -4
  1264. data/templates/jrails/i18n/jquery.ui/datepicker-ca.js +0 -19
  1265. data/templates/jrails/i18n/jquery.ui/datepicker-ca.min.js +0 -2
  1266. data/templates/jrails/i18n/jquery.ui/datepicker-cs.js +0 -19
  1267. data/templates/jrails/i18n/jquery.ui/datepicker-cs.min.js +0 -2
  1268. data/templates/jrails/i18n/jquery.ui/datepicker-da.js +0 -19
  1269. data/templates/jrails/i18n/jquery.ui/datepicker-da.min.js +0 -2
  1270. data/templates/jrails/i18n/jquery.ui/datepicker-de.js +0 -19
  1271. data/templates/jrails/i18n/jquery.ui/datepicker-de.min.js +0 -2
  1272. data/templates/jrails/i18n/jquery.ui/datepicker-el.js +0 -19
  1273. data/templates/jrails/i18n/jquery.ui/datepicker-el.min.js +0 -4
  1274. data/templates/jrails/i18n/jquery.ui/datepicker-eo.js +0 -19
  1275. data/templates/jrails/i18n/jquery.ui/datepicker-eo.min.js +0 -2
  1276. data/templates/jrails/i18n/jquery.ui/datepicker-es.js +0 -19
  1277. data/templates/jrails/i18n/jquery.ui/datepicker-es.min.js +0 -2
  1278. data/templates/jrails/i18n/jquery.ui/datepicker-fa.js +0 -19
  1279. data/templates/jrails/i18n/jquery.ui/datepicker-fa.min.js +0 -3
  1280. data/templates/jrails/i18n/jquery.ui/datepicker-fi.js +0 -19
  1281. data/templates/jrails/i18n/jquery.ui/datepicker-fi.min.js +0 -2
  1282. data/templates/jrails/i18n/jquery.ui/datepicker-fr.js +0 -19
  1283. data/templates/jrails/i18n/jquery.ui/datepicker-fr.min.js +0 -2
  1284. data/templates/jrails/i18n/jquery.ui/datepicker-he.js +0 -19
  1285. data/templates/jrails/i18n/jquery.ui/datepicker-he.min.js +0 -3
  1286. data/templates/jrails/i18n/jquery.ui/datepicker-hr.js +0 -19
  1287. data/templates/jrails/i18n/jquery.ui/datepicker-hr.min.js +0 -2
  1288. data/templates/jrails/i18n/jquery.ui/datepicker-hu.js +0 -19
  1289. data/templates/jrails/i18n/jquery.ui/datepicker-hu.min.js +0 -2
  1290. data/templates/jrails/i18n/jquery.ui/datepicker-hy.js +0 -19
  1291. data/templates/jrails/i18n/jquery.ui/datepicker-hy.min.js +0 -4
  1292. data/templates/jrails/i18n/jquery.ui/datepicker-id.js +0 -19
  1293. data/templates/jrails/i18n/jquery.ui/datepicker-id.min.js +0 -2
  1294. data/templates/jrails/i18n/jquery.ui/datepicker-is.js +0 -19
  1295. data/templates/jrails/i18n/jquery.ui/datepicker-is.min.js +0 -2
  1296. data/templates/jrails/i18n/jquery.ui/datepicker-it.js +0 -19
  1297. data/templates/jrails/i18n/jquery.ui/datepicker-it.min.js +0 -2
  1298. data/templates/jrails/i18n/jquery.ui/datepicker-ja.js +0 -20
  1299. data/templates/jrails/i18n/jquery.ui/datepicker-ja.min.js +0 -2
  1300. data/templates/jrails/i18n/jquery.ui/datepicker-ko.js +0 -19
  1301. data/templates/jrails/i18n/jquery.ui/datepicker-ko.min.js +0 -2
  1302. data/templates/jrails/i18n/jquery.ui/datepicker-lt.js +0 -19
  1303. data/templates/jrails/i18n/jquery.ui/datepicker-lt.min.js +0 -2
  1304. data/templates/jrails/i18n/jquery.ui/datepicker-lv.js +0 -19
  1305. data/templates/jrails/i18n/jquery.ui/datepicker-lv.min.js +0 -2
  1306. data/templates/jrails/i18n/jquery.ui/datepicker-ms.js +0 -19
  1307. data/templates/jrails/i18n/jquery.ui/datepicker-ms.min.js +0 -2
  1308. data/templates/jrails/i18n/jquery.ui/datepicker-nl.js +0 -19
  1309. data/templates/jrails/i18n/jquery.ui/datepicker-nl.min.js +0 -2
  1310. data/templates/jrails/i18n/jquery.ui/datepicker-no.js +0 -19
  1311. data/templates/jrails/i18n/jquery.ui/datepicker-no.min.js +0 -2
  1312. data/templates/jrails/i18n/jquery.ui/datepicker-pl.js +0 -19
  1313. data/templates/jrails/i18n/jquery.ui/datepicker-pl.min.js +0 -2
  1314. data/templates/jrails/i18n/jquery.ui/datepicker-pt-BR.js +0 -19
  1315. data/templates/jrails/i18n/jquery.ui/datepicker-pt-BR.min.js +0 -2
  1316. data/templates/jrails/i18n/jquery.ui/datepicker-ro.js +0 -22
  1317. data/templates/jrails/i18n/jquery.ui/datepicker-ro.min.js +0 -2
  1318. data/templates/jrails/i18n/jquery.ui/datepicker-ru.js +0 -19
  1319. data/templates/jrails/i18n/jquery.ui/datepicker-ru.min.js +0 -4
  1320. data/templates/jrails/i18n/jquery.ui/datepicker-sk.js +0 -19
  1321. data/templates/jrails/i18n/jquery.ui/datepicker-sk.min.js +0 -2
  1322. data/templates/jrails/i18n/jquery.ui/datepicker-sl.js +0 -20
  1323. data/templates/jrails/i18n/jquery.ui/datepicker-sl.min.js +0 -2
  1324. data/templates/jrails/i18n/jquery.ui/datepicker-sq.js +0 -19
  1325. data/templates/jrails/i18n/jquery.ui/datepicker-sq.min.js +0 -2
  1326. data/templates/jrails/i18n/jquery.ui/datepicker-sr-SR.js +0 -19
  1327. data/templates/jrails/i18n/jquery.ui/datepicker-sr-SR.min.js +0 -2
  1328. data/templates/jrails/i18n/jquery.ui/datepicker-sr.js +0 -19
  1329. data/templates/jrails/i18n/jquery.ui/datepicker-sr.min.js +0 -3
  1330. data/templates/jrails/i18n/jquery.ui/datepicker-sv.js +0 -19
  1331. data/templates/jrails/i18n/jquery.ui/datepicker-sv.min.js +0 -2
  1332. data/templates/jrails/i18n/jquery.ui/datepicker-th.js +0 -19
  1333. data/templates/jrails/i18n/jquery.ui/datepicker-th.min.js +0 -4
  1334. data/templates/jrails/i18n/jquery.ui/datepicker-tr.js +0 -19
  1335. data/templates/jrails/i18n/jquery.ui/datepicker-tr.min.js +0 -2
  1336. data/templates/jrails/i18n/jquery.ui/datepicker-uk.js +0 -25
  1337. data/templates/jrails/i18n/jquery.ui/datepicker-uk.min.js +0 -4
  1338. data/templates/jrails/i18n/jquery.ui/datepicker-zh-CN.js +0 -19
  1339. data/templates/jrails/i18n/jquery.ui/datepicker-zh-CN.min.js +0 -2
  1340. data/templates/jrails/i18n/jquery.ui/datepicker-zh-TW.js +0 -19
  1341. data/templates/jrails/i18n/jquery.ui/datepicker-zh-TW.min.js +0 -2
  1342. data/templates/jrails/jquery-ui.js +0 -18367
  1343. data/templates/jrails/jquery-ui.min.js +0 -1
  1344. data/templates/jrails/jquery.js +0 -7645
  1345. data/templates/jrails/jquery.min.js +0 -19
  1346. data/templates/jrails/jquery.pngFix.js +0 -11
  1347. data/templates/jrails/jquery.pngFix.min.js +0 -1
  1348. data/templates/jrails/jquery.ui/_theme.sass +0 -1462
  1349. data/templates/jrails/jquery.ui/base.sass +0 -85
  1350. data/templates/jrails/jquery.ui/black-tie.sass +0 -85
  1351. data/templates/jrails/jquery.ui/blitzer.sass +0 -85
  1352. data/templates/jrails/jquery.ui/cupertino.sass +0 -85
  1353. data/templates/jrails/jquery.ui/dark-hive.sass +0 -85
  1354. data/templates/jrails/jquery.ui/dot-luv.sass +0 -85
  1355. data/templates/jrails/jquery.ui/eggplant.sass +0 -85
  1356. data/templates/jrails/jquery.ui/excite-bike.sass +0 -85
  1357. data/templates/jrails/jquery.ui/flick.sass +0 -85
  1358. data/templates/jrails/jquery.ui/hot-sneaks.sass +0 -85
  1359. data/templates/jrails/jquery.ui/humanity.sass +0 -85
  1360. data/templates/jrails/jquery.ui/le-frog.sass +0 -85
  1361. data/templates/jrails/jquery.ui/mint-choc.sass +0 -85
  1362. data/templates/jrails/jquery.ui/overcast.sass +0 -85
  1363. data/templates/jrails/jquery.ui/pepper-grinder.sass +0 -85
  1364. data/templates/jrails/jquery.ui/redmond.sass +0 -85
  1365. data/templates/jrails/jquery.ui/smoothness.sass +0 -85
  1366. data/templates/jrails/jquery.ui/south-street.sass +0 -85
  1367. data/templates/jrails/jquery.ui/sunny.sass +0 -85
  1368. data/templates/jrails/jquery.ui/swanky-purse.sass +0 -85
  1369. data/templates/jrails/jquery.ui/trontastic.sass +0 -85
  1370. data/templates/jrails/jquery.ui/ui-darkness.sass +0 -85
  1371. data/templates/jrails/jquery.ui/ui-lightness.sass +0 -85
  1372. data/templates/jrails/jquery.ui/vader.sass +0 -85
  1373. data/templates/jrails/jrails.js +0 -192
  1374. data/templates/jrails/jrails.min.js +0 -1
  1375. data/templates/jrails/manifest.rb +0 -457
  1376. data/templates/secret_sauce/jquery.ui/secret_sauce.sass +0 -32
@@ -1,2018 +1,2036 @@
1
- /*************************************************************************
2
- jquery.dynatree.js
3
- Dynamic tree view control, with support for lazy loading of branches.
4
-
5
- Copyright (c) 2008-2009 Martin Wendt (http://wwWendt.de)
6
- Licensed under the MIT License (MIT-License.txt)
7
-
8
- A current version and some documentation is available at
9
- http://dynatree.googlecode.com/
10
-
11
- Let me know, if you find bugs or improvements (martin at domain wwWendt.de).
12
-
13
- $Version: 0.5.2$
14
- $Revision: 296, 2009-12-20 11:04:25$
15
-
16
- @depends: jquery.js
17
- @depends: ui.core.js
18
- @depends: jquery.cookie.js
19
- *************************************************************************/
20
-
21
-
22
- /*************************************************************************
23
- * Debug functions
24
- */
25
-
26
- var _canLog = true;
27
-
28
- function _log(mode, msg) {
29
- /**
30
- * Usage: logMsg("%o was toggled", this);
31
- */
32
- if( !_canLog )
33
- return;
34
- // Remove first argument
35
- var args = Array.prototype.slice.apply(arguments, [1]);
36
- // Prepend timestamp
37
- var dt = new Date();
38
- var tag = dt.getHours()+":"+dt.getMinutes()+":"+dt.getSeconds()+"."+dt.getMilliseconds();
39
- args[0] = tag + " - " + args[0];
40
-
41
- try {
42
- switch( mode ) {
43
- case "info":
44
- window.console.info.apply(window.console, args);
45
- break;
46
- case "warn":
47
- window.console.warn.apply(window.console, args);
48
- break;
49
- default:
50
- window.console.log.apply(window.console, args);
51
- }
52
- } catch(e) {
53
- if( !window.console )
54
- _canLog = false; // Permanently disable, when logging is not supported by the browser
55
- }
56
- }
57
-
58
- function logMsg(msg) {
59
- Array.prototype.unshift.apply(arguments, ["debug"]);
60
- _log.apply(this, arguments);
61
- }
62
-
63
-
64
- // Forward declaration
65
- var getDynaTreePersistData = undefined;
66
-
67
-
68
-
69
- /*************************************************************************
70
- * Constants
71
- */
72
- var DTNodeStatus_Error = -1;
73
- var DTNodeStatus_Loading = 1;
74
- var DTNodeStatus_Ok = 0;
75
-
76
-
77
- // Start of local namespace
78
- ;(function($) {
79
-
80
- /*************************************************************************
81
- * Common tool functions.
82
- */
83
-
84
- var Class = {
85
- create: function() {
86
- return function() {
87
- this.initialize.apply(this, arguments);
88
- }
89
- }
90
- }
91
-
92
- /*************************************************************************
93
- * Class DynaTreeNode
94
- */
95
- var DynaTreeNode = Class.create();
96
-
97
- DynaTreeNode.prototype = {
98
- initialize: function(parent, tree, data) {
99
- /**
100
- * @constructor
101
- */
102
- this.parent = parent;
103
- this.tree = tree;
104
- if ( typeof data == "string" )
105
- data = { title: data };
106
- if( data.key == undefined )
107
- data.key = "_" + tree._nodeCount++;
108
- this.data = $.extend({}, $.ui.dynatree.nodedatadefaults, data);
109
- this.div = null; // not yet created
110
- this.span = null; // not yet created
111
- this.childList = null; // no subnodes yet
112
- // this.isRead = false; // Lazy content not yet read
113
- this.isLoading = false; // Lazy content is being loaded
114
- this.hasSubSel = false;
115
- },
116
-
117
- toString: function() {
118
- return "dtnode<" + this.data.key + ">: '" + this.data.title + "'";
119
- },
120
-
121
- toDict: function(recursive, callback) {
122
- var dict = $.extend({}, this.data);
123
- dict.activate = ( this.tree.activeNode === this );
124
- dict.focus = ( this.tree.focusNode === this );
125
- dict.expand = this.bExpanded;
126
- dict.select = this.bSelected;
127
- if( callback )
128
- callback(dict);
129
- if( recursive && this.childList ) {
130
- dict.children = [];
131
- for(var i=0; i<this.childList.length; i++ )
132
- dict.children.push(this.childList[i].toDict(true, callback));
133
- } else {
134
- delete dict.children;
135
- }
136
- return dict;
137
- },
138
-
139
- _getInnerHtml: function() {
140
- var opts = this.tree.options;
141
- var cache = this.tree.cache;
142
- // parent connectors
143
- var rootParent = opts.rootVisible ? null : this.tree.tnRoot;
144
- var bHideFirstExpander = (opts.rootVisible && opts.minExpandLevel>0) || opts.minExpandLevel>1;
145
- var bHideFirstConnector = opts.rootVisible || opts.minExpandLevel>0;
146
-
147
- var res = "";
148
- var p = this.parent;
149
- while( p ) {
150
- // Suppress first connector column, if visible top level is always expanded
151
- if ( bHideFirstConnector && p==rootParent )
152
- break;
153
- res = ( p.isLastSibling() ? cache.tagEmpty : cache.tagVline) + res;
154
- p = p.parent;
155
- }
156
-
157
- // connector (expanded, expandable or simple)
158
- if( bHideFirstExpander && this.parent==rootParent ) {
159
- // skip connector
160
- } else if ( this.childList || this.data.isLazy ) {
161
- res += cache.tagExpander;
162
- } else {
163
- res += cache.tagConnector;
164
- }
165
-
166
- // Checkbox mode
167
- if( opts.checkbox && this.data.hideCheckbox!=true && !this.data.isStatusNode ) {
168
- res += cache.tagCheckbox;
169
- }
170
-
171
- // folder or doctype icon
172
- if ( this.data.icon ) {
173
- res += "<img src='" + opts.imagePath + this.data.icon + "' alt='' />";
174
- } else if ( this.data.icon == false ) {
175
- // icon == false means 'no icon'
176
- } else {
177
- // icon == null means 'default icon'
178
- res += cache.tagNodeIcon;
179
- }
180
-
181
- // node name
182
- var tooltip = ( this.data && typeof this.data.tooltip == "string" ) ? " title='" + this.data.tooltip + "'" : "";
183
- res += "<a href='#' class='" + opts.classNames.title + "'" + tooltip + ">" + this.data.title + "</a>";
184
- return res;
185
- },
186
-
187
- _fixOrder: function() {
188
- /**
189
- * Make sure, that <div> order matches childList order.
190
- */
191
- var cl = this.childList;
192
- if( !cl )
193
- return;
194
- var childDiv = this.div.firstChild.nextSibling;
195
- for(var i=0; i<cl.length-1; i++) {
196
- var childNode1 = cl[i];
197
- var childNode2 = childDiv.firstChild.dtnode;
198
- if( childNode1 !== childNode2 ) {
199
- //
200
- this.tree.logDebug("_fixOrder: mismatch at index " + i + ": " + childNode1 + " != " + childNode2);
201
- this.div.insertBefore(childNode1.div, childNode2.div);
202
- } else {
203
- childDiv = childDiv.nextSibling;
204
- }
205
- }
206
- },
207
-
208
- render: function(bDeep, bHidden) {
209
- /**
210
- * Create HTML markup for this node.
211
- *
212
- * <div> // This div contains the node's span and list of child div's.
213
- * <span id='key'>S S S A</span> // Span contains graphic spans and title <a> tag
214
- * <div>child1</div>
215
- * <div>child2</div>
216
- * </div>
217
- */
218
- // this.tree.logDebug("%o.render()", this);
219
- var opts = this.tree.options;
220
- var cn = opts.classNames;
221
- var isLastSib = this.isLastSibling();
222
- // ---
223
- if( ! this.div ) {
224
- this.span = document.createElement("span");
225
- this.span.dtnode = this;
226
- if( this.data.key )
227
- this.span.id = this.tree.options.idPrefix + this.data.key;
228
- this.div = document.createElement("div");
229
- this.div.appendChild(this.span);
230
-
231
- if ( this.parent ) {
232
- this.parent.div.appendChild(this.div);
233
- }
234
-
235
- if( this.parent==null && !this.tree.options.rootVisible )
236
- this.span.style.display = "none";
237
- }
238
- // set node connector images, links and text
239
- this.span.innerHTML = this._getInnerHtml();
240
-
241
- // hide this node, if parent is collapsed
242
- this.div.style.display = ( this.parent==null || this.parent.bExpanded ? "" : "none");
243
-
244
- // Set classes for current status
245
- var cnList = [];
246
- cnList.push( ( this.data.isFolder ) ? cn.folder : cn.document );
247
- if( this.bExpanded )
248
- cnList.push(cn.expanded);
249
- if( this.childList != null )
250
- cnList.push(cn.hasChildren);
251
- if( this.data.isLazy && this.childList==null )
252
- cnList.push(cn.lazy);
253
- if( isLastSib )
254
- cnList.push(cn.lastsib);
255
- if( this.bSelected )
256
- cnList.push(cn.selected);
257
- if( this.hasSubSel )
258
- cnList.push(cn.partsel);
259
- if( this.tree.activeNode === this )
260
- cnList.push(cn.active);
261
- if( this.data.addClass )
262
- cnList.push(this.data.addClass);
263
- // IE6 doesn't correctly evaluate multiple class names,
264
- // so we create combined class names that can be used in the CSS
265
- cnList.push(cn.combinedExpanderPrefix
266
- + (this.bExpanded ? "e" : "c")
267
- + (this.data.isLazy && this.childList==null ? "d" : "")
268
- + (isLastSib ? "l" : "")
269
- );
270
- cnList.push(cn.combinedIconPrefix
271
- + (this.bExpanded ? "e" : "c")
272
- + (this.data.isFolder ? "f" : "")
273
- );
274
- this.span.className = cnList.join(" ");
275
-
276
- if( bDeep && this.childList && (bHidden || this.bExpanded) ) {
277
- for(var i=0; i<this.childList.length; i++) {
278
- this.childList[i].render(bDeep, bHidden)
279
- }
280
- this._fixOrder();
281
- }
282
- },
283
-
284
- hasChildren: function() {
285
- return this.childList != null;
286
- },
287
-
288
- isLastSibling: function() {
289
- var p = this.parent;
290
- if ( !p ) return true;
291
- return p.childList[p.childList.length-1] === this;
292
- },
293
-
294
- prevSibling: function() {
295
- if( !this.parent ) return null;
296
- var ac = this.parent.childList;
297
- for(var i=1; i<ac.length; i++) // start with 1, so prev(first) = null
298
- if( ac[i] === this )
299
- return ac[i-1];
300
- return null;
301
- },
302
-
303
- nextSibling: function() {
304
- if( !this.parent ) return null;
305
- var ac = this.parent.childList;
306
- for(var i=0; i<ac.length-1; i++) // up to length-2, so next(last) = null
307
- if( ac[i] === this )
308
- return ac[i+1];
309
- return null;
310
- },
311
-
312
- _setStatusNode: function(data) {
313
- // Create, modify or remove the status child node (pass 'null', to remove it).
314
- var firstChild = ( this.childList ? this.childList[0] : null );
315
- if( !data ) {
316
- if ( firstChild ) {
317
- this.div.removeChild(firstChild.div);
318
- if( this.childList.length == 1 )
319
- this.childList = null;
320
- else
321
- this.childList.shift();
322
- }
323
- } else if ( firstChild ) {
324
- data.isStatusNode = true;
325
- firstChild.data = data;
326
- firstChild.render(false, false);
327
- } else {
328
- data.isStatusNode = true;
329
- firstChild = this.addChild(data);
330
- }
331
- },
332
-
333
- setLazyNodeStatus: function(lts) {
334
- switch( lts ) {
335
- case DTNodeStatus_Ok:
336
- this._setStatusNode(null);
337
- // this.isRead = true;
338
- this.isLoading = false;
339
- this.render(false, false);
340
- if( this.tree.options.autoFocus ) {
341
- if( this === this.tree.tnRoot && !this.tree.options.rootVisible && this.childList ) {
342
- // special case: using ajaxInit
343
- this.childList[0].focus();
344
- } else {
345
- this.focus();
346
- }
347
- }
348
- break;
349
- case DTNodeStatus_Loading:
350
- this.isLoading = true;
351
- this._setStatusNode({
352
- title: this.tree.options.strings.loading,
353
- addClass: this.tree.options.classNames.nodeWait
354
- });
355
- break;
356
- case DTNodeStatus_Error:
357
- this.isLoading = false;
358
- this._setStatusNode({
359
- title: this.tree.options.strings.loadError,
360
- addClass: this.tree.options.classNames.nodeError
361
- });
362
- break;
363
- default:
364
- throw "Bad LazyNodeStatus: '" + lts + "'.";
365
- }
366
- },
367
-
368
- _parentList: function(includeRoot, includeSelf) {
369
- var l = [];
370
- var dtn = includeSelf ? this : this.parent;
371
- while( dtn ) {
372
- if( includeRoot || dtn.parent )
373
- l.unshift(dtn);
374
- dtn = dtn.parent;
375
- };
376
- return l;
377
- },
378
-
379
- getLevel: function() {
380
- var level = 0;
381
- var dtn = this.parent;
382
- while( dtn ) {
383
- level++;
384
- dtn = dtn.parent;
385
- };
386
- return level;
387
- },
388
-
389
- _getTypeForOuterNodeEvent: function(event) {
390
- /** Return the inner node span (title, checkbox or expander) if
391
- * event.target points to the outer span.
392
- * This function should fix issue #93:
393
- * FF2 ignores empty spans, when generating events (returning the parent instead).
394
- */
395
- var cns = this.tree.options.classNames;
396
- var target = event.target;
397
- // Only process clicks on an outer node span (probably due to a FF2 event handling bug)
398
- if( target.className.indexOf(cns.folder)<0
399
- && target.className.indexOf(cns.document)<0 ) {
400
- return null
401
- }
402
- // Event coordinates, relative to outer node span:
403
- var eventX = event.pageX - target.offsetLeft;
404
- var eventY = event.pageY - target.offsetTop;
405
-
406
- for(var i=0; i<target.childNodes.length; i++) {
407
- var cn = target.childNodes[i];
408
- var x = cn.offsetLeft - target.offsetLeft;
409
- var y = cn.offsetTop - target.offsetTop;
410
- var nx = cn.clientWidth, ny = cn.clientHeight;
411
- // alert (cn.className + ": " + x + ", " + y + ", s:" + nx + ", " + ny);
412
- if( eventX>=x && eventX<=(x+nx) && eventY>=y && eventY<=(y+ny) ) {
413
- // alert("HIT "+ cn.className);
414
- if( cn.className==cns.title )
415
- return "title";
416
- else if( cn.className==cns.expander )
417
- return "expander";
418
- else if( cn.className==cns.checkbox )
419
- return "checkbox";
420
- else if( cn.className==cns.nodeIcon )
421
- return "icon";
422
- }
423
- }
424
- return "prefix";
425
- },
426
-
427
- getEventTargetType: function(event) {
428
- // Return the part of a node, that a click event occured on.
429
- // Note: there is no check, if the was fired on TIHS node.
430
- var tcn = event && event.target ? event.target.className : "";
431
- var cns = this.tree.options.classNames;
432
-
433
- if( tcn == cns.title )
434
- return "title";
435
- else if( tcn==cns.expander )
436
- return "expander";
437
- else if( tcn==cns.checkbox )
438
- return "checkbox";
439
- else if( tcn==cns.nodeIcon )
440
- return "icon";
441
- else if( tcn==cns.empty || tcn==cns.vline || tcn==cns.connector )
442
- return "prefix";
443
- else if( tcn.indexOf(cns.folder)>=0 || tcn.indexOf(cns.document)>=0 )
444
- // FIX issue #93
445
- return this._getTypeForOuterNodeEvent(event);
446
- return null;
447
- },
448
-
449
- isVisible: function() {
450
- // Return true, if all parents are expanded.
451
- var parents = this._parentList(true, false);
452
- for(var i=0; i<parents.length; i++)
453
- if( ! parents[i].bExpanded ) return false;
454
- return true;
455
- },
456
-
457
- makeVisible: function() {
458
- // Make sure, all parents are expanded
459
- var parents = this._parentList(true, false);
460
- for(var i=0; i<parents.length; i++)
461
- parents[i]._expand(true);
462
- },
463
-
464
- focus: function() {
465
- // TODO: check, if we already have focus
466
- // this.tree.logDebug("dtnode.focus(): %o", this);
467
- this.makeVisible();
468
- try {
469
- $(this.span).find(">a").focus();
470
- } catch(e) { }
471
- },
472
-
473
- _activate: function(flag, fireEvents) {
474
- // (De)Activate - but not focus - this node.
475
- this.tree.logDebug("dtnode._activate(%o, fireEvents=%o) - %o", flag, fireEvents, this);
476
- var opts = this.tree.options;
477
- if( this.data.isStatusNode )
478
- return;
479
- if ( fireEvents && opts.onQueryActivate && opts.onQueryActivate.call(this.span, flag, this) == false )
480
- return; // Callback returned false
481
-
482
- if( flag ) {
483
- // Activate
484
- if( this.tree.activeNode ) {
485
- if( this.tree.activeNode === this )
486
- return;
487
- this.tree.activeNode.deactivate();
488
- }
489
- if( opts.activeVisible )
490
- this.makeVisible();
491
- this.tree.activeNode = this;
492
- if( opts.persist )
493
- $.cookie(opts.cookieId+"-active", this.data.key, opts.cookie);
494
- this.tree.persistence.activeKey = this.data.key;
495
- $(this.span).addClass(opts.classNames.active);
496
- if ( fireEvents && opts.onActivate ) // Pass element as 'this' (jQuery convention)
497
- opts.onActivate.call(this.span, this);
498
- } else {
499
- // Deactivate
500
- if( this.tree.activeNode === this ) {
501
- var opts = this.tree.options;
502
- if ( opts.onQueryActivate && opts.onQueryActivate.call(this.span, false, this) == false )
503
- return; // Callback returned false
504
- $(this.span).removeClass(opts.classNames.active);
505
- if( opts.persist ) {
506
- // Note: we don't pass null, but ''. So the cookie is not deleted.
507
- // If we pass null, we also have to pass a COPY of opts, because $cookie will override opts.expires (issue 84)
508
- $.cookie(opts.cookieId+"-active", "", opts.cookie);
509
- }
510
- this.tree.persistence.activeKey = null;
511
- this.tree.activeNode = null;
512
- if ( fireEvents && opts.onDeactivate )
513
- opts.onDeactivate.call(this.span, this);
514
- }
515
- }
516
- },
517
-
518
- activate: function() {
519
- // Select - but not focus - this node.
520
- // this.tree.logDebug("dtnode.activate(): %o", this);
521
- this._activate(true, true);
522
- },
523
-
524
- deactivate: function() {
525
- // this.tree.logDebug("dtnode.deactivate(): %o", this);
526
- this._activate(false, true);
527
- },
528
-
529
- isActive: function() {
530
- return (this.tree.activeNode === this);
531
- },
532
-
533
- _userActivate: function() {
534
- // Handle user click / [space] / [enter], according to clickFolderMode.
535
- var activate = true;
536
- var expand = false;
537
- if ( this.data.isFolder ) {
538
- switch( this.tree.options.clickFolderMode ) {
539
- case 2:
540
- activate = false;
541
- expand = true;
542
- break;
543
- case 3:
544
- activate = expand = true;
545
- break;
546
- }
547
- }
548
- if( this.parent == null && this.tree.options.minExpandLevel>0 ) {
549
- expand = false;
550
- }
551
- if( expand ) {
552
- this.toggleExpand();
553
- this.focus();
554
- }
555
- if( activate ) {
556
- this.activate();
557
- }
558
- },
559
-
560
- _setSubSel: function(hasSubSel) {
561
- if( hasSubSel ) {
562
- this.hasSubSel = true;
563
- $(this.span).addClass(this.tree.options.classNames.partsel);
564
- } else {
565
- this.hasSubSel = false;
566
- $(this.span).removeClass(this.tree.options.classNames.partsel);
567
- }
568
- },
569
-
570
- _fixSelectionState: function() {
571
- // fix selection status, for multi-hier mode
572
- // this.tree.logDebug("_fixSelectionState(%o) - %o", this.bSelected, this);
573
- if( this.bSelected ) {
574
- // Select all children
575
- this.visit(function(dtnode){
576
- dtnode.parent._setSubSel(true);
577
- dtnode._select(true, false, false);
578
- });
579
- // Select parents, if all children are selected
580
- var p = this.parent;
581
- while( p ) {
582
- p._setSubSel(true);
583
- var allChildsSelected = true;
584
- for(var i=0; i<p.childList.length; i++) {
585
- var n = p.childList[i];
586
- if( !n.bSelected && !n.data.isStatusNode ) {
587
- allChildsSelected = false;
588
- break;
589
- }
590
- }
591
- if( allChildsSelected )
592
- p._select(true, false, false);
593
- p = p.parent;
594
- }
595
- } else {
596
- // Deselect all children
597
- this._setSubSel(false);
598
- this.visit(function(dtnode){
599
- dtnode._setSubSel(false);
600
- dtnode._select(false, false, false);
601
- });
602
- // Deselect parents, and recalc hasSubSel
603
- var p = this.parent;
604
- while( p ) {
605
- p._select(false, false, false);
606
- var isPartSel = false;
607
- for(var i=0; i<p.childList.length; i++) {
608
- if( p.childList[i].bSelected || p.childList[i].hasSubSel ) {
609
- isPartSel = true;
610
- break;
611
- }
612
- }
613
- p._setSubSel(isPartSel);
614
- p = p.parent;
615
- }
616
- }
617
- },
618
-
619
- _select: function(sel, fireEvents, deep) {
620
- // Select - but not focus - this node.
621
- // this.tree.logDebug("dtnode._select(%o) - %o", sel, this);
622
- var opts = this.tree.options;
623
- if( this.data.isStatusNode )
624
- return;
625
- //
626
- if( this.bSelected == sel ) {
627
- // this.tree.logDebug("dtnode._select(%o) IGNORED - %o", sel, this);
628
- return;
629
- }
630
- // Allow event listener to abort selection
631
- if ( fireEvents && opts.onQuerySelect && opts.onQuerySelect.call(this.span, sel, this) == false )
632
- return; // Callback returned false
633
-
634
- // Force single-selection
635
- if( opts.selectMode==1 && sel ) {
636
- this.tree.visit(function(dtnode){
637
- if( dtnode.bSelected ) {
638
- // Deselect; assuming that in selectMode:1 there's max. one other selected node
639
- dtnode._select(false, false, false);
640
- return false;
641
- }
642
- });
643
- }
644
-
645
- this.bSelected = sel;
646
- // this.tree._changeNodeList("select", this, sel);
647
-
648
- if( sel ) {
649
- if( opts.persist )
650
- this.tree.persistence.addSelect(this.data.key);
651
-
652
- $(this.span).addClass(opts.classNames.selected);
653
-
654
- if( deep && opts.selectMode==3 )
655
- this._fixSelectionState();
656
-
657
- if ( fireEvents && opts.onSelect )
658
- opts.onSelect.call(this.span, true, this);
659
-
660
- } else {
661
- if( opts.persist )
662
- this.tree.persistence.clearSelect(this.data.key);
663
-
664
- $(this.span).removeClass(opts.classNames.selected);
665
-
666
- if( deep && opts.selectMode==3 )
667
- this._fixSelectionState();
668
-
669
- if ( fireEvents && opts.onSelect )
670
- opts.onSelect.call(this.span, false, this);
671
- }
672
- },
673
-
674
- select: function(sel) {
675
- // Select - but not focus - this node.
676
- // this.tree.logDebug("dtnode.select(%o) - %o", sel, this);
677
- if( this.data.unselectable )
678
- return this.bSelected;
679
- return this._select(sel!=false, true, true);
680
- },
681
-
682
- toggleSelect: function() {
683
- // this.tree.logDebug("dtnode.toggleSelect() - %o", this);
684
- return this.select(!this.bSelected);
685
- },
686
-
687
- isSelected: function() {
688
- return this.bSelected;
689
- },
690
-
691
- _loadContent: function() {
692
- try {
693
- var opts = this.tree.options;
694
- this.tree.logDebug("_loadContent: start - %o", this);
695
- this.setLazyNodeStatus(DTNodeStatus_Loading);
696
- if( true == opts.onLazyRead.call(this.span, this) ) {
697
- // If function returns 'true', we assume that the loading is done:
698
- this.setLazyNodeStatus(DTNodeStatus_Ok);
699
- // Otherwise (i.e. if the loading was started as an asynchronous process)
700
- // the onLazyRead(dtnode) handler is expected to call dtnode.setLazyNodeStatus(DTNodeStatus_Ok/_Error) when done.
701
- this.tree.logDebug("_loadContent: succeeded - %o", this);
702
- }
703
- } catch(e) {
704
- alert(e);
705
- this.setLazyNodeStatus(DTNodeStatus_Error);
706
- }
707
- },
708
-
709
- _expand: function(bExpand) {
710
- // this.tree.logDebug("dtnode._expand(%o) - %o", bExpand, this);
711
- if( this.bExpanded == bExpand ) {
712
- // this.tree.logDebug("dtnode._expand(%o) IGNORED - %o", bExpand, this);
713
- return;
714
- }
715
- var opts = this.tree.options;
716
- if( !bExpand && this.getLevel()<opts.minExpandLevel ) {
717
- this.tree.logDebug("dtnode._expand(%o) forced expand - %o", bExpand, this);
718
- return;
719
- }
720
- if ( opts.onQueryExpand && opts.onQueryExpand.call(this.span, bExpand, this) == false )
721
- return; // Callback returned false
722
- this.bExpanded = bExpand;
723
-
724
- // Persist expand state
725
- if( opts.persist ) {
726
- if( bExpand )
727
- this.tree.persistence.addExpand(this.data.key);
728
- else
729
- this.tree.persistence.clearExpand(this.data.key);
730
- }
731
-
732
- this.render(false);
733
-
734
- // Auto-collapse mode: collapse all siblings
735
- if( this.bExpanded && this.parent && opts.autoCollapse ) {
736
- var parents = this._parentList(false, true);
737
- for(var i=0; i<parents.length; i++)
738
- parents[i].collapseSiblings();
739
- }
740
-
741
- // If the currently active node is now hidden, deactivate it
742
- if( opts.activeVisible && this.tree.activeNode && ! this.tree.activeNode.isVisible() ) {
743
- this.tree.activeNode.deactivate();
744
- }
745
- // Expanding a lazy node: set 'loading...' and call callback
746
- if( bExpand && this.data.isLazy && this.childList==null && !this.isLoading ) {
747
- this._loadContent();
748
- return;
749
- }
750
- // this.tree.logDebug("_expand: start div toggle - %o", this);
751
-
752
- var fxDuration = opts.fx ? (opts.fx.duration || 200) : 0;
753
- if( this.childList ) {
754
- for(var i=0; i<this.childList.length; i++ ) {
755
- var $child = $(this.childList[i].div);
756
- if( fxDuration ) {
757
- // This is a toggle, so only do it, if not already rendered (in)visible (issue 98)
758
- if( bExpand != $child.is(':visible') )
759
- $child.animate(opts.fx, fxDuration);
760
- } else {
761
- if( bExpand )
762
- $child.show();
763
- else
764
- $child.hide(); // TODO: this seems to be slow, when called the first time for an element
765
- }
766
- }
767
- }
768
-
769
- /* issue 109: using selector filter is really SLOW.
770
- // issue 98: only toggle, if render hasn't set visibility already:
771
- var filter = ">DIV" + (bExpand ? ":hidden" : ":visible");
772
-
773
- if( opts.fx ) {
774
- var duration = opts.fx.duration || 200;
775
- // $(">DIV", this.div).animate(opts.fx, duration);
776
- $(filter, this.div).animate(opts.fx, duration);
777
- } else {
778
- $(filter, this.div).toggle();
779
- // var $d = $(">DIV", this.div);
780
- // this.tree.logDebug("_expand: got div, start toggle - %o", this);
781
- // $d.toggle();
782
- }
783
- //*/
784
- // this.tree.logDebug("_expand: end div toggle - %o", this);
785
-
786
- if ( opts.onExpand )
787
- opts.onExpand.call(this.span, bExpand, this);
788
- },
789
-
790
- expand: function(flag) {
791
- if( !this.childList && !this.data.isLazy && flag )
792
- return; // Prevent expanding empty nodes
793
- if( this.parent == null && this.tree.options.minExpandLevel>0 && !flag )
794
- return; // Prevent collapsing the root
795
- this._expand(flag);
796
- },
797
-
798
- toggleExpand: function() {
799
- this.expand(!this.bExpanded);
800
- },
801
-
802
- collapseSiblings: function() {
803
- if( this.parent == null )
804
- return;
805
- var ac = this.parent.childList;
806
- for (var i=0; i<ac.length; i++) {
807
- if ( ac[i] !== this && ac[i].bExpanded )
808
- ac[i]._expand(false);
809
- }
810
- },
811
-
812
- onClick: function(event) {
813
- // this.tree.logDebug("dtnode.onClick(" + event.type + "): dtnode:" + this + ", button:" + event.button + ", which: " + event.which);
814
- var targetType = this.getEventTargetType(event);
815
- if( targetType == "expander" ) {
816
- // Clicking the expander icon always expands/collapses
817
- this.toggleExpand();
818
- this.focus(); // issue 95
819
- } else if( targetType == "checkbox" ) {
820
- // Clicking the checkbox always (de)selects
821
- this.toggleSelect();
822
- this.focus(); // issue 95
823
- } else {
824
- this._userActivate();
825
- // Chrome and Safari don't focus the a-tag on click
826
- this.span.getElementsByTagName("a")[0].focus();
827
- }
828
- // Make sure that clicks stop, otherwise <a href='#'> jumps to the top
829
- return false;
830
- },
831
-
832
- onDblClick: function(event) {
833
- // this.tree.logDebug("dtnode.onDblClick(" + event.type + "): dtnode:" + this + ", button:" + event.button + ", which: " + event.which);
834
- },
835
-
836
- onKeydown: function(event) {
837
- // this.tree.logDebug("dtnode.onKeydown(" + event.type + "): dtnode:" + this + ", charCode:" + event.charCode + ", keyCode: " + event.keyCode + ", which: " + event.which);
838
- var handled = true;
839
- // alert("keyDown" + event.which);
840
-
841
- switch( event.which ) {
842
- // charCodes:
843
- // case 43: // '+'
844
- case 107: // '+'
845
- case 187: // '+' @ Chrome, Safari
846
- if( !this.bExpanded ) this.toggleExpand();
847
- break;
848
- // case 45: // '-'
849
- case 109: // '-'
850
- case 189: // '+' @ Chrome, Safari
851
- if( this.bExpanded ) this.toggleExpand();
852
- break;
853
- //~ case 42: // '*'
854
- //~ break;
855
- //~ case 47: // '/'
856
- //~ break;
857
- // case 13: // <enter>
858
- // <enter> on a focused <a> tag seems to generate a click-event.
859
- // this._userActivate();
860
- // break;
861
- case 32: // <space>
862
- this._userActivate();
863
- break;
864
- case 8: // <backspace>
865
- if( this.parent )
866
- this.parent.focus();
867
- break;
868
- case 37: // <left>
869
- if( this.bExpanded ) {
870
- this.toggleExpand();
871
- this.focus();
872
- } else if( this.parent && (this.tree.options.rootVisible || this.parent.parent) ) {
873
- this.parent.focus();
874
- }
875
- break;
876
- case 39: // <right>
877
- if( !this.bExpanded && (this.childList || this.data.isLazy) ) {
878
- this.toggleExpand();
879
- this.focus();
880
- } else if( this.childList ) {
881
- this.childList[0].focus();
882
- }
883
- break;
884
- case 38: // <up>
885
- var sib = this.prevSibling();
886
- while( sib && sib.bExpanded && sib.childList )
887
- sib = sib.childList[sib.childList.length-1];
888
- if( !sib && this.parent && (this.tree.options.rootVisible || this.parent.parent) )
889
- sib = this.parent;
890
- if( sib ) sib.focus();
891
- break;
892
- case 40: // <down>
893
- var sib;
894
- if( this.bExpanded && this.childList ) {
895
- sib = this.childList[0];
896
- } else {
897
- var parents = this._parentList(false, true);
898
- for(var i=parents.length-1; i>=0; i--) {
899
- sib = parents[i].nextSibling();
900
- if( sib ) break;
901
- }
902
- }
903
- if( sib ) sib.focus();
904
- break;
905
- default:
906
- handled = false;
907
- }
908
- // Return false, if handled, to prevent default processing
909
- return !handled;
910
- },
911
-
912
- onKeypress: function(event) {
913
- // onKeypress is only hooked to allow user callbacks.
914
- // We don't process it, because IE and Safari don't fire keypress for cursor keys.
915
- // this.tree.logDebug("dtnode.onKeypress(" + event.type + "): dtnode:" + this + ", charCode:" + event.charCode + ", keyCode: " + event.keyCode + ", which: " + event.which);
916
- },
917
-
918
- onFocus: function(event) {
919
- // Handles blur and focus events.
920
- // this.tree.logDebug("dtnode.onFocus(%o): %o", event, this);
921
- var opts = this.tree.options;
922
- if ( event.type=="blur" || event.type=="focusout" ) {
923
- if ( opts.onBlur ) // Pass element as 'this' (jQuery convention)
924
- opts.onBlur.call(this.span, this);
925
- if( this.tree.tnFocused )
926
- $(this.tree.tnFocused.span).removeClass(opts.classNames.focused);
927
- this.tree.tnFocused = null;
928
- if( opts.persist )
929
- $.cookie(opts.cookieId+"-focus", "", opts.cookie);
930
- } else if ( event.type=="focus" || event.type=="focusin") {
931
- // Fix: sometimes the blur event is not generated
932
- if( this.tree.tnFocused && this.tree.tnFocused !== this ) {
933
- this.tree.logDebug("dtnode.onFocus: out of sync: curFocus: %o", this.tree.tnFocused);
934
- $(this.tree.tnFocused.span).removeClass(opts.classNames.focused);
935
- }
936
- this.tree.tnFocused = this;
937
- if ( opts.onFocus ) // Pass element as 'this' (jQuery convention)
938
- opts.onFocus.call(this.span, this);
939
- $(this.tree.tnFocused.span).addClass(opts.classNames.focused);
940
- if( opts.persist )
941
- $.cookie(opts.cookieId+"-focus", this.data.key, opts.cookie);
942
- }
943
- // TODO: return anything?
944
- // return false;
945
- },
946
-
947
- visit: function(fn, data, includeSelf) {
948
- // Call fn(dtnode, data) for all child nodes. Stop iteration, if fn() returns false.
949
- var n = 0;
950
- if( includeSelf == true ) {
951
- if( fn(this, data) == false )
952
- return 1;
953
- n++;
954
- }
955
- if ( this.childList )
956
- for (var i=0; i<this.childList.length; i++)
957
- n += this.childList[i].visit(fn, data, true);
958
- return n;
959
- },
960
-
961
- remove: function() {
962
- // Remove this node
963
- // this.tree.logDebug ("%o.remove()", this);
964
- if ( this === this.tree.root )
965
- return false;
966
- return this.parent.removeChild(this);
967
- },
968
-
969
- removeChild: function(tn) {
970
- // Remove tn from list of direct children.
971
- var ac = this.childList;
972
- if( ac.length == 1 ) {
973
- if( tn !== ac[0] )
974
- throw "removeChild: invalid child";
975
- return this.removeChildren();
976
- }
977
- if( tn === this.tree.activeNode )
978
- tn.deactivate();
979
- if( this.tree.options.persist ) {
980
- if( tn.bSelected )
981
- this.tree.persistence.clearSelect(tn.data.key);
982
- if ( tn.bExpanded )
983
- this.tree.persistence.clearExpand(tn.data.key);
984
- }
985
- tn.removeChildren(true);
986
- this.div.removeChild(tn.div);
987
- for(var i=0; i<ac.length; i++) {
988
- if( ac[i] === tn ) {
989
- this.childList.splice(i, 1);
990
- delete tn;
991
- break;
992
- }
993
- }
994
- },
995
-
996
- removeChildren: function(isRecursiveCall, retainPersistence) {
997
- // Remove all child nodes (more efficiently than recursive remove())
998
- // this.tree.logDebug ("%o.removeChildren(%o)", this, isRecursiveCall);
999
- var tree = this.tree;
1000
- var ac = this.childList;
1001
- if( ac ) {
1002
- for(var i=0; i<ac.length; i++) {
1003
- var tn=ac[i];
1004
- // this.tree.logDebug ("del %o", tn);
1005
- if ( tn === tree.activeNode && !retainPersistence )
1006
- tn.deactivate();
1007
- if( this.tree.options.persist && !retainPersistence ) {
1008
- if( tn.bSelected )
1009
- this.tree.persistence.clearSelect(tn.data.key);
1010
- if ( tn.bExpanded )
1011
- this.tree.persistence.clearExpand(tn.data.key);
1012
- }
1013
- tn.removeChildren(true, retainPersistence);
1014
- this.div.removeChild(tn.div);
1015
- delete tn;
1016
- }
1017
- this.childList = null;
1018
- }
1019
- if( ! isRecursiveCall ) {
1020
- // this._expand(false);
1021
- // this.isRead = false;
1022
- this.isLoading = false;
1023
- this.render(false, false);
1024
- }
1025
- },
1026
-
1027
- reload: function(force) {
1028
- // Discard lazy content (and reload, if node was expanded).
1029
- if( this.parent == null )
1030
- return this.tree.reload();
1031
-
1032
- if( ! this.data.isLazy )
1033
- throw "node.reload() requires lazy nodes.";
1034
- if( this.bExpanded ) {
1035
- this.expand(false);
1036
- this.removeChildren();
1037
- this.expand(true);
1038
- } else {
1039
- this.removeChildren();
1040
- if( force )
1041
- this._loadContent();
1042
- }
1043
- },
1044
-
1045
- _addChildNode: function(dtnode, beforeNode) {
1046
- /**
1047
- * Internal function to add one single DynatreeNode as a child.
1048
- *
1049
- */
1050
- var tree = this.tree;
1051
- var opts = tree.options;
1052
- var pers = tree.persistence;
1053
-
1054
- // tree.logDebug("%o._addChildNode(%o)", this, dtnode);
1055
-
1056
- // --- Update and fix dtnode attributes if necessary
1057
- dtnode.parent = this;
1058
- // if( beforeNode && (beforeNode.parent !== this || beforeNode === dtnode ) )
1059
- // throw "<beforeNode> must be another child of <this>";
1060
-
1061
- // --- Add dtnode as a child
1062
- if ( this.childList==null ) {
1063
- this.childList = [];
1064
- } else if( ! beforeNode ) {
1065
- // Fix 'lastsib'
1066
- $(this.childList[this.childList.length-1].span).removeClass(opts.classNames.lastsib);
1067
- }
1068
- if( beforeNode ) {
1069
- var iBefore = $.inArray(beforeNode, this.childList);
1070
- if( iBefore < 0 )
1071
- throw "<beforeNode> must be a child of <this>";
1072
- this.childList.splice(iBefore, 0, dtnode);
1073
- // alert(this.childList);
1074
- } else {
1075
- // Append node
1076
- this.childList.push(dtnode);
1077
- }
1078
-
1079
- // --- Handle persistence
1080
- // Initial status is read from cookies, if persistence is active and
1081
- // cookies are already present.
1082
- // Otherwise the status is read from the data attributes and then persisted.
1083
- var isInitializing = tree.isInitializing();
1084
- if( opts.persist && pers.cookiesFound && isInitializing ) {
1085
- // Init status from cookies
1086
- // tree.logDebug("init from cookie, pa=%o, dk=%o", pers.activeKey, dtnode.data.key);
1087
- if( pers.activeKey == dtnode.data.key )
1088
- tree.activeNode = dtnode;
1089
- if( pers.focusedKey == dtnode.data.key )
1090
- tree.focusNode = dtnode;
1091
- dtnode.bExpanded = ($.inArray(dtnode.data.key, pers.expandedKeyList) >= 0);
1092
- dtnode.bSelected = ($.inArray(dtnode.data.key, pers.selectedKeyList) >= 0);
1093
- // tree.logDebug(" key=%o, bSelected=%o", dtnode.data.key, dtnode.bSelected);
1094
- } else {
1095
- // Init status from data (Note: we write the cookies after the init phase)
1096
- // tree.logDebug("init from data");
1097
- if( dtnode.data.activate ) {
1098
- tree.activeNode = dtnode;
1099
- if( opts.persist )
1100
- pers.activeKey = dtnode.data.key;
1101
- }
1102
- if( dtnode.data.focus ) {
1103
- tree.focusNode = dtnode;
1104
- if( opts.persist )
1105
- pers.focusedKey = dtnode.data.key;
1106
- }
1107
- dtnode.bExpanded = ( dtnode.data.expand == true ); // Collapsed by default
1108
- if( dtnode.bExpanded && opts.persist )
1109
- pers.addExpand(dtnode.data.key);
1110
- dtnode.bSelected = ( dtnode.data.select == true ); // Deselected by default
1111
- /*
1112
- Doesn't work, cause pers.selectedKeyList may be null
1113
- if( dtnode.bSelected && opts.selectMode==1
1114
- && pers.selectedKeyList && pers.selectedKeyList.length>0 ) {
1115
- tree.logWarning("Ignored multi-selection in single-mode for %o", dtnode);
1116
- dtnode.bSelected = false; // Fixing bad input data (multi selection for mode:1)
1117
- }
1118
- */
1119
- if( dtnode.bSelected && opts.persist )
1120
- pers.addSelect(dtnode.data.key);
1121
- }
1122
-
1123
- // Always expand, if it's below minExpandLevel
1124
- // tree.logDebug ("%o._addChildNode(%o), l=%o", this, dtnode, dtnode.getLevel());
1125
- if ( opts.minExpandLevel >= dtnode.getLevel() ) {
1126
- // tree.logDebug ("Force expand for %o", dtnode);
1127
- this.bExpanded = true;
1128
- }
1129
-
1130
- // In multi-hier mode, update the parents selection state
1131
- // issue #82: only if not initializing, because the children may not exist yet
1132
- // if( !dtnode.data.isStatusNode && opts.selectMode==3 && !isInitializing )
1133
- // dtnode._fixSelectionState();
1134
-
1135
- // In multi-hier mode, update the parents selection state
1136
- if( dtnode.bSelected && opts.selectMode==3 ) {
1137
- var p = this;
1138
- while( p ) {
1139
- if( !p.hasSubSel )
1140
- p._setSubSel(true);
1141
- p = p.parent;
1142
- }
1143
- }
1144
- // render this node and the new child
1145
- if ( tree.bEnableUpdate )
1146
- this.render(true, true);
1147
-
1148
- return dtnode;
1149
- },
1150
-
1151
- addChild: function(obj, beforeNode) {
1152
- /**
1153
- * Add a node object as child.
1154
- *
1155
- * This should be the only place, where a DynaTreeNode is constructed!
1156
- * (Except for the root node creation in the tree constructor)
1157
- *
1158
- * @param obj A JS object (may be recursive) or an array of those.
1159
- * @param {DynaTreeNode} beforeNode (optional) sibling node.
1160
- *
1161
- * Data format: array of node objects, with optional 'children' attributes.
1162
- * [
1163
- * { title: "t1", isFolder: true, ... }
1164
- * { title: "t2", isFolder: true, ...,
1165
- * children: [
1166
- * {title: "t2.1", ..},
1167
- * {..}
1168
- * ]
1169
- * }
1170
- * ]
1171
- * A simple object is also accepted instead of an array.
1172
- *
1173
- */
1174
- // this.tree.logDebug("%o.addChild(%o, %o)", this, obj, beforeNode);
1175
- if( !obj || obj.length==0 ) // Passed null or undefined or empty array
1176
- return;
1177
- if( obj instanceof DynaTreeNode )
1178
- return this._addChildNode(obj, beforeNode);
1179
- if( !obj.length ) // Passed a single data object
1180
- obj = [ obj ];
1181
-
1182
- var prevFlag = this.tree.enableUpdate(false);
1183
-
1184
- var tnFirst = null;
1185
- for (var i=0; i<obj.length; i++) {
1186
- var data = obj[i];
1187
- var dtnode = this._addChildNode(new DynaTreeNode(this, this.tree, data), beforeNode);
1188
- if( !tnFirst ) tnFirst = dtnode;
1189
- // Add child nodes recursively
1190
- if( data.children )
1191
- dtnode.addChild(data.children, null);
1192
- }
1193
- this.tree.enableUpdate(prevFlag);
1194
- return tnFirst;
1195
- },
1196
-
1197
- append: function(obj) {
1198
- this.tree.logWarning("node.append() is deprecated (use node.addChild() instead).");
1199
- return this.addChild(obj, null);
1200
- },
1201
-
1202
- appendAjax: function(ajaxOptions) {
1203
- this.removeChildren(false, true);
1204
- this.setLazyNodeStatus(DTNodeStatus_Loading);
1205
- // Ajax option inheritance: $.ajaxSetup < $.ui.dynatree.defaults.ajaxDefaults < tree.options.ajaxDefaults < ajaxOptions
1206
- var self = this;
1207
- var orgSuccess = ajaxOptions.success;
1208
- var orgError = ajaxOptions.error;
1209
- var options = $.extend({}, this.tree.options.ajaxDefaults, ajaxOptions, {
1210
- /*
1211
- complete: function(req, textStatus){
1212
- alert("ajax complete");
1213
- },
1214
- timeout: 5000, // 5 sec
1215
- */
1216
- success: function(data, textStatus){
1217
- // <this> is the request options
1218
- // self.tree.logDebug("appendAjax().success");
1219
- var prevPhase = self.tree.phase;
1220
- self.tree.phase = "init";
1221
- // self.append(data);
1222
- self.addChild(data, null);
1223
- self.tree.phase = "postInit";
1224
- self.setLazyNodeStatus(DTNodeStatus_Ok);
1225
- if( orgSuccess )
1226
- orgSuccess.call(options, self);
1227
- self.tree.phase = prevPhase;
1228
- },
1229
- error: function(XMLHttpRequest, textStatus, errorThrown){
1230
- // <this> is the request options
1231
- // self.tree.logDebug("appendAjax().error");
1232
- self.setLazyNodeStatus(DTNodeStatus_Error);
1233
- if( orgError )
1234
- orgError.call(options, self, XMLHttpRequest, textStatus, errorThrown);
1235
- }
1236
- });
1237
- $.ajax(options);
1238
- },
1239
- // --- end of class
1240
- lastentry: undefined
1241
- }
1242
-
1243
- /*************************************************************************
1244
- * class DynaTreeStatus
1245
- */
1246
-
1247
- var DynaTreeStatus = Class.create();
1248
-
1249
-
1250
- DynaTreeStatus._getTreePersistData = function(cookieId, cookieOpts) {
1251
- // Static member: Return persistence information from cookies
1252
- var ts = new DynaTreeStatus(cookieId, cookieOpts);
1253
- ts.read();
1254
- return ts.toDict();
1255
- }
1256
- // Make available in global scope
1257
- getDynaTreePersistData = DynaTreeStatus._getTreePersistData;
1258
-
1259
-
1260
- DynaTreeStatus.prototype = {
1261
- // Constructor
1262
- initialize: function(cookieId, cookieOpts) {
1263
- this._log("DynaTreeStatus: initialize");
1264
- if( cookieId === undefined )
1265
- cookieId = $.ui.dynatree.defaults.cookieId;
1266
- cookieOpts = $.extend({}, $.ui.dynatree.defaults.cookie, cookieOpts);
1267
-
1268
- this.cookieId = cookieId;
1269
- this.cookieOpts = cookieOpts;
1270
- this.cookiesFound = undefined;
1271
- this.activeKey = null;
1272
- this.focusedKey = null;
1273
- this.expandedKeyList = null;
1274
- this.selectedKeyList = null;
1275
- },
1276
- // member functions
1277
- _log: function(msg) {
1278
- // this.logDebug("_changeNodeList(%o): nodeList:%o, idx:%o", mode, nodeList, idx);
1279
- Array.prototype.unshift.apply(arguments, ["debug"]);
1280
- _log.apply(this, arguments);
1281
- },
1282
- read: function() {
1283
- this._log("DynaTreeStatus: read");
1284
- // Read or init cookies.
1285
- this.cookiesFound = false;
1286
-
1287
- var cookie = $.cookie(this.cookieId + "-active");
1288
- this.activeKey = ( cookie == null ) ? "" : cookie;
1289
- if( cookie != null ) this.cookiesFound = true;
1290
-
1291
- cookie = $.cookie(this.cookieId + "-focus");
1292
- this.focusedKey = ( cookie == null ) ? "" : cookie;
1293
- if( cookie != null ) this.cookiesFound = true;
1294
-
1295
- cookie = $.cookie(this.cookieId + "-expand");
1296
- this.expandedKeyList = ( cookie == null ) ? [] : cookie.split(",");
1297
- if( cookie != null ) this.cookiesFound = true;
1298
-
1299
- cookie = $.cookie(this.cookieId + "-select");
1300
- this.selectedKeyList = ( cookie == null ) ? [] : cookie.split(",");
1301
- if( cookie != null ) this.cookiesFound = true;
1302
- },
1303
- write: function() {
1304
- this._log("DynaTreeStatus: write");
1305
- $.cookie(this.cookieId + "-active", ( this.activeKey == null ) ? "" : this.activeKey, this.cookieOpts);
1306
- $.cookie(this.cookieId + "-focus", ( this.focusedKey == null ) ? "" : this.focusedKey, this.cookieOpts);
1307
- $.cookie(this.cookieId + "-expand", ( this.expandedKeyList == null ) ? "" : this.expandedKeyList.join(","), this.cookieOpts);
1308
- $.cookie(this.cookieId + "-select", ( this.selectedKeyList == null ) ? "" : this.selectedKeyList.join(","), this.cookieOpts);
1309
- },
1310
- addExpand: function(key) {
1311
- this._log("addExpand(%o)", key);
1312
- if( $.inArray(key, this.expandedKeyList) < 0 ) {
1313
- this.expandedKeyList.push(key);
1314
- $.cookie(this.cookieId + "-expand", this.expandedKeyList.join(","), this.cookieOpts);
1315
- }
1316
- },
1317
- clearExpand: function(key) {
1318
- this._log("clearExpand(%o)", key);
1319
- var idx = $.inArray(key, this.expandedKeyList);
1320
- if( idx >= 0 ) {
1321
- this.expandedKeyList.splice(idx, 1);
1322
- $.cookie(this.cookieId + "-expand", this.expandedKeyList.join(","), this.cookieOpts);
1323
- }
1324
- },
1325
- addSelect: function(key) {
1326
- this._log("addSelect(%o)", key);
1327
- if( $.inArray(key, this.selectedKeyList) < 0 ) {
1328
- this.selectedKeyList.push(key);
1329
- $.cookie(this.cookieId + "-select", this.selectedKeyList.join(","), this.cookieOpts);
1330
- }
1331
- },
1332
- clearSelect: function(key) {
1333
- this._log("clearSelect(%o)", key);
1334
- var idx = $.inArray(key, this.selectedKeyList);
1335
- if( idx >= 0 ) {
1336
- this.selectedKeyList.splice(idx, 1);
1337
- $.cookie(this.cookieId + "-select", this.selectedKeyList.join(","), this.cookieOpts);
1338
- }
1339
- },
1340
- isReloading: function() {
1341
- return this.cookiesFound == true;
1342
- },
1343
- toDict: function() {
1344
- return {
1345
- cookiesFound: this.cookiesFound,
1346
- activeKey: this.activeKey,
1347
- focusedKey: this.activeKey,
1348
- expandedKeyList: this.expandedKeyList,
1349
- selectedKeyList: this.selectedKeyList
1350
- };
1351
- },
1352
- // --- end of class
1353
- lastentry: undefined
1354
- };
1355
-
1356
-
1357
- /*************************************************************************
1358
- * class DynaTree
1359
- */
1360
-
1361
- var DynaTree = Class.create();
1362
-
1363
- // --- Static members ----------------------------------------------------------
1364
-
1365
- DynaTree.version = "$Version: 0.5.2$";
1366
- /*
1367
- DynaTree._initTree = function() {
1368
- };
1369
-
1370
- DynaTree._bind = function() {
1371
- };
1372
- */
1373
- //--- Class members ------------------------------------------------------------
1374
-
1375
- DynaTree.prototype = {
1376
- // Constructor
1377
- // initialize: function(divContainer, options) {
1378
- initialize: function($widget) {
1379
- // instance members
1380
- this.phase = "init";
1381
- this.$widget = $widget;
1382
- this.options = $widget.options;
1383
- this.$tree = $widget.element;
1384
- // find container element
1385
- this.divTree = this.$tree.get(0);
1386
- },
1387
-
1388
- // member functions
1389
-
1390
- _load: function() {
1391
- var $widget = this.$widget;
1392
- var opts = this.options;
1393
- this.bEnableUpdate = true;
1394
- this._nodeCount = 1;
1395
- this.activeNode = null;
1396
- this.focusNode = null;
1397
-
1398
- // If a 'options.classNames' dictionary was passed, still use defaults
1399
- // for undefined classes:
1400
- if( opts.classNames !== $.ui.dynatree.defaults.classNames ) {
1401
- opts.classNames = $.extend({}, $.ui.dynatree.defaults.classNames, opts.classNames);
1402
- }
1403
- // Guess skin path, if not specified
1404
- if(!opts.imagePath) {
1405
- $("script").each( function () {
1406
- // Eclipse syntax parser breaks on this expression, so put it at the bottom:
1407
- if( this.src.search(_rexDtLibName) >= 0 ) {
1408
- if( this.src.indexOf("/")>=0 ) // issue #47
1409
- opts.imagePath = this.src.slice(0, this.src.lastIndexOf("/")) + "/skin/";
1410
- else
1411
- opts.imagePath = "skin/";
1412
- // logMsg("Guessing imagePath from '%s': '%s'", this.src, opts.imagePath);
1413
- return false; // first match
1414
- }
1415
- });
1416
- }
1417
-
1418
- this.persistence = new DynaTreeStatus(opts.cookieId, opts.cookie);
1419
- if( opts.persist ) {
1420
- if( !$.cookie )
1421
- _log("warn", "Please include jquery.cookie.js to use persistence.");
1422
- this.persistence.read();
1423
- }
1424
- this.logDebug("DynaTree.persistence: %o", this.persistence.toDict());
1425
-
1426
- // Cached tag strings
1427
- this.cache = {
1428
- tagEmpty: "<span class='" + opts.classNames.empty + "'></span>",
1429
- tagVline: "<span class='" + opts.classNames.vline + "'></span>",
1430
- tagExpander: "<span class='" + opts.classNames.expander + "'></span>",
1431
- tagConnector: "<span class='" + opts.classNames.connector + "'></span>",
1432
- tagNodeIcon: "<span class='" + opts.classNames.nodeIcon + "'></span>",
1433
- tagCheckbox: "<span class='" + opts.classNames.checkbox + "'></span>",
1434
- lastentry: undefined
1435
- };
1436
-
1437
- // Clear container, in case it contained some 'waiting' or 'error' text
1438
- // for clients that don't support JS.
1439
- // We don't do this however, if we try to load from an embedded UL element.
1440
- if( opts.children || (opts.initAjax && opts.initAjax.url) || opts.initId )
1441
- $(this.divTree).empty();
1442
- else if( this.divRoot )
1443
- $(this.divRoot).remove();
1444
-
1445
- // create the root element
1446
- this.tnRoot = new DynaTreeNode(null, this, {title: opts.title, key: "root"});
1447
- this.tnRoot.data.isFolder = true;
1448
- this.tnRoot.render(false, false);
1449
- this.divRoot = this.tnRoot.div;
1450
- this.divRoot.className = opts.classNames.container;
1451
- // add root to container
1452
- // TODO: this should be delayed until all children have been created for performance reasons
1453
- this.divTree.appendChild(this.divRoot);
1454
-
1455
- var root = this.tnRoot;
1456
- var isReloading = ( opts.persist && this.persistence.isReloading() );
1457
- var isLazy = false;
1458
- var prevFlag = this.enableUpdate(false);
1459
-
1460
- this.logDebug("Dynatree._load(): read tree structure...");
1461
-
1462
- // Init tree structure
1463
- if( opts.children ) {
1464
- // Read structure from node array
1465
- root.addChild(opts.children);
1466
-
1467
- } else if( opts.initAjax && opts.initAjax.url ) {
1468
- // Init tree from AJAX request
1469
- isLazy = true;
1470
- root.data.isLazy = true;
1471
- this._reloadAjax();
1472
-
1473
- } else if( opts.initId ) {
1474
- // Init tree from another UL element
1475
- this._createFromTag(root, $("#"+opts.initId));
1476
-
1477
- } else {
1478
- // Init tree from the first UL element inside the container <div>
1479
- var $ul = this.$tree.find(">ul").hide();
1480
- this._createFromTag(root, $ul);
1481
- $ul.remove();
1482
- }
1483
-
1484
- this._checkConsistency();
1485
- // Render html markup
1486
- this.logDebug("Dynatree._load(): render nodes...");
1487
- this.enableUpdate(prevFlag);
1488
-
1489
- // bind event handlers
1490
- this.logDebug("Dynatree._load(): bind events...");
1491
- this.$widget.bind();
1492
-
1493
- // --- Post-load processing
1494
- this.logDebug("Dynatree._load(): postInit...");
1495
- this.phase = "postInit";
1496
-
1497
- // In persist mode, make sure that cookies are written, even if they are empty
1498
- if( opts.persist ) {
1499
- this.persistence.write();
1500
- }
1501
-
1502
- // Set focus, if possible (this will also fire an event and write a cookie)
1503
- if( this.focusNode && this.focusNode.isVisible() ) {
1504
- this.logDebug("Focus on init: %o", this.focusNode);
1505
- this.focusNode.focus();
1506
- }
1507
-
1508
- if( !isLazy && opts.onPostInit ) {
1509
- opts.onPostInit.call(this, isReloading, false);
1510
- }
1511
-
1512
- this.phase = "idle";
1513
- },
1514
-
1515
- _reloadAjax: function() {
1516
- // Reload
1517
- var opts = this.options;
1518
- if( ! opts.initAjax || ! opts.initAjax.url )
1519
- throw "tree.reload() requires 'initAjax' mode.";
1520
- var pers = this.persistence;
1521
- var ajaxOpts = $.extend({}, opts.initAjax);
1522
- // Append cookie info to the request
1523
- // this.logDebug("reloadAjax: key=%o, an.key:%o", pers.activeKey, this.activeNode?this.activeNode.data.key:"?");
1524
- if( ajaxOpts.addActiveKey )
1525
- ajaxOpts.data.activeKey = pers.activeKey;
1526
- if( ajaxOpts.addFocusedKey )
1527
- ajaxOpts.data.focusedKey = pers.focusedKey;
1528
- if( ajaxOpts.addExpandedKeyList )
1529
- ajaxOpts.data.expandedKeyList = pers.expandedKeyList.join(",");
1530
- if( ajaxOpts.addSelectedKeyList )
1531
- ajaxOpts.data.selectedKeyList = pers.selectedKeyList.join(",");
1532
-
1533
- // Set up onPostInit callback to be called when Ajax returns
1534
- if( opts.onPostInit ) {
1535
- if( ajaxOpts.success )
1536
- this.tree.logWarning("initAjax: success callback is ignored when onPostInit was specified.");
1537
- if( ajaxOpts.error )
1538
- this.tree.logWarning("initAjax: error callback is ignored when onPostInit was specified.");
1539
- var isReloading = pers.isReloading();
1540
- ajaxOpts["success"] = function(dtnode) { opts.onPostInit.call(dtnode.tree, isReloading, false); };
1541
- ajaxOpts["error"] = function(dtnode) { opts.onPostInit.call(dtnode.tree, isReloading, true); };
1542
- }
1543
- this.logDebug("Dynatree._init(): send Ajax request...");
1544
- this.tnRoot.appendAjax(ajaxOpts);
1545
- },
1546
-
1547
- toString: function() {
1548
- return "DynaTree '" + this.options.title + "'";
1549
- },
1550
-
1551
- toDict: function() {
1552
- return this.tnRoot.toDict(true);
1553
- },
1554
-
1555
- getPersistData: function() {
1556
- return this.persistence.toDict();
1557
- },
1558
-
1559
- logDebug: function(msg) {
1560
- if( this.options.debugLevel >= 2 ) {
1561
- Array.prototype.unshift.apply(arguments, ["debug"]);
1562
- _log.apply(this, arguments);
1563
- }
1564
- },
1565
-
1566
- logInfo: function(msg) {
1567
- if( this.options.debugLevel >= 1 ) {
1568
- Array.prototype.unshift.apply(arguments, ["info"]);
1569
- _log.apply(this, arguments);
1570
- }
1571
- },
1572
-
1573
- logWarning: function(msg) {
1574
- Array.prototype.unshift.apply(arguments, ["warn"]);
1575
- _log.apply(this, arguments);
1576
- },
1577
-
1578
- isInitializing: function() {
1579
- return ( this.phase=="init" || this.phase=="postInit" );
1580
- },
1581
- isReloading: function() {
1582
- return ( this.phase=="init" || this.phase=="postInit" ) && this.options.persist && this.persistence.cookiesFound;
1583
- },
1584
- isUserEvent: function() {
1585
- return ( this.phase=="userEvent" );
1586
- },
1587
-
1588
- redraw: function() {
1589
- this.logDebug("dynatree.redraw()...");
1590
- this.tnRoot.render(true, true);
1591
- this.logDebug("dynatree.redraw() done.");
1592
- },
1593
-
1594
- reloadAjax: function() {
1595
- this.logWarning("tree.reloadAjax() is deprecated since v0.5.2 (use reload() instead).");
1596
- },
1597
-
1598
- reload: function() {
1599
- this._load();
1600
- },
1601
-
1602
- getRoot: function() {
1603
- return this.tnRoot;
1604
- },
1605
-
1606
- getNodeByKey: function(key) {
1607
- // $("#...") has problems, if the key contains '.', so we use getElementById()
1608
- // return $("#" + this.options.idPrefix + key).attr("dtnode");
1609
- var el = document.getElementById(this.options.idPrefix + key);
1610
- return ( el && el.dtnode ) ? el.dtnode : null;
1611
- },
1612
-
1613
- getActiveNode: function() {
1614
- return this.activeNode;
1615
- },
1616
-
1617
- reactivate: function(setFocus) {
1618
- // Re-fire onQueryActivate and onActivate events.
1619
- var node = this.activeNode;
1620
- // this.logDebug("reactivate %o", node);
1621
- if( node ) {
1622
- this.activeNode = null; // Force re-activating
1623
- node.activate();
1624
- if( setFocus )
1625
- node.focus();
1626
- }
1627
- },
1628
-
1629
- getSelectedNodes: function(stopOnParents) {
1630
- var nodeList = [];
1631
- this.tnRoot.visit(function(dtnode){
1632
- if( dtnode.bSelected ) {
1633
- nodeList.push(dtnode);
1634
- if( stopOnParents == true )
1635
- return false; // stop processing this branch
1636
- }
1637
- });
1638
- return nodeList;
1639
- },
1640
-
1641
- activateKey: function(key) {
1642
- var dtnode = (key === null) ? null : this.getNodeByKey(key);
1643
- if( !dtnode ) {
1644
- if( this.activeNode )
1645
- this.activeNode.deactivate();
1646
- this.activeNode = null;
1647
- return null;
1648
- }
1649
- dtnode.focus();
1650
- dtnode.activate();
1651
- return dtnode;
1652
- },
1653
-
1654
- selectKey: function(key, select) {
1655
- var dtnode = this.getNodeByKey(key);
1656
- if( !dtnode )
1657
- return null;
1658
- dtnode.select(select);
1659
- return dtnode;
1660
- },
1661
-
1662
- enableUpdate: function(bEnable) {
1663
- if ( this.bEnableUpdate==bEnable )
1664
- return bEnable;
1665
- this.bEnableUpdate = bEnable;
1666
- if ( bEnable )
1667
- this.redraw();
1668
- return !bEnable; // return previous value
1669
- },
1670
-
1671
- visit: function(fn, data, includeRoot) {
1672
- return this.tnRoot.visit(fn, data, includeRoot);
1673
- },
1674
-
1675
- _createFromTag: function(parentTreeNode, $ulParent) {
1676
- // Convert a <UL>...</UL> list into children of the parent tree node.
1677
- var self = this;
1678
- /*
1679
- TODO: better?
1680
- this.$lis = $("li:has(a[href])", this.element);
1681
- this.$tabs = this.$lis.map(function() { return $("a", this)[0]; });
1682
- */
1683
- $ulParent.find(">li").each(function() {
1684
- var $li = $(this);
1685
- var $liSpan = $li.find(">span:first");
1686
- var title;
1687
- if( $liSpan.length ) {
1688
- // If a <li><span> tag is specified, use it literally.
1689
- title = $liSpan.html();
1690
- } else {
1691
- // If only a <li> tag is specified, use the trimmed string up to the next child <ul> tag.
1692
- title = $li.html();
1693
- var iPos = title.search(/<ul/i);
1694
- if( iPos>=0 )
1695
- title = $.trim(title.substring(0, iPos));
1696
- else
1697
- title = $.trim(title);
1698
- // self.logDebug("%o", title);
1699
- }
1700
- // Parse node options from ID, title and class attributes
1701
- var data = {
1702
- title: title,
1703
- isFolder: $li.hasClass("folder"),
1704
- isLazy: $li.hasClass("lazy"),
1705
- expand: $li.hasClass("expanded"),
1706
- select: $li.hasClass("selected"),
1707
- activate: $li.hasClass("active"),
1708
- focus: $li.hasClass("focused")
1709
- };
1710
- if( $li.attr("title") )
1711
- data.tooltip = $li.attr("title");
1712
- if( $li.attr("id") )
1713
- data.key = $li.attr("id");
1714
- // If a data attribute is present, evaluate as a JavaScript object
1715
- if( $li.attr("data") ) {
1716
- var dataAttr = $.trim($li.attr("data"));
1717
- if( dataAttr ) {
1718
- if( dataAttr.charAt(0) != "{" )
1719
- dataAttr = "{" + dataAttr + "}"
1720
- try {
1721
- $.extend(data, eval("(" + dataAttr + ")"));
1722
- } catch(e) {
1723
- throw ("Error parsing node data: " + e + "\ndata:\n'" + dataAttr + "'");
1724
- }
1725
- }
1726
- }
1727
- childNode = parentTreeNode.addChild(data);
1728
- // Recursive reading of child nodes, if LI tag contains an UL tag
1729
- var $ul = $li.find(">ul:first");
1730
- if( $ul.length ) {
1731
- self._createFromTag(childNode, $ul); // must use 'self', because 'this' is the each() context
1732
- }
1733
- });
1734
- },
1735
-
1736
- _checkConsistency: function() {
1737
- // this.logDebug("tree._checkConsistency() NOT IMPLEMENTED - %o", this);
1738
- },
1739
-
1740
- // --- end of class
1741
- lastentry: undefined
1742
- };
1743
-
1744
- /*************************************************************************
1745
- * widget $(..).dynatree
1746
- */
1747
-
1748
- $.widget("ui.dynatree", {
1749
- init: function() {
1750
- // ui.core 1.6 renamed init() to _init(): this stub assures backward compatibility
1751
- _log("warn", "ui.dynatree.init() was called; you should upgrade to ui.core.js v1.6 or higher.");
1752
- return this._init();
1753
- },
1754
-
1755
- _init: function() {
1756
- logMsg("Dynatree._init(): version='%s', debugLevel=%o.", DynaTree.version, this.options.debugLevel);
1757
-
1758
- var opts = this.options;
1759
- // The widget framework supplies this.element and this.options.
1760
- this.options.event += ".dynatree"; // namespace event
1761
-
1762
- var divTree = this.element.get(0);
1763
- /* // Clear container, in case it contained some 'waiting' or 'error' text
1764
- // for clients that don't support JS
1765
- if( opts.children || (opts.initAjax && opts.initAjax.url) || opts.initId )
1766
- $(divTree).empty();
1767
- */
1768
- // Create the DynaTree object
1769
- this.tree = new DynaTree(this);
1770
- this.tree._load();
1771
- this.tree.logDebug("Dynatree._init(): done.");
1772
- },
1773
-
1774
- bind: function() {
1775
- var $this = this.element;
1776
- var o = this.options;
1777
-
1778
- // Prevent duplicate binding
1779
- this.unbind();
1780
-
1781
- // Tool function to get dtnode from the event target:
1782
- function __getNodeFromElement(el) {
1783
- var iMax = 5;
1784
- while( el && iMax-- ) {
1785
- if( el.dtnode ) return el.dtnode;
1786
- el = el.parentNode;
1787
- };
1788
- return null;
1789
- }
1790
-
1791
- var eventNames = "click.dynatree dblclick.dynatree";
1792
- if( o.keyboard ) // Note: leading ' '!
1793
- eventNames += " keypress.dynatree keydown.dynatree";
1794
- $this.bind(eventNames, function(event){
1795
- var dtnode = __getNodeFromElement(event.target);
1796
- if( !dtnode )
1797
- return true; // Allow bubbling of other events
1798
- var prevPhase = dtnode.tree.phase;
1799
- dtnode.tree.phase = "userEvent";
1800
- try {
1801
- dtnode.tree.logDebug("bind(%o): dtnode: %o", event, dtnode);
1802
-
1803
- switch(event.type) {
1804
- case "click":
1805
- return ( o.onClick && o.onClick(dtnode, event)===false ) ? false : dtnode.onClick(event);
1806
- case "dblclick":
1807
- return ( o.onDblClick && o.onDblClick(dtnode, event)===false ) ? false : dtnode.onDblClick(event);
1808
- case "keydown":
1809
- return ( o.onKeydown && o.onKeydown(dtnode, event)===false ) ? false : dtnode.onKeydown(event);
1810
- case "keypress":
1811
- return ( o.onKeypress && o.onKeypress(dtnode, event)===false ) ? false : dtnode.onKeypress(event);
1812
- };
1813
- } catch(e) {
1814
- var _ = null; // issue 117
1815
- // dtnode.tree.logError("bind(%o): dtnode: %o", event, dtnode);
1816
- } finally {
1817
- dtnode.tree.phase = prevPhase;
1818
- }
1819
- });
1820
-
1821
- // focus/blur don't bubble, i.e. are not delegated to parent <div> tags,
1822
- // so we use the addEventListener capturing phase.
1823
- // See http://www.howtocreate.co.uk/tutorials/javascript/domevents
1824
- function __focusHandler(event) {
1825
- // Handles blur and focus.
1826
- // Fix event for IE:
1827
- event = arguments[0] = $.event.fix( event || window.event );
1828
- var dtnode = __getNodeFromElement(event.target);
1829
- return dtnode ? dtnode.onFocus(event) : false;
1830
- }
1831
- var div = this.tree.divTree;
1832
- if( div.addEventListener ) {
1833
- div.addEventListener("focus", __focusHandler, true);
1834
- div.addEventListener("blur", __focusHandler, true);
1835
- } else {
1836
- div.onfocusin = div.onfocusout = __focusHandler;
1837
- }
1838
- // EVENTS
1839
- // disable click if event is configured to something else
1840
- // if (!(/^click/).test(o.event))
1841
- // this.$tabs.bind("click.tabs", function() { return false; });
1842
-
1843
- },
1844
-
1845
- unbind: function() {
1846
- this.element.unbind(".dynatree");
1847
- },
1848
-
1849
- /* TODO: we could handle option changes during runtime here (maybe to re-render, ...)
1850
- setData: function(key, value) {
1851
- this.tree.logDebug("dynatree.setData('" + key + "', '" + value + "')");
1852
- },
1853
- */
1854
- enable: function() {
1855
- this.bind();
1856
- // Call default disable(): remove -disabled from css:
1857
- $.widget.prototype.enable.apply(this, arguments);
1858
- },
1859
-
1860
- disable: function() {
1861
- this.unbind();
1862
- // Call default disable(): add -disabled to css:
1863
- $.widget.prototype.disable.apply(this, arguments);
1864
- },
1865
-
1866
- // --- getter methods (i.e. NOT returning a reference to $)
1867
- getTree: function() {
1868
- return this.tree;
1869
- },
1870
-
1871
- getRoot: function() {
1872
- return this.tree.getRoot();
1873
- },
1874
-
1875
- getActiveNode: function() {
1876
- return this.tree.getActiveNode();
1877
- },
1878
-
1879
- getSelectedNodes: function() {
1880
- return this.tree.getSelectedNodes();
1881
- },
1882
-
1883
- // ------------------------------------------------------------------------
1884
- lastentry: undefined
1885
- });
1886
-
1887
-
1888
- // The following methods return a value (thus breaking the jQuery call chain):
1889
-
1890
- $.ui.dynatree.getter = "getTree getRoot getActiveNode getSelectedNodes";
1891
-
1892
-
1893
- // Plugin default options:
1894
-
1895
- $.ui.dynatree.defaults = {
1896
- title: "Dynatree root", // Name of the root node.
1897
- rootVisible: false, // Set to true, to make the root node visible.
1898
- minExpandLevel: 1, // 1: root node is not collapsible
1899
- imagePath: null, // Path to a folder containing icons. Defaults to 'skin/' subdirectory.
1900
- children: null, // Init tree structure from this object array.
1901
- initId: null, // Init tree structure from a <ul> element with this ID.
1902
- initAjax: null, // Ajax options used to initialize the tree strucuture.
1903
- autoFocus: true, // Set focus to first child, when expanding or lazy-loading.
1904
- keyboard: true, // Support keyboard navigation.
1905
- persist: false, // Persist expand-status to a cookie
1906
- autoCollapse: false, // Automatically collapse all siblings, when a node is expanded.
1907
- clickFolderMode: 3, // 1:activate, 2:expand, 3:activate and expand
1908
- activeVisible: true, // Make sure, active nodes are visible (expanded).
1909
- checkbox: false, // Show checkboxes.
1910
- selectMode: 2, // 1:single, 2:multi, 3:multi-hier
1911
- fx: null, // Animations, e.g. null or { height: "toggle", duration: 200 }
1912
-
1913
- // Low level event handlers: onEvent(dtnode, event): return false, to stop default processing
1914
- onClick: null, // null: generate focus, expand, activate, select events.
1915
- onDblClick: null, // (No default actions.)
1916
- onKeydown: null, // null: generate keyboard navigation (focus, expand, activate).
1917
- onKeypress: null, // (No default actions.)
1918
- onFocus: null, // null: set focus to node.
1919
- onBlur: null, // null: remove focus from node.
1920
-
1921
- // Pre-event handlers onQueryEvent(flag, dtnode): return false, to stop processing
1922
- onQueryActivate: null, // Callback(flag, dtnode) before a node is (de)activated.
1923
- onQuerySelect: null, // Callback(flag, dtnode) before a node is (de)selected.
1924
- onQueryExpand: null, // Callback(flag, dtnode) before a node is expanded/collpsed.
1925
-
1926
- // High level event handlers
1927
- onPostInit: null, // Callback(isReloading, isError) when tree was (re)loaded.
1928
- onActivate: null, // Callback(dtnode) when a node is activated.
1929
- onDeactivate: null, // Callback(dtnode) when a node is deactivated.
1930
- onSelect: null, // Callback(flag, dtnode) when a node is (de)selected.
1931
- onExpand: null, // Callback(dtnode) when a node is expanded/collapsed.
1932
- onLazyRead: null, // Callback(dtnode) when a lazy node is expanded for the first time.
1933
-
1934
- ajaxDefaults: { // Used by initAjax option
1935
- cache: false, // false: Append random '_' argument to the request url to prevent caching.
1936
- dataType: "json" // Expect json format and pass json object to callbacks.
1937
- },
1938
- strings: {
1939
- loading: "Loading&#8230;",
1940
- loadError: "Load error!"
1941
- },
1942
- idPrefix: "ui-dynatree-id-", // Used to generate node id's like <span id="ui-dynatree-id-<key>">.
1943
- // cookieId: "ui-dynatree-cookie", // Choose a more unique name, to allow multiple trees.
1944
- cookieId: "dynatree", // Choose a more unique name, to allow multiple trees.
1945
- cookie: {
1946
- expires: null //7, // Days or Date; null: session cookie
1947
- // path: "/", // Defaults to current page
1948
- // domain: "jquery.com",
1949
- // secure: true
1950
- },
1951
- // Class names used, when rendering the HTML markup.
1952
- // Note: if only single entries are passed for options.classNames, all other
1953
- // values are still set to default.
1954
- classNames: {
1955
- container: "ui-dynatree-container",
1956
- folder: "ui-dynatree-folder",
1957
- document: "ui-dynatree-document",
1958
-
1959
- empty: "ui-dynatree-empty",
1960
- vline: "ui-dynatree-vline",
1961
- expander: "ui-dynatree-expander",
1962
- connector: "ui-dynatree-connector",
1963
- checkbox: "ui-dynatree-checkbox",
1964
- nodeIcon: "ui-dynatree-icon",
1965
- title: "ui-dynatree-title",
1966
-
1967
- nodeError: "ui-dynatree-statusnode-error",
1968
- nodeWait: "ui-dynatree-statusnode-wait",
1969
- hidden: "ui-dynatree-hidden",
1970
- combinedExpanderPrefix: "ui-dynatree-exp-",
1971
- combinedIconPrefix: "ui-dynatree-ico-",
1972
- // disabled: "ui-dynatree-disabled",
1973
- hasChildren: "ui-dynatree-has-children",
1974
- active: "ui-dynatree-active",
1975
- selected: "ui-dynatree-selected",
1976
- expanded: "ui-dynatree-expanded",
1977
- lazy: "ui-dynatree-lazy",
1978
- focused: "ui-dynatree-focused",
1979
- partsel: "ui-dynatree-partsel",
1980
- lastsib: "ui-dynatree-lastsib"
1981
- },
1982
- debugLevel: 1,
1983
-
1984
- // ------------------------------------------------------------------------
1985
- lastentry: undefined
1986
- };
1987
-
1988
- /**
1989
- * Reserved data attributes for a tree node.
1990
- */
1991
- $.ui.dynatree.nodedatadefaults = {
1992
- title: null, // (required) Displayed name of the node (html is allowed here)
1993
- key: null, // May be used with activate(), select(), find(), ...
1994
- isFolder: false, // Use a folder icon. Also the node is expandable but not selectable.
1995
- isLazy: false, // Call onLazyRead(), when the node is expanded for the first time to allow for delayed creation of children.
1996
- tooltip: null, // Show this popup text.
1997
- icon: null, // Use a custom image (filename relative to tree.options.imagePath). 'null' for default icon, 'false' for no icon.
1998
- addClass: null, // Class name added to the node's span tag.
1999
- activate: false, // Initial active status.
2000
- focus: false, // Initial focused status.
2001
- expand: false, // Initial expanded status.
2002
- select: false, // Initial selected status.
2003
- hideCheckbox: false, // Suppress checkbox display for this node.
2004
- unselectable: false, // Prevent selection.
2005
- // disabled: false,
2006
- // The following attributes are only valid if passed to some functions:
2007
- children: null, // Array of child nodes.
2008
- // NOTE: we can also add custom attributes here.
2009
- // This may then also be used in the onActivate(), onSelect() or onLazyTree() callbacks.
2010
- // ------------------------------------------------------------------------
2011
- lastentry: undefined
2012
- };
2013
-
2014
- // ---------------------------------------------------------------------------
2015
- })(jQuery);
2016
-
2017
- // Eclipse syntax parser breaks on this expression, so we put it at the bottom.
2018
- var _rexDtLibName = /.*dynatree[^/]*\.js$/i;
1
+ /*************************************************************************
2
+ jquery.dynatree.js
3
+ Dynamic tree view control, with support for lazy loading of branches.
4
+
5
+ Copyright (c) 2008-2010 Martin Wendt (http://wwWendt.de)
6
+ Licensed under the MIT License (MIT-License.txt)
7
+
8
+ A current version and some documentation is available at
9
+ http://dynatree.googlecode.com/
10
+
11
+ Let me know, if you find bugs or improvements (martin at domain wwWendt.de).
12
+
13
+ $Version: 0.5.3$
14
+ $Revision: 313, 2010-03-15 15:55:09$
15
+
16
+ @depends: jquery.js
17
+ @depends: ui.core.js
18
+ @depends: jquery.cookie.js
19
+ *************************************************************************/
20
+
21
+
22
+ /*************************************************************************
23
+ * Debug functions
24
+ */
25
+
26
+ var _canLog = true;
27
+
28
+ function _log(mode, msg) {
29
+ /**
30
+ * Usage: logMsg("%o was toggled", this);
31
+ */
32
+ if( !_canLog )
33
+ return;
34
+ // Remove first argument
35
+ var args = Array.prototype.slice.apply(arguments, [1]);
36
+ // Prepend timestamp
37
+ var dt = new Date();
38
+ var tag = dt.getHours()+":"+dt.getMinutes()+":"+dt.getSeconds()+"."+dt.getMilliseconds();
39
+ args[0] = tag + " - " + args[0];
40
+
41
+ try {
42
+ switch( mode ) {
43
+ case "info":
44
+ window.console.info.apply(window.console, args);
45
+ break;
46
+ case "warn":
47
+ window.console.warn.apply(window.console, args);
48
+ break;
49
+ default:
50
+ window.console.log.apply(window.console, args);
51
+ }
52
+ } catch(e) {
53
+ if( !window.console )
54
+ _canLog = false; // Permanently disable, when logging is not supported by the browser
55
+ }
56
+ }
57
+
58
+ function logMsg(msg) {
59
+ Array.prototype.unshift.apply(arguments, ["debug"]);
60
+ _log.apply(this, arguments);
61
+ }
62
+
63
+
64
+ // Forward declaration
65
+ var getDynaTreePersistData = undefined;
66
+
67
+
68
+
69
+ /*************************************************************************
70
+ * Constants
71
+ */
72
+ var DTNodeStatus_Error = -1;
73
+ var DTNodeStatus_Loading = 1;
74
+ var DTNodeStatus_Ok = 0;
75
+
76
+
77
+ // Start of local namespace
78
+ ;(function($) {
79
+
80
+ /*************************************************************************
81
+ * Common tool functions.
82
+ */
83
+
84
+ var Class = {
85
+ create: function() {
86
+ return function() {
87
+ this.initialize.apply(this, arguments);
88
+ }
89
+ }
90
+ }
91
+
92
+ /*************************************************************************
93
+ * Class DynaTreeNode
94
+ */
95
+ var DynaTreeNode = Class.create();
96
+
97
+ DynaTreeNode.prototype = {
98
+ initialize: function(parent, tree, data) {
99
+ /**
100
+ * @constructor
101
+ */
102
+ this.parent = parent;
103
+ this.tree = tree;
104
+ if ( typeof data == "string" )
105
+ data = { title: data };
106
+ if( data.key == undefined )
107
+ data.key = "_" + tree._nodeCount++;
108
+ this.data = $.extend({}, $.ui.dynatree.nodedatadefaults, data);
109
+ this.div = null; // not yet created
110
+ this.span = null; // not yet created
111
+ this.childList = null; // no subnodes yet
112
+ // this.isRead = false; // Lazy content not yet read
113
+ this.isLoading = false; // Lazy content is being loaded
114
+ this.hasSubSel = false;
115
+ },
116
+
117
+ toString: function() {
118
+ return "dtnode<" + this.data.key + ">: '" + this.data.title + "'";
119
+ },
120
+
121
+ toDict: function(recursive, callback) {
122
+ var dict = $.extend({}, this.data);
123
+ dict.activate = ( this.tree.activeNode === this );
124
+ dict.focus = ( this.tree.focusNode === this );
125
+ dict.expand = this.bExpanded;
126
+ dict.select = this.bSelected;
127
+ if( callback )
128
+ callback(dict);
129
+ if( recursive && this.childList ) {
130
+ dict.children = [];
131
+ for(var i=0; i<this.childList.length; i++ )
132
+ dict.children.push(this.childList[i].toDict(true, callback));
133
+ } else {
134
+ delete dict.children;
135
+ }
136
+ return dict;
137
+ },
138
+
139
+ _getInnerHtml: function() {
140
+ var opts = this.tree.options;
141
+ var cache = this.tree.cache;
142
+ // parent connectors
143
+ var rootParent = opts.rootVisible ? null : this.tree.tnRoot;
144
+ var bHideFirstExpander = (opts.rootVisible && opts.minExpandLevel>0) || opts.minExpandLevel>1;
145
+ var bHideFirstConnector = opts.rootVisible || opts.minExpandLevel>0;
146
+
147
+ var res = "";
148
+ var p = this.parent;
149
+ while( p ) {
150
+ // Suppress first connector column, if visible top level is always expanded
151
+ if ( bHideFirstConnector && p==rootParent )
152
+ break;
153
+ res = ( p.isLastSibling() ? cache.tagEmpty : cache.tagVline) + res;
154
+ p = p.parent;
155
+ }
156
+
157
+ // connector (expanded, expandable or simple)
158
+ if( bHideFirstExpander && this.parent==rootParent ) {
159
+ // skip connector
160
+ } else if ( this.childList || this.data.isLazy ) {
161
+ res += cache.tagExpander;
162
+ } else {
163
+ res += cache.tagConnector;
164
+ }
165
+
166
+ // Checkbox mode
167
+ if( opts.checkbox && this.data.hideCheckbox!=true && !this.data.isStatusNode ) {
168
+ res += cache.tagCheckbox;
169
+ }
170
+
171
+ // folder or doctype icon
172
+ if ( this.data.icon ) {
173
+ res += "<img src='" + opts.imagePath + this.data.icon + "' alt='' />";
174
+ } else if ( this.data.icon == false ) {
175
+ // icon == false means 'no icon'
176
+ } else {
177
+ // icon == null means 'default icon'
178
+ res += cache.tagNodeIcon;
179
+ }
180
+
181
+ // node name
182
+ var tooltip = ( this.data && typeof this.data.tooltip == "string" ) ? " title='" + this.data.tooltip + "'" : "";
183
+ res += "<a href='#' class='" + opts.classNames.title + "'" + tooltip + ">" + this.data.title + "</a>";
184
+ return res;
185
+ },
186
+
187
+ _fixOrder: function() {
188
+ /**
189
+ * Make sure, that <div> order matches childList order.
190
+ */
191
+ var cl = this.childList;
192
+ if( !cl )
193
+ return;
194
+ var childDiv = this.div.firstChild.nextSibling;
195
+ for(var i=0; i<cl.length-1; i++) {
196
+ var childNode1 = cl[i];
197
+ var childNode2 = childDiv.firstChild.dtnode;
198
+ if( childNode1 !== childNode2 ) {
199
+ //
200
+ this.tree.logDebug("_fixOrder: mismatch at index " + i + ": " + childNode1 + " != " + childNode2);
201
+ this.div.insertBefore(childNode1.div, childNode2.div);
202
+ } else {
203
+ childDiv = childDiv.nextSibling;
204
+ }
205
+ }
206
+ },
207
+
208
+ render: function(bDeep, bHidden) {
209
+ /**
210
+ * Create HTML markup for this node.
211
+ *
212
+ * <div> // This div contains the node's span and list of child div's.
213
+ * <span id='key'>S S S A</span> // Span contains graphic spans and title <a> tag
214
+ * <div>child1</div>
215
+ * <div>child2</div>
216
+ * </div>
217
+ */
218
+ // this.tree.logDebug("%o.render()", this);
219
+ var opts = this.tree.options;
220
+ var cn = opts.classNames;
221
+ var isLastSib = this.isLastSibling();
222
+ // ---
223
+ if( ! this.div ) {
224
+ this.span = document.createElement("span");
225
+ this.span.dtnode = this;
226
+ if( this.data.key )
227
+ this.span.id = this.tree.options.idPrefix + this.data.key;
228
+ this.div = document.createElement("div");
229
+ this.div.appendChild(this.span);
230
+
231
+ if ( this.parent ) {
232
+ this.parent.div.appendChild(this.div);
233
+ }
234
+
235
+ if( this.parent==null && !this.tree.options.rootVisible )
236
+ this.span.style.display = "none";
237
+ }
238
+ // set node connector images, links and text
239
+ this.span.innerHTML = this._getInnerHtml();
240
+
241
+ // hide this node, if parent is collapsed
242
+ this.div.style.display = ( this.parent==null || this.parent.bExpanded ? "" : "none");
243
+
244
+ // Set classes for current status
245
+ var cnList = [];
246
+ cnList.push( ( this.data.isFolder ) ? cn.folder : cn.document );
247
+ if( this.bExpanded )
248
+ cnList.push(cn.expanded);
249
+ if( this.childList != null )
250
+ cnList.push(cn.hasChildren);
251
+ if( this.data.isLazy && this.childList==null )
252
+ cnList.push(cn.lazy);
253
+ if( isLastSib )
254
+ cnList.push(cn.lastsib);
255
+ if( this.bSelected )
256
+ cnList.push(cn.selected);
257
+ if( this.hasSubSel )
258
+ cnList.push(cn.partsel);
259
+ if( this.tree.activeNode === this )
260
+ cnList.push(cn.active);
261
+ if( this.data.addClass )
262
+ cnList.push(this.data.addClass);
263
+ // IE6 doesn't correctly evaluate multiple class names,
264
+ // so we create combined class names that can be used in the CSS
265
+ cnList.push(cn.combinedExpanderPrefix
266
+ + (this.bExpanded ? "e" : "c")
267
+ + (this.data.isLazy && this.childList==null ? "d" : "")
268
+ + (isLastSib ? "l" : "")
269
+ );
270
+ cnList.push(cn.combinedIconPrefix
271
+ + (this.bExpanded ? "e" : "c")
272
+ + (this.data.isFolder ? "f" : "")
273
+ );
274
+ this.span.className = cnList.join(" ");
275
+
276
+ if( bDeep && this.childList && (bHidden || this.bExpanded) ) {
277
+ for(var i=0; i<this.childList.length; i++) {
278
+ this.childList[i].render(bDeep, bHidden)
279
+ }
280
+ this._fixOrder();
281
+ }
282
+ },
283
+
284
+ hasChildren: function() {
285
+ return this.childList != null;
286
+ },
287
+
288
+ isLastSibling: function() {
289
+ var p = this.parent;
290
+ if ( !p ) return true;
291
+ return p.childList[p.childList.length-1] === this;
292
+ },
293
+
294
+ prevSibling: function() {
295
+ if( !this.parent ) return null;
296
+ var ac = this.parent.childList;
297
+ for(var i=1; i<ac.length; i++) // start with 1, so prev(first) = null
298
+ if( ac[i] === this )
299
+ return ac[i-1];
300
+ return null;
301
+ },
302
+
303
+ nextSibling: function() {
304
+ if( !this.parent ) return null;
305
+ var ac = this.parent.childList;
306
+ for(var i=0; i<ac.length-1; i++) // up to length-2, so next(last) = null
307
+ if( ac[i] === this )
308
+ return ac[i+1];
309
+ return null;
310
+ },
311
+
312
+ _setStatusNode: function(data) {
313
+ // Create, modify or remove the status child node (pass 'null', to remove it).
314
+ var firstChild = ( this.childList ? this.childList[0] : null );
315
+ if( !data ) {
316
+ if ( firstChild ) {
317
+ this.div.removeChild(firstChild.div);
318
+ if( this.childList.length == 1 )
319
+ this.childList = null;
320
+ else
321
+ this.childList.shift();
322
+ }
323
+ } else if ( firstChild ) {
324
+ data.isStatusNode = true;
325
+ firstChild.data = data;
326
+ firstChild.render(false, false);
327
+ } else {
328
+ data.isStatusNode = true;
329
+ firstChild = this.addChild(data);
330
+ }
331
+ },
332
+
333
+ setLazyNodeStatus: function(lts, opts) {
334
+ var tooltip = (opts && opts.tooltip) ? opts.tooltip : null;
335
+ var info = (opts && opts.info) ? " (" + opts.info + ")" : "";
336
+ switch( lts ) {
337
+ case DTNodeStatus_Ok:
338
+ this._setStatusNode(null);
339
+ // this.isRead = true;
340
+ this.isLoading = false;
341
+ this.render(false, false);
342
+ if( this.tree.options.autoFocus ) {
343
+ if( this === this.tree.tnRoot && !this.tree.options.rootVisible && this.childList ) {
344
+ // special case: using ajaxInit
345
+ this.childList[0].focus();
346
+ } else {
347
+ this.focus();
348
+ }
349
+ }
350
+ break;
351
+ case DTNodeStatus_Loading:
352
+ this.isLoading = true;
353
+ this._setStatusNode({
354
+ title: this.tree.options.strings.loading + info,
355
+ tooltip: tooltip,
356
+ addClass: this.tree.options.classNames.nodeWait
357
+ });
358
+ break;
359
+ case DTNodeStatus_Error:
360
+ this.isLoading = false;
361
+ this._setStatusNode({
362
+ title: this.tree.options.strings.loadError + info,
363
+ tooltip: tooltip,
364
+ addClass: this.tree.options.classNames.nodeError
365
+ });
366
+ break;
367
+ default:
368
+ throw "Bad LazyNodeStatus: '" + lts + "'.";
369
+ }
370
+ },
371
+
372
+ _parentList: function(includeRoot, includeSelf) {
373
+ var l = [];
374
+ var dtn = includeSelf ? this : this.parent;
375
+ while( dtn ) {
376
+ if( includeRoot || dtn.parent )
377
+ l.unshift(dtn);
378
+ dtn = dtn.parent;
379
+ };
380
+ return l;
381
+ },
382
+
383
+ getLevel: function() {
384
+ var level = 0;
385
+ var dtn = this.parent;
386
+ while( dtn ) {
387
+ level++;
388
+ dtn = dtn.parent;
389
+ };
390
+ return level;
391
+ },
392
+
393
+ _getTypeForOuterNodeEvent: function(event) {
394
+ /** Return the inner node span (title, checkbox or expander) if
395
+ * event.target points to the outer span.
396
+ * This function should fix issue #93:
397
+ * FF2 ignores empty spans, when generating events (returning the parent instead).
398
+ */
399
+ var cns = this.tree.options.classNames;
400
+ var target = event.target;
401
+ // Only process clicks on an outer node span (probably due to a FF2 event handling bug)
402
+ if( target.className.indexOf(cns.folder)<0
403
+ && target.className.indexOf(cns.document)<0 ) {
404
+ return null
405
+ }
406
+ // Event coordinates, relative to outer node span:
407
+ var eventX = event.pageX - target.offsetLeft;
408
+ var eventY = event.pageY - target.offsetTop;
409
+
410
+ for(var i=0; i<target.childNodes.length; i++) {
411
+ var cn = target.childNodes[i];
412
+ var x = cn.offsetLeft - target.offsetLeft;
413
+ var y = cn.offsetTop - target.offsetTop;
414
+ var nx = cn.clientWidth, ny = cn.clientHeight;
415
+ // alert (cn.className + ": " + x + ", " + y + ", s:" + nx + ", " + ny);
416
+ if( eventX>=x && eventX<=(x+nx) && eventY>=y && eventY<=(y+ny) ) {
417
+ // alert("HIT "+ cn.className);
418
+ if( cn.className==cns.title )
419
+ return "title";
420
+ else if( cn.className==cns.expander )
421
+ return "expander";
422
+ else if( cn.className==cns.checkbox )
423
+ return "checkbox";
424
+ else if( cn.className==cns.nodeIcon )
425
+ return "icon";
426
+ }
427
+ }
428
+ return "prefix";
429
+ },
430
+
431
+ getEventTargetType: function(event) {
432
+ // Return the part of a node, that a click event occured on.
433
+ // Note: there is no check, if the was fired on TIHS node.
434
+ var tcn = event && event.target ? event.target.className : "";
435
+ var cns = this.tree.options.classNames;
436
+
437
+ if( tcn == cns.title )
438
+ return "title";
439
+ else if( tcn==cns.expander )
440
+ return "expander";
441
+ else if( tcn==cns.checkbox )
442
+ return "checkbox";
443
+ else if( tcn==cns.nodeIcon )
444
+ return "icon";
445
+ else if( tcn==cns.empty || tcn==cns.vline || tcn==cns.connector )
446
+ return "prefix";
447
+ else if( tcn.indexOf(cns.folder)>=0 || tcn.indexOf(cns.document)>=0 )
448
+ // FIX issue #93
449
+ return this._getTypeForOuterNodeEvent(event);
450
+ return null;
451
+ },
452
+
453
+ isVisible: function() {
454
+ // Return true, if all parents are expanded.
455
+ var parents = this._parentList(true, false);
456
+ for(var i=0; i<parents.length; i++)
457
+ if( ! parents[i].bExpanded ) return false;
458
+ return true;
459
+ },
460
+
461
+ makeVisible: function() {
462
+ // Make sure, all parents are expanded
463
+ var parents = this._parentList(true, false);
464
+ for(var i=0; i<parents.length; i++)
465
+ parents[i]._expand(true);
466
+ },
467
+
468
+ focus: function() {
469
+ // TODO: check, if we already have focus
470
+ // this.tree.logDebug("dtnode.focus(): %o", this);
471
+ this.makeVisible();
472
+ try {
473
+ $(this.span).find(">a").focus();
474
+ } catch(e) { }
475
+ },
476
+
477
+ _activate: function(flag, fireEvents) {
478
+ // (De)Activate - but not focus - this node.
479
+ this.tree.logDebug("dtnode._activate(%o, fireEvents=%o) - %o", flag, fireEvents, this);
480
+ var opts = this.tree.options;
481
+ if( this.data.isStatusNode )
482
+ return;
483
+ if ( fireEvents && opts.onQueryActivate && opts.onQueryActivate.call(this.span, flag, this) == false )
484
+ return; // Callback returned false
485
+
486
+ if( flag ) {
487
+ // Activate
488
+ if( this.tree.activeNode ) {
489
+ if( this.tree.activeNode === this )
490
+ return;
491
+ this.tree.activeNode.deactivate();
492
+ }
493
+ if( opts.activeVisible )
494
+ this.makeVisible();
495
+ this.tree.activeNode = this;
496
+ if( opts.persist )
497
+ $.cookie(opts.cookieId+"-active", this.data.key, opts.cookie);
498
+ this.tree.persistence.activeKey = this.data.key;
499
+ $(this.span).addClass(opts.classNames.active);
500
+ if ( fireEvents && opts.onActivate ) // Pass element as 'this' (jQuery convention)
501
+ opts.onActivate.call(this.span, this);
502
+ } else {
503
+ // Deactivate
504
+ if( this.tree.activeNode === this ) {
505
+ var opts = this.tree.options;
506
+ if ( opts.onQueryActivate && opts.onQueryActivate.call(this.span, false, this) == false )
507
+ return; // Callback returned false
508
+ $(this.span).removeClass(opts.classNames.active);
509
+ if( opts.persist ) {
510
+ // Note: we don't pass null, but ''. So the cookie is not deleted.
511
+ // If we pass null, we also have to pass a COPY of opts, because $cookie will override opts.expires (issue 84)
512
+ $.cookie(opts.cookieId+"-active", "", opts.cookie);
513
+ }
514
+ this.tree.persistence.activeKey = null;
515
+ this.tree.activeNode = null;
516
+ if ( fireEvents && opts.onDeactivate )
517
+ opts.onDeactivate.call(this.span, this);
518
+ }
519
+ }
520
+ },
521
+
522
+ activate: function() {
523
+ // Select - but not focus - this node.
524
+ // this.tree.logDebug("dtnode.activate(): %o", this);
525
+ this._activate(true, true);
526
+ },
527
+
528
+ deactivate: function() {
529
+ // this.tree.logDebug("dtnode.deactivate(): %o", this);
530
+ this._activate(false, true);
531
+ },
532
+
533
+ isActive: function() {
534
+ return (this.tree.activeNode === this);
535
+ },
536
+
537
+ _userActivate: function() {
538
+ // Handle user click / [space] / [enter], according to clickFolderMode.
539
+ var activate = true;
540
+ var expand = false;
541
+ if ( this.data.isFolder ) {
542
+ switch( this.tree.options.clickFolderMode ) {
543
+ case 2:
544
+ activate = false;
545
+ expand = true;
546
+ break;
547
+ case 3:
548
+ activate = expand = true;
549
+ break;
550
+ }
551
+ }
552
+ if( this.parent == null && this.tree.options.minExpandLevel>0 ) {
553
+ expand = false;
554
+ }
555
+ if( expand ) {
556
+ this.toggleExpand();
557
+ this.focus();
558
+ }
559
+ if( activate ) {
560
+ this.activate();
561
+ }
562
+ },
563
+
564
+ _setSubSel: function(hasSubSel) {
565
+ if( hasSubSel ) {
566
+ this.hasSubSel = true;
567
+ $(this.span).addClass(this.tree.options.classNames.partsel);
568
+ } else {
569
+ this.hasSubSel = false;
570
+ $(this.span).removeClass(this.tree.options.classNames.partsel);
571
+ }
572
+ },
573
+
574
+ _fixSelectionState: function() {
575
+ // fix selection status, for multi-hier mode
576
+ // this.tree.logDebug("_fixSelectionState(%o) - %o", this.bSelected, this);
577
+ if( this.bSelected ) {
578
+ // Select all children
579
+ this.visit(function(dtnode){
580
+ dtnode.parent._setSubSel(true);
581
+ dtnode._select(true, false, false);
582
+ });
583
+ // Select parents, if all children are selected
584
+ var p = this.parent;
585
+ while( p ) {
586
+ p._setSubSel(true);
587
+ var allChildsSelected = true;
588
+ for(var i=0; i<p.childList.length; i++) {
589
+ var n = p.childList[i];
590
+ if( !n.bSelected && !n.data.isStatusNode ) {
591
+ allChildsSelected = false;
592
+ break;
593
+ }
594
+ }
595
+ if( allChildsSelected )
596
+ p._select(true, false, false);
597
+ p = p.parent;
598
+ }
599
+ } else {
600
+ // Deselect all children
601
+ this._setSubSel(false);
602
+ this.visit(function(dtnode){
603
+ dtnode._setSubSel(false);
604
+ dtnode._select(false, false, false);
605
+ });
606
+ // Deselect parents, and recalc hasSubSel
607
+ var p = this.parent;
608
+ while( p ) {
609
+ p._select(false, false, false);
610
+ var isPartSel = false;
611
+ for(var i=0; i<p.childList.length; i++) {
612
+ if( p.childList[i].bSelected || p.childList[i].hasSubSel ) {
613
+ isPartSel = true;
614
+ break;
615
+ }
616
+ }
617
+ p._setSubSel(isPartSel);
618
+ p = p.parent;
619
+ }
620
+ }
621
+ },
622
+
623
+ _select: function(sel, fireEvents, deep) {
624
+ // Select - but not focus - this node.
625
+ // this.tree.logDebug("dtnode._select(%o) - %o", sel, this);
626
+ var opts = this.tree.options;
627
+ if( this.data.isStatusNode )
628
+ return;
629
+ //
630
+ if( this.bSelected == sel ) {
631
+ // this.tree.logDebug("dtnode._select(%o) IGNORED - %o", sel, this);
632
+ return;
633
+ }
634
+ // Allow event listener to abort selection
635
+ if ( fireEvents && opts.onQuerySelect && opts.onQuerySelect.call(this.span, sel, this) == false )
636
+ return; // Callback returned false
637
+
638
+ // Force single-selection
639
+ if( opts.selectMode==1 && sel ) {
640
+ this.tree.visit(function(dtnode){
641
+ if( dtnode.bSelected ) {
642
+ // Deselect; assuming that in selectMode:1 there's max. one other selected node
643
+ dtnode._select(false, false, false);
644
+ return false;
645
+ }
646
+ });
647
+ }
648
+
649
+ this.bSelected = sel;
650
+ // this.tree._changeNodeList("select", this, sel);
651
+
652
+ if( sel ) {
653
+ if( opts.persist )
654
+ this.tree.persistence.addSelect(this.data.key);
655
+
656
+ $(this.span).addClass(opts.classNames.selected);
657
+
658
+ if( deep && opts.selectMode==3 )
659
+ this._fixSelectionState();
660
+
661
+ if ( fireEvents && opts.onSelect )
662
+ opts.onSelect.call(this.span, true, this);
663
+
664
+ } else {
665
+ if( opts.persist )
666
+ this.tree.persistence.clearSelect(this.data.key);
667
+
668
+ $(this.span).removeClass(opts.classNames.selected);
669
+
670
+ if( deep && opts.selectMode==3 )
671
+ this._fixSelectionState();
672
+
673
+ if ( fireEvents && opts.onSelect )
674
+ opts.onSelect.call(this.span, false, this);
675
+ }
676
+ },
677
+
678
+ select: function(sel) {
679
+ // Select - but not focus - this node.
680
+ // this.tree.logDebug("dtnode.select(%o) - %o", sel, this);
681
+ if( this.data.unselectable )
682
+ return this.bSelected;
683
+ return this._select(sel!=false, true, true);
684
+ },
685
+
686
+ toggleSelect: function() {
687
+ // this.tree.logDebug("dtnode.toggleSelect() - %o", this);
688
+ return this.select(!this.bSelected);
689
+ },
690
+
691
+ isSelected: function() {
692
+ return this.bSelected;
693
+ },
694
+
695
+ _loadContent: function() {
696
+ try {
697
+ var opts = this.tree.options;
698
+ this.tree.logDebug("_loadContent: start - %o", this);
699
+ this.setLazyNodeStatus(DTNodeStatus_Loading);
700
+ if( true == opts.onLazyRead.call(this.span, this) ) {
701
+ // If function returns 'true', we assume that the loading is done:
702
+ this.setLazyNodeStatus(DTNodeStatus_Ok);
703
+ // Otherwise (i.e. if the loading was started as an asynchronous process)
704
+ // the onLazyRead(dtnode) handler is expected to call dtnode.setLazyNodeStatus(DTNodeStatus_Ok/_Error) when done.
705
+ this.tree.logDebug("_loadContent: succeeded - %o", this);
706
+ }
707
+ } catch(e) {
708
+ // alert(e);
709
+ this.setLazyNodeStatus(DTNodeStatus_Error);
710
+ this.tree.logWarning("_loadContent: failed - %o", e);
711
+ }
712
+ },
713
+
714
+ _expand: function(bExpand) {
715
+ // this.tree.logDebug("dtnode._expand(%o) - %o", bExpand, this);
716
+ if( this.bExpanded == bExpand ) {
717
+ // this.tree.logDebug("dtnode._expand(%o) IGNORED - %o", bExpand, this);
718
+ return;
719
+ }
720
+ var opts = this.tree.options;
721
+ if( !bExpand && this.getLevel()<opts.minExpandLevel ) {
722
+ this.tree.logDebug("dtnode._expand(%o) forced expand - %o", bExpand, this);
723
+ return;
724
+ }
725
+ if ( opts.onQueryExpand && opts.onQueryExpand.call(this.span, bExpand, this) == false )
726
+ return; // Callback returned false
727
+ this.bExpanded = bExpand;
728
+
729
+ // Persist expand state
730
+ if( opts.persist ) {
731
+ if( bExpand )
732
+ this.tree.persistence.addExpand(this.data.key);
733
+ else
734
+ this.tree.persistence.clearExpand(this.data.key);
735
+ }
736
+
737
+ this.render(false);
738
+
739
+ // Auto-collapse mode: collapse all siblings
740
+ if( this.bExpanded && this.parent && opts.autoCollapse ) {
741
+ var parents = this._parentList(false, true);
742
+ for(var i=0; i<parents.length; i++)
743
+ parents[i].collapseSiblings();
744
+ }
745
+
746
+ // If the currently active node is now hidden, deactivate it
747
+ if( opts.activeVisible && this.tree.activeNode && ! this.tree.activeNode.isVisible() ) {
748
+ this.tree.activeNode.deactivate();
749
+ }
750
+ // Expanding a lazy node: set 'loading...' and call callback
751
+ if( bExpand && this.data.isLazy && this.childList==null && !this.isLoading ) {
752
+ this._loadContent();
753
+ return;
754
+ }
755
+ // this.tree.logDebug("_expand: start div toggle - %o", this);
756
+
757
+ var fxDuration = opts.fx ? (opts.fx.duration || 200) : 0;
758
+ if( this.childList ) {
759
+ for(var i=0; i<this.childList.length; i++ ) {
760
+ var $child = $(this.childList[i].div);
761
+ if( fxDuration ) {
762
+ // This is a toggle, so only do it, if not already rendered (in)visible (issue 98)
763
+ if( bExpand != $child.is(':visible') )
764
+ $child.animate(opts.fx, fxDuration);
765
+ } else {
766
+ if( bExpand )
767
+ $child.show();
768
+ else
769
+ $child.hide(); // TODO: this seems to be slow, when called the first time for an element
770
+ }
771
+ }
772
+ }
773
+
774
+ /* issue 109: using selector filter is really SLOW.
775
+ // issue 98: only toggle, if render hasn't set visibility already:
776
+ var filter = ">DIV" + (bExpand ? ":hidden" : ":visible");
777
+
778
+ if( opts.fx ) {
779
+ var duration = opts.fx.duration || 200;
780
+ // $(">DIV", this.div).animate(opts.fx, duration);
781
+ $(filter, this.div).animate(opts.fx, duration);
782
+ } else {
783
+ $(filter, this.div).toggle();
784
+ // var $d = $(">DIV", this.div);
785
+ // this.tree.logDebug("_expand: got div, start toggle - %o", this);
786
+ // $d.toggle();
787
+ }
788
+ //*/
789
+ // this.tree.logDebug("_expand: end div toggle - %o", this);
790
+
791
+ if ( opts.onExpand )
792
+ opts.onExpand.call(this.span, bExpand, this);
793
+ },
794
+
795
+ expand: function(flag) {
796
+ if( !this.childList && !this.data.isLazy && flag )
797
+ return; // Prevent expanding empty nodes
798
+ if( this.parent == null && this.tree.options.minExpandLevel>0 && !flag )
799
+ return; // Prevent collapsing the root
800
+ this._expand(flag);
801
+ },
802
+
803
+ toggleExpand: function() {
804
+ this.expand(!this.bExpanded);
805
+ },
806
+
807
+ collapseSiblings: function() {
808
+ if( this.parent == null )
809
+ return;
810
+ var ac = this.parent.childList;
811
+ for (var i=0; i<ac.length; i++) {
812
+ if ( ac[i] !== this && ac[i].bExpanded )
813
+ ac[i]._expand(false);
814
+ }
815
+ },
816
+
817
+ onClick: function(event) {
818
+ // this.tree.logDebug("dtnode.onClick(" + event.type + "): dtnode:" + this + ", button:" + event.button + ", which: " + event.which);
819
+ var targetType = this.getEventTargetType(event);
820
+ if( targetType == "expander" ) {
821
+ // Clicking the expander icon always expands/collapses
822
+ this.toggleExpand();
823
+ this.focus(); // issue 95
824
+ } else if( targetType == "checkbox" ) {
825
+ // Clicking the checkbox always (de)selects
826
+ this.toggleSelect();
827
+ this.focus(); // issue 95
828
+ } else {
829
+ this._userActivate();
830
+ // Chrome and Safari don't focus the a-tag on click
831
+ this.span.getElementsByTagName("a")[0].focus();
832
+ }
833
+ // Make sure that clicks stop, otherwise <a href='#'> jumps to the top
834
+ return false;
835
+ },
836
+
837
+ onDblClick: function(event) {
838
+ // this.tree.logDebug("dtnode.onDblClick(" + event.type + "): dtnode:" + this + ", button:" + event.button + ", which: " + event.which);
839
+ },
840
+
841
+ onKeydown: function(event) {
842
+ // this.tree.logDebug("dtnode.onKeydown(" + event.type + "): dtnode:" + this + ", charCode:" + event.charCode + ", keyCode: " + event.keyCode + ", which: " + event.which);
843
+ var handled = true;
844
+ // alert("keyDown" + event.which);
845
+
846
+ switch( event.which ) {
847
+ // charCodes:
848
+ // case 43: // '+'
849
+ case 107: // '+'
850
+ case 187: // '+' @ Chrome, Safari
851
+ if( !this.bExpanded ) this.toggleExpand();
852
+ break;
853
+ // case 45: // '-'
854
+ case 109: // '-'
855
+ case 189: // '+' @ Chrome, Safari
856
+ if( this.bExpanded ) this.toggleExpand();
857
+ break;
858
+ //~ case 42: // '*'
859
+ //~ break;
860
+ //~ case 47: // '/'
861
+ //~ break;
862
+ // case 13: // <enter>
863
+ // <enter> on a focused <a> tag seems to generate a click-event.
864
+ // this._userActivate();
865
+ // break;
866
+ case 32: // <space>
867
+ this._userActivate();
868
+ break;
869
+ case 8: // <backspace>
870
+ if( this.parent )
871
+ this.parent.focus();
872
+ break;
873
+ case 37: // <left>
874
+ if( this.bExpanded ) {
875
+ this.toggleExpand();
876
+ this.focus();
877
+ } else if( this.parent && (this.tree.options.rootVisible || this.parent.parent) ) {
878
+ this.parent.focus();
879
+ }
880
+ break;
881
+ case 39: // <right>
882
+ if( !this.bExpanded && (this.childList || this.data.isLazy) ) {
883
+ this.toggleExpand();
884
+ this.focus();
885
+ } else if( this.childList ) {
886
+ this.childList[0].focus();
887
+ }
888
+ break;
889
+ case 38: // <up>
890
+ var sib = this.prevSibling();
891
+ while( sib && sib.bExpanded && sib.childList )
892
+ sib = sib.childList[sib.childList.length-1];
893
+ if( !sib && this.parent && (this.tree.options.rootVisible || this.parent.parent) )
894
+ sib = this.parent;
895
+ if( sib ) sib.focus();
896
+ break;
897
+ case 40: // <down>
898
+ var sib;
899
+ if( this.bExpanded && this.childList ) {
900
+ sib = this.childList[0];
901
+ } else {
902
+ var parents = this._parentList(false, true);
903
+ for(var i=parents.length-1; i>=0; i--) {
904
+ sib = parents[i].nextSibling();
905
+ if( sib ) break;
906
+ }
907
+ }
908
+ if( sib ) sib.focus();
909
+ break;
910
+ default:
911
+ handled = false;
912
+ }
913
+ // Return false, if handled, to prevent default processing
914
+ return !handled;
915
+ },
916
+
917
+ onKeypress: function(event) {
918
+ // onKeypress is only hooked to allow user callbacks.
919
+ // We don't process it, because IE and Safari don't fire keypress for cursor keys.
920
+ // this.tree.logDebug("dtnode.onKeypress(" + event.type + "): dtnode:" + this + ", charCode:" + event.charCode + ", keyCode: " + event.keyCode + ", which: " + event.which);
921
+ },
922
+
923
+ onFocus: function(event) {
924
+ // Handles blur and focus events.
925
+ // this.tree.logDebug("dtnode.onFocus(%o): %o", event, this);
926
+ var opts = this.tree.options;
927
+ if ( event.type=="blur" || event.type=="focusout" ) {
928
+ if ( opts.onBlur ) // Pass element as 'this' (jQuery convention)
929
+ opts.onBlur.call(this.span, this);
930
+ if( this.tree.tnFocused )
931
+ $(this.tree.tnFocused.span).removeClass(opts.classNames.focused);
932
+ this.tree.tnFocused = null;
933
+ if( opts.persist )
934
+ $.cookie(opts.cookieId+"-focus", "", opts.cookie);
935
+ } else if ( event.type=="focus" || event.type=="focusin") {
936
+ // Fix: sometimes the blur event is not generated
937
+ if( this.tree.tnFocused && this.tree.tnFocused !== this ) {
938
+ this.tree.logDebug("dtnode.onFocus: out of sync: curFocus: %o", this.tree.tnFocused);
939
+ $(this.tree.tnFocused.span).removeClass(opts.classNames.focused);
940
+ }
941
+ this.tree.tnFocused = this;
942
+ if ( opts.onFocus ) // Pass element as 'this' (jQuery convention)
943
+ opts.onFocus.call(this.span, this);
944
+ $(this.tree.tnFocused.span).addClass(opts.classNames.focused);
945
+ if( opts.persist )
946
+ $.cookie(opts.cookieId+"-focus", this.data.key, opts.cookie);
947
+ }
948
+ // TODO: return anything?
949
+ // return false;
950
+ },
951
+
952
+ visit: function(fn, data, includeSelf) {
953
+ // Call fn(dtnode, data) for all child nodes. Stop iteration, if fn() returns false.
954
+ var n = 0;
955
+ if( includeSelf == true ) {
956
+ if( fn(this, data) == false )
957
+ return 1;
958
+ n++;
959
+ }
960
+ if ( this.childList )
961
+ for (var i=0; i<this.childList.length; i++)
962
+ n += this.childList[i].visit(fn, data, true);
963
+ return n;
964
+ },
965
+
966
+ remove: function() {
967
+ // Remove this node
968
+ // this.tree.logDebug ("%o.remove()", this);
969
+ if ( this === this.tree.root )
970
+ return false;
971
+ return this.parent.removeChild(this);
972
+ },
973
+
974
+ removeChild: function(tn) {
975
+ // Remove tn from list of direct children.
976
+ var ac = this.childList;
977
+ if( ac.length == 1 ) {
978
+ if( tn !== ac[0] )
979
+ throw "removeChild: invalid child";
980
+ return this.removeChildren();
981
+ }
982
+ if( tn === this.tree.activeNode )
983
+ tn.deactivate();
984
+ if( this.tree.options.persist ) {
985
+ if( tn.bSelected )
986
+ this.tree.persistence.clearSelect(tn.data.key);
987
+ if ( tn.bExpanded )
988
+ this.tree.persistence.clearExpand(tn.data.key);
989
+ }
990
+ tn.removeChildren(true);
991
+ this.div.removeChild(tn.div);
992
+ for(var i=0; i<ac.length; i++) {
993
+ if( ac[i] === tn ) {
994
+ this.childList.splice(i, 1);
995
+ delete tn;
996
+ break;
997
+ }
998
+ }
999
+ },
1000
+
1001
+ removeChildren: function(isRecursiveCall, retainPersistence) {
1002
+ // Remove all child nodes (more efficiently than recursive remove())
1003
+ // this.tree.logDebug ("%o.removeChildren(%o)", this, isRecursiveCall);
1004
+ var tree = this.tree;
1005
+ var ac = this.childList;
1006
+ if( ac ) {
1007
+ for(var i=0; i<ac.length; i++) {
1008
+ var tn=ac[i];
1009
+ // this.tree.logDebug ("del %o", tn);
1010
+ if ( tn === tree.activeNode && !retainPersistence )
1011
+ tn.deactivate();
1012
+ if( this.tree.options.persist && !retainPersistence ) {
1013
+ if( tn.bSelected )
1014
+ this.tree.persistence.clearSelect(tn.data.key);
1015
+ if ( tn.bExpanded )
1016
+ this.tree.persistence.clearExpand(tn.data.key);
1017
+ }
1018
+ tn.removeChildren(true, retainPersistence);
1019
+ this.div.removeChild(tn.div);
1020
+ delete tn;
1021
+ }
1022
+ this.childList = null;
1023
+ }
1024
+ if( ! isRecursiveCall ) {
1025
+ // this._expand(false);
1026
+ // this.isRead = false;
1027
+ this.isLoading = false;
1028
+ this.render(false, false);
1029
+ }
1030
+ },
1031
+
1032
+ reload: function(force) {
1033
+ // Discard lazy content (and reload, if node was expanded).
1034
+ if( this.parent == null )
1035
+ return this.tree.reload();
1036
+
1037
+ if( ! this.data.isLazy )
1038
+ throw "node.reload() requires lazy nodes.";
1039
+ if( this.bExpanded ) {
1040
+ this.expand(false);
1041
+ this.removeChildren();
1042
+ this.expand(true);
1043
+ } else {
1044
+ this.removeChildren();
1045
+ if( force )
1046
+ this._loadContent();
1047
+ }
1048
+ },
1049
+
1050
+ _addChildNode: function(dtnode, beforeNode) {
1051
+ /**
1052
+ * Internal function to add one single DynatreeNode as a child.
1053
+ *
1054
+ */
1055
+ var tree = this.tree;
1056
+ var opts = tree.options;
1057
+ var pers = tree.persistence;
1058
+
1059
+ // tree.logDebug("%o._addChildNode(%o)", this, dtnode);
1060
+
1061
+ // --- Update and fix dtnode attributes if necessary
1062
+ dtnode.parent = this;
1063
+ // if( beforeNode && (beforeNode.parent !== this || beforeNode === dtnode ) )
1064
+ // throw "<beforeNode> must be another child of <this>";
1065
+
1066
+ // --- Add dtnode as a child
1067
+ if ( this.childList==null ) {
1068
+ this.childList = [];
1069
+ } else if( ! beforeNode ) {
1070
+ // Fix 'lastsib'
1071
+ $(this.childList[this.childList.length-1].span).removeClass(opts.classNames.lastsib);
1072
+ }
1073
+ if( beforeNode ) {
1074
+ var iBefore = $.inArray(beforeNode, this.childList);
1075
+ if( iBefore < 0 )
1076
+ throw "<beforeNode> must be a child of <this>";
1077
+ this.childList.splice(iBefore, 0, dtnode);
1078
+ // alert(this.childList);
1079
+ } else {
1080
+ // Append node
1081
+ this.childList.push(dtnode);
1082
+ }
1083
+
1084
+ // --- Handle persistence
1085
+ // Initial status is read from cookies, if persistence is active and
1086
+ // cookies are already present.
1087
+ // Otherwise the status is read from the data attributes and then persisted.
1088
+ var isInitializing = tree.isInitializing();
1089
+ if( opts.persist && pers.cookiesFound && isInitializing ) {
1090
+ // Init status from cookies
1091
+ // tree.logDebug("init from cookie, pa=%o, dk=%o", pers.activeKey, dtnode.data.key);
1092
+ if( pers.activeKey == dtnode.data.key )
1093
+ tree.activeNode = dtnode;
1094
+ if( pers.focusedKey == dtnode.data.key )
1095
+ tree.focusNode = dtnode;
1096
+ dtnode.bExpanded = ($.inArray(dtnode.data.key, pers.expandedKeyList) >= 0);
1097
+ dtnode.bSelected = ($.inArray(dtnode.data.key, pers.selectedKeyList) >= 0);
1098
+ // tree.logDebug(" key=%o, bSelected=%o", dtnode.data.key, dtnode.bSelected);
1099
+ } else {
1100
+ // Init status from data (Note: we write the cookies after the init phase)
1101
+ // tree.logDebug("init from data");
1102
+ if( dtnode.data.activate ) {
1103
+ tree.activeNode = dtnode;
1104
+ if( opts.persist )
1105
+ pers.activeKey = dtnode.data.key;
1106
+ }
1107
+ if( dtnode.data.focus ) {
1108
+ tree.focusNode = dtnode;
1109
+ if( opts.persist )
1110
+ pers.focusedKey = dtnode.data.key;
1111
+ }
1112
+ dtnode.bExpanded = ( dtnode.data.expand == true ); // Collapsed by default
1113
+ if( dtnode.bExpanded && opts.persist )
1114
+ pers.addExpand(dtnode.data.key);
1115
+ dtnode.bSelected = ( dtnode.data.select == true ); // Deselected by default
1116
+ /*
1117
+ Doesn't work, cause pers.selectedKeyList may be null
1118
+ if( dtnode.bSelected && opts.selectMode==1
1119
+ && pers.selectedKeyList && pers.selectedKeyList.length>0 ) {
1120
+ tree.logWarning("Ignored multi-selection in single-mode for %o", dtnode);
1121
+ dtnode.bSelected = false; // Fixing bad input data (multi selection for mode:1)
1122
+ }
1123
+ */
1124
+ if( dtnode.bSelected && opts.persist )
1125
+ pers.addSelect(dtnode.data.key);
1126
+ }
1127
+
1128
+ // Always expand, if it's below minExpandLevel
1129
+ // tree.logDebug ("%o._addChildNode(%o), l=%o", this, dtnode, dtnode.getLevel());
1130
+ if ( opts.minExpandLevel >= dtnode.getLevel() ) {
1131
+ // tree.logDebug ("Force expand for %o", dtnode);
1132
+ this.bExpanded = true;
1133
+ }
1134
+
1135
+ // In multi-hier mode, update the parents selection state
1136
+ // issue #82: only if not initializing, because the children may not exist yet
1137
+ // if( !dtnode.data.isStatusNode && opts.selectMode==3 && !isInitializing )
1138
+ // dtnode._fixSelectionState();
1139
+
1140
+ // In multi-hier mode, update the parents selection state
1141
+ if( dtnode.bSelected && opts.selectMode==3 ) {
1142
+ var p = this;
1143
+ while( p ) {
1144
+ if( !p.hasSubSel )
1145
+ p._setSubSel(true);
1146
+ p = p.parent;
1147
+ }
1148
+ }
1149
+ // render this node and the new child
1150
+ if ( tree.bEnableUpdate )
1151
+ this.render(true, true);
1152
+
1153
+ return dtnode;
1154
+ },
1155
+
1156
+ addChild: function(obj, beforeNode) {
1157
+ /**
1158
+ * Add a node object as child.
1159
+ *
1160
+ * This should be the only place, where a DynaTreeNode is constructed!
1161
+ * (Except for the root node creation in the tree constructor)
1162
+ *
1163
+ * @param obj A JS object (may be recursive) or an array of those.
1164
+ * @param {DynaTreeNode} beforeNode (optional) sibling node.
1165
+ *
1166
+ * Data format: array of node objects, with optional 'children' attributes.
1167
+ * [
1168
+ * { title: "t1", isFolder: true, ... }
1169
+ * { title: "t2", isFolder: true, ...,
1170
+ * children: [
1171
+ * {title: "t2.1", ..},
1172
+ * {..}
1173
+ * ]
1174
+ * }
1175
+ * ]
1176
+ * A simple object is also accepted instead of an array.
1177
+ *
1178
+ */
1179
+ // this.tree.logDebug("%o.addChild(%o, %o)", this, obj, beforeNode);
1180
+ if( !obj || obj.length==0 ) // Passed null or undefined or empty array
1181
+ return;
1182
+ if( obj instanceof DynaTreeNode )
1183
+ return this._addChildNode(obj, beforeNode);
1184
+ if( !obj.length ) // Passed a single data object
1185
+ obj = [ obj ];
1186
+
1187
+ var prevFlag = this.tree.enableUpdate(false);
1188
+
1189
+ var tnFirst = null;
1190
+ for (var i=0; i<obj.length; i++) {
1191
+ var data = obj[i];
1192
+ var dtnode = this._addChildNode(new DynaTreeNode(this, this.tree, data), beforeNode);
1193
+ if( !tnFirst ) tnFirst = dtnode;
1194
+ // Add child nodes recursively
1195
+ if( data.children )
1196
+ dtnode.addChild(data.children, null);
1197
+ }
1198
+ this.tree.enableUpdate(prevFlag);
1199
+ return tnFirst;
1200
+ },
1201
+
1202
+ append: function(obj) {
1203
+ this.tree.logWarning("node.append() is deprecated (use node.addChild() instead).");
1204
+ return this.addChild(obj, null);
1205
+ },
1206
+
1207
+ appendAjax: function(ajaxOptions) {
1208
+ this.removeChildren(false, true);
1209
+ this.setLazyNodeStatus(DTNodeStatus_Loading);
1210
+ // Ajax option inheritance: $.ajaxSetup < $.ui.dynatree.defaults.ajaxDefaults < tree.options.ajaxDefaults < ajaxOptions
1211
+ var self = this;
1212
+ var orgSuccess = ajaxOptions.success;
1213
+ var orgError = ajaxOptions.error;
1214
+ var options = $.extend({}, this.tree.options.ajaxDefaults, ajaxOptions, {
1215
+ /*
1216
+ complete: function(req, textStatus){
1217
+ alert("ajax complete");
1218
+ },
1219
+ timeout: 5000, // 5 sec
1220
+ */
1221
+ success: function(data, textStatus){
1222
+ // <this> is the request options
1223
+ // self.tree.logDebug("appendAjax().success");
1224
+ var prevPhase = self.tree.phase;
1225
+ self.tree.phase = "init";
1226
+ // self.append(data);
1227
+ self.addChild(data, null);
1228
+ self.tree.phase = "postInit";
1229
+ self.setLazyNodeStatus(DTNodeStatus_Ok);
1230
+ if( orgSuccess )
1231
+ orgSuccess.call(options, self);
1232
+ self.tree.phase = prevPhase;
1233
+ },
1234
+ error: function(XMLHttpRequest, textStatus, errorThrown){
1235
+ // <this> is the request options
1236
+ // self.tree.logWarning("appendAjax failed: %o:\n%o\n%o", textStatus, XMLHttpRequest, errorThrown);
1237
+ self.tree.logWarning("appendAjax failed:", textStatus, ":\n", XMLHttpRequest, "\n", errorThrown);
1238
+ self.setLazyNodeStatus(DTNodeStatus_Error, {info: textStatus, tooltip: ""+errorThrown});
1239
+ if( orgError )
1240
+ orgError.call(options, self, XMLHttpRequest, textStatus, errorThrown);
1241
+ }
1242
+ });
1243
+ $.ajax(options);
1244
+ },
1245
+ // --- end of class
1246
+ lastentry: undefined
1247
+ }
1248
+
1249
+ /*************************************************************************
1250
+ * class DynaTreeStatus
1251
+ */
1252
+
1253
+ var DynaTreeStatus = Class.create();
1254
+
1255
+
1256
+ DynaTreeStatus._getTreePersistData = function(cookieId, cookieOpts) {
1257
+ // Static member: Return persistence information from cookies
1258
+ var ts = new DynaTreeStatus(cookieId, cookieOpts);
1259
+ ts.read();
1260
+ return ts.toDict();
1261
+ }
1262
+ // Make available in global scope
1263
+ getDynaTreePersistData = DynaTreeStatus._getTreePersistData;
1264
+
1265
+
1266
+ DynaTreeStatus.prototype = {
1267
+ // Constructor
1268
+ initialize: function(cookieId, cookieOpts) {
1269
+ this._log("DynaTreeStatus: initialize");
1270
+ if( cookieId === undefined )
1271
+ cookieId = $.ui.dynatree.defaults.cookieId;
1272
+ cookieOpts = $.extend({}, $.ui.dynatree.defaults.cookie, cookieOpts);
1273
+
1274
+ this.cookieId = cookieId;
1275
+ this.cookieOpts = cookieOpts;
1276
+ this.cookiesFound = undefined;
1277
+ this.activeKey = null;
1278
+ this.focusedKey = null;
1279
+ this.expandedKeyList = null;
1280
+ this.selectedKeyList = null;
1281
+ },
1282
+ // member functions
1283
+ _log: function(msg) {
1284
+ // this.logDebug("_changeNodeList(%o): nodeList:%o, idx:%o", mode, nodeList, idx);
1285
+ Array.prototype.unshift.apply(arguments, ["debug"]);
1286
+ _log.apply(this, arguments);
1287
+ },
1288
+ read: function() {
1289
+ this._log("DynaTreeStatus: read");
1290
+ // Read or init cookies.
1291
+ this.cookiesFound = false;
1292
+
1293
+ var cookie = $.cookie(this.cookieId + "-active");
1294
+ this.activeKey = ( cookie == null ) ? "" : cookie;
1295
+ if( cookie != null ) this.cookiesFound = true;
1296
+
1297
+ cookie = $.cookie(this.cookieId + "-focus");
1298
+ this.focusedKey = ( cookie == null ) ? "" : cookie;
1299
+ if( cookie != null ) this.cookiesFound = true;
1300
+
1301
+ cookie = $.cookie(this.cookieId + "-expand");
1302
+ this.expandedKeyList = ( cookie == null ) ? [] : cookie.split(",");
1303
+ if( cookie != null ) this.cookiesFound = true;
1304
+
1305
+ cookie = $.cookie(this.cookieId + "-select");
1306
+ this.selectedKeyList = ( cookie == null ) ? [] : cookie.split(",");
1307
+ if( cookie != null ) this.cookiesFound = true;
1308
+ },
1309
+ write: function() {
1310
+ this._log("DynaTreeStatus: write");
1311
+ $.cookie(this.cookieId + "-active", ( this.activeKey == null ) ? "" : this.activeKey, this.cookieOpts);
1312
+ $.cookie(this.cookieId + "-focus", ( this.focusedKey == null ) ? "" : this.focusedKey, this.cookieOpts);
1313
+ $.cookie(this.cookieId + "-expand", ( this.expandedKeyList == null ) ? "" : this.expandedKeyList.join(","), this.cookieOpts);
1314
+ $.cookie(this.cookieId + "-select", ( this.selectedKeyList == null ) ? "" : this.selectedKeyList.join(","), this.cookieOpts);
1315
+ },
1316
+ addExpand: function(key) {
1317
+ this._log("addExpand(%o)", key);
1318
+ if( $.inArray(key, this.expandedKeyList) < 0 ) {
1319
+ this.expandedKeyList.push(key);
1320
+ $.cookie(this.cookieId + "-expand", this.expandedKeyList.join(","), this.cookieOpts);
1321
+ }
1322
+ },
1323
+ clearExpand: function(key) {
1324
+ this._log("clearExpand(%o)", key);
1325
+ var idx = $.inArray(key, this.expandedKeyList);
1326
+ if( idx >= 0 ) {
1327
+ this.expandedKeyList.splice(idx, 1);
1328
+ $.cookie(this.cookieId + "-expand", this.expandedKeyList.join(","), this.cookieOpts);
1329
+ }
1330
+ },
1331
+ addSelect: function(key) {
1332
+ this._log("addSelect(%o)", key);
1333
+ if( $.inArray(key, this.selectedKeyList) < 0 ) {
1334
+ this.selectedKeyList.push(key);
1335
+ $.cookie(this.cookieId + "-select", this.selectedKeyList.join(","), this.cookieOpts);
1336
+ }
1337
+ },
1338
+ clearSelect: function(key) {
1339
+ this._log("clearSelect(%o)", key);
1340
+ var idx = $.inArray(key, this.selectedKeyList);
1341
+ if( idx >= 0 ) {
1342
+ this.selectedKeyList.splice(idx, 1);
1343
+ $.cookie(this.cookieId + "-select", this.selectedKeyList.join(","), this.cookieOpts);
1344
+ }
1345
+ },
1346
+ isReloading: function() {
1347
+ return this.cookiesFound == true;
1348
+ },
1349
+ toDict: function() {
1350
+ return {
1351
+ cookiesFound: this.cookiesFound,
1352
+ activeKey: this.activeKey,
1353
+ focusedKey: this.activeKey,
1354
+ expandedKeyList: this.expandedKeyList,
1355
+ selectedKeyList: this.selectedKeyList
1356
+ };
1357
+ },
1358
+ // --- end of class
1359
+ lastentry: undefined
1360
+ };
1361
+
1362
+
1363
+ /*************************************************************************
1364
+ * class DynaTree
1365
+ */
1366
+
1367
+ var DynaTree = Class.create();
1368
+
1369
+ // --- Static members ----------------------------------------------------------
1370
+
1371
+ DynaTree.version = "$Version: 0.5.3$";
1372
+ /*
1373
+ DynaTree._initTree = function() {
1374
+ };
1375
+
1376
+ DynaTree._bind = function() {
1377
+ };
1378
+ */
1379
+ //--- Class members ------------------------------------------------------------
1380
+
1381
+ DynaTree.prototype = {
1382
+ // Constructor
1383
+ // initialize: function(divContainer, options) {
1384
+ initialize: function($widget) {
1385
+ // instance members
1386
+ this.phase = "init";
1387
+ this.$widget = $widget;
1388
+ this.options = $widget.options;
1389
+ this.$tree = $widget.element;
1390
+ // find container element
1391
+ this.divTree = this.$tree.get(0);
1392
+ },
1393
+
1394
+ // member functions
1395
+
1396
+ _load: function() {
1397
+ var $widget = this.$widget;
1398
+ var opts = this.options;
1399
+ this.bEnableUpdate = true;
1400
+ this._nodeCount = 1;
1401
+ this.activeNode = null;
1402
+ this.focusNode = null;
1403
+
1404
+ // If a 'options.classNames' dictionary was passed, still use defaults
1405
+ // for undefined classes:
1406
+ if( opts.classNames !== $.ui.dynatree.defaults.classNames ) {
1407
+ opts.classNames = $.extend({}, $.ui.dynatree.defaults.classNames, opts.classNames);
1408
+ }
1409
+ // Guess skin path, if not specified
1410
+ if(!opts.imagePath) {
1411
+ $("script").each( function () {
1412
+ // Eclipse syntax parser breaks on this expression, so put it at the bottom:
1413
+ if( this.src.search(_rexDtLibName) >= 0 ) {
1414
+ if( this.src.indexOf("/")>=0 ) // issue #47
1415
+ opts.imagePath = this.src.slice(0, this.src.lastIndexOf("/")) + "/skin/";
1416
+ else
1417
+ opts.imagePath = "skin/";
1418
+ // logMsg("Guessing imagePath from '%s': '%s'", this.src, opts.imagePath);
1419
+ return false; // first match
1420
+ }
1421
+ });
1422
+ }
1423
+
1424
+ this.persistence = new DynaTreeStatus(opts.cookieId, opts.cookie);
1425
+ if( opts.persist ) {
1426
+ if( !$.cookie )
1427
+ _log("warn", "Please include jquery.cookie.js to use persistence.");
1428
+ this.persistence.read();
1429
+ }
1430
+ this.logDebug("DynaTree.persistence: %o", this.persistence.toDict());
1431
+
1432
+ // Cached tag strings
1433
+ this.cache = {
1434
+ tagEmpty: "<span class='" + opts.classNames.empty + "'></span>",
1435
+ tagVline: "<span class='" + opts.classNames.vline + "'></span>",
1436
+ tagExpander: "<span class='" + opts.classNames.expander + "'></span>",
1437
+ tagConnector: "<span class='" + opts.classNames.connector + "'></span>",
1438
+ tagNodeIcon: "<span class='" + opts.classNames.nodeIcon + "'></span>",
1439
+ tagCheckbox: "<span class='" + opts.classNames.checkbox + "'></span>",
1440
+ lastentry: undefined
1441
+ };
1442
+
1443
+ // Clear container, in case it contained some 'waiting' or 'error' text
1444
+ // for clients that don't support JS.
1445
+ // We don't do this however, if we try to load from an embedded UL element.
1446
+ if( opts.children || (opts.initAjax && opts.initAjax.url) || opts.initId )
1447
+ $(this.divTree).empty();
1448
+ else if( this.divRoot )
1449
+ $(this.divRoot).remove();
1450
+
1451
+ // create the root element
1452
+ this.tnRoot = new DynaTreeNode(null, this, {title: opts.title, key: "root"});
1453
+ this.tnRoot.data.isFolder = true;
1454
+ this.tnRoot.render(false, false);
1455
+ this.divRoot = this.tnRoot.div;
1456
+ this.divRoot.className = opts.classNames.container;
1457
+ // add root to container
1458
+ // TODO: this should be delayed until all children have been created for performance reasons
1459
+ this.divTree.appendChild(this.divRoot);
1460
+
1461
+ var root = this.tnRoot;
1462
+ var isReloading = ( opts.persist && this.persistence.isReloading() );
1463
+ var isLazy = false;
1464
+ var prevFlag = this.enableUpdate(false);
1465
+
1466
+ this.logDebug("Dynatree._load(): read tree structure...");
1467
+
1468
+ // Init tree structure
1469
+ if( opts.children ) {
1470
+ // Read structure from node array
1471
+ root.addChild(opts.children);
1472
+
1473
+ } else if( opts.initAjax && opts.initAjax.url ) {
1474
+ // Init tree from AJAX request
1475
+ isLazy = true;
1476
+ root.data.isLazy = true;
1477
+ this._reloadAjax();
1478
+
1479
+ } else if( opts.initId ) {
1480
+ // Init tree from another UL element
1481
+ this._createFromTag(root, $("#"+opts.initId));
1482
+
1483
+ } else {
1484
+ // Init tree from the first UL element inside the container <div>
1485
+ var $ul = this.$tree.find(">ul").hide();
1486
+ this._createFromTag(root, $ul);
1487
+ $ul.remove();
1488
+ }
1489
+
1490
+ this._checkConsistency();
1491
+ // Render html markup
1492
+ this.logDebug("Dynatree._load(): render nodes...");
1493
+ this.enableUpdate(prevFlag);
1494
+
1495
+ // bind event handlers
1496
+ this.logDebug("Dynatree._load(): bind events...");
1497
+ this.$widget.bind();
1498
+
1499
+ // --- Post-load processing
1500
+ this.logDebug("Dynatree._load(): postInit...");
1501
+ this.phase = "postInit";
1502
+
1503
+ // In persist mode, make sure that cookies are written, even if they are empty
1504
+ if( opts.persist ) {
1505
+ this.persistence.write();
1506
+ }
1507
+
1508
+ // Set focus, if possible (this will also fire an event and write a cookie)
1509
+ if( this.focusNode && this.focusNode.isVisible() ) {
1510
+ this.logDebug("Focus on init: %o", this.focusNode);
1511
+ this.focusNode.focus();
1512
+ }
1513
+
1514
+ if( !isLazy && opts.onPostInit ) {
1515
+ opts.onPostInit.call(this, isReloading, false);
1516
+ }
1517
+
1518
+ this.phase = "idle";
1519
+ },
1520
+
1521
+ _reloadAjax: function() {
1522
+ // Reload
1523
+ var opts = this.options;
1524
+ if( ! opts.initAjax || ! opts.initAjax.url )
1525
+ throw "tree.reload() requires 'initAjax' mode.";
1526
+ var pers = this.persistence;
1527
+ var ajaxOpts = $.extend({}, opts.initAjax);
1528
+ // Append cookie info to the request
1529
+ // this.logDebug("reloadAjax: key=%o, an.key:%o", pers.activeKey, this.activeNode?this.activeNode.data.key:"?");
1530
+ if( ajaxOpts.addActiveKey )
1531
+ ajaxOpts.data.activeKey = pers.activeKey;
1532
+ if( ajaxOpts.addFocusedKey )
1533
+ ajaxOpts.data.focusedKey = pers.focusedKey;
1534
+ if( ajaxOpts.addExpandedKeyList )
1535
+ ajaxOpts.data.expandedKeyList = pers.expandedKeyList.join(",");
1536
+ if( ajaxOpts.addSelectedKeyList )
1537
+ ajaxOpts.data.selectedKeyList = pers.selectedKeyList.join(",");
1538
+
1539
+ // Set up onPostInit callback to be called when Ajax returns
1540
+ if( opts.onPostInit ) {
1541
+ if( ajaxOpts.success )
1542
+ this.tree.logWarning("initAjax: success callback is ignored when onPostInit was specified.");
1543
+ if( ajaxOpts.error )
1544
+ this.tree.logWarning("initAjax: error callback is ignored when onPostInit was specified.");
1545
+ var isReloading = pers.isReloading();
1546
+ ajaxOpts["success"] = function(dtnode) { opts.onPostInit.call(dtnode.tree, isReloading, false); };
1547
+ ajaxOpts["error"] = function(dtnode) { opts.onPostInit.call(dtnode.tree, isReloading, true); };
1548
+ }
1549
+ this.logDebug("Dynatree._init(): send Ajax request...");
1550
+ this.tnRoot.appendAjax(ajaxOpts);
1551
+ },
1552
+
1553
+ toString: function() {
1554
+ return "DynaTree '" + this.options.title + "'";
1555
+ },
1556
+
1557
+ toDict: function() {
1558
+ return this.tnRoot.toDict(true);
1559
+ },
1560
+
1561
+ getPersistData: function() {
1562
+ return this.persistence.toDict();
1563
+ },
1564
+
1565
+ logDebug: function(msg) {
1566
+ if( this.options.debugLevel >= 2 ) {
1567
+ Array.prototype.unshift.apply(arguments, ["debug"]);
1568
+ _log.apply(this, arguments);
1569
+ }
1570
+ },
1571
+
1572
+ logInfo: function(msg) {
1573
+ if( this.options.debugLevel >= 1 ) {
1574
+ Array.prototype.unshift.apply(arguments, ["info"]);
1575
+ _log.apply(this, arguments);
1576
+ }
1577
+ },
1578
+
1579
+ logWarning: function(msg) {
1580
+ Array.prototype.unshift.apply(arguments, ["warn"]);
1581
+ _log.apply(this, arguments);
1582
+ },
1583
+
1584
+ isInitializing: function() {
1585
+ return ( this.phase=="init" || this.phase=="postInit" );
1586
+ },
1587
+ isReloading: function() {
1588
+ return ( this.phase=="init" || this.phase=="postInit" ) && this.options.persist && this.persistence.cookiesFound;
1589
+ },
1590
+ isUserEvent: function() {
1591
+ return ( this.phase=="userEvent" );
1592
+ },
1593
+
1594
+ redraw: function() {
1595
+ this.logDebug("dynatree.redraw()...");
1596
+ this.tnRoot.render(true, true);
1597
+ this.logDebug("dynatree.redraw() done.");
1598
+ },
1599
+
1600
+ reloadAjax: function() {
1601
+ this.logWarning("tree.reloadAjax() is deprecated since v0.5.2 (use reload() instead).");
1602
+ },
1603
+
1604
+ reload: function() {
1605
+ this._load();
1606
+ },
1607
+
1608
+ getRoot: function() {
1609
+ return this.tnRoot;
1610
+ },
1611
+
1612
+ getNodeByKey: function(key) {
1613
+ // $("#...") has problems, if the key contains '.', so we use getElementById()
1614
+ // return $("#" + this.options.idPrefix + key).attr("dtnode");
1615
+ var el = document.getElementById(this.options.idPrefix + key);
1616
+ return ( el && el.dtnode ) ? el.dtnode : null;
1617
+ },
1618
+
1619
+ getActiveNode: function() {
1620
+ return this.activeNode;
1621
+ },
1622
+
1623
+ reactivate: function(setFocus) {
1624
+ // Re-fire onQueryActivate and onActivate events.
1625
+ var node = this.activeNode;
1626
+ // this.logDebug("reactivate %o", node);
1627
+ if( node ) {
1628
+ this.activeNode = null; // Force re-activating
1629
+ node.activate();
1630
+ if( setFocus )
1631
+ node.focus();
1632
+ }
1633
+ },
1634
+
1635
+ getSelectedNodes: function(stopOnParents) {
1636
+ var nodeList = [];
1637
+ this.tnRoot.visit(function(dtnode){
1638
+ if( dtnode.bSelected ) {
1639
+ nodeList.push(dtnode);
1640
+ if( stopOnParents == true )
1641
+ return false; // stop processing this branch
1642
+ }
1643
+ });
1644
+ return nodeList;
1645
+ },
1646
+
1647
+ activateKey: function(key) {
1648
+ var dtnode = (key === null) ? null : this.getNodeByKey(key);
1649
+ if( !dtnode ) {
1650
+ if( this.activeNode )
1651
+ this.activeNode.deactivate();
1652
+ this.activeNode = null;
1653
+ return null;
1654
+ }
1655
+ dtnode.focus();
1656
+ dtnode.activate();
1657
+ return dtnode;
1658
+ },
1659
+
1660
+ selectKey: function(key, select) {
1661
+ var dtnode = this.getNodeByKey(key);
1662
+ if( !dtnode )
1663
+ return null;
1664
+ dtnode.select(select);
1665
+ return dtnode;
1666
+ },
1667
+
1668
+ enableUpdate: function(bEnable) {
1669
+ if ( this.bEnableUpdate==bEnable )
1670
+ return bEnable;
1671
+ this.bEnableUpdate = bEnable;
1672
+ if ( bEnable )
1673
+ this.redraw();
1674
+ return !bEnable; // return previous value
1675
+ },
1676
+
1677
+ visit: function(fn, data, includeRoot) {
1678
+ return this.tnRoot.visit(fn, data, includeRoot);
1679
+ },
1680
+
1681
+ _createFromTag: function(parentTreeNode, $ulParent) {
1682
+ // Convert a <UL>...</UL> list into children of the parent tree node.
1683
+ var self = this;
1684
+ /*
1685
+ TODO: better?
1686
+ this.$lis = $("li:has(a[href])", this.element);
1687
+ this.$tabs = this.$lis.map(function() { return $("a", this)[0]; });
1688
+ */
1689
+ $ulParent.find(">li").each(function() {
1690
+ var $li = $(this);
1691
+ var $liSpan = $li.find(">span:first");
1692
+ var title;
1693
+ if( $liSpan.length ) {
1694
+ // If a <li><span> tag is specified, use it literally.
1695
+ title = $liSpan.html();
1696
+ } else {
1697
+ // If only a <li> tag is specified, use the trimmed string up to the next child <ul> tag.
1698
+ title = $li.html();
1699
+ var iPos = title.search(/<ul/i);
1700
+ if( iPos>=0 )
1701
+ title = $.trim(title.substring(0, iPos));
1702
+ else
1703
+ title = $.trim(title);
1704
+ // self.logDebug("%o", title);
1705
+ }
1706
+ // Parse node options from ID, title and class attributes
1707
+ var data = {
1708
+ title: title,
1709
+ isFolder: $li.hasClass("folder"),
1710
+ isLazy: $li.hasClass("lazy"),
1711
+ expand: $li.hasClass("expanded"),
1712
+ select: $li.hasClass("selected"),
1713
+ activate: $li.hasClass("active"),
1714
+ focus: $li.hasClass("focused")
1715
+ };
1716
+ if( $li.attr("title") )
1717
+ data.tooltip = $li.attr("title");
1718
+ if( $li.attr("id") )
1719
+ data.key = $li.attr("id");
1720
+ // If a data attribute is present, evaluate as a JavaScript object
1721
+ if( $li.attr("data") ) {
1722
+ var dataAttr = $.trim($li.attr("data"));
1723
+ if( dataAttr ) {
1724
+ if( dataAttr.charAt(0) != "{" )
1725
+ dataAttr = "{" + dataAttr + "}"
1726
+ try {
1727
+ $.extend(data, eval("(" + dataAttr + ")"));
1728
+ } catch(e) {
1729
+ throw ("Error parsing node data: " + e + "\ndata:\n'" + dataAttr + "'");
1730
+ }
1731
+ }
1732
+ }
1733
+ childNode = parentTreeNode.addChild(data);
1734
+ // Recursive reading of child nodes, if LI tag contains an UL tag
1735
+ var $ul = $li.find(">ul:first");
1736
+ if( $ul.length ) {
1737
+ self._createFromTag(childNode, $ul); // must use 'self', because 'this' is the each() context
1738
+ }
1739
+ });
1740
+ },
1741
+
1742
+ _checkConsistency: function() {
1743
+ // this.logDebug("tree._checkConsistency() NOT IMPLEMENTED - %o", this);
1744
+ },
1745
+
1746
+ // --- end of class
1747
+ lastentry: undefined
1748
+ };
1749
+
1750
+ /*************************************************************************
1751
+ * widget $(..).dynatree
1752
+ */
1753
+
1754
+ $.widget("ui.dynatree", {
1755
+ init: function() {
1756
+ // ui.core 1.6 renamed init() to _init(): this stub assures backward compatibility
1757
+ _log("warn", "ui.dynatree.init() was called; you should upgrade to ui.core.js v1.6 or higher.");
1758
+ return this._init();
1759
+ },
1760
+
1761
+ _init: function() {
1762
+ if( parseFloat($.ui.version) < 1.8 ) {
1763
+ // jquery.ui.core 1.8 renamed _init() to _create(): this stub assures backward compatibility
1764
+ _log("warn", "ui.dynatree._init() was called; you should upgrade to jquery.ui.core.js v1.8 or higher.");
1765
+ return this._create();
1766
+ }
1767
+ // jquery.ui.core 1.8 still uses _init() to perform "default functionality"
1768
+ _log("debug", "ui.dynatree._init() was called; no current default functionality.");
1769
+ },
1770
+
1771
+ _create: function() {
1772
+ if( parseFloat($.ui.version) >= 1.8 ) {
1773
+ this.options = $.extend(true, $[this.namespace][this.widgetName].defaults, this.options);
1774
+ }
1775
+ logMsg("Dynatree._create(): version='%s', debugLevel=%o.", DynaTree.version, this.options.debugLevel);
1776
+ var opts = this.options;
1777
+ // The widget framework supplies this.element and this.options.
1778
+ this.options.event += ".dynatree"; // namespace event
1779
+
1780
+ var divTree = this.element.get(0);
1781
+ /* // Clear container, in case it contained some 'waiting' or 'error' text
1782
+ // for clients that don't support JS
1783
+ if( opts.children || (opts.initAjax && opts.initAjax.url) || opts.initId )
1784
+ $(divTree).empty();
1785
+ */
1786
+ // Create the DynaTree object
1787
+ this.tree = new DynaTree(this);
1788
+ this.tree._load();
1789
+ this.tree.logDebug("Dynatree._create(): done.");
1790
+ },
1791
+
1792
+ bind: function() {
1793
+ var $this = this.element;
1794
+ var o = this.options;
1795
+
1796
+ // Prevent duplicate binding
1797
+ this.unbind();
1798
+
1799
+ // Tool function to get dtnode from the event target:
1800
+ function __getNodeFromElement(el) {
1801
+ var iMax = 5;
1802
+ while( el && iMax-- ) {
1803
+ if( el.dtnode ) return el.dtnode;
1804
+ el = el.parentNode;
1805
+ };
1806
+ return null;
1807
+ }
1808
+
1809
+ var eventNames = "click.dynatree dblclick.dynatree";
1810
+ if( o.keyboard ) // Note: leading ' '!
1811
+ eventNames += " keypress.dynatree keydown.dynatree";
1812
+ $this.bind(eventNames, function(event){
1813
+ var dtnode = __getNodeFromElement(event.target);
1814
+ if( !dtnode )
1815
+ return true; // Allow bubbling of other events
1816
+ var prevPhase = dtnode.tree.phase;
1817
+ dtnode.tree.phase = "userEvent";
1818
+ try {
1819
+ dtnode.tree.logDebug("bind(%o): dtnode: %o", event, dtnode);
1820
+
1821
+ switch(event.type) {
1822
+ case "click":
1823
+ return ( o.onClick && o.onClick(dtnode, event)===false ) ? false : dtnode.onClick(event);
1824
+ case "dblclick":
1825
+ return ( o.onDblClick && o.onDblClick(dtnode, event)===false ) ? false : dtnode.onDblClick(event);
1826
+ case "keydown":
1827
+ return ( o.onKeydown && o.onKeydown(dtnode, event)===false ) ? false : dtnode.onKeydown(event);
1828
+ case "keypress":
1829
+ return ( o.onKeypress && o.onKeypress(dtnode, event)===false ) ? false : dtnode.onKeypress(event);
1830
+ };
1831
+ } catch(e) {
1832
+ var _ = null; // issue 117
1833
+ // dtnode.tree.logError("bind(%o): dtnode: %o", event, dtnode);
1834
+ } finally {
1835
+ dtnode.tree.phase = prevPhase;
1836
+ }
1837
+ });
1838
+
1839
+ // focus/blur don't bubble, i.e. are not delegated to parent <div> tags,
1840
+ // so we use the addEventListener capturing phase.
1841
+ // See http://www.howtocreate.co.uk/tutorials/javascript/domevents
1842
+ function __focusHandler(event) {
1843
+ // Handles blur and focus.
1844
+ // Fix event for IE:
1845
+ event = arguments[0] = $.event.fix( event || window.event );
1846
+ var dtnode = __getNodeFromElement(event.target);
1847
+ return dtnode ? dtnode.onFocus(event) : false;
1848
+ }
1849
+ var div = this.tree.divTree;
1850
+ if( div.addEventListener ) {
1851
+ div.addEventListener("focus", __focusHandler, true);
1852
+ div.addEventListener("blur", __focusHandler, true);
1853
+ } else {
1854
+ div.onfocusin = div.onfocusout = __focusHandler;
1855
+ }
1856
+ // EVENTS
1857
+ // disable click if event is configured to something else
1858
+ // if (!(/^click/).test(o.event))
1859
+ // this.$tabs.bind("click.tabs", function() { return false; });
1860
+
1861
+ },
1862
+
1863
+ unbind: function() {
1864
+ this.element.unbind(".dynatree");
1865
+ },
1866
+
1867
+ /* TODO: we could handle option changes during runtime here (maybe to re-render, ...)
1868
+ setData: function(key, value) {
1869
+ this.tree.logDebug("dynatree.setData('" + key + "', '" + value + "')");
1870
+ },
1871
+ */
1872
+ enable: function() {
1873
+ this.bind();
1874
+ // Call default disable(): remove -disabled from css:
1875
+ $.widget.prototype.enable.apply(this, arguments);
1876
+ },
1877
+
1878
+ disable: function() {
1879
+ this.unbind();
1880
+ // Call default disable(): add -disabled to css:
1881
+ $.widget.prototype.disable.apply(this, arguments);
1882
+ },
1883
+
1884
+ // --- getter methods (i.e. NOT returning a reference to $)
1885
+ getTree: function() {
1886
+ return this.tree;
1887
+ },
1888
+
1889
+ getRoot: function() {
1890
+ return this.tree.getRoot();
1891
+ },
1892
+
1893
+ getActiveNode: function() {
1894
+ return this.tree.getActiveNode();
1895
+ },
1896
+
1897
+ getSelectedNodes: function() {
1898
+ return this.tree.getSelectedNodes();
1899
+ },
1900
+
1901
+ // ------------------------------------------------------------------------
1902
+ lastentry: undefined
1903
+ });
1904
+
1905
+
1906
+ // The following methods return a value (thus breaking the jQuery call chain):
1907
+
1908
+ $.ui.dynatree.getter = "getTree getRoot getActiveNode getSelectedNodes";
1909
+
1910
+
1911
+ // Plugin default options:
1912
+
1913
+ $.ui.dynatree.defaults = {
1914
+ title: "Dynatree root", // Name of the root node.
1915
+ rootVisible: false, // Set to true, to make the root node visible.
1916
+ minExpandLevel: 1, // 1: root node is not collapsible
1917
+ imagePath: null, // Path to a folder containing icons. Defaults to 'skin/' subdirectory.
1918
+ children: null, // Init tree structure from this object array.
1919
+ initId: null, // Init tree structure from a <ul> element with this ID.
1920
+ initAjax: null, // Ajax options used to initialize the tree strucuture.
1921
+ autoFocus: true, // Set focus to first child, when expanding or lazy-loading.
1922
+ keyboard: true, // Support keyboard navigation.
1923
+ persist: false, // Persist expand-status to a cookie
1924
+ autoCollapse: false, // Automatically collapse all siblings, when a node is expanded.
1925
+ clickFolderMode: 3, // 1:activate, 2:expand, 3:activate and expand
1926
+ activeVisible: true, // Make sure, active nodes are visible (expanded).
1927
+ checkbox: false, // Show checkboxes.
1928
+ selectMode: 2, // 1:single, 2:multi, 3:multi-hier
1929
+ fx: null, // Animations, e.g. null or { height: "toggle", duration: 200 }
1930
+
1931
+ // Low level event handlers: onEvent(dtnode, event): return false, to stop default processing
1932
+ onClick: null, // null: generate focus, expand, activate, select events.
1933
+ onDblClick: null, // (No default actions.)
1934
+ onKeydown: null, // null: generate keyboard navigation (focus, expand, activate).
1935
+ onKeypress: null, // (No default actions.)
1936
+ onFocus: null, // null: set focus to node.
1937
+ onBlur: null, // null: remove focus from node.
1938
+
1939
+ // Pre-event handlers onQueryEvent(flag, dtnode): return false, to stop processing
1940
+ onQueryActivate: null, // Callback(flag, dtnode) before a node is (de)activated.
1941
+ onQuerySelect: null, // Callback(flag, dtnode) before a node is (de)selected.
1942
+ onQueryExpand: null, // Callback(flag, dtnode) before a node is expanded/collpsed.
1943
+
1944
+ // High level event handlers
1945
+ onPostInit: null, // Callback(isReloading, isError) when tree was (re)loaded.
1946
+ onActivate: null, // Callback(dtnode) when a node is activated.
1947
+ onDeactivate: null, // Callback(dtnode) when a node is deactivated.
1948
+ onSelect: null, // Callback(flag, dtnode) when a node is (de)selected.
1949
+ onExpand: null, // Callback(dtnode) when a node is expanded/collapsed.
1950
+ onLazyRead: null, // Callback(dtnode) when a lazy node is expanded for the first time.
1951
+
1952
+ ajaxDefaults: { // Used by initAjax option
1953
+ cache: false, // false: Append random '_' argument to the request url to prevent caching.
1954
+ dataType: "json" // Expect json format and pass json object to callbacks.
1955
+ },
1956
+ strings: {
1957
+ loading: "Loading&#8230;",
1958
+ loadError: "Load error!"
1959
+ },
1960
+ idPrefix: "ui-dynatree-id-", // Used to generate node id's like <span id="ui-dynatree-id-<key>">.
1961
+ // cookieId: "ui-dynatree-cookie", // Choose a more unique name, to allow multiple trees.
1962
+ cookieId: "dynatree", // Choose a more unique name, to allow multiple trees.
1963
+ cookie: {
1964
+ expires: null //7, // Days or Date; null: session cookie
1965
+ // path: "/", // Defaults to current page
1966
+ // domain: "jquery.com",
1967
+ // secure: true
1968
+ },
1969
+ // Class names used, when rendering the HTML markup.
1970
+ // Note: if only single entries are passed for options.classNames, all other
1971
+ // values are still set to default.
1972
+ classNames: {
1973
+ container: "ui-dynatree-container",
1974
+ folder: "ui-dynatree-folder",
1975
+ document: "ui-dynatree-document",
1976
+
1977
+ empty: "ui-dynatree-empty",
1978
+ vline: "ui-dynatree-vline",
1979
+ expander: "ui-dynatree-expander",
1980
+ connector: "ui-dynatree-connector",
1981
+ checkbox: "ui-dynatree-checkbox",
1982
+ nodeIcon: "ui-dynatree-icon",
1983
+ title: "ui-dynatree-title",
1984
+
1985
+ nodeError: "ui-dynatree-statusnode-error",
1986
+ nodeWait: "ui-dynatree-statusnode-wait",
1987
+ hidden: "ui-dynatree-hidden",
1988
+ combinedExpanderPrefix: "ui-dynatree-exp-",
1989
+ combinedIconPrefix: "ui-dynatree-ico-",
1990
+ // disabled: "ui-dynatree-disabled",
1991
+ hasChildren: "ui-dynatree-has-children",
1992
+ active: "ui-dynatree-active",
1993
+ selected: "ui-dynatree-selected",
1994
+ expanded: "ui-dynatree-expanded",
1995
+ lazy: "ui-dynatree-lazy",
1996
+ focused: "ui-dynatree-focused",
1997
+ partsel: "ui-dynatree-partsel",
1998
+ lastsib: "ui-dynatree-lastsib"
1999
+ },
2000
+ debugLevel: 1,
2001
+
2002
+ // ------------------------------------------------------------------------
2003
+ lastentry: undefined
2004
+ };
2005
+
2006
+ /**
2007
+ * Reserved data attributes for a tree node.
2008
+ */
2009
+ $.ui.dynatree.nodedatadefaults = {
2010
+ title: null, // (required) Displayed name of the node (html is allowed here)
2011
+ key: null, // May be used with activate(), select(), find(), ...
2012
+ isFolder: false, // Use a folder icon. Also the node is expandable but not selectable.
2013
+ isLazy: false, // Call onLazyRead(), when the node is expanded for the first time to allow for delayed creation of children.
2014
+ tooltip: null, // Show this popup text.
2015
+ icon: null, // Use a custom image (filename relative to tree.options.imagePath). 'null' for default icon, 'false' for no icon.
2016
+ addClass: null, // Class name added to the node's span tag.
2017
+ activate: false, // Initial active status.
2018
+ focus: false, // Initial focused status.
2019
+ expand: false, // Initial expanded status.
2020
+ select: false, // Initial selected status.
2021
+ hideCheckbox: false, // Suppress checkbox display for this node.
2022
+ unselectable: false, // Prevent selection.
2023
+ // disabled: false,
2024
+ // The following attributes are only valid if passed to some functions:
2025
+ children: null, // Array of child nodes.
2026
+ // NOTE: we can also add custom attributes here.
2027
+ // This may then also be used in the onActivate(), onSelect() or onLazyTree() callbacks.
2028
+ // ------------------------------------------------------------------------
2029
+ lastentry: undefined
2030
+ };
2031
+
2032
+ // ---------------------------------------------------------------------------
2033
+ })(jQuery);
2034
+
2035
+ // Eclipse syntax parser breaks on this expression, so we put it at the bottom.
2036
+ var _rexDtLibName = /.*dynatree[^/]*\.js$/i;